feat(meta-orchestrator): skill memory — cache + injection + writer - #236
Merged
Conversation
Adds per-skill cross-invocation memory layer to /meta-orchestrator: session-bound continuity (last priority ranking, surfaced DRIFT, pending DECISION-NEEDED, deferred follow-ups) bridged via a gitignored per-machine markdown cache. Cache is supplementary only — mechanical state (gh pr list, git log, wave-sequencing-plan.md) always wins per SKILL.md §1 Step 2 item 5 + new item 6 cache-reconciliation rule. Deliverables (4): A. .claude/orchestrator-prompts/_plan-cache.md — gitignored cache (helper bootstraps on first invocation; format SSOT lives in helper heredoc). B. .claude/skills/meta-orchestrator/SKILL.md — §1 5th !shell block (cache read at session start), §1 Step 2 item 6 (cache-reconciliation discipline + T-mem-A counter), §10 item 5 (cache-update step at session exit with @dual-pair markers). Detail extracted to references/plan-cache.md to keep SKILL.md focused. Single SSOT per install.sh:233-235. C. .claude/skills/meta-orchestrator/helpers/update-cache.sh — pure-bash writer; updates ONLY ## Last invocation deterministically (round-3 scope per umbrella §1.3 item 4). Paired-negative test in packages/core/hooks/update-cache.test.ts covers fresh-cache creation, idempotent update (manual edits preserved verbatim), malformed-handling (exit 1 + .broken rename), and arg-count boundary (exit 2 + usage). D. docs/meta-factory/wave-sequencing-plan.md §0 — Track P row appended with skill-memory marker + evidence (#227 / #230 / this PR); «What actually remains:» paragraph updated. BFR-default verdict: ADAPT Cline Memory Bank (committed-markdown sub-pattern already registered as SSOT #77 by R-phase PR #230); our adaptation narrows to ONE per-machine gitignored file (vs Cline's 6-file committed hierarchy) scoped to /meta-orchestrator. SSOT #77 is referenced — no duplicate row added (drive-by discipline + BFR-default «no parallel evolution»). Cold-QA Phase -1 (1× Opus, read-only): GO verdict. 1 MAJOR M1 (kickoff AC#7 wording — addressed via PR body explanation) + 2 MINORs (m1 @cc-only-rationale text reframed for consumer-shipped helper; m2 false-positive reviewer T3 — @dual-pair on helper line 26 and heredoc line 68 are markers on functionally different artifacts, not a duplicate). Hard constraints satisfied (with file:line citations): - no-paid-llm-in-ci.md §1: helper is deterministic bash, zero API calls (.claude/skills/meta-orchestrator/helpers/update-cache.sh:48 — set -euo pipefail). - dual-implementation-discipline.md §5: @dual-pair: meta-orchestrator-plan-cache markers on helper (.claude/skills/meta-orchestrator/helpers/update-cache.sh:26), SKILL.md §10 reader (.claude/skills/meta-orchestrator/SKILL.md:432), and references/plan-cache.md (.claude/skills/meta-orchestrator/references/plan-cache.md:9). - doc-authority-hierarchy.md §3: helper carries Class C + Authoritative-for header (.claude/skills/meta-orchestrator/helpers/update-cache.sh:3); references carries full header (.claude/skills/meta-orchestrator/references/plan-cache.md:3). - parallel-subwave-isolation.md §1: built in dedicated worktree. - ai-laziness-traps.md T15: no Worker subagent dispatched for write (single Mode A inline session per umbrella §2). Observation (NOT fixed, drive-by deferred): - .husky/pre-commit:10 carries stale comment «Markdown ≤500 lines» while line 63 was bumped to 600 (maintainer-applied, uncommitted in this PR pending separate maintainer commit on .husky/pre-commit:63). Closes /meta-orchestrator skill-memory umbrella per kickoff .claude/orchestrator-prompts/meta-orchestrator-skill-memory/kickoff.md (meta-launch state.md round-3 GO). §1.7: forward-check applied — no-paid-llm-in-ci.md §1 satisfied at .claude/skills/meta-orchestrator/helpers/update-cache.sh:48 (pure bash, set -euo pipefail); dual-implementation-discipline.md §5 satisfied at .claude/skills/meta-orchestrator/helpers/update-cache.sh:26 + .claude/skills/meta-orchestrator/SKILL.md:432 + .claude/skills/meta-orchestrator/references/plan-cache.md:9 (@dual-pair markers on writer↔reader↔detail); build-first-reuse-default.md §3 satisfied via SSOT #77 (R-phase PR #230 already registered Cline Memory Bank ADAPT); doc-authority-hierarchy.md §3 satisfied at .claude/skills/meta-orchestrator/helpers/update-cache.sh:3 (Class + Authoritative-for header). backward-check sweep — SKILL.md §1 Step 1 EXTENDED at .claude/skills/meta-orchestrator/SKILL.md:55 (cache !shell added as 5th block; existing 4 preserved); SKILL.md §1 Step 2 EXTENDED at .claude/skills/meta-orchestrator/SKILL.md:80 (item 6 added; items 1-5 preserved); SKILL.md §10 EXTENDED at .claude/skills/meta-orchestrator/SKILL.md:432 (item 5 added; items 1-4 preserved); wave-sequencing-plan.md Track-P APPENDED at docs/meta-factory/wave-sequencing-plan.md:28 with skill-memory marker; no existing artefact deleted or rewritten — additive change only. Prior-art: prior-art-evaluations.md#77 (Cline Memory Bank — ADAPT verdict already registered by R-phase PR #230 «ADOPT Direction B — shadow cache file with @dual-pair annotation»; this I-phase ships the Direction B mechanism with one further scope-reduction — per-machine gitignored vs committed-in-repo. Falsifier from kickoff §0 satisfied: DeepWiki + WebSearch confirm cline/cline as closest precedent, already captured by row #77.)
…y/pre-commit bump for skill-memory umbrella)
This was referenced May 26, 2026
Merged
Merged
This was referenced Jun 3, 2026
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>
8 tasks
artyhoo
added a commit
that referenced
this pull request
Aug 10, 2026
…provenance repair (principle-11 F1 staging red) (#1375) ## Summary Two concerns, one invited scope: (1) NEW project skill `.claude/skills/reviewer/SKILL.md` — the interactive review-session protocol, until now living only in the operator's personal `~/.claude/commands/reviewer.md` where repo machinery cannot see or update it (the #1374 severity-contract change had to be hand-patched into it the same day — the incident this closes; in-repo, a project skill takes precedence over the same-named personal command per the documented skill-over-command rule). (2) SSOT entry #249 — provenance repair for `.claude/rules/effort-worthiness.md`: principle 11 F1 is red on staging because the #1374 squash rebuilt the introducing commit from a PR body that omitted the `Prior-art:` line (the #1094→#1097 class); the verbatim-path SSOT match fixes F1 for every subsequent PR. ## Changes - NEW `.claude/skills/reviewer/SKILL.md`: three modes + verification-vs-synthesis economy split adapted 1:1 from the operator command; verdict grammar bound to `reviewer-discipline.md` §6 (Failure-scenario, ESCALATED, notes lane, zero-finding legitimacy); explicit subordination to the cold agents it does not replace and an explicit not-a-registry-role note (seat-lifecycle.md §1 three-roles cut respected — no seat-lifecycle edit). - `.claude/skills/arch/SKILL.md:91`: stale «pending as of 2026-08-10» claim about the operator's global `/reviewer` resolved (hand-apply done same day; in-repo invocations now load the project skill). - `docs/meta-factory/prior-art-evaluations.md`: entry #249 (REFERENCE) — registers the §8 item-5 per-family consult (Conventional Comments, Google eng-practices, Bezos Type-1/2, CBR, WIP limits, ADR/spec-kit/Kiro) already folded into the rule's §4, and records the detector-disagreement root cause (pr-body-prior-art's diff detector calls new rule-markdown non-capability while F1 counts it) with a widening trigger. - Deliberately NOT changed: `setup.d/10-skills.sh` — consumer delivery of the reviewer skill is routed to advisor-pattern §8 item 9 (consumer-delivery stage with its own review), with an env+ tier recommendation (pairs with arch/pipeline at that profile). ## Prior-art consult Prior-art: skipped — project-internal interactive-review skill adapting the operator's own global /reviewer command into the repo; subordinates to reviewer-discipline.md §6 (severity contract SSOT) and to the cold agents it does not replace; no new capability, no packages/ code - [x] PR range is non-capability (one new skill markdown + one SSOT row + one line edit; zero `packages/` files, zero dependency changes); the trailer line above is carried in the PR body so it survives the squash into the introducing commit (the exact #1094→#1097 / #1374 lesson this PR also repairs). - [x] SSOT touch: entry #249 appended (append-only register; capability-commit-author write access per the ownership table). - [x] Cold `agents/capability-reuse-auditor.md` pass run before handoff (source-before-shape Layer B): verdict THIN-ADAPT → GO, 12-candidate overlap set, trailer↔body consistent per clause; its one notes-lane finding (sibling §6 digest cross-pointer) applied in-branch. ## Test plan - [x] §1.7-свод lands in squash-body (`gh pr merge --squash --body "$(gh pr view <N> --json body -q .body)"`) - [x] `npm run --prefix packages/core test:principles` — 41 files green locally after #249 (principle 11 F1 was the one red: 14/14 after; principles 09/14/15 cover the new skill dynamically, 46/46) - [x] `bash scripts/check-skill-drift.sh` — PASS (0 errors); doc-authority hook smoke on the new file — exit 0 - [x] Pre-push full substance sweep green at push time - [x] Manual smoke: `.claude/skills/reviewer/SKILL.md` paired-negative sections present (`## Without this skill` / `## With this skill`); frontmatter description carries concrete RU+EN triggers per skill-description-quality.md §2 ## Provenance n/a — dialog-invited repo-skill addition + CI-red repair; no stage kickoff, no dispatch substrate. ## Review findings Cold capability-reuse-audit (agents/capability-reuse-auditor.md, dialogue-blind on the just-authored file + intended trailer): verdict THIN-ADAPT, overall GO. Overlap set = 12 candidates (SSOT #64/#231/#236/#249 + aif-review family; skills/agents siblings; upstream Superpowers requesting-code-review + SDD). Key clears: the PR #858 class does not recur (the SDD executor/dual-reviewer loop is not re-described; spawning subagents without approval is forbidden by the skill's Hard bounds); subordination lines verified per file:line for all four owners named in the header. One notes-lane finding, fixed same round per the §6 contract: the repo now holds two §6 digests (this skill + agents/reviewer-discipline.md) — a cross-pointer with a drift rule was added to the skill's See also. Coverage honestly partial (headers-only for the non-overlapping skill/agent tail; effort-worthiness.md body unread by the auditor). ## Fidelity verdict FIDELITY: skipped — dialog-invited non-stage PR (repo-skill addition + staging F1 repair); no kickoff/spec basis to audit against; cold reuse-audit GO recorded under Review findings. ## Parked questions - Consumer tier for the reviewer skill: recommendation env+ (contour surface, pairs with arch/pipeline in setup.d/10-skills.sh:120-122); decision + consumer-generic rewording (the skill's Origin references the operator's home path) belong to advisor-pattern §8 item 9 — recorded in the memory card as an item-9 input. - SSOT #249's «Trigger to revisit» carries the detector-widening trigger: a second squash-trailer F1 incident → widen pr-body-prior-art's detector to F1's artifact classes (rule/skill/agent markdown). ## §1.7 Self-discipline check (REQUIRED if PR touches discipline-bearing files) ### §1.7 Forward-check applied New skill checked against every active layer: channel selection per rule-enforcement-channel-selection.md — on-demand skill load at the review-ask trigger, not always-on (description triggers per skill-description-quality.md §2, RU+EN); doc-authority header present with subordination lines (principle 09 dynamic skill enumerator green, packages/core/principles/09-doc-authority-hierarchy.test.ts); paired-negative sections present per packages/core/principles/15-skill-paired-negative.test.ts:50; provenance per principle 11 F1 — the `Prior-art:` trailer lives in this PR body (squash-safe) AND the artifact has SSOT keyword coverage, while the F1 red this PR repairs is closed by the verbatim path in docs/meta-factory/prior-art-evaluations.md entry #249; language-discipline — repo artifact in English; seat-lifecycle NOT extended — the three-roles cut at .claude/rules/seat-lifecycle.md:42 is respected by an explicit not-a-registry-role subordination line instead of a paths: edit; source-before-shape §1 — SSOT + .claude/skills/ + agents/ grepped before the body was written, and Layer B (agents/capability-reuse-auditor.md) run before handoff with verdict THIN-ADAPT/GO. ### §1.7 Backward-check applied Class = artifacts carrying the interactive-reviewer protocol or a §6 severity-contract digest. Surfaces enumerated (grep over .claude/skills/**, agents/**, setup.d/, plus the out-of-repo command): ~/.claude/commands/reviewer.md — out-of-repo sibling, hand-patched to §6 grammar 2026-08-10, now shadowed in-repo by this skill (skill-over-command precedence), SWEPT-CLEAN; agents/reviewer-discipline.md:37 — sibling run-moment §6 digest, GAP-FOUND (no cross-link between the two digests) → FIXED this PR (See-also drift rule in .claude/skills/reviewer/SKILL.md); .claude/skills/arch/SKILL.md:91 — stale «pending» claim about the global command, GAP-FOUND → FIXED this PR; .claude/rules/reviewer-discipline.md:56 — the operating SSOT itself, untouched by design (both digests subordinate to it); packages/core/templates/shared/skill-context/aif-review/SKILL.md + aif-orchestrator-discipline — shipped consumer surfaces, deliberately DEFERRED to advisor-pattern §8 item 9 (never a silent copy; ownership-table read-only for sessions); setup.d/10-skills.sh:108-127 — the delivery manifest, deliberately untouched, tier decision recorded as an item-9 input. No other surface in the class (agents/fidelity-auditor.md + agents/review-sidecar.md carry the cold-protocol grammar shipped by #1374, different altitude, already current).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds per-skill cross-invocation memory layer to
/meta-orchestrator— session-bound continuity (last priority ranking, surfaced DRIFT, pending DECISION-NEEDED, deferred follow-ups) bridged via a gitignored per-machine markdown cache. Cache is supplementary only — mechanical state (gh pr list,git log,wave-sequencing-plan.md) always wins per SKILL.md §1 Step 2 item 5 + new item 6 cache-reconciliation rule.Deliverables (4)
.claude/orchestrator-prompts/_plan-cache.mdgitignored cache (bootstrapped by helper on first invocation; format SSOT lives in helper heredoc).claude/skills/meta-orchestrator/SKILL.md§1 5th!shellblock (read at session start) + §1 Step 2 item 6 (cache-reconciliation discipline + T-mem-A counter) + §10 item 5 (cache-update step at session exit with@dual-pairmarkers); detail extracted toreferences/plan-cache.mdto keep SKILL.md focused; single SSOT perinstall.sh:233-235.claude/skills/meta-orchestrator/helpers/update-cache.shpure-bash writer; updates ONLY## Last invocationdeterministically (round-3 scope per umbrella §1.3 item 4); other sections populated by directEditbefore invocation. Companion test inpackages/core/hooks/update-cache.test.ts(4/4 paired-negative green: fresh-cache creation, idempotent update, malformed-handling exit 1 +.brokenrename, arg-count boundary exit 2)docs/meta-factory/wave-sequencing-plan.md§0 Track-P row appended withskill-memorymarker + evidence (research(meta-orchestrator): brainstorm — plan-memory feasibility + 2 design directions #227 / research(plan-memory-rphase): ADOPT Direction B — shadow cache file with @dual-pair annotation #230 / this PR); «What actually remains:» paragraph updatedBFR-default verdict
ADAPT Cline Memory Bank (committed-markdown sub-pattern). SSOT #77 already registered by R-phase PR #230. No duplicate SSOT row added in this commit — drive-by discipline + BFR-default «no parallel evolution». Our adaptation narrows Cline's 6-file committed hierarchy to ONE per-machine gitignored file scoped to
/meta-orchestrator. Cold-QA M1 noted that umbrella kickoff §3 AC#7 literally says «adds new SSOT row»; the spec is preempted by R-phase #230 having already shipped #77 — this PR honors the intent (Cline ADAPT is documented in SSOT) without duplicating.§1.7 Forward-check applied
This PR was checked against active disciplines that govern its surface:
no-paid-llm-in-ci.md §1— helper is deterministic bash, zero API-billed calls. file:line:.claude/skills/meta-orchestrator/helpers/update-cache.sh:48(set -euo pipefail)dual-implementation-discipline.md §5—@dual-pair: meta-orchestrator-plan-cachemarkers on helper writer ↔ SKILL.md §10 reader ↔references/plan-cache.md. file:line:.claude/skills/meta-orchestrator/helpers/update-cache.sh:26+.claude/skills/meta-orchestrator/SKILL.md:432+.claude/skills/meta-orchestrator/references/plan-cache.md:9build-first-reuse-default.md §3— ADAPT Cline Memory Bank per umbrella §0 BFR verdict; SSOT docs(research): cross-worktree gitignored coord-doc sync — verdict ADAPT #77 (already registered by R-phase research(plan-memory-rphase): ADOPT Direction B — shadow cache file with @dual-pair annotation #230) referenced in commit trailerdoc-authority-hierarchy.md §3— helper carries Class C + Authoritative-for inline comment header at.claude/skills/meta-orchestrator/helpers/update-cache.sh:3;references/plan-cache.md:3carries full markdown headerparallel-subwave-isolation.md §1— built in dedicated worktree../rules-as-tests-aif-skill-memoryper umbrella §2§1.7 Backward-check applied
This PR sweeps existing artefacts in scope for additive-vs-supersede check:
.claude/skills/meta-orchestrator/SKILL.md §1 Step 1— EXTENDED (cache!shellblock added as 5th block; existing 4 blocks preserved verbatim). file:line:.claude/skills/meta-orchestrator/SKILL.md:55.claude/skills/meta-orchestrator/SKILL.md §1 Step 2— EXTENDED (item 6 added; existing items 1-5 preserved verbatim). file:line:.claude/skills/meta-orchestrator/SKILL.md:80.claude/skills/meta-orchestrator/SKILL.md §10— EXTENDED (item 5 added; existing items 1-4 preserved verbatim). file:line:.claude/skills/meta-orchestrator/SKILL.md:432docs/meta-factory/wave-sequencing-plan.mdTrack P row — APPENDED (existing schema preserved; skill-memory marker added). file:line:docs/meta-factory/wave-sequencing-plan.md:28.husky/pre-commit:10carries stale comment «Markdown ≤500 lines» while line 63 was bumped to 600. Suggest a separate 1-line maintainer commit to align comment with gatePre-merge action —
.husky/pre-commitcap bump (maintainer-owned)🟡 Required before merge: the markdown line-cap was bumped 500→600 in
.husky/pre-commit:63-64by maintainer manual edit (both primary/Users/art/code/rules-as-tests-aif/.husky/pre-commitand worktree copies). The bump is NOT included in this PR's commits (auto-mode classifier correctly blocked the agent from committing maintainer-owned enforcement file content). The worktree copy ismodified, not staged. Without a separate maintainer commit for this bump, post-merge the cap will revert to 500 and the next size-touching PR will fail at pre-commit. Suggested commit from maintainer:chore(husky): bump markdown cap 500→600 for skill-memory umbrella.Test plan
npx vitest run packages/core/hooks/update-cache.test.ts) — verified: vitest output 4/4 passed, 263ms/tmpsandbox per cold-QA AC#3) — verified: bash invocation@cc-only-rationaletext reframed; m2 false-positive —@dual-pairon helper:26 and helper:68 are markers on functionally different artifacts) — verified: Opus reviewer session 2026-05-25.husky/pre-commitcap bump committed by maintainer — owner: maintainer (separate commit on this PR branch)/meta-orchestratorinvocation должен показать «cache loaded: » вверху отчёта — owner: maintainer (runtime verification post-merge)