Development record
The predecessor-store qualifier sweep reaches past the six intents iss-2609261536147903 named: outside drafts/ and those six, 192 citation sites across about forty intents name a spc-N at or below spc-70 that is not the citing intent's own spec, with no '(predecessor store)' on the line. Some are live cross-references (the cold-reading family's intents cite each other's live specs), and some are the predecessor store's (itd-4, itd-6, itd-29, itd-47 and itd-49 describe pre-rebuild work in its terms), so each site needs the same reading against the live spec it collides with; the specs charter's Two spc-N Namespaces section is the rule. Found while sweeping the pattern of iss-2609261536147903 in lane drainDrift3; a census script over intents/{planned,shipped,disciplines} reproduces the count.
The predecessor-store qualifier sweep reaches past the six intents iss-2609261536147903 named: outside drafts/ and those six, 192 citation sites across about forty intents name a spc-N at or below spc-70 that is not the citing intent's own spec, with no '(predecessor store)' on the line. Some are live cross-references (the cold-reading family's intents cite each other's live specs), and some are the predecessor store's (itd-4, itd-6, itd-29, itd-47 and itd-49 describe pre-rebuild work in its terms), so each site needs the same reading against the live spec it collides with; the specs charter's Two spc-N Namespaces section is the rule. Found while sweeping the pattern of iss-2609261536147903 in lane drainDrift3; a census script over intents/{planned,shipped,disciplines} reproduces the count.
Progress 2026-09-30 (lane drainCitations, run A)
A census at 2b9d52fbb over intents/planned, intents/shipped, intents/disciplines and intents/superseded (an ordinal spc-N at or below spc-70, not the citing intent's own spec, on a line without the qualifier) counts 186 sites across 42 intents: 125 outside superseded/ and 61 inside it, where itd-29, itd-47 and itd-49 now sit. The first count of 192 was not scripted in the record, so the six-site difference is not traced. Every site was read against the live spec it collides with.
- Predecessor store, now qualified (94 sites, 12 intents): itd-4 (spc-20 to spc-23), itd-6 (spc-2, spc-4, spc-5), itd-36 (spc-38, spc-39), itd-50 (spc-52), itd-65 and itd-66 (spc-64, spc-27), and superseded itd-17, itd-20, itd-27, itd-29, itd-47 and itd-49. Two shipped acceptance criteria gained the qualifier, itd-4's drift criterion and itd-65's fail-closed criterion; each names an owner or a precedent, not a promise, so both are wording clarifications. The Implementing specs sections of itd-36, itd-4 and itd-47 also misstated where those ids stand, captured and fixed as iss-2609300025372991 and iss-2609300032219282.
- Live cross-references, correct as written (72 sites): the cold-reading family's citations of spc-55 to spc-69 (itd-177 to itd-189, itd-2609020625400194, itd-2609020625400445), itd-4's audit notes on spc-24, and itd-3, itd-80, itd-94, itd-101, itd-121, itd-132, itd-133, itd-147, itd-160, itd-161, itd-2609091416295622, itd-2609111003026787 and itd-2609231013154443.
- Data, left as written (15 sites): the
routed_fromfrontmatter of itd-48, itd-50 and itd-53; itd-27's dated reclassification_history reason; fixture strings quoted as evidence in itd-4, itd-28, itd-186 and itd-2609111003026787; the example resolution note inside itd-4's resolve criterion; and itd-4's audit-note line that already says "of the retired record system".
Skipped, because other branches carry these intents: itd-82 (one site, spc-24) and itd-130 (four sites, spc-35). Read in place, all five cite live specs (itd-119's promote and itd-132's data directory), so none looks owed a qualifier. The other intents named for skipping (itd-111, itd-148, itd-24, itd-103, itd-2609081951381895, itd-2609211116005482, itd-2609212103568351 and itd-2609212103572513) hold no site in the census. The record stays open until those five sites are confirmed at the merged tip.
Progress 2026-10-08 (lane-1, run-2610080034282884)
Both branches have landed: itd-82 sits in intents/planned and itd-130 in intents/shipped at 79ac82c17. The same census over the same four folders now counts 102 sites across 36 intents, and every one was read against the live spec its id collides with. None is a predecessor-store reference without its qualifier, so no line changes.
- The five deferred sites are live cross-references, correct as written: itd-82's one spc-24 is itd-119's
capture promote, and itd-130's four spc-35 are itd-132's download cache and owned PATH copy. - New to the census: itd-33 entered
intents/supersededfromdrafts/on 2026-10-03 (84bfc4bb1), bringing 4 sites. Its spc-33 is the spec a promotion of itd-33 would mint in its own press-release quote, and its spc-7 illustrates a task-granular claim (spc-7.2,spc-7.3). Both are illustrations, not references to either store's record, so they are left as written like itd-4's example resolution note. - Not on the 2026-09-30 lists: itd-36's 2 are the "live spc-38 ... live spc-39" contrast on line 92, text 542737b21 wrote after 2b9d52fbb, which says live in words.
- Counted on 2026-09-30 as qualified, and back in the census: itd-29's 4 (lines 21, 57 and 136, the suffixed legacy-roadmap ids
spc-29-42iandspc-9-kbe) are anchor sites, among the 94 the 2026-09-30 list calls qualified. d38139599 gave them "(predecessor store)"; the review follow-up 01f3f0c19 replaced that with "legacy roadmap", because the intent itself says those ids were never in a store, so the census, matching only their prefix and finding no qualifier, counts them again. They reference no record in either store and are left as written. They are the 4-site gap between the 94 the 2026-09-30 list counts as qualified and the 90 anchor sites of its 12 intents that left the census: 186 - 90 + 4 (itd-33) + 2 (itd-36) = 102. - The other 87 sites are the live cross-references and data sites the 2026-09-30 lists already classify, among them itd-132's 11, which cite live spc-21 (itd-105's hook-binary fetch, whose verification posture itd-132 keeps) on the same lines as at 2b9d52fbb; read again at the tip, each keeps its classification.
The census, run from the repository root:
import glob, re
owner = {}
for p in glob.glob(".abcd/development/specs/*/spc-*.md"):
head = open(p).read()[:400]
s, i = re.search(r"^id:\s*\"?(spc-\d+)", head, re.M), re.search(r"^intent:\s*\"?(itd-\d+)", head, re.M)
if s: owner[s.group(1)] = i and i.group(1)
sites = []
for d in ("planned", "shipped", "disciplines", "superseded"):
for p in sorted(glob.glob(f".abcd/development/intents/{d}/itd-*.md")):
iid = re.match(r".*/(itd-\d+)", p).group(1)
for n, line in enumerate(open(p), 1):
if "predecessor store" in line: continue
for m in re.finditer(r"(?<![\w-])spc-(\d+)(?!\d)", line):
if int(m.group(1)) <= 70 and owner.get(m.group(0)) != iid:
sites.append((iid, n, m.group(0)))
print(len(sites), len({s[0] for s in sites}))
Grounds
- pursued: every ordinal spc-N at or below spc-70 in intents/{planned,shipped,disciplines,superseded} that is not the citing intent's own spec and lacks the qualifier is a live cross-reference, data, an illustration, or already qualified in words; a census site that names a predecessor-store record without '(predecessor store)' would show it wrong
Frontmatter
| id | iss-2609290448510918 |
|---|---|
| type | issue |
| lifecycle | resolved |
| severity | minor |
.abcd/work/issues/resolved/iss-2609290448510918-predecessor-qualifier-sweep-past-the-six.md
open on GitHub ↗ · commit history ↗
mentions69
- iss-2609261536147903Planned intents and disciplines still cite specs of the retired predecessor store unqualified, and such an id at or below spc-70 resolves to a live spec on another subject (spc-12, for one, is live as the disembark grounding spec): itd-48, itd-50 and itd-53 name spc-12, spc-28, spc-29, spc-31, spc-33, spc-43 and spc-52 for the fidelity reviewer, lifecycle hook and cleanup work (which of these are predecessor ids is itself the reading this record owes); itd-24 names spc-66 as the phase-audit receipt; itd-1 and itd-37 name spc-12 as the manual reviewer. The specs charter (Two spc-N Namespaces) rules that every predecessor citation carries the '(predecessor store)' qualifier; iss-239 applied it to the draft corpus only. Each site needs a reading to tell a predecessor citation from a live one, which is why the sweep was not folded into iss-239.
- iss-2609300025372991Two shipped intents' Implementing specs sections misstate where their predecessor-store spec ids stand: itd-36 says its frontmatter spec_id records spc-38 as the primary delivering spec, while the frontmatter records spc-2609211905174684 and live spc-38 and spc-39 are itd-136's record explorer and itd-137's relationship chart; itd-4 says its spc-20 to spc-23 do not exist in the native spec store, while the live store holds all four as other specs (banlist, fresh install, stale-binary warning, tier placement). Found while qualifying predecessor-store citations for iss-2609290448510918.
- iss-2609300032219282Superseded itd-47's Implementing specs section says its frontmatter spec_id records spc-27 as the primary delivering spec, while the frontmatter holds spec_id: null, and spc-27 and spc-32 are predecessor-store ids that the live store reuses for the surface-coverage registry and abcd update. The same defect iss-2609300025372991 fixed in itd-36 and itd-4, found in a third intent while qualifying predecessor-store citations for iss-2609290448510918.
- itd-3abcd Loads Its Own Rules On Demand
- itd-4Nothing You Notice Gets Lost
- itd-6RepoPrompt over MCP is one opt-in reviewer route, beside the host's own agents
- itd-17Pick the Right Oracle for the Job, Automatically
- itd-20`/abcd` Tells You Where You Are
- itd-24Completed Releases Get A Retrospective
- itd-27Domain Experts Get Their Intents Grilled Before Anyone Codes Them
- itd-28Spec-Tied Reviews Live Next To The Spec They Reviewed
- itd-29Domain Experts Run A Spec Autonomously And Recover From Anything Without Touching Git
- itd-33Multiple Agents Coordinate On Intent And Spec Work Without Duplicating Effort Or Producing Competing Artefacts
- itd-36Knowledge That Compounds, Not Knowledge That Re-Derives
- itd-47Oracle-Backed Gates Pass Honestly Without A Human In The Loop
- itd-48`intent-fidelity-reviewer` Gains Its Cross-Doc And Kind-Classification Roles
- itd-49Flow-State Drift Becomes Visible Before It Compounds
- itd-50The Audit Loop Drives An Intent To Acceptance — Or Calls For A Replan
- itd-53A Shipped Intent No Longer Drifts Out Of Audit Just Because Nobody Ran The Review
- itd-65abcd Refuses To Publish A Payload Until The Full Ship-Time Pre-Flight Gate Suite Passes, Not Just The Secret Scan
- itd-66abcd Renders The Exact Public Payload, Proves The Excludes Never Leak, And Smoke-Tests The Installed Surface Before Any Snapshot
- itd-80An Intent Ships Itself: `planned → shipped` Follows Its Spec Closing, With A Fidelity Audit Attached
- itd-82`abcd drain` fixes the issues that need no decision, and hands the rest back by kind
- itd-94An intent that is not planned cannot be implemented: abcd gains a machine-checkable implement-readiness gate that refuses with a remedy and offers the planning interview
- itd-101**Every citation abcd publishes is provably alive and honestly labelled — and the gate that enforces it never flakes.** A cited reference page is only as trustworthy as its links, and links rot silently: pages retitle, URLs redirect, whole platforms announce their own shutdown. abcd splits citation validation across a deterministic gate and an explicit refresh. An offline lint family checks structure and source policy on every commit — footnote markers and definitions in bijection, URLs and DOIs well-formed, aggregator domains refused — with zero network in the gate. `abcd docs cite refresh` does the live fetching on demand and writes a committed baseline: per URL, the final resolved address, when it was last checked, and whether verification was automatic or manual — never how. Sources that block automated fetchers join a manual queue the maintainer clears link by link: printed as a checklist first, later as a generated, disposable checklist page that hands back a receipt file the verb ingests. The lint then enforces the baseline offline — no broken entries, no stale entries, no cited URL without a receipt, no citation whose recorded final address has drifted. The engine is native and dependency-free first; a specialist link checker can slot in later behind the same seam. "My release gate stays deterministic and my citations stay alive," said Kira, an open-source maintainer. "When a source needs human eyes, abcd hands me the exact list to click through and records that I did — not how I did it."
- itd-103**abcd teaches repo agents the shell commands they must never run — and blocks them when they try.** An agent that runs `cd scratch && rm -rf *` is one failed `cd` away from deleting the working tree, and the facilitator watching the session usually has no way to know that. abcd ships a hazard registry: each entry a dangerous command pattern, its severity, the safe successor, and a plain-language why. One registry, two planes. The rules loader injects the matched safety rules before shell-heavy work, so the agent is taught the safe form up front; a deterministic guard — a core verb any harness hook can call — refuses a matching command at execution time and replies with the safe successor, so the block itself is the lesson. Hosts without hook support still get the teaching plane; hosts with hooks get both, wired in at install. The registry grows from reality: a facilitator who sees something scary needs to know exactly one move — capture it — and recurring captures promote patterns into the bundled defaults, each entry shipping with a fixture that proves its guard fires. "I couldn't have told you why that command was dangerous," said Nia, a facilitator. "I didn't have to. The guard refused it, told the agent what to run instead, and told me why in words I understood. The one time something new scared me, I captured it and moved on."
- itd-105A fresh plugin install just works: the hook binary survives install and every update
- itd-111A Stale abcd Never Answers Silently
- itd-119An Issue Graduates Into An Intent Without Retyping
- itd-121Type The Id, Get Your Next Move
- itd-130`abcd update` completes a chosen update in one verb
- itd-132The hook binary survives plugin updates
- itd-133abcd has a face: one pixel-grid identity — duckling mascot, signal-flag logo, lifeboat mark — generated, drift-gated, ready for every surface
- itd-147The brief's surface chapters are a generated reflection of the shipped surface, so a shape claim cannot drift
- itd-148Every change starts in its own worktree in abcd's store: the primary checkout is a read-only surface, and abcd blocks mutations there for every session but a declared coordinator
- itd-160Eight typed cross-references point at targets absent from the tree — adr-22 supersedes adr-14, adr-15 and adr-17; adr-25 supersedes adr-8; adr-27 supersedes adr-16; adr-28 supersedes adr-18; adr-35 supersedes adr-4 (all retired under retire-the-name); itd-3 names spec_id spc-1 which has no file — and nothing checks supersedes targets today. The 2026-08-21 site investigation counted six; the in-session grep found eight. The planned site build arms the detector via the .abcd/site-baseline.json ratchet, seeded with what the build finds, and the tombstones-or-stubs question (itd-136/itd-137) decides how they render
- itd-161record-lint cannot see a decision-shaped document filed outside the record stores
- itd-177An intent's claims are typed and its scope conditions keep their identity across edits — the readiness gate refuses an intent that leaves a context claim unrecorded
- itd-186The read-block eval falsifies the firewall — planted warm content that reaches a reading fails the build loudly
- itd-189What the widening reading proposes is admitted or declined on the record — grounds on admission, dispositions on declines, and surprises as their own entries
- itd-2609020625400194An admission and a surprise are written by a verb, and the order the design fixes is a refusal
- itd-2609020625400445A committed preset declares the window it was calibrated for, and the record holds every preset to its declaration
- itd-2609081951381895abcd ships an OpenAI-compatible API adapter, and a provider serves only the models it lists
- itd-2609091416295622A session sees the records its peers hold before it mints or fixes one
- itd-2609111003026787A gate catches the intent whose work is live while its spec is still open
- itd-2609211116005482`abcd build next` picks the readiest planned intent itself, and writes down why
- itd-2609212103568351The status board shows Now, Next and Later, computed from the record
- itd-2609212103572513An intent names the release it must land by, and the cut says whether it did
- itd-2609231013154443Every release arrives with a press release composed from what shipped
- spc-2intent-lifecycle-automation
- spc-4start-the-transcript-clock
- spc-5folder-classification
- spc-7abcd-intent-quoted-text-create-symmetric
- spc-9an-intent-that-is-not-planned-cannot-be-implemented-abcd-gai
- spc-20name-banlist
- spc-21a-fresh-plugin-install-just-works-the-hook-binary-survives
- spc-23development-instructions-live-in-the-right-tier-abcd-manages
- spc-24an-issue-graduates-into-an-intent-without-retyping-abcd-capt
- spc-27the-registry-cannot-wave-its-hands-every-surface-file-carrie
- spc-29the-conformance-check-calls-itself-lint-abcd-audit-becomes-a
- spc-33abcd-mints-collision-proof-record-ids-across-parallel-agents
- spc-35hook-binary-to-persistent-data-dir
- spc-38alice-opens-the-record-explorer-and-reads-the-whole-developm
- spc-39maya-sees-how-every-decision-connects-one-relationship-chart
- spc-52dangling-supersedes-and-spec-targets-nothing-checks-them
- spc-55Claim typing and scope-condition identity
- spc-64The read-block eval falsifies the firewall
- spc-69The scope operand: a reading is commissioned about something, in a closed grammar, from a committed preset
- spc-70abcd-s-presence-should-be-visible-in-the-host-harness-s-stat