Development record
abcd ideate record writes every verdict straight into the repository: a research note under .abcd/development/research/notes/ and a pointer line in .abcd/work/DECISIONS.md, both committed and public once pushed. The product thinker treats every idea put through ideate as secret: an idea and the sources it came from are kept private first and enter the repository only when the person decides it should.
issueresolvedminoriss-2610090740139804
abcd ideate record writes every verdict straight into the repository: a research note under .abcd/development/research/notes/ and a pointer line in .abcd/work/DECISIONS.md, both committed and public once pushed. The product thinker treats every idea put through ideate as secret: an idea and the sources it came from are kept private first and enter the repository only when the person decides it should.
Frontmatter
| id | iss-2610090740139804 |
|---|---|
| type | issue |
| lifecycle | resolved |
| severity | minor |
.abcd/work/issues/resolved/iss-2610090740139804-abcd-ideate-record-writes-every-verdict.md
open on GitHub ↗ · commit history ↗
References1
- itd-2610141646456128A private ideate verdict stays privaterelated
mentions7
- adr-2610140859394097abcd's home ignores itself once, and credentials never sit in a working tree
- adr-2610142116480836Ideate verdicts are private or public by the person's choice, and an idea's source is named publicly only when it graduates
- iss-2610090742488191When an idea is adopted, nothing carries the public primary sources it rests on into ACKNOWLEDGEMENTS.md. AGENTS.md asks for an entry in the same change that lands an adopted pattern, but ideas now arrive through ideate verdicts kept private in the home store (iss-2610090740139804), so the sources and the licence findings the research leg checked stay in a file the adopting change never reads, and a private source must never be named at all.
- iss-2610140813542607internal/core/history/store.go:22 and internal/core/lifeboat/voyage.go:25 each declare their own rootSHARe (^(?:[0-9a-f]{40}|[0-9a-f]{64})$) to check a store key is a repository root commit, while gitutil.IsFullSHA (internal/gitutil/repo.go) already carries the same pattern for the same purpose and is what the docfidelity, lab, implement and ideate stores call. The two copies can drift from it (one-canonical-primitive). Found while fixing iss-2610090740139804, whose first draft added a third copy before review pointed at IsFullSHA.
- iss-2610140819442690In a shallow clone, gitutil.RootCommit (rev-list -n 1 --max-parents=0 HEAD) returns the graft commit, not the repository's root, and every machine-scoped store keyed on it files under that wrong key with no warning: the history ingest (internal/core/history/ingest.go:86), labs (internal/core/lab/lab.go:172), implement runs and loop state (internal/core/implement/load.go:357, internal/core/implement/loop/loop.go:454 and siblings), the report inbox key (internal/core/report/inbox.go:106), the lifeboat probe (internal/core/lifeboat/probe.go:211) and ahoy's managed-repository index (internal/core/ahoy/store.go:68, managed.go:54). A later full clone of the same repository reads a different folder, so the records look lost. CI checks out full history (fetch-depth: 0), so the gates are not affected. Found by review of the ideate private/public fix (iss-2610090740139804), which now refuses a shallow checkout at its own front door.
- iss-2610140913332484fsutil.EnsureHomeScope and OpenHomeScope judge each level of ~/.abcd.noindex for symlinks and swaps but not for owner or mode: a level that already exists keeps whatever mode it has, and one another account created (under a HOME planted outside every working tree) is written into. File contents stay 0600, so only names leak (an ideate verdict's date and slug, for example); the planting route is the harness's environment, not abcd. Found by the security review of iss-2610090740139804.
- itd-2610140858048004abcd's home keeps itself out of a dotfiles repository