Skip to content

docs(research-patches): §7 Decision C2 — accept condensed Aider coverage - #61

Merged
artyhoo merged 1 commit into
mainfrom
docs/aider-coverage-decision
May 16, 2026
Merged

docs(research-patches): §7 Decision C2 — accept condensed Aider coverage#61
artyhoo merged 1 commit into
mainfrom
docs/aider-coverage-decision

Conversation

@artyhoo

@artyhoo artyhoo commented May 16, 2026

Copy link
Copy Markdown
Owner

Summary

  • Records companion-target comparison §7 Decision C2 — accept condensed Aider coverage; framework-consumer classification preserved with low-confidence flag.
  • New file: docs/meta-factory/research-patches/2026-05-16-aider-coverage-decision.md (~50 lines, T7 template).
  • Rationale: Aider verdict rests on T16 problem-class layer match (runtime, not framework companion), not per-feature inventory; DeepWiki indexing investment not warranted at current scope.
  • Documents revisit triggers (concrete interop question / material feature evolution / maintainer scope decision) so future-self knows when to re-open.

Test plan

  • CI passes — docs/meta-factory/research-patches/** outside discipline-self-check.yml path filter (see .github/workflows/discipline-self-check.yml:14-22); §1.7 PR-body sections not required
  • No new capability added — Prior-art: skipped trailer used with rationale ≥20 chars
  • Patch follows T7 template (Problem → Root Cause → Solution → Prevention → Tags)
  • Cross-references to parent patch + relevant rule files all resolve
  • Pre-push hook passed locally (56/56 tests, markdownlint clean)

…r coverage

Aider classified framework-consumer in companion-target comparison §3.7 on
WebSearch + general-knowledge basis only (DeepWiki not indexed for
paul-gauthier/aider). §7 Decision C2 = accept condensed coverage with
low-confidence flag; verdict rests on T16 architectural-layer match
(runtime, not framework companion), not per-feature inventory. Revisit
trigger: concrete Aider interop question, material feature evolution, or
maintainer-level scope decision.

Prior-art: skipped — doc-only research-patch recording a maintainer decision; no new capability commit per CLAUDE.md definition.
@artyhoo
artyhoo merged commit e48abf5 into main May 16, 2026
17 checks passed
artyhoo added a commit that referenced this pull request May 22, 2026
…plan (DECISION=C) (#135)

* feat(principles): principle 17 — no paid LLM in CI (DN-6) [→staging live-test] (#132) (#133)

* docs(research): memory coverage audit (memory → docs → tests) 2026-05-22 (#126)

R-phase report: triages all 51 project-memory files against the project
goal (rule = executable test), builds a 30-row coverage matrix by pipeline
stage (0 memory-only / 1 prose / 2 executable), and proposes a forward-going
memory-codification discipline (write-time + local-audit + periodic re-audit).
No implementation — gap-closure + new rule are a separate PR after maintainer GO.

Successor to 2026-05-13 memory-to-docs codification audit (extends memory→docs
for 6 entries to memory→docs→tests over all 51 files). Surfaces T16 stale-header
finding (principle tests 11/12/13 shipped but rule headers say "pending").

Prior-art: skipped — research-patch doc only, no new capability/dependency; reuses 2026-05-13 §7 REUSE verdict (Cline Memory Bank + CC scope hierarchy).

* feat(principles): Wave 10.6 — port hook-stub-completeness audit to principle 16 (#127)

- Add packages/core/principles/16-hook-stub-completeness.test.ts (7 tests):
  (a) real-tree vacuous pass: empty hard-fail set post-migration → passes, not dies
  (b) paired-negative: make_test_repo() test file missing stub → ❌ violation detected + message text asserted
  (c) non-empty happy path: stub present → no violation
  + scope gate, multi-script, dedup, T15 self-application arms
- Delete packages/core/audit-self/hook-stub-completeness.test.sh (bash predecessor)
- Remove requireSelfTest('…hook-stub-completeness.test.sh') invocation from pre-push.ts §3a
- Remove requireSelfTest() helper (zero call sites remaining → genuinely dead)
- Leave phantom stub in tests/hooks/prior-art-trailer-hook.test.sh (harmless; out of scope)

Prior-art: skipped — bash→TS port of existing hook-stub-completeness audit (Wave 10.6), no new capability

* docs(automerge): codify branch-from-main staging flow + resync discipline (#128)

* docs(automerge): codify branch-from-main→staging flow + resync discipline; sync doc to LIVE state

main's copy was stale (still called ci-success a placeholder). Updates: status LIVE (settings applied 2026-05-22); new §2.1 branching flow — always branch FROM main, auto-merge INTO staging, with the load-bearing RESYNC discipline (ff staging→main after each promotion) that keeps staging a disposable buffer not a divergent develop; §5 recipe marked APPLIED with the real ci-success+actionlint+zizmor contexts + main owner-only protection; §6 #2 RESOLVED (#125).

Prior-art: skipped — doc codification of an already-decided flow, no new capability/dependency/subdir.

* docs(§2.1): drop trunk-based exception — everything routine → staging (0 clicks)

Maintainer's point: direct-to-main is owner-only → forces a manual merge
click per PR, the exact toil being removed. staging auto-merges (0 clicks).
So all routine work → staging; direct-to-main only for owner hotfixes.

Added dependency note: for true zero-click walk-away the agent must set
auto-merge on staging-targeted PRs, currently blocked by the git-safety
hook (allows only feat→epic). Relaxing it (permit auto-merge --base staging)
is the actual zero-click lever, and is a maintainer-side hook edit.

Prior-art: skipped — doc refinement of the codified flow, no new capability.

* feat(hooks): Wave 10.5 — bash-fallback + install.sh feature detection (#129)

Ships the critical-only bash fallback for the pre-push hook and updates
the consumer-facing dispatcher template to runtime feature detection.

Artifacts:
- packages/core/hooks/checks/registry.ts (~114 LOC): declarative
  check-registry ({ id, criticalForFallback, runner }[]) decoupling
  check-set selection from execution (ADAPT from Aider §4.8.X.2).
  Critical entries: prior-art-presence + s17-presence (both runner: 'bash'),
  per D2 + research patch §7.2.
- packages/core/hooks/checks/registry.test.ts: unit tests asserting
  bash-expressible invariant (every criticalForFallback entry → runner: 'bash')
  AND presence of both required critical entries.
- packages/core/hooks/pre-push.fallback.sh (~63 LOC): critical-only bash gate.
  Runs §7 Prior-art presence + §1.7 presence checks on origin/main..HEAD commits.
  Historical cutoff (2026-05-12) respected. bash 3.2-compatible. exit 1 if either
  required trailer is absent; exit 0 when both present or no discipline files touched.
- packages/core/templates/shared/husky-pre-push.sh: updated from OLD consumer
  pre-push to runtime dispatcher (per research patch §7.4). Node ≥20 + pre-push.ts
  present → TS-core; otherwise → bash fallback. Capability-check, NOT brand-name.
- install.sh: also copies pre-push.fallback.sh to consumer project so the
  runtime dispatcher can find it at $REPO_ROOT/packages/core/hooks/pre-push.fallback.sh.
- docs/meta-factory/prior-art-evaluations.md: SSOT entry #59 added in-commit
  (registry.ts ≥80 LOC under packages/ → capability commit gate fires).

T15 self-application: the registry invariant (every criticalForFallback check is
bash-expressible) is itself unit-tested in registry.test.ts — the rule applies to
itself. Zero edits to pre-push.ts (parallel-overlap avoidance; 10.6 owns that file).

Prior-art: prior-art-evaluations.md#59 (Aider parse_lint_cmds / self.languages, verdict ADAPT — structural pattern of decoupling selection-table from execution-runner transfers; semantic axis differs: file-language vs project-stack. Wave 10.5 registry.ts is 114 LOC ≥80 threshold, capability commit gate fires, SSOT entry added in same commit per CLAUDE.md discipline).

* fix(ci): make ci-success the sole required gate; fold actionlint+zizmor under it (#130)

Branch protection on main/staging required ci-success + actionlint + zizmor, but
actionlint/zizmor lived in workflow-integrity.yml path-filtered to
.github/workflows/** — so PRs not touching workflows (docs, packages) never
triggered them, their required contexts never reported, and the PR deadlocked
(auto-merge could never fire). PR #126 hit this exact wall.

Fix: cross-workflow `needs:` is impossible, so move actionlint + zizmor into
audit-self.yml (no path filter → runs every PR) and add them to ci-success's
`needs:`. ci-success now transitively gates the linters and always reports, so
branch protection can require ONLY ci-success. workflow-integrity.yml keeps just
the R11 branch-protection-assertion. Checks are stricter, not weaker: a broken
workflow YAML on a docs PR is now caught (previously it wasn't).

Synced: rules-manifest R11 check.command + re-rendered RULES.md table + snapshot;
RULES.md R11 prose; ci-success-gate.sh comment; automerge-staging-plan.md §5
recipe (was telling the maintainer to re-add the deadlocking contexts).

Maintainer-side follow-up: re-run the branch-protection PUT with single-context
payload {"contexts":["ci-success"]} per automerge-staging-plan.md §5.

Prior-art: skipped — moves existing CI jobs between workflow files + doc sync; no new capability, dependency, or ≥80-LOC file.

* feat(principles): principle 17 — no paid LLM in CI (DN-6 stage-1→2 promotion)

Promotes .claude/rules/no-paid-llm-in-ci.md from "Class A, grep mechanism
ready, test pending" to a real executable gate (memory-coverage-audit §10
DN-6 — the one clean stage-1→2 win in-repo). Scans .github/workflows/*.yml
for paid-LLM *usage* (ANTHROPIC/OPENAI api-key assignment or secret ref,
api.{anthropic,openai}.com hostnames, paid SDK imports) and fails CI if any
is present.

Usage-precise, not mention-counting: full-line comments are stripped first,
so the project's own negation mention (framework-self-template-render.yml:
"NO ANTHROPIC_API_KEY reference") does NOT false-positive. Negative-controls
in the test prove that, plus session/MCP tooling (claude CLI, context7) is
out of scope per rule §2.

Slot 17 (01-16 occupied). Runs in CI via principles-meta-tests → gated by
ci-success. 7/7 local; full suite 17 files / 106 tests green.

§1.7: forward-check applied — principle 17 IS the executable artifact for an existing prose rule (no-paid-llm-in-ci.md §1/§6 "pre-merge grep" counter); paired-negatives at packages/core/principles/17-no-paid-llm-in-ci.test.ts:91 (api-key assignment), :96 (hostname), :101 (SDK) prove detection, negative-controls at :107/:112 prevent false-positives. Backward-check sweep — reviewed principle slots 01-16 (17 next free) + prior-art-evaluations.md; no overlap (secret-scanners detect leaked creds, this bans a paid-LLM dependency surface — inverse problem class).
Prior-art: skipped — principle test for the existing no-paid-llm-in-ci.md rule (DN-6 promotion); no new capability/dependency/subdir, mirrors principle 15/16 precedent.

* docs(research-patches): N7 dogfood-companions process-layer adoption plan (DECISION=C, axis B)

Read-only research deliverable for roadmap Wave N7. Inventories Superpowers process-layer
artefacts (SDD skill, using-git-worktrees) dogfoodable in our own dev under DECISION=C;
ADOPT both at process layer with explicit substrate-purity boundary (axis A never coupled).
Verifies isolation:"worktree" compatibility (DeepWiki, not name-assumed). Proposes SSOT
#60/#61 in-text (not written — surfaced for maintainer application after the §4-step-5
empirical trial). N0-storm overlap noted. §7 carries the §1.7 forward/backward self-review.

Prior-art: skipped — research-patch doc only, no capability artefact (DeepWiki ×3 + WebSearch ×3 evidence in §2; SSOT rows proposed not written).
artyhoo added a commit that referenced this pull request May 22, 2026
#142)

* feat(hooks): path-scoped rule-injector — promote channel-selection C→B

Ship the ADAPT mechanism from the 2026-05-22 survey: a PostToolUse injector
(.claude/hooks/inject-matching-rule.sh) that, on Edit/Write, matches the edited
path against each rule's own-line <!-- globs: --> marker (subset: prefix/**,
*.ext, exact) and injects that rule's <!-- inject: --> summary as JSON
additionalContext, once per session (session-cache). Dogfood: the
channel-selection rule carries the first markers. Promotes that rule C->B
(compensating mechanism shipped + deterministic self-test, 6/6). Activation
needs one settings.json PostToolUse entry (maintainer; self-protected file).

Prior-art: research-patches/2026-05-22-rule-enforcement-channel-selection.md — ADAPT of OhMyOpencode rulesInjector (proposed SSOT #61); CC hooks native (SSOT #20); deterministic bash, no paid LLM. PostToolUse additionalContext contract verified via claude-code-guide (code.claude.com/docs/en/hooks.md, 2026-05-22): plain stdout ignored, JSON hookSpecificOutput.additionalContext required.

§1.7: forward-check applied — complies with no-paid-llm-in-ci (deterministic bash, zero LLM/API calls — .claude/hooks/inject-matching-rule.sh:79 emits static JSON), dual-implementation-discipline (CC-native artefact carries @cc-only-rationale marker), doc-authority-hierarchy (rule header intact, principle 09 green 17/17), README earliest-reachable-channel (injection = the delivery-scope axis, non-blocking, not a gate); backward-check sweep — promoting the rule C→B follows its own §6 promotion path; the <!-- globs/inject --> marker convention is forward-going (only the channel-selection rule carries it today), no retroactive sweep of other .claude/rules/*.md.

* test(hooks): clarify rule-injector assertion comment (review MINOR)

Cold-review noted the comment overstated what .not.toContain('subset:')
guards. Comment-only accuracy fix, no behaviour change.
artyhoo added a commit that referenced this pull request May 22, 2026
…#154)

Backfills the prior-art register for the channel-selection wave (#139): the
rule + inject-matching-rule.sh hook shipped without their SSOT rows. Adds the
four candidates from research-patch §5 (2026-05-22-rule-enforcement-channel-selection):
- #60 Agent RuleZ — REFERENCE (Rust dep for native CC-hook capability)
- #61 OhMyOpencode rulesInjector — REFERENCE + ADAPT (our inject-matching-rule.sh)
- #62 Cursor rule types — ADOPT VOCABULARY (breadth ladder 1:1)
- #63 agent-situations — REFERENCE (check-gated injection)

Prior-art: skipped — SSOT register append documenting channel-selection prior-art, no new capability in this commit
@artyhoo
artyhoo deleted the docs/aider-coverage-decision branch May 22, 2026 18:09
artyhoo added a commit that referenced this pull request May 22, 2026
…E Superpowers + SSOT #64/#65 + retention=A coexist (#166)

N7 (DECISION=C) repo-side application. Source-verified the Superpowers
adoption against shipped SKILL.md (dual-channel DeepWiki + raw WebFetch,
2026-05-22) instead of assuming from name.

- .claude/rules/parallel-subwave-isolation.md §4: drop the homegrown
  AST-detection build-target; REFERENCE Superpowers `using-git-worktrees`
  (Step 0 GIT_DIR!=GIT_COMMON skip → compatible with isolation:"worktree").
  Stays Class C; new §5 §1.7 forward/backward note.
- prior-art-evaluations.md: append SSOT #64 (SDD, ADOPT process-layer) +
  #65 (using-git-worktrees, ADOPT + REFERENCE). NOT #60/#61 — those were
  taken by the parallel channel-selection wave (the exact ID-collision §6
  warned about). "#27 = Git-Isolation" was a misattribution (#27 is
  HANDOFF_MODE) — corrected, void #27-update skipped.
- N7 patch §9 closure: source-verification findings, retention verdict
  A (coexist), ID corrections, classifier-blocked items.
- roadmap banner reconciled (DECISION=C set, original framing preserved
  append-only); sequencing-plan N7 status updated.

Retention=A: SDD review is post-implementation, orchestrator Phase -1 is
pre-dispatch + owns quota/Mode/bootstrap meta-layer SDD lacks → coexist.

Blocked (maintainer-applied): global Superpowers install + orchestrator-
skill annotation — both denied by the auto-mode classifier (untrusted
external code / self-modification). Live-dogfood trial pending those.

§1.7: Forward — demotion complies with build-first-reuse-default.md (REFERENCE-over-BUILD) + no-paid-llm-in-ci.md (using-git-worktrees pure-git); Backward — scope-reducing, only edited bullet is parallel-subwave-isolation.md:37 (§4), SSOT cross-ref at prior-art-evaluations.md row #65, full self-reflexive note at parallel-subwave-isolation.md:46
Prior-art: skipped — N7 process-layer dogfood adoption; SSOT #64/#65 appended documenting ADOPT verdicts, no new dependency or capability code added
artyhoo added a commit that referenced this pull request May 24, 2026
…p-3 (#202)

* docs(ssot): add row #71 — delegation-vs-decision discipline (round-1 BUILD evidence trail)

ATTN-1 follow-up from round-2 audit (PR #201, commit d212dae Sub-wave B
Invariant 1). Documents the external-prior-art check that justified
round-1's BUILD verdict over ADOPT for the problem class
«delegation-vs-decision discipline in skill priority-tie resolution».

Row #71 records:
- Candidate: Superpowers `using-superpowers` Red Flags table (13-entry
  skill-invocation rationalisation tracker)
- Verdict: REJECT (T16 problem-class non-match — match score ~5%)
- T16 evidence: upstream addresses *whether* to invoke a skill; ours
  addresses *who decides* among ranked priority candidates
- ADAPT credit (internal, no SSOT row per §1 scope): reviewer-discipline
  §2 «Surface-as-decision-needed» 4-step protocol

Format follows the §3 entry template + existing row precedent (#67-#70).
Last reviewed 2026-05-24. Trigger to revisit: Superpowers ships a
delegation-vs-decision skill; OR /meta-orchestrator §2 scope expands to
autonomous-pick-without-confirmation.

Not a capability commit (docs-only — §4 entry table append; no new dep,
no ≥80 LOC under packages/, no ≥50 LOC under packages/core/<new-dir>/).

Prior-art: skipped — append to existing SSOT register (one row, no new
upstream-tool adoption); the row itself IS the prior-art evidence trail
for an already-shipped BUILD decision.

§1.7: forward-check applied — row format complies with
prior-art-evaluations.md §3 entry template (next-ID 71, all 8 columns
populated, rationale cites round-2 commit d212dae + reviewer-discipline
§2 with file:line); T16 problem-class check explicit per
ai-laziness-traps.md §2 T16 (upstream-class vs our-class enumerated with
match-score). Backward-check sweep — extends existing append-only
register; does not edit prior rows; reviewer-discipline.md §2 path
verified (.claude/rules/reviewer-discipline.md exists, §2 «Surface-as-
decision-needed pattern» at line 17 of that file).

* feat(meta-orchestrator): add globs+inject markers per round-2 Invariant 4

ATTN-2 follow-up from round-2 audit (PR #201, commit d212dae Sub-wave B
Invariant 4 «recommend path-scoped injection via inject-matching-rule.sh
+ globs marker. Follow-up annotation»).

Adds <!-- globs: --> and <!-- inject: --> markers to both SKILL.md copies
(.claude/skills/ runtime + skills/ shipped), targeting:
- .claude/orchestrator-prompts/** (kickoff authoring)
- docs/meta-factory/wave-sequencing-plan.md (wave plan edits)

When extended to scan .claude/skills/*/SKILL.md, the existing
inject-matching-rule.sh hook (today scans .claude/rules/*.md per
rule-enforcement-channel-selection.md §4) will JIT-inject the
meta-orchestrator one-liner reminder on the matched edits — narrowing
discoverability from manual recall to per-edit deterministic injection.

Forward-going annotation: the hook does NOT yet scan skills/ — that is
a separate scope expansion (out of round-2 follow-up scope). Markers are
honest annotation pending that extension; the inject summary itself
carries this status note.

Marker format follows the dogfood precedent in
.claude/rules/rule-enforcement-channel-selection.md (the first repo file
to carry <!-- globs: --> / <!-- inject: --> markers).

500-line gate respected: markers placed without surrounding blank lines
(2-line net addition) so .claude/skills/meta-orchestrator/SKILL.md stays
at 500 lines (the gate limit).

Dual-file annotation per dual-implementation-discipline §7: both copies
get markers so consumer installations (via install.sh) inherit them
unchanged when the consumer-side hook supports skills/ scanning.

Not a capability commit (annotations + comments only — no new dep,
no ≥80 LOC under packages/, no ≥50 LOC under packages/core/<new-dir>/).

Prior-art: skipped — annotation-only addition implementing an already-
shipped round-2 audit recommendation (Invariant 4); no new upstream-tool
adoption (the hook itself is the existing ADAPT of OhMyOpencode
`rulesInjector` per SSOT #61).

§1.7: forward-check applied — markers conform to
rule-enforcement-channel-selection.md §4 grammar (globs subset:
prefix/**, exact path; inject summary self-documenting) verified by
re-reading .claude/hooks/inject-matching-rule.sh:53,69 parsing regex;
dual-file addition complies with dual-implementation-discipline.md §3
(consumer-facing artefact, both copies updated atomically); forward-
going annotation discipline follows rule-enforcement-channel-selection.md
§6 «Existing rules — forward-going, not retroactive». Backward-check
sweep — inline note in inject summary prevents future readers from
assuming markers are active (they activate only on hook extension); does
not modify existing § content, See also entries, or section ordering;
extends but does not supersede prior round-2 Sub-wave B Invariant 4
finding.

* fix(meta-orchestrator): plan-currency-check fetches + cross-checks origin/staging

Gap-2 follow-up from round-2 audit (PR #201, §1.5 «plan-currency-check.sh
не cross-check'ит git log origin/<branch> против локального — пропускает
свежие PR'ы»).

Before this fix the helper relied on whatever local copy of
origin/staging the user happened to have — days stale in long sessions
or after a fresh worktree, making fresh merges since last sync
invisible to the §1 plan-currency check that consumes this output.

Adds a fail-soft `git fetch --quiet origin staging` before the JSON
PR-list queries, then surfaces the count of remote-only commits via
`git rev-list HEAD..origin/staging`. If non-zero, the oneline log of
those commits is printed (capped to 10) as «likely merged PRs since
last local sync» — the explicit fresh-PR detector.

Fail-soft contract: offline / auth-failure / no-network → echoed
warning, helper continues to exit 0 (matches existing graceful-
unavailability pattern for `gh` and `git status` blocks at lines 18 /
30 / 38).

Dual-file: both `skills/meta-orchestrator/helpers/plan-currency-check.sh`
(authoring) and `.claude/skills/meta-orchestrator/helpers/plan-currency-check.sh`
(runtime) updated atomically per dual-implementation-discipline §3.

Smoke test verified: helper runs clean (exit 0), new section integrates
between branch + PR-list blocks, current-branch behaviour confirmed
(0 remote-only when synced, lists oneline when stale).

Not a capability commit (helper enhancement — no new dep, no ≥80 LOC
under packages/, no ≥50 LOC under packages/core/<new-dir>/).

Prior-art: skipped — fix to existing helper (shipped #186, audited
#192/#201) addressing a specific stale-data gap; no new upstream-tool
adoption (git rev-list + git fetch are existing capabilities).

§1.7: forward-check applied — fail-soft fetch complies with
no-paid-llm-in-ci.md §1 (deterministic git ops, no API-billed calls),
dual-implementation-discipline.md §3 (both copies updated atomically;
diff -q reports identical post-patch), ai-laziness-traps.md §2 T3
(no-prose-only findings — smoke test verifies exit 0 + correct output
on current branch state above). Backward-check sweep — addition is
between existing sections (not modifying them); the existing left-right
ahead/behind block at lines 22-23 stays unchanged (it benefits from the
fetch immediately above when re-run); does not modify §1 SKILL.md
consumer logic (helper output remains a superset of prior output —
purely additive section), so SKILL.md §1 read of this helper output is
backward-compatible.

* feat(meta-orchestrator): meta-kickoff template ships worktree setup boilerplate

Gap-3 follow-up from round-2 audit (PR #201, §1.5 «worktree symlink slot
в template — каждый worker re-discovers packages/core/node_modules
symlink discipline»).

Adds §4a «Worker worktree setup» between §4 (dispatch instructions) and
§5 (AI-traps). The slot ships the boilerplate every worker dispatched
into a `git worktree add`-created directory needs as the first session
step, otherwise the worker rediscovers (burning Opus) the workspaces /
remark requirement that `git worktree add` does NOT copy from the
primary workdir.

Detection contract uses `git rev-parse --git-dir != --git-common-dir`
(absolute path vs relative `.git`) — the same probe Superpowers
`using-git-worktrees` uses for its nested-worktree skip, per
`parallel-subwave-isolation.md §4`. Idempotent: the `if` body is a
no-op in the primary workdir; symlinks are created only when missing.

Plumbing reconstituted:
- `node_modules` → symlink to primary's `node_modules` (saves an
  `npm install` cycle inside the worktree)
- `packages/core/node_modules` → symlink to `../../node_modules`
  (workspaces hoisting marker — empirically the load-bearing one)

Dual-file: both `skills/meta-orchestrator/templates/meta-kickoff.template.md`
(authoring) and `.claude/skills/meta-orchestrator/templates/meta-kickoff.template.md`
(runtime) updated atomically per dual-implementation-discipline §3;
diff -q reports identical post-patch.

The slot lives in the template (not the helper), so it travels with
every meta-kickoff generated by `/meta-orchestrator` automatically —
the dispatch instructions {{DISPATCH_INSTRUCTIONS}} are sub-wave-
specific, this is universal worker boilerplate that precedes them.

Not a capability commit (template enhancement — no new dep, no ≥80 LOC
under packages/, no ≥50 LOC under packages/core/<new-dir>/).

Prior-art: skipped — template enhancement closing a §1.5-surfaced gap
in an already-shipped artefact (#186 + #192 + #201); no new upstream-
tool adoption (the worktree-detection probe is ADAPT from upstream
Superpowers `using-git-worktrees`, SSOT #65, already in the register).

§1.7: forward-check applied — slot complies with
no-paid-llm-in-ci.md §1 (pure-git deterministic ops, no API-billed
calls), parallel-subwave-isolation.md §4 (REFERENCE — uses the same
GIT_DIR/GIT_COMMON_DIR worktree-detection pattern Superpowers ships),
dual-implementation-discipline.md §3 (both copies updated atomically),
ai-laziness-traps.md §2 T15 (the slot itself self-applies — it codifies
the boilerplate workers were re-discovering; recursive). Backward-check
sweep — addition is purely additive (new §4a section between existing
§4 and §5; no edits to existing sections); meta-kickoff.template.md
consumers (the launch-table-generator + downstream workers reading the
generated kickoff) see the slot as static text post-template-substitution
— no placeholder logic depends on the slot's absence.
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