Publish completed OpenSpec requirements and update M12 status to mark first-run friction done while keeping the screenshot work in 12a.
2.1 KiB
temporal-connection Specification
Purpose
TBD - created by archiving change temporal-first-boot-retry. Update Purpose after archive.
Requirements
Requirement: Resilient Temporal startup connection
When temporal-host is configured, member-console start SHALL establish its
Temporal client by retrying a failed initial connection with bounded exponential
backoff before failing, rather than aborting on the first error. The retry budget
SHALL be configurable via temporal-connect-timeout (default 90 seconds) and SHALL
exceed the identity provider's key-refresh window, so that a cold-start
authorization failure — where Temporal is reachable but has not yet loaded the
identity provider's signing keys — resolves without operator intervention. Each
retry SHALL be logged, and on exhausting the budget the command SHALL exit non-zero
with an error naming the attempt count and budget. A connection attempt SHALL
respect context cancellation.
Scenario: First boot after a cold start succeeds without a re-run
- WHEN
member-console startconnects to a Temporal server that is reachable but transiently rejects authentication because its signing-key cache has not yet loaded - THEN start SHALL retry the connection with backoff within the configured budget
- AND once the server's key cache refreshes, the connection SHALL succeed and
startup SHALL proceed — without the operator re-running
start
Scenario: Unreachable Temporal fails with a clear, bounded error
- WHEN Temporal remains unavailable for the entire
temporal-connect-timeoutbudget - THEN start SHALL exit non-zero with an error naming the number of attempts and the budget
Scenario: Healthy Temporal connects immediately
- WHEN Temporal is reachable and authenticating normally
- THEN the initial connection SHALL succeed on the first attempt with no added delay
Scenario: Connect budget is configurable
- WHEN
temporal-connect-timeoutis set to a non-default value - THEN start SHALL use that value as the maximum time to retry the initial Temporal connection