Skip to content

docs(self-deploy): document the rpc-health canary gate probe (#4646) - #4651

Open
rysweet wants to merge 2 commits into
mainfrom
feat/issue-4645-nodeoptions-max-old-space-size32768-saved-preferen
Open

docs(self-deploy): document the rpc-health canary gate probe (#4646)#4651
rysweet wants to merge 2 commits into
mainfrom
feat/issue-4645-nodeoptions-max-old-space-size32768-saved-preferen

Conversation

@rysweet

@rysweet rysweet commented Jul 25, 2026

Copy link
Copy Markdown
Owner

Summary

Resolves #4646 (documentation of the fix). The rpc-health self-relaunch canary gate previously ran the non-dispatched probe rpc subcommand, which dispatch_operator_cli rejects as unsupported command 'probe'. It therefore reddened every self-deploy candidate regardless of daemon health, wedging the self-deploy loop behind a stuck target SHA and letting DeployDrift climb.

The code fix landed in #4639: the probe now runs the real, read-only, dispatched simard memory stats subcommand (RPC_HEALTH_PROBE_ARGS), guarded by a socket-liveness pre-flight and fail-closed timeout/spawn/exit handling — a healthy relaunch passes while a dead or unreachable daemon still reddens. This PR records that resolution in the docs tree so the runbook and reference reflect current reality.

Changes (docs-only)

  • New: docs/reference/rpc-health-canary-gate-probe.md — probe contract, SIMARD_STATE_ROOT-driven socket resolution, the liveness pre-flight that refuses to green a dead daemon, the fail-closed disposition table, and the regression guards that keep the argv pointed at a dispatched subcommand.
  • docs/howto/converge-a-stuck-red-canary-self-deploy.md — adds the "rpc-health reddens every candidate identically" special case pointing at the new reference.
  • docs/reference/canary-gate-convergence.md + docs/index.md — cross-link the new reference.
  • mkdocs.yml — adds the new page to nav (satisfies the docs-integrity nav gate).

Constraints honored

  • Additive / non-breaking; PRD preserved (Specs/ProductArchitecture.md untouched).
  • No Bridge naming; gate path remains tracing/OTel-only with no print!/println! sinks.
  • Docs-only change scope.

Verification

Closes #4646

Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com

rysweet and others added 2 commits July 25, 2026 14:51
The rpc-health self-relaunch canary gate previously ran the non-dispatched
`probe rpc` subcommand, which `dispatch_operator_cli` rejects as
`unsupported command 'probe'`. It therefore reddened *every* self-deploy
candidate regardless of daemon health, wedging the self-deploy loop behind a
stuck target SHA (#4646). The code fix (#4639) repointed the probe at the
real, read-only, dispatched `simard memory stats` subcommand
(`RPC_HEALTH_PROBE_ARGS`), guarded by a socket-liveness pre-flight and
fail-closed timeout/spawn/exit handling.

This change records that resolution in the docs so the runbook and reference
tree reflect current reality:

- Add reference/rpc-health-canary-gate-probe.md — the probe contract, socket
  resolution (SIMARD_STATE_ROOT-driven), the liveness pre-flight that refuses
  to green a dead daemon, the fail-closed disposition table, and the
  regression guards that keep the argv pointed at a dispatched subcommand.
- howto/converge-a-stuck-red-canary-self-deploy.md — add the "rpc-health
  reddens every candidate identically" special case pointing at the new ref.
- reference/canary-gate-convergence.md + index.md — cross-link the new ref.
- mkdocs.yml — add the new page to the nav (docs-integrity nav gate).

Docs-only; PRD preserved; no Bridge naming; the gate path remains
tracing/OTel-only with no print-family sinks. Verified: `cargo test --test
docs_integrity` (nav + dead-link gates) and the full
`self_relaunch::gates` suite are green, including the #4646 reproduction
guard `rpc_health_probe_args_resolve_to_a_dispatched_subcommand`.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
)

Refactor pass: collapse the run-on frontmatter `description` (a single 400+
char sentence) into a crisp summary. The body already carries the full probe
contract, so no information is lost. Nav and cross-links are untouched;
`cargo test --test docs_integrity` (nav + dead-link gates) stays green.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant