Development record
record_schema skips two symlink shapes in a record store with nothing said: (a) in a bucketed store, a symlinked entry at the store root with an undeclared name and no .md suffix (e.g. foo -> dir) is neither reported as an undeclared bucket nor read, because a symlink DirEntry is not a directory and falls to the markdown suffix test; (b) inside a declared bucket, or in a flat store, a symlinked subdirectory is skipped the same way, while a real subdirectory draws the undeclared-subdirectory finding. Either one hides a lifecycle state from every check. The sibling of iss-2609261133371466, which named only a DECLARED bucket that is a link.
record_schema skips two symlink shapes in a record store with nothing said: (a) in a bucketed store, a symlinked entry at the store root with an undeclared name and no .md suffix (e.g. foo -> dir) is neither reported as an undeclared bucket nor read, because a symlink DirEntry is not a directory and falls to the markdown suffix test; (b) inside a declared bucket, or in a flat store, a symlinked subdirectory is skipped the same way, while a real subdirectory draws the undeclared-subdirectory finding. Either one hides a lifecycle state from every check. The sibling of iss-2609261133371466, which named only a DECLARED bucket that is a link.
Grounds
- pursued: every non-markdown symlink a record store holds outside the exemptions draws exactly one record_schema finding and nothing behind it surfaces; TestRecordSchemaNamesEveryUndeclaredLink showing zero findings, or a forged record behind a link surfacing, would show it wrong
Frontmatter
| id | iss-2609261152282753 |
|---|---|
| type | issue |
| lifecycle | resolved |
| severity | minor |
.abcd/work/issues/resolved/iss-2609261152282753-record-schema-skips-undeclared-symlinks.md
open on GitHub ↗ · commit history ↗
mentions1
- iss-2609261133371466record_schema skips a symlinked declared bucket silently: scanRecordStores (internal/core/lint/schema.go) tests e.IsDir() on the store root's entries, which is false for a symlink DirEntry, so a declared bucket such as open/ or resolved/ that is a link falls to the .md suffix test and is dropped with no finding. A forged record behind the link is not read (nothing out of tree is trusted), but the gate reports nothing about a whole lifecycle state it never checked, the same silent-skip class the seam finding closed. The reading walk and capture's allocator already refuse a symlinked open/ loudly.