Issue 1945 (note 72): since #486's delivery the vault writes no bus-account hash: the tool runtime refuses the state record 'bus-accounts. carries a field "secret", which names a credential' (mesh-tools node-tools/internal/bus/state.go:391-395 credentialField: a stored field name ending in password, secret, token and the like). My fault in #486: its tests used a store that did not apply that check.
AccountHash's field secret (the name of the vault's secret the hash is of) becomes of; Hashed and the account-hashed event follow, for one name. Nothing reads the old field: mesh-grants' HeldHash reads hash, generation, at and adopted only; no record was ever written under it (every write was refused).
Tests: the test store now applies the runtime's rule to every record it is handed (a copy in credential_field_test.go, since the rule is unexported in mesh-tools: its home belongs in mesh-sdk so every module's tests use the real one; noted on issue 1945); TestStateRecordsPassTheRuntimesCredentialFieldCheck (3 rows: a hash record passes, an adopted one passes, a record with a 'secret' field is refused). go test -race -count=1 ./... and go vet -tags integration ./... in modules/mesh-vault pass. A .gitignore keeps the locally built binary out.
Rules bent: no mesh-controller.try (operator, 2026-10-25).
Issue: 1945
Reviewed-by: review-hashfield@shanks at e7aaa8420e
Issue 1945 (note 72): since #486's delivery the vault writes no bus-account hash: the tool runtime refuses the state record 'bus-accounts.<user> carries a field "secret", which names a credential' (mesh-tools node-tools/internal/bus/state.go:391-395 credentialField: a stored field name ending in password, secret, token and the like). My fault in #486: its tests used a store that did not apply that check.
AccountHash's field `secret` (the name of the vault's secret the hash is of) becomes `of`; Hashed and the account-hashed event follow, for one name. Nothing reads the old field: mesh-grants' HeldHash reads hash, generation, at and adopted only; no record was ever written under it (every write was refused).
Tests: the test store now applies the runtime's rule to every record it is handed (a copy in credential_field_test.go, since the rule is unexported in mesh-tools: its home belongs in mesh-sdk so every module's tests use the real one; noted on issue 1945); TestStateRecordsPassTheRuntimesCredentialFieldCheck (3 rows: a hash record passes, an adopted one passes, a record with a 'secret' field is refused). `go test -race -count=1 ./...` and `go vet -tags integration ./...` in modules/mesh-vault pass. A .gitignore keeps the locally built binary out.
Rules bent: no mesh-controller.try (operator, 2026-10-25).
Issue: 1945
Reviewed-by: review-hashfield@shanks at e7aaa8420eacaa9b5c4f32504339dea895c81bbd
The runtime refuses a state field whose name ends in secret, so no bus-account hash could be written on novox. The test state now applies the same check.
Issue: 1945
Deliverynovox/mesh-catalog@e7aaa8420eac — merged since 2026-10-26T09:00:54Z
Source — source.main moved to novox/mesh-catalog@3ded9e7800. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.
Transitions
2026-10-26 08:26 (new) → proposed (announced): novox/mesh-catalog#487's head announced
2026-10-26 08:26 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-10-26 09:00 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@e7aaa8420eac` — **merged** since 2026-10-26T09:00:54Z
**Source** — source.main moved to novox/mesh-catalog@3ded9e780043. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves.
**Transitions**
- 2026-10-26 08:26 (new) → proposed (announced): novox/mesh-catalog#487's head announced
- 2026-10-26 08:26 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-10-26 09:00 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 1945 (note 72): since #486's delivery the vault writes no bus-account hash: the tool runtime refuses the state record 'bus-accounts. carries a field "secret", which names a credential' (mesh-tools node-tools/internal/bus/state.go:391-395 credentialField: a stored field name ending in password, secret, token and the like). My fault in #486: its tests used a store that did not apply that check.
AccountHash's field
secret(the name of the vault's secret the hash is of) becomesof; Hashed and the account-hashed event follow, for one name. Nothing reads the old field: mesh-grants' HeldHash reads hash, generation, at and adopted only; no record was ever written under it (every write was refused).Tests: the test store now applies the runtime's rule to every record it is handed (a copy in credential_field_test.go, since the rule is unexported in mesh-tools: its home belongs in mesh-sdk so every module's tests use the real one; noted on issue 1945); TestStateRecordsPassTheRuntimesCredentialFieldCheck (3 rows: a hash record passes, an adopted one passes, a record with a 'secret' field is refused).
go test -race -count=1 ./...andgo vet -tags integration ./...in modules/mesh-vault pass. A .gitignore keeps the locally built binary out.Rules bent: no mesh-controller.try (operator, 2026-10-25).
Issue: 1945
Reviewed-by: review-hashfield@shanks at
e7aaa8420eDelivery
novox/mesh-catalog@e7aaa8420eac— merged since 2026-10-26T09:00:54ZSource — source.main moved to novox/mesh-catalog@3ded9e7800. 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.