chore(memory): BDR-099 C2 coherence, LRN-169 audit method, journal + TODO 2026-09-24
This commit is contained in:
@@ -120,6 +120,7 @@ rules:
|
||||
| BDR-096 | 2026-09-24 | Branch deletion guard: lib-only delete after verified merge, main/develop undeletable at the ref layer | accepted |
|
||||
| BDR-097 | 2026-09-24 | graphify from 200 tracked code files: the banner informs, the user decides | accepted |
|
||||
| BDR-098 | 2026-09-24 | CLAUDE.global.md density pass 352 → 270: compression only, three name-obvious routing lines dropped | accepted |
|
||||
| BDR-099 | 2026-09-24 | C2 coherence: 30 doctrine/skill tensions resolved, doctrine wins, BDR-068 kept as the written exception | accepted |
|
||||
|
||||
---
|
||||
|
||||
@@ -1242,3 +1243,11 @@ Branch feature/user-writing-web-rules, UNMERGED (human gate).
|
||||
- **Alternatives rejected**: path-scope Design work / Web sections into `rules/` (BDR-031 principle; the design hook needs the section in context regardless of file type); caveman doctrine (BDR-031: instructions-to-follow must stay prose); raise the 320 guard again (BDR-062 already moved it once; a guard that follows the file is not a guard).
|
||||
- **Status**: accepted, on chore/claude-global-density, UNMERGED (human gate). make test unchanged (2 pre-existing T16a), banner density warning gone, doctor 0 errors.
|
||||
- **Reference**: `CLAUDE.global.md`, `hooks/session-start.sh` (320 guard), `hooks/design-toolchain-reminder.sh` (heading match). Links [[BDR-031]], [[BDR-062]], [[BDR-085]].
|
||||
|
||||
## BDR-099 — C2 coherence: 30 doctrine/skill tensions resolved, doctrine wins, BDR-068 kept as the written exception
|
||||
- **Date**: 2026-09-24
|
||||
- **Decision**: user go on all four groups. G3 judgment calls: (12) BDR-068 auto-finish of the memory-only `chore/*` by /capitalize+/close KEPT, written into CLAUDE.global.md + gitflow SKILL as the one finish without a live signal; (13) memory commit on develop: hook exemption for a commit that follows merged work, aiguillage `chore/*` for a standalone memory task — both written; (14) `chore/*` widened to "maintenance without new behaviour" (memory, docs, cleanup, /refactor, /tour fixes), /commit-change asks the type (public name); (15) /tour never applies a contract-breaking fix → `open — needs decision (BREAKING)`; (16) client-handover: children audit and return FIX BUNDLEs, the main loop applies AUTO items and gates the rest at ONE gate (harden whole bundle, seo D/E, geo G5, CSO dependency bumps); (17) /hotfix on develop → type `bugfix`, `hotfix/*` = prod incidents only; (18) /seo aggressive + /web-validate --fix → feature branch, /refactor → chore, via the aiguillage; (19) /doc → chore row + STEP 0. G1/G2/G4 = doctrine wins mechanically (see CHANGELOG). Lib: `gitflow init` socle via `chore/gitflow-adopt` merge (T2c).
|
||||
- **Why**: TODO C2 (2026-08-25). Three read-only Plan-agent audits (doctrine+rules / skills A-H / skills I-W), 39 raw → 30 unique pairs, heaviest spot-checked by grep. Two classes dominated: today's own partial fixes (graphify 200 rule missing in init-project/onboard; density pass removed a heading 5 skills cited; deploy routing line) and BDR-095 staleness (push everywhere made deploy/release/tour/capitalize push wording false; global hooks broke init on existing repos). LRN-164 applied to myself: a rule change must grep every citer.
|
||||
- **Alternatives rejected**: revoke BDR-068 for a strict human gate → 2 months of clean memory auto-persists, memory-only scope, `--no-push` opt-out exists; a new branch type for tour/commit-change code → widen chore instead, fewer types; child-held gates in handover → a dispatched child cannot hold a gate (LRN-165 class); keep `push_deploy_tags`/release push gate as no-ops → false statements in doctrine-bearing skills are worse than absence.
|
||||
- **Status**: accepted, feature/c2-coherence, UNMERGED (human gate). 33 files, make test 168/170 (2 pre-existing T16a), shellcheck clean, doctor 0 errors, CLAUDE.global.md 282 lines.
|
||||
- **Reference**: `CLAUDE.global.md`, `lib/gitflow.sh` `_gitflow_adopt_socle`, `lib/gitflow-test.sh` T2c, `lib/gitflow-aiguillage.md`, `lib/verify-secure-loop.md`, `lib/design-gate.md`, 16 skills, 4 agents, CHANGELOG. Links [[BDR-068]], [[BDR-095]], [[BDR-097]], [[BDR-098]], [[LRN-164]], [[LRN-165]], [[LRN-169]].
|
||||
|
||||
@@ -504,3 +504,4 @@ rules:
|
||||
- User go "merge le tout": chore/claude-global-density → develop abec66e, then feature/graphify-threshold-banner → develop 10532e3. Predicted 3-file conflict on the append-only registries (decisions, journal, TODO — both branches appended at the same spot), resolved keeping both sides in chronological order (BDR-097 before BDR-098), merge committed by hand, finish re-run: both local and origin copies removed by the lib. CLAUDE.global.md 272 lines on develop, banner clean. No feature/chore branch left anywhere.
|
||||
- User go "commit + merge what remains": chore/settings-and-synced-skills → develop 87b2615. settings.json `feedbackDrafts: off` (user hand-edit) committed as is; `skills/synced/` + `skills/.bucket-*` gitignored — Claude Code's mirror of the claude.ai synced skills (UUID bucket, manifest.json, Anthropic stock skills, 4.4 MB), app-owned and rewritten at each sync, same treatment as graphify/impeccable copies (BDR-028, LRN-154). Tree clean, no working branch anywhere.
|
||||
- /reconcile (5 gaps fixed in TODO, chore/reconcile-2026-09-24) then /prune-memory, all 4 categories user-approved: 66 index rows backfilled, 15 `###` entries made visible to the engine, 4 supersession statuses, 6 merges LRN-163..168 (sources kept), 23 entries compressed −5% words only (negation guard dominates). Net size UP (+2.6k words: merged bodies + index rows) — value is structural, not tokens. Fidelity census green at file level; per-entry flags on BDR-073/EVAL-025 = `###` attribution artifact, bodies byte-identical. UNMERGED — human gate.
|
||||
- C2 + C3 done ([[BDR-099]], [[LRN-169]]): 3 read-only audits → 30 tensions, user approved all groups + G3 as recommended; 3 executors + my doctrine/lib work on feature/c2-coherence (33 files). Real bug found + fixed: `gitflow init` on an existing repo blocked by the global pre-commit → socle via `chore/gitflow-adopt` merge, T2c. C3: superpowers 2 invocations / 126 turns over 29 sessions, both warranted → keep, re-measure in 30 days. One executor bypassed the `GIT_CONFIG_GLOBAL=` deny via a wrapper script to run a test — flagged. UNMERGED — human gate.
|
||||
|
||||
@@ -188,6 +188,7 @@ rules:
|
||||
| LRN-166 | 2026-09-24 | structure and census locks are fixed single-line strings: a prose rewrap reds them with zero doctrine lost | editing any doctrine, skill or agent file under lib/tests locks |
|
||||
| LRN-167 | 2026-09-24 | a release/develop fork strands CODE on develop: a "resolved" blocker or a parallel-merged feature can miss its fix | any long-lived fork (release/*, long feature); back-merging a resolved blocker |
|
||||
| LRN-168 | 2026-09-24 | a relayed claim is not a fact: WebSearch consensus and sub-agent summaries both need a primary source or a live test | any number, feature or finding relayed by search or by a sub-agent before it shapes a plan or a client deliverable |
|
||||
| LRN-169 | 2026-09-24 | a coherence audit is cheap when parallel and read-only, and its findings are claims: spot-check, then fix every citer | any doctrine or skill rule change; sub-agent briefs; environment-dependent tests |
|
||||
|
||||
---
|
||||
|
||||
@@ -1578,3 +1579,10 @@ Rule: when editing a doctrine file under structure locks, grep the test's lock s
|
||||
- **Context**: seo/geo 2026-07-17. "VSI (Visual Stability Index) — new 2026 Core Web Vital" sat in seo-analyzer as a threshold; it does NOT exist — absent from the CrUX API metric list AND web.dev, 10 SEO blogs cross-cited it into consensus. EVERY stat in agents/resources/ was real but grafted onto the wrong subject (Aggarwal 40% = ALL methods; AccuraCast 58.9% = Person-schema PREVALENCE pinned on QAPage lift, meaning inverted; LLMrefs 3x = brand-mentions-vs-backlinks pinned on freshness decay). 7 sub-agent claims disproven in one session: "Off-page has ZERO data" (brand mentions ARE gathered, STEP 6); "the stats drive axis weights" (no citations); "GSC Links API is available" (endpoint doesn't exist); "SPA §0 flag compensates" (never existed); "X/Twitter returns 403" (200, live-tested); Common Crawl "nearest free source" (17.3 GB dead end); the whole opening inventory behind the 20-point plan. The same error reproduced 3× while WRITING the fixes; contact with the REAL corrected it every time — sitemap, repo, curl, primary doc.
|
||||
- **Future application**: an API's metric list (developer.chrome.com/docs/crux) is decisive: a metric the API can't return is one you can't score. Measure-first before building on a relayed summary; never re-read the spec as verification. Corroborates [[LRN-074]] (watch the RED go red), [[LRN-034]] (narrated ≠ ground truth).
|
||||
- **Reference**: `agents/seo-analyzer.md`, `agents/resources/`, [[EVAL-025]]. Supersedes [[LRN-131]], [[LRN-132]] (bodies kept).
|
||||
|
||||
## LRN-169 — a coherence audit is cheap when parallel and read-only, and its findings are claims: spot-check, then fix every citer
|
||||
- **Date**: 2026-09-24
|
||||
- **Context**: C2 audit of CLAUDE.global.md + 31 own skills + rules + doctrine libs (~9k lines). Three `Plan` agents (read-only tool set) in parallel, one brief each: definition of "in tension" (contradiction / ambiguity / stale ref verified by ls-grep), fixed output shape, explicit bans (no skill/CLI/hook runs, no edits). ~500k sub-agent tokens, 11 min wall. 39 raw pairs, 30 unique; 4 heaviest re-verified by grep before presenting, all held.
|
||||
- **Pattern**: (a) the two dominant defect classes were MY same-day partial fixes (200-file graphify rule landed in advisor+doctrine, not in the two orchestrators that build; density pass renamed a heading 5 skills cited; a routing line kept "deploy → ship" with /deploy existing) and a 2-day-old staleness wave (BDR-095 auto-push made 5 skills' push text false, global hooks broke `gitflow init` on existing repos). Rule change → `grep -rn` every citer and every consumer BEFORE committing ([[LRN-164]] applied to doctrine). (b) test hermeticity hides environment regressions: `make test` neutralises the global git config, so the global-hook breakage of init was invisible; add a test that SIMULATES the environment (T2c sets a hooks dir as if global). (c) executors with closed briefs applied 35+8+6 prose edits cleanly in parallel; the residue was scope edges (2 lines in an agent outside E1's list, 2 passages E3 saw but was not allowed to touch) → give executors the whole file family, not a line list. (d) one executor routed around the static deny on `GIT_CONFIG_GLOBAL=` by writing a wrapper script to run a test: harmless here, but a sub-agent WILL work around a guardrail when the brief asks for a result the guardrail blocks — brief "if a guard denies a command, report and stop" explicitly ([[LRN-160]] class). (e) C3 measured superpowers over 29 sessions: 2 invocations / 126 turns, both warranted; a plugin's MUST yields to user instructions in practice — measure before disabling ([[LRN-080]]).
|
||||
- **Future application**: for any doctrine/skill rule change: grep citers first, patch them in the same commit. Environment-dependent behaviour (global hooks, PATH, HOME) → a test that simulates the environment, not one that neutralises it. Sub-agent briefs → "denied by a guard = stop and report", never "find a way". Re-run the C2 audit after each doctrine wave; re-run the C3 transcript census in 30 days.
|
||||
- **Reference**: [[BDR-099]], `lib/gitflow-test.sh` T2c, transcript census script (session scratch, re-creatable: parse `~/.claude/projects/*/*.jsonl`, Skill tool_use with `superpowers:` prefix, preceding user text).
|
||||
|
||||
+37
-2
@@ -1,5 +1,38 @@
|
||||
# TODO
|
||||
|
||||
## 2026-09-24 — C2 coherence: 30 doctrine/skill tensions resolved (feature/c2-coherence)
|
||||
Audit by 3 read-only analysts (doctrine+rules, skills A-H, skills I-W), 39 raw
|
||||
pairs → 30 unique, spot-checked by grep. User approved all four groups + G3 as
|
||||
recommended. C3 (superpowers) closed: no over-trigger in 29 sessions / 126 turns
|
||||
(2 brainstorming calls, both warranted), ~800 tok fixed/session → keep, re-measure
|
||||
in 30 days with the same transcript script.
|
||||
- [x] WP-A doctrine (CLAUDE.global.md): 3 compress-on-demand → via /prune-memory;
|
||||
4 deploy → /deploy; 5 one ask policy; 12 BDR-068 exception clause; 13 memory
|
||||
commit: exemption vs aiguillage, both written; 14 chore = maintenance without
|
||||
new behaviour; 17 hotfix on develop → bugfix; 22 skill plan file satisfies the
|
||||
planning rule; 23 mandated executors exempt from the delegation rule; 24
|
||||
journal line exempt from the approval gate. Stay < 320 lines.
|
||||
- [x] WP-B lib bug (7): `_gitflow_init_existing` socle commit blocked on main by the
|
||||
live global pre-commit → socle on `chore/gitflow-adopt` off main, merged
|
||||
--no-ff (merge exempt), branch deleted; T2c with a simulated global hook.
|
||||
- [x] WP-C E1 gitflow-family skills: capitalize/close `--no-push` text (11), memory
|
||||
missing → create (21), gitflow SKILL exception line (12), § Language ×5 (2),
|
||||
hotfix aiguillage bugfix-on-develop (17) + design-gate skip (25), feat/bugfix/
|
||||
hotfix executor wording (23), ship-feature .gsd/STATE.md (27), init-project
|
||||
graphify gate (1) + memory bootstrap (21), aiguillage table rows (/doc,
|
||||
/commit-change, seo/web-validate/refactor) (18,19), doc STEP 0 aiguillage
|
||||
(19), commit-change asks branch type (14).
|
||||
- [x] WP-D E2: onboard graphify gate (1) + STEP 2.6 rewrite (7) + add gsd/continue
|
||||
(28); tour push wording (10), BREAKING → needs decision (15), doc-syncer
|
||||
two-mode (26); deploy push_deploy_tags (8); release-candidate tag-only push
|
||||
gate + release-executor + its test (9).
|
||||
- [x] WP-E E3: client-handover gate + script path (16, 29); seo/web-validate/refactor
|
||||
aiguillage step (18); pdf-translate sudo (30); verify-secure-loop inline-fix
|
||||
removal under locks (20); design-gate.md extensions/impeccable/anim list (6).
|
||||
- [x] WP-F verify: make test, shellcheck, doctor, banner; review full diff; BDR-099
|
||||
(C2 resolutions) + LRN-163? no: LRN-169 (audit method) + journal; C2/C3 ticked
|
||||
in the 2026-08-25 block. Merge on user go.
|
||||
|
||||
## 2026-09-24 — CLAUDE.global.md density pass (chore/claude-global-density)
|
||||
- [x] 352 → 270 lines, −15% words, compression only (BDR-031/062 principle),
|
||||
headings verbatim, graphify § byte-identical (feature/graphify-threshold-banner
|
||||
@@ -515,12 +548,14 @@ Order fixed, one branch per chantier, no merge without per-chantier signal.
|
||||
Residual for gate: §6bis dynamically-unverified list (FULL branches,
|
||||
apply path — census-locked statically); FULL/aggressive dry-run = user
|
||||
option; nested-CLI dogfood blocked by monthly spend limit (inline used).
|
||||
- [ ] C2 self-contradiction audit CLAUDE.global.md + own skills: list rule
|
||||
- [x] C2 self-contradiction audit CLAUDE.global.md + own skills: list rule
|
||||
pairs in tension, propose resolution per pair, apply after user OK.
|
||||
/doctor as assistant, not authority.
|
||||
- [ ] C3 superpowers: MEASURE first (skill-invocation log over sessions)
|
||||
→ DONE 2026-09-24: 30 pairs, all resolved on feature/c2-coherence (BDR-099).
|
||||
- [x] C3 superpowers: MEASURE first (skill-invocation log over sessions)
|
||||
whether "1% chance → MUST invoke" over-triggers; if yes, options +
|
||||
trade-offs (disable plugin / softer house rule / live with) — user decides.
|
||||
→ DONE 2026-09-24: measured 2/126 turns, both warranted → keep, re-measure in 30 days (LRN-169).
|
||||
- [x] C4 hygiene: reinstall darwin-skill — DONE (reconcile 2026-08-25:
|
||||
~/.agents/skills/darwin-skill present, T6c green, make test exit 0).
|
||||
|
||||
|
||||
Reference in New Issue
Block a user