MI activation changes durable state before TLS startup succeeds #245
Labels
No labels
accessibility
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
P1
P2
P3
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Creatidy/scarcity-router#245
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Observed
During isolated Foundry target-host testing of canonical SR
f96d58e6d7d0fffdbe70476850d824efa5de2fb5with its pinned MId65891668b7e79f7b666c021f02a1b4bf8c4ca9c, a network-isolated container startedcontrol_serverwith a valid synthetic--mi-config, a fresh disposable data store, and invalid TLS certificate/key material. Before startup,ServerStore.current_mi_cut_digestwas null. The process exited 2 withTLS configuration failed: [SSL] PEM lib; afterward the store contained the MI cut digest. Independently hashing the canonical wrapped record matched the stored digest. Temporary test state was discarded.Source inspection indicates
control_serveractivates the MI configuration against the durable store before creating the TLS context and binding the listener. Consequently an installation can report failed startup while its previous durable MI state has changed. This is not a claim of exploitation or of automatic recovery failure for every error.Requested investigation
Define and test startup failure semantics for MI activation, including existing accepted state, invalid TLS, listener bind failure and restart/retry. If activation is meant to commit only after successful listener startup, preserve the prior cut on failure and cover interruption/concurrency. Keep the consumer and durable-store contract SR-owned. Foundry integration is tracked at Creatidy/foundry#1.
Implementation is open as PR #251 at
23f4e7e0716e663a7366397060577df89339dd93, based on481844accb57f5bc092ba9534746c4641e31fc5f. Focused startup tests and the full offline gate passed (3264 tests, 18 skipped; basedpyright clean). Independent review and Forgejo CI remain pending.Integrated PR #251 into develop at merge commit
7985cbadd31e6b594cb3a7b5fc27a06f6e03f33e. Its parents are reviewed base481844accb57f5bc092ba9534746c4641e31fc5fand reviewed HEAD0aef3514cb74a8c834674f94f9a3d7ca1abad90a; the integrated tree matches the reviewed HEAD. Review #2 APPROVE with no findings; Forgejo CI #3499 passed. Full local validation: 3266 tests, 18 skipped, basedpyright clean. Startup commit is after required listener binding; a crash after commit but before serving can retain the new cut, as documented. No live deployment or external inference performed.