Development record
The transcript store is spelled under the renamed home, `~/.abcd.noindex/transcripts/<root-sha>/`, and the rest of its decision is unchanged
Context
adr-2609091248201071
settles where the session-transcript store sits and how it comes to exist: a
sibling of ahoy's registry at ~/.abcd/transcripts/<root-sha>/{records,staging}/,
created by history.Resolve through fsutil.EnsureRealDir, with a per-repo
location the caller opts into by declaring a checkout in
~/.abcd/local-transcript-roots, and a loud move of a corpus left at the
earlier location under ~/.abcd/history/<root-sha>/. Brief invariant 15
(02-constraints/03-invariants.md) cites it for that single spelling, and
TestOnlyTheHistoryPackageNamesTheStorePath
(internal/core/history/store_boundary_test.go) holds every other package to
it.
itd-2610030720038073
renames the home those spellings sit in. The product thinker ruled on
2026-10-03 that the whole home is renamed ~/.abcd to ~/.abcd.noindex, a
name the macOS indexer passes over when it scans (the intent's decisions 1
and 2), and that abcd moves nothing: an existing ~/.abcd stops every command
and hook until the person renames it (decision 6). The intent's decision 4
names the transcript store's single spelling under invariant 15 as one of the
reversals that rename forces, and requires a superseding record for it rather
than an amended one, because an ADR is never amended. This is that record.
adr-2610030720195401 is the rule the rename stands on: abcd keeps its folders out of indexing only by changing its own folder, never the computer's search settings.
Decision
The transcript store is spelled ~/.abcd.noindex/transcripts/<root-sha>/{records,staging}/,
and the declaration that opts a checkout into the per-repo location is
~/.abcd.noindex/local-transcript-roots. Every other spelling
adr-2609091248201071 gives of the caller's abcd home reads ~/.abcd.noindex/
in place of ~/.abcd/: ahoy's registry at ~/.abcd.noindex/history/, the
earlier location a corpus is moved out of at
~/.abcd.noindex/history/<root-sha>/{transcripts,staging}/, and the
path-entry and trusted-roots declarations whose idiom the opt-in follows.
Nothing else of adr-2609091248201071 changes. It is carried forward whole:
the corpus is a sibling of ahoy's registry, not a sub-tree of it;
internal/core/history is the only package that lays out or judges the
store's path; history.Resolve is the one door, walking the chain on every
call through fsutil.EnsureRealDir at the store's mode of 0o700; the key is
the repository's root-commit SHA, as a directory; the per-repo location is an
opt-in pull declared in the caller's own home, honoured only while the
declaration is a regular file this account owns that no one else can write,
and keeps the store at <repo>/.abcd/.work.local/transcripts/<root-sha>/,
whose repository-tier spelling this record does not touch; and a corpus at the
earlier location is moved loudly, file by file, behind a tombstone.
The texts this record binds are the ones that spell the store or its declaration, and each changes in the change that makes this record true:
- brief invariant 15 (
02-constraints/03-invariants.md), its parenthesis naming the store and the declaration; AGENTS.md, the working-tree layout's.abcd/.work.local/entry, which names the declaration and the user-level store;- the history surface chapter (
04-surfaces/11-history.md) and the configuration chapter's § The transcript corpus (05-internals/03-configuration.md); commands/history.mdanddocs/how-to/install.md.
Invariant 15's test changes shape in the home resolver's step, not here: its needles keep the old literal spellings and gain the new one, and the invariant it holds (one package touches the store's path) is unchanged.
It stays proposed until the change that makes it true. That change,
step 3 of spc-2610031309233367, renames the home, accepts this record, writes
supersedes: adr-2609091248201071 here and superseded_by with
status: superseded there, and changes invariant 15 and AGENTS.md in the
same diff; step 4 changes the rest. Until then adr-2609091248201071 is in
force and its spelling is the shipped one.
Alternatives Considered
- Amend adr-2609091248201071's spelling in place. Rejected: an ADR is never amended, always superseded, and the intent's decision 4 says so for this spelling by name.
- Keep the transcript store at
~/.abcd/transcripts/while the rest of the home moves. Rejected by the intent's decisions 1 and 2: the whole home is renamed, and the transcript store, about 3.2 GB on the product thinker's machine, is among the stores the indexer scans. It would also leave a reader of the old folder, which decision 6's stop forbids. - Read both spellings during a move. Rejected by decision 6: abcd moves nothing and reads no fallback, so there is no window in which two names are read; the stop replaces it.
- Chosen: a successor that changes only the spelling and carries the rest of the decision forward unchanged.
Consequences
- adr-2609091248201071 is superseded and retained once this record is
accepted. Invariant 15, the brief's history and configuration chapters,
store_boundary_test.goand adr-2609091248200336 cite it, so it keeps its decision text as written, with both halves of the supersession in its frontmatter. The chain is ADR-29, superseded by adr-2609090717039680, superseded by adr-2609091248201071, superseded by this record; the earlier links are untouched. - A corpus and a declaration move with the folder. The person renames the
whole home, so the store's records, its staging, and an existing
local-transcript-rootsarrive at the new spelling with it; nothing in the store is rewritten, and the move-loudly migration finds a legacy corpus at its renamed earlier location as before. - The worktree store's location is its own record,
adr-2610031751065746,
because adr-2609091248200336 is a separate original with its own
superseded_by.
Frontmatter
| id | adr-2610031751066232 |
|---|---|
| type | adr |
| status | accepted |
| date | 2026-10-03 |
.abcd/development/decisions/adrs/2610031751066232-the-transcript-store-is-spelled-under.md
open on GitHub ↗ · commit history ↗
References4
- adr-2609091248201071The transcript corpus is a sibling store that creates itself through the canonical directory primitiverelated
- adr-2609091248201071The transcript corpus is a sibling store that creates itself through the canonical directory primitivesupersedes
- adr-2610030720195401abcd keeps its own folders out of desktop indexing only by changing those folders, never the computer's search settingsrelated
- itd-2610030720038073abcd keeps its home folder out of desktop indexing by defaultrelated
Referenced by1
- adr-2610031751065746The worktree store lives under the renamed home, `~/.abcd.noindex/worktrees/<root-sha>/<name>/`, and the rest of its rule is unchangedrelated
mentions7
- adr-29A native local redacted transcript corpus
- adr-2609090717039680The transcript corpus is a sibling store that creates itself, and the per-repo location is an opt-in pull
- adr-2609091248200336A tool never creates directories in user-owned project space; the store's location binds now and its verbs bind when the store ships
- iss-2610040729344770The record dashboard (/record/) scrolls sideways at 360 and 390 px: the site-screenshots job measures scrollWidth 476 to 482 there on every pull request since 2026-10-03 23:37Z. The cause is not the genealogy timeline, whose svg sits inside its own overflow-x:auto panel and cannot widen the page, and not the four sub-navigation links the job names first, which scroll inside their own bar; it is the Latest decisions panel. A .list row is a two-column grid (auto 1fr) whose title is a plain span, and a grid item's automatic minimum width is its min-content width, so a title holding one long unspaced token sets the width of the row, which spills past the panel and the page. The two ADRs from #795 (adr-2610031751065746 and adr-2610031751066232) carry such titles, a home-relative path with no break in it, and became the two newest decisions on 2026-10-03. Every .list on the site (dashboard decisions, health, status, development, supersessions) has the same shape, so any record whose title holds a long token reproduces it.
- iss-2610040732240935Record pages scroll sideways at 360 px whenever a record's title or source path holds a long unbroken token, and the overflow audit cannot see it. Every ADR minted with a timestamp id shows its source path, .abcd/development/decisions/adrs/<16 digits>-<slug>.md, as one mono span in the side panel's reclinks paragraph, and the run up to the first hyphen is about fifty characters with no break opportunity: /record/adr/adr-2609091248200336/ measures scrollWidth 374 at 360 px. adr-2610031751065746 and adr-2610031751066232 also carry a home-relative path in their titles, which overflows the record page's h1 (scrollWidth 455). The stylesheet sets no overflow-wrap on body, the title or reclinks, so a block whose text has nowhere to break widens the page. The site-screenshots audit samples only the lowest-numbered record of each type (adr-1, itd-1, iss-1), whose paths and titles are short, so these pages have overflowed since timestamp ADRs began without the job noticing.
- iss-2610262031439210Invariant 15 puts the session-transcript store at `~/.abcd.noindex/transcripts/<root-sha>/`, but itd-59 feeds a corpus at `~/.abcd.noindex/history/<root_sha>/`.
- spc-2610031309233367abcd-keeps-its-home-folder-out-of-desktop-search-by-default