Repository navigation
CI #20228
ci.yml
on: merge_group
filter
11s
Matrix: dogfood
Matrix: test
Temporal Conformance (live PG + MySQL)
3m 59s
Build Core
3m 38s
Build Docs
2m 47s
Console Pin Gate
5m 37s
Test Core
10s
Dogfood Regression Gate
12s
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.
|