Skip to content

docs(arch): skill-stack harmonization design contour — specs, SSOT rows, routing bindings - #1462

Merged
artyhoo merged 23 commits into
stagingfrom
claude/festive-shtern-0e0296
Aug 18, 2026
Merged

docs(arch): skill-stack harmonization design contour — specs, SSOT rows, routing bindings#1462
artyhoo merged 23 commits into
stagingfrom
claude/festive-shtern-0e0296

Conversation

@artyhoo

@artyhoo artyhoo commented Aug 18, 2026

Copy link
Copy Markdown
Owner

Lands the three-stack skill-harmonization design contour (rounds 1-3) so that the four
build umbrellas routed out of it become dispatchable. Until this merges, dispatch
precondition D-P1 blocks every stage: executors start from staging, where the specs
that are their verbatim source of truth do not exist.

What lands

Conflict resolution (merge-forward, not rebase)

.claude/orchestrator-prompts/skill-harmonization-mechanisms/kickoff.md conflicted
add/add against the copy that landed on staging via #1458. Kept the round-3 version
from this branch; dropped the pre-round-3 one. #1458's kickoff was authored against the
round-2 GO and still lists the prune script / --check pre-push section / wizard / P5
operator probe as stage S1 — all four DISSOLVED by round 3 (operator-ratified live,
2026-08-18). Dispatching from the staging copy would have built a mechanism the design
had already killed. Recipe followed: .claude/rules/git-conflict-merge-forward.md.

Parked questions

None. The one judgment made in-flight — the L0 rigor labels required by principle 40,
absent on both round-3 kickoffs — is recorded in its own commit with the reasoning per
kickoff (build-and-verify for the factory-internal umbrella, research-grade for the
consumer-shipped one). Either is a one-line edit to revise.

Fidelity verdict

FIDELITY: skipped — this is a design-record landing PR (specs, SSOT rows, kickoffs, a
CLAUDE.md bindings section); it declares no substrate and ships no executable mechanism,
so there is no implementation-vs-spec surface for agents/fidelity-auditor.md to audit.
The mechanisms themselves land per-stage under the umbrellas this PR unblocks, each with
its own fidelity round.

§1.7 Forward-check applied

Checked this PR against the disciplines that own its surfaces before pushing.

  • doc-authority-hierarchy.md — each new spec declares its own authority scope; the
    kickoffs point at the spec as SSOT rather than restating decisions. file:line evidence:
    .claude/orchestrator-prompts/skill-harmonization-mechanisms/kickoff.md:5
  • effort-worthiness.md §2 L0 — both kickoffs now declare a rigor label; principle 40
    green locally. file:line evidence: packages/core/principles/40-kickoff-rigor-label.test.ts:73
  • git-conflict-merge-forward.md — the add/add conflict was resolved by merging staging
    INTO this branch; no rebase, no force-push. file:line evidence: .claude/rules/git-conflict-merge-forward.md:1
  • no-paid-llm-in-ci.md — no CI-side model calls introduced; all review work was
    session-bound. file:line evidence: .claude/rules/no-paid-llm-in-ci.md:1
  • build-first-reuse-default.md — no capability commit here; the prior-art consult was
    spent at design time and is recorded per stage in the kickoffs.

§1.7 Backward-check applied

Swept the existing artefacts this PR's scope overlaps, for supersession and stale refs.

  • #1458's kickoff copy — SUPERSEDED, not merged: its S1 (prune + --check + wizard)
    and the P5 gate are dissolved by round 3. file:line evidence:
    .claude/orchestrator-prompts/skill-harmonization-mechanisms/kickoff.md:16
  • SSOT fix(docs): session followup — SSOT #81 broken citation + README:74 drop Cline/Aider #253/feat(M-A Stage 4): orchestrator skill trim + Phase 4.5 ADAPT #257 — carry dated supersession notes rather than being rewritten, per the
    append-only register rule. file:line evidence: docs/meta-factory/prior-art-evaluations.md:1
  • ~/.claude/CLAUDE.md machine-global bindings — the repo-side section is the committed
    half of a pair whose other half is operator-local and deliberately uncommittable.
    file:line evidence: CLAUDE.md:1
  • Consumer-facing surfaces — untouched by this PR; the AGENTS.md.template and ./setup
    edits live in the consumer-satellite-contract umbrella, not here. file:line evidence:
    .claude/orchestrator-prompts/consumer-satellite-contract/kickoff.md:20

Prior-art: skipped — design-record landing PR, no new capability introduced by the merge

Test added 22 commits August 17, 2026 22:13
…(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).
…d 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).
…to 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).
…w 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).
…ur 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).
… 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).
…didates + 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).
…ion 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).
…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.
#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.
…sion 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))
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.
…-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.
…xt 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.
…line

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).
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).
…nded

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.
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.
Merge-forward per .claude/rules/git-conflict-merge-forward.md (never rebase a
published/parallel branch).

Conflict resolution — .claude/orchestrator-prompts/skill-harmonization-mechanisms/kickoff.md
(add/add): kept the ROUND-3 version from this branch (9f4e4b4, 80 lines), dropped
the pre-round-3 version that landed on staging via #1458 (c6bc0ef, 259 lines).

Rationale: round 3 (operator-ratified live, 2026-08-18) SUPERSEDED D-H15 — the prune
script, its `--check` pre-push section, the wizard walkthrough and the P5 operator
probe are all DISSOLVED, replaced by injected-context CLAUDE.md bindings that already
landed in-session. #1458's kickoff was authored against the round-2 GO (spec commit
f2d3fe2) and still carries S1 as a build stage, so dispatching from it would build
a mechanism the design has killed. The round-3 kickoff carries the surviving three
stages (anchors / claim / frontier) plus its own traps, gates and host-verify block.

Prior-art: skipped — merge-forward conflict resolution, no new capability introduced
…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
…0 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).
…kills

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
@artyhoo
artyhoo merged commit cae7d44 into staging Aug 18, 2026
46 checks passed
@artyhoo
artyhoo deleted the claude/festive-shtern-0e0296 branch August 18, 2026 07:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant