diff --git a/.abcd/README.md b/.abcd/README.md index 0b4535d3..3d7f5c65 100644 --- a/.abcd/README.md +++ b/.abcd/README.md @@ -1,8 +1,10 @@ # .abcd/ abcd's development namespace. Everything here is dev material — it stays in the -repo (transparent) but is excluded from the release artifact. `docs/` (not here) -holds user-facing documentation and is the only dev-adjacent tree that ships. +repo (transparent) and is present in every repository checkout, marketplace +installs and release source archives included, but never in the released +binaries. `docs/` (not here) holds user-facing documentation and is the only +dev-adjacent tree the release artifact carries. Three tiers, on two axes (durability × sharing): diff --git a/.abcd/development/README.md b/.abcd/development/README.md index cbb5a9c3..318e3167 100644 --- a/.abcd/development/README.md +++ b/.abcd/development/README.md @@ -1,9 +1,10 @@ # Development record The abcd design record — the durable "what / why" the build works from. Kept in the -repo (transparent) but excluded from the release artifact; user-facing docs live -under [`../../docs/`](../../docs/). Organised **flat by artefact type**, one -canonical home per concept: +repo (transparent) and present in every repository checkout, marketplace installs +and release source archives included, but never in the released binaries; +user-facing docs live under [`../../docs/`](../../docs/). Organised **flat by +artefact type**, one canonical home per concept: | Folder | What it holds | |--------|---------------| diff --git a/.abcd/development/brief/01-product/02-context.md b/.abcd/development/brief/01-product/02-context.md index 21a6dde7..485fbd60 100644 --- a/.abcd/development/brief/01-product/02-context.md +++ b/.abcd/development/brief/01-product/02-context.md @@ -7,7 +7,7 @@ abcd ships these user-facing commands: - **`/abcd:ahoy install`** — install / update abcd in any project (bootstraps configuration, gitignore, marker blocks, PATH symlink). Bare `/abcd:ahoy` shows status+help. - **`/abcd:disembark to `** — *pack* a lifeboat by **reading** `` — any repository, including one abcd has never touched — and writing the artefact **out-of-tree** to the operator-chosen ``. The source is never written to; the destination must be absent, an empty directory, or one carrying a parseable `_provenance.json` ([adr-35](../../decisions/adrs/0035-lifeboat-as-coverage-experiment.md)). Bare `/abcd:disembark` shows status+help; `probe ` and `dry-run` sub-verbs preview without writing — `probe` reports **coverage** (which brief sections a repository can ground, and which come back blank). - **`/abcd:embark from `** — *unpack* the lifeboat at `` (wherever a disembark wrote it) into a (typically empty) target project. Bare `/abcd:embark` shows status+help; `scan` and `probe ` sub-verbs discover/inspect without unpacking. -- **`/abcd:launch ship`** — cut a curated release from the single repo (`.abcd/**` excluded from the artifact by packaging), scrub for PII/secrets, stamp the version, update the marketplace entry. Bare `/abcd:launch` shows status+help; `dry-run` sub-verb runs the full pre-flight gate suite without writing the release artifact. +- **`/abcd:launch ship`** — cut a curated release from the single repo (the packaging filter denies `.abcd/**`, so the released binaries do not carry it), scrub for PII/secrets, stamp the version, update the marketplace entry. Bare `/abcd:launch` shows status+help; `dry-run` sub-verb runs the full pre-flight gate suite without writing the release artifact. - **`/abcd:intent`** — bare quoted `/abcd:intent ""` is the canonical create (spc-30/itd-46), plus the `plan` / `ready` / `review` / `link` sub-verbs that ship (alongside the deprecated `new` alias), with `refine` / `grill` / `ship` / `consistency` / `shape` / `reclassify` remaining design targets (`consistency` per itd-48, which superseded itd-31). There is no plain `list` sub-verb — it is folded into the bare render per SD001. Manages **intents** (press-release-format intent docs at `.abcd/development/intents/{drafts,planned,shipped,disciplines,superseded}/`). `plan` promotes an intent to `planned/` and plans the work as a spec on the native spec store ([adr-26](../../decisions/adrs/0026-native-spec-layer-ccpm-backend.md); the companion harness `ccpm` as the deeper backend); `ship` drives that spec to completion (or the full pipeline if from drafts/); a spec-close hook reconciles standalone/bundle intents planned → shipped automatically on a successful close (spc-28 `intent_lifecycle.reconcile`); disciplines move from drafts/ to disciplines/ on plan and stay there. Bare `/abcd:intent` shows status+help. - **`/abcd:capture`** — capture / list / promote / resolve / wontfix issues (the structured `.abcd/work/issues/` ledger). Issues live at `.abcd/work/issues/{open,resolved,wontfix}/iss-N-.md`. See itd-4. The cross-corpus synthesist (`/abcd:dredge`) comes in a later phase as itd-25. - **`/abcd:memory`** — curate a queryable knowledge substrate (`ingest` external sources / `ask` queries / `lint` health-checks) from specs, ADRs, reviews, and memory. See itd-36 and [`05-internals/07-memory.md`](../05-internals/07-memory.md). @@ -42,7 +42,7 @@ Lifeboats are portable directories; share by copy/tar/git, not by global archive **Repo:** -- abcd lives in **one repository** ([adr-28](../../decisions/adrs/0028-single-repo-curated-release.md)) — this directory. The Go binary, its user documentation, and the design record share one tree; `.abcd/**` stays in-tree but is excluded from the curated release artifact by packaging. `/abcd:launch ship` cuts that release from this repo, and the repo is the marketplace. There is no dev→public mirror. `abcdSubZero/` (an earlier CLI) is skimmed in Phase 0 for patterns to learn from — reference only, not a port target. +- abcd lives in **one repository** ([adr-28](../../decisions/adrs/0028-single-repo-curated-release.md)) — this directory. The Go binary, its user documentation, and the design record share one tree; `.abcd/**` stays in-tree and is present in every repository checkout — marketplace installs and release source archives included — never in the released binaries. `/abcd:launch ship` cuts that release from this repo, and the repo is the marketplace. There is no dev→public mirror. `abcdSubZero/` (an earlier CLI) is skimmed in Phase 0 for patterns to learn from — reference only, not a port target. **Validation corpus:** user-maintained list in `.abcd/corpus.json`, seeded with: diff --git a/.abcd/development/brief/02-constraints/01-platform.md b/.abcd/development/brief/02-constraints/01-platform.md index 9e0b6561..e7850fef 100644 --- a/.abcd/development/brief/02-constraints/01-platform.md +++ b/.abcd/development/brief/02-constraints/01-platform.md @@ -6,7 +6,7 @@ This file holds locked decisions about *where* abcd runs and *how it ships*. The abcd lives in **one repository** and ships a **curated release artifact** cut from it — there is no dev→public mirror ([adr-28](../../decisions/adrs/0028-single-repo-curated-release.md)). The Go binary is the product ([adr-21](../../decisions/adrs/0021-rebuild-in-go.md)); its source, its user-facing documentation, and the design record all share this one tree. The design record (this brief, the roadmap, intents, ADRs, research) lives in-tree at `.abcd/development/`; shared working material is committed under `.abcd/work/`, and `.abcd/.work.local/` is the gitignored local-only surface. See [`../../../../CLAUDE.md`](../../../../CLAUDE.md) for the canonical "where things live" map. -**`.abcd/**` stays in-tree but is excluded from the release artifact by packaging** — exclusion is a build-time filter over the one tree, not a copy between two repos. `/abcd:launch` cuts a curated GitHub Release from this repo; **the repo is the marketplace**, so discovery, install, and the design record share one location. +**`.abcd/**` stays in-tree and is present in every repository checkout — marketplace installs and release source archives included — never in the released binaries** — exclusion is a build-time filter over the one tree, not a copy between two repos; the launch bundler implements it as a structural namespace deny, which no cut release has run yet. `/abcd:launch` cuts a curated GitHub Release from this repo; **the repo is the marketplace**, so discovery, install, and the design record share one location. ## Front doors diff --git a/.abcd/development/brief/05-internals/03-configuration.md b/.abcd/development/brief/05-internals/03-configuration.md index 28f3d3b7..b55e47ea 100644 --- a/.abcd/development/brief/05-internals/03-configuration.md +++ b/.abcd/development/brief/05-internals/03-configuration.md @@ -206,7 +206,7 @@ Because the lifeboat lands out-of-tree, `embark` reads it from wherever disembar | Tier | Path | Committed? | Holds | |---|---|---|---| -| **record** | `.abcd/development/` | committed — excluded from the release artefact by packaging | the durable design record: brief, roadmap, intents, ADRs, research | +| **record** | `.abcd/development/` | committed — in every repository checkout, never in the released binaries | the durable design record: brief, roadmap, intents, ADRs, research | | **shared work** | `.abcd/work/` | committed | shared working files — `CONTEXT.md` + `DECISIONS.md` | | **local ephemeral** | `.abcd/.work.local/` | gitignored | machine-local scratch — `NEXT.md`, `scratch/`, `logs/` | diff --git a/.abcd/development/brief/glossary/distribution/release.md b/.abcd/development/brief/glossary/distribution/release.md index 8fc36cc6..9a9a05ba 100644 --- a/.abcd/development/brief/glossary/distribution/release.md +++ b/.abcd/development/brief/glossary/distribution/release.md @@ -17,8 +17,9 @@ versions: null A **release** is a published, version-tagged snapshot of abcd — both the act of cutting a curated release from the single repo ([adr-28](../../../decisions/adrs/0028-single-repo-curated-release.md)) and the -resulting artefact, a GitHub Release with `.abcd/**` excluded by packaging, -carrying a [version](version.md), a changelog entry, and a git tag. +resulting artefact, a GitHub Release whose published binaries do not carry +`.abcd/**` (the packaging filter's structural deny, which no cut release has +run yet), carrying a [version](version.md), a changelog entry, and a git tag. As with [version](version.md), [phase](../core/phase.md) forbids "release" as a synonym *in the core context* — abcd does not organise development by releases. diff --git a/.abcd/development/roadmap/phases/phase-1-ahoy.md b/.abcd/development/roadmap/phases/phase-1-ahoy.md index 25a42722..30ea711d 100644 --- a/.abcd/development/roadmap/phases/phase-1-ahoy.md +++ b/.abcd/development/roadmap/phases/phase-1-ahoy.md @@ -8,8 +8,9 @@ classified (managed-repo / unmanaged-repo / unmanaged-folder), registered in the history store's `~/.abcd/history/index.json`, given its CLAUDE.md marker block, and wired with the modular rules loader; re-running is idempotent. `/abcd:launch` cuts a **curated single-repo release** — a release artifact built from the one repository, with -`.abcd/**` excluded by packaging so the design record never ships in the -artifact (per [adr-28](../../decisions/adrs/0028-single-repo-curated-release.md)). +the packaging filter denying `.abcd/**` so the design record is not carried by +the released binaries (per +[adr-28](../../decisions/adrs/0028-single-repo-curated-release.md)). There is no separate public repository to promote into: the repo *is* the marketplace, and launch is the packaging-and-scrub step that produces the distributable. diff --git a/.abcd/work/CONTEXT.md b/.abcd/work/CONTEXT.md index 70e54421..215bf89b 100644 --- a/.abcd/work/CONTEXT.md +++ b/.abcd/work/CONTEXT.md @@ -39,5 +39,8 @@ Python reference implementation. manifest and tiered by release impact), which runs at a release, not continuously. So a brief sentence about behaviour can be wrong between releases. -- Single repo, curated release (no dev→public mirror). `.abcd/**` never ships. +- Single repo, curated release (no dev→public mirror). `.abcd/**` is in every + repository checkout — marketplace installs and release source archives + included — and never in the released binaries. The launch bundler denies the + namespace structurally, but that filter has not yet run on a cut release. - Never commit/push without the maintainer asking; new deps need sign-off. diff --git a/.abcd/work/DECISIONS.md b/.abcd/work/DECISIONS.md index 3c7d9f6b..96d84aab 100644 --- a/.abcd/work/DECISIONS.md +++ b/.abcd/work/DECISIONS.md @@ -956,3 +956,33 @@ parallel-agent merge contention bites. Repro: `internal/core/rules/rules_test.go`, `TestMergeNilBaseDomainsAddsNewKeys`, watched failing on pre-fix code for the claimed reason (panic: assignment to entry in nil map) and passing after. +- 2026-08-06 — iss-183: of the two fix directions the issue offered, REWORD is + taken and wiring is not. The descriptive instances now carry the + channel-truthful phrasing iss-43 established in the README — `.abcd/**` is + present in every repository checkout, marketplace installs and release source + archives included, and never in the released binaries — with the launch + bundler named as the implemented structural namespace deny that no cut release + has yet run, rather than as an operating packaging filter. Wiring the launch + publish path so the deny actually runs on a real release stays open feature + work with its own design questions (the marketplace manifest schema has no + per-path exclusion, and `release.yml` uploads the binaries without invoking the + verb), and is deliberately not assumed by this wording. Two candidate sites are + classified exempt on genre rather than reworded: `01-press-release.md`, which + states the intended product in press-release voice throughout, and + `04-surfaces/04-launch.md`, whose mention sits inside its explicit "full-cut + design" framing and is already truthful. One instance the issue body's list + missed surfaced only under a case-insensitive re-enumeration — AGENTS.md's + working-tree-layout line, capitalised "Excluded from the release artifact" — + which is why the closing sweep runs the three phrases with `-i`. +- 2026-08-06 — attribution epoch: the full git history (main, all release + tags, and the open work branch) is rewritten to normalise commit + attribution — AI-tool author/committer identities and two misconfigured + machine-local identities all map to the maintainer's account, AI + co-author trailers are removed, and every commit that had AI involvement + carries an `Assisted-by` trailer (the disclosure convention; added where + missing). Every rewritten commit's tree is byte-identical to its + predecessor — content is untouched; only hashes and attribution change. + Consequence for the record: any commit SHA cited in records, receipts, + or issue threads dated before 2026-08-06 refers to the pre-rewrite + history and no longer resolves from a current checkout; treat those + citations as historical, keyed to the old epoch. diff --git a/.abcd/work/attribution-rewrite-2026-08-06/README.md b/.abcd/work/attribution-rewrite-2026-08-06/README.md new file mode 100644 index 00000000..68bd890d --- /dev/null +++ b/.abcd/work/attribution-rewrite-2026-08-06/README.md @@ -0,0 +1,32 @@ +# Attribution rewrite, 2026-08-06 — commit-id translation + +On 2026-08-06 the repository's full history was rewritten to normalise commit +attribution: an AI-tool identity and two machine-derived identities (one of them +an identity git had auto-derived from the host, never typed by anyone) were +mapped onto the maintainer's account, AI co-author trailers were removed, and +the `Assisted-by` disclosure trailer was added wherever it was missing. Every +commit tree came through byte-identical — no file content changed, only +attribution metadata and, consequently, every commit id. + +`.abcd/work/DECISIONS.md` carries the dated entry that declares the boundary. + +## What this directory is for + +Records, receipts, and issue threads written before that date cite commit ids +from the old history. Those ids no longer resolve in a checkout. The tables here +translate them, so an old citation stays readable instead of becoming a dead end: + +- `sha-map-old-to-new.tsv` — every commit on the default branch: old id, new id, + subject. 725 rows, validated position-by-position against tree and subject. +- `tag-map-old-to-new.tsv` — the six release tags, with the commit each pointed + at before and after. + +To translate an id, match it as a prefix: + +```sh +grep ^3377980 .abcd/work/attribution-rewrite-2026-08-06/sha-map-old-to-new.tsv +``` + +Both tables are historical and complete. Nothing appends to them: they describe +one event, and a second rewrite would need its own directory rather than +extending these. diff --git a/.abcd/work/attribution-rewrite-2026-08-06/sha-map-old-to-new.tsv b/.abcd/work/attribution-rewrite-2026-08-06/sha-map-old-to-new.tsv new file mode 100644 index 00000000..4edba6b3 --- /dev/null +++ b/.abcd/work/attribution-rewrite-2026-08-06/sha-map-old-to-new.tsv @@ -0,0 +1,726 @@ +old_sha new_sha subject +85573f396f09b71eee0e8848bdbddb54ec87c2fc 488a0aa96ac5de805348635b27036addf15cddc2 Initial commit +862485494be1f03cee6c1baa41fd7dcb36e7363c 27b600b1468fb6af337d1b80338644790545f14f feat: scaffold abcd-cli — Go rebuild foundation +70f795dce5dee68695fea7ab693fb6f7794cc69b 5a0aa2c69a95e245c6f9e592e063747ac8ed6032 ci: run gitleaks and zizmor as pinned CLI steps +091dbcaa9a7339c4e39cf0abef4ed294b20e3e76 6ceb39ac2d98df3e3b7701c98853616a4827ed5d ci: pin zizmor image by digest +246ce00398a2f76561b89b780fe15e4e741abfa6 9cd59304f10cf2bd5d40800f2d4d21dd1ea729ee Merge pull request #1 from REPPL/chore/phase-0-scaffold +20e15ea2e22c7e84c91ae40e8972dcc7b4fa3914 157e3ac1f76a4dc57e053bcd9406bb53fd2d91a7 refactor: restructure design record into flat artefact-type folders +4defad67bf6928930a7a0c45d371f90435dad05b 2ceab9cbe1273c95afa034b2ef7ad43592154cf9 Merge pull request #2 from REPPL/refactor/phase-0.5a-record-structure +29a7f7880adbf0e3200accbcd6f4cd9c45ed5b25 ad25573e3717686bca8ec7829e58d32bc0b0db34 chore: add local branch-protection guard to pre-push hook +aedd123e0fb9b272194c4d2514a8b720e9db6ec3 3fa9acf47077ea0054b9ef7e33fe75128d6096b1 Merge pull request #3 from REPPL/chore/pre-push-branch-protection +9b4e1e5c41f0649278e99fbecaac232e50ff1d12 1fa14ded45371923f7af87763bebb3057c4ad621 docs(reviews): add plan-consistency review of .abcd/ and docs/ +737c02788c39c64da612e957917509f41606458d 7eb30b035f55a38e1fb226b824dd63e7df9e3c5b refactor: rename ADRs to 4-digit NNNN filenames +ca564f1c7dab16ca2d80cb6eafe35d5cfc8345e4 e54e4947e128b5310361eb91261fc2575dd93608 docs: reconcile decision record to the Go rebuild +89f8321b7bab27045f56d8b3226bef3edbc47b6b d968495a0f25f23fd0e138a2468fcae245cdf7d4 docs: reconcile brief to the Go rebuild +426be533a408b538aa7ce167d84a049a8cd329e1 2e57c8a26ee9473493277877456a75bfca425d5f docs: reconcile intents to the Go rebuild +87c81fc14d6a2e6ed35d22264c497bc3cb2c0311 5ae72d5847ff5076d8fc725559cc6498e9bc8d14 docs: reconcile roadmap to the Go rebuild +3ebf7dc119bfa05a078afa8af62143cc23c25e27 1451cc7e73d7d92f366dbe2c064c134268778a18 docs: promote Go-rebuild plan and record-IA SOTA note +c2e2a375afe0e09c8d747b22b9a0844cafbe9948 97fba95018c2f9e9c367291de2ec72f90aa24279 docs: resolve ADR cross-links to relocated intents +ae42e1ea52c6ea229c62a0e595c5ccdaa537d5a3 2dc4272d6f138077c261b0ead36ff2fff66e192f Merge pull request #4 from REPPL/refactor/phase-0.5b-record-reconciliation +9461ae184834c143784ce7f8290738418d3e541f ea0dc9b85618f61dd87519e37b5b46fe165f9a5b feat: enforce the reviews-folder charter deterministically (RD001-RD003) +87b42edd245ac5fa96cbafcd05446664e521aed8 ec03a65191ffe00d5f373759a490f16325412734 Merge pull request #5 from REPPL/feat/review-charter-lint +dcfd6799c9593ce354d6c72310a830542daa5acd 945d366103545f9498248f64fbb7b341805307ef docs: Phase 0.5 mechanical record hygiene (frontmatter, paths, dead links) (#6) +e0473032dab24ec367ff9e030518a56e5aa8aae6 50a3e2a9c44ea23f2a9bd1c503bd1808c0fbad2e docs: reconcile 12 surviving brief contradictions (F1–F12) (#7) +1751cf57eed2dd7c28b62ff4120e783a4e21bb94 221e7e291860724406ffd6195c58ce112ee78a8c docs: add READMEs for 16 uncovered record directories (#8) +ffa28d2b5a52c42d33a8b0780b5807e9c2a1e99b baf9b94998ef456114af9360024281e876f77a69 docs: collapse ahoy to repo-only; finish single-repo reconciliation (third wave) (#9) +f5c18a6a24939a28ec9fbf488681d708c8f0e4d6 011e837e6fd22807cdeb812ad2f21f8d43745a6e feat: record-lint deterministic drift gate (internal/core/lint) (#10) +7478e6a5d866c372719033f8395305d3df7e65d8 0b40b5c8bc0218b8aaddf345bdf5c5e2772b09e3 docs: prune historical artefacts from the design record (#11) +117f8a04fe1a17a7f4341b1a6a3ce9a6fb9cab70 7502426f69d7ff8bcee04f24b4933d30aabdb7a2 refactor: rename spec-id prefix fn- to spc- (retire flow-next) (#13) +8648309274ed9aaafccaf52fb632856d4c77b341 df9f2e7bda15e6b49c15f7b0583328c47693fb6d refactor: re-baseline the intent lifecycle to the Go build (#14) +08bffa2662f6936b5bd9a2c4ea7bfc9a76f8d82b e30e89c3de643ed5a0ebc0103c31f937c4492fc2 docs: reconcile terminology drift and arm the record-lint gate (#15) +a4cbc42b8e52bbab1d6328ce098f2e50a0f3c288 a597364ebf0ae085cf2ee3bc01eea149a69718a2 docs: add derived-versioning intent (itd-73) and ADR-31 (#16) +9a3d1263dc77b7b0c9dc04bebea4828bcf334b64 1894ab715933e2e7479b07d994eba70d6ddf30c6 feat: Phase 1 — abcd ahoy install + launch dry-run (Go) (#17) +b9fca093b61e4aa3fdaa84109789cd300957de3a e6f624044e9dfd73905ef49745930d11ca78385f docs: name the deterministic docs-currency lint layer in itd-60 (#18) +8801cd1dab149e0626c663043ec94cade8593d23 7f7f58cef89be98f39d24f45e5937715aa6f5250 feat: itd-60 layer 1 — deterministic docs-currency lint (#19) +91ed8e712fc6c08d44f57615483a543e3dffc6c5 5af8569c93e918b55210bc5ce5b04ae06489af42 docs: adopt abcd branding in the README (logo, comic, badges) (#20) +f4450334a3d53c5a510f29f6be853219479ff8ee 3474bcdc56a76826738435cc3363229419098ca8 feat: Phase 2 — native history store + capture ledger + memory (Go) (#21) +3e25923a3e7b639de0e7b9790f7d86a9f3ebac53 f29fc1a36ef6efdba1f6a6c28920935f331cd996 chore: add tag-triggered release workflow; cut v0.1.0 changelog (#22) +d77e69a5b3468b4eb29fd12ffec70af89f5eff3a a00f489643f40fe269f85625f1fa9eeb0b00946a Update README to remove plugin references (#23) +4bfc162f29260e15bc7f2d9396463a07a7e95e7d bebc422420333221149f53139ba5541062685903 docs: generalise host references to keep the surface harness-agnostic (#24) +c5772930346f6c04e594e3361c8021b0a0650262 b0a8dbbc32f8aa357d64e9b582ea8148ec3a41bf feat: harness-name prevention gate + name-banlist intent (itd-74) +4f067a6f923a1854e0e81d030a36a2c2f6c42acc 5fe371140193d9db67456264401910bf0067a5ef Merge pull request #1 from REPPL/feat/harness-name-prevention-gate +df70c609c2b9249b839526266c54722b040d70bf ba4f5ea5ceb41bbb4cdbac86e2e60efddb9dd17c feat: self-discovering CLI smoke harness (evals/) + eval intent (itd-75) +38b89466a9bd389bd4cc3357f8d6517c84bfdac0 bf9cce11ff9c6b20b407bb3f25cbd999cea18fed Merge pull request #2 from REPPL/feat/smoke-harness +b62859fd85d43c758622f8dd9bb1ed8a235bbe85 b4d63d900713e85b0f28e171f3d72f03ea1d224a docs: acknowledgements, AI-attribution policy, badge fix (#3) +4c4bf7f3994ecbcecbcf91653f49dfa9312aead3 20fa17f2b3abec949f8f321a7bbb08724e09a7c6 feat: dependency-aware capture ledger in the work tier (ADR-32) (#4) +be8ca371c991eca3842ac33d1f2f231ad85bee08 4fe330a73e2e9976d7da72261b459e97ebe437cf docs: drain the roadmap-consistency triage backlog (iss-1..iss-15) (#5) +87afbb64929c76b62b89627944b0f0071472cb31 37b0bc3899ef938828861cf7714dfee9d85f04e3 docs: sources provenance design + intent governance sweep (#6) +12f0c15f41e6034d4c41a22301e1c61222f3e14f 52cefbd17be83bdf86e334325657dbe6ed1c2d46 chore: capture intent-sweep follow-up anomalies as iss-16..iss-23 (#7) +895a78bef44a453ad1f84db839efa9943214cda1 12ac2b1cf9c3f92c4a8593eb0042f683b1aaf01b feat: persona_registry record-lint rule; promote personas principle to discipline itd-79 (#8) +fe4d1a0e6fef41d99bfe096e7189752c529c157e 5adbfe095ccabd00af37b81bccc55cf980335aa1 docs: adjudicate the intent-sweep anomaly queue (iss-16..iss-23) (#9) +3d9ffce90c0f1c05396190d0685d0e541dd11dca f371b3e1fb86d8e11a21f85472ff785795503ff9 docs: itd-62 references the originating assessment via the sources ledger +e483d53f0699548217c6a762c94db72ac4f905aa 2235243aa6d035f91d560af1efa9d94b1d7bb297 docs: credit ccpm's spec/task conventions in ACKNOWLEDGEMENTS +3c8e048760cf12953784ded5e0098238b59ba695 cf3411c52b8aa648764ab89000c0e6a3ffcf5740 chore: capture changelog-fragments seed as iss-24 +73245203c50dfb0875b1f2c820322b48cb1e11b6 a13ea2d13c7ddf5ceebda2d5b600ddd8ba7c6d3f chore: capture related_sources frontmatter seed as iss-25 +0a1cb806d45c71c80b098d416f7fec89be050a28 6584cf018de5d0ab41ca95001541cdb0da185109 chore: capture sources retrieval-seam seed as iss-26 +c6c4c3a921ba3d38a5c64fcbdc9ae889e428b9ef 226e6262d28253262c7d032974b687fca89b8ee0 docs: script-first-mvp principle; capture Go-absorption seed as iss-27 +57f70221a35cb116b0ff87142799dd4acd4907fb 38644546d457dd6be445b8e996dba939bde403a9 feat: /abcd:consult and /abcd:ingest skills over the sources corpus (#10) +a3ca6e7c8220da77fc14499e2efdc6d0027bcd31 6f2b492c3c1b2de6a784ee4a242c2e476f74f2c3 chore: capture hermetic-git test-env seed as iss-28 +b19da7a2370fe114bc59a64c4de11809c3f55e31 d59e7c3aaf7cb577d9fa2f5aa93ad400b2ba3d1b docs: record ten review-distilled principles +41a85ea83d1351382cc8f7d83af8efd6c3422dc4 e5ff108b912106e24ece30e649012a60fe0ba019 chore: capture 2026-07-08 review findings as detector-shaped issues iss-29..49 +97c4d376f7d3336beddbc43b4755da5a6099ff50 80a8f0d4a8805851252bd95c43eeaa66aceaa090 docs: research note distilling the 2026-07-08 multi-agent record review +67b7a6ecd5acc630c90ccdeb3a36896b036e7e5a d15831120d038fea3603e652e9595a92e343c99c docs: research note mapping the ten principles against 2026 SOTA +04400792b05486758275666fcb9e7dc6a6ac67a0 7bcb4f864a32d3083c024643cfdd1ad915add592 docs: record the independent oracle cross-check in the review note +4fbcd8638c6ce3ae09dca8185247846f3a216284 fc3c58ce952b9d1dc72288a178bbf7309d1bf384 docs: research note reviewing the lineage bibliography against the principles +567c48f77bf6b3ccaf45c1d941a85c77a5ad5bd2 9294e876f6c952a3b0aabea079f45b8af3902368 docs: correct one-canonical-primitive originality claim in SOTA mapping +a93bcdcaad171d44f8547eeed2029e605ca8e0b4 917c1a35e6abe94a96d20751d0f63da9e554522f docs: research note recording the practice/MVP/tool extraction run +0aaa4e184a01cc962c9a7311fb477768fb8263a0 e98b6a356cfbf3c8b664a4d3a0c82323f7b6ada0 docs: amend the promotion path into the canonical three-rung ladder +f4a4a260020dbb46300c310dae6bd7cd53c83bc7 3e49ed9fba139ede8e6daa3d1d7e06a00a1dbebb docs: record three verification-layer principles +39494f39125ad8f5cbe5f15da5740a578751128b 0e52bf2b60fe81d06a7c8cded9b7c1a10773acc8 docs: fold detector lifecycle and bidirectional proof into existing principles +7e6b661c297e272312fdcc9a61c0968822d8be58 76b51ce423c918a836236a808517b2bdbc7fbf88 chore: capture 2026-07-09 extraction seeds as iss-50..55 +7ffd2498c591cfddbe35c4fc2d3eb508c2d6a967 4a802ae3b213ec1ba8c1c021062a1aee3e82d472 chore: record 2026-07-10 session decisions +5fe810e4ae4d2115cbc8836de74422f3a125c26e e295318291add3809e5e90575ec2601a1412b85f chore: record CONTEXT status-free decision +2f3a60c315a3d57b6f64d2103ac8805bda657874 09b02f21100d0af87520ac26511d36310730456c feat: add prepare-this-repo skill (#11) +7946461082c0662665eba57f087589a11eb4b02c 355dee4181c238bf42ca434247a5b1068f2f4e28 chore: arm retired-name banlist in record-lint (iss-36) +b9b2e6a471432f0dd7c72868b20af7ac05cee677 61f60ee4b49657bd9d7319cc9c3c0454db175c23 chore: capture iss-56 and iss-57 from autonomous-run slice 1 +fae751b68d413fb271b677918a28076546b072e0 aa59c891d60e3a8befafac796cb59358503a1071 chore: capture iss-58 — history store bootstrap blocks transcript dogfood +0c2ced18c2ece2228cd4b95fbd4dc202e56d5b4f 76f4706d0fd8ec0657ee60b617a61f0c2716f39e chore: record iss-28 reproduction mechanism (GIT_DIR leak via hook context) +a494749c0617cef6bf178dcba70e043eeaea20f1 02325469c791a73f09e36eaa0de801fe9dccf9a1 chore: bump iss-28 to major — confirmed GIT_DIR leak can mutate the real repo +070c0dbf25df2b1a88400d0664990b9f64fe274e 75dc9273bcecd6228914c55c3d93e2f598adf264 docs: sweep retired names behind the armed record-lint bans (iss-36) +4837160340860492e5bf361b781679c2c000822c a926889f1706dd9cd0189205780cb904068ef6ab docs: fix review findings on the retired-name sweep (iss-36) +da8740e4c18b13a010cd472b46b97776a3b467cc cfd589b3ab76a246438a0d70474839800c316460 chore: resolve iss-36 — retired-name bans armed, corpus drained, review passed +f6c59374eec639e745925b7fb6dd907b10a3fd81 c2722d51d36cd9af056864ceb86243536490f326 chore: capture iss-59 — two-layer verification lesson from the iss-36 sweep +ae16ddde16beb8955277f87faa8ccf6e00df483e 58088d4be975907458019949e7bed88c028cc03a chore: capture iss-60 — agents must revert with the editor, never git +3e668bc09d16b01f5978388cfa2702061dec8224 e497eb4d4f8b4cbf8642d854fc3b7e7eeb0df194 chore: record iss-35 detector run — 150 brief-vs-surface discrepancies +cf924964df87de955213f2fbf8b7470185122ca5 3beaa62b87873691e997e0ddc5ee940e0804a14e docs: reconcile the five worst surface chapters with the shipped binary (iss-35 batch 1) +a861616104718678cf0482bd77a6c25adcd0e3f2 2dae1b0402b1aa6dbce5364583d9b72834440a1d chore: capture iss-61 — launch payload drops shipped skills +1bb9ec2e99945f0285c0bf23a8d4341e71b30067 e74cbc20870f33209fb8be73d8026e1e8d4d1c74 docs: reconcile the remaining six surface docs with the shipped binary (iss-35 batch 2) +162075174bac2bd96e0663987dacfdc094a48353 2293900d3da4d43ddf531d838d4b057538d99a8f chore: record iss-35 reconciliation batches 1 and 2 on the ledger +ec34c7426b14284c5e80d7ddec964a82131b42f6 d0b66e8bcb04d432988464e664262ba41fb27aed docs: fix the direction-A leftovers surfaced by the iss-35 detector re-run +e305052b457e28ebde3930c140d7a3664ecaac0f d35790b65d671cbfaa7c04421af4db4dce29a1a3 chore: record iss-35 detector re-run — 150 -> 24 ratchet, 13 leftovers fixed +68052aebd3dd0245eb9e969609ed6050534fd883 136ecaebf4079ea08aa4effb6f4a75e17c860236 docs: record iss-35 record-lint graduation as a design gate (STOP for sign-off) +1ce345d2e16b112a57c65b6430f86f688bf1c4b5 5f68fa4790558ff01385941dd376edd6735adebe chore: mark iss-35 graduation a design-STOP on the ledger +19aacbe921f110ac361d5345003d21fae11157fa 832bf2e96a7a44408a2a53e7cb09ac2993891940 docs: record iss-35 graduation sign-off (Option C; enumerate; reclassify) +a2047d7eb5b3df2b2863b5404e41b3b6232a2462 080b614c4d6b72c4db8b16e94708cee4058c4f83 docs: enumerate docs/history/version as user-facing surface chapters (iss-35) +dacf89b303141e43a287a37834050eff21c49d18 04a0cb7d508c40ab25300c49c28ae732802a0ac7 chore: capture iss-62 — managed-repo git-identity gate +1a1947da663e3c2441e2eb6442693877aefa3b36 8e6d6e39afe6df3f1d5d691ced1f54133e95c77c feat: add context_status_free record-lint rule, wired to CONTEXT.md (#12) +9244a8018cea05aaead9a2bd047419a297793357 86e129eef5e5d324b3cc26a9d7a27a03fb01d916 docs: reclassify consult/ingest/prepare-this-repo from skills to commands +740e8df816def73bcec9203db8713858b65055a3 953da1d89a77b9f873892005f87ec23598c276b4 feat: managed-repo git-identity gate (iss-62) (#13) +b76112b65fda26c5148dee42f32985cb5d49c7d5 8e5193caa0bb5c284f50d7e0b00a69993b4667a3 docs: CHANGELOG calls the three reclassified surfaces commands, not skills +d2a6f1e68b26a862a73f2f1c1b3ff64af603a4e9 c4bc5de4a103a6730a7fbffc91d05f6f7597f314 feat: surface_coverage record-lint rule (iss-35) (#14) +bc9e915b59150a7aaddaf3d1a6621f242857cbb5 369a045dbf22fc356cb215a2a1f31b1a31c5590d docs: prefer-sota principle + iss-35 semantic release-gate design (#15) +d58c81c998f07951cd227a0bb7aa65f72cbb0a94 676fc0ddcacbb072b06aff1316565dd6c3f35d0a feat: semantic release gate (iss-35 task 5, VSA, signed via A.1) (#16) +7675dfa4c90831dd7a64208ac0339f4e5f042ff4 f4bedb247c56ed08ed6e5712070ee827a43b682a docs: record itd-3 hook is Go, not Python (Go-only) (#17) +8a83a3749b618bdd510a7c25a4b0f05b3582a204 a0e27129b60c85c28131df1b7c43d35ca8ad8de4 docs: itd-3 rules-loader SOTA-verified design (design gate, awaiting sign-off) +2a5746ea8260e3d88335c13c61f1bbb69bf01a26 b4ad4e683025a8092519f6afc0f0572c063f5696 feat: itd-3 phase 1 — internal/core/rules loader core +6aa47484b2aefebc8312ec2fe5f4266dcbd6bdef 244398f341f5aa10955f45738074e572e387a42c feat: itd-3 phase 3 — abcd rules [domain] verb +c42d6bff2b9af36b0e6b5275634a8bed1d435085 d6cfeb671f6eb72d5eea7e56018a3a5ab2a6e262 feat: itd-3 phase 2 — prompt-router hook (trust boundary) +e22a6c51e457beceef391a6200e398cd1d60bca1 26359beffb12fe4ba0eebc79015f2399d6333c2c feat: itd-3 phase 4 — ahoy wiring (manifest + marker + verifier reconcile) +1ce39df47dbba48ac506a51a9d6a903b34525b88 a755f92af7fdf13b0625924abeb52e455f810f9c feat: itd-3 phase 5 — OPINIONS default domain (pointers, not copies) +1f173b10bcb26bd09c4ebe509aa4eb5151c21dce 5d639f061cc46529dc42d1bce2f6603c0ff04c6d fix: itd-3 wire force_refresh_every_n + address review findings +982988aac9ba98b99d963c1b3143aa9761003c78 a0cc55ac21a1cacc6a48939b24131bc70d96b828 docs: itd-3 rules-loader build learnings note +53e251fa050581e342a88447e39674142a44e0f8 a3d6bc60b7bab626bc7550edcfafd2c90d44271a feat: itd-3 implement deferred follow-ups (stemming, prune, .abcd guard) +052595793fedb064c82b646a8be5978aa132bc29 d399cb464d498ca28311205b3781e480fcc4b191 Merge pull request #18 from REPPL/auto/itd-3-rules-loader-design +b5f476d82050ebaad406767ba921da70eec56c6f e5fdf97c2762f570c031c2b5afe7ad5fceb761fe docs: ship itd-3 (manual fidelity audit + planned->shipped) +c395004033fd5c65b7e51b07f68d92e41054e6ea 31db06c853d51c03db9b68c244e81507b709b297 Merge pull request #19 from REPPL/auto/ship-itd-3 +3931dcf8979aa98cc6e5dfe81a6480c054253437 60519bac0ea6089b38a210405a7214dd545d8b27 docs: intent-lifecycle SOTA design plan + rules-seam follow-up (iss-64) +95964547642480c555d4a8177aab3a9a4482ba2c aaf183bafbfc69343cfea61a7d005e00d5693e10 Merge pull request #20 from REPPL/auto/intent-lifecycle-plan +3551a96a8d8cba720a384dde0f026bd4092321e5 89c443ca9608e1da90cd29973318d54c424c3074 docs: add sota-per-intent principle (#21) +9bc05874dc0af42a501bc279274e16723d07aeaa b70a40f2909c9a9f3b5bc183f9cdeec36e1343a5 feat: itd-80 intent-lifecycle slice 1 — native spec store + abcd intent/spec verbs (#22) +530e584b768f9aa0fbd3184baf4b746651a894d9 dfa39b15bbaf01478861d158a0dda2c19f3d651f docs: itd-80 SOTA declaration (dogfoods sota-per-intent) + run-learnings note (#23) +ecde679fc3b751acd6b8772cd263685cec56ab9b 385d32998652f8baf05229815a36515233e6b7cf docs: itd-29 refinement — pick up out-of-band merged PRs + SOTA declaration (#25) +2f740da287a654002f7c744be596bed0f936026f 7625616fb9d4d81c34dc26485b87b061525f8e48 feat: itd-80 phase 3 — reconcile on spec close + spec_lifecycle lint (#24) +058072db46b8d6eb57f4fbbf08bd8834f843ef1f 6491a1c1c8a212d138c7e8af3ebbe26c830d1115 feat: itd-80 phase 4 — host-delegated fidelity verdict ingest to Audit Notes (#26) +b1ade8cefa15c5785d57f00792dbc73d188e3853 026472a186ce3e322a233117b71b061255dbff92 docs: ship itd-80 through the intent-lifecycle pipeline (dogfood) (#27) +332a94c59d1eeb5e9b0e7b56e1667f7fe48e4b92 7bbb7568f3aa46c01365f3e9b7e9c6ff8015d16a chore: triage clean-slate hardening backlog (iss-65..72) (#28) +fcebbc75cacdbede4a9370c16f69d6888994d142 7b7dca3804061e17de835ed6f393017ce962e96a fix: bind release receipt-gate to its detector, fail-closed arming (iss-70) (#29) +5a496967d8a36ddadfdf8c0dde3fb5fbf9281595 89e9ca1d52e4588556ae3fd401ba87e3e9c966b9 fix: mask sibling secrets by byte span in serialized scan snippets (iss-65) (#30) +b30b1b566b148ea54b189d5b2c48a3eb0e4e5bee 83e4e99b545bbcbb620bfe107e8725194df0005a chore: resolve iss-65 and iss-70 in the ledger (PRs #29, #30 merged) (#31) +71196a0c5994d06e6ddaa42945dd07af7edf0aed 9e5569657658e87a86e71a9935966a8d2b778429 fix: serialize issue-ledger transitions + validate ForceID (iss-71) (#32) +f0f7f63c0fa2de4e023f15e9d95a125cb2a61e75 c83b2a1ced50a31343244aa7a557b40cbfddae16 fix: rules-loader guarded read + private session-state dir (iss-66) (#33) +79ca3e8acfc38dad09368052ad32bcbddcb5df84 340f4258e57372b5aa03aadfedee086398e0b63e fix: report IsGitRepo in worktrees and submodules (iss-72) (#34) +679d2ea2762eba8ab11e42b697403d93871718a4 7e607ad05ddc469da7f2da36c32da31418543859 fix: align intent Plan/ingest AC gate + clear audit placeholder (iss-67) (#35) +34fe6cfc93942b2e095f8e294146a2ca58d93ace 3110d439ed837f27cb26d8c5843872aff2b098a2 fix: frontmatter delimiter trailing-whitespace + consolidate lint scanner (iss-69) (#36) +62c38b634dfefee1bf22c73cfc7e62e6ef6d452a 3d7d8a39dce6a3e7d1b177208572a19a1d103223 fix: spec-store open-once read + fail-closed spec_id scan (iss-68) (#37) +7d4972f2c490b73800a8d991747964a38e525bf7 a1489b8cb0bdd7032b8b63d9027751ef8d8b155d fix: memory-ingest fetch/read boundary hardening (iss-30 subset) (#38) +26c116c6220e734fc3081a69284ed13f502acf9f 11b57fd509e26219e6faaf0af80102ab2892f970 docs: design /abcd:run autonomous-run loop +b3c4e6a826979b3f69cacec4536e952e39f49d45 642463c9200295f56b8869aca541b55c77d2f8a2 docs: add /abcd:run protocol and abcd-cli ledger-drain run-plan +09cb28adcb2255928a4448d68f49d6b2dc9f7524 d9536f88d265d4c82e0cecefb8ed817522f79b60 docs: add local plugin dogfooding runbook +9c9aa694366ebd4af3f41056b5c4e27115f38d00 7eac07852ce2598f12418cd9b005110afc01af87 Merge pull request #39 from REPPL/feat/abcd-run +0c7a82cb7d99e938626cb8783ba6fe433640cee6 a79e793d7e38330ed35fb37a51688f73b261e821 chore: capture dogfooding-surfaced abcd defects (iss-73/74/75) +c4ebffb5b52060f76d029f57287614edb3f90bd3 9969643982f72bae695665abbb18b24dc0cffadf docs: add principle — workaround records the defect +247a5b859d0e20338e87dfc697d687849b654a07 acd3646c95db29423facc02a1f659f3586e7183e Merge pull request #40 from REPPL/docs/workaround-records-defect +3a801d6616213d196b6e0dc529e59f909be3137a 1aee84e6aab8e545e0a1f8fa5cd79d5bd70c07e9 refactor: extract cli.Run for testable error rendering +5c4542d894560799f00cabd2b6e0a535b6203288 77cbaed3fabe80f0aaf6adfb78d62bcec2b34b81 fix: fail-closed capture surface (iss-29) +effa17c51eaee552dd258441cbd945aba6dcb799 e3f10da48a44958d477ffdfd3061163bb371b821 chore: capture iss-76 (json error surface leaks absolute paths) +4c30b4e6e950c8fdd9c96a3e5a6f7b37b7ac073a a0b00a2aed61504bb68510a55d0150ada48228f1 Merge pull request #41 from REPPL/fix/iss-29-fail-closed-capture-surface +61d779460520ad496f085c73b5d271468781e7a0 0d9e4f8f37165715d44a85906816746460d2d0f0 fix: memory-ingest partial-failure reporting + CRLF parity (iss-30) +03188c28c6e285abbd8b276fce734fff75cfe29b e36a4b7420bbddd670caf99ae39750203ed5aff0 Merge pull request #42 from REPPL/fix/iss-30-keep-original-partial-failure +d549311b16bf19a8282ec41931b4ce90954d4fe2 755ecc9af627e4c2c3e64acea1be48b97976d973 docs: judge-calibration discipline (itd-81), amending itd-5 +b3811ee8d2170c16be33089b30854e1021f4ba8b 20d6e288b5010e155836373af8347b89de529ebc feat: ship four reviewer agents with the plugin +cd8e13655de07c8514bd8de0d84e9b3a7421adf6 143c4c21253b6c7637b8cca2c655fa72e0f03f05 fix: launch identity false-positive + resolver race (iss-31) +0bccb40171e1a2f3b9778926ffff878add595045 b83f1bdb346a577115525706661e9c9e4e8baaac chore: capture iss-77/78 (launch dogfood-gate follow-ups) +32b6aecb66318fd117b9ebefe709f5269874a82b 385702e82cb6d035ecd529210fb3783cace95993 Merge pull request #43 from REPPL/fix/iss-31-launch-dogfood-gate +d73402fbf2eb9ea2c6ee02a4e19bb85796f3d578 0f18dc7115b40838c565411c9e0e42457fd22a95 refactor: consolidate atomic-write primitives onto fsutil (iss-32) +54fef5f3aed88b57ce396107c6aa426cc690301f 5bbff87a660f8ff50da0d3986de332a3095a57c2 Merge pull request #44 from REPPL/fix/iss-32-atomic-write-consolidation +be86b00011d1d761ddd9e3a38a10eff82cec5d46 4e150c5afab2e2fdb2104ef8aabee812d777c68a Merge remote-tracking branch 'origin/main' +cc01af7db15df63ec6f9ce870fdf80623d971f46 664e0e8fc0f973bac9f51a9010ab00e8061189e2 Merge pull request #45 from REPPL/feat/reviewer-agents-itd-81 +5c022981bfdb953b782383d717205dcf8de22853 4ba46ce2b225f5546c95ff845b47441c658c2cc8 docs: add itd-82 (abcd drain — ledger triage) + drain #2 run plan +c5ba73a90d3c0a3e9990a8789b474b8f58a8c53e 2ff4253a349715eb2f9c6fa5b134c729c9850e09 Merge pull request #46 from REPPL/docs/itd-82-drain-triage +1047de34bb651bbdf22caaad6542245254c19a37 47a82a75880fa429280611cee53c8613bd49fd38 docs: capture itd-82 — wire the review bar into the rules loader +137f8de25522d765a73d93086d1b055b9339db5f 14514dc63371a9149dba7c63b6b361c422b2747e Merge pull request #47 from REPPL/feat/itd-82-review-wiring +1f833fcef4085ddd5b56ca93c9229e3b1a260a2a 07d986ba07caff5628b108015868c53435f85dd4 fix: block duplicate intent ids in intent_lifecycle +4f88f349bc14571fcbd92f013dca5494504bff93 dd8a27251f556e5a10c780ac75e1b6c23fcf9d71 docs: resolve the itd-82 collision (renumber to itd-83) + capture iss-80 +9b441cba59b7aa72507b9070e093a1d4fb5d590b ed3f6663f37c4f69f1af42bebf5113406dcdc865 Merge pull request #48 from REPPL/fix/duplicate-intent-id-lint +dab363e5edf76d3e788802f1cc9f006a8e27f25b 97c131a4ae67d257f929643e1da176e996f0e5e2 docs: add iss-73 to drain #2 scope (adjudication landed) +315ea5e08e43bab0b9d0dd5823f1a190f40873cd 61a76b1916b8ac4776f7139196b9e2b3304b738f chore: capture iss-80 (run protocol missing-plan-file precondition) +e9ab51384eaa85dec47e06751e90d89568850c75 dea64dbaaaccd57bfd34f3dd7abc388a9d99c849 Merge pull request #49 from REPPL/docs/drain-2-scope-iss-73 +459e576acfb631c45a20f59a7ed9ca4f66051e87 6b7adf7df5da661744214433ccc8f00d8c8432a8 fix: strip local-identity paths from the cli.Run error envelope (iss-76) +62ba1d0ef54f693fa7b06f718c481d1c59d79385 1326c99894d11a72fcb02131ec4591e150d47d0b chore(ledger): resolve iss-76; file iss-81 (review residual) +b604c625ff3256fd5b0e50e7fe0feaf671ebec12 fccd921b04799f1543f28bb3fc0209499d310684 Merge pull request #50 from REPPL/fix/iss-76-json-error-abspath-leak +688a0de302633dbe19dc1f1d35ab310ea9461ef7 e40df8d449f99fc9e5cc9413ff5632508dc37002 refactor: route storeOriginal through fsutil.WriteFileAtomic (iss-79) +9a33a2ffb67ca34be97da602641df1b5efe3b8ec 1c14e1a06ad710c826852f1e467498143ff54778 chore(ledger): resolve iss-79; file iss-82 (review finding) +1075bf245dc30cb240229471b1d344ba7fee83f8 91df94f4bb5352bd4138f07228fb9c2f7c9447e1 Merge pull request #51 from REPPL/fix/iss-79-storeoriginal-inline-atomic-write +1979bf64f0435ccf974f935ceb5f1659d03420e7 1f040fb6179092caffc75f8430b6454c2511c4b3 fix: relocate memory-lint + scanner runtime output out of .abcd/logbook (iss-73) +2c3d32fa2645bcb98574c59980a2e6692d0e1e7c 663853c1a3a925f7cd7686af852feaa9b7f8e735 chore(ledger): resolve iss-73 (logbook relocation) +069e62e477c9ea644fe3f6a5767655562d827b48 6ea2d02898af0f6b4c1d7658851e153ba85689c9 Merge pull request #52 from REPPL/fix/iss-73-relocate-logbook-output +bad7c9c5bb1b870d45d57f0f080b71d7b53d78ae c902a0c7bf32b142e4a8795f680f661211fc1da3 docs: add facilitator-default-thinker-optional principle +cc055c9a997909a683be997d97a3aaf710802f30 35f7da36d285c5b192f8001ae8f638b52d420192 docs: record the scoped auto-merge decision + link it from itd-29 +f5c80fe69188336700e246a4a19d56016b512c14 949f26927b4e55ee9a4d9639d87a0ea10f9af56a Merge pull request #53 from REPPL/docs/auto-merge-record-groundwork +00b934aca037052551f4d0972d69acafa8459eab 7ce354ed78d32f80528f082ef48d25c380d7b9dc docs: capture itd-84 (intent-decomposition discipline, draft) + SOTA note +4dff7706bf5929d9aa1e7742facc35aeb3f22aa5 09684b7582ac9c8eb0967680be29a9cf7448f271 Merge pull request #54 from REPPL/docs/itd-84-intent-decomposition +546371f82a89e43b35b908e4e2da13e9d5080d55 76a798e168a2e155d8b0b4329735fbd4aed7667d chore(ledger): renumber duplicate iss-80 -> iss-83 +af807113410c59533373005fd274653425988322 bed1d3aa37f22ef1101b6b5ef6e5fac11fcab0c3 chore(ledger): renumber duplicate iss-56 and iss-57 +1f23b8ddd78425af9a957527bf05c00dccab1302 b38678810fd6c4cc25adeed887ce12c81126868d Merge pull request #55 from REPPL/chore/renumber-dup-iss-80 +de044a98dd6e8750affe1f719d9443c9aa631400 a6fdcedcd5b4a0825c1609c2de289130f8fd0a06 docs: de-stale intent row and scope-note spec/rules surfaces +b1290b5be738161a54caf1fd90b93e4c2c3e4338 ef89066ee15b69983a5ad823b548ca0aca63dded Merge pull request #56 from REPPL/docs/brief-surface-scope-notes +35e1a57678491ecce89994d243e3d9fd88b4cce1 efa927e950981ce04ab5662276154b836f8884e1 chore(ledger): capture seven onboarding findings from Manuscripts dogfood +e70a16d2567e6244724c5526241fd192dcb724a6 4c1a332254f3b6621e4ceccb24b89daa45dc71c8 Merge pull request #57 from REPPL/chore/capture-manuscripts-dogfood +26fe20240e656cc43b66033bad222fe6c3b47203 50f378eb8be3ac20480d535276c787fb79a056c6 docs: plan and formalise the abcd audit verb (itd-85, iss-86) +19ecf4396d4bddd6c6cb688bbe03f065720472c5 4970fdce434175085596240c437c185f9fe9405a Merge pull request #58 from REPPL/plan/abcd-audit-verb +4eed8dc84b04209424469c15971b4b5a07aca649 75f190b58460b89024e54f03fec5a5cf21e804e8 feat: add path-presence and gitignore primitives for abcd audit +78c69c81825b9f32d7578e97fdfadbe1ad4b0abe 4805c479697d770614b67b2f3bedcc2b6f73fce0 refactor: route launch and lint through the shared path primitives +a532aa1b31f2f7ce88973d74cd4c4ace4c54a39e e4217d2bf689de2be1213f2261609c6f3b4bea28 chore(record): M1 decisions + journal for itd-85 path primitives +5da4d29221dc593bfc858fd86228e82f1f53ce32 28cf71276b57c72dfad141c934cd018818de5f7c Merge pull request #59 from REPPL/feat/itd-85-path-primitives +6ee690142104817c23b58b90acc1cf0d4664d8ea 64f7876c164039ba483836bca8a647a6463a226f feat: rule engine + serializer seam for abcd audit (itd-85 M2) +be7190b4d9f5ca163e4292c073c81ec48ea809c0 cc3992eb8ef73fca71bf790f9ec9a48f2df30bf4 fix: fail closed on a finding with an unrecognised severity +922b6ae16eafc131d712cedb13cf60905b85cf78 2b8652a7bd78f5c02884dd3749d47e16f54eea19 chore(record): M2 decisions + journal for itd-85 rule engine +3684df69e6bf2d8236ffe66c1a5d805f18bd8079 b6ef2caca7d31826851fb000abab6afa44f9397a Merge pull request #60 from REPPL/feat/itd-85-rule-engine +6719c36cec22070b9fbd2d199546a01b256a9399 6b8f5c18c65316caf5d6e5fcd5dbaa3e86e4b01c feat: add InRepo and TrackedFiles git helpers for audit rules +5982feecc6f3ba1e86cb9ad7b818890d0e5954f3 ebde2ec3582975bd1c0878bbee928e08eae944af feat: the five v1 conformance rules for abcd audit (itd-85 M3) +7dcd78a89dd7ad68f064759e82ee0bc9b29e45f3 83c59600b825ebfceb01091d6b11d9fb524402a8 fix: contain privacy-hygiene file reads to the repo root +d75beb248257bb850b2254d53d74c0364d3c30a4 1414f6140f2fea840da4a602acb26099ba0f1325 chore(record): M3 decisions + journal for itd-85 v1 rules +6135e70d7eda6fcede59e922f27a097db98aff21 8d819e340828dbdfc2469f56abe5624cccefb772 Merge pull request #61 from REPPL/feat/itd-85-v1-rules +3097485337d2973fcf4ff8451be7d511711480cb 7d6510e74625476daf3377abf855422bdbdf8128 feat: wire the read-only `abcd audit` CLI verb (itd-85 M4) +71b702276782d7a018467430cb8b7a1ab77862b8 26f732c255428b34041c6ff1f8c92516f88d4cf3 Merge pull request #62 from REPPL/feat/itd-85-cli-verb +909afe22a3bbcc12c72d221f56218d35cde1c0a1 6947945e10a60b54467df1ce9117ca7d363beea1 feat: ship the /abcd:audit plugin surface + registry row (itd-85 M5) +5574a72d4ce29b16ad9dd54d036cb9d8a5de9a3b 8bb0c44f99d0fce9ca932359dec0e72decb4aa32 Merge pull request #63 from REPPL/feat/itd-85-plugin-surface +2f1b78b8ef3577bd895d09bc9f4ee179f8154fd2 d7e6f8aea492ccef8160b2eadb8725fb89185e20 feat: wire prepare-this-repo onboarding to abcd audit (itd-85 M6) +61d7ede6752d5d690e902b19c80d8f205e2a5243 808c9bdd14143243799fa79773af5cece7be8979 docs: genericise the example path in isSystemPathSegment's comment +f5367cdec985c8eedb6aa796766832b3a2c54e06 719972f8efea9d08e0c5cd3a534435176b1979e8 Merge pull request #64 from REPPL/feat/itd-85-onboarding-wiring +d89aba474af587b522efb318af80184fe5af1534 ac2ce2e1c0d68ebf6600cedc7c70c5efa15b9e4f docs: record the abcd audit verb (itd-85 M7) +514467babc664dcd5ac60577ccf4d8a0c9c02570 a009a506b43ed01ef6f9ad7197c73b0dca21b5e3 Merge pull request #65 from REPPL/feat/itd-85-record +038a5834bb0d73ee8a8bcd5c5011f6c62861ab1c b8aeae7c5fb1272bfea1961b6c58d174125fe18c fix: tighten three audit rules flagged by RepoPrompt review (itd-85) +7d4149520ed17011f5008e4feeb89783467231d0 3d6c47e54eec6fa0db425d5162c84299bb1fda52 fix: treat a path under a non-directory as absent in fsutil +a9b58cd13556a7515bd6dbd3b5b22412cb1acc42 80a44355f9707cb5a7b2a01a089229cb56cde3f2 Merge pull request #66 from REPPL/fix/itd-85-audit-review +77357a954e7ae74b300e0225338c9019d1db8773 e7393893fc048f36a5fda180ef37ce2b6adb51e1 chore(record): the ABCD sensemaking method, its principle, and itd-86/87 +61cf985ae5197916282a79a8d7fcce479c2059c9 6f17fba5f3ea2ada1630f8eb699f28f6412279c2 Merge pull request #67 from REPPL/record/abcd-sensemaking-method +38eeb2a0c80f76d77ed27f7ec935759a17f1bd72 1ac0691c85ed942e2aa43527ee92fcfc955001a0 feat(record): the lifeboat becomes a coverage experiment (adr-35, itd-88/spc-3) +50c35c267dc2c1b8ba0d16e74805539b593c8657 792c3d9bf3294118d65f0bff5f377d7163fb9a53 Merge pull request #68 from REPPL/auto/itd-88-lifeboat-coverage-m0 +007664cb0de8f0ea16f4891c3d659aa0e7918a9b 6670b643f664445ab49863aa5bbeb81c9d4df260 feat: capture session transcripts on SessionEnd (itd-89/spc-4, M1) +5459bd947d3c5b41ed4207c61d76422eb7d127ed d6b8c8106a78e60ace5afbd436db6db7ea89b1c4 chore(record): iss-95 maintainer decision — make the not-installed case loud +192fb54be54a372978899faab69eabd2a70248de 655f523117ee55fb71e784924c2fb3a4cd655e1a Merge pull request #69 from REPPL/auto/hook-session-end +e045b70da6d8e8e48dcbd15d2718c17cb92533e1 148571d2eca395ec2cf78165f962179349aa357d feat: warn on session start when the transcript store is unbootstrapped (iss-95) +7d579d9fc5b701f664081b1e6215ff689dcca520 2dc811dc21a41af6c3ce15095feb71acd97839a8 chore(record): iss-97 — Detect's marker/config reads are unbounded (security review follow-up) +664ee8ff2e1f2af7c0ff4068e93d03289a3c5d6b da626d4ced1f66ed2f916f87453293772dd346db Merge pull request #70 from REPPL/auto/iss-95-session-start-notice +443f33e63d8276be777e6c8e807ba9f2d239a2fa 1c1c5fccde3f69a6768efe1396dfceb677ee52b3 feat(disembark): coverage-probe scaffolding — schema, orchestrator, verbs (itd-88/spc-3, M2) +d20701a57edaee13140ca3a23feb57cb9d17c577 56c468c6d51a16e2bea473913fe9bc6d1b4f988c feat(disembark): tiered source adapters ground the coverage probe (itd-88/spc-3, M2) +c3c4a333ecf55230f6f64ae58133a18ab962c960 d22846a9f2d906b151ae4ef3e34fdd9c03184ab4 harden(disembark): fixes from the M2 adversarial review +981660b2258ae104ea9151e0558e92c3831398a6 2aecc1f7d182c971ac1e72ebfa510bfa636621dc test(disembark): don't assert git-history grounding on the ambient repo +00c1d510d94239accba660d55da5d7596981f615 5270bea91813431d1cb071a90a0da0ad99f40598 Merge pull request #71 from REPPL/auto/itd-88-m2-probe-coverage +d57155808b5c5abee8f3c42f23e7e25c58a3dceb 5ed2aec9cc633b696fca5ee5919baf914ea4ce32 feat(disembark): widen dependency-manifest detection; record the M2 gate outcome +b1bbc4ec526d57bec221bd591b3aa2bf86d0a742 d682c854207f6ed2476adb828e5bb13098406239 Merge pull request #72 from REPPL/auto/itd-88-adapter-gaps +a5131fbd14fd3cba534a804f7bff7915ca0a78ef 88d2234984fe9aaf65e28a0b4eced20cf59e05de harden(scanner): close secret-detection and redaction gaps from bug hunt +3c87eec0c2774f7eee63da19c44f21be31e1183e 4524b2f95b25d65aef25e0315fa9e1f2b9a59e82 harden(launch): close symlink bundle leaks from bug hunt +f0c5edd5c31f95b65e88054f3f3db9819d337bbc c3f4c4f508366716ecf399da13e0ee7a67bf9f88 fix(ahoy): don't delete user .gitignore content on an orphan ABCD fence +1e00c59059edd29053b2ae02e9d34077aecf1b6a 8977536a788b62aafa8641609aba52249a6c06be harden(cli): stop $HOME/username leaks in command-error output +3ca222808356a9e661fc5c5c696e1c137ac1edba 017f5314769e171027418dbfcaa54107062d1f17 docs(changelog): record the bug-hunt security and correctness fixes +d9580c7e863d8a9c22a3cf96aaa4c04f8f733404 98b47e19fca8ebc5fdc580d70449f6753576fc2d Merge pull request #73 from REPPL/fix/bughunt-a54cecb5 +481f27212b7c90ecbf0c00eaaaae52e8a738aebb f2139896bd578a3176f8b13251cffb008b70274f harden(gitutil): fix ignore inversion, env isolation, and error-swallowing +e7b1cec78143047e626b73e6e66d4ca666464ee1 778aed3b71ee00a5a1c7f57cc55bef8a3627969e harden(scanner,fsutil,identity): masking, atomic-write and identity-gate fixes +58a37620cd9c4207816825548b5a2406d586b6fc 1c7242ed76db6e92af460f40daead45cb7b252a7 harden(launch): fail-closed gitignore probe, no-panic globs and pointers +f75ca075824008d4dea89497f011c043370acbf4 6cf0df8a16e92bc50d349be0c9406d2d270b1903 fix(ahoy): fenced-H1 marker, symlink gap, input validation, pin adoption +6ad2976759e2ee6dbb04af0061cf0bb84c1636a8 e169a4b2f2d7691c6ba309922371c4adb7e09b70 fix(capture): quote-aware inline lists, alloc overflow guard, orphan re-check +72651e38e2d729512d467bf09a7c307603ced488 231625a15f3cd61fed2b2cf5ac3c01ef8973a5e3 fix(rules): recall matching handles inflected and multi-word keywords +41aefd349509cfca0d5bf57d8b4ff975f5850c01 193b5a0d7f664508f3fc9b5d40c1c03452bf97a8 fix(frontmatter,intent,memory): delimiter agreement and YAML key quoting +12d0a696ca15609c77739087a6224933064935c2 6f0c17d25286f27a556d8497ad3f8db6dbec7135 fix(lint,audit,spec,history,lifeboat): false positives, fail-closed, id minting +033102acbe1451561c8ad62924cc561f432c9f80 b226e2624c37f341ccc322bf57b380ea00653d83 fix(cli): repo-root pii config, exit codes, and input validation +a35dfcef49c14d5ae10d180662c823bdfcb6e51c 5f3b072cd49377dfc23008bf4e7d3deef602fcf4 docs(changelog): record bug-hunt batch 2 (security + correctness fixes) +d2d87f0a9b8c4da5fa37aa73356e33865f7e2d47 3c6c60c77470597f9ff169464f141aac5d0ed033 Merge pull request #74 from REPPL/fix/bughunt-a54cecb5-part2 +9395a0ea63c0d686108519555293ac7c64818e25 f60c77a5255e10af05872170f6198f5dcf663948 record(issues): three deferred bug-hunt findings (iss-101..103) +cb7295b70442e8d79a6baa3c203b9fa5d5d18ba7 88b5d50e18034360a1be0a2f6de2a468763a1001 Merge pull request #76 from REPPL/record/deferred-bughunt-issues +97df0c19e329fa46b163284a40a48994c1678755 7f4542d0688047d18ce0e51b55f7e44f4987247a record(lifeboat): adr-36 + itd-90 — coverage blanks are a fillable lifecycle +51535107fc29f02a49a01de06dda3426774520f6 f9d392ace502f624af5478dd873c049534cbbdf3 Merge pull request #75 from REPPL/auto/itd-88-interview-lifecycle +0e9a6b7a42e65648936a727699fd61ccfaed8d30 4b5c523bd6b1d650abaac1f5b32bc20dfaf27e1b feat(lifeboat): read-only plan spine + dry-run verb (itd-88 M3a) +e7884fd3805f5a2b69ea0102a5d3bec32f896062 4f84bc02917769d261c7cc587f20b87298c38f7b Merge pull request #77 from REPPL/auto/itd-88-m3a-plan-spine +ec67bad0bbdf4e865c58d9273a520221c10fff61 6ca1ecf07e0d7dfd91809e276018975957fc260d feat(lifeboat): disembark write path + /abcd:disembark surface (itd-88 M3b) +23bb11913eccd142e1cba7439222343d4c863a13 e15b9a49dd576acd6a0f03b4cbe635e0e2d41590 Merge pull request #78 from REPPL/auto/itd-88-m3b-write-path +281a2c80f15d5af5d97a422710c1f9c4db391be7 ace92074cff84a55054a081dee3619c22d67a055 docs(intent): AI-attribution preference selector at project setup (itd-91 draft) +3b7233d5096975bdb5c51b22a49a0b1b6786ff47 f67aede5b54bbdefed64e0cef8dfdbba16749ffe Merge pull request #79 from REPPL/auto/itd-91-ai-attribution-preference +6f7d98edd91b53195e926bc0a0ed89be652c6630 390497c8e8fc4e5a009649105dee9263f7bd6736 feat(lifeboat): graveyard shared vocabulary — types, id grammar, tunables (itd-88 M4) +92ea86699900f115f9bfd0674a1d158fa1c720f9 7688fc171c1fa32b6d8f7b71b7c621552f3eb853 docs(record): spc-3 graveyard approach, CHANGELOG entry, surface-registry prose (itd-88 M4) +282fa22a4d5b1a1ea11e700d404825e268a0a0fe 459fcdad124d987f350773d4b6695f56da8ba627 feat(lifeboat): graveyard layer 2 — recorded abandonment (itd-88 M4) +157f38fccd8996b86b44fd53944ae2c8c6d6c882 a0227d3d3335fcf06383493407b45628d32b0de0 merge(lifeboat): graveyard layer 2 — recorded abandonment (itd-88 M4) +5b8933884d95a55f2b15f788dc71263ecbf50b57 186fa938be205b228fbe68f0916d372ad86d8ecc feat(lifeboat): graveyard layer 3 — cite-or-be-dropped lessons validator + disembark graveyard verb (itd-88 M4) +a7ceb9efc1a89399b46dee3736e35c814dd65d45 21c5f99be03753e7453c94a48ef7762970d18cba merge(lifeboat): graveyard layer 3 — lessons validator + disembark graveyard verb (itd-88 M4) +7b545bbf3647524b7609c71d2452740287672f1b a9d44b6a7e21506984e8648898b60ce00fe34bae feat(lifeboat): graveyard layer 1 — deterministic git archaeology (itd-88 M4) +0f212e34ea4df0155d4c1db276c47e39f47c53b3 618dbaa0b7e85024b8396ab8c524876319de6fa7 merge(lifeboat): graveyard layer 1 — deterministic git archaeology + plan hook (itd-88 M4) +bdccffb765a431709f4d364cbe067603e49259bc eee54c21b4440ea65d4e419899ac3d61fcd6c135 feat(lifeboat): drop the buildAbandoned integration stub — layer 2 is real (itd-88 M4) +8bad3f55f4dece34497a626bb1e24c8f1b35ac56 f14aee5320f389420b7d0d32edda5ea0ad4ec97f test(lifeboat): pack→ingest graveyard round-trip over one real fixture (itd-88 M4) +762a299753de5f1539f8ab483cc9e22a74a09fab 6af83ed14de970a5c68a46e6ec09ff0361d0de5f fix(lifeboat): seven adversarial-review findings — fan-out bounds, seen-id ordering, locale pinning (itd-88 M4) +a0f767959ce96abf66c375a8f29d2f55f83ae5c6 b967f9bc6f472b8365bcaf922175e058e074dc61 fix(gitutil,test): git errors carry stderr; settle the cap-test object store (itd-88 M4) +dc0bbac43c2cade32ed3f38e964444ec18167f29 1c2ce90d348e01020beb2a34e159a3dc2744ca08 test(lifeboat): build the cap-test history with one git fast-import stream (itd-88 M4) +53affa238c30d3bbcf1fbaa7617a95585a935ee9 432989778f9c1db72a3f48b10da63317b6e64624 Merge pull request #80 from REPPL/auto/itd-88-m4-graveyard +89b29808dafe4bcb4a46d13f98715f444d788b2c c914e7940f4e494b1f9a9ba17b2ac1fe9dd33a67 feat(lifeboat): embark shared vocabulary — conflicts, plan/result shapes, family tables (itd-88 M5) +6311afba5cbbe245322448b59cc1cbd6caf6b0b0 ac351a7c2889089483fbb36ac119375a3234fbe0 feat(lifeboat): pack carries specs; record-derived sub-manifest hash (itd-88 M5) +bba4cffbe88556ac60cdc7578d763a36e3b0a968 03c9f516ee1495f0c84fffd5df367ef47cf78240 docs(record): spc-3 embark approach, closure re-scope decision, CHANGELOG (itd-88 M5) +e53dc453a2588d7db1e5a6a933ba968d4467b28c 946edc664c54cee2bda550ecc5d844f3b3a71353 feat(lifeboat): embark probe/from — contained round-trip with bulk conflicts (itd-88 M5) +b594011eb6095a08eeb5049adeadfa45a9d2add6 558485eee9b249935094bceee42381745a881251 merge(lifeboat): embark core — probe/from, manifest verification, marker seam (itd-88 M5) +be0031633722707c56a64b7c5d573dd252807c9e d50caea31ebd0afa9ccb4b2ee5b25d8b1ab01207 feat(cli): abcd embark probe/from + /abcd:embark surface (itd-88 M5) +bc4b1a165d5d2f83baf2a226f39def70b70ce717 ad1933fd5df0d48e7ebdc4261e0cf5a1ee5a9f0f merge(cli): abcd embark probe/from + /abcd:embark surface (itd-88 M5) +96e00f35819c8d86a521359f439db84af0867810 a0cf78fc34c5713818f1526e9c79146b3dd0e162 fix(lifeboat): two adversarial-review findings — provenance-hash sanitisation, duplicate-target conflicts (itd-88 M5) +a099d5fc4319483da6be4b1e848be56309a1b86d bd59dce1f2f09aa8a9031303fff72afdbc4adbe8 Merge pull request #81 from REPPL/auto/itd-88-m5-embark +23275b52756c51ab3f1d3e8c8dcee8a9769516cc 8ff95e5f64ec5d0e20f3917cfd2e54261c3e3dff feat(lifeboat): synthesis shared vocabulary — schemas, citation grammar, oracle verdict enum (itd-88 M6) +efce3e413f5067d16b35748f4b0bfd21d80a6626 d9d33287fb8c9800c8944599f776b720688b7c4c docs(agents): itd-5 prompt infrastructure for the four synthesis agents (itd-88 M6) +deb08d8924395fb00363949fbfc3011bac4ab2b9 002821cafbb9d4f01200e468b6bbd0e17b21585a merge(agents): itd-5 prompt infrastructure for the four synthesis agents (itd-88 M6) +d09b3a1135ac38044f8c1333ec495aa3e6b47fd4 3f77a72433f6a4454797add5826b7a46955496a7 feat(lifeboat): lifeboat-oracle synthesis seam (itd-88 M6) +4b79e4bb0d825b4a6eb127f5b64d8e76c7ddfede ef9b8871b0025ef25e16b529a757559e6c9f4a31 merge(lifeboat): lifeboat-oracle synthesis seam (itd-88 M6) +8f1ce7165496c8f2565438d4943be7513b6bdca1 a309cc4c60c80b5f9a2239fa589f3108ba7be072 feat(lifeboat): principles + press-release synthesis seams (itd-88 M6) +b17ffc9244a1596e55506e11dd94314cd0dc12e5 eb4780c7b5d6b5bdbf4db8c304647734a397bbdb merge(lifeboat): principles + press-release synthesis seams (itd-88 M6) +f96bd5d3aa4aa3f52a32f179517f6d83fdaf683f c0062f577ca594ca61c67bd96c914a965a68a291 merge(lifeboat): principles + press-release synthesis seams (itd-88 M6) +daddb6fae4a6c00049b62663c70ba8e5d95b34d6 3804799bf6a021d47fb335a78bc762b1e0e36b54 test(lifeboat): oracle re-run over the same lifeboat stays manifest-verified (itd-88 M6) +608ca3dd87c6594d51f067f4fc4f5d1279a1c5be daff7629e7e2b3b3a4fc147340bb9ec876499675 docs(record): spc-3 synthesis approach, plan amendments, CHANGELOG, registry prose (itd-88 M6) +f750a1c29e2e885a2046aae9f6ced5fffafaa2ad b32119a0ac6bb8893d2085e22033534ee48141cb feat(cli): disembark principles/press-release/oracle + orchestration surface (itd-88 M6) +b5ad7df28b1827e185277989985159a72f1bc24d 1e19318d127ecf867ccffe38beb4e8f60fd4e214 merge(cli): disembark principles/press-release/oracle + orchestration surface (itd-88 M6) +06455f57194556c0a390c1902daf0be106e1b6f2 a5ef64d5634464f3a08136523d1ec92544a12079 fix(lifeboat): two adversarial-review findings — prose-Decision ADRs, self-referential citations (itd-88 M6) +ce4d552e55206dfdacedc655acde408befab00b6 3968f2f867df2577dd34cd661d17a6c6236d8dcc Merge pull request #82 from REPPL/auto/itd-88-m6-synthesis +846a939172baa82dfc4730ed8beee56e04f63dcc ed235d72c5c6f5eb335c28875d86ede8f39bdbf5 test: close the session-end AC coverage gaps (FIFO, cap, residual, stderr) +c3aeab7b08d0e8b9154bf47d70411f281ac5c72e 9d81ce5eac7f2392d5e439bdaa60649add74626f docs: author the spc-4 body (approach, deviation, AC map) +8ade1cca0a7edbbab19b51ffb91416624affcf2f 9bae505ad24773a51484cf43e1c2d3281782b17d docs: close spc-4 and ship itd-89 with an ingested 7/7 fidelity verdict +2194a924496887ef2bff9748537c31cabebe1773 910001a494544a5080a3bc6e077f1302284eb9cf Merge pull request #83 from REPPL/auto/itd-89-spc4-closure +e5066fe50a341cf869f48af5f295a1cc1665a73f 5a2da05ed346bfece457f51d1973b9f7f01d6bdc docs: land the planned-intent-drain run plan and burst-1 findings in the record +7933dc25ca501b9935b9fd22135894f47aea8ae8 78559754f76e3a2b93b3c6251e1cd1865364227f feat: name the next step in the bare-ahoy folder report +4e44eec22dee3cb4ca2ab65ec37362f78fa822bf 3e6d936c0af502d69906ce53a88f3dd2a6427fae docs: mint and close spc-5, shipping itd-40 with the verified AC record +18535915d6fe0a067e9a8388d0b10ad3e0a3898e 0d34711844d41963fef726e9bc6ec25f6cc5cccd docs: record burst-2 findings F9-F13 and the delegation decisions +8c9057939d5d36722640129c13a33e25eb247202 029f3d42b44e9e457ae107a2601b57e8cc791240 docs: ingest the 5/5 fidelity verdict for itd-40 (receipt rcp-a3791f7dde2e) +4d98519d26af9937e1b6a8ff1f14b5ca6167ea30 9f4e7768258073f2091e7a4425a8055f5a537a41 docs: close the burst-2 M2 delegation log with the review outcomes +83344af7fdbeed61c1c9feb51aa332112affa959 24bc1211c4a67dfbfb287c9d19285ccb17db4c55 Merge pull request #84 from REPPL/auto/itd-40-folder-classification +6876718575aa6c02f60e71bb610e9579e8a9647d db51b217386260cb91d2e04e356a6cd58bd80502 test: characterize capture list --open issue-field shape +d85a402f3feb72dbab6110ea85b81113afa32b2d 0b17ef884ae227115c2151765bd4ed2402a42abb security: complete the trust-boundary hardening sweeps and record the bug-hunt playbook +0eb418c1acb376579f5c631c0c19ee0308320aa0 c3fd7f98757dc958996e79f351bbef1f9ea3e9e4 security: finish the env-inheritance sweep and guard the embark/pack reads (ultracode) +c87e848f82c587b31965b9824d6b680583504941 1f8aca9704c7a73faa639cd34cd90a02557379ef Merge main into bug-hunt (resolve the run-findings add/add; keep main's superset) +69f76724e3b2003fc38bfcedd1b8dea3de532e0a 16a55ac2870a55efa16560a562e7d156022cf4ba fix: give the retention test's setup commit a committer identity +aa692bcbef7972b4ccfbeb348cc16684f1d9e6ee 22c2f529ee26a78118363a2a3cd0f949889996dc Merge pull request #85 from REPPL/bug-hunt +1e4123f211ce35dcec3b7e5b665f9498fc305710 a16be304d33d053a2a48cdad638dfb762e976c7f Merge main into auto/itd-4-issue-capture (post-#85 base; no conflicts expected — worker was guarded off the touched capture functions) +67cd7e70878eb1e855999e7f0e739c7d92e27abc 8f443590f23d9489cbcdf4c38b27ba39bbe4f9e5 docs: mint spc-6 for itd-4 — record catch-up with the AC3 gap held open +89b7060bcd552530c47c369ff993a80e55853254 be4e33d32dd1b5938b2494bc991fd3fc7b4191b0 docs: correct the spc-6 ledger count (103, not 104) +d1747aa5b3f58daabd91821f7eae813c9c254328 b295c5974d006aa7c526291813f062d54c33b58b Merge pull request #86 from REPPL/auto/itd-4-issue-capture +23c0e862bc3b1fffabbf5babb4eb7d89bcc2e6b4 38dfd25d7f663efaededb9717dc4cf9c9b761c7a feat: add the GL002 forbidden-synonym lint gate +2a6e9cd16e1afbb93db971e2e98b128971c78f23 ebeb134aebbcd6c56c36a1cdfccfcf81a6a0f685 docs: sweep the residual epic noun to spec behind GL002 +6c1a88a27cd96b9f77d8950c6a2b158e1c19d945 75ee052fcaec3ec6ae9280080bd081470015c7c0 docs: changelog the GL002 forbidden-synonym gate +a1e1467287bca718bab2ca61d5c1f222a52711d4 9e7107281834e40dcd42c224e9f98bbd3e6fa83a fix: harden GL002 frontmatter skipping against a leading comment +a9329f8f2a877f7dbcff7f9ef81a030a9b954270 bdc0383ca53e8dc0644a13ea7f0cfe4e5c86a5da feat: add the intent quoted-text create engine +c3d4d0a5a75c35ae0bcfc6b73487de8c157bfd81 8b611992d0447f9b6b7ab2f1784647d3b7dda830 feat: wire the intent quoted-text create path and decision rule +7289aa520d72c867de68205d8a2b87c7c05d8321 9dac54d6a7ae74d1fae39376f2a7c5ed027b7d27 docs: re-plumb promote to the create path and record the change +7dc46e6346a7e51105cde09dd9e9b83f507a274c 77e6812efc9d45c55e57eac3c5e0fd142684a128 docs: mint and close spc-7, shipping itd-46 with its adjudications on record +45c5cf79b16e390d90af8f89760723051dfc3ccf 5883376f2369d4e8c97c3518e00eb9923585c6c2 docs: ingest the 4-MET/1-CONCERN fidelity verdict for itd-46 (receipt rcp-69589b8b5103) +0a5123ee3285eeb0eda46f731f9a3bfc45652def 7bfc93a658116d079def70c6834d879cc9d71ba1 fix: repoint the three inbound itd-46 links broken by the shipped move +507b16ae4e18988b1dc4f15fd90b1a8cd4cfafa3 db5f3bcf6f97d0cf7b9fbd8900a4f6dabd3d2203 Merge pull request #87 from REPPL/auto/itd-46-intent-quoted-text-create +027f929260b8fb315ac5b913ac2fd5e6bf4cae00 efb89bf7d7611306081048abf00fcf7f671d89b2 Merge main into auto/itd-43-epic-to-spec (post-#87 base) +3165ca9cac6a0fc521a3fb176c527f1638c26267 37d0fab672f607be600fee0e1d77072b5cb9bacc docs: mint spc-8 for itd-43 — GL002 detector-first record, AC3 held open +1aa53ae96011fad069244a84ef6acc51c5b86d8b 04b0d99deb691f21e4a45776cfa23f01d25d54f6 docs: ledger the GL002 inline-code masking false-positive edge (iss-106) +306c9d5742464d8c9d0bdfa3902f6119bfdb918f f79752f6f860d5e32bc6deaf7c1da6dddc95e898 Merge pull request #88 from REPPL/auto/itd-43-epic-to-spec +859a397efa4696788b9ef65f26b6c68b7eb6f242 d60b7b593db32250e4fa33248d8db4e4e7c7a311 feat: adopt changelog-driven releases and roll v0.2.0 (adr-37) +ae5e70391e855bbe7b3b43e6d9b2ae02530ef63b 23ac0c1f1fe14f65f99e3cc431fd8e821012d146 Merge pull request #89 from REPPL/auto/release-v0.2.0 +338575195cb8bbc9b11ae4b20e538f6739cabbe6 2979e65d21ee01e266e33b936fbf03c9ac3e4353 docs: ledger the ahoy install visibility-flag silent no-op (iss-107) +43721e74402d02e663c16db966b916eef1eabf4c 2366aae01c53ca7ce9c599308e4aad1d15f97a2a docs: close run test B — the release automation verified live (F18) +dbce1d8f292e701b29f43b2cc6b44b9f38621892 8ab4b4217002f52d2fb6a0f9b82b6ec32679f94f Merge pull request #90 from REPPL/auto/run-close-ledger +73428b6e8e672fc1d0fde07de4770d00f020a8ce af86d51395a3d174baf6c6a1e8e21b22669ee564 manual: Revise README with new badges and project details +a939f8e9b3e1506c8b12e85f2f17c57e349e82f1 a9f60386b4c0f08e6354069dfce0fdeb69ed4791 docs: add the one-line checksum-verified installer to the README +054d2680af26e7cc4bbdcb268cb6787a8ed1ad56 74a6632cabbf0acf4c6cb26e656a47505a5928cc fix: repair the README badges and align it with the shipped surface +b56082c915693bf204fc6602f09d6d772efa99a2 4b12aa5e93bc2e2c6d4d0916037971e0982568f7 manual: Update last commit badge in README.md +03294b04b5a418e72713ee28b89b70d08f0f9fbb ae76577c972d31b823e90669ac42160b4c7999a9 Merge main into auto/readme-curl-installer (badge fixes landed on main manually) +8deb45fda2227ef83c918677a878f85fcb6bba1c 81fad6eb1a0aadda6047b5c0bf5730c6cc55af52 Merge pull request #91 from REPPL/auto/readme-curl-installer +42555c7851474665bee2c767e339be82b2b63ea3 c3a6bfebb3a88574e5e560aab64f417a29efb37e docs: capture itd-92 — branch-protection assurance for managed repos +467e1933518f505a330dcb7871f6a36787383729 29c86a1195ab7cdb6d0dce165ec15b09d6c2b61d Merge pull request #92 from REPPL/auto/intent-branch-protection +aba4ed52a1191e3facc0227fad650eef9608644c fc707b97c47b958553344a08aabb1050c0a38c53 harden: stop secrets surviving a trailing-underscore in the redaction scanner +77be937244e7b7c14cd788cd5fc5e48670e39916 33f5bb229c751c3c281012510a79035b5b69b6ad docs: changelog the redaction trailing-underscore fix +76a62386c1d9f324ff02dcb5dcf956961af2a8cd 4997baf88496f67ba6c3dedbf3bd92e194b81689 chore: drop a stray empty CHANGELOG.md.tmp accidentally staged +4ba4926eee3329df610f6d56d798b7841c398ae8 13cae8c1aa32b9f9e29565340254fe1a9cd28736 harden: extend the trailing-\b redaction fix to the mixed-class patterns +56df5602db19368a71fbf596775cec632925f4b0 78ad2172705f3c94a32adc38fdf0ca47ab6d4f45 style: gofmt trailing_boundary_test.go +cd3b257078f99bd7d762e0d6e6cfd7b77bd618ac ad8602cf8f407f7f46f6f3b1edc900cd0d95bda6 harden: classify the symlinked sources-index refusal, close two frontiers +cf42412de7cf4f57d4c23a55fd1cb0eecd9b560e 3c35849cbf68e33277d21509dd36e41835dfab5d Merge pull request #93 from REPPL/fix/registry-symlink-classification +e4d54473ba05110f793f46cc502b60544e238833 d4f6c75206c67d996a50adcad4f75670ba291482 harden: close the graveyard-read lstat->read TOCTOU with the guarded primitive +d95cfe9865924b20770b58abf65e231a4151cbe3 d7395c9664e4c347f5f67892920316eff7141283 Merge pull request #94 from REPPL/fix/graveyard-toctou-guarded-read +e922a138ff86f6fa9c2e7d8faee9619d197b521c 7c7a18c58a527bdf7f0aea605cbe576e64bed72d harden: guard the untrusted CLI JSON-operand reads (readSource, disembark coverage) +5aafc89563adba1f7be43f14f5a823026d7747a5 99b5167d5229982cd8f2f40b4ad5d522e1f33db7 harden: route the last CLI operand reads through the guarded primitive +2d2f7c380cfc17618e8e8fb4b6766ce58e8f45c5 0bdaca632a91b349dae1ec3caa470c4a785e698c Merge pull request #95 from REPPL/fix/operand-read-guards +46704d922cdccecebaf708668a50943abbf9d8de aadab1f83a9edcf5f37677dcb4359cd8f1b2d943 Merge main into fix/redaction-trailing-boundary (post #93-95 merges) +5804363148b42ffdfd38118ccd1c1765dbb5df4c aa5f88c76a70431093f34f7f8b30376f5dbb09b3 Merge pull request #96 from REPPL/fix/redaction-trailing-boundary +59533b2b39388a03099a605f38d7d484cc89a53d b36af2dffb08d2659da5b2fc93fb35c8f43e2e55 test: disable async git background ops in lifeboat tests (fix .git-cleanup flake) +53d0e2ad085d4fd003a7539f4d7e7a981f225084 5f5dacfe2bd54b9a01c9995f42428fc170b294e6 Merge pull request #97 from REPPL/fix/lifeboat-test-git-async +1875666f5dc402a59e8135902f0e630d408b8a42 075f59fe2b1760d691e086d59ef868161894e2c4 release: roll the changelog for v0.3.0 +be8e07d29f821745d669e81aa540d2a9c3ca4660 fb5a667ac50603604d5750f8bf5faa09a5ae913d Merge pull request #98 from REPPL/auto/release-v0.3.0 +46d41795dc6c5edfe578831e890860db5e0ef2b8 6165e6c59fa56c5636d03747cf77355859b93325 fix: make the semantic release gate satisfiable under changelog-driven auto-release +af70fa6be789f5463a80b5bc624808e17dba59be 75c6c86e9c5f5bf5437274fc35c88f6e1e1925fa docs: reconcile the brief surface prose + README with the shipped binary +f9adcefb05204511569a0af4d6c0c3fac95c3355 02516fb2a38e8e232c1d7f35969f185b5173c4b2 docs: reconcile disembark/embark/ahoy surface prose + drop broken README image (round 2) +58ea6ca826207c9e262da0223a8a7404e20ac40c e299dc1ccb2baa773129d9018e82161c9cba74de docs: fix the last three surface-prose drifts (round 3) +5c8d5aaeb29a0bb13a7a7573e392555bd6aa1eba 46435df02f99930a8676b36f6ae977f8fd61c75a docs: correct the CLI-reference generation claims (round 4) +6c8ef4e2e4c96c5a35cf33151f1916bf922814f7 61e47b3fe41c89d005bc492f60e0af3831ec9e21 fix: address review findings on the semantic-gate commit binding +bf89984b66ef9bb5785a8f60f8cbe8fae2da968d 221ae0a34cd3608471a886d9519fdd0bf8bacdda docs: correct the unknown-token exit code and the commands/ enumeration (round 5) +8e8abb88ba70c11272141d914a7f6f7ceb81aa84 3b32d8586a1d4392c0b73eabd5d5f339449a2638 fix: exempt sha-keyed semantic-gate receipt dirs from the reviews charter +7d5422b0dd6a77d6b726ab55dcbb14b35702aed3 0098f5e3da50503ead2285e1d98941ea4173969f release: land the v0.3.0 semantic-gate PROMOTE receipts +cbd66de321390c77e1ff682c44aefe66e2c503d3 c9ff833eff63620b8db4c1685078e5e30e590000 Merge pull request #99 from REPPL/fix/semantic-gate-commit-binding +0532b4cbf702a463d9d93e12c406b30fad8a0ff2 018341e52bd59984f2b077a6dc1d6d071783cd34 docs: record and resolve iss-108 (release-gate self-reference, not systemic) +af7ec462a2803c8d7396805196e2da10c6b03e3e 0743ad5d5519323c26c665261bddf5c83463ba83 Merge pull request #100 from REPPL/fix/iss108-release-gate-record +bd459d37b946869837a5d739d707160905b6c5b1 c2efe2960ffa6ce0bf0aaddf7a15346ec8de54cd docs: capture itd-93 — abcd scaffolds a hardened release gate for managed repos +f766b4f693cd9657fe4a7e2cf9aba63e246bf2d8 3622542885c1f147bda0bab2a3bd021f63e8785d Merge pull request #101 from REPPL/auto/intent-release-scaffolding +2fcca173d57e81d136b2ddf53d77429870ed34cf 92e0e79af866bd5405c17c27ceae722d7c74c725 docs: queue itd-93 for the next drain run (with readiness gates) +971a8ad8158f1288a6747728c5535065c8bddd37 0f02e6e699487ce15b37680e3b1633b9d6419381 Merge pull request #102 from REPPL/docs/next-drain-run-queue +e5cc145cb53552d844a8e006281c9b04906b5c06 911989ee333628cfc5759af6da5ffe8a945a1021 docs: capture and plan itd-94 — the implement-readiness gate +a87dfb9892243e9e069249d512912c63081937a8 0a99a2021c79347b5517e3a79b0d0735e1c396a3 feat: add abcd intent ready — an unplanned intent cannot be implemented (itd-94) +3b42d4e3dbc707844b32da87b9ebb5a4188cf608 4da7b1b13406c53b6a273741e92989ec0b87a444 Merge pull request #103 from REPPL/feat/intent-ready-gate +383eb6bac0247ce3f73aa48b9a4e598a0cf537e3 5e31b9749fc755c9c08d283ee0c18f104f0f636a docs: graft class-sweep framing into fix-the-detector principle +2998e39e2b9438532c413a4c225ee4ba5f9ae9b8 a1369158789e9fd3ca312454f641b79c1f95337e fix: route rules.SaveState through fsutil.WriteFileAtomic (iss-82) +372849cf45ac5a9d2ec2a70244e5f0c1f73da0d1 3234f51877782faebc765877fce3245e953fa2f2 Merge pull request #104 from REPPL/fix/iss-82-savestate-atomic-write +c5bff4047113833efeb785422c45191116e7a3fe 51566371708f28d3801542ebf457f6455b50ab05 fix: guard ahoy.Detect marker/config reads against FIFO and huge files (iss-97) +d2b22728a42bfeecb73c4800cd3ca02e5e1911f9 94fac3ef968256d17575c74e4e6ac5a5e5e74146 Merge pull request #105 from REPPL/fix/iss-97-ahoy-guarded-reads +12ee583108e8817c41f9e2c4608b06ec42b2f8b8 8997875596c8bb363d83b6a2dbcff84ba4cafd86 docs: promote iss-99 and iss-100 to intent drafts (itd-95, itd-96) +84a8eb4376600a9e41a3bd8e7536f5a1439f6898 f5d0b0ea276cd49a4935a1344dd6f47512a83cd7 Merge pull request #106 from REPPL/docs/promote-iss99-iss100-intents +74d0cc3cf2fb06f0dae561195e93b7fe15fc48c6 cc7143bdd8d9e23aeaaba487946cd18aefe0e557 fix: name the real verb in the history-store bootstrap error (iss-58) +646669c9cd79def55eed9307ed7bc9f6dcf428b5 26d13f3ceef52142589cd5d666c9c3a7036f2c32 fix: guard the intent quoted-text create path against typoed subcommands (iss-104) +9037d1ef8f9060366cfbcc1990f8ddb8dbccf870 07fdd83eab05a61a2ac05a2791bca69c32dab19c docs: add CHANGELOG entry for the intent typo guard (iss-104) +a60401841f702b52be555738b01d1951819d21c7 9cd8221a353907c2131d9a66c8dde62022dbaeb9 Merge pull request #107 from REPPL/fix/iss-104-intent-typo-guard +32a7227129c1eebce2b6227983eb46e915a9ee6b 2abbb784f5ce303fa2cb37be682d2db23b9ca1fe chore: union-merge CHANGELOG.md to end parallel-PR conflicts +bea94a5ae4ab0e0ce4491bffdfac79f9fcf02a25 4735b1ca9e721192e145f61c94169807a1e2373f Merge remote-tracking branch 'origin/main' into fix/iss-58-history-bootstrap-verb +eeff5eda1a6a3d51aad2bdc0f6250ade402984e0 855dbbe09a80e2e5f345fa7065d8c70ff49a0273 Merge pull request #108 from REPPL/fix/iss-58-history-bootstrap-verb +3719ca9e5fad94fa5af70cbc727b24b09a8ab5f0 bb103aa5934ec113f32f917c82d55c0700a2271d fix: stray .abcd/ no longer classifies as managed-repo (iss-88) +98be999bd3944d531f717a3bb348b0537dbccf62 b8f289b2f91e3ef3ed70d5e10bf304de1e780fe6 Merge remote-tracking branch 'origin/main' into fix/iss-88-stray-abcd-classify +b858cdd305b295466031ee4f89c08d40fd479039 21e4740cc1d894b10ba9fb58f0ba4865b62a75a3 Merge branch 'fix/iss-88-stray-abcd-classify' +029d3621e62aa04d3fa1a47017d0ec3d2a88b873 ea538d9bf3d7f4c0a46a4c1b637b6f187b91cd95 fix: ship agents and hooks in the launch payload (iss-77) +300279b3cced9a89a27fbbf90c21ceb88f518b2f 050fbb75e06db115f1f6e2b158ad6beb5e4645ec Merge remote-tracking branch 'origin/main' into fix/iss-77-launch-payload-agents-hooks +e0714230a0d8a849cf0f4db7bcc2dd2915e57b32 401a831c00d6acb94b006c0facad6e50f5ee2809 Merge branch 'fix/iss-77-launch-payload-agents-hooks' +d98f2e82f972c53f178ec83f22b6f29c5cc55808 b542fd66f72f691316182d0c0d462d45c0988f08 fix: guard the last three ahoy manual reads on the read fd (iss-109) +ef9f433535f64391eae912a56172efae9fa3f056 67efa7b30e115ba2ccd126233544a41cf54bbe3c Merge remote-tracking branch 'origin/main' into fix/iss-109-guard-manual-reads +63e7be116151d11307abc010cb099f22db6ef3bf b5eb405f695b477ac37892d10e14bfbdcfaf1b5d Merge branch 'fix/iss-109-guard-manual-reads' +2d559c4b3e7d89469c8317a7fa1f00033fbd4adf 437c842632709c448d1aeca4b264910c5f4e352b fix: make the identity pin round-trip through the self-contained commit guard (iss-63) +fb6f264f3bea0b45fcadd2f93fc479728b5e23d4 373f7a1c828749a13ee60c8e5c74e964b0e7234e Merge remote-tracking branch 'origin/main' into fix/iss-63-identity-pin-quote-guard +599752439b8d00bb0ab3f6362e5537e96f004fb4 b8a22e0177b5c09b1a80a51a08cdf064c60dd004 Merge branch 'fix/iss-63-identity-pin-quote-guard' +7bb55d397ede6c18e3f209277823b8ffd559f024 99f91c9ca8105ad4875c0eead1e9878f9b495680 feat: generate the CLI reference from the command tree with a drift gate (iss-47) +fcc79ca7d4a82bc9f367c13c7db30542f7b5aeec da10002d25bdb17c8355f9b74642e38cba6d925c Merge remote-tracking branch 'origin/main' into fix/iss-47-cli-reference-generator +6fc206b13d9686c5a418e82ecc07a577521a4bfd b78885813275eb221b97c2f6eaed59517b4eb019 Merge branch 'fix/iss-47-cli-reference-generator' +48cb525b26c87b7a6a22688ce71d388243b634c1 77925ddd9fdc0f3109aeb783e14f12736537c1bd test: isolate git-spawning tests via shared gittest helper (iss-28) +0673185af805efb78af039465c2f47ea4e8cc701 1e019679e621983e500d2710fe9152ef0af4c75b Merge remote-tracking branch 'origin/main' into fix/iss-28-git-isolated-test-helper +48f7810084a8f8a5b76b8fc7e74448a1fd9ebea0 60cdf50df0fc30a17592a9083b34c69375a90ff6 Merge branch 'fix/iss-28-git-isolated-test-helper' +be3965aca453007a90d79f465e652a9d8898e871 ac9a99a79e3590b3dd8bf4e3d059410f6ee89944 fix: apply an explicit ahoy install config-value flag as an update (iss-107) +9d1d9445e55681ded5c78fe8594afc71ab43ab9b 3d29f00524eb01effda291cafb271f87677d7eb9 Merge remote-tracking branch 'origin/main' into fix/iss-107-visibility-apply-update +768b047c628c0b0c1b9570c980586cdadd9dc9c9 e20689e64d1e638d14299a71413f1997cc2883ae Merge branch 'fix/iss-107-visibility-apply-update' +341e30126a2e3dde560bf3b57e7820a73e3bf6b7 80d116acab3dfc508ba80b64ef79776c85d38200 feat: add agent-observation as a valid capture --source (iss-57) +26ae3f881241a84b9924010c0211ee8281d84463 e2d233133409c293a2120d6085bd463aa6502b30 Merge remote-tracking branch 'origin/main' into fix/iss-57-capture-agent-observation +da5539e007d5db045f2410b7055f0a88bb394f81 e6cfb959d460b650992fbdc068d5b1604dfc3809 Merge branch 'fix/iss-57-capture-agent-observation' +2ae43317276e73ca7dfe5be9d915b0288a8faec2 6061c8d21c40bb11a3d03b89752401ed18c6d447 fix: render machine-output paths repo-relative, not absolute (iss-81) +cf61f43a4e990d719edf85caf2cbe69fb080f756 49eb6211dd3f15e98181c0674f86af409924fdec Merge remote-tracking branch 'origin/main' into fix/iss-81-repo-relative-machine-output +d84b3af91a641f627550705b9da5f29881433eef fd07cb9a93c49c82f122b6d0c9eb87390a0609f7 Merge branch 'fix/iss-81-repo-relative-machine-output' +9693bb1df0c4cc8949e76333bb95b4478d6544df f3e01f41b83149e8922f7cf0600bbee594b91c6f fix: GL002 stripInlineCode blanks paired spans only, not the whole line (iss-106) +bc3af9849ff418aa26da0cb20d31bebdd1f6458f 5a2ee75a54fcb04231584636776566b20045fd59 Merge remote-tracking branch 'origin/main' into fix/iss-106-stripinlinecode-paired +f8f8cc779d1f870093582568a7cfa8157be4cc67 b9c359dc7694223fabf25722332b33a7be333934 Merge branch 'fix/iss-106-stripinlinecode-paired' +f61a736b032bdddaa40c130d7cd603edcf1f74c2 c1f2e96b4c649b5be5774240eeea9561fc735f51 feat: add issue_id_unique record-lint rule (iss-74) +7bdde5ae5a217efa740a1e707a457a7df6d552bc b74d23fcc613e8110bff645e853bbf6cae26705e Merge remote-tracking branch 'origin/main' into fix/iss-74-issue-id-uniqueness-lint +cafa9a8558c903516e796e0a5ab5a9b36ab6c2b9 cfadd341be8cdf21e857941fdb59d6d6f5e7fb87 Merge branch 'fix/iss-74-issue-id-uniqueness-lint' +9cecb684a7d1e00c51db71845d6c7c723aa2d03c 03e4c9ba53de316e2eca68db4d863bea62e118d7 feat: require a machine-readable successor in the record-lint banlist (iss-51) +014f5db94aafbfd9518bda46cb1b4ab239afe9db bad9c608a9fffaa0f67cdc9ad99b3153a30c8713 Merge remote-tracking branch 'origin/main' into fix/iss-51-successor-ban-schema +7ee1cfd7fdf772468320e21facd5be1a7f5c970a 2e33ae168d8294d6ab2da4c51f4fabc58e98976f Merge branch 'fix/iss-51-successor-ban-schema' +ab620bb697a662d89bdc300b999a306044c9ec1b 0dc8d271027b5411ab5a03ee44b096c509c9ddd0 docs: plan derived versioning + auto-generated changelog + plugin distribution +5ee2579a5025493bc87ae96f6a2c85d227caa139 b37591a3121670b9634cfb3acf7546f2fd85d7d5 docs: fold grilling outcomes into the derived-changelog plan +69577f6a90c2c70ea9b7c1e7a7de873a9f56ee49 13a0dacabafa755fdde073b4eba2264f58a87b62 Merge pull request #121 from REPPL/docs/derived-version-changelog-plan +e73d7f97a79f7aee84eaa34a7ab2310a863b53ac 612e6d08397ea3ffce5cedd44c06813c58fa7aa7 docs: fold adversarial-review fixes into the derived-changelog plan +82f62b637260542d94369472b86d5521b1ba6338 c821ea6936e7b10a046585d880f0d45cc305a7ed Merge pull request #122 from REPPL/docs/plan-adversarial-fixes +e98d7a095cab974b07e5c8ed410f2ff63e297c2b b3fde47ea13030e851999c8316a46fc298e8f39b docs: plan itd-73, spec itd-67, record the itd-66 deferral +0db4eb1a44f0701e7487c2e57a4510e6d06b1d35 7e2006c0934cb615dd5a1c72a35099e4e493143f feat: derive the version from each record's declared impact +09a25e7ca739098debd3d9e312305d4188d9335a 402c0601406e82e291e41d5d31759c5c1ffa8f3d fix: skip the real-repo derivation test when the checkout has no tags +30780cb3f816b1f009822fe99bec9cf1464700f8 e1078bfe154c0decef9979934c244e2ca838f228 chore: plan itd-95 and itd-96 (drafts -> planned; mint spc-10, spc-11) +2d5421f27fdd522dd1de7d98aaae2bea4e2db5e3 017245edc7b7dc8d93881db7323c41d537ce3466 docs: write spc-10 and mark itd-95 additive +3fd3d18f6bde671e10704a3692c67554592180de e702aaeed0f2bc70b60359cf7d13e14b66453e84 feat: ground open-questions on a repo's in-code work markers +201eb8d9d54243b79374a264e35de548fda9c9aa c9adcfb6ec9d1149d0143fc30037ed1a3cda1c85 docs: write spc-11 and mark itd-96 additive +e58e3f240443add2329bd3ce6e4a690b76650ba4 9d3bf0179432a6d964c6ab005f4e489c7fde737b feat: ground naming and internals from a repo's conventional docs +688a9a5591d528ca4c5dbaabb468a7a681960884 6af4e57a63b8dbdece110318d87d48e78234191e fix: bound the probe walk by directories and depth, not files alone +a52888bd603fe72c3c47fad5bebc359cf79551e7 ff0dc3fc3f989fbca8c59ff972a28be0cb0097ed Merge the walk-hardening fix from the itd-95 branch +c9e1f7deaf211a7bfcabea3599c0b3faa4a82020 000fb71853863b04397cc1217d978c9eba1823aa chore: resolve iss-113, fixed with the walk-bounding change +30628d1cfe136d899cf02ec777a617c746a9f985 d8ddedd5e86c8e0a9bccb021499d0143910d5091 docs: record the tier-ceiling and walk-bounds decisions +66be7be0ffb42b667e9d438e7898a8103063c2d8 701ead2785ae8dd6f2278bca747e8eecc6739e7d Merge pull request #126 from REPPL/feat/itd-96-naming-internals-adapters +e0a30b6c360c0d5d48a033ff5d9d4e96b89ace23 7e5c6bad890b6275b35bd42d5e08ad6cb05c9868 Merge pull request #124 from REPPL/feat/itd-95-open-questions-adapter +62f1165a7841135a38326f77913d4ae954961cb4 42f929855176e778b769955d5c07078fdb781ee1 fix: renumber this programme's specs to spc-12 and spc-13 +f20eddcc45ebec93cfa4a89fe2eb4d325d1fda24 98c7043789ed4da179f42623a596e4ef039c35a6 Merge pull request #123 from REPPL/feat/itd-73-p0-plan-intents +da5e5c68f2047c1a1cbb470bc42b9e434ca546b6 9f50485020b68cdf1b4682d272ac8effc44226f3 Merge remote-tracking branch 'origin/main' into feat/itd-95-96-conventions-adapters +35f13a5d165c7446e2d8c95911aa7e18827c386b 61b756683f6b8f3276121067810f5d27e6afd36b fix: renumber the walk-skip-set issue to iss-116 +655db3421e96d01d2d8d9177a47b7041c25a170e c5057a87a075f0c9affc43662bb4479a7a576970 Merge pull request #128 from REPPL/feat/itd-95-96-conventions-adapters +ad3fc38fa482984fad68e53e1b96f680bb9de044 8a0495084d20cf27c8327cb117ffddbd5ab4f965 Merge origin/main into feat/itd-73-p1-impact-derivation +2a8cd6d6fc59e4f0f1c1896430a9131c3950c4ff e258538e7b500a34121c01cd6685d55354bf9e8b Merge pull request #125 from REPPL/feat/itd-73-p1-impact-derivation +2ab1a4d67aaa0c1046beffa8ae3dda44b12e1159 3279cc579bd78efeb0c4d6876bf5b9dfd72657c5 chore: capture the impact write-path gap as iss-111 +5a379b287721643a660640153bdde66430d515c5 3dfad5567a3a9f85f998a5c90af6b1637cf3c2a7 feat: gate the release on a structural surface diff +6afbada210849e04e720f426eb00f05ddc39108e 69c4812086d71ca39df7f42b0106f2626a1f1a1a Merge branch 'feat/itd-73-p1-impact-derivation' into feat/itd-73-p2-surface-guardrail +939f254b5a94abe2e0864817feee380bad010b2d dce924d2c398ecb482454398dfb0924b834de620 Merge pull request #127 from REPPL/feat/itd-73-p2-surface-guardrail +6268da990640d9109d45741c610e2d2f9333fbb2 47b4a0e66be1a1bee1dfa7da14d689ea20a7ff78 feat: cut a release with abcd launch ship and a derived changelog +0fdf38ea3e0fa0931bd48b3665703835d0ba56d4 d422ed0506321e06497a6b15cbac74fb9f349db6 Merge branch 'feat/itd-73-p2-surface-guardrail' into feat/itd-67-p3-launch-ship-changelog +91b8917ea3b798bb64e7b3cdc4c66455cdfafa24 1c4f1ab75d551556a16dd5d3b31e5dd42f482b85 Merge pull request #129 from REPPL/feat/itd-67-p3-launch-ship-changelog +ee1508573a3795e0c92ab10d7ced030e5c598607 62137634f7880c7340c7bc48286764d487bad4e8 feat: stamp the version into the release payload and smoke-test it +aa77013d9bb8360a04b5aba7ae223429c35878fe 80692b498324d1e67d3d3e6f55013e6826fd07ee Merge pull request #130 from REPPL/feat/itd-67-p4-manifest-install-smoke +0df923a56f4dab3e0d1615a3097fff531ffd0e06 d7356cc63752d5a14bceabb72756321645ebd228 fix: renumber the impact-flag-surface issue to iss-117 +3dc464ebc264fce4270c180c026d1f3b79c03e5c a47534d3688cef2ce07fec3c66426f494bb506f1 docs: distil the one-writer-per-file principle +94e1276b07fb3cf8281912725a1bbea98fb87c42 93b01dba23e2acc97ef42270f21226f11af496e2 docs: capture the merge-retro findings as iss-118..120 +d5243fe795482967367002f821d6b62642e962e8 9e2858832bd869d60a0c988ce699df616d50507b chore: roll v0.4.0 — the clean-cutover release +68ce24001a5d773a31ef44561e557863d4d53871 c761979df99f33d9200e28d0f8761896d8293428 Merge pull request #131 from REPPL/chore/roll-v0.4.0 +5108dd99bfc888cae7a6bd8405a0fb04a3ea9fa4 4d9a1630c7b908e586ed4e2a9dc02a200afd319a docs: reconcile the brief's surface chapters with the shipped binary +f0fa344a9acb88e47e3ce0b4439eb5f81dfffcec d6f07ef79910b30a885a9162b0532061ed03a784 docs: sweep the remaining brief-surface discrepancies (round 2) +0135d02f0f6c49934558f702bd4291d853efc88f fe4b5a906ca56d47e385c8e4825e3d2e3ed6d22b docs: disambiguate predecessor spec citations and finish the surface sweep (round 3) +45fb46828f1429e62a160a5a3c86ed33a76ac3ff ba658eef2a6a3ccc289cf6062c72c418abae36fb docs: fix the nine round-4 residue findings +fa795d5497028210762bc331177c02c075929055 ced06211602e624d93eb595b88a3d4ed6c2ae4a9 Merge pull request #132 from REPPL/docs/iss-121-brief-surface-reconciliation +495137594b45ac0d603c15e9fef85defa5bf681c 101b66a1837c1b8e8ea3c2b3d1bf3eb97a347c03 docs: record the v0.4.0 semantic-gate receipts +3fb1ef9fdd31528efb5e478f7cbf5553941e4df4 ed6421396298ababe1788acf39e4454eb5af8fa9 docs: restructure the README's how-it-works into Roles, Artefacts, Process +79ad41c0c74a32bb6efc94cc6e021da2d9df2980 62e5063ff1475cdc913ca4958ac7ffca0398db22 docs: fold the draft's subsection pass into the how-it-works section +87cd9b39aa98261899047120913244964a74d76d 3246eda81de041c2a79d04289b0b7eddfc5d3830 Merge pull request #133 from REPPL/docs/readme-roles-artefacts-process +3d0db162f49b2b92bf2fa5dbfb05f594598c95c2 b53e8487ef296d9481454eb8e8b2b9d2f2f30944 docs: record grill decisions and the 2026-07-24 next-run queue +31a309275332a825b76ad1d1a3526f4265722355 d2606b4aa0c39bec25334c5f8172141261535006 Merge pull request #134 from REPPL/docs/grill-decisions-next-run-queue +e9a10e60f959b596936da56c47b4798c97a1d4f2 a2b9643a66085108c9d5cd654c550d78aa53f93f docs: file future-direction drafts, review captures, and fix the run queue +11ad3f8ecd26a0bd9edf985cc51823aebe6ee245 41588bad0032fa2cd51d4dc40e709fcbc0eb1ced Merge pull request #135 from REPPL/docs/future-drafts-captures-queue-amendment +38ced153630856d4da11757a691d471895d5b099 509387c20131f438c7fbda30a03dbf12e8bca07e fix: let capture resolve and intent seed stamp a valid impact +510f63c1bde9f72f75dca7315e056f2088462bb1 13fe957d00b83a7879aecbe21f8ec1c49d666321 chore: resolve ledger iss-117 via the fixed resolve verb +cdb1c96828900e6d10dd0fb5321a17e53759213f d6741c87f717cef4c63bd87ac12bf6612d7c2ddc chore: capture iss-126, the intent ship-path impact gap +1f23b37c088379ffd7613b54f327daf7bf62940b af97c42e178346f1a334ae4da957ae34d42587cc fix: bound, speed, and widen the probe's recursive file walk +347f78a764c7924771322b20a604775df8e9cdba 00262a823295115ea8771623f5ffbd9632f2d38a chore: resolve iss-112, iss-114, iss-116 in the ledger +418b7808e9f4086e6136a16124d903268833316a f7caced13ccbdd44271996ea77c9aa711b62f4d4 Merge pull request #136 from REPPL/fix/iss-117-impact-write-paths +f2e56db204bcec984b570642b3c07bdf7c73023d b62de3f181e2516ff75229b94657294f55b40cdd fix: mint record ids across git refs and add a spec-id uniqueness lint +adc81ad5d427fa1d2042f996b96baf8ac327c352 78d461d6dd0e3cf0a10d299a75f5963777bae153 chore: resolve iss-115 and iss-120 (record-id allocator class) +22f50312232b7716fe6baec5b46d5d1763e50b76 c63b6e1159353dd99ebd673ee89afb95e93016fb fix: guard itd/spc id minting against integer-ceiling overflow +f1210bd3256ea8f0a5ad13733b7d11309d2b7e6f 3d350fdbb87fad7b59f04a4e8331fa8765defc26 Merge pull request #137 from REPPL/fix/iss-115-120-id-allocator-class +df74ccee6e979d1a4647bcb97f53b41fa898c245 39dea874171f1034f1316e13c4be6b182abd31a7 fix: serialize capture orphan sweep and commit write on the ledger lock +2b2a7d3858eb220529703750ebbce9d4a1f53a13 9d78089f166c92e68abeff7e9109bb14546727dd fix: lock the history-index load-modify-write across concurrent installs +edc4bb865ec30ecbf3588b1bd86297bf4b2084ad 78cbcf83f95a04f8ffa0cee3732d4208df7aee28 chore: resolve iss-101 and iss-102 in the ledger +853878a92ea3664f86b07f81081bf9d1804ab231 774758c34eb247076f90fe40255b6a6ba29f22ae chore: capture iss-127, the repo-local LMW residue +0576929ad2191c05f2a678d3dd10e482375bbe35 15b898a925d564c73d8b52e02b0ec561d580a2b6 chore: capture iss-128 and iss-129 from the lock-class reviews +a532da23123f0a9c42f8acc2a66d372765bf646b a8215332e915af260f1d5a7f746dd63ed0ddbf56 docs: correct bootstrap-seed comments to describe write-then-link +1ae055f3bedf9da19ed310d6d8b9fc59dec1794d 6f09ef20181dfcd5ff2205d696eb3023fa1fdc63 Merge pull request #138 from REPPL/fix/iss-101-102-lockless-lmw-class +92602d4e0b674d1f736840520c1f26d40ee425ce 59ab328e21ad81c54fc92d5dddea18127b68458a feat: add track-latest dev install mode to ahoy install +a744cf39f66ba9acadee8ee55849bc687ca7827f ad63880bbe74d4f0e044538cf0569dff50b8cbca chore: resolve iss-75 in the ledger +f613fc594b2f070f736d6b02f48f169dc3bb0349 f6e221bda40621cf684465fa8ff45e36fbafb3e9 fix: honour declined ConfigChange approval on a fresh --dev install +a792429e183dea25a1603d210193f4da50a96c48 80a89f1b8efd10b6f3cce9a54e4e67e46b3d3a00 Merge pull request #139 from REPPL/feat/iss-75-dev-install-mode +8d76603a51201b0d76f448b0b71ba219e218eb93 fffaec3e6d26e59417e27dc776eb49ab5624403f chore: resolve iss-35, the brief-surface reconciliation +c98a32935212465ec857ee6c21d4f25f1b2fd6b2 347baebb7d9fde33ef6c311c2730aebc5c9ab841 Merge pull request #140 from REPPL/chore/iss-35-ledger-resolve +99719184036dd4e2a1fe5dadc0ec9444248a6e9d c0e68dbbf9f1d22899f97acf634a0be71d1e846f feat: pin the iss-35 crosscheck gate's scope and depth +0c3567449b31cd95f1dcdde59c620da26e8fa812 52e87e614c69a17c0dea2149857697d06a67bd4e chore: resolve iss-122 in the ledger +3b11b2301b7a671c8ffcea61ff6e083f8424fe8d fe8009ca1304591831351587dbdea217c1f2740b chore: capture iss-130, the manifest-deletion disarm residue +216e8b231b6bc3526ea53115d4a93c46c2041778 727fbb349e9b070836bbdd0a00c0a6df4b605a65 chore: capture iss-131, receipt-gate hardening nitpicks +3ddd6108576f07aa1a57eb8d4032f8367cbfc6dd 62f6c3f3bf706d108c972134a96a96c15539507f Merge pull request #141 from REPPL/feat/iss-122-pinned-crosscheck-gate +0b73cb5c6377ec0f1ae325025a767a5a10e76fd5 e497553baf364b17331cbe95bd6582751cf8b2d4 docs: amend and promote itd-93 to planned +5640c5dba119c777a7c042f37a04854a95392fa4 31db2c1d4bc680e21e2df70009c60e8a74fc0529 Merge pull request #142 from REPPL/docs/itd-93-amend-and-promote +60f027b6795f62bd130d69852b5c35872c8ceb37 d19bfc2f01b71f2deaf002b122a3b78c38d79583 docs: ship itd-94 and close spc-9 behind its fidelity review +7b0a72bfdacf2c115386d5809d7f825444621239 8cf01c4c5eec9ab8a32d61ddacb7759b2338671d Merge pull request #143 from REPPL/docs/itd-94-record-catchup +d89207f7aef4d6e24df2be1acddf63f40bf6ac23 9a6a8e11cd2645f9f1d5b658490f184e1459d9cd Merge remote-tracking branch 'origin/main' into fix/iss-112-114-116-walkfiles-class +b261719b3231373bc2bd0a6f4cf87207a78dbc46 24d115ef95052c516c0d65277c3bb2237f50466a fix: require a delimiter for bare TODO/FIXME markers (iss-111) +fdb4d2a689c2b98634727c7fc78d28b4d8ee334e 763fa120b8b113ee35182b4c57fdc7f735800c65 chore: resolve iss-111 with fix impact +e4158bd797ee7c6646edbbb9822bdf8122a36b0d 39728c2d8b02ab34d0fead853a14f46a375487b6 docs: correct iss-111 FP figure and de-self-match the pattern comments +e448270b642c2c43d90753323f6ea58517236d67 c134c051271ec33ce9c14018e00e8b29c313111e Merge remote-tracking branch 'origin/main' into fix/iss-111-marker-false-positives +6d303dd138f8773bc73690b0fa741ba870bf9d55 9665ae9ad4e6a6886efe4fa08947059b3645c30b Merge pull request #144 from REPPL/fix/iss-111-marker-false-positives +ef96cf3420188a72555cf6927b8647fde563e515 79d70c0df1c616fac608f69791162270f9ef5c23 Merge remote-tracking branch 'origin/main' into fix/iss-112-114-116-walkfiles-class +49b28e06d1ff824edc09ae956eb36c233ed11b11 8ad095e9e6387144e0dd87a44cdc1aa604837fe5 Merge pull request #145 from REPPL/fix/iss-112-114-116-walkfiles-class +194a706eed78f7d4fad640f1a79d57bcd5bf696c 2468ea19daa458d6fb347550b7d11130a6c133c4 docs: record the itd-88 lifeboat coverage experiment +7b24b98befbd20440b335a96d0154bd33cbcec6e 9f6ae4cbe92b2b358cd30b3652a4d6c3d98ca35b docs: ship itd-88 and close spc-3 behind the coverage experiment +85fb9e9e406521de8ec5410972cb2e0faecd58e4 c009aeb6c829e5ffa9edaf6d074df8f3a7d6a796 docs: ingest itd-88's fidelity verdict into its Audit Notes +d2a4217f9c6dd98c08040f9c3b7065e4cd089b35 82559fcaf9704c3ad937760bc8f7248c6d8636fa Merge pull request #146 from REPPL/docs/itd-88-coverage-experiment +0c8d758197d17b5a27b1dbd605a08f97202300ac f72daaba22d5328431796b0905d13f35feef3015 docs: append the merge-window evidence to iss-24 +32963871394da062a56f8883827dfe59af2577d8 985ab5d5add85191b82c5239e773620dd72f2dc1 chore: capture the run's six deferred review residuals +3f0ff9b084ab52a975ffbe56635f0b4469ab3662 8ed92df8840118ea7893007791a28fe944bd5edd Merge pull request #147 from REPPL/chore/iss-24-evidence-and-run-captures +1640986ab293a58f2f8097ca5465f934034853c8 32dd28ce2a4d806c3ea70f2684d612ee4d39fc1b docs: plan itd-100 and write spc-15, the terminology-crosswalk design record +5e69d19b08dc3610e2bd64c18a14235042ca6a97 67a649980df2ab4d8fd24e26a323115b41356c78 chore: capture the crosswalk watch items and a brief contradiction +7a74b0d6a5e76e980b6cce9f7b309fdd4a420bc3 9ad27b9314b5f0229a77b9fe1d1f60727dd9657f docs: add the terminology crosswalk (itd-100) +f6d8b22b312f411a4e1a6b9a7c34242cf8cb53cd 213a549b368ebfdea3021050ed104d68fe55f0a8 docs: correct citation drift found by the validation sweep +29984022dccaddd32520c7287bf7d75bbe1ab883 f4506ad8a9132a07205d33fb6f04082545e9e9ea Merge pull request #148 from REPPL/docs/itd-100-terminology-crosswalk +d324f18502f73900fa39da64558798fac228b6ed 3c0ca94663dfc63d709f35d3bd6b7ab71b6d8e2c docs: file itd-101, the deterministic citation gate +8a754011f6985a5cc39fb14049f2ca3403a707e3 a8045b47ce83857947027be7d49490f70b29b2c6 chore: capture the tagline three-variant drift (iss-143) +352b8d54e692a271d6b4d04b4f1f535d7d6361d2 181cea780d9f91f68efdd3f061f90980aee2e658 docs: file itd-102, recorded repo identity with a positioning check +16f15508a580760d8ea3c6c6a8d1294def405c30 e7108fdcce52db7aaf3bdcfeb481912d148caf9f Merge pull request #149 from REPPL/docs/itd-101-citation-gate +d4d629a9034ce31046342ce9200af9d4f314dd8d 17b217dd8f653b36685cbb06fac6b528b04b82b8 chore: capture the shell-hazard incident (iss-144) +e1b27e1f39613a6762c1fbb4dc7a6830a4ca618d 9d52ab5ed436c2db0994280da6bdb545581a2e74 docs: file itd-103, the shell-hazard registry (teach + enforce) +516e2e3f596d296335bd66e9a3835db601da7fcd 44dd794727145a58f5967530b357e4a9ecfa75a9 Merge pull request #150 from REPPL/docs/itd-103-shell-hazard +1cd6aee7a225a19cf343772cb466446e35c4286c 81e34b7eb8f8a3f0b07eaedcfe2d01941407dd79 docs: salvage the 2026-07-13/14 ideation-session record +3f9f5880aebb67ca77fd02ac55726cde1eb408a0 c65cbd6920cbe27d96826c2c7ef5956fcc60e0f8 docs: default unhomed artefacts to the local tier (AGENTS.md) +982ac103c0dcaae514a1070548e3d2e69cb1923d 317d09fdb2e5d73784407ffd0a7f3f109c9c7cad docs: file itd-104, the ideate admission gate +ab8876a8ade93d290eafc4522fadc2d0dfd6d5d2 8b5c1efe71fdbb2da6c107b6e0418344ca5d70b6 Merge pull request #151 from REPPL/docs/salvage-ideation-session +567d4ada76bf820682df10f66d9d660613960531 9424936a6018c1b4bfe6f77ab8a36f1875cd9978 docs: ship itd-100 behind its fidelity review (spc-15 closed) +f301e4ac08ff1664733249301c0a1353b7864b1b d4dc3cc06fa49593d89afbded59b5f3b15c80b0a Merge pull request #152 from REPPL/docs/itd-100-ship +b26fc551bea30a9d5fc843052bbd0f77b092e885 c94be775a41a2425bc6c7c2e418fb42fa9a3b304 docs: settle the itd-101–104 grills into the intents +e946cbcf5869345c6b27814e526d116c0d101465 db5ce05f0c34a058b180a973f51a6ad2116cbe9c chore: capture receipts-cannot-gate-maintainability (iss-145) +48a35247ca222957cd407e70ba60a428e2cbb1b3 2063154d94c895f000f7d1a5a25023a6c4d3a864 docs: adopt the canonical tagline and consolidate the three surfaces +131a2e00f43b31b57b7ac96c5ad98e24848b4f4e d46fbbaa5d71992c164e6dfab7dfcef3b3d45df6 Merge remote-tracking branch 'origin/main' into docs/iss-143-tagline-consolidation +d084b7355739f39539e1b2fffe62f59da6e78506 0591e2fbe8e836892f2c5efe4fe6b3ee940dbbba Merge pull request #153 from REPPL/docs/iss-143-tagline-consolidation +3b5917d1eccee4ce7852c3d4267502f666d60b81 afd1eb062120669e039c673250fafc5a98062383 Merge remote-tracking branch 'origin/main' into docs/itd-101-104-grill-settlements +8a7caf4d1fee6674836e333b0fc905e9e5774520 baf508790ff4139a1e894c4080da41beb32c65dd docs: record itd-93 Branch-A parity decision +46fd4bcb43fd7eb4e7c22bef3acff0ddbde92186 c878f965524fc22a7f9d0d5fc7684fd6bd69b12a feat: scaffold template + self-scaffold parity for the release gate +f722374b4ca8eb95d2078056a400cfdec5147b9b b06e1749b779b099e154b9a6f4d6f00a4747dd32 feat: wire abcd launch scaffold to the CLI and plugin surface +da7ff1621a874a8f97a12fa3caca6e5688463db2 fdf03eaad8892383e804baeeb9572baab4f06130 feat: bare auto-release grants only contents: write to the reusable workflow +ccd103662deab8d802c26b01cefd8620d5fa0f27 d5568e1fcf6b9ff2ff772dbfa89a149d6f14a644 fix: scaffold report must not claim an unwritten file was written +effdac70d49963b63aec6e84692c9852c0728ec9 3e1f29170462831a4efb96e9b3c2cbffc40fcbbc Merge remote-tracking branch 'origin/main' into feat/itd-93-launch-scaffold +d1f3cf7dc51e906ab2257bb44c5370dd61757588 ff44c6c897ae207843a13ae824127e4ef7ef5acb Merge remote-tracking branch 'origin/main' into feat/itd-93-launch-scaffold +f06de9dab9fa261e620c2c7eac02eaf24e00f415 c28f4b60917b96e50b78e59a91e6ffbc21ab7f39 Merge pull request #154 from REPPL/feat/itd-93-launch-scaffold +3aee1e456db2158d16dfff29d7a945cb58229eb7 9de26df92b4f40f1e2330d528e38324a86a1c9f2 Merge remote-tracking branch 'origin/main' into docs/itd-101-104-grill-settlements +6e1e1e4f33e12c7ff18dabbbfe27d2a66e761d55 f331bef5ee2b15370a62fcc2f70740112466e1eb Merge pull request #155 from REPPL/docs/itd-101-104-grill-settlements +7e9e85e4268e32cd3cf1fb94d2cc8573f44506b6 29c617575babff896dda111f3afebc0d8a7e3e7f docs: plan itd-101 and write spc-17 citation-gate spec +aa4c491fc388bfc61ac1e7a796378f90665ff091 846948eb146a7eec427b8720303311abf7d71cdb feat: add the committed citation baseline schema +8e187c0de168b8963695279ac0f405538bb1a44d cb2c88a7247268b42256145b2092d4cbf911fe7a feat: add the zero-network citations lint family +a76f7e20ccc62eef2aef852f28336ea3c10187d2 0bae477729838d5905ad656a09fb4d3ccb0498df feat: arm the citation structure rules in this repo's docs-lint config +3120e6034c23e337fe7efb0394927554110a6de2 258b7834ef3ce7f45daffac05f556c92a03a7acb fix: stop the DOI check claiming prose, and read wrapped citations +ffb83cf961db4599dc57b0ab4ddccea4a5e2ab86 6ab1eb8508a18a47195ad86a9341e95664826a38 docs: record the four design choices spc-17 left open +43f20605d4a29789f1035b7913a8a64bf7b071cc a504e7dcfa02a7d566ade345a4c8bb356712cc8e refactor: extract the SSRF fetch guard into internal/urlguard +c505133873e8b258c9a200f4798ad2181e9abc84 9564f9b05ede59bae74c937b1650df12094e66a0 feat: add the citation refresh engine and the manual-queue receipt +e90a97cc0558300dcbdf5a8c88cfd02352fe45f1 28a323d7a34dd5803a39c243debe9c9ddfea5e4b feat: wire the citation baseline into the CLI, ahoy, and the release gate +dfc5537261cb592788848b481961ad495236c0c0 453ce6ed514e81b8221be9e7ffed594cd200e077 feat: arm the citation gate and commit this repo's citation baseline +39f615889b4058b4dc7b70d8510bc5a3480ca34b b486012894af1ebdd099df7ad556435ec3f7e259 docs: describe the cite verbs on both documentation surfaces +6c5aad2eaf6e1ced71f3ad6a6f003142cf593a24 1f1a7fdc08b5998cc22c7c60291ac84c5164285e chore: record the receipt one flaky source did eventually answer +d7b25dadc0aed08e7937696877bc9ec060d05778 b8f6573e007796fc24c159c6d6491244aba83d85 fix: close a path-traversal write and four record-integrity holes +bb1d168e1e110e3fca9696af39e8a832d3848b0d 977bc3d3b2124af356498346d68c9d8c4a48d1fb fix: resolve containment through symlinks, contain roots, and fix the guard +1dcb7362d39113aab321c45ca2fba763b7149c58 cf022374e6dfe3c637114ec3dfb83f8cf94a773c fix: report a refused redirect chain as answered +dfd172b0992fcace06371faa2bff1dffb502ada1 02548bddaea9a5eb4a5b8a176faad96c7e9f2499 fix: contain every collected page, and stop the CHANGELOG overclaiming +e13d7c4592ba91afa7f77583fdab9014beec78da 606b863706520f5f4f0fe9c9895d015e49e52048 fix: bound the page read and stop the seam punishing a silent adapter +78cc4bcea3f9445ab2220060193446c2c243a77b c4a104c3a5c185ec2a2a6919b030f343861cb099 docs: record manual verification receipt for the harness-engineering citation +555f6ed37e0e35a3e7c608a60db07a3c8877f6c7 4e34a7f34117a6246045e15a44f7fa64de4b5268 docs: plan itd-102 and write spc-19 repo-identity spec +8933a2867ce17f626a8f64fbe8b2df04ed15a683 d42f8ba109ca1011d137f3d432b9e6ab315023e0 refactor: promote validRelPath to fsutil.ValidRelPath +ef602a7d05214f7ccb3e2b44cf9048f126b77a72 ef5c13a1c56a2b9eff7c1b24db9533a8e7a2c88a feat: parse the canonical identity block and check surfaces against it +0f5bef83cb79306311446a04452a1667cdb6e588 474fc3cc0de933d76626d2b2fb12888c7d2bd78a feat: re-render drifted surfaces as a proposed diff +1686a9bcbaed7208b8e8770662d8916ee359e272 c8a1425914f81a456a7ec283d41c9fb219dcc12c feat: run the positioning check on every audit +7af5bb9eda2bdbd1e4afa0c798999310e1283bc1 a1bf7cc18dd85fab4ea82a62fb2f1df458766333 feat: surface the identity family on the CLI +057956c5679f7ad12467d598eabd5deee89fc99f 83fe858a623d5cec2f3d18d171c1c9cf09170ef2 fix: keep line structure when sanitising a rendered diff +dff251090b306ec150892cb016c17e4953e776e4 f96f5e025d236c2f64e8a5f530a7aa8c786b46ee docs: point abcd-cli at its own identity block and surface the verb +0ef6de324d087bd02a6dc4a873aa10195a11ba2a 827c5206d545a2e7cd4b668c140675338da0dc41 fix: emit a unified diff that patch tools actually accept +8b67070b1f56435d2a75081706e0c95a025a543e 094f203ed137baec3bcc161dcbf60712d2551354 test: prove the applied patch equals the proposed content +857cecbbc44464a6f05555d5e75499535a59866c 3a2813bd70c2d88e522089f2e54f2b2d4fff08bf fix: keep CRLF on the human render path, and refuse an incomplete block +b00c796516d5a967f9ef7cf33e123864f651be5c 889ec32bf42ecef13238375f45e0e58797b8187c fix: contain every positioning read and write to the repository root +d68003714327e42ce3ec4be43fa18db9b63f7620 a95c971fb71eee26fc02c2a2298f73c44dfc5515 docs: state unifiedDiff's uniform-line-ending assumption +328b161fc15fe1fdfb3596b4e7f52e019dbca8a0 4b727036b0fefb21130e4bc8921479e2ccf58f3a chore: record the two non-blocking findings from the containment review +847b4129a53e4cb6e48a88532468ed453c9f20d2 2f718cbf9d16a57a8c8074362ae0dcfdb0b4ac8a docs: plan itd-104 and write spc-18 ideate spec +c5a42f363c0ac7036d85e8ed830106cacba7c1be 67d3885a2917c8a7a4fa005320d5d86a927063dd refactor: promote the untrusted-prose cleaner to termsafe +65154c2942dbc7ed99e65e1e6db4b92d96a3579b 18e68c5e77faeda29a9dd805e1d25dcf7c267cae feat: resolve cited record ids against the live repository record +166f490af298451663e272550ff046a216d0b310 5338ec94f1a2287d621a3cdb2b7f0ab7136e1d9d feat: ideate record validates and writes the idea-admission verdict +cf8194a6396e14b58fa06e37890167d3cc61f676 8951ebb67d7ce09b9b63476670742f3eb06ddbb4 feat: wire abcd ideate to the CLI and the plugin surface +f25baca49ab7c2bf675e80efada206758eb226fa 302dd52bfbafa471bdbdd7e4cab10f836f8538a1 fix: neutralise raw HTML tag openers in untrusted prose +bf425b7564ce7f8bf4f75295c4f1f0b366ab7825 778baf7b6a1ec1480ef12484c8f3ce5bc304cc3e fix: contain the ideate record write against a symlinked ancestor +0d761ac3629279d03d1124db61382e49fe9072e5 4b3487823b16718930fd497d73fe354b400a9d12 fix: untrusted prose cannot shift a table column or erase the idea +a6b6d99b4bbabbe0361a91b69624eddac11beba3 3623bcc7fc8f8d1231e97944eea135c7da22a0f9 docs: plan itd-103 and write spc-16 shell-hazard registry spec +56de5156026d0fc1bb9be48f5a5fb673a70f99d6 41519dd15a707945febc276dfdea041711d60f9f chore: commit iss-146 capture (guard-bash gh-write false positive) +5e2c813e389ff0d2bb092ecb1a4f4d497342516d fb0a5da3f57a650eed533121aae054c905bf846e feat: add shell tokenizer for the guard hazard registry +4a8ac2eecfb7b6f7d0a8258e0ba96a0c7e416bcb 6929afa2f4b55802503628d72f22d54e8d28e2ad feat: add the bundled shell-hazard registry and its decision function +7f4259cb3594765734f8feefe10303e602e878ad 37204398069e386ece7a79525479d871db9b9c5b feat: load per-repo guard overrides from .abcd/guard.json +2640b50dc3d9d335753c74ac15a8f76a14fd8ec9 c7f8776241d4d0de8aa14f63f414211318f4ee9b feat: reject a guard flag group that could never match +3adde8cc1b8b621bba89a54229b947063626484e d791e07c02a0f37d985e60a5b71e30a5dd2d3fea fix: close four guard matching and validation holes found in review +0fe71ab8112da211cfd628678ed6c5ad208771be 40514a9af367d8c2f8812eacdd8579e03b034050 docs: map the guard package in internal/README +9bae2c36ec340ea813af4b7a18e7c2bd1da0630a aec771c30c2bd1b0b82844b6cbbc80f7bff7f3bf fix: hold a heredoc body until its command line is complete +ad63e8dc473af18bf0135fdd551864b06bff1d06 5d1f80ea061de0748f45a176396f7e49e6bf8723 fix: stop the git-clean successor recommending a warned command +83f20a1a7d92b896198c7493aa8f9a38411b023e 5ec9ef6012a7bbf36a6fea3e6a0f0ce7e0f65fee fix: keep an arithmetic shift and a blank line from unguarding a session +35ef1016620582dbe7e56b3c08003acb3ef0de03 5a40f82104a6158d9f641b155153a42b8823a8a7 feat: wire the shell-hazard guard into the CLI, the host hook, and ahoy +e8ba05305892f59d8cdaf0a6592fee7e15e62522 42dcfeb9d5bc0b95d2bce853f8600fe0353b9d6f docs: document the shell-hazard guard surface +d4dd46c2e14d954324e1bee3bdd02181cf22867b 71fd2243b67931cbcbdad02164839feacc6353cd fix: answer an empty --command instead of waiting on stdin +6698f69951f76b71e0ee195c370c643a635e3ebc 4f2632207d7774832a6c255c0f463dedbb94f22f fix: stop the guard report asserting what it never checked +c6333d4773b2021b054743f1fc4fe39671626730 395fd69591850b17d0ef1dd98cd555f18276fe73 fix: close the two silent ways past the guard, and stop overclaiming coverage +4288532cb91b457ada0293e5d84b3197e0681546 ddbf597b20124c8b2f775d98f4f92f54db571f7e fix: refuse to answer from a switched-off registry, and correct four claims +49cffa05e6216d9cbb29dc601961464781e6541d fe10e9d408fe6d87291977d661283ffbfcf46ccb Merge pull request #156 from REPPL/feat/itd-103-shell-hazard-registry +e05a58ef44b970f7d8db65d7502675bf9a46c3d9 a793f9e1b6d68d5bb09fe73e0bf89b93246b2638 Merge remote-tracking branch 'origin/main' into feat/itd-104-ideate +3bd32f7986f15f90aac977a2c1d02a7161d73e01 d416645842380653471484b86c3e674a61876dd7 Merge pull request #157 from REPPL/feat/itd-104-ideate +ca1459805dd4cc3d48adc39433bbd34b098736dd 3c2608f897a79bed6a9a5c5e4a9f04748fa4cc17 Merge remote-tracking branch 'origin/main' into feat/itd-102-repo-identity +3036c197ab0a9d71b3b82b0e50de3b907ed3af83 6342d48dd2975d9b2432566d4a11314ec9942971 Merge pull request #158 from REPPL/feat/itd-102-repo-identity +5c467fc051b23283b8c14c4540b2c9ee2273416d 04336f2bddc729c9f3894c3370339c82381b8aca chore(deps): bump checkout, setup-go, attest in workflows and templates +91d52c44c23e88dd01ea98ee9b69a31e357317d0 8c52fb57027fa166a3de5044262fda752497f955 Merge pull request #162 from REPPL/chore/bump-github-actions +4a0694e138037b19eb65d359e695650eb5ef7f2d 7333e48e68043caadca02f74581484a00703616c chore: ship itd-102/103/104 — close spc-16/18/19 +1d915554de44bf6376c7769a43f6ab7c8f1eab28 816d0f80d8427aa6cf003e93b1f9078c7c4828fe chore: cut v0.4.1 — date the changelog, fix surface links post-ship +b1dbe01902d4a5658cd4269a7e933f46306fa68b 5cc421d0ee613c4ea1a637c49f06620376889f03 chore: ingest fidelity verdicts for itd-102/103/104; capture iss-151 +63424a6cb217c2d77872a0d2fe2ccd26ce9f04fa 2855f3715c081733d67d387e946d6488a4546180 Merge pull request #163 from REPPL/chore/release-cut +e195757c15a5efdaa2967b74cf3be722a3432027 b07bb7414edb0888f73be6d258ba90207fc82150 Merge remote-tracking branch 'origin/main' into feat/itd-101-citation-gate +5abe5b37b389a08c0145d494ff5472e028878a2c 9baa5454fcb089895f8e7e632534800716dbaea7 Merge pull request #164 from REPPL/feat/itd-101-citation-gate +ba5e701f75976b38180d25d1c0ae990379eaf77a 155758080e722d72bdf33b30283976679303ec69 docs: bring the brief surface docs current with the shipped v0.4.1 surface +62f40808312d59c435649453a7bff9e8b9d5ac67 5b670955a8191ead71405ddc6cd220bf680af025 docs: list launch scaffold in the brief's shipped-surface enumeration +9f759c1f54a62fc204f75d2f3102e71af2a95cfc 056f6f683090ac98c9359691905a005ca11fc45d docs: the CLI reference is generated and drift-tested, not planned +9349f17fb17d685b8c7e9bc03210d0b498523eb5 ca04b50014c90b35efebea7b05abdcbdaa7be693 chore: track brief-currency residual (iss-152) from the v0.4.1 release gate +46891641c857e780e815db87176789c123a5aa91 f71f1c24e95cce7007b062d3b0a83facc5eb69fc Merge pull request #165 from REPPL/docs/brief-currency-v0.4.1-followup +26b4e640f911055b496cb61b8df5b2f2daee0e16 b28f4e8140f3e24d8dbf53906a62fd07f28faabc chore: record the v0.5.0 security-and-consistency cycle +b633d304bdda65e2b6960c02e9c2381b6eb04a78 8e4d2eb5402f4732baea5956fcee76159d99461b chore: record the docs-currency HOLD capture for 3de5148 +90d606c6e1af7a8cf0de6b6e883518b18f7773e3 3078cc736585fa466e16b7da118d0d5f1f9893bc chore: repoint itd-74 links after the drafts -> planned promotion +9dd28072f3d507b963664167322cdb48bd41ea96 8db8540cb3690eb30f684d46da8b63b900de758e Merge pull request #166 from REPPL/chore/v0.5.0-cycle-records +cf265dd91ffaa8ec42bd06ef69c7c9ca83891414 62d735d693b60bac7f6c0e8f1ca17bcbf5cd4aed chore: draft itd-105 — plugin hook binary survives install and update +906e2d59eac7de88bf49060a90694b8f5e7742d7 9eaf750dbd77d4e572edb7c16f5eb867100b2a31 chore: capture iss-160 — spurious /abcd:README command in plugin surface +c055c30cd748c698da26e2d60653f98852f5b4fb 7be6249fc14643283395832f5486e71a8ab6ea2b chore: capture iss-161 — /abcd:abcd: double namespace in plugin surface +a8b415297573c263f3c3bdff9ca39f7854f4c5d5 eda50b9254182f313303477047edbc6efde194b0 chore: capture iss-162 — surface guidance references unregistered /abcd:ahoy +7394ee90e096f492fddc599912bc155be973dfc6 41427f18621b2db5d564b368008de81bc799f675 chore: capture iss-163 — install prompts carry no per-choice help text +0529edd85cbb86f697ebc8e8b65127acb06cfb76 0d8e65d724fef95bf560f7de4d38e3ee8f61b2d6 chore: capture iss-164 — install summary speaks implementer jargon, not persona language +8089ab5be4d878096a287ec1e1393908beae1bb2 8809e79c37ee6a3f04550df6b707ac87c01958cd Merge pull request #167 from REPPL/chore/plugin-install-findings +51a401f4af5370471a11520dfe07d4249561e2fd 56ce1ecfe35e60d2a8a869d1066c57e9b900e2ba chore: grill itd-105 to ready — decisions recorded, planned, spc-21 written +bf556f7c94811bb7d77fdfa65a926873587e746b ab7674c38a158fdd02fba90e19f78ece3bc66799 chore: capture iss-165..iss-168 from the grill and second-repo install +9fec5cfc19aec3cdd7a7277335c40b6a928de3c2 4223d02e79130ae26d433bfa919888e3d3657807 chore: capture iss-169 — installed .gitignore fence contradicts the tier convention +666cf2a95a27af88df0da485dbbe545b37fb8e56 5283df5df784aacdf2e76fb26a6735aafab2ad41 Merge pull request #168 from REPPL/chore/itd-105-grilled-ready +a4a6c5f0cf91aae4186c72cf1bed463dedd3b654 ef047fe1e3286e5585879dff961593c597c54c84 chore: draft the explainability follow-up run queue +4be6fcd562ea23d9a88c3ce1e9080e2400be50b3 ca5accf74c9d9c52cdc18c24a73fda8e41de0802 chore: pull iss-171 into the explainability cycle as Workstream B item 6 +897ff720ca096a60845f2ca49b0c9baece11903c e70ebc6b353d8bee7977ffeb0313fbdf0d233a99 chore: pull the 2026-07-29 install findings into the v0.5.0 run queue +42862e5f8af922cd7af7357bdb69f6ddd0083c6b 2f5b2bb10294906bd2dc5f034ea9c0edaf22fe66 chore: capture iss-170 and add it to Workstream C — symlink-blind plugin-root resolver +a3ec434c17ee40d17a0b68019784b6157f929420 686f6d5e2974306252a0a7b47e4bb3942209036b Merge pull request #169 from REPPL/chore/v0.5.0-plan-install-findings +b85696937ff23b0d3c4f68946ca9f32aaf5bf637 ad09bfe8473e7974c88f8d00141aa581c5f12d48 chore: capture iss-171 — PATH-install detector assumes one blessed layout +85fe10b1a04f9c18f9c8dfac38173f8903fe2482 aea8fb2498e1605d4e562ea078c0c364472b07f5 Merge pull request #171 from REPPL/chore/iss-171-bin-target-capture +46a0a28986cf454f1520f06805cc86d76d212c3a a86f8daec0b713cdf4d3516ab63de360d1e8b719 Merge branch 'main' into chore/explainability-follow-up-plan +fe6bace23d801727ac0d6eeb9288a5ea9e03c35f 455bdd9fe63316c5803b39f22c0033a62600f484 Merge pull request #170 from REPPL/chore/explainability-follow-up-plan +1865f71b6304da7639a1265e258de96f777d08da 96eebba912c36aee5f4f8d816e7398325a7a28d1 chore: capture iss-172 and add PR-queue hygiene to the v0.5.0 run contract +52ba9e014b52f098989ebd6d6393516225f6d4ad 1f87ec41119363440e1f06159f0a85a3615fbf5d Merge pull request #172 from REPPL/chore/pr-queue-hygiene +5226b292121d75095277a85a59a3e8b4b7800a28 a167d336125445fd8cbf66f579a7065085aba389 feat: detect network identifiers outside the reserved documentation ranges (#175) +2be7a58e5c106d328eb58deb34703f2559bfc6b2 c46983c39cb772a9710f167d309e63a1d9882086 feat: three-tier-layout flags local-tier artefacts in committed tiers (iss-155) (#176) +5927c89835abd56e844ca990d1225218933f4588 a8b5bc78e632fc2b19796bc19d505ad74bb6743f fix: PII rules domain recalls network contexts and forbids committed network identifiers (iss-156) (#177) +8f5c4d20f494a3d780ed246981251f78fc700965 b9e3beb92f72f8fd8d57dab145a4ecd29c09c6d0 fix: installed .gitignore fence matches the three-tier layout (iss-169) (#178) +c31af0b4ae3513528ce455921fe877e2f7c55614 0be457966b956909d6ce613fc4b091a29ab2fa88 feat: name-banlist increment 1 — private guard and abcd banlist verb (itd-74) (#179) +0f39fcfa6079581df5d4c04e8dbb444a78e16324 65a9ccaf1dd068f70088aec26f43da7044865777 feat: name-banlist increment 2 — ahoy scaffolding, honest reach, lifecycle close (itd-74) (#180) +6ebea18b6633ebc5c4b20cb112582aa5a956ff6c 852588a12e6ecc6de68aaf90cc2ab0fc469bb234 docs: file itd-105 and itd-106 intent drafts (#174) +44d13866844b6c029322ddfee8818c1bec11c6d0 79ef86d761c346af6b37b6b9706068697def488d docs: verify and re-scope the transcript-scanner entropy residue (iss-96) (#181) +54dc26770dcd9141cbb07bcb3ad46a2ca8c8d66d 9c966b5d9493678260757cf704bb2f90b4be5531 docs: land the iss-96 merge-gate corrections (follow-up to #181) (#182) +e424b3ddf5d3a44c5f1466ab69b3b8a3bc975d30 5b299a3273e8da775eb3639089c0601d27afd628 fix: guard registry + matcher batch (iss-159, iss-144, iss-148 partial) (#183) +9d702749dcbf281cc73a08af2ae331daf77db4c0 4955de3fed9b4b5edd95e4631442d60d799c8dff feat: plugin binary self-provisions at session start (itd-105, spc-21) (#184) +f63993ffeebcad77372230fb1c25220a476e9b39 966b1060e81e8dd311f753a0162fa90a4c2ff0c8 test: close the memory-ingest boundary coverage gaps (iss-30) (#185) +717a0cce843fd3b83146cefedb06e3d0af75807b 5084470b3a8a7db93a22f321888663c9c5e731de test: cover the untested refusal guards (iss-34) +277b676ea2570a86d04e7249088d2890ea4e2fac bbdc5656c1dd17ee2049b8f0cc384365f4dd35b6 fix: resolve the executable symlink before the plugin-root walk (iss-170) +6a08530bfa65f1a2d9a178bf93cd1b5fd67257ca 9764ad9a89213c84fbf564f34aa4875d2a509181 fix: hand-maintained index drift — delete or gate stale directory enumerations (iss-38) (#188) +bbaeee4913f44d0f92eaa52992e225e9598f0872 9023819788d0ce92c3500aa7adff6fb49b5337d4 feat: record-lint checks the record schema across its stores (iss-39) (#189) +9601fa2508d2d1bc5bc1d7ac708d8584d10cdeb9 d5fc2d8d200b9b3cf1964db5861469f57766766b fix: one canonical glossary, a derived index, and the retired-registry banlist entry (iss-40) +41164f3083725258224c85c3d388df854eddd512 1a05055a257273b0d0a02a27470730b484668835 fix: the lifecycle gains a delivery-state gate, and two id-listings stop drifting (iss-41) (#191) +cb2f2d0afefd9b8bb097876b0ff52e3bc8a24b34 637c287a3ed28584269201468c38572a7dd590c7 fix: the record's orientation is current, and stops silently drifting again (iss-42) (#192) +5662c73b45d13977c3a4da651332da23d60e4a91 3af404635fa54dfb569f4c52f25c279009e695e2 docs: the gate descriptions state what preflight and CI actually run (iss-37) (#193) +f0cd45ea7b2001499523e4f0ac6adbf8f8bfd9a4 a3a5d0e160951b951137d80eff1b733e0e4acfc8 fix: plugin verbs register as /abcd:<verb>, not /abcd:abcd:<verb> (#194) +0ff675a45ab4fb3874ca112687763ab093dcb2b7 50c599eaf1c9563932758a62dca399faa9151d2c test: prove refs-union id minting across capture and intent branches (#195) +a8641523621efd24e996737b2936740d756b4018 5ad56426bdcbf01751aa2b85058419ef778c81b2 docs: the README layout line names both distribution channels +7d4aa90404275e29da77344a69fae74dd4a4a669 92fe3bd8c0f6b8e7f6248afaff9a07bccf436b7c docs: iss-43 is re-scoped to its one surviving claim and resolved +539810ae596dbfddaf700ca1a7af96603296db44 aa741a89d2a211d4055b434eb861ca997ad5d4da docs: correct the iss-43 commit attribution and the exclusion claim +662bf7442a065c022d42d9fed9bfbdb667348f50 5e9840e10d2fa52261a43db5191c650c8382dc6b docs: correct the attribution split, the packaging claim, and iss-183's corpus +aa1570225e3ba83f13e87c73583ea1094e834b5d 3261d1e2f26c655ef62fc8edadff3f4952ac076a Merge pull request #196 from REPPL/v050/iss-43 +5345a2eff43a4e73ec051d1d7c7a368265ddf8b6 5a45612e4db79b8d035d4bde388d87523ad479e4 docs: land the iss-43 merge-gate corrections (follow-up to #196) (#198) +49aeb8e26ab69ff25924312e144afb9776ccdfdc 1cc73ec2472c9a0ad3503c8130e98d561a618260 chore: give DECISIONS.md and ACKNOWLEDGEMENTS.md a union merge driver (iss-118) +4e668e19371bc10669eb380f7433ee29e132240c 5b1161c7631ab62039fd488b3f6ede456b9bfd88 chore: capture four bugs verified by the bug-hunt loop (round 1) +662edce8d90b3c56f704b95af748eb6b4ed69c58 3e47e70355e5860f5e971d054e5919669b1920f7 fix: the guard fails loud, not silent, when a `<<` is not a heredoc (iss-184) +54fb692271f4abc58c8769faa99c63c1ba82b7b3 93af893979aad92fe9e18ed9092ae5c58428e8db docs: resolve iss-184 in the ledger and record the round (bug-hunt loop) +c120e527b62460cfd225ad689d68884ec7ba43ef 8bb7a0d517f109424f194a35b8eeb5f54a1e00ad fix: a heredoc delimiter can't be adjacent to a bare paren (iss-184) +09ab7d757f3e6009c573161d96994b9222d3dd1c bfeb5298d4dd0a0b9092d73735ca23d2bda7f2da docs: correct the iss-184 record to describe the real fix +b1cb699bcdfc3a5a48a8ecf5ca4625398833ceb5 996b0a61495c4ec8634daab37a5ec373c4a1191b Merge remote-tracking branch 'origin/main' into bugfix/iss-184-guard-heredoc-arithmetic-shift-bypass +82fa7376835b400dfd2b389d0735b0902742abe2 0a3437e9a85104dc677b537debac82d53eb12abc Merge pull request #199 from REPPL/bugfix/iss-184-guard-heredoc-arithmetic-shift-bypass +5bdc6c0461325f3a39ae3b33eb1123454df1fc23 5ffe5de98ce547e4270afa2053d4dcc7609f525a Merge remote-tracking branch 'origin/main' into chore/iss-118-decisions-merge-union +95e01f6f5357925ae0815fcb40d9d4697cb40846 2ab6019338990421e42793163cd7396a1f8df4bb Merge pull request #200 from REPPL/chore/iss-118-decisions-merge-union +33d0c5b440ed2f8dea93fdc306033d66d128da71 5dca09754add8c5dfaecc7edeaf3c413464039e8 fix: the scanner detects a second secret token immediately abutting a first (iss-185) +37f870a501dd762dc7f7d3ab24953b98f18661af 7de60dec6fe70c9fc1abbad29d9b8cfe9e01e483 fix: the scanner recovers a fixed-length secret abutting ANY pattern, not just its own (iss-185 review fix) +734fb0f07c55deeab99504bb7f4a3b996d1367f9 4f70a491a496c4017c2afbf674ad5048ddfba1e5 chore: capture a bug found reviewing iss-185's fix (iss-188) +23962809f33c3d77d410b421973b99b7fbe84fd9 16dfbe4c1b735e64511b4c676f3ca2903d14a84e fix: anchor the adjacency probe so it costs O(1), not O(line length) (iss-185 review fix) +006eeb85cd31d1000975fc2b309f3154eddd09a7 9fc04ea212e36e21edfe6d68ddeb2e8908956d0c fix: bound the adjacency probe's window so one attempt can't cost O(line length) (iss-185 review fix) +e78251e1d08c3954b7670b7abb939db7487748dc 55b73b43d545bf74fcffb47e2b048ce5bf57a9e1 chore: correct a comment and capture a merge-gate finding (iss-185 PR, iss-189) +2ca3f4b92e851b143ed74b708dee0854d80c8d61 eb61acd6d00b7c6150efa86cf4cbe623ca5125b6 Merge pull request #201 from REPPL/bugfix/iss-185-scanner-adjacent-secret-boundary-bypass +41c62ba345768282cdd5ef4af22d50b4cdbf41b1 7966200aab9e6efa6579b5c70c5d224e43f0b869 fix: the scanner recovers a second secret an open-ended pattern's greedy quantifier swallowed (iss-188) +d17f450c69e0794e4d181eac3a22244ed5578732 8cec9b6c3f3f6f8386140ceec3720ecb769dc3ac fix: the junction search no longer steps over the junction it is looking for (iss-188) +cd5c75023bee6f04ca16ac741131e335dc35634c c7d28415a670cb7b0e205dc68a6346a0ebdc288a Merge pull request #202 from REPPL/bugfix/iss-188-scanner-adjacency-greedy-open-ended +abf20dadf9e200704c4a9823c089f216398d8d9a ff8cb30c8e7b029d8bec1c49d03067201f76dfd9 fix: capture transitions roll back the destination on a failed source remove (iss-186) +5e10f638440077c28c0f01a728150a3e8041be26 29e9f87b3e91ea3069dc6a822af7cd9454e09f85 chore: resolve iss-186 and record the round (bug-hunt loop round 4) +8fbab11aa4c8a05865179d952ceb48a3099bfeb0 0b2631977e6da00c946a6b6a6957c7fe6e112653 docs: drop eight Unreleased entries already published under 0.4.1 +60ecc36015435b9efc54c0193385b2aef377e892 f32e19891e3b59c7a4d7fb959618120a8c6dbcc3 chore: pre-release doc sweep — waive two stress fixtures, name the shell-hazard guard +33779807b9f0311a4a2bb2281d65e1c5b5c7cfb1 049079562c03c3af315d1c851e0aa9e91d4cc3e2 chore: cut v0.4.2 — date the changelog +532d967712d78a690e8afbb9e98cd3ae3c3641ae 992cf19f16594b7a3ddc32a77044eafc721c1f3b chore: record the v0.4.2 semantic-gate receipts (PROMOTE x2, full tier) +22d1cdc1b76e4c95970c9bfae4751e51fc830215 b562f62d8ea2c42750e0ab6aad33e83287923a3e Merge pull request #204 from REPPL/chore/release-cut +7b5e150b48889d54c20af41cbeb32dc37f068865 04ea6d4527e187a20454c1aab797cc71978b1920 Merge remote-tracking branch 'origin/main' into bugfix/iss-186-capture-transition-remove-rollback +f71f5d7d6a3f7a3b38262249b39ae58e23a7a53e 1ad1ff8c2764bb8ebb3fd448a0ba7252192b62d0 fix: keep the iss-186 CHANGELOG entry under Unreleased after the v0.4.2 merge +4c56802ffb11528867499e60d27ee91c84d295c1 e2f8c6bb8e64a7071bd7818f8959eae24cf829b8 Merge pull request #203 from REPPL/bugfix/iss-186-capture-transition-remove-rollback +c133c058f3645f22d8607f468c1ff4477b2bd72c 5c0af532dcf464ee4a6557e8076519c72245aa5a fix: rules.Merge no longer panics when the base declares no domains (iss-187) diff --git a/.abcd/work/attribution-rewrite-2026-08-06/tag-map-old-to-new.tsv b/.abcd/work/attribution-rewrite-2026-08-06/tag-map-old-to-new.tsv new file mode 100644 index 00000000..ab7b6925 --- /dev/null +++ b/.abcd/work/attribution-rewrite-2026-08-06/tag-map-old-to-new.tsv @@ -0,0 +1,7 @@ +tag old_tag_object old_commit new_commit +v0.1.0 df59606ca1ea1dd45c34f9834a714942cb1e503e 4bfc162f29260e15bc7f2d9396463a07a7e95e7d bebc422420333221149f53139ba5541062685903 +v0.2.0 4e9396ae22305b8fb0a42e81c0e10ded58f14038 ae5e70391e855bbe7b3b43e6d9b2ae02530ef63b 23ac0c1f1fe14f65f99e3cc431fd8e821012d146 +v0.3.0 71ae75c718e66769ae3a119d0d17e273d5f0ebd2 cbd66de321390c77e1ff682c44aefe66e2c503d3 c9ff833eff63620b8db4c1685078e5e30e590000 +v0.4.0 a576d266568d5f8466eb7129da84509490e18596 495137594b45ac0d603c15e9fef85defa5bf681c 101b66a1837c1b8e8ea3c2b3d1bf3eb97a347c03 +v0.4.1 (lightweight) 5b0937c8250e6185f7a57c2ae164c1deb3029d38 360c22dcdc36817f8cf784c0687e735778dcca05 +v0.4.2 b2e9bc2bee8b6c1efe4b259564ba77222b0395fe 22d1cdc1b76e4c95970c9bfae4751e51fc830215 b562f62d8ea2c42750e0ab6aad33e83287923a3e diff --git a/.abcd/work/issues/open/iss-193-attribution-identity-enforcement-belongs-in-abcd-for-every-m.md b/.abcd/work/issues/open/iss-193-attribution-identity-enforcement-belongs-in-abcd-for-every-m.md new file mode 100644 index 00000000..186967e3 --- /dev/null +++ b/.abcd/work/issues/open/iss-193-attribution-identity-enforcement-belongs-in-abcd-for-every-m.md @@ -0,0 +1,56 @@ +--- +schema_version: 1 +id: "iss-193" +slug: "attribution-identity-enforcement-belongs-in-abcd-for-every-m" +severity: "major" +category: "process" +source: "user-observation" +found_during: "manual-capture" +--- + +A managed repo commits under whatever identity git happens to resolve, and when +`user.email` is unset git **invents one** — the OS account's full name plus +`$USER@$(hostname)`, silently, on the first commit. This repo's own history +carried 25 such commits before the 2026-08-06 rewrite, all authored and +committed under a fabricated `@.local` pair no one ever typed. The +same gap let autonomous harness runs commit under a tool identity: nothing in a +managed repo declares who its commits belong to, so every machine and every +harness answers the question differently. + +**Scope, settled by the maintainer (2026-08-06):** abcd enforces exactly one +thing — that a managed repo commits under the user's own GitHub identity, and +that git can never fabricate a substitute. Nothing more. Rejecting AI +co-author trailers, allowlisting authors, and gating pushes on trailer +presence are **out of scope here**: those belong to the forge's own rules +(a server-side ruleset) and to iss-119, not to abcd. + +What that means concretely: + +- **`ahoy install` pins the identity.** It resolves the user's canonical GitHub + name and email (the account's no-reply address is the safe default — it is + what the forge already attributes to them, and it leaks no personal mailbox) + and writes both into the managed repo's local git config. Repo-local, not + global: abcd configures the repos it manages and leaves the rest of the + machine alone. +- **Fabrication is disabled, not merely overridden.** The repo also sets + `user.useConfigOnly`, so a checkout whose identity is missing or cleared + fails the commit with an error instead of quietly deriving one from the host. + A refusal is recoverable; a fabricated commit is already in the history. +- **The state is observable.** A managed repo whose identity is unset, or set + to something the install did not pin, is reported — the same fail-loud + posture the guard and audit rules take, so the gap surfaces before a commit + rather than after a rewrite. + +The privacy half matters as much as the attribution half: an auto-derived +identity embeds the machine's hostname in every commit it touches +(`alice@alice-laptop.local` in the persona shape), which is the same +never-commit-hostnames class the v0.5.0 security half closes in scanning and +redaction. Prevention at the commit boundary is where that leak is cheapest to +stop — the scanner can only find it once it is already written. + +Likely intent-scale: a user-facing capability across every managed repo, so it +wants an intent and a spec rather than a bare fix. Reconcile with, rather than +duplicate, iss-84 (managed pre-commit gates — the hook seam this would use), +iss-85 (managed attribution config — the nearest neighbour; check whether this +supersedes it or lands inside it) and iss-119 (`Assisted-by` declared but +unenforced — the trailer half, deliberately left out of this scope). diff --git a/.abcd/work/issues/open/iss-182-build-plumbing-comments-describe-an-older-gate-suite.md b/.abcd/work/issues/resolved/iss-182-build-plumbing-comments-describe-an-older-gate-suite.md similarity index 69% rename from .abcd/work/issues/open/iss-182-build-plumbing-comments-describe-an-older-gate-suite.md rename to .abcd/work/issues/resolved/iss-182-build-plumbing-comments-describe-an-older-gate-suite.md index 962eff11..a9c7b318 100644 --- a/.abcd/work/issues/open/iss-182-build-plumbing-comments-describe-an-older-gate-suite.md +++ b/.abcd/work/issues/resolved/iss-182-build-plumbing-comments-describe-an-older-gate-suite.md @@ -7,6 +7,8 @@ category: "documentation" source: "impl-review" found_during: "2026-08-05 iss-37 merge-gate review" found_at: "Makefile" +resolution: "Three build-plumbing comments corrected to state what actually runs. The Makefile preflight comment names the three lint-gate prerequisites (lint-reviews, record-lint, docs-lint) ahead of build/vet/test/race and attributes the `gofmt -l .` format gate to CI's check job rather than to preflight. The .githooks/pre-push comment describes what the hook enforces — `make preflight`, i.e. the three lint gates then the four Go steps — instead of a check-job trio, and its Actions-only list now carries the smoke lane and notes that CI's reviews-charter job repeats what lint-reviews already ran locally. The ci.yml header comment names the check job's gofmt, record-lint and docs-lint steps (ubuntu leg alone) and the separate reviews-charter and smoke jobs alongside the secret scan and workflow audit. Comment-only: no recipe, hook logic, workflow step, or gate behaviour changed." +impact: fix --- Three build-plumbing comments still describe the pre-push gate and CI by an older, smaller shape. Same class as iss-37 (claims must match reality), in living files its re-scope does not cover, and no ledger entry records them until now. The fix direction is the same bar: state what actually runs, verified against the recipe or workflow beside the comment. diff --git a/.abcd/work/issues/open/iss-183-abcd-never-ships-claim-survives-in-context-and-agents.md b/.abcd/work/issues/resolved/iss-183-abcd-never-ships-claim-survives-in-context-and-agents.md similarity index 75% rename from .abcd/work/issues/open/iss-183-abcd-never-ships-claim-survives-in-context-and-agents.md rename to .abcd/work/issues/resolved/iss-183-abcd-never-ships-claim-survives-in-context-and-agents.md index 4034c01d..1e96b90e 100644 --- a/.abcd/work/issues/open/iss-183-abcd-never-ships-claim-survives-in-context-and-agents.md +++ b/.abcd/work/issues/resolved/iss-183-abcd-never-ships-claim-survives-in-context-and-agents.md @@ -7,6 +7,8 @@ category: "documentation" source: "impl-review" found_during: "2026-08-05 iss-43 review" found_at: ".abcd/work/CONTEXT.md" +resolution: "Reword direction taken, not wiring: the descriptive instances now carry the channel-truthful phrasing the README adopted under iss-43 — `.abcd/**` is present in every repository checkout, marketplace installs and release source archives included, and never in the released binaries — with the launch bundler named as the implemented structural deny that no cut release has run. Reworded: .abcd/work/CONTEXT.md sharp-edges bullet, AGENTS.md (the boundaries bullet and, found by a case-insensitive re-enumeration the issue body's list missed, the working-tree-layout line), .abcd/README.md, .abcd/development/README.md, brief/02-constraints/01-platform.md, brief/05-internals/03-configuration.md record row, brief/01-product/02-context.md (both instances), brief/glossary/distribution/release.md, roadmap/phases/phase-1-ahoy.md, and the internal/adapter/scanner/network.go persona-registry comment. Classified exempt and left: brief/01-product/01-press-release.md, whose genre is the intended product stated in press-release voice (its unshipped claims stand unqualified throughout, so singling this one out would be inconsistent); brief/04-surfaces/04-launch.md, whose mention sits inside explicit 'The full-cut design' framing and is already truthful; plus the pre-declared exempt set — adr-0028, the dated plans, planned/shipped intent bodies, 03-mental-model.md and principles/script-first-mvp.md (different 'ships' claims), and launch/bundle_test.go (describes the deny mechanism itself). Wiring the launch publish path so the filter runs on a real release stays open feature work." +impact: fix --- The blanket `.abcd/` exclusion claim that iss-43 corrected in the README survives across the record. Recorded rather than fixed there, because the disposition scoped iss-43 to one README line. diff --git a/.githooks/pre-push b/.githooks/pre-push index f57bb9b2..4fa3e1a6 100755 --- a/.githooks/pre-push +++ b/.githooks/pre-push @@ -9,9 +9,12 @@ # (see the public-flip checklist). It refuses: a direct push to the # protected branch, a deletion of it, and any non-fast-forward (force) # push to any branch. -# 2. The CI check-job trio (build/vet/test + internal race) must pass -# natively before a push leaves this machine. Secret-scan and -# workflow-audit lanes stay in Actions. +# 2. `make preflight` must pass natively before a push leaves this machine — +# the three lint gates (lint-reviews, record-lint, docs-lint), then build, +# vet, test and the race-enabled internal tests. CI's check job adds a +# `gofmt -l .` format gate on top of those four Go steps, and the +# secret-scan, workflow-audit and smoke lanes run in Actions only; the +# reviews-charter job there repeats what lint-reviews already ran here. set -euo pipefail cd "$(git rev-parse --show-toplevel)" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b0c0e917..bc7a2273 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,7 +1,10 @@ name: ci -# Lightweight checks on every push and pull request: build, vet, and test on -# macOS and Linux, plus full-history secret scanning and a workflow audit. +# Checks on every push and pull request. The check job builds, vets and tests on +# macOS and Linux, with race-enabled internal tests on both and the `gofmt -l .` +# format gate, record-lint and docs-lint on the ubuntu leg alone. Separate jobs +# run full-history secret scanning, a workflow audit, the reviews-charter +# discipline, and the smoke harness. on: push: branches: ['**'] diff --git a/AGENTS.md b/AGENTS.md index 7f89612d..d62e5710 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -84,7 +84,7 @@ smoke harness (`make smoke`). Development material lives under `.abcd/`; `docs/` is user-facing only. - `.abcd/development/` — **durable record** (committed): brief, intents, ADRs, - plans, research. Excluded from the release artifact. + plans, research. In every repository checkout; not in the released binaries. - `.abcd/work/` — **shared working** (committed): `CONTEXT.md` (current orientation) and `DECISIONS.md` (append-only decision log; architecture-shaping decisions graduate to ADRs under `.abcd/development/decisions/adrs/`). @@ -109,8 +109,11 @@ irreversible; guessing downward costs nothing.** plugin markdown surface and demonstrably executes there — no dead scaffolding. - **Host-delegated by default.** LLM review/agent work is delegated to the host; native/CLI/API/MCP oracles are opt-in adapters. -- **Single repo, curated release.** `.abcd/**` stays in-tree but is excluded from - the release artifact by packaging; the repo is the plugin marketplace. +- **Single repo, curated release.** `.abcd/**` stays in-tree and is present in + every repository checkout — marketplace installs and release source archives + included — never in the released binaries; the launch bundler denies the + namespace structurally, though that filter has yet to run on a cut release. + The repo is the plugin marketplace. - **Never commit or push without being asked.** Substantive work goes on a branch and PR; new dependencies need explicit sign-off before `go get`. diff --git a/CHANGELOG.md b/CHANGELOG.md index 58b8650f..31d3b642 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,33 @@ called out in a **Breaking** section. ### Fixed +- **The build plumbing's own comments describe the gate suite that runs** + (iss-182). The `Makefile` preflight comment claimed the target ran "the same + steps CI's check job runs" and named only the reviews-charter gate, though the + recipe takes three lint prerequisites (`lint-reviews`, `record-lint`, + `docs-lint`) and CI additionally runs a `gofmt -l .` format gate that preflight + does not; the `.githooks/pre-push` comment called what the hook enforces a + "check-job trio", undercounting those lint gates, and listed only the + secret-scan and workflow-audit lanes as Actions-only; and the `ci.yml` header + omitted the check job's gofmt, record-lint and docs-lint steps along with the + reviews-charter and smoke jobs. All three now state what actually runs. + Comment-only — no recipe, hook logic, workflow step, or gate behaviour moves. + +- **The record describes the `.abcd/**` exclusion by the channel it is true of** + (iss-183). The blanket present-tense claim — `.abcd/**` "never ships", or is + "excluded from the release artifact by packaging" — survived across + `CONTEXT.md`, `AGENTS.md`, both `.abcd/` READMEs, four brief sections, the + release glossary term, the Phase 1 expectation and a scanner code comment, + after the README alone was corrected. The exclusion is implemented but has + never run on a release: the launch bundler denies the `.abcd` namespace + structurally, while a marketplace install takes the repository root and GitHub + attaches an auto-generated source archive to every release, so only the + released binaries omit the directory. Each descriptive instance now says so — + present in every repository checkout, marketplace installs and release source + archives included, never in the released binaries — and names the bundler as + the implemented mechanism it is. Decision records, dated plans and intent + bodies keep their original wording. + - **Merging a rule-set overlay onto a base that declares no domains no longer panics** (iss-187). `rules.Merge` promises that new domain keys are added, but it wrote them into a map it never allocated when the base carried no domains of diff --git a/Makefile b/Makefile index 6026ecb6..5f24ddb0 100644 --- a/Makefile +++ b/Makefile @@ -55,9 +55,11 @@ record-lint: docs-lint: @go run ./cmd/abcd docs lint -# Pre-push gate (invoked by .githooks/pre-push): the same steps CI's check job -# runs — build, vet, test, and race-enabled internal tests — natively, plus the -# reviews-charter discipline. Host-native `go build` (not the cross-compiling +# Pre-push gate (invoked by .githooks/pre-push): the three lint gates +# (lint-reviews, record-lint, docs-lint) as prerequisites, then build, vet, test, +# and race-enabled internal tests natively. CI's check job runs those same four +# Go steps plus a `gofmt -l .` format gate this target does not, so run gofmt +# separately before pushing. Host-native `go build` (not the cross-compiling # build target) because it mirrors CI. preflight: lint-reviews record-lint docs-lint go build ./... diff --git a/internal/adapter/scanner/network.go b/internal/adapter/scanner/network.go index 8e91587e..462f7ba9 100644 --- a/internal/adapter/scanner/network.go +++ b/internal/adapter/scanner/network.go @@ -114,7 +114,7 @@ var ( // (.abcd/development/personas.json). A device name derived from a persona is a // fixture host by construction, so it is allowed. The list is embedded rather // than read at run time because the registry lives under .abcd/development/, -// which is excluded from the released artifact. +// which the released binaries do not carry. var personaNames = map[string]bool{ "alice": true, "bob": true, "carol": true, "dave": true, "eve": true, "frank": true, "grace": true, "henry": true, "iris": true, "jack": true,