Design 25: the grants part reads the indexer's verdicts through a read tool

The grants part is the one reader of the indexer's verdicts, and no first
view covered that bucket, so its move had no path. It now takes its first
view through indexer_read_verdicts and follows the manifest events.

Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
This commit is contained in:
2026-11-04 02:05:51 +01:00
parent 74b69857a1
commit fb7aa0915f
+11 -7
View File
@@ -816,14 +816,17 @@ vault as an own secret: JetStream create and update under modules' names only (s
for the four, whose verb edges lie on cycles the graph leaves out (ADR 0614 §3), by the owner's answer at once and for the four, whose verb edges lie on cycles the graph leaves out (ADR 0614 §3), by the owner's answer at once and
the reader's wait (ADR 0615 §2). the reader's wait (ADR 0615 §2).
- **The other 19 readers ask the owners' read tools, one per bucket they read** (ADR 0615 §1, §2). Beside the five - **The other 19 readers ask the owners' read tools, one per bucket they read** (ADR 0615 §1, §2). Beside the five
first-view tools above, each owner serves a read tool for every bucket of its state one of the 19 reads today, first-view tools above, each owner serves a read tool for every bucket of its state one of the 19 reads today, and for the `verdicts` the grants part reads,
named `indexer_read_<bucket>` or `assigner_read_<bucket>` and marked as a read. The indexer's nine: named `indexer_read_<bucket>` or `assigner_read_<bucket>` and marked as a read. The indexer's ten:
`indexer_read_manifests`, `indexer_read_modules`, `indexer_read_predefined`, `indexer_read_config_candidates`, `indexer_read_verdicts`, `indexer_read_manifests`, `indexer_read_modules`, `indexer_read_predefined`, `indexer_read_config_candidates`,
`indexer_read_candidates`, `indexer_read_packages`, `indexer_read_graph`, `indexer_read_heard` and `indexer_read_candidates`, `indexer_read_packages`, `indexer_read_graph`, `indexer_read_heard` and
`indexer_read_taken`. The assigner's six: `assigner_read_placement`, `assigner_read_seat_holders`, `indexer_read_taken`. The assigner's six: `assigner_read_placement`, `assigner_read_seat_holders`,
`assigner_read_wants`, `assigner_read_findings`, `assigner_read_asks` and `assigner_read_differences`. These are `assigner_read_wants`, `assigner_read_findings`, `assigner_read_asks` and `assigner_read_differences`. These are
the nine buckets of the indexer and the six of the assigner the readers read (§ 12.6), `modules`, `wants` and the ten buckets of the indexer and the six of the assigner the readers read (§ 12.6), `modules`, `wants` and
`placement` among them for the status view. **They are ordinary module tools**: granted, as any tool is, to every `placement` among them for the status view. **The grants part reads the indexer's `verdicts` the same way**: its
first view of that bucket is `indexer_read_verdicts`, answered in the indexer's own runtime (ADR 0621 §1), never
through the node's tool runner, and then it follows `manifest-accepted` and `manifest-refused`, which carry the
module's entries whole (ADR 0595 §4). **They are ordinary module tools**: granted, as any tool is, to every
reader that declares it in `invokes`, and callable by a session; ADR 0621 §2's `callers` list covers only the five reader that declares it in `invokes`, and callable by a session; ADR 0621 §2's `callers` list covers only the five
first-view tools and stays as it is. **The status view keeps all its tools**, their names, arguments and answers first-view tools and stays as it is. **The status view keeps all its tools**, their names, arguments and answers
unchanged, its `indexer_*` and `assigner_*` tools included: as a reader it answers them by asking the owners' read unchanged, its `indexer_*` and `assigner_*` tools included: as a reader it answers them by asking the owners' read
@@ -983,11 +986,12 @@ this milestone go on their old sections too (§ 12.2; design 51 *The move*; desi
**Readers move after their owners** (ADR 0596 §3). Today 195 `reads` entries in 37 modules read another module's **Readers move after their owners** (ADR 0596 §3). Today 195 `reads` entries in 37 modules read another module's
bus state (counted 2026-11-03 02:00). **A correction of fact**: the indexer's and the assigner's state, counted again bus state (counted 2026-11-03 02:00). **A correction of fact**: the indexer's and the assigner's state, counted again
from every manifest on main later that day, is read by 23 modules, 9 buckets of the indexer and 6 of the assigner, from every manifest on main later that day, is read by 23 modules, 10 buckets of the indexer (`verdicts`, read by the grants part, among them) and 6 of the assigner,
not by the 19 the first plan counted; and 151 state entries were counted, not 158 (the template table of § 12.1 keeps not by the 19 the first plan counted; and 151 state entries were counted, not 158 (the template table of § 12.1 keeps
the first count, which chose the templates). The owners first gain their events, first-view tools and read tools: the the first count, which chose the templates). The owners first gain their events, first-view tools and read tools: the
indexer a read tool per bucket its readers read, the assigner the same (§ 12.2 lists them). Then all 23 readers move in the milestone of ADR 0612, the indexer a read tool per bucket its readers read, the assigner the same (§ 12.2 lists them). Then all 23 readers move in the milestone of ADR 0612, the
four foundation readers included, by the first view of § 12.2 (ADR 0615 §1); their order is the module graph's, not four foundation readers included, by the first view of § 12.2 (ADR 0615 §1), the grants part's of the indexer's
`verdicts` by `indexer_read_verdicts` and then `manifest-accepted` and `manifest-refused`; their order is the module graph's, not
a review reading an owner delivered (ADR 0615 §2). The status view's move keeps every tool it serves, each answered by a review reading an owner delivered (ADR 0615 §2). The status view's move keeps every tool it serves, each answered by
asking the owners' read tools of § 12.2. The judge still refuses a moved module's subscription to an event asking the owners' read tools of § 12.2. The judge still refuses a moved module's subscription to an event
its owner does not declare. Every other reader moves when its module is next touched. These moves are tracked by its owner does not declare. Every other reader moves when its module is next touched. These moves are tracked by