Answer architecture round 2: a first reach checks only a table's parent, loadReached splits into a batch that loads, runs and puts back, the manifest decodes strictly and reports every mistake, and ErrLoad marks a load failing in New too

This commit is contained in:
2026-10-09 19:36:27 +02:00
committed by Lillem4n
parent 3c1af91433
commit 498f81075e
9 changed files with 235 additions and 135 deletions
+22
View File
@@ -202,3 +202,25 @@ Inherited architect, decided by:
- Shape: `index.go:159` `reaching`: four near-synonyms, `reaching`, `reachedFrom`, `loadReached` and `referenced`, and `referenced` and `categoryUnder` return loaded categories too
- Shape: `data.go:40` `place`: shares its name with `compileInto`'s parameter, and returns a closure answering one question two ways
- Locality: `internal/datafiles/datafiles.go:83` `embeddedManifests`: hidden global state for a small saving
## 2026-10-09T17:32:44Z, PR #202 at fdc6a04, against 2652779
Ruling: worse
| Seat | Navigation | Locality | Shape | Self-sufficiency | Overall |
|---|---|---|---|---|---|
| Mid A | same | worse | same | same | worse |
| Inherited architect | same | worse | worse | worse | worse |
Mid A, decided by:
- Locality, Overall: `index.go:175` `loadReached`: one loop loads, puts back on failure, checks each entry before linking and again after the pipeline, and its rollback rests on an ordering invariant its comment argues
- Locality: `data.go:13` `loadSources`: whether a category loads in New means holding every source and every index entry together, through `standing` snapshots and `dependents`
- Shape: `index.go:36` `categoryAt`: a near-synonym of `categorySite`, beside `dependencies` and `dependents`, which differ by two letters and run in opposite directions
Inherited architect, decided by:
- Locality, Overall: `index.go:175` `loadReached`: five jobs in one queue loop, with a cross-call ordering invariant to hold
- Locality, Shape: `data.go:13` `loadSources`: one source can make another load early through identity-compared snapshots and a reverse graph over index entries
- Shape: `index.go:36` `categoryAt`: two near-synonym types for where a category sits, and three near-identical function names
- Self-sufficiency: `index.go:248` `staleEntry`: its note on linking cannot be read without knowing the pipeline, and `config.load` points at a paragraph-long decision anchor
+5 -2
View File
@@ -172,8 +172,11 @@ error. So does every indexed category it reads, and every indexed category depen
through references or table links, on a category it provides or a later source
replaced, so a replacement or a stand-in breaking a reader fails `New`. Goal 6.3: an
indexed source from anyone else may fail at first reach; `Fake` then returns the load's
error wrapping `ErrLoad`, the same every call. A category whose index entry disagrees
with it fails there too, so a stale index never decides what loads.
error, matching `ErrLoad`, the same every call. A first reach checks only a table's
`parent` against its entry, so a table loads with its parent and a failed load puts
back whole. Proving the rest of an index is its author's, with the tool `todo.md` item
194 plans: checked against the merged tree, an entry's paths and reads would blame the
manifest for a table or a stand-in another source adds.
Valid while CI proves the shipped set whole and each category alone.