Skip to content

docs(wave-plan): schedule channel-earliness audit (Track 2.3, parallel-safe) - #179

Merged
artyhoo merged 1 commit into
stagingfrom
feat/channel-earliness-audit-kickoff
May 22, 2026
Merged

docs(wave-plan): schedule channel-earliness audit (Track 2.3, parallel-safe)#179
artyhoo merged 1 commit into
stagingfrom
feat/channel-earliness-audit-kickoff

Conversation

@artyhoo

@artyhoo artyhoo commented May 22, 2026

Copy link
Copy Markdown
Owner

What

Two deliverables for the channel-earliness audit R-phase:

  1. Kickoff authored.claude/orchestrator-prompts/channel-earliness-audit/kickoff.md (gitignored, lives in the main checkout; not in this diff by design). A full Mode-A Opus R-phase prompt that sweeps every existing check against the «earliest reachable channel» invariant.
  2. Scheduled — this PR's only committed change: adds Track 2.3 under wave-sequencing-plan.md + a clause in §0 «What actually remains».

Why

The time-axis invariant («every rule fails at the EARLIEST reachable channel») has only ever been applied forward-going — each new check placed at some channel as it was built. rule-enforcement-channel-selection.md §6 explicitly deferred the retroactive sweep. This audit is that sweep.

Triggering incident (2026-05-22): building N8 C4/C5, the agent defaulted them to pre-push and only moved C4 to edit-time after the maintainer asked «can't we catch earlier?» — i.e. it inherited a channel assignment instead of re-deriving the floor. Systemic; this audit is the countermeasure.

The load-bearing principle the kickoff applies per check

The channel floor is set by WHERE THE DATA LIVES — single file → edit-time (move earlier / add companion); commit message → pre-push (floor); cross-file invariant → pre-push/CI (keep); diff range → pre-push or per-file edit-time. Goal is usually ADD an edit-time companion (dual-channel), not move-and-delete — doc-authority (principle 09 + check-doc-authority.sh) is the model.

Timing

Marked parallel-safe (own research-patch file, $0 read-only, no shared-file writes) and timed BEFORE any future check-building wave (incl. N8 A-phase C1–C5) — it sets the channel default so new checks don't land later than their data permits.

Notes / verified findings baked into the kickoff

  • Two hooks are dormant: check-kickoff-traps.sh and inject-matching-rule.sh exist in .claude/hooks/ but are NOT wired in settings.json → the first-pass «already edit-time» claim is false for them. The kickoff turns this into domain-trap T-CE-A (verify wiring, don't pattern-match on file type — T16).
  • ai-laziness-traps §3 satisfied: cites §2, enumerates T3 / T10 / T16 + domain traps T-CE-A/B/C + mandatory T15.
  • no-paid-llm-in-ci honoured: every proposed mechanism must be deterministic.
  • Output research-patch must carry <!-- scope:channel-earliness-audit --> (principle 10) + §1.7 section.

Scope

Doc-only scheduling edit + a gitignored kickoff. No checks moved here — each move ships as its own follow-up PR after the audit verdicts land. No capability, no dependency → Prior-art: skipped.

DECISION-NEEDED (surfaced, not decided — reviewer-discipline §2)

None blocking. The audit itself will surface per-candidate decisions (e.g. wiring the two dormant hooks — settings.json is agent-self-protected, maintainer-landed).

…l-safe)

Adds Track 2.3 — the retroactive channel-earliness sweep that
rule-enforcement-channel-selection.md §6 explicitly deferred
("forward-going, not retroactive"). $0 read-only research, own
research-patch, no shared-file writes → parallel-safe. Timed BEFORE
any future check-building wave (incl. N8 A-phase) so it sets the
channel default that prevents new checks landing later than their
data permits. Kickoff authored at
.claude/orchestrator-prompts/channel-earliness-audit/kickoff.md (gitignored).

Prior-art: skipped — doc-only scheduling edit, no new capability or dependency.
@artyhoo
artyhoo merged commit 265a6d4 into staging May 22, 2026
22 checks passed
artyhoo added a commit that referenced this pull request May 25, 2026
… detection) (#220)

Run `bash .claude/skills/meta-orchestrator/helpers/plan-currency-check.sh`
(L2 Stage 3 detection shipped in #217) → 88 UNTRACKED-N entries surfaced
between the 2026-05-22 reconciliation and origin/staging tip (#217). Map
each to an existing §0 / Track row by adding the PR number to its evidence
cell, or to a new §0 row for two umbrellas that landed in full since the
prior snapshot. Re-run helper → 0 UNTRACKED remaining.

Key changes:

- Snapshot date 2026-05-22 → 2026-05-25 (header + §0).
- N8 row: A-phase 🔲 → 🟡 — C1 SSOT-existence (#170), C2 kickoff
  T-enumeration floor (#174), C3 principle 13 §1.7 substance (#178),
  C4 delivery-channel marker (#177), activation #180. C5 + cost-levers
  remain gated on §5.3 utilisation trigger.
- Track M.1 / M.4 → DONE: M.1 codified T20 via #212 (with NB note —
  recommendation-laziness took the T20 slot, mutation-equivalence
  T-bump 20→21 still pending); M.4 6 paired-negative bash-hook tests
  shipped #195/#196/#197/#198/#199/#200.
- Two new §0 rows: Meta-orchestrator skill (Track P) — BUILD #186 +
  audit rounds #192/#193/#194/#201/#202 + UX refactor #203/#204/#205
  + planner-completeness #213/#214/#217 + §1.7 PR-body mandate #216;
  Recommendation-laziness discipline — R-phase #206/#207, benchmark
  #210, I-phase Sub-waves A/C/D #211/#212/#215.
- N7 row: + dogfood research-patch #135 / §4 demotion #166 / live-trial
  verified #171. N4b row: + design #136 / record #118.
- Infra paragraph: PR refs for I.1 follow-ups (#121/#123/#124/#125/
  #128/#130/#131/#143/#145/#146/#147/#148/#149/#172/#187), I.2
  (#139/#142/#154/#175), I.3 DN-4 (#126/#132/#133/#138/#140/#152/
  #159/#161/#162/#167).
- Track 2.3 (channel-earliness audit) → DONE 2026-05-23 (#181); removed
  from "What actually remains".
- Footer subsection: standalone work (#191 satellite-arch / #189
  guard-liveness / #173 storm-readiness / #176 §10 port / #182 cleanup),
  Wave 10 follow-ups (#110/#112/#113), plan-revision history (#108/
  #109/#153/#155/#157/#160/#164/#165/#168/#179/#185).

Verification:
- `bash .claude/skills/meta-orchestrator/helpers/plan-currency-check.sh
  | grep -c '^UNTRACKED'` → 0 (down from 88).
- `npx markdownlint-cli docs/meta-factory/wave-sequencing-plan.md`
  → no violations.
- `npx vitest run packages/core/skills/plan-currency-check.test.ts`
  → 14/14 passed.

Prior-art: skipped — chore, doc reconciliation only, no new capability
or rule introduced.
artyhoo added a commit that referenced this pull request Jun 27, 2026
…T + description-quality defer (#774)

* docs(readme): drop unimplemented "full sweep nightly" mutation claim (R2)

The README promised "incremental on PR diff, full sweep nightly" for Stryker
mutation testing. No shipped CI template implements a nightly full-sweep job
(verified: git ls-files | grep templates | xargs grep -lE 'schedule:|cron' →
empty). Path B chosen: remove the overclaim, keep the accurate incremental-on-PR
promise. Closes R2 PARTIAL from research-application-audit 2026-06-27. Also
closes the U8 honest-readme overclaim for this finding (do not duplicate in U8).

Prior-art: skipped — doc edit, no new capability

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* docs(ssot): record SkillRouter REFERENCE verdict in prior-art register (R4a)

SkillRouter (arxiv 2603.22455) was evaluated in research-patches/2026-05-25-
planner-completeness-prior-art.md (L5 §1) with Verdict REFERENCE, but never
reached the SSOT register. This violates the «process cited → SSOT reached»
invariant. Append SSOT entry #179: Verdict REFERENCE (neural retrieve-and-rerank
for 80K+ registry — T16 problem-class mismatch vs our ~15-skill lookup); Trigger
«CC skill registry grows to 50+ skills → revisit ADAPT». Closes R4a gap.

Prior-art: skipped — SSOT append, no new capability

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* docs(rules): defer SKILL.md description-quality discipline as Class C (R4b)

SkillRouter evidence (SSOT #179: «hiding skill body → 31–44pp routing accuracy
drop») establishes that description quality is load-bearing, but no discipline
existed. Codify as Class C rule (.claude/rules/skill-description-quality.md):
deferred because no misrouting incidents are recorded; semantic quality can't be
gated mechanically without #discipline-theatre; promotion criterion is ≥3
documented misrouting incidents in 6 months → Class A at lowest-free slot (30).
Register in packages/core/principles/09-doc-authority-hierarchy.ts REQUIRED_
HEADER_DOCS; update shape sentinel to 82 to reflect the addition. Closes R4b gap.

Prior-art: skipped — Class C rule + principle-09 registration, no new capability

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

§1.7: forward-check — no-paid-llm-in-ci (skill-description-quality.md:1 defers to Class C, zero CI cost) + doc-authority-hierarchy (packages/core/principles/09-doc-authority-hierarchy.ts:20 registers the new rule); backward-check — swept the SKILL.md description surface, added SkillRouter REFERENCE to docs/meta-factory/prior-art-evaluations.md:1, removed the README.md:1 nightly overclaim, no existing rule superseded.

* docs(agents): register skill-description-quality.md in the AGENTS.md rule index

Principle 21 rules-autoload probe greps each .claude/rules/*.md basename in
AGENTS.md; the new R4b rule was absent (DEGRADED: missing 1/17). Add its
index row so non-CC harnesses (which do not auto-load .claude/rules/) read it.

Prior-art: skipped — rule-index sync after new rule, no new capability

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
artyhoo added a commit that referenced this pull request Jun 28, 2026
…s (§13.5 I-2 Layer 1) (#793)

Layer-1 DETECTION ONLY: produce a {dir->stack} map for a multi-stack monorepo so the
secondary stack is never silently dropped — the #780 nuance at the detection layer
(timeliner: apps/api -> ts-server + apps/mobile -> react-native). Layer-2 emission
(on-disk marker / per-workspace applies-to / ESLint files:) is OUT OF SCOPE here.

setup.d/lib.sh:
- Parameterize _detect_stack_from_pkg to accept an optional target dir (default
  $PROJECT_ROOT). No-arg form is unchanged — the I-1 install stack-pick and
  15-companions-stack.sh both call it no-arg (back-compat, proven by the new test).
- Add two node-free helpers (no yq/pnpm/turbo dep; install runs before consumer deps):
  * _workspace_pkg_dirs [root] — enumerate workspace package dirs (children WITH a
    package.json) under the 5-dir convention (apps packages services libs modules — the
    SAME set as the arch:check resolver at setup.d/70-deps.sh:37, so the two never drift).
  * _detect_stacks_per_workspace [root] — walk each x _detect_stack_from_pkg -> echo
    `dir<TAB>stack` per workspace. A per-workspace `unknown` is a re-checkable marker,
    KEPT in the map (never dropped, never exit 1 — the §13.5 fork-2 default).

tests/install-sh/workspace-stack-detect.test.sh (new, CI-wired): fixture monorepo
(apps/api->ts-server, apps/mobile->react-native, packages/config->unknown, apps/docs
without package.json) proves BOTH stacks land in the map (T-MSM-A); paired-negatives
prove root-only detect drops the secondary stack, no-package.json dirs aren't
enumerated, `unknown` is kept not silently concretized, a flat repo yields an empty
map, and the _detect_stack_from_pkg arg vs $PROJECT_ROOT parameterization.

tests/install-sh/layer-units.test.sh: register the 2 new helpers in the SSOT_FUNS
copy-paste guard (T15 — new lib helpers get the same layer-isolation protection).

.github/workflows/audit-self.yml: wire the new test into CI (deterministic bash, no LLM).

SSOT: appended #180 (Nx per-project inference, REFERENCE) + #181 (pnpm/Turborepo
workspace discovery, REFERENCE). Research draft IDs #111-#113 were stale — the live SSOT
highest is #179 (verified), so the real next IDs are #180/#181. #111 (ESLint files:) is
deferred to the Layer-2 commit.

Prior-art: prior-art-evaluations.md#180 (Nx per-project stack inference, REFERENCE — thin per-dir walk REUSES our node-free _detect_stack_from_pkg; Nx runtime ADOPT rejected per build-first-reuse-default.md §2).
Prior-art: prior-art-evaluations.md#181 (pnpm/Turborepo workspace discovery, REFERENCE — node-free reader of the 5-dir convention; no install-time pnpm/turbo dependency).
artyhoo added a commit that referenced this pull request Jul 31, 2026
…mbrella + S-A kickoffs (#1189)

* docs(handoff): /arch v2 + context-pipeline session handoff — decisions, in-flight aif tasks, continuation protocol

Prior-art: skipped — session handoff document only, no new capability; decisions it records cite their own SSOT rows (#231, #207, #179, #64).

* docs(spec): /arch v2 + context-pipeline system design — layer model, pipeline arc, ADR-1..8

Step 5 of the 2026-07-31 handoff §4 protocol. Fable design authored on the
Opus research distillate (spot-checked, freshness-barred) and the Opus cold
critique (GO-WITH-PATCHES). All three critique blockers absorbed by
re-derivation: #231 over-read retracted (ADR-5), 5/5-K1 incident count
corrected to 2/5 and the primary/background split dropped (ADR-6), the
calibration falsifier given an oracle via shadow-A/B + pre-declared
threshold (ADR-5). M1-M7 absorbed as design constraints (population table,
bounded drill-down + distillate K-pass, K6 candidate/adjudicate split,
gate-channel re-route to pre-push/CI, operationalized bet falsifier,
L1/L2 boundary re-drawn, option spaces spanned).

Prior-art: skipped — design spec only, no new capability shipped

* docs(arch-v2): umbrella kickoff S-A..S-F + S-A stage-scoped dispatch input

Execution plan for the /arch v2 + context-pipeline track, derived from the
2026-07-31 design spec (ADR-1..8) by the Opus plan-writing seat.

Umbrella kickoff: stage table S-A..S-F with per-stage scope, dependencies,
tier classification (justified against CLAUDE.md's fixed criteria), acceptance
and implemented ADRs; dispatch protocol (4-arm in-flight probe, Phase -1 cold
review, bridge-profile marker rule with the fidelity-verdict precondition
quoted verbatim and re-verified at dispatch); calibration-ledger bootstrap
(ADR-5/6/8) with the ADR-8 token instrument named; cross-umbrella dependency
on token-audit S1 (S-E only, two gates: merged AND content-read).

The bottom seat + shadow-A/B station is marked active from S-B merge onward —
S-A predates the contract implementation and is covered only by Phase -1 plus
its own acceptance commands. Stated, not papered over.

Plan-writer objections (§4, per «who must write the plan cannot rubber-stamp
the design»): O-1 three wrapper drifts, not two, and one mis-described —
upstream ships brainstorming/spec-document-reviewer-prompt.md in 5.1.0/6.1.1/
6.2.0, night-mode:15's SDD roster does not match upstream, night-mode:29 cites
stale upstream line numbers; O-2 the skill-exists-by-name smoke catches none of
them and skips silently off-host; O-3 ADR-8's token metric had no named
instrument (aif task tokenTotal/costUsd, verified live); O-4 the ledger
principle test is vacuous before 5 rows; O-5 S-D's tier is a function of S-C's
verdict; O-6 the spec's marker condition drops CLAUDE.md's «produced by /arch».

S-A kickoff is stage-scoped and self-contained (handoff decision 11): W1-W6
with concrete file targets and a verification command each, host-verify
contract, descopes, §1.7 obligation in enumeration format, T-enumeration plus
three domain traps.

Prior-art: skipped — kickoff/plan docs only, no new capability

* docs(arch-v2): preserve track evidence artifacts — distillate, corrected idea, cold critique

The design spec cites these three as its evidence chain (distillate →
corrected idea → GO-WITH-PATCHES critique); they lived only in the
session scratchpad under /private/tmp, which does not survive a reboot.
Committed verbatim as session artifacts of the 2026-07-31 protocol run.

Prior-art: skipped — evidence-record docs only, no new capability

* docs(spec): point evidence-chain citations at the committed artifact files

Prior-art: skipped — link fix in a design doc, no new capability

* docs(spec): absorb token-audit S1 acceptance — fresh N2 numbers, ADR-3 falsifier fired

S1 (task c781e8a9, accepted 2026-07-31) measured the repo-owned always-on
set at 29-39% of the observed ~100k session-start total, firing ADR-3's
pre-registered falsifier: the budget gate's asserted quantity is re-scoped
to the repo-owned share (explicitly labelled), the harness remainder
routes to settings-recommendations, and the InstructionsLoaded
verification task doubles as the measurement-extension probe. N2 updated
to the fresher script-reproducible per-environment numbers (140,216 B
host vs 118,374 B container), replacing the older channel-level A7 pair.

Prior-art: skipped — design-doc correction on fresh measurement, no new capability

---------

Co-authored-by: Test <test@example.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant