Skip to content

Commit e785656

Browse files
committed
Merge remote-tracking branch 'origin/main' into feat/n1x-express-install-8574
2 parents 54c0804 + a774d0a commit e785656

4 files changed

Lines changed: 35 additions & 26 deletions

File tree

ci/platform-matrix.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@
261261
{
262262
"name": "Podman / other container runtimes",
263263
"status": "unsupported",
264-
"notes": "Onboard surfaces an explicit unsupported-runtime error for Podman (`src/lib/onboard/fatal-runtime-preflight.ts` prints the rejection; `src/lib/onboard/preflight.ts` flags the unsupported runtime upstream). Only Docker Engine, Docker Desktop, and Colima are supported. See issue #420 (closed)."
264+
"notes": "Standard onboarding surfaces an explicit unsupported-runtime error for Podman (`src/lib/onboard/fatal-runtime-preflight.ts` prints the rejection; `src/lib/onboard/preflight.ts` flags the unsupported runtime upstream). The explicit portable experimental profile has one installer-preflight admission exception for the Podman unsupported-runtime finding, as accepted in issue #9007. It does not waive any other readiness blocker or make Podman generally supported. Only Docker Engine, Docker Desktop, and Colima are supported. See issue #420 (closed)."
265265
},
266266
{
267267
"name": "Intel Mac (macOS x86_64)",

docs/reference/commands.mdx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -782,7 +782,10 @@ Kanban backup does not include named boards, attachments, worker logs, scratch w
782782
</AgentOnly>
783783

784784
Before creating the gateway, the wizard runs preflight checks.
785-
It verifies that Docker is reachable, rejects unsupported runtimes such as Podman, and prints host remediation guidance when prerequisites are missing.
785+
It verifies that Docker is reachable and prints host remediation guidance when prerequisites are missing.
786+
Standard onboarding rejects unsupported runtimes such as Podman.
787+
The explicit portable experimental profile has one installer-preflight admission exception for the Podman unsupported-runtime finding.
788+
It does not waive any other readiness blocker or make Podman generally supported.
786789
The preflight also enforces the OpenShell version range declared in the blueprint (`min_openshell_version` and `max_openshell_version`).
787790
If the installed OpenShell version falls outside this range, onboarding exits with an actionable error and a link to compatible releases.
788791
For fresh OpenShell installs, NemoClaw queries published OpenShell releases and asks the installer to use a release that fits the blueprint range.

docs/reference/platform-support.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ They are listed here so launch material, sales conversations, and support triage
167167
{/* out-of-scope:begin */}
168168
| Item | Status | Why |
169169
|------|--------|-----|
170-
| Podman / other container runtimes | Unsupported | Onboard surfaces an explicit unsupported-runtime error for Podman (`src/lib/onboard/fatal-runtime-preflight.ts` prints the rejection; `src/lib/onboard/preflight.ts` flags the unsupported runtime upstream). Only Docker Engine, Docker Desktop, and Colima are supported. See issue #420 (closed). |
170+
| Podman / other container runtimes | Unsupported | Standard onboarding surfaces an explicit unsupported-runtime error for Podman (`src/lib/onboard/fatal-runtime-preflight.ts` prints the rejection; `src/lib/onboard/preflight.ts` flags the unsupported runtime upstream). The explicit portable experimental profile has one installer-preflight admission exception for the Podman unsupported-runtime finding, as accepted in issue #9007. It does not waive any other readiness blocker or make Podman generally supported. Only Docker Engine, Docker Desktop, and Colima are supported. See issue #420 (closed). |
171171
| Intel Mac (macOS x86_64) | Unsupported | The supported OpenShell Homebrew gateway service path is Apple Silicon only, and OpenShell does not publish macOS x86_64 standalone gateway assets. The top-level installer rejects Intel Mac hosts before release-ref resolution or downloads (`install.sh:108`), and the OpenShell installer retains a downstream asset guard (`scripts/install-openshell.sh:687`). See issue #954 (closed). |
172172
| Non-Ubuntu/Debian Linux distros | Unsupported | Installer assumes `apt-get`. Fedora/Rocky/Alma/Arch/NixOS are not validated and the installer's package-manager probes do not cover them. See open issue #899 (Fedora hang). |
173173
| Native Kubernetes or OpenShift deployments | Unsupported | NemoClaw runs the sandbox as a Docker container, not a Kubernetes pod. The default Docker-driver topology does not embed k3s. Operator-managed K8s/OpenShift deployments are out of scope; see issue #407 (community OpenShift through agent-sandbox CRD). |

test/install-portable-profile.test.ts

Lines changed: 29 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -51,31 +51,37 @@ describe("installer portable profile runtime override", () => {
5151

5252
it("rejects an unknown experimental profile before install effects (#9007)", () => {
5353
const fixture = fs.mkdtempSync(path.join(os.tmpdir(), "nemoclaw-invalid-profile-"));
54-
const marker = path.join(fixture, "existing-state");
55-
fs.writeFileSync(marker, "unchanged\n");
56-
const stateBefore = fs.readdirSync(fixture);
54+
const processTemp = fs.mkdtempSync(path.join(os.tmpdir(), "nemoclaw-invalid-profile-tmp-"));
55+
try {
56+
const marker = path.join(fixture, "existing-state");
57+
fs.writeFileSync(marker, "unchanged\n");
58+
const stateBefore = fs.readdirSync(fixture);
5759

58-
const result = spawnSync(
59-
"bash",
60-
[INSTALLER_PAYLOAD, "--experimental-profile", "not-portable"],
61-
{
62-
cwd: fixture,
63-
encoding: "utf-8",
64-
env: {
65-
...process.env,
66-
HOME: fixture,
67-
NEMOCLAW_EXPERIMENTAL_PROFILE: "",
68-
TMPDIR: fixture,
69-
XDG_CONFIG_HOME: path.join(fixture, "config"),
60+
const result = spawnSync(
61+
"bash",
62+
[INSTALLER_PAYLOAD, "--experimental-profile", "not-portable"],
63+
{
64+
cwd: fixture,
65+
encoding: "utf-8",
66+
env: {
67+
...process.env,
68+
HOME: fixture,
69+
NEMOCLAW_EXPERIMENTAL_PROFILE: "",
70+
TMPDIR: processTemp,
71+
XDG_CONFIG_HOME: path.join(fixture, "config"),
72+
},
7073
},
71-
},
72-
);
74+
);
7375

74-
expect(result.status).toBe(1);
75-
expect(`${result.stdout}${result.stderr}`).toContain(
76-
"Unknown experimental profile: not-portable (expected: portable).",
77-
);
78-
expect(fs.readdirSync(fixture)).toEqual(stateBefore);
79-
expect(fs.readFileSync(marker, "utf-8")).toBe("unchanged\n");
76+
expect(result.status).toBe(1);
77+
expect(`${result.stdout}${result.stderr}`).toContain(
78+
"Unknown experimental profile: not-portable (expected: portable).",
79+
);
80+
expect(fs.readdirSync(fixture)).toEqual(stateBefore);
81+
expect(fs.readFileSync(marker, "utf-8")).toBe("unchanged\n");
82+
} finally {
83+
fs.rmSync(processTemp, { force: true, recursive: true });
84+
fs.rmSync(fixture, { force: true, recursive: true });
85+
}
8086
});
8187
});

0 commit comments

Comments
 (0)