You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The cloud-experimental-e2e nightly job has been disabled since PR #2367 (via vars.CLOUD_EXPERIMENTAL_E2E_ENABLED) and has never passed in the nightly pipeline. It was previously blocked by two issues:
CLI/docs command reference drift (Phase 5f) — still broken.check-docs.sh compares nemoclaw --help output against ### \nemoclaw …`headings indocs/reference/commands.md. The check finds 36 commands in --help` but only 31 headings in the docs. The mismatch comes from two sources:
Parser brittleness: the perl regex that normalizes --help lines fails to strip inline description text when commands use single-space separators (e.g., nemoclaw <name> channels remove <channel> Clear credentials and rebuild leaks the description)
Real drift: commands like nemoclaw onboard --from, nemoclaw setup, nemoclaw start, nemoclaw stop were added to help() without corresponding ### headings in commands.md
There is an existing issue (#2333) and open PR (#2332) that patches both the parser and the docs. But patching is not the right long-term fix — the same problem will recur every time someone adds or modifies a CLI command.
Root Cause
Commands are defined in three independent, untyped places with no shared source of truth:
help() function in src/nemoclaw.ts (~line 2929) — hand-written console.log() strings with ANSI formatting
Dispatch switch in src/nemoclaw.ts (~line 3026) — the actual command routing logic
Every time someone adds a command, they must update all three by hand. check-docs.sh tries to catch drift after the fact by parsing the --help text output, but the parser itself is fragile and contributes false mismatches.
Proposed Design
Create a typed command registry as the single source of truth, then derive all three outputs from it.
Remove cloud-experimental-e2e entirely: Rejected — it's the only test that exercises the public installer flow, interactive onboard, skill injection + agent verification, OpenClaw TUI, Landlock enforcement, and doc validation. No other E2E test covers these.
What cloud-experimental-e2e uniquely covers
This is the most comprehensive single E2E test in the suite (2,450 lines, 12 scripts). Capabilities not tested elsewhere:
Phase
Unique Coverage
Phase 3
Full public installer (curl nvidia.com/nemoclaw.sh | bash) with interactive expect-driven onboard
Description
Problem Statement
The
cloud-experimental-e2enightly job has been disabled since PR #2367 (viavars.CLOUD_EXPERIMENTAL_E2E_ENABLED) and has never passed in the nightly pipeline. It was previously blocked by two issues:Landlock
/sandboxwritability regression — now resolved. OpenShell fix: remove gcc and netcat from sandbox image (#807, #808) #810 (two-phase Landlock fix) merged April 13, and NemoClaw issue [All Platform][Security]OpenShell 0.0.26 does not enforce Landlock filesystem policy — /sandbox writable on all platforms #1739 was closed April 21. The blueprint already pinsmin_openshell_version: "0.0.32"andinstall-openshell.shpinsMIN_VERSION="0.0.32", both above the fix.CLI/docs command reference drift (Phase 5f) — still broken.
check-docs.shcomparesnemoclaw --helpoutput against### \nemoclaw …`headings indocs/reference/commands.md. The check finds 36 commands in--help` but only 31 headings in the docs. The mismatch comes from two sources:--helplines fails to strip inline description text when commands use single-space separators (e.g.,nemoclaw <name> channels remove <channel> Clear credentials and rebuildleaks the description)nemoclaw onboard --from,nemoclaw setup,nemoclaw start,nemoclaw stopwere added tohelp()without corresponding###headings incommands.mdThere is an existing issue (#2333) and open PR (#2332) that patches both the parser and the docs. But patching is not the right long-term fix — the same problem will recur every time someone adds or modifies a CLI command.
Root Cause
Commands are defined in three independent, untyped places with no shared source of truth:
help()function insrc/nemoclaw.ts(~line 2929) — hand-writtenconsole.log()strings with ANSI formattingsrc/nemoclaw.ts(~line 3026) — the actual command routing logicdocs/reference/commands.md— hand-written Markdown headingsEvery time someone adds a command, they must update all three by hand.
check-docs.shtries to catch drift after the fact by parsing the--helptext output, but the parser itself is fragile and contributes false mismatches.Proposed Design
Create a typed command registry as the single source of truth, then derive all three outputs from it.
Phase 1: Typed command registry
Create
src/lib/command-registry.ts:TypeScript enforces that every entry has the required fields and valid group. Adding a command means adding one entry to this array.
Phase 2: Generate
help()from registryRewrite the
help()function to iterateCOMMANDSgrouped bygroup, applying ANSI formatting. No more hand-written command lines in the help output.Phase 3: Validate docs from registry
Either:
docs/reference/commands.mdheadings from the registry (like the existingdocs-to-skills.pypattern), orcheck-docs.shto import the registry directly and compare against Markdown headings — no perl parsing of--helpoutputOption A is stronger (eliminates drift entirely), but Option B is simpler and may be more practical given the Sphinx/MyST doc pipeline.
Phase 4: Re-enable cloud-experimental-e2e
Once Phase 5f passes reliably, flip
vars.CLOUD_EXPERIMENTAL_E2E_ENABLEDtotrue. The Landlock blocker is already resolved.Alternatives Considered
What cloud-experimental-e2e uniquely covers
This is the most comprehensive single E2E test in the suite (2,450 lines, 12 scripts). Capabilities not tested elsewhere:
curl nvidia.com/nemoclaw.sh | bash) with interactive expect-driven onboardRelated Issues / PRs