refactor(gate): adopt Gate_SDK node participation (L9-PARTICIPATION-01) - #299
cryptoxdog wants to merge 1 commit into
Conversation
CEG no longer owns Gate registration. The SDK chassis calls create_node_app() with SDK registration on, so Gate_SDK registers the node at startup, re-registers every GATE_REREGISTRATION_INTERVAL_SECONDS after a Gate restart, and answers GET /v1/ready 503 until Gate accepts the node. - chassis/node_app.py: drop auto_register_with_gate=False - engine/boot.py: GraphLifecycle no longer registers or runs a loop - engine/gate_registration.py: removed - settings: remove gate_reregistration_enabled / _interval_seconds - docs/FEATURE_GATES.md: row and section 17 point at the SDK - tests: assert the retired loop is gone and the SDK owns participation Requires Gate_SDK 1.2.0 on @v1 (Quantum-L9/Gate_SDK#55). Proven on the Constellation Docker rail from #298 (27/27 mandatory, incl. recovery after a Gate outage). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LM9xC9uVBfvnHKRK9jJEyC
|
✅ PR reviewable size is within recommended limits |
L9 Audit Harness Report
Step Results
Architecture Audit Findings
See Spec Coverage
See Next StepsAll checks passed. Safe to merge. |
|
CI will stay red until Gate_SDK 1.2.0 is on Local proof, run with Gate_SDK
Merge order: #298, then this PR, after the SDK release. Generated by Claude Code |
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: b7844ad5a8
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| def test_reregistration_is_a_documented_default_on_flag(): | ||
| from engine.config.settings import Settings | ||
| parameters = inspect.signature(create_node_app).parameters | ||
| assert "registration" in parameters, "Gate_SDK >= 1.2.0 (L9-PARTICIPATION-01) is required" |
There was a problem hiding this comment.
Refresh the production SDK lock before deleting the fallback
This test requires Gate_SDK >=1.2.0, but poetry.lock still resolves version 1.1.0 at e9f829f..., and Dockerfile.prod:26-32 installs that lock. Consequently, the production image lacks the participation readiness and re-registration implementation assumed here; because this commit also removes CEG's own loop, a Gate restart leaves the production node unroutable until CEG restarts. Refresh the lock to the released SDK revision as part of this change.
Useful? React with 👍 / 👎.
| lifecycle_hook=SdkLifecycleAdapter(), | ||
| auto_register_with_gate=False, | ||
| ) | ||
| app = create_node_app(lifecycle_hook=SdkLifecycleAdapter()) |
There was a problem hiding this comment.
Gate the SDK participation cutover with a CEG setting
This call unconditionally switches registration and readiness ownership to the SDK while the prior implementation and its settings are deleted. GATE_REGISTRATION_ENABLED can disable registration entirely, but there is no CEG boolean setting that stages or rolls back this behavioral cutover, contrary to the repository requirement that every behavioral change be gated in engine/config/settings.py; retain a flagged fallback until the rollout is complete.
AGENTS.md reference: AGENTS.md:L95-L95
Useful? React with 👍 / 👎.
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |



Problem
refactor(gate): adopt Gate_SDK node participation (L9-PARTICIPATION-01)
CEG no longer owns Gate registration. The SDK chassis calls create_node_app() with SDK registration on, so Gate_SDK registers the node at startup, re-registers every GATE_REREGISTRATION_INTERVAL_SECONDS after a Gate restart, and answers GET /v1/ready 503 until Gate accepts the node.
Closes #
Fix
refactor(gate): adopt Gate_SDK node participation (L9-PARTICIPATION-01)
Risk
Blast radius: measured paths in Changes by intent
Rollback: revert this PR
Evidence
Gates
semgrepclean, or findings triaged below — n/a — not this changeReviewer focus
See Changes by intent and Protected-root (if any additive_only path).
Changes by intent
Added
Modified
chassis/node_app.py— refactor(gate): adopt Gate_SDK node participation (L9-PARTICIPATION-01)docs/FEATURE_GATES.md— refactor(gate): adopt Gate_SDK node participation (L9-PARTICIPATION-01)engine/boot.py— refactor(gate): adopt Gate_SDK node participation (L9-PARTICIPATION-01)engine/config/settings.py— refactor(gate): adopt Gate_SDK node participation (L9-PARTICIPATION-01)tests/integration/test_gate_registration.py— refactor(gate): adopt Gate_SDK node participation (L9-PARTICIPATION-01)Deleted
engine/gate_registration.py— refactor(gate): adopt Gate_SDK node participation (L9-PARTICIPATION-01)Files touched
Commits
Test plan
make prlocal gate receipt presentrelease_authorized)Changed files
Generated by Claude Code