Skip to content

refactor(audit-ai-docs-test): scope fastExecSyncStub to describe + drop stale L160-171 label - #235

Merged
artyhoo merged 1 commit into
stagingfrom
refactor/audit-test-stub-scope
May 25, 2026
Merged

refactor(audit-ai-docs-test): scope fastExecSyncStub to describe + drop stale L160-171 label#235
artyhoo merged 1 commit into
stagingfrom
refactor/audit-test-stub-scope

Conversation

@artyhoo

@artyhoo artyhoo commented May 25, 2026

Copy link
Copy Markdown
Owner

Summary

Two cosmetic follow-ups to PR #233, both flagged by the cold-reviewer as MINOR (zero correctness risk). Single-file refactor, no behavioural change.

Changes (1 file)

packages/core/audit-self/audit-ai-docs.test.ts — 24+/21- (~3 line net delta)

  1. Scope fastExecSyncStub into its consumer describe block. Was module-level after PR refactor(audit-ai-docs): DI execSync for warm-path probeR4 tests + testTimeout 120s ceiling #233 (used in 2 tests inside probeR4() — execSync call content); moved to the top of that describe block. Removes module-level pollution surface if the test file extends later.

  2. Drop stale L160-171 label. The line-number reference in the comment header + describe title was already invalidated by PR refactor(audit-ai-docs): DI execSync for warm-path probeR4 tests + testTimeout 120s ceiling #233's own insertions (the exec( call sites moved to lines 170 + 180). Replaced with stable wording: // ── execSync call content in probeR4() — exec-injection seam ── and describe('probeR4() — execSync call content', ...).

Verification

  • npx vitest run packages/core/audit-self/audit-ai-docs.test.ts --reporter=verbose191/191 pass
  • Stubbed warm-path tests: still 1-2ms warm (no regression)
  • Contract test (tsconfig.json exists but ts-morph missing): still ~1.3s warm (1333ms measured)
  • grep -n 'fastExecSyncStub' packages/core/audit-self/audit-ai-docs.test.ts → 5 hits, all inside the probeR4() — execSync call content describe block (no module-level references)
  • grep -n 'L160-171' packages/core/audit-self/audit-ai-docs.test.ts → 0 hits
  • Pre-push hook PASS (115/115 principle tests, 191/191 audit-ai-docs, skill-drift clean)

Scope-out

  • L167 label on the sibling describe (probeR4() — hasTsconfig/hasTsMorph early-return condition (L167)) is intentionally NOT touched. User instruction targeted L160-171 only; atomic-umbrella discipline per CLAUDE.md «PR strategy». Can address in a follow-up if desired.
  • No discipline-rule surface touched — no .claude/rules/, no packages/core/principles/, no CLAUDE.md, no template, no agent. §1.7 Skipped: pure cosmetic refactor of a test file's helper-scoping + label wording; no forward/backward-check surface exists.
  • Not a capability commit — no new dependency, no new ≥50/≥80 LOC file. No Prior-art: trailer required.

…op stale L160-171 label

Two cosmetic follow-ups to PR #233 (cold-reviewer MINOR #1 + #2):

1. Move `fastExecSyncStub` from module-level into the `probeR4() — execSync
   call content` describe block (its sole consumer). Module-level placement
   risked leaking into unrelated tests if the file extends; scoped placement
   removes that pollution surface.

2. Replace the stale `L160-171` reference in the comment header + describe
   title with stable wording (`probeR4() — execSync call content`). Line-
   number labels rot whenever lines are inserted above them — this PR's own
   move + the DN-1 Path C insertion already invalidated them. The remaining
   `L167` label on a sibling describe is left untouched (out of this PR's
   scope — user instruction targeted L160-171 only).

No behavioural change: 191/191 tests pass, stubbed warm-path tests still
1-2ms, contract test still ~1.3s warm. Net diff: 24+/21- (~3 line delta).
@artyhoo
artyhoo merged commit 78d364d into staging May 25, 2026
22 checks passed
@artyhoo
artyhoo deleted the refactor/audit-test-stub-scope branch May 25, 2026 20:25
artyhoo added a commit that referenced this pull request Aug 6, 2026
#1211)

BFR two-axis verdict on the three `anthropics/knowledge-work-plugins`
the operator named as uncovered by 53c2ec + #1210: engineering, design,
product-management. Complements (does not duplicate) both prior verdicts
and corrects #1210 §A0's "no engineering/design plugin exists" — true only
for `claude-plugins-official`, false for `knowledge-work-plugins`.

Verdict: ADOPT-operator + KEEP NARROW-shipped for all three, with a
load-bearing Cowork-vs-CC caveat. README verbatim "Built for Claude
Cowork, also compatible with Claude Code" + explicit `claude plugin
install <p>@knowledge-work-plugins` block → trio IS CC-CLI-installable
(kickoff's "Cowork-only" over-narrowed it), but optimal seat = Cowork.

Per-capability T16 (actual counts corrected: engineering 10 skills/0 cmds,
design 7/0, PM 8+1 = 26 capabilities, not the kickoff's "~38"): 0/26
direct problem-class matches; 1/26 real mechanism-overlap
(product-brainstorming ↔ superpowers:brainstorming) that is
domain-divergent (PM product-problem vs technical-capability design) —
additive, not a displacement candidate; 1/26 name-adjacent-format-divergent
(write-spec PRD prose vs machine-parseable kickoff). Negative-existence
(6-item §1): zero hooks.json/.husky/scripts/CI in the trio; enforcement
is .mcp.json connectors + skill prose, structurally distinct from our
20 CC hooks and from security-guidance's decision:"block".

SSOT row #235 chosen (not #234) to leave #234 for in-flight PR #1210.
Principle tests 08/10/11 GREEN (28/28).

Prior-art: prior-art-evaluations.md#235

Co-authored-by: Test <test@example.com>
artyhoo added a commit that referenced this pull request Aug 6, 2026
… rung (getff-any-stack-trace) (#1233)

* docs(prior-art): SSOT #237 — pre-commit runner-role verdict (getff-any-stack-trace S2b Task 0)

RUNNER-ROLE verdict on pre-commit (pre-commit.com) for delivering the python lane's
local git-hook rung. Resolves the T16 conflation that created this stage: #216 rejected
pre-commit as a DELIVERY scaffolder (sample-config -> stdout, no merge) — the conditional
at python-delivery-v0/kickoff.md:97-98 consumed that REJECT as a verdict on the
ENFORCEMENT CHANNEL (the runner role), which #216's trigger-to-revisit never covered.

Verdict: BUILD bare core.hooksPath-style delivery as default + integration arm for
existing-hooks consumers. Decided on the binding priority-order criteria (kickoff §2
item 1):
- (a) zero installed prerequisites — pre-commit FAILS: DeepWiki-verified (3 phrasings x
  2 sources) that pre-commit requires Python 3.9+ AND the framework at runtime.
- (b) augment-first, never clobber — pre-commit FAILS: GitHub issue #1198 confirms
  «Cowardly refusing to install hooks with core.hooksPath set».
- (c) Node-free — both pass.

Pre-push chosen over pre-commit: mirrors S2b CI template's identical checks at push
time; fires at the moment a violation would leave the machine; uniformity with npm
lane (setup.d/50-hooks.sh:12).

BFR §3 mechanism: DeepWiki x3 phrasings on pre-commit/pre-commit + WebSearch x3
phrasings on the problem-domain term. Evidence cites #216 explicitly (role separation).

ID note: the worker authored this row as #235 against a base where #235 was free.
Between dispatch (2026-08-01) and egress (2026-08-07), #235 (knowledge-work-plugins)
and #236 (anthropic-plugins-utility) landed on staging. Renumbered to #237 at rebase;
the register's ID-uniqueness invariant (principle 08) is what the collision would have
tripped.

Prior-art: prior-art-evaluations.md#237 (NEW — runner-role verdict; #216 REJECT-as-delivery explicitly out of scope).

* feat(python-lane): S2b — close the python lane's empty local git-hook rung

Delivers a pre-push hook on the python lane (the missing earliest-reachable-channel
rung between agent-session and CI). Verdict = BUILD bare core.hooksPath-style delivery
as default + integration arm for existing-hooks consumers (SSOT #237; pre-commit REJECTED
on the runner-role criteria: Python required at runtime + Cowardly-refusing clobber).

Implementation:
- packages/core/templates/python/hooks/pre-push.sh — hook body mirroring the CI template
  (ast-grep scan + ruff check . --config .getff/ruff-bans.toml); fail OPEN with loud
  warning + pinned install hint when a linter is absent (T-S2B-A counter); runtime
  opt-out via GETFF_SKIP_HOOKS=1.
- packages/core/templates/python/hooks/getff.pre-commit-config.yaml.fragment — local-hook
  entry for the case-2 integration arm (consumer already uses pre-commit).
- setup.d/45-python.sh — _py_deliver_local_hook_rung + 3 _py_integrate_* helpers, called
  from _py_deliver_agent_surface. Three integration cases: (1) core.hooksPath already set
  -> decline with notice; (2) .pre-commit-config.yaml present -> append fragment (idempotent
  via marker grep); (3) .git/hooks/pre-push file -> decline with notice; default = set
  core.hooksPath .getff/hooks. Install-time opt-out via GETFF_SKIP_HOOKS=1. Non-git-repo
  guard prevents fatal on a pre-`git init` consumer tree. --refresh re-delivery via
  _py_copy_or_refresh (refresh_safe honours pre-push.override.md Layer-3 escape hatch).

Tests (tests/install-sh/python-entry-lane.test.sh):
- Arm (14): hook delivered + executable + core.hooksPath activated + header documents
  opt-out + deletion path.
- Arm (14b): install-time opt-out (GETFF_SKIP_HOOKS=1 -> no activation).
- Arm (15): RED/GREEN firing through ACTUAL git push (local bare remote + planted
  os.system violation); SKIP-run via GETFF_SKIP_HOOKS=1. Tool-gated — container SKIPs
  when ast-grep/ruff absent; host-verify exercises the real firing proof (T-S2B-C).
- Arm (16): three integration cases (existing core.hooksPath / .pre-commit-config.yaml /
  legacy .git/hooks/pre-push) — never silently broken, idempotent on re-install.

T21 backward-check sibling surfaces: npm lane (setup.d/50-hooks.sh + .husky) SWEPT-CLEAN,
untouched (anti-scope). Cargo lane (setup.d/46-cargo.sh) GAP-FOUND — same empty rung;
named for the widening getff-any-stack-trace umbrella, NOT fixed here.

Fingerprints regenerated: python/{greenfield,brownfield-ruff,brownfield-sgconfig} — new
.getff/hooks/pre-push shifts the install output (kickoff §3 fingerprint-regen requirement).

Prior-art: prior-art-evaluations.md#237 (BUILD verdict — bare core.hooksPath-style delivery + integration arm; pre-commit REJECTED on runner-role criteria).

* fix(python-lane): S2b egress fixes — pipefail-defeated RED assertion, template registry, SSOT renumber

Three host-side corrections found while landing the container's S2b work. None is a
scope change; all three are defects the container did not surface.

1. Arm (15) RED assertion could never pass (tests/install-sh/python-entry-lane.test.sh).
   The assertion piped `{ cat push_red; git push ...; }` straight into `grep -qi`. Under
   `set -o pipefail` (line 15) the re-push's legitimate non-zero exit — the rung blocking
   the push, which IS the thing being asserted — became the pipeline's status, so the arm
   reported RED-not-fired even when the hook output was present verbatim in the captured
   stderr. Measured on the host: `✗ getff pre-push: ast-grep structural rule(s) fired —
   push blocked` present, arm still failed. Fixed by capturing to a variable first.
   Why the container missed it: arm (15) is tool-gated and SKIPs when ast-grep/ruff are
   absent, which they are in the container — a green container run on a vacuous arm, the
   T14 «clean audit on low coverage» shape the kickoff §5 named. Host: PASS=80 FAIL=0
   with the arm actually exercised.

2. The two new hook templates were not registered in NON_RENDERED_TEMPLATE_FILES
   (packages/core/python-starter/render-python-templates.ts:78). The byte-drift gate
   asserts the committed set under templates/python/ equals plan + allowlist, so
   `backends/python-templates-drift.test.ts:46` went RED on the unregistered pair —
   caught by `.husky/pre-push` §5c on the host push, the same channel that caught the
   registry violation on S2. Registered with the rationale the existing entry carries
   (hand-authored, not a lint-rule render; byte-integrity guarded by the install
   fingerprint gate + arms (14)/(16b); firing guarded by arm (15)).
   packages/core test:backends after the fix: 24 files / 242 tests, 0 failed.

3. SSOT #235#237 across the code comments and the install-time echo
   (setup.d/45-python.sh:675,680,711,738,742,1013; python-entry-lane.test.sh:437).
   The worker authored the register row as #235 against a 2026-08-01 base; #235
   (knowledge-work-plugins) and #236 (anthropic-plugins-utility) landed on staging in the
   six days the branch sat unharvested. The rebase renumbered the row; these are the
   in-code citations that pointed at it.

Host-verify (kickoff §7): 3/3 on Darwin — python-entry-lane 80/80, python-rules-lock
21/21, snapshot compare 15/15 byte-identical.

Prior-art: skipped — test-assertion bugfix, template-registry entry, and citation renumber on an existing capability; no new capability introduced.

---------

Co-authored-by: Test <test@example.com>
artyhoo added a commit that referenced this pull request Aug 18, 2026
…ws, routing bindings (#1462)

* feat(arch): frontier pacing delta in §1 — ADAPT of grill-me/grilling (SSOT #253)

Two deltas over the wrapped brainstorming loop: batch prerequisite-settled
questions per round (dependent ones stay serial), and enumerate-before-done —
the dialogue closes only when every design decision is answered or an explicit
operator fork. Superpowers 6.2.0 verified to lack the mechanism (grep over the
whole installed plugin: 0 hits; brainstorming pins one-question-per-message).

Prior-art: prior-art-evaluations.md#253 (grill-me/grilling, ADAPT — only the tree/frontier mechanic transfers; recommendation-per-question and probe-don't-ask already exist as H1 + T8/T20).

* feat(arch): grilling becomes the questioning engine — SSOT #253 lifted ADAPT→ADOPT

Operator-ratified design session (D1-D4): the compressed frontier-pacing
paraphrase measurably lost upstream's non-blocking probe rule (same-day cold
review vs the raw upstream text), so /arch §1 now consumes the grilling skill
AS IS via the mattpocock-skills companion plugin (MIT, versioned, precedent
#64 brainstorming) and keeps only a thin binding: brainstorming collision
resolution, probe routing (T20/§1.5), AskUserQuestion as the round carrier
(added to allowed-tools), and the spec's live decision register as the tree
surface. Register format lands in the spec-template obligation; SSOT #253
revisit triggers gain a named recording surface + a vendor-copy fallback arm.

Prior-art: prior-art-evaluations.md#253 (grill-me/grilling, ADOPT — companion plugin consumed AS IS; paraphrase channel measured lossy, hence the lift from ADAPT).

* feat(arch): §2 no-rerank rule — the two altitudes are never merged into one list

Adopted from mattpocock code-review's two-axis separation (one axis must not
mask the other) during the 2026-08-17 plugin sweep; the §2 seats already
report independently, this pins that their findings are presented side by
side and never reranked across altitudes.

Prior-art: prior-art-evaluations.md#253 (mattpocock-skills plugin sweep; doc-only edit, no new capability).

* docs(arch-prep): three-stack skill harmonization — collision map + raw ownership idea

Prep-doc for a future /arch design session: enumerates all three skill
populations (ours 16, superpowers 6.2.0 14, mattpocock-skills 1.2.3 35 — all
35 read in full), maps collisions per capability area (sharpest: Matt tdd vs
SP TDD contradict on refactor placement and seam scoping; diagnosing-bugs vs
systematic-debugging claim the same trigger space), lists the six available
resolution mechanisms with two unknowns (per-skill disable, routing
precedence) as probes, and drafts a one-owner-per-area map plus a live
decision register the design session starts from.

Prior-art: prior-art-evaluations.md#253 (grilling ADOPT — this prep extends the same three-stack comparison to the full plugin; doc-only, no capability).

* docs(arch-prep): §1.5 dependency edges — collision risk weighted by our hard references

Measured map of what our machinery hard-references upstream (grep over
skills/rules/agents/CLAUDE.md/templates): SDD is the most-referenced upstream
and crosses the shipped axis (tier-home.md); requesting-code-review is the
highest-risk collision zone because dispatcher/harvest contracts name it while
Matt's code-review claims the same trigger space; TDD/debugging collisions
carry routing risk only (zero hard edges from us). Also: D-H4 recorded as
answered (parallel commit 09569a3 landed mid-session), §7 gains the
re-probe-before-edit note.

Prior-art: prior-art-evaluations.md#253 (same three-stack comparison; doc-only edit).

* docs(arch-prep): DeepWiki pass on both satellites + our-side thinning audit

Per-repo DeepWiki interrogation folded in: (a) the measured routable surface
is exactly 11 mattpocock skills (user-invoked ones never enter the router —
his collision policy is the user/model-invoked split, confirmed live in this
session's skill listing); (b) Matt's refactor-out-of-loop is a June-2026
behavioral measurement («agents essentially never performed it»), not
doctrine — D-H2 needs our own corpus check; (c) TDD edge CORRECTED: SDD's
implementer-prompt.md:36 says bare «TDD», so the collision is
transitive-contract grade, not routing-only; (d) superpowers documents
Project > Personal > Plugin per-skill shadowing — new mechanism 7, P1
narrowed. New §4.5: our 16 skills audited — nothing deletable, orchestrator
is the one THIN candidate (D-H9); D-H10 TDD shadow, D-H11 domain-modeling
pairing added to the register.

Prior-art: prior-art-evaluations.md#253 (same three-stack comparison; doc-only edit).

* docs(arch-prep): slash-only planning skills evaluated as adoption candidates + 4 raw ideas

Operator correction folded in: «no collision» ≠ «no value» — the user-invoked
planning skills get per-skill adopt/adapt verdicts (wayfinder ADAPT strongest;
to-tickets ADAPT mechanizable; to-spec one section; implement REJECT; triage
two residues). New §4.6 carries four raw ideas for the design session: (1) the
decision map as the multi-session layer over /arch — D4's register lifted to
wayfinder shape, map-location sub-fork included; (2) kickoff Blocked-by edges
with a pipeline-computed frontier; (3) seams-first Testing-seams slot in the
spec template, unlocking the seams half of D-H2; (4) glossary SSOT as a
term-ownership generated index — the CONTEXT.md-free adaptation that makes the
grilling+domain-modeling pairing adoptable (D-H11 re-opened from defer).
Register grows D-H12-D-H14.

Prior-art: prior-art-evaluations.md#253 (same three-stack comparison; doc-only edit).

* docs(arch): three-stack skill harmonization — design spec + continuation handoff

Interview phase complete (frontier empty): P-1..P-6 operator premises,
15-area ownership map ratified (D-H1), decision register D-H0..D-H16 with
falsifiers, mechanism set (prune script, CONTEXT.md rule+test, claim
reorder, Blocked-by frontier, seams slot, aif plugin), probe register
P1/P2a-c/P5-pending/P6, routed-work inventory for §3 exit routing.

Awaiting §2 cold two-altitude review (this session's next step).

* docs(arch): harmonization spec v2 — round-1 cold-review dispositions landed

Both §2 seats returned REVISE (9 + 8 findings). All round-triggering
findings repaired in place: §1 restated as two declared lanes (TD-F1);
prune radius narrowed to 2 machine-globally-justified items per the
operator's F7 answer + --check pre-push drift detector (TD-F2/F7);
D-H17 completes the ownership map to all 11 model-invocable skills
(TD-F3); setup run re-bucketed attended (TD-F4); D-H5 claim mechanics
specified with real machinery + P4 restored (TD-F5, B-M1/M2); §5.6
non-target named (B-M3); /vitest transfer dissolved (B-M4); D-H7/D-H8
counter statuses corrected (B-M5); D-H13 adopts incumbent 'Depends on'
spelling (B-M6). New: P-7 premise + D-H18 consumer-axis contour routed
out via chip. Full dispositions: §9 v2 entry.

* docs(arch): harmonization spec v3 + SSOT #253 counter arm + REJECT rows #254-257

Round-2 delta review (both seats REVISE; all round-1 closures confirmed):
- --check channel corrected: owner:'maintainer' section in the pre-push.ts
  section registry (the file ships to consumers but maintainer sections
  never compose on a consumer layout, fail-closed) — .husky/pre-push is
  an exec dispatcher with no sections (convergent TD/B finding).
- D-H16 build item DISSOLVED: aif container mounts the host
  ~/.claude/plugins read-only (docker-compose.override.yml), so the
  plugin is already visible in-container and the prune/--check cover it
  by construction (measured round-2).
- 'counter armed' made true instead of re-worded: D-H7/D-H8 arm +
  observation No.0 appended to SSOT #253; REJECT rows #254-257 added
  (Matt implement, ADR dir, severity-less review model, total-sweep
  pruning). Spec SS8 item 5 DONE in-session.
Dispositions: spec SS9 v3 entry.

* docs(arch): harmonization contour GO — round-3 record + routed in-session edits

Round 3 (targeted delta): both cold seats GO. Spec header → REVIEWED-GO;
§9 round-3 entry (one TD MINOR accepted as recorded limit: container
premise rests on untracked local docker-compose.override.yml — covered
by D-H16 falsifier).

Routed §8 item 2 small edits, per spec:
- arch/SKILL.md §1: Testing seams slot added to the spec-template
  obligation (D-H14; seams-first adopted WITHOUT Matt's refactor placement)
- ai-doc/SKILL.md: skill-authoring ownership note (standard=ours,
  process=SP writing-skills, writing-for-agents=REFERENCE)
- rule-tests/SKILL.md: tautological-test anti-pattern REFERENCE note
  (D-H2 transfer (b))

* docs(arch): close harmonization contour handoff — full tail executed

Review GO (3 rounds), exit routing done (3 chips + in-session edits),
SSOT appends landed. Handoff retained as closure record; residue =
operator actions (spec SS8 item 1) + chip-routed umbrellas.

* docs(arch): consumer-axis satellite harmonization — design v1 + round-3 handoff

Round-2 /arch contour (D-H18): interview closed, D-C1..D-C8 ratified with
falsifiers; three-class collision model (factory CI / install-time census /
informed consent); detect+declare+prescribe mechanism recorded. Cold review
and exit routing DEFERRED behind the operator-mandated round-3 top-down
creative re-examination (P-C3) — handoff written for the fresh session.

* docs(arch): harmonization round 3 — registers amended, injected-context bindings land

Round 3 (D-C8, operator-mandated P-C3) executed per the handoff's membrane
phase order. Operator-axis spec v4: D-H15 SUPERSEDED — the prune apparatus
(script / wizard / --check pre-push section / gate P5) dissolved, replaced
by CLAUDE.md routing bindings (repo section + ~/.claude/CLAUDE.md
machine-global half, written in-session with live operator approval) +
meta-kickoff.template.md binding line (D-H10 fallback promoted to primary);
D-H8 gains a frontmatter-neutering ladder step. Round-2 spec v2: D-C1
re-cut to the thin form (static census prose + known-pair presence check;
inventory-join engine not built), D-C9 fourth-stack admission boundary
added (knowledge-work trio stays on SSOT #235). Round-3 handoff closed
with the continuation-state staleness correction; keen-shannon merged in
(3ae6981) so both specs live on one branch.

* docs(arch): P7 recorded — fresh-session bindings probe 2/2 vs P2 baseline

Both P2-class triggers flip with the CLAUDE.md bindings in context
(headless claude -p, fresh sessions reading the worktree CLAUDE.md from
disk). Method finding recorded: in-session subagent probes are invalid
for mid-session binding edits — subagents inherit the parent's
session-start CLAUDE.md snapshot (measured via a failed in-session probe
plus its diagnostic follow-up).

* docs(arch): round-3 review R1 — both seats REVISE, dispositions landed

Convergent BLOCKER fixed: the meta-kickoff.template.md binding line
REMOVED — .claude/skills/pipeline/ ships to consumers via GETFF_SKILLS_ENV
(setup.d/lib.sh:59) at the default env profile, so carrier #3 breached the
operator-axis membrane while buying no coverage; its removal restores all
8 install fingerprints to the baseline blob. §5.1's «no mechanical channel
at all» premise corrected (config layer only; frontmatter + a possible
Skill-matched PreToolUse hook priced — P8 records the hook UNVERIFIED:
guide claims no Skill matcher, live harness observation contradicts). P7
restated honestly (1 measured flip + 1 post-only confirmation). SSOT #253/
#257 got dated supersession notes (no prune ever executed). Five residual
prune assertions re-cut. Consumer spec: population corrected — TWO shipped
cc-plugin rows (superpowers + ast-grep, the latter disabled on the
operator's own machine); presence check re-keyed on installed_plugins.json
+ enabledPlugins; D-C5/D-C6 aligned; class-2 own-skills half recorded as
prose-only limit. ESCALATED to operator: ast-grep shipping fate (ESC-1) +
the detection-wire fork (TD-M2/P8). ~/.claude/CLAUDE.md section relocated
to file end (orphaned AIF bullet restored to its heading).

* docs(arch): round-3 review R2 — residuals closed, operator answers landed

Both R2 seats REVISE with a convergent root cause: R1 edited the surfaces
findings argued FROM, not every surface repeating the claim. Closed: §1
premise re-cut to config-layer wording; §1 scope guard now names the
pre-round-3 routed edits as verified degrade-safe REFERENCEs; sixth prune
assertion re-cut (D-H16); handoff header unmerged label; D-H15
exclusivity hedge; consumer D-C1/§7 re-keyed on installed_plugins.json +
enabledPlugins; both §8 inventories carry the escalations. Operator
answers recorded live: ESC-1 → retro-census BOTH shipped rows, keep
ast-grep on a clean census; P8 → VERIFY via the settings.json hand-off
(§8 item 7). Review round cap (2 REVISE) reached — residual state
surfaced in §9 instead of a third cold round.

* docs(kickoffs): round-3 exit routing — two build umbrellas authored

consumer-satellite-contract (thin form: retro-census of BOTH manifest
rows per the answered ESC-1, D-C2 principle test, AGENTS.md.template
section + parity line, install-registry-keyed presence check) and
skill-harmonization-mechanisms (CONTEXT.md pointer-rule test, four-part
claim machinery closing probe P4, Depends-on frontier). Both carry
host-verify contracts and the PR-pause note: they become dispatchable
only when the spec branch merges to staging.

* docs(kickoffs): declare the effort-worthiness L0 rigor label on both round-3 kickoffs

Principle 40 (`packages/core/principles/40-kickoff-rigor-label.test.ts`) requires every
post-cutoff kickoff to carry a `Rigor label … L0 …` line with a legal value. Both
round-3 kickoffs were authored without it and failed the gate at push time.

- skill-harmonization-mechanisms → `build-and-verify`: all three surviving stages are
  factory-internal and reversible, each with a live RED/GREEN seam proof.
- consumer-satellite-contract → `research-grade`: S3/S4 touch consumer-shipped
  surfaces (AGENTS.md.template, ./setup), which effort-worthiness §1 reserves for the
  research-grade contour.

Prior-art: skipped — mechanical gate compliance on two doc files, no new capability

* docs(arch): P8 CONFIRMED live — detection wire v0 declared; kickoff L0 labels

The operator-registered log-only PreToolUse Skill hook fired on a forced
model-invoked skill in a fresh headless session (JSON with tool_name=Skill
+ the skill name in tool_input). The guide-agent's 'skill loading bypasses
the tool pipeline' claim is falsified — the P6 failure class again.
Measured boundary: user-typed slash commands bypass the Skill tool
(invisible to the wire, irrelevant: misroutes are model-invocations).
TD-M2 closes — the log IS the v0 misroute detection wire feeding the D-H7
counter; spec §6 P8 + D-H8 + §8 item 7 updated. Both kickoffs gained
effort-worthiness L0 rigor labels (parallel session's edit kept as-is).

* test(install-sh): regenerate baselines for the three edited shipped skills

The branch edits `.claude/skills/{ai-doc,arch,rule-tests}/SKILL.md` — all three are
shipped artefacts, so their fingerprints move in every stack baseline that carries
them. Captured with `SNAPSHOT_MODE=capture bash tests/install-sh/snapshot.sh`.

Diff reviewed before committing (round-3 R1 precedent: an unreviewed template edit
turned 8 fingerprints stale): exactly three payload paths changed hash — rule-tests
(22 occurrences), arch (16), ai-doc (16) — and every fingerprint file is 1:1 on line
count, so no payload entered or left any stack.

Prior-art: skipped — snapshot regeneration after a shipped-file edit, 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