Skip to content

Follow the added node by its enrollment ID and say when node files are missing - #145

Merged
SaladDay merged 1 commit into
mainfrom
codex/web-enrollment-id
Sep 26, 2026
Merged

SaladDay merged 1 commit into
mainfrom
codex/web-enrollment-id

Conversation

@SaladDay

@SaladDay SaladDay commented Sep 25, 2026 •

Copy link
Copy Markdown
Collaborator

Web part F2a of phase 2 (one-command node add), following the backend's 2a (#144).

Changes

  • Exact node matching. The Add node dialog follows the node whose enrollment_id equals its command's. This replaces matching on max_active/max_retained, which confused two valid commands with the same limits.
    • A node enrolled before Core recorded the ID reports null and never matches, and neither does a command without an ID.
    • Adopting the previous command's node after expiry also uses the ID.
  • Missing node files. When /console/config.node_artifacts doesn't list the deployment's provider, the dialog says the console has no node files for it: install Core from the offline bundle, or add the release artifacts and rerun ./install.sh. It offers no Generate and creates no token.
    • An absent field (older console) blocks nothing; null or a malformed value reads as none.
  • Host requirements. Nodes reach only the console and Core; the "release downloads" wording is gone. The "Not connected yet" hint gains a tip: the node service keeps retrying while Core is unavailable and stops once the node is removed.

Tests

  • Unit tests: the ID match (a same-limits node from another command, null IDs, a command without an ID) and node_artifacts parsing (absent, null, malformed, missing provider).
  • e2e: another command's same-limits node registering while the dialog is closed isn't adopted; a thin bundle (node_artifacts: []) shows the message with no Generate and no writes.

Results: typecheck ✓, agents-client 601, web 343, build ✓, full web e2e 28/28. packages/agents-client is unchanged; the TEMP stand-in was dropped.

docs/web (already reviewed by the backend session)

protocol-coverage.md:124 (Nodes) and :127 (Enrollment).


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith with what you need. Autofix is disabled.

@SaladDay
SaladDay force-pushed the codex/web-enrollment-id branch from 5dab52a to a5fb909 Compare September 26, 2026 00:27
…e missing

Add node now follows only the node whose enrollment_id equals its command's,
instead of guessing from the sandbox limits; a node enrolled before Core recorded
the ID never matches. When /console/config lists node_artifacts without the
deployment's provider (null reads as none, an absent field blocks nothing), the
dialog says this console has no node files for it and issues no command. The host
requirements no longer mention release downloads, and the not-connected hint
explains that the node service keeps retrying until the node is removed.
@SaladDay
SaladDay merged commit 65c4d30 into main Sep 26, 2026
2 checks passed
SaladDay added a commit that referenced this pull request Sep 26, 2026
Core always sends enrollment_id on /core/v1/sandbox/nodes list and detail
reads: a string, or null for nodes enrolled before Core recorded it. The
client typed it as optional only until Web's fixtures included it (#145), so
SandboxNode.enrollment_id is now a required string | null.
@SaladDay
SaladDay deleted the codex/web-enrollment-id branch October 7, 2026 06:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant