From b5f476d82050ebaad406767ba921da70eec56c6f Mon Sep 17 00:00:00 2001 From: REPPL <77722411+REPPL@users.noreply.github.com> Date: Sat, 11 Jul 2026 16:37:01 +0100 Subject: [PATCH] docs: ship itd-3 (manual fidelity audit + planned->shipped) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Moves itd-3 (the merged modular rules loader) from planned/ to shipped/ ahead of the intent-lifecycle pipeline, as a manual dry-run of that pipeline. - spec_id: null -> spc-1 (reserved; the future native spec store adopts it). - Hand-authored ## Audit Notes: per-criterion verdicts (3 MET / 1 MET_WITH_CONCERNS / 1 INCONCLUSIVE / 1 NOT_MET) + the honoured/diverged/missing three-bucket audit. The intent-fidelity-reviewer agent does not exist yet, so the audit was performed by hand (judge: Claude Opus 4.8). - Repoint inbound links (plan, legacy-harvest, related-work) planned->shipped — the link-drift-on-move the future reconcile pass will automate. record-lint green (the intent_lifecycle shipped/ contract is satisfied, not relaxed). Assisted-by: Claude:claude-opus-4-8 --- .../itd-3-modular-rules-loader.md | 51 ++++++++++++++++++- .../plans/2026-07-11-itd-3-rules-loader.md | 4 +- .abcd/development/research/legacy-harvest.md | 6 +-- .abcd/development/research/related-work.md | 2 +- .abcd/work/DECISIONS.md | 8 +++ 5 files changed, 63 insertions(+), 8 deletions(-) rename .abcd/development/intents/{planned => shipped}/itd-3-modular-rules-loader.md (71%) diff --git a/.abcd/development/intents/planned/itd-3-modular-rules-loader.md b/.abcd/development/intents/shipped/itd-3-modular-rules-loader.md similarity index 71% rename from .abcd/development/intents/planned/itd-3-modular-rules-loader.md rename to .abcd/development/intents/shipped/itd-3-modular-rules-loader.md index cdca676a..c83425e2 100644 --- a/.abcd/development/intents/planned/itd-3-modular-rules-loader.md +++ b/.abcd/development/intents/shipped/itd-3-modular-rules-loader.md @@ -1,7 +1,7 @@ --- id: itd-3 slug: modular-rules-loader -spec_id: null +spec_id: spc-1 kind: standalone suggested_kind: null reclassification_history: [] @@ -63,7 +63,54 @@ This is also the keystone for retiring `~/ABCDevelopment/.claude/` entirely. Wit ## Audit Notes -_Empty. Populated by intent-fidelity-reviewer when intent moves to shipped/._ +> _Manual fidelity audit — the `intent-fidelity-reviewer` agent is not yet built, +> so this audit was performed by hand. Judge: Claude Opus 4.8; date 2026-07-11; +> reviewed against the merged loader (the rules-loader design + implementation). +> Per-criterion verdicts per the itd-1 discipline, then a three-bucket prose +> audit. `spec_id: spc-1` is reserved for itd-3; the future native spec store +> adopts it rather than re-minting._ + +### Per-criterion verdicts + +1. **MET.** COMMITTING's `recall`/`aliases` cover "commit", "PR", and "git add"; + the prompt-router hook injects the domain on the turn. +2. **MET (exceeded).** A no-match renders zero model-facing tokens — bettering the + `< 200` threshold. The "header only" mechanism was replaced by out-of-band + diagnostics (signed-off delta D3). +3. **MET_WITH_CONCERNS.** Dedup is MET (inject on turn 1, skip 2–3). "Forced + refresh on prompt 5" was deliberately replaced by event-driven refresh on + `SessionStart(compact)` plus a fixed-N backstop (default 15, configurable) — + signed-off delta D1. +4. **MET.** A `*ROADMAP` star-command injects the domain regardless of keyword + match (it overrides a dormant state, not the kill switch). +5. **INCONCLUSIVE.** The marker block is delivered and sized (~40 lines) and ahoy + installs it, but the live "fresh clone + installed plugin + new session" + behaviour cannot be observed in-repo (the hook only fires in an installed + plugin). +6. **NOT_MET.** The shipped defaults are a concise curated set (eight domains) + drawn from the working conventions plus the Pass-1 mapping in + `research/legacy-harvest.md`; a completeness-audited rule-by-rule port of the + legacy methodology file was not performed. This is the one genuine gap. + +**Rollup:** 3 MET · 1 MET_WITH_CONCERNS · 1 INCONCLUSIVE · 1 NOT_MET. + +### Three-bucket audit + +- **Honoured.** Just-in-time recall injection replacing the monolithic + force-load (the core promise); binary-bundled defaults plus a per-repo + override; per-domain dedup; star-command activation; the kill switch and + dormant state; the `abcd rules [domain]` diagnostic verb; the OPINIONS domain + pointing at the canonical conventions; a fail-closed, non-blocking trust + boundary; a marker block under 50 lines. +- **Diverged (every item a maintainer-signed delta).** D3 — zero no-match tokens + plus out-of-band diagnostics instead of a `< 200`-token header. D1 — + event-driven refresh with a fixed-N backstop instead of forced-every-5. D2 — + the shipped `{schema_version, disabled, domains{}}` per-field-override shape + instead of the earlier `extends`/`overrides` sketch. D4 — no `.abcdignore`. +- **Missing / outstanding.** A completeness-audited harvest of the legacy + methodology file into the defaults (criterion 6). Live installed-plugin session + verification (criterion 5). Neither blocks the shipped promise; both are + recorded here as follow-ups. ## References diff --git a/.abcd/development/plans/2026-07-11-itd-3-rules-loader.md b/.abcd/development/plans/2026-07-11-itd-3-rules-loader.md index e02c58d3..d6f47229 100644 --- a/.abcd/development/plans/2026-07-11-itd-3-rules-loader.md +++ b/.abcd/development/plans/2026-07-11-itd-3-rules-loader.md @@ -5,7 +5,7 @@ any implementation. Reached via the [prefer-sota](../principles/prefer-sota.md) process: an adversary challenged generic just-in-time rule-injection SOTA (CARL, AGENTS.md, Cursor rules, Skills) for THIS repo's fit, then a `sota-researcher` verdict was taken on the fit-surviving hypothesis. This doc is the design of -record for [itd-3](../intents/planned/itd-3-modular-rules-loader.md); it does not +record for [itd-3](../intents/shipped/itd-3-modular-rules-loader.md); it does not authorise a build. Adopting a planned intent is a maintainer decision — the four deltas from the intent (§7) are the sign-off surface. @@ -30,7 +30,7 @@ rules **point at** `.abcd/development/principles/` rather than copying them. `internal/core`; the capability lives in the core and renders through the vendor-neutral `abcd rules` verb. - **CARL's global `~/.carl/carl.json` source** — collides with per-repo-only - ([the intent's "What's Out of Scope"](../intents/planned/itd-3-modular-rules-loader.md); + ([the intent's "What's Out of Scope"](../intents/shipped/itd-3-modular-rules-loader.md); `~/.abcd/` holds only machine-wide state). No `~/.abcd/rules.json`. Ever. - **CARL's MCP server + `add_rule`/`toggle_domain` verbs, and the Python hook** — each is a new runtime/dependency (ask-first). Rule *mutation* is a file-edit of diff --git a/.abcd/development/research/legacy-harvest.md b/.abcd/development/research/legacy-harvest.md index d8578cae..7641cb7d 100644 --- a/.abcd/development/research/legacy-harvest.md +++ b/.abcd/development/research/legacy-harvest.md @@ -18,7 +18,7 @@ Decision interview conducted 2026-05-04 in conversation. Outcomes captured below ## Pass 1 — Methodology rules -Source: `~/ABCDevelopment/.claude/CLAUDE.md`. Disposition: split into CARL-style domain rules per [`itd-3-modular-rules-loader`](../intents/planned/itd-3-modular-rules-loader.md), shipped as `scripts/abcd/defaults/rules.json` in the plugin. +Source: `~/ABCDevelopment/.claude/CLAUDE.md`. Disposition: split into CARL-style domain rules per [`itd-3-modular-rules-loader`](../intents/shipped/itd-3-modular-rules-loader.md), shipped as `scripts/abcd/defaults/rules.json` in the plugin. | § | Section | Verdict | Domain mapping | Notes | |---|---|---|---|---| @@ -208,7 +208,7 @@ abcdDev/ } ``` -Merge semantics, conflict policy, and diagnostic surface (`abcd rules show`, `abcd rules diff`, `abcd rules lint`) defined in [`itd-3-modular-rules-loader`](../intents/planned/itd-3-modular-rules-loader.md). +Merge semantics, conflict policy, and diagnostic surface (`abcd rules show`, `abcd rules diff`, `abcd rules lint`) defined in [`itd-3-modular-rules-loader`](../intents/shipped/itd-3-modular-rules-loader.md). ## Migration sequence @@ -277,7 +277,7 @@ If the first phase starts feeling too heavy, the candidates for moving to a late ## References [itd-1]: ../intents/disciplines/itd-1-acceptance-gates.md "itd-1 — Acceptance gates" -[itd-3]: ../intents/planned/itd-3-modular-rules-loader.md "itd-3 — Modular rules loader" +[itd-3]: ../intents/shipped/itd-3-modular-rules-loader.md "itd-3 — Modular rules loader" [itd-7]: ../intents/drafts/itd-7-rp-workspace-portability.md "itd-7 — RP workspace portability" [itd-17]: ../intents/drafts/itd-17-model-effectiveness-tracking.md "itd-17 — Model effectiveness tracking (a later phase)" [itd-23]: ../intents/drafts/itd-23-spec-kit-interop.md "itd-23 — Spec Kit interop (a later phase)" diff --git a/.abcd/development/research/related-work.md b/.abcd/development/research/related-work.md index b64a7b29..35d363d4 100644 --- a/.abcd/development/research/related-work.md +++ b/.abcd/development/research/related-work.md @@ -57,7 +57,7 @@ Architecture in one paragraph: ### Where abcd overlaps -abcd's 978-line `~/ABCDevelopment/.claude/CLAUDE.md` is exactly the failure mode CARL addresses. Most sessions need none of those rules; every session pays for all of them. The plugin-bundled defaults + per-repo `.abcd/rules.json` model proposed in [`itd-3-modular-rules-loader`](../intents/planned/itd-3-modular-rules-loader.md) is structurally identical to CARL. +abcd's 978-line `~/ABCDevelopment/.claude/CLAUDE.md` is exactly the failure mode CARL addresses. Most sessions need none of those rules; every session pays for all of them. The plugin-bundled defaults + per-repo `.abcd/rules.json` model proposed in [`itd-3-modular-rules-loader`](../intents/shipped/itd-3-modular-rules-loader.md) is structurally identical to CARL. ### Why not depend on CARL diff --git a/.abcd/work/DECISIONS.md b/.abcd/work/DECISIONS.md index 3db34fa1..a57555f9 100644 --- a/.abcd/work/DECISIONS.md +++ b/.abcd/work/DECISIONS.md @@ -184,3 +184,11 @@ parallel-agent merge contention bites. no-match + out-of-band diagnostic log (supersedes the "<200-token header" acceptance criterion); **D4** `.abcdignore` rejected for v1. Build proceeds phased/TDD from Phase 1 (`internal/core/rules`). +- 2026-07-11 — itd-3 **shipped manually** ahead of the intent-lifecycle pipeline. + Moved `planned/ → shipped/` by hand with `spec_id: spc-1` (reserved — the future + native spec store adopts spc-1 for itd-3, never re-mints it) and a hand-authored + `## Audit Notes` (the `intent-fidelity-reviewer` agent does not exist yet; judge + = Claude Opus 4.8). Rollup 3 MET / 1 MET_WITH_CONCERNS / 1 INCONCLUSIVE / 1 + NOT_MET; every divergence is a signed-off D1–D4 delta, the one gap is the AC6 + legacy-harvest completeness. Inbound links repointed planned→shipped by hand — + the link-drift-on-move the future reconcile pass automates.