os-nightly-tiers — machine-findable marker for this generated card. ⛔ Do not delete this line: it is how the nightly finds this card instead of filing a new one every night.
nightly-tiers: red on main
Swept 2026-09-12T05:54:11.681Z · run log · commit 8fa3fe63d9e8dbbc507c0735d918c99db41df31d · trigger schedule · tiers job result failure.
The e2e and live test tiers — the files named *.e2e.test.* and *.live.test.* — run here
nightly on main under OS_TEST_TIERS=nightly and nowhere else (the per-PR and merge-queue
Test Core runs under queue). A red here is a real suite that no pull request will red on;
this card is the channel that sees it. Nothing is blocked by it.
⛔ The remedy is never to rename, skip or delete the failing test to make the nightly green.
Reproduce locally with OS_TEST_TIERS=nightly pnpm --filter <pkg> test, fix what it names, and
let the next nightly refresh this card.
Failing files
packages/cli/test/json-stdout-purity.e2e.test.ts
shard-1 — last lines of the test log
… (5977 chars elided) …
09�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m �[30m�[45m integration �[49m�[39m test/lint-conversion-notices.e2e.test.ts �[2m(�[22m�[2m6 tests�[22m�[2m)�[22m�[33m 72845�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m ⭐ the fixture REALLY converts — `--json` publishes the notice the run produced �[33m 10539�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m ⭐ converts nothing — the field is PRESENT and EMPTY, so it tracks the run �[33m 10456�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m ⭐ the human face says it too — the notice is printed, with its expiry �[33m 10235�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m ⭐ the human face stays SILENT when nothing converted �[33m 10283�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m catch-all at load — `[]` honestly, because the normalize step never ran �[33m 10516�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m REGRESSION GUARD — the notice is NOT folded into `issues`, and the counts are unchanged �[33m 20808�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m �[30m�[45m integration �[49m�[39m test/migrate-apply-refuses-before-ddl.e2e.test.ts �[2m(�[22m�[2m10 tests�[22m�[2m)�[22m�[33m 34701�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m �[30m�[45m integration �[49m�[39m test/lint-eval-empty-generator-refusal.e2e.test.ts �[2m(�[22m�[2m10 tests�[22m�[2m)�[22m�[33m 134792�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m refuses on the human face, naming the flag and the empty value it was given �[33m 10612�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m the --json face stays a machine face — one JSON document, nothing on stderr �[33m 9501�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m nothing is minted — the payload key set is exactly `error` �[33m 10477�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m differs from the no-flag run once the elapsed token is normalised �[33m 21634�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m both refuse: same exit code, refusal on stdout, generator never loaded �[33m 20685�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m both answer the same --json envelope: exit 1 and a lone `error` key �[33m 20273�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m `--eval` with the flag absent still runs the offline eval �[33m 10458�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m `--eval --generator <module>` still loads the generator and runs live �[33m 10252�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m an unresolvable generator path refuses exactly as it always has �[33m 10475�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m a plain project lint is untouched �[33m 10419�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m �[30m�[45m integration �[49m�[39m test/lint-eval-json-unscorable-stack.e2e.test.ts �[2m(�[22m�[2m13 tests�[22m�[2m)�[22m�[33m 134321�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m a top-level poisoned getter: stdout is JSON, the case FAILED, the cause is named �[33m 10972�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m a poisoned getter BELOW the top level is caught too — the schema parse walks there �[33m 10487�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m ⛔ a silent swallow would be caught: the unscorable case is not scored as clean �[33m 9674�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m offline mode is untouched: exit 0 and every golden case passes �[33m 10286�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m a generator that THROWS is still a generation error, not a scoring one �[33m 10250�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m ⭐ every generation threw ⇒ meanScore 0 on the --json face, never 100 �[33m 10266�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m off-shape stack manifest-as-string is a SCORED case with schema errors, never a generationError �[33m 10383�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m off-shape stack objects-as-string is a SCORED case with schema errors, never a generationError �[33m 9984�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m off-shape stack objects-as-number is a SCORED case with schema errors, never a generationError �[33m 10323�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m off-shape stack objects-as-null is a SCORED case with schema errors, never a generationError �[33m 10276�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m off-shape stack nested-wrong-types is a SCORED case with schema errors, never a generationError �[33m 10329�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m off-shape stack bare-string is a SCORED case with schema errors, never a generationError �[33m 10297�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m a generator that cannot be loaded still takes the generator-load JSON exit �[33m 10783�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m �[30m�[45m integration �[49m�[39m test/artifact-pinned-boot.e2e.test.ts �[2m(�[22m�[2m7 tests�[22m�[2m)�[22m�[33m 80314�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m boots an https:// artifact, overriding the image's OS_ARTIFACT_PATH default �[33m 13033�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m boots a file:// artifact — the volume-mount workflow �[33m 13469�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m boots unpinned, and says so rather than claiming verification �[33m 13409�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m refuses a hash mismatch, naming expected AND actual, and exits non-zero �[33m 10153�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m refuses an unreachable artifact instead of degrading to an empty kernel �[33m 9840�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m never prints the credential of a pre-signed URL — on the real refusal path �[33m 10206�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m refuses an artifact built for another protocol major (acceptance #4) �[33m 10183�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m �[30m�[45m integration �[49m�[39m test/run-dev-cwd-tsconfig-redirect.e2e.test.ts �[2m(�[22m�[2m3 tests�[22m�[2m)�[22m�[33m 30420�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m loads its command set anyway, and says what it re-ran �[33m 11992�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m still explains itself when the pin is defeated, and refuses the rebuild remedy �[33m 8281�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m CONTROL — from the repo root nothing is redirected, so nothing is re-exec'd �[33m 10144�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m �[30m�[45m integration �[49m�[39m test/diff-usage-error-stream.e2e.test.ts �[2m(�[22m�[2m12 tests�[22m�[2m)�[22m�[33m 31568�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m �[30m�[45m integration �[49m�[39m test/serve-ready-degraded-boot.e2e.test.ts �[2m(�[22m�[2m2 tests�[22m�[2m)�[22m�[33m 9754�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m prints ready AND the missing core service in the same output, with no unconditional tick �[33m 4450�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m leaves a healthy boot printing exactly the tick it always printed �[33m 5297�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m �[30m�[45m integration �[49m�[39m test/create-refuses-invalid-project-name.e2e.test.ts �[2m(�[22m�[2m6 tests�[22m�[2m)�[22m�[33m 52231�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m refuses the card's input and writes NOTHING �[33m 10694�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m accepts a valid name — the positive control for the absence check above �[33m 10316�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m refuses a name only the COMPOSED length catches, which `os init` must keep accepting �[33m 31213�[2mms�[22m�[39m
@objectstack/cli:test: �[31m❯�[39m �[30m�[45m integration �[49m�[39m test/json-stdout-purity.e2e.test.ts �[2m(�[22m�[2m38 tests�[22m�[2m | �[22m�[31m1 failed�[39m�[2m)�[22m�[33m 136524�[2mms�[22m�[39m
@objectstack/cli:test: �[31m �[31m×�[31m is exactly the set listed here — a new member goes red until it is driven too�[39m�[32m 26�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m and the commands that fail BEFORE boot are covered too, by the sibling pin�[32m 22�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m emits ONE JSON document on stdout — a bare JSON.parse, no extraction�[32m 1�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m leaves no kernel-logger record on stdout�[32m 1�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m still shows the operator every boot diagnostic — on stderr�[32m 0�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m emits ONE JSON document on stdout — a bare JSON.parse, no extraction�[32m 0�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m leaves no kernel-logger record on stdout�[32m 0�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m still shows the operator every boot diagnostic — on stderr�[32m 0�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m emits ONE JSON document on stdout — a bare JSON.parse, no extraction�[32m 1�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m leaves no kernel-logger record on stdout�[32m 0�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m still shows the operator every boot diagnostic — on stderr�[32m 0�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m emits ONE JSON document on stdout — a bare JSON.parse, no extraction�[32m 0�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m leaves no kernel-logger record on stdout�[32m 0�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m still shows the operator every boot diagnostic — on stderr�[32m 0�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m emits ONE JSON document on stdout — a bare JSON.parse, no extraction�[32m 0�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m leaves no kernel-logger record on stdout�[32m 0�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m still shows the operator every boot diagnostic — on stderr�[32m 0�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m emits ONE JSON document on stdout — a bare JSON.parse, no extraction�[32m 0�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m leaves no kernel-logger record on stdout�[32m 0�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m still shows the operator every boot diagnostic — on stderr�[32m 0�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m emits ONE JSON document on stdout — a bare JSON.parse, no extraction�[32m 0�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m leaves no kernel-logger record on stdout�[32m 0�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m still shows the operator every boot diagnostic — on stderr�[32m 0�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m emits ONE JSON document on stdout — a bare JSON.parse, no extraction�[32m 0�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m leaves no kernel-logger record on stdout�[32m 0�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m still shows the operator every boot diagnostic — on stderr�[32m 0�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m emits ONE JSON document on stdout — a bare JSON.parse, no extraction�[32m 0�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m leaves no kernel-logger record on stdout�[32m 0�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m still shows the operator every boot diagnostic — on stderr�[32m 0�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m emits ONE JSON document on stdout — a bare JSON.parse, no extraction�[32m 0�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m leaves no kernel-logger record on stdout�[32m 0�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m still shows the operator every boot diagnostic — on stderr�[32m 0�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m emits ONE JSON document on stdout — a bare JSON.parse, no extraction�[32m 0�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m leaves no kernel-logger record on stdout�[32m 0�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m still shows the operator every boot diagnostic — on stderr�[32m 0�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m emits ONE JSON document on stdout — a bare JSON.parse, no extraction�[32m 0�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m leaves no kernel-logger record on stdout�[32m 0�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m still shows the operator every boot diagnostic — on stderr�[32m 0�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m �[30m�[45m integration �[49m�[39m test/init-created-files-summary.e2e.test.ts �[2m(�[22m�[2m4 tests�[22m�[2m)�[22m�[33m 20962�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m �[30m�[45m integration �[49m�[39m test/compile-artifact-packages.e2e.test.ts �[2m(�[22m�[2m4 tests�[22m�[2m)�[22m�[33m 41484�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m writes `manifest` and NO `packages` key �[33m 10565�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m carries both package manifests through to the written artifact, in order �[33m 10142�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m keeps the singular `manifest` beside it — retained, not replaced �[33m 10079�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m exits non-zero rather than writing an artifact in the unreserved shape �[33m 10689�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m �[30m�[45m integration �[49m�[39m test/migrate-plan-exits.e2e.test.ts �[2m(�[22m�[2m1 test�[22m�[2m)�[22m�[33m 7242�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m returns from a composed host stack that armed an unreleasable handle in init() �[33m 7240�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m �[30m�[45m integration �[49m�[39m test/i18n-check-platform-bucket.e2e.test.ts �[2m(�[22m�[2m5 tests�[22m�[2m)�[22m�[33m 52864�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m reports 100% and exits 0 under --strict --threshold=100 �[33m 10362�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m is the SAME invocation that failed before — the control is --include-platform �[33m 10709�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m prints the hidden-bucket hint on the console face �[33m 10776�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m ⛔ still gates the package that SHIPS the baseline, with no flag at all �[33m 10120�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m accepts --no-include-platform, so the third state really is three states �[33m 10891�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m �[30m�[45m integration �[49m�[39m test/generate-agent-retired.e2e.test.ts �[2m(�[22m�[2m9 tests�[22m�[2m)�[22m�[33m 30993�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m �[30m�[45m integration �[49m�[39m test/serve-boot-diagnostics.e2e.test.ts �[2m(�[22m�[2m2 tests�[22m�[2m)�[22m�[33m 26776�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m prints the boot WARN a plugin logged while the banner was being assembled �[33m 13577�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m streams boot output live at --log-level debug instead of hiding it �[33m 13193�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m �[30m�[42m unit �[49m�[39m test/vitest-resolution-base-collapse.e2e.test.ts �[2m(�[22m�[2m13 tests�[22m�[2m)�[22m�[32m 205�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m �[30m�[45m integration �[49m�[39m test/serve-app-runtime-hooks.e2e.test.ts �[2m(�[22m�[2m1 test�[22m�[2m)�[22m�[33m 19291�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m runs onEnable, so the declared script action has a handler �[33m 10290�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m �[30m�[45m integration �[49m�[39m test/config-miss-stdout-purity.e2e.test.ts �[2m(�[22m�[2m174 tests�[22m�[2m)�[22m�[33m 323632�[2mms�[22m�[39m
@objectstack/cli:test:
@objectstack/cli:test: �[31m⎯⎯⎯⎯⎯⎯⎯�[39m�[1m�[41m Failed Tests 1 �[49m�[22m�[31m⎯⎯⎯⎯⎯⎯⎯�[39m
@objectstack/cli:test:
@objectstack/cli:test: �[41m�[1m FAIL �[22m�[49m �[30m�[45m integration �[49m�[39m test/json-stdout-purity.e2e.test.ts�[2m > �[22mthe family this contract has to hold across�[2m > �[22mis exactly the set listed here — a new member goes red until it is driven too
@objectstack/cli:test: �[31m�[1mAssertionError�[22m: expected [ 'meta resync', …(12) ] to deeply equal [ 'meta resync', …(11) ]�[39m
@objectstack/cli:test:
@objectstack/cli:test: �[32m- Expected�[39m
@objectstack/cli:test: �[31m+ Received�[39m
@objectstack/cli:test:
@objectstack/cli:test: �[33m@@ -1,7 +1,8 @@�[39m
@objectstack/cli:test: �[2m [�[22m
@objectstack/cli:test: �[2m "meta resync",�[22m
@objectstack/cli:test: �[31m+ "migrate account-issuer",�[39m
@objectstack/cli:test: �[2m "migrate apply",�[22m
@objectstack/cli:test: �[2m "migrate files-to-references",�[22m
@objectstack/cli:test: �[2m "migrate meta",�[22m
@objectstack/cli:test: �[2m "migrate multi-value-columns",�[22m
@objectstack/cli:test: �[2m "migrate plan",�[22m
@objectstack/cli:test:
@objectstack/cli:test: �[36m �[2m❯�[22m test/json-stdout-purity.e2e.test.ts:�[2m209:30�[22m�[39m
@objectstack/cli:test: �[90m207|�[39m �[34mdescribe�[39m(�[32m'the family this contract has to hold across'�[39m�[33m,�[39m () �[33m=>�[39m {
@objectstack/cli:test: �[90m208|�[39m it('is exactly the set listed here — a new member goes red until it …
@objectstack/cli:test: �[90m209|�[39m �[34mexpect�[39m(�[34mdiscoverFamily�[39m())�[33m.�[39m�[34mtoEqual�[39m(�[33mObject�[39m�[33m.�[39m�[34mkeys�[39m(�[33mFAMILY�[39m)�[33m.�[39m�[34msort�[39m())�[33m;�[39m
@objectstack/cli:test: �[90m |�[39m �[31m^�[39m
@objectstack/cli:test: �[90m210|�[39m })�[33m;�[39m
@objectstack/cli:test: �[90m211|�[39m
@objectstack/cli:test:
@objectstack/cli:test: �[31m�[2m⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯�[22m�[39m
@objectstack/cli:test:
@objectstack/cli:test:
@objectstack/cli:test: �[2m Test Files �[22m �[1m�[31m1 failed�[39m�[22m�[2m | �[22m�[1m�[32m32 passed�[39m�[22m�[90m (33)�[39m
@objectstack/cli:test: �[2m Tests �[22m �[1m�[31m1 failed�[39m�[22m�[2m | �[22m�[1m�[32m438 passed�[39m�[22m�[90m (439)�[39m
@objectstack/cli:test: �[2m Start at �[22m 05:40:59
@objectstack/cli:test: �[2m Duration �[22m 772.89s�[2m (transform 13.99s, setup 0ms, import 24.87s, tests 2072.64s, environment 8ms)�[22m
@objectstack/cli:test:
@objectstack/cli:test: JSON report written to /home/runner/work/objectstack/objectstack/packages/cli/.nightly-tiers/vitest-report.json
@objectstack/cli:test: ELIFECYCLE Test failed. See above for more details.
::error::command (/home/runner/work/objectstack/objectstack/packages/cli) /opt/hostedtoolcache/node/22.23.2/x64/bin/pnpm run test --shard=1/2 --reporter=default --reporter=json --outputFile.json=.nightly-tiers/vitest-report.json exited (1)
@objectstack/cli#test: ERROR command (/home/runner/work/objectstack/objectstack/packages/cli) /opt/hostedtoolcache/node/22.23.2/x64/bin/pnpm run test --shard=1/2 --reporter=default --reporter=json --outputFile.json=.nightly-tiers/vitest-report.json exited (1)
Tasks: 57 successful, 58 total
Cached: 0 cached, 58 total
Time: 19m13.066s
Summary: /home/runner/work/objectstack/objectstack/.turbo/runs/3JDOzC8AyuGHMLxromuCCcqRHmc.json
Failed: @objectstack/cli#test
ERROR run failed: command exited (1)
shard-2 — last lines of the test log
… (7030 chars elided) …
ctstack/cli:test: �[33m�[2m✓�[22m�[39m says nothing on a chain that does not cross into 17 �[33m 11761�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m ends the human-readable upgrade with the advice, not just the JSON �[33m 11447�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m refuses a --from below the support floor with the structured error �[33m 10172�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m loads it, converts it, and reports the migrated stack schema-valid �[33m 11017�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m still refuses the same source everywhere else — `os validate` keeps the prescription �[33m 10591�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m names this build's protocol major, in majors �[33m 10472�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m prints no padded protocol semver in the human output, under any label �[33m 10473�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m still says where the runtime stands when --to stops below this build's major �[33m 11000�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m emits the protocol version under `protocolVersion`, with no `runtime` key left �[33m 10732�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m �[30m�[45m integration �[49m�[39m test/validate-json-failure-conversions.e2e.test.ts �[2m(�[22m�[2m13 tests�[22m�[2m)�[22m�[33m 99434�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m control — the fixture shape DOES drive a live conversion on the success exit �[33m 12129�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m parse failure — THE HEADLINE: the notice computed at step 2 survives the schema error �[33m 12077�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m ⭐ converts nothing — the SAME exit reports `[]`, so the field tracks the run �[33m 10646�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m rule errors — the notice rides the author-time gate �[33m 11171�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m capability errors — the notice rides the #3366 preflight gate �[33m 11242�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m doc errors — the notice rides the ADR-0046 docs gate �[33m 10231�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m catch-all (late throw) — a THROWN failure still reports the computed notice �[33m 10149�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m catch-all (throw at load) — `conversions` is PRESENT and empty, because step 2 never ran �[33m 10409�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m REGRESSION GUARD — `warnings` and `conversions` stay separate fields �[33m 11365�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m �[30m�[45m integration �[49m�[39m src/commands/validate-json-strict-exit.e2e.test.ts �[2m(�[22m�[2m6 tests�[22m�[2m)�[22m�[33m 117272�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m a config with advisories: --json --strict exits exactly as --strict does �[33m 21508�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m the failing --json run still emits exactly one parseable document, carrying the cause �[33m 10623�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m control: a config with nothing to warn about exits 0 on BOTH faces under --strict �[33m 20900�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m conversions-only: the cell where --strict is decided by a collection the payload keeps OUT of `warnings` �[33m 31651�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m control: the same page under the CANONICAL key converts nothing and exits 0 on both faces �[33m 21873�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m control: without --strict, the same advisory-raising config still exits 0 under --json �[33m 10701�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m �[30m�[45m integration �[49m�[39m test/build-json-advisory-parity.e2e.test.ts �[2m(�[22m�[2m8 tests�[22m�[2m)�[22m�[33m 117722�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m the planted fixture reaches the code path: exit 0, both advisories on the TEXT face �[33m 10819�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m carries the #3366 capability hint in the payload, as the `{token,message}` record validate ships �[33m 10293�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m carries the ADR-0046 doc advisory in the payload, as the issue RECORD validate ships �[33m 10543�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m reports the SAME sets `os validate --json` reports on the same tree, per class �[33m 21398�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m folds them in BESIDE the authoring-rule advisories — the fold added to the list, it did not replace it �[33m 10529�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m adds NO new top-level key to the payload — this fills a declared key, it is not a new surface �[33m 10936�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m CONTROL — a clean stack reports neither advisory, on either face �[33m 21818�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m the ONLY residue between the two payloads is the structural advisory set — deferred to #11896, not ported �[33m 21378�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m �[30m�[45m integration �[49m�[39m test/i18n-extract-key-count.e2e.test.ts �[2m(�[22m�[2m8 tests�[22m�[2m)�[22m�[33m 148429�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m every printed file count is that file's own leaf count (default) �[33m 10955�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m every printed file count is that file's own leaf count (no-metadata-forms) �[33m 10065�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m every printed file count is that file's own leaf count (no-objects-only) �[33m 10564�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m every printed file count is that file's own leaf count (neither) �[33m 10456�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m summarises the emitted keys as a partition of the skeleton, in both sub-tree modes �[33m 43578�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m --json counts describe the payload printed beside them, in both sub-tree modes �[33m 31819�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m names a flag-suppressed module and its size, without adding it in �[33m 10517�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m writes no module for an empty sub-tree, and announces none �[33m 20462�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m �[30m�[45m integration �[49m�[39m test/serve-port-readback.e2e.test.ts �[2m(�[22m�[2m13 tests�[22m�[2m)�[22m�[33m 27574�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m POSITIVE CONTROL: a real boot on a free port reads back as exactly that port �[33m 13966�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m THE LOAD-BEARING ARM: a child that drifts off a HELD port is REJECTED, not returned �[33m 13594�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m �[30m�[45m integration �[49m�[39m test/run-dev-stderr-nonblocking.e2e.test.ts �[2m(�[22m�[2m5 tests�[22m�[2m)�[22m�[33m 2292�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m �[30m�[45m integration �[49m�[39m test/serve-port-drift-notice.e2e.test.ts �[2m(�[22m�[2m2 tests�[22m�[2m)�[22m�[33m 27652�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m POSITIVE — a really-held port produces a notice carrying REQUESTED and BOUND �[33m 14411�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m NEGATIVE — an ordinary boot on a free port says nothing about ports �[33m 13236�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m �[30m�[45m integration �[49m�[39m test/serve-host-fallback-base.e2e.test.ts �[2m(�[22m�[2m5 tests�[22m�[2m)�[22m�[33m 4429�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m �[30m�[45m integration �[49m�[39m test/login-json-noninteractive.e2e.test.ts �[2m(�[22m�[2m20 tests�[22m�[2m)�[22m�[33m 74432�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m logs in with both flags under --json — one record, exit 0 �[33m 10559�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m still prompts, and still succeeds, for a consumer that answers �[33m 10261�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m �[30m�[45m integration �[49m�[39m test/serve-no-artifact.e2e.test.ts �[2m(�[22m�[2m5 tests�[22m�[2m)�[22m�[33m 66652�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m serves an app defined only by objectstack.config.ts �[33m 14223�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m serves a config authored through defineStack(), the shape every real project has (#3887) �[33m 14079�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m serves a config with no application at all �[33m 13889�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m refuses, and names where it looked, when there is no config and no artifact �[33m 10383�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m serves on, and says why, when the config carries an app it cannot register �[33m 14071�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m �[30m�[45m integration �[49m�[39m test/published-entry-stderr-nonblocking.e2e.test.ts �[2m(�[22m�[2m5 tests�[22m�[2m)�[22m�[32m 240�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m �[30m�[45m integration �[49m�[39m test/hook-body-build-reach.e2e.test.ts �[2m(�[22m�[2m7 tests�[22m�[2m)�[22m�[33m 74008�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m the directive reaches nothing; only inference lands (unchanged by the retirement) �[33m 10474�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m and says nothing about it — no warning, no error, exit 0 �[33m 9989�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m the covered route works end to end: an explicit `body.capabilities` survives the build �[33m 10520�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m --strict-body names require(), not the free identifier `__require` �[33m 11007�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m accept behaviour is UNCHANGED: the default build still warn-and-bundles at exit 0 �[33m 10658�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m prints the recorded warning, naming the hook and the forbidden pattern �[33m 10410�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m carries the warnings in --json under `bodyExtractionWarnings` �[33m 10940�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m �[30m�[45m integration �[49m�[39m test/start-port-banner-agreement.e2e.test.ts �[2m(�[22m�[2m3 tests�[22m�[2m)�[22m�[33m 37886�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m an explicit --port beats an inherited $OS_PORT, and the banner agrees �[33m 8938�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m with no --port, an inherited $OS_PORT is still honoured and still agrees �[33m 9132�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m still agrees when the CHILD moves the port under it — the auto-shift case �[33m 19810�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m �[30m�[45m integration �[49m�[39m test/i18n-extract-metadata-forms-flag.e2e.test.ts �[2m(�[22m�[2m4 tests�[22m�[2m)�[22m�[33m 64163�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m honours --no-metadata-forms under --no-objects-only (the reported defect) �[33m 10351�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m keeps the baseline out of the stack module even with --metadata-forms ON �[33m 11073�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m is unchanged under the default --objects-only, in both flag positions �[33m 21115�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m --json mirrors the file set in BOTH flag states �[33m 21617�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m �[30m�[45m integration �[49m�[39m test/i18n-extract-check-hint.e2e.test.ts �[2m(�[22m�[2m6 tests�[22m�[2m)�[22m�[33m 106263�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m echoes this run's own argv with `--check` removed, flag for flag �[33m 10348�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m following the printed command makes the next --check pass (reported invocation) �[33m 32543�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m following the printed command makes the next --check pass (shell-hostile flag value) �[33m 32109�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m removes only the --check token, leaving spelling and order alone �[33m 10068�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m names a drifted bundle outside the cwd by its absolute path �[33m 10431�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m keeps the short relative form for an --out below the cwd �[33m 10755�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m �[30m�[45m integration �[49m�[39m test/build-json-undeclared-key-parity.e2e.test.ts �[2m(�[22m�[2m6 tests�[22m�[2m)�[22m�[33m 85334�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m reports the planted key in the payload, and the stack still builds (exit 0) �[33m 10825�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m carries the SAME undeclared-key set `os validate --json` reports on the same tree �[33m 21620�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m folds them in BESIDE the authoring-rule advisories, in the shape `os validate --json` uses �[33m 10155�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m adds NO new top-level key to the payload — this fills a declared key, it is not a new surface �[33m 10699�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m CONTROL — a clean stack reports no undeclared-key line on either face �[33m 21460�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m leaves the TEXT face saying what it always said �[33m 10563�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m �[30m�[45m integration �[49m�[39m test/serve-organizations-mount-failure.e2e.test.ts �[2m(�[22m�[2m4 tests�[22m�[2m)�[22m�[33m 45344�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m refuses to boot with the ADR-0093 D5 "could not be loaded" diagnosis �[33m 10334�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m boots degraded when the operator explicitly sets OS_ALLOW_DEGRADED_TENANCY=1 �[33m 13904�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m surfaces the plugin's own error verbatim and exits, without the absent-package wording �[33m 10453�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m still exits 1 when OS_ALLOW_DEGRADED_TENANCY=1 is set — the hatch must not swallow a refusal �[33m 10643�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m �[30m�[45m integration �[49m�[39m test/validate-json-warning-parity.e2e.test.ts �[2m(�[22m�[2m3 tests�[22m�[2m)�[22m�[33m 64060�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m bare: all four structural advisories at once (the card's measurement) �[33m 21332�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m mixed: a registry advisory (structured) beside a structural one (string) �[33m 21509�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m control: a config with nothing to warn about is empty on BOTH faces �[33m 21212�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m �[30m�[45m integration �[49m�[39m test/serve-organizations-host-resolution.e2e.test.ts �[2m(�[22m�[2m3 tests�[22m�[2m)�[22m�[33m 35908�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m boots a walled posture with the package installed in the APP, not the framework �[33m 13657�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m still refuses to boot a walled posture when the app does not ship the package �[33m 11260�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m refuses when the package is reachable only through NODE_PATH — the pnpm shim shape (#4719) �[33m 10981�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m �[30m�[45m integration �[49m�[39m test/migrate-unloadable-host-config-exit.e2e.test.ts �[2m(�[22m�[2m9 tests�[22m�[2m)�[22m�[33m 67857�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m �[30m�[45m integration �[49m�[39m test/create-example-retired.e2e.test.ts �[2m(�[22m�[2m11 tests�[22m�[2m)�[22m�[33m 42066�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m �[30m�[45m integration �[49m�[39m test/migrate-exit-code.e2e.test.ts �[2m(�[22m�[2m5 tests�[22m�[2m)�[22m�[33m 44766�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m reports a boot failure as exit 1, not as a clean 0 �[33m 10553�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m �[30m�[45m integration �[49m�[39m test/invocation-loudness.e2e.test.ts �[2m(�[22m�[2m11 tests�[22m�[2m)�[22m�[33m 32833�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m �[30m�[45m integration �[49m�[39m test/qa-empty-glob-exit-code.e2e.test.ts �[2m(�[22m�[2m6 tests�[22m�[2m)�[22m�[33m 31995�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m states the posture in --help �[33m 10484�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m �[30m�[45m integration �[49m�[39m test/validate-top-level-strict.e2e.test.ts �[2m(�[22m�[2m2 tests�[22m�[2m)�[22m�[33m 19702�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m exits non-zero WITHOUT --strict, naming the key and the near-miss �[33m 10923�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m control: the identical stack with the key spelled `flows` exits 0 �[33m 8774�[2mms�[22m�[39m
@objectstack/cli:test: �[32m✓�[39m �[30m�[45m integration �[49m�[39m test/lint-generator-requires-eval.e2e.test.ts �[2m(�[22m�[2m7 tests�[22m�[2m)�[22m�[33m 65696�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m refuses on the human face, naming the flag it requires �[33m 11053�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m the --json face stays a machine face — one JSON document, nothing on stderr �[33m 10504�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m nothing is minted — the payload key set is exactly `error` �[33m 10372�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m is judged on the flag being TYPED, not on the path resolving �[33m 10326�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m `--eval --generator` still loads the generator and runs live �[33m 9853�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m offline `--eval` with no generator is untouched �[33m 7112�[2mms�[22m�[39m
@objectstack/cli:test: �[33m�[2m✓�[22m�[39m a plain project lint is untouched �[33m 6464�[2mms�[22m�[39m
@objectstack/cli:test:
@objectstack/cli:test: �[2m Test Files �[22m �[1m�[32m33 passed�[39m�[22m�[90m (33)�[39m
@objectstack/cli:test: �[2m Tests �[22m �[1m�[32m240 passed�[39m�[22m�[90m (240)�[39m
@objectstack/cli:test: �[2m Start at �[22m 05:41:00
@objectstack/cli:test: �[2m Duration �[22m 646.81s�[2m (transform 9.01s, setup 0ms, import 12.77s, tests 1896.16s, environment 5ms)�[22m
@objectstack/cli:test:
@objectstack/cli:test: JSON report written to /home/runner/work/objectstack/objectstack/packages/cli/.nightly-tiers/vitest-report.json
Tasks: 58 successful, 58 total
Cached: 0 cached, 58 total
Time: 17m8.761s
Summary: /home/runner/work/objectstack/objectstack/.turbo/runs/3JDOjYEZPpvAg8Q70AProKEUBZR.json
Filed by .github/workflows/test-nightly-tiers.yml. Generated by Claude Code
os-nightly-tiers — machine-findable marker for this generated card. ⛔ Do not delete this line: it is how the nightly finds this card instead of filing a new one every night.
nightly-tiers: red on main
Swept 2026-09-12T05:54:11.681Z · run log · commit
8fa3fe63d9e8dbbc507c0735d918c99db41df31d· triggerschedule· tiers job resultfailure.The
e2eandlivetest tiers — the files named*.e2e.test.*and*.live.test.*— run herenightly on
mainunderOS_TEST_TIERS=nightlyand nowhere else (the per-PR and merge-queueTest Core runs under
queue). A red here is a real suite that no pull request will red on;this card is the channel that sees it. Nothing is blocked by it.
⛔ The remedy is never to rename, skip or delete the failing test to make the nightly green.
Reproduce locally with
OS_TEST_TIERS=nightly pnpm --filter <pkg> test, fix what it names, andlet the next nightly refresh this card.
Failing files
packages/cli/test/json-stdout-purity.e2e.test.tsshard-1 — last lines of the test log
shard-2 — last lines of the test log
Filed by
.github/workflows/test-nightly-tiers.yml. Generated by Claude Code