Skip to content

docs(research): cross-worktree gitignored coord-doc sync — verdict ADAPT - #77

Merged
artyhoo merged 1 commit into
mainfrom
research/cross-worktree-coord-sync-2026-05-17
May 20, 2026
Merged

docs(research): cross-worktree gitignored coord-doc sync — verdict ADAPT#77
artyhoo merged 1 commit into
mainfrom
research/cross-worktree-coord-sync-2026-05-17

Conversation

@artyhoo

@artyhoo artyhoo commented May 20, 2026

Copy link
Copy Markdown
Owner

Summary

Research-patch for the recurring gitignored coordination-doc drift problem: .claude/orchestrator-prompts/** is gitignored by design, so each git worktree holds an independent copy of post-1a-coordination/kickoff.md and other coordination docs. SSOT edit in one worktree is invisible to the others (incident 2026-05-17 after PR #71 cleanup: 3 worktrees retained stale Item 0).

Item 2.5 per session-ordering §3.6. Standalone (verified not in companion-integration-analysis Item 3 scope). Research only — no implementation.

Verdict

ADAPT — symlink-to-canonical (not BUILD). ≥3 production candidates exist (git's own guidance, worktree-env-sync, worktree.linkFiles proposal) so the §7 BUILD-default stop-rule did not fire. Copy-at-creation tools (highest name-match) only REFERENCE'd — T-coord-A trap: they copy → diverge; we need live sync.

Maintainer-decision items (ATTN — none block the verdict)

  1. Canonical location: ~/.claude-coordination/<project>/ (default) vs $GIT_COMMON_DIR/
  2. Symlink granularity: per-subdir vs one _shared/ subdir
  3. .claude/orchestrator-prompts/README.md is tracked → must NOT symlink the whole dir; carve it out
  4. Migration "which worktree is canonical?" needs a human glance
  5. Land SSOT chore(wave-8): closeout — Gate 5 re-arm + §13.31 re-add + Wave 8 retro + H8 distillation #48 (drafted in patch §9.4) with the eventual implementation commit

Notes

  • Branch based on 4307ac7 (main was locked by another worktree at push time); clean single-file add — no merge conflict against current main.
  • Self-application meta-finding (patch §8): R-phase kickoffs are themselves gitignored-absent from their own fresh worktrees → members of the population the fix must cover.

§1.7 Forward-check applied

Recommendation checked against existing disciplines (full detail in patch §6, each with file:line):

  • build-first-reuse-default — resolves via 7-verdict typology, lands ADAPT not reflexive BUILD; §3 mechanism executed (.claude/rules/build-first-reuse-default.md §2 lines 21-30, §3 lines 48-58).
  • parallel-subwave-isolation — shares only gitignored scratch, never touches .git/index/HEAD/tracked files (.claude/rules/parallel-subwave-isolation.md §1 lines 21-37).
  • no-paid-llm-in-ci — symlink + ≤30 LOC deterministic bash, zero API calls (.claude/rules/no-paid-llm-in-ci.md §1, §5).
  • dual-implementation-discipline — helper internal-only → CC-native default honoured (.claude/rules/dual-implementation-discipline.md §3, §6).

§1.7 Backward-check applied

Complete sweep of in-scope artefacts (full detail in patch §7, file:line each):

  • 4 live worktrees (enumerated via git worktree list) — complete population, all require migration; none exempt.
  • Tracked exception .claude/orchestrator-prompts/README.md (git ls-files returns exactly this path) — explicitly carved out (patch §5 wrinkle).
  • 5 hooks under .claude/hooks/ swept — none perform sync, no conflict, no regression surface (.gitignore:2 defines the scope boundary).

…APT (symlink-to-canonical)

R-phase deliverable for the gitignored-coordination-doc drift problem
(.claude/orchestrator-prompts/** per-worktree copies diverge on edit).

Search-coverage executed: SSOT consult (no match; near-neighbours #27/#28/#44
rejected on problem-class), DeepWiki x3 (git/git, superpowers, git-worktree.nvim),
WebSearch x3, internal sweep. 8 candidates enumerated across copy/symlink/hardlink/
relocate/un-gitignore semantics; per-candidate verdict via build-first-reuse-default
§2 typology.

Recommendation: ADAPT symlink-to-canonical (b)+(e) — proven by worktree-env-sync +
worktree.linkFiles proposal; copy-at-creation tools (git-worktreeinclude/
git-worktree-runner) REFERENCE'd only (T-coord-A: name-match, wrong problem class —
they copy, we need live sync). <=30 LOC harness-agnostic helper sketch. Zero LLM,
no daemon, no CI surface.

§1.7 forward+backward checks applied; T15 self-application surfaced the recursion
that this R-phase's own kickoff was gitignored-absent from its fresh worktree.

Prior-art: skipped — research-patch only, no new capability shipped (deliverable is one tracked markdown analysis file under docs/meta-factory/research-patches/).
@artyhoo
artyhoo merged commit 2f89e71 into main May 20, 2026
17 checks passed
@artyhoo
artyhoo deleted the research/cross-worktree-coord-sync-2026-05-17 branch May 22, 2026 18:10
artyhoo added a commit that referenced this pull request May 25, 2026
…ith @dual-pair annotation (#230)

* research(plan-memory-rphase): ADOPT Direction B — shadow cache file with @dual-pair annotation

R-phase verdict for meta-orchestrator-plan-memory-rphase umbrella.
Answers Q1–Q8 with command/file:line/DeepWiki evidence. Runs §3 prior-art
extension on 4 deferred items (AIF /aif-evolve, state.md measurement,
Tier-1 sweep, 6-item Superpowers negative-claim coverage). Commits to
ADOPT Direction B: shadow cache file (.claude/orchestrator-prompts/_plan-cache.md),
committed markdown, deterministic auto-update on every /meta-orchestrator
invocation via existing !shell injection, @dual-pair annotation for drift
check. Direction A (extend wave-sequencing-plan.md §0 in-place) blocked by
HIGH blast radius (Q1: 1,125-char rows, 6–8 non-unique fragments) and
concurrent-session race risk (Q3: 19 commits in 90 days). All 5 falsifiers
checked; none fire (Q4: ~90s avg > 5s threshold; §6.2: 85+ UNTRACKED > ≤5;
§6.3: 63 kickoffs > ≤4). SSOT row #77 appended: Cline Memory Bank
committed-markdown sub-pattern, ADAPT (~85% match on storage format;
REJECT on-demand update trigger). T15: Track row admission declared for
I-phase shipping PR.

Prior-art: prior-art-evaluations.md#77 (Cline Memory Bank committed-markdown sub-pattern, ADAPT — Direction B shadow cache file adopts committed-markdown storage, rejects on-demand update trigger in favour of deterministic auto-update on every invocation)

* fix(plan-memory-rphase): add missing scope annotation to research patch

Principle 10 requires <!-- scope:<slug> --> on first line of every
research patch. The patch 2026-05-25-plan-memory-rphase.md was missing
this annotation; pre-push hook caught the violation.

Prior-art: skipped — single-line annotation fix, no new capability
artyhoo added a commit that referenced this pull request May 28, 2026
… consolidation + F.6 self-contained rationale

Two of three MINOR findings from PR #261 Phase -1 cold-review applied (the third — SSOT #20 line-citation gap — was a false-positive; #20 already cites :L88 at patch:79 identical to peer rows).

MINOR #1 (#ai-traps-section-fragmented) — added new §4.5 "AI-traps applied (canonical + domain-specific)" consolidating the T-trap enumeration that was previously fragmented inline at §4 §1.7 line 333. Each T-number now names the specific action in this R-phase that honours it (T1 sampling floor=5 → §1.4 enumerated all 84 SSOT rows; T3 → file:line + verbatim excerpts at lines 140-143/87/93-95/101-105/109-113; etc.). T-N1/T-N2/T-N3/T-N4 listed with their honouring action too. The prior inline mention at §4 §1.7 line 333 now points forward to §4.5.

MINOR #3 (#f6-supplementary-rationale-relies-on-matrix-jump) — added "Supplementary, not subsumed by F.3 (self-contained statement)" paragraph at end of F.6 section. Now self-contained explanation: F.3-without-F.6 = Bug #3 fixed by side-effect but latent landmines remain; F.6-without-F.3 = Bugs #2/#4 unfixed → REJECT; combined F.3+F.6 = defence in depth on Bug #3. Reader no longer needs to jump to coverage matrix at lines 297-307 to understand why F.6 is additive not replacement.

MINOR #2 dropped — reviewer misread: #20 citation has explicit ":L88" line ref identical to peer rows (#9/#43/#68/#77). Verified at patch:79.

Prior-art: skipped — markdown polish on a research-patch; no new capability; per CLAUDE.md "Refactors, doc edits, test additions for existing capabilities ... NOT capability commits."
artyhoo added a commit that referenced this pull request May 29, 2026
… done.md convention (#274)

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 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 Jun 14, 2026
…DAPT option 1 (#518)

R-phase deliverable. Kickoffs are gitignored + live in a per-machine coordination
store → invisible cross-machine. Verified gap by running helpers: host 140
kickoff=exists vs fresh `git archive` checkout 0 (all 68 visible dirs are committed-
done.md only). Root cause = lifecycle misclassification: kickoff was never git-tracked
(0 commits all-branches) and grouped with node_modules/logs since the first .gitignore.

Verdict ADAPT → option 1 (commit kickoff.md, joins done.md tracked-exception),
maintainer-authorized 2026-06-14. Concerns resolved: install.sh ships no
orchestrator-prompts (no consumer leak); public repo already carries 153 research-
patches + 26 retros of the same category. I-phase sketch D1-D6 incl. back-catalog
secret-scan + fail-loud pre-push enforcement. Externally validated: Cline Memory Bank
(SSOT #77) + claude-task-master commit durable task state to git.

Prior-art: skipped — research-patch only, no new capability; ADAPT verdict reuses done.md tracked-exception + Cline SSOT #77 + Task Master patterns, zero code/dep added.
artyhoo added a commit that referenced this pull request Jun 16, 2026
… umbrella closures (28 false-opens cleared) (#561)

* fix(pipeline): C3 counts done.md existence as DONE even with 'Final PR: n/a'

priority-score.sh completion-detector C3 only tagged DONE when it parsed a numeric
'- Final PR: #<num>'. Stale/superseded closures from the 2026-06-05 sweep carry
'- Final PR: n/a', so ~10 already-closed umbrellas stayed false-open. done.md existence
alone proves closure (ADAPT Cline #77); tag done_pr=n/a so the filter drops them.
Regression test: done-md-completion-filter Case 3b (n/a done.md -> status=DONE).

* chore(orchestrator): close 18 verified historical umbrellas — done.md backfill (closure-sweep 2026-06-16)

Each done.md cites its verified closing PR (branch/title-confirmed, false matches dropped):
guard-liveness cluster (#458/#460/#463/#475/#476/#489), dispatcher-skill #403, dispatcher-ux #407,
goal-drift-audit #433, narrow-b-benchmark #210, defer-reflex-detection #232, memory-coverage-audit #126,
meta-orchestrator-bundle-autonomous #247, mutation-discipline-stage-c-meta-launch #378,
aif-handoff-as-runtime-bridge #283, aif-skills-delivery-rphase #396, channel-earliness-audit #181,
ai-doc-audit-version-reconcile #423. Clears 18 false-opens; +10 via the C3 fix = 28 total. 51 residue left open (no evidence).
artyhoo added a commit that referenced this pull request Aug 1, 2026
## Summary

Closure bookkeeping for the token-economy research track: `done.md` for both stage dirs, per the umbrella-closure convention ([operational-conventions.md §1](../blob/staging/docs/meta-factory/operational-conventions.md)). The session that merges the last stage owes these files, because `priority-score.sh`'s completion-detection **Layer C3** checks `done.md` existence per candidate and is the deterministic fallback covering the bucket branch-prefix and jaccard matching cannot reach — without them both dirs keep scoring as live work.

All three artefacts of the track are already on `staging`: stage A (#1203), stage B (#1204), distillate (#1205).

## Changes

- `.claude/orchestrator-prompts/token-economy-research-s-a/done.md` — cites #1203.
- `.claude/orchestrator-prompts/token-economy-research-s-b/done.md` — cites #1204.

Both follow the binding schema verbatim (title / `Final PR:` / `Closed:` / `Summary:`) and point forward to the distillate that consumed them, so a future priority scan lands on the artefact the operator actually reads rather than on two raw stage patches.

## Prior-art consult

- [x] The single commit carries `Prior-art: skipped — closure bookkeeping under an existing convention, no new capability` (no dependency, no module, no code).
- [x] No new capability area — the convention and its consumer (`priority-score.sh` Layer C3) already ship; this PR only supplies the two data files they expect.
- [x] No existing SSOT entry matched; no `Last reviewed` touch due. (The convention itself is an ADAPT of Cline Memory Bank's committed-markdown sub-pattern, SSOT #77, registered when the convention landed — not re-opened here.)
- [x] context7 n/a — no library surface.

## Test plan

- [x] `bash scripts/run-local-ci-sweep.sh` → PASS (diff-scoped).
- [x] Pre-commit orchestrator-prompts validation ran on both staged files (soft-warn channel, no findings).
- [x] Schema conformance checked by eye against `operational-conventions.md §1` — four fields, exact field names, one-line summaries.
- [x] Manual smoke: `git diff --name-only origin/staging...HEAD` returns exactly the two new paths; nothing else touched.

## Provenance

n/a — non-stage PR. This is closure bookkeeping written by the session that merged the last stage, not a dispatched stage with a kickoff and a deliverable contract. The three stages this closes out each carried their own Provenance and fidelity verdict in #1203 / #1204 / #1205.

## Review findings

n/a — non-stage PR. Two data files, ten lines total, against a schema stated verbatim in the convention. No cold seat was dispatched and none is owed: there is no design content to audit and no measurement to re-verify. The PR numbers and closure dates were read from the merged PRs, not from recall.

## Fidelity verdict

FIDELITY: skipped — closure bookkeeping under an existing convention with a verbatim four-field schema; there is no kickoff, no deliverable contract, and no design content for a WHAT-conformance seat to audit against, so a verdict block would be decoration rather than evidence.

## Parked questions

n/a — non-stage PR.

## §1.7 Self-discipline check (REQUIRED if PR touches discipline-bearing files)

### §1.7 Skipped: mechanical closure bookkeeping — this PR introduces and extends no discipline rule, touches no `.claude/rules/**`, no `packages/core/principles/**`, no `CLAUDE.md`, no `prior-art-evaluations.md` and no shipped template; it adds two `done.md` data files in the exact schema an existing convention already defines, which is that convention operating normally rather than any change to it.
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