Skip to content

feat(meta-orchestrator): tri-layer classifier L2 jaccard REUSE + L3 done.md convention - #274

Merged
artyhoo merged 1 commit into
stagingfrom
feat/meta-orch-no-arg-overview-s2-extend
May 29, 2026
Merged

feat(meta-orchestrator): tri-layer classifier L2 jaccard REUSE + L3 done.md convention#274
artyhoo merged 1 commit into
stagingfrom
feat/meta-orch-no-arg-overview-s2-extend

Conversation

@artyhoo

@artyhoo artyhoo commented May 29, 2026

Copy link
Copy Markdown
Owner

Summary

Stage 2-extend of meta-orch-no-arg-overview umbrella: tri-layer umbrella-completion classifier extends L1 branch-matcher (#272) with Layer C2 jaccard REUSE + Layer C3 done.md convention. Closes the §1.5c empirical 13% branch-match coverage gap surfaced in PR #273 §4 verdict.

  • L2 (C2): REUSE jaccard from dup-detect.sh:62 via sub-shell call — adds ~4% additional coverage per §4 estimate
  • L3 (C3): NEW committed done.md per umbrella — ADAPT Cline Memory Bank pattern (SSOT docs(research): cross-worktree gitignored coord-doc sync — verdict ADAPT #77, ~85% match on storage sub-pattern)
  • CLAUDE.md «Umbrella closure convention» section codifies done.md schema + write-trigger
  • Paired-negative test (6 cases) under packages/core/hooks/done-md-completion-filter.test.ts
  • Naming: existing "L1 extension" synthetic-candidate comments renamed to "synthetic-candidate extension" to prevent reader confusion with new completion-detection layers C1/C2/C3

Backed by PR #273 §4 binding verdict (multi-signal classifier confirmed; §0.5 falsifier P2 closed for multi-signal interpretation). dup-detect.sh NOT modified (Stage-4-owned per §6 Option B — Stage 2 calls it via sub-shell only).

§1.7 Forward-check applied

§1.7 Backward-check applied

  • priority-score.sh C1 branch-matcher from feat(meta-orchestrator): branch-matcher для umbrella completion #272 preserved verbatim as completion-detection Layer C1; C2 + C3 are ADDITIVE filters layered after. file:line: .claude/skills/meta-orchestrator/helpers/priority-score.sh:158 (C1 block start: «completion Layer C1 — branch-prefix match»).
  • dup-detect.sh NOT modified — called via sub-shell (approach a) from priority-score.sh:109; dup-detect.sh callers unaffected (verified: grep -rn 'dup-detect.sh' .claude/skills/ shows SKILL.md:173 unchanged). file:line: .claude/skills/meta-orchestrator/helpers/dup-detect.sh:62 (jaccard source, untouched).
  • CLAUDE.md «Umbrella closure convention» is a NEW section — no existing convention superseded. file:line: CLAUDE.md:102 (new section; existing PR-strategy / build-vs-reuse / Artifact Ownership sections verbatim preserved at lines 87/18/68).
  • Existing tests dup-detect-empty-arg.test.ts (feat(meta-orchestrator): Stage 4 P4 fix — bash-quoted helper invocations + dup-detect empty-arg #266) + priority-score-branch-matcher.test.ts (feat(meta-orchestrator): branch-matcher для umbrella completion #272) untouched — new test is separate file. file:line: packages/core/hooks/done-md-completion-filter.test.ts:1 (new file; does not modify existing tests).
  • Cline SSOT docs(research): cross-worktree gitignored coord-doc sync — verdict ADAPT #77 T16 problem-class check: upstream class = committed-markdown for AI session memory across turns (Memory Bank progress.md/activeContext.md); ours = umbrella closure marker (single done.md per umbrella, machine-readable schema, written at last-stage merge). Match: ~85% on storage pattern (committed markdown as load-bearing state); diverges on update trigger (Cline = on-demand AI-signalled, ours = explicit at-merge convention). ADAPT verdict preserved from SSOT row docs(research): cross-worktree gitignored coord-doc sync — verdict ADAPT #77. file:line: docs/meta-factory/prior-art-evaluations.md:145.
  • done.md NOT written for this umbrella — Stage 3 still pending; recursive T15 validation deferred until full umbrella closure per kickoff §2 stage table.
  • "L1 extension" in synthetic-candidate section renamed to "synthetic-candidate extension" at priority-score.sh:35,207 to prevent naming collision with completion-detection layers. Narrow scope comment-rename; no logic changed.

Test plan

  • npm run typecheck green (all workspaces)
  • npm test — 1 pre-existing failure on staging (hooks/pre-push.test.ts — unrelated to this PR; verified pre-existing via git stash before/after comparison); all other tests pass including new 6-case test
  • New paired-negative test passes — 6 cases (C2±, C3±, combined, all-fail)
  • L1 paired-negative test (feat(meta-orchestrator): branch-matcher для umbrella completion #272) still passes — preserved verbatim (5/5)
  • dup-detect.sh tests unchanged + passing (14/14: dup-detect.test.ts + dup-detect-empty-arg.test.ts)
  • All 21 principle tests pass
  • CLAUDE.md edit landed; new section follows doc-authority-hierarchy header format
  • (deferred) done.md NOT written for this umbrella — Stage 3 still pending; recursive T15 validation at full umbrella closure

… done.md convention

Prior-art: REUSE dup-detect.sh jaccard logic (sub-shell call, extends #272 L1 branch-matcher; helpers/dup-detect.sh:62 untouched — Stage-4-owned per §6 Option B); ADAPT Cline Memory Bank committed-markdown pattern (prior-art-evaluations.md:145 SSOT #77, ~85% match on storage sub-pattern) for done.md convention; backed by #273 §4 binding verdict + §1.5c empirical 13% branch-match finding
@artyhoo
artyhoo merged commit 08d0282 into staging May 29, 2026
25 checks passed
artyhoo added a commit that referenced this pull request May 29, 2026
… markers + no-arg overview + integer-arg top-N (#277)

Per #273 §3 binding verdicts (Stage 3 I-phase, meta-orch-no-arg-overview umbrella):
- V1 arg-parser disambiguation: regex ^[0-9]+$ + pre-invocation guard (SKILL.md §0).
- V2 parallelism-signal DECLARATIVE: kickoff §2 Parallel-with column → launch-table Parallel sibling + V3 overview markers (SKILL.md §3, ADAPT SSOT #68 OhMyOpencode Wave N).
- V3 no-arg overview format: new ## §1A in output-format.md, Wave-style grouping, zero principle-18 churn (5/5 tests pass).
- V4 integer-arg semantics: top-N after §2.5 completion-filter consuming #274 tri-layer matcher; N=0→V3, N>candidates→warn-and-emit, N=1=existing winner path (SKILL.md §2 Step 5).

§1.7: forward-check applied — build-first-reuse-default §3 (V2 ADAPT SSOT #68, V3/V4 consume #274 tri-layer), phase-research-coverage §1.12 (every verdict backed by #273 §3 text), no-paid-llm-in-ci §1 (pure bash regex + markdown), doc-authority-hierarchy §3 (headers preserved), ai-laziness-traps T20 (pre-invocation guard tool-call backed); backward-check sweep — SKILL.md §0/§1/§2 existing flow preserved (V1 routes added ABOVE With-arg paragraph, V4 Step 5 added BEFORE §7.14 footer), output-format.md §1 F.3 dispatch format preserved verbatim (V3 SIBLING §1A added between §1 and §2), all 21 principle tests green (153 passed/4 skipped/0 failed), principle 18 zero-churn verified before push, Stage 2-extend #274 tri-layer (priority-score.sh:154-188 C1/C2/C3) CONSUMED by V4 top-N filter as documented downstream dependency.

Prior-art: implementation per #273 §3 binding verdicts; V2 ADAPT SSOT #68 (OhMyOpencode Atlas/Prometheus declarative Wave N parallelism precedent); V3/V4 consume #274 tri-layer completion-filter (C1 branch / C2 jaccard / C3 done.md).
artyhoo added a commit that referenced this pull request May 29, 2026
…itted-marker convention (#278)

Two-part atomic commit:

1. .gitignore exception for done.md — the «Umbrella closure convention» introduced
   in #274 (CLAUDE.md) specifies path .claude/orchestrator-prompts/<umbrella>/done.md
   and claims «ADAPT Cline Memory Bank committed-markdown sub-pattern (SSOT #77)»,
   but .gitignore:7 ignores .claude/orchestrator-prompts/* — done.md cannot land
   without an exception. Adds 3-line nested-unignore: re-include subdirs, ignore
   their contents, exception for done.md. Verified via `git check-ignore`:
   done.md → exit 0 matched by negation rule; kickoff.md → still ignored.

2. done.md for meta-orch-no-arg-overview — recursive self-application of the
   closure convention on the umbrella that introduced it. Summary cites all 7
   PRs of the umbrella (#264 probe / #266 P4 / #270 wave-plan §0 / #272 L1 /
   #273 R-phase verdicts / #274 L2+L3 + convention / #277 V1-V4 UX).

Phase -1 self-criticism: this BLOCKER was not caught in my Phase -1 review of
#274 (orchestrator session 2026-05-29). Future Phase -1 reviewer dimension
needed: «cross-reference new-file paths against .gitignore».

Prior-art: skipped — closure marker + .gitignore exception per existing convention; no new capability
artyhoo added a commit that referenced this pull request May 29, 2026
…-substituted template

SKILL.md:523 used ```! (executable) fence around a code block that contains
`<placeholder>` literals the rendering AI is supposed to substitute BEFORE
invocation (per the prose immediately above the block at line 521). The
executable fence caused CC's auto-mode permission classifier to reject the
literal template at recursive acceptance test of the meta-orch-no-arg-overview
umbrella (2026-05-29):

  Permission denied by auto-mode classifier. Reason: Command contains unfilled
  placeholder literals — running with unresolved template tokens has
  unverifiable effects on state files.

Fix: change fence to ```bash (non-executable, AI uses as template + makes a
separate Bash tool call with substituted values). Zero-LOC net change at the
file scope (single fence character replaced); existing prose at line 521
already explains the substitution semantics, no NOTE needed.

Pre-existing since F.3 helper-collapse PR #263 (2026-05-28); not Stage 3 work
in #277 — surfaced only at recursive acceptance test of meta-orch-no-arg-overview
post-#278.

Phase -1 self-criticism: a reviewer dimension is needed — «scan !-blocks for
unsubstituted <placeholder> literals before approving SKILL.md edits». Both the
F.3 review and Phase -1 reviews of #274/#277 missed this; incident counter 1/3
toward codifying the dimension in ~/.claude/skills/orchestrator/SKILL.md.

Prior-art: skipped — single-fence type swap, no new capability introduced
artyhoo added a commit that referenced this pull request May 29, 2026
…-substituted template (#280)

SKILL.md:523 used ```! (executable) fence around a code block that contains
`<placeholder>` literals the rendering AI is supposed to substitute BEFORE
invocation (per the prose immediately above the block at line 521). The
executable fence caused CC's auto-mode permission classifier to reject the
literal template at recursive acceptance test of the meta-orch-no-arg-overview
umbrella (2026-05-29):

  Permission denied by auto-mode classifier. Reason: Command contains unfilled
  placeholder literals — running with unresolved template tokens has
  unverifiable effects on state files.

Fix: change fence to ```bash (non-executable, AI uses as template + makes a
separate Bash tool call with substituted values). Zero-LOC net change at the
file scope (single fence character replaced); existing prose at line 521
already explains the substitution semantics, no NOTE needed.

Pre-existing since F.3 helper-collapse PR #263 (2026-05-28); not Stage 3 work
in #277 — surfaced only at recursive acceptance test of meta-orch-no-arg-overview
post-#278.

Phase -1 self-criticism: a reviewer dimension is needed — «scan !-blocks for
unsubstituted <placeholder> literals before approving SKILL.md edits». Both the
F.3 review and Phase -1 reviews of #274/#277 missed this; incident counter 1/3
toward codifying the dimension in ~/.claude/skills/orchestrator/SKILL.md.

Prior-art: skipped — single-fence type swap, no new capability introduced
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