Issue 1409, design 39 parts D1's gap: secret_holders listed only issued secrets, so the licence secrets the vault keeps were seen nowhere.
Builds design 39 bus-and-switch §20 and §15, parts §12, design 24 and as-is 06, with the lead's answers V1-V10 and V-thorough (issue 1409 notes 11-12). secret_holders answers records (every record of the store: name, generation, since, changed, changedBy, changedVia, origin, length, the vault's own fingerprint of the whole value; key and part for a licence. record), recordsCount, and recordsError only when the store cannot be listed. A record the vault cannot open or read is listed by name with its error and the listing goes on. No value is ever answered (principle 6). No new tool, no manifest change.
Quick fix: a list of licence.* records. Thorough fix (chosen): every store record, so no kind of secret is invisible again (principle 4), for about the same code.
Acceptance 1409/AC1-AC5 (issue 1409's latest note); AC5 live after the delivery.
Tests: TestSecretHoldersListsEveryStoreRecordByNameAndFingerprintNeverTheValue (fails without the change); 142 of 500 unit, 2 of 50 integration; checks/* pass.
Reviewed-by: mesh-code-reviewer@shanks at 45b0779b68
Issue 1409, design 39 parts D1's gap: `secret_holders` listed only issued secrets, so the licence secrets the vault keeps were seen nowhere.
Builds design 39 bus-and-switch §20 and §15, parts §12, design 24 and as-is 06, with the lead's answers V1-V10 and V-thorough (issue 1409 notes 11-12). `secret_holders` answers `records` (every record of the store: name, generation, since, changed, changedBy, changedVia, origin, length, the vault's own fingerprint of the whole value; key and part for a `licence.` record), `recordsCount`, and `recordsError` only when the store cannot be listed. A record the vault cannot open or read is listed by name with its error and the listing goes on. No value is ever answered (principle 6). No new tool, no manifest change.
Quick fix: a list of `licence.*` records. Thorough fix (chosen): every store record, so no kind of secret is invisible again (principle 4), for about the same code.
Acceptance 1409/AC1-AC5 (issue 1409's latest note); AC5 live after the delivery.
Tests: `TestSecretHoldersListsEveryStoreRecordByNameAndFingerprintNeverTheValue` (fails without the change); 142 of 500 unit, 2 of 50 integration; checks/* pass.
Reviewed-by: mesh-code-reviewer@shanks at 45b0779b6801ecbc6997e4ebb50f1e3bb4196988
S1 vault-licence-secrets-listed. secret_holders answers `records` and
`recordsCount` beside holders, count and enrolments: each store record's name,
generation, since, changed, changedBy/changedVia, origin, length and the vault's
own fingerprint of the whole value, plus key and part for licence.<key>.<part>.
A record the vault cannot open stays listed with an error. Never a value.
Builds: design 39 bus-and-switch §20, §15; design 39 parts §12 (D1); design 24 Every secret lives in the vault, Beyond generate and hold; as-is 06 The vault, as it runs.
Lead answers (issue 1409 note 11): V1, V-thorough, V2-V8. V3 drops the map's
tokenFingerprint and AC5; V-thorough widens the licence.-prefix list to every record.
Store.ListReadable lists every record and, beside them, each file it cannot read
by name with its error; RecordsHeld lists those as rows with an error and goes
on. recordsError stays for a store that cannot be listed at all. Store.List and
ListPrefix keep their behaviour for their other callers.
Builds: design 39 bus-and-switch §20; design 39 parts §12. Lead answers (issue 1409): V9 (keep recordsCount and recordsError), V10.
Deliverynovox/mesh-catalog@45b0779b6801 — merged since 2026-11-12T17:51:20Z
Source — source.main moved to novox/mesh-catalog@792a79720b. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.
Transitions
2026-11-12 16:44 (new) → proposed (announced): novox/mesh-catalog#670's head announced
2026-11-12 16:44 proposed → ready (accepted): a verdict names this commit and the trunk's head as its trunk commit, the gate passed or warned, and the repository's own check did not fail; or the check gates no merge (check-gates-merge false)
2026-11-12 17:51 ready → merged (merged): on the trunk its modules follow: merged there
The commit's note under refs/notes/mesh-plan keeps every transition of this change up to its merge: git log --notes=mesh-plan.
<!-- mesh-delivery:view -->
**Delivery** `novox/mesh-catalog@45b0779b6801` — **merged** since 2026-11-12T17:51:20Z
**Source** — source.main moved to novox/mesh-catalog@792a79720b30. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves.
**Transitions**
- 2026-11-12 16:44 (new) → proposed (announced): novox/mesh-catalog#670's head announced
- 2026-11-12 16:44 proposed → ready (accepted): a verdict names this commit and the trunk's head as its trunk commit, the gate passed or warned, and the repository's own check did not fail; or the check gates no merge (check-gates-merge false)
- 2026-11-12 17:51 ready → merged (merged): on the trunk its modules follow: merged there
The commit's note under `refs/notes/mesh-plan` keeps every transition of this change up to its merge: `git log --notes=mesh-plan`.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Issue 1409, design 39 parts D1's gap:
secret_holderslisted only issued secrets, so the licence secrets the vault keeps were seen nowhere.Builds design 39 bus-and-switch §20 and §15, parts §12, design 24 and as-is 06, with the lead's answers V1-V10 and V-thorough (issue 1409 notes 11-12).
secret_holdersanswersrecords(every record of the store: name, generation, since, changed, changedBy, changedVia, origin, length, the vault's own fingerprint of the whole value; key and part for alicence.record),recordsCount, andrecordsErroronly when the store cannot be listed. A record the vault cannot open or read is listed by name with its error and the listing goes on. No value is ever answered (principle 6). No new tool, no manifest change.Quick fix: a list of
licence.*records. Thorough fix (chosen): every store record, so no kind of secret is invisible again (principle 4), for about the same code.Acceptance 1409/AC1-AC5 (issue 1409's latest note); AC5 live after the delivery.
Tests:
TestSecretHoldersListsEveryStoreRecordByNameAndFingerprintNeverTheValue(fails without the change); 142 of 500 unit, 2 of 50 integration; checks/* pass.Reviewed-by: mesh-code-reviewer@shanks at
45b0779b68Delivery
novox/mesh-catalog@45b0779b6801— merged since 2026-11-12T17:51:20ZSource — source.main moved to novox/mesh-catalog@792a79720b. Whether it reached the machines is
mesh-delivery-view's, derived fromsource.main, the wants and the haves.Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition of this change up to its merge:git log --notes=mesh-plan.