Skip to content

CI

CI #20228

Triggered via merge group August 16, 2026 04:29
Status Failure
Total duration 17m 9s
Artifacts –

ci.yml

on: merge_group
Matrix: dogfood
Matrix: test
Dogfood Verify CLI
3m 45s
Dogfood Verify CLI
Temporal Conformance (live PG + MySQL)
3m 59s
Temporal Conformance (live PG + MySQL)
Build Core
3m 38s
Build Core
Build Docs
2m 47s
Build Docs
Console Pin Gate
5m 37s
Console Pin Gate
Test Core
10s
Test Core
Dogfood Regression Gate
12s
Dogfood Regression Gate
Fit to window
Zoom out
Zoom in

Annotations

6 errors
Test Core (3/3)
Process completed with exit code 1.
Test Core (3/3)
command (/home/runner/work/objectstack/objectstack/packages/cli) /opt/hostedtoolcache/node/22.23.2/x64/bin/pnpm run test exited (1)
test/cloud-login-json-ndjson.e2e.test.ts > the exception stays declared, not just implemented (#6730 ruling) > documents the exception where the cloud login step is prescribed: packages/cli/test/cloud-login-json-ndjson.e2e.test.ts#L485
AssertionError: expected '---\ntitle: Deployment Overview\ndesc…' to match /one\s+per\s+line/i - Expected: /one\s+per\s+line/i + Received: "--- title: Deployment Overview description: Two things deploy on this platform and they move on separate clocks — the platform runtime you operate, and the metadata app you build. Which one you are doing decides which pages in this section are yours. --- # Deployment Overview Two different things get deployed here, and they run on **separate clocks**: | | **The platform runtime** | **Your metadata app** | |:---|:---|:---| | The sentence that fits | \"I operate ObjectStack.\" | \"I build an app that runs on it.\" | | Ships as | a Docker image (or the `os` CLI on a host) | a compiled artifact, `dist/objectstack.json` | | Versioned by | our release train (`17.0.0`) | your own catalog | | Whose cadence | ours | yours | | The deploy action | move the image tag, restart | compile, then install it or pin it at boot | | Rolling back | restore the previous tag or artifact | install the previous version | The two are genuinely independent: a deployment can move from platform 16 to 17 without touching its app, and publish twelve app versions without moving the platform. Most deployment questions are really the question *which of these am I doing* — so this section is ordered that way, and so is the sidebar. **Where it runs — Docker, Compose, Kubernetes, a bare Node.js host, or an ObjectStack Cloud environment — is a detail inside the first of those two, not a third thing alongside them.** Pick which job you are doing first; the venue is a choice you make inside it. <Callout type=\"info\"> **Doing both is normal; doing both in one motion is not.** A team that self-hosts its own app operates the runtime *and* ships the app — still two jobs, two cadences, two checklists. Read the one you are acting on today. </Callout> --- ## The platform runtime — you operate it The platform ships as a single version-locked train: every `@objectstack/*` package shares one version number, and that number is the platform version. It is published as an official runtime image, `ghcr.io/objectstack-ai/objectstack`, whose tags mirror `@objectstack/cli` versions (`17.0.0`, `17.0`, `17`, `latest`). Pin the exact version in production and move it deliberately. ### Where it runs - **Docker — the standard path.** The image is Node 22 + `@objectstack/cli` + `os start`, running as a non-root user with a built-in health check. Compose with Postgres and Kubernetes are shapes of that same path rather than alternatives to it; [bare Node.js under systemd](/docs/deployment/self-hosting#bare-nodejs-systemd--without-containers) is the minority path, for hosts where a container runtime is not available. See [Docker (official image)](/docs/deployment/self-hosting#docker-official-image--the-standard-path). - **ObjectStack Cloud.** The control plane provisions environments and operates the runtime for you, and apps arrive by installing a package version from your organization's catalog. Cloud hosts, database provisioning, billing, and public SaaS distribution live outside this repository; the framework runtime exposes the environment registry, marketplace proxy, and runtime-config seams that distribution consumes. - **A local runtime, for development.** `pnpm dev` in this repository, or `os dev` in a generated app: one process, one active environment, no control-plane hop. See [Single-Environment Mode](/docs/deployment/single-project-mode). ### How many environments one runtime serves A single-environment host owns exactly one active environment, selected with `OS_ENVIRONMENT_ID`. An environment-aware host resolves one **per request** — from the scoped URL, the hostname, `X-Environment-Id`, the session, or a configured default. That is a property of the runtime you operate, not of the app it runs; the full precedence list is [Resolution order](/docs/api/environment-routing#resolution-order). Control-plane endpoints under `/api/v1/cloud/...` manage environments rather than run
Test Core
Process completed with exit code 1.
Test Core
Test Core: leg test reported result 'failure' — a declared negative is never overridden by a full roster.
Test Core
Test Core: 1 of 3 declared shard(s) of test published no positive attestation (test-3-of-3). A shard that never ran cannot be counted as passing — see #6082.