Files

263 lines
23 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/cli/tests/stack-release.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/Aexva6
begin: {"utc": "2026-10-24T20:23:13.747+00:00", "load1": "4.19"}
launch nice: 19
✔ T1 adopt writes the pointer from the units once; a failing check refuses check-failed (1305.021213ms)
✔ T2 activate installs exactly the pointer's pm, claude and Console flags (1981.808658ms)
▶ T3 a hand-edited unit refuses unit-flags-drift, names the difference and changes nothing
✔ pm (854.421677ms)
✔ claude (890.193771ms)
✔ console (870.320612ms)
✔ T3 a hand-edited unit refuses unit-flags-drift, names the difference and changes nothing (2615.738628ms)
▶ T4 each item 3 refusal changes nothing and logs one line with its code
✔ copy-missing (778.796779ms)
✔ copy-unreachable (740.820486ms)
✔ copy-schema-unknown (775.054724ms)
✔ already-active (795.713594ms)
✔ instance-busy (another business active) (780.468505ms)
✔ instance-busy (this business activating) (794.917459ms)
✔ drop-in-override (802.030911ms)
✔ no-pointer (437.520049ms)
✔ T4 each item 3 refusal changes nothing and logs one line with its code (5906.898299ms)
✔ T5 an activate with no migration stops the Console then the bus, installs, starts the bus then the Console (1958.718319ms)
✔ T6 a migration without --migrate rolls back with migration-needs-flag (1849.476196ms)
✔ T7 --migrate takes the backup before the migration runs (1985.99728ms)
✔ T8 a failed migration restores the backup and keeps the store it replaced (2039.711576ms)
✔ T9 a store outside the target's chain rolls back with store-newer (1898.88745ms)
▶ T10 each gate check failing alone rolls back and puts every file back
✔ units-inactive (5390.43685ms)
✔ bus-status (4562.331686ms)
✔ healthz (5957.519781ms)
✔ copy-check (5107.152189ms)
✔ pm-launch-unconfirmed (5354.877067ms)
✔ T10 each gate check failing alone rolls back and puts every file back (26373.297821ms)
▶ T10b the PM check needs exactly one launched line for a live run of this start
✔ no launched line (5378.284032ms)
✔ two lines (5237.949352ms)
✔ a changed word (5269.514326ms)
✔ run not in launches list (5423.019434ms)
✔ run started before the start (5494.099173ms)
✔ a human launch with no journal line (5255.43664ms)
✔ run for another business (5416.838013ms)
✔ run not live (5405.106472ms)
✔ one well-formed line and a live run pass (2045.374444ms)
✔ T10b the PM check needs exactly one launched line for a live run of this start (44927.279527ms)
✔ T11 a rollback whose gate fails too: rollback-failed, exit 2, both units stopped, no retry (7174.932255ms)
✔ T12 rollback takes the previous copy from the log (3344.941536ms)
✔ T13 a rollback across a migration needs --restore, then restores and goes live (4171.524476ms)
✔ T14 events written after the backup need --events N with the right N (4997.910691ms)
✔ T14b a rollback --restore whose gate fails stops both units and skips item 6 (7462.334058ms)
✔ T14c a rollback without --restore whose gate fails runs item 6 (7754.043518ms)
✔ T15 --plan names the migration and the restore and changes nothing (2961.398117ms)
✔ T26 --plan lists the commits an activate adds, after the migration lines (1735.843322ms)
✔ T27 --plan names each migration step, or says the steps cannot be read (1253.891657ms)
✔ T25 --plan refuses copies-unrelated when neither copy is an ancestor of the other (584.553139ms)
▶ T23 --plan reads the store without changing a file, stopped or held
✔ stopped store (726.102069ms)
✔ held store (727.868655ms)
✔ T23 --plan reads the store without changing a file, stopped or held (1454.560786ms)
✔ T24 business-mismatch and capture-failed refuse with exit 3; a short id is a usage error (1738.504529ms)
✔ T16 status prints the pointer, the log, the check, bus status and drift, and writes nothing (1075.217625ms)
✔ T19 a started line with no final line: status shows it and every changing verb refuses (1553.244623ms)
✔ T20 a held run lock refuses run-locked without a log line; status and --plan still run (1630.528245ms)
✔ T21 a bus unit with no MOSAIC_CLAUDE_BIN: adopt and activate refuse no-claude-pin (1545.284232ms)
▶ T22 the stopped store read: a -wal or -shm refuses store-unclean and is left alone; a clean read adds no file
✔ bus.sqlite-wal (2301.025156ms)
✔ bus.sqlite-shm (2516.927228ms)
✔ clean (2246.38616ms)
✔ T22 the stopped store read: a -wal or -shm refuses store-unclean and is left alone; a clean read adds no file (7065.219491ms)
▶ T28 a unit path, drop-in directory or drop-in file that cannot be read, or a relative unit path, refuses drop-in-override before any stop
✔ unit path (993.326563ms)
✔ drop-in directory (911.862439ms)
✔ drop-in file (831.397494ms)
✔ relative unit path (875.836173ms)
✔ T28 a unit path, drop-in directory or drop-in file that cannot be read, or a relative unit path, refuses drop-in-override before any stop (3613.345732ms)
▶ T29 a bus that stops during the held-store read: --plan says so, rollback --restore refuses restore-mismatch
✔ --plan (932.524984ms)
✔ rollback --restore (2723.021617ms)
✔ T29 a bus that stops during the held-store read: --plan says so, rollback --restore refuses restore-mismatch (3656.08757ms)
✔ T30 a copy check that agrees on another copy fails the gate with copy-check and rolls back (5174.02346ms)
▶ T31 a quoted or escaped Environment= or ExecStart= is unreadable: refusals by name, nothing read from /a
✔ Environment double quotes (1868.945061ms)
✔ Environment single quotes (1821.057733ms)
✔ Environment backslash (1844.558547ms)
✔ ExecStart quotes (1926.910468ms)
✔ Console ExecStart quotes (1906.524227ms)
✔ T31 a quoted or escaped Environment= or ExecStart= is unreadable: refusals by name, nothing read from /a (9369.249876ms)
▶ T32 item 1: --pm-after-harness refuses a target without harness or a file that sets it, and passes without the PM
✔ usage: not with --pm, and only for activate (684.904116ms)
✔ pm-after-harness-target (1052.791079ms)
✔ pm-after-harness-set (1373.971788ms)
✔ a pointer without pm (936.815584ms)
✔ phase 1 installs without --pm, skips pm_launched and writes the pending pointer (2113.560096ms)
✔ T32 item 1: --pm-after-harness refuses a target without harness or a file that sets it, and passes without the PM (6163.167795ms)
▶ T33 item 2: read_pointer takes pmPending only as true beside pm false; a pending pointer refuses activate and shows in status
✔ read_pointer (1619.039574ms)
✔ pm-pending, already-adopted and the status line (3081.39432ms)
✔ T33 item 2: read_pointer takes pmPending only as true beside pm false; a pending pointer refuses activate and shows in status (4701.020145ms)
▶ T34 item 3: pm-on refuses before any stop, passes with the PM, or puts the phase-1 bus back
✔ not-pending (805.646925ms)
✔ harness-unset (2514.410425ms)
✔ a launched line passes: the bus alone restarts with --pm (3581.159615ms)
✔ a failed pm_launched puts the phase-1 unit back: exit 1, still pending (6302.747902ms)
✔ a failed phase-1 gate too: pm-on-down, exit 2, both units stopped (10635.596686ms)
✔ T34 item 3: pm-on refuses before any stop, passes with the PM, or puts the phase-1 bus back (23840.615086ms)
▶ T35 item 4: rollback from pending installs --pm; a plug-in kind the target lacks refuses by name
✔ rollback from pending gates pm_launched on the old copy (3503.508717ms)
✔ after the harness set, rollback refuses until harness is gone (4966.376554ms)
✔ activate names every kind the target lacks (1208.784444ms)
✔ T35 item 4: rollback from pending installs --pm; a plug-in kind the target lacks refuses by name (9679.356469ms)
✔ T36 --plan shows the pending state and lists the row 169 refusals it can see (3549.495638ms)
✔ T37 tester-port activate writes pointer and unit, replaces the port, and supported re-pin and rollback keep it (6826.052767ms)
✔ T38 tester-port rollback to unsupported target drops flag in plan, steps, unit and pointer (3719.213738ms)
✔ T39 tester-port explicit unsupported target reads target copy and refuses before stopping either unit (817.312677ms)
✔ T40 tester-port invalid values refuse exit 4 before stopping, including tunnel and main ports (831.111623ms)
✔ T41 tester-port inherited activate to unsupported target drops it and retains drift refusal and failed-run recovery (8865.445663ms)
✔ T42 tester-port pm-on preserves pointer Console flags (3334.968572ms)
▶ T43 row 180 item 1: runs in one second get distinct activation ids, rollback sets and post-attempt stores
✔ activate then pm-on on the same copy (3367.507602ms)
✔ two restores: an old-form id and a suffixed one, each with its own post-attempt store (6802.847259ms)
✔ adopt takes the next free id too (649.68948ms)
✔ all ten names taken: capture-failed before anything stops, and the log line names no activation (1061.657903ms)
✔ --restore takes an id with or without -1 to -9 and nothing else (1087.464578ms)
✔ T43 row 180 item 1: runs in one second get distinct activation ids, rollback sets and post-attempt stores (12970.303935ms)
▶ T44 row 180 item 2: --plan lists tester-port-invalid and tester-port-target with its other refusals
✔ a bad tester port (2290.548648ms)
✔ without --plan a bad port is usage before any pointer read (499.987574ms)
✔ a target Console without --tester-port (1345.394929ms)
✔ T44 row 180 item 2: --plan lists tester-port-invalid and tester-port-target with its other refusals (4136.807269ms)
▶ T45 row 181 items 2 and 3: the restore guard counts events and every COUNTED table
✔ both modes count events and each listed table, and a table the store lacks counts 0 (1158.071581ms)
✔ one instance_names row and no event refuses before any stop; --events 1 restores (4487.849569ms)
✔ one usage_records row and no event refuses before any stop; --events 1 restores (4470.748072ms)
✔ a listed table that cannot be read refuses restore-mismatch before any stop (2481.60943ms)
✔ the in-run recount counts the listed tables too (3399.541473ms)
✔ T45 row 181 items 2 and 3: the restore guard counts events and every COUNTED table (15998.907772ms)
✔ T46 row 181 item 4: every table in the bus schema is in exactly one of four lists (3.803683ms)
✔ T47 row 185 test 1: a same-schema activate leaves a whole backup and the log line names it (1979.307715ms)
✔ T48 row 185 test 2: a gate failure on a same-schema activate rolls back without a restore (6067.996704ms)
▶ T49 row 185 test 3: a same-schema rollback --restore restores, or refuses rows written after STAMP
✔ no rows after STAMP: restores and goes live (3563.480263ms)
✔ one instance_names row after STAMP refuses post-backup-events; --events 1 restores (3974.007957ms)
✔ T49 row 185 test 3: a same-schema rollback --restore restores, or refuses rows written after STAMP (7538.039216ms)
✔ T50 row 185 test 4: activate --plan prints the backup line and writes nothing (2591.325898ms)
✔ T51 row 185 test 5: an activate with no store file takes no backup (2079.9258ms)
▶ T52 row 186: the activate plan's backup line says what the run will do
✔ same schema (2233.750751ms)
✔ same schema with --migrate (2223.662415ms)
✔ in chain with --migrate (2283.678157ms)
✔ in chain without --migrate (2068.867898ms)
✔ outside the chain (2093.10305ms)
✔ outside the chain with --migrate (2139.786075ms)
✔ T52 row 186: the activate plan's backup line says what the run will do (13044.172778ms)
✔ T178 proxy proof header and path survive re-pin and rollback unchanged in the pointer and unit (3289.19052ms)
✔ T178 proxy proof pair survives a tester-port replacement as well (1989.581468ms)
▶ T53 row 187: activate sets, carries and drops the proof pair
✔ tests 1 and 9: the pair goes after the preview flags, before --send and the kept --tester-port, as the unit renders it; a new pair replaces it (5648.842468ms)
✔ tests 2 and 3: an activate of the live copy writes the pair; a later activate and a rollback carry it (5269.584389ms)
✔ test 2: only a pair change may name the live copy; the log keeps from and to, and rollback still goes to the earlier copy (6905.667602ms)
✔ test 2: a live-copy activate says only the Console flags change, and backs up the stopped store before it installs (4314.919571ms)
✔ test 3: pm-on keeps the pair (3276.07991ms)
✔ test 4: --no-proof drops the pair from the pointer and the unit and says so; with no pair it says so and passes (5904.204409ms)
✔ test 5: each refusal exits 3 before anything stops (3965.523422ms)
✔ tests 5 and 9: --plan lists every proof refusal with the others and writes nothing (897.401149ms)
✔ test 6: usage errors (821.587774ms)
✔ test 7: a rollback to a copy without proof support drops the pair and says so (3609.599316ms)
✔ test 7: an activate to a copy without proof support refuses proof-target without --no-proof and passes with it (4009.935558ms)
✔ T53 row 187: activate sets, carries and drops the proof pair (44625.694153ms)
▶ T54 row 188: a carried pair gets the proof file checks, and a proof file inside the repository refuses
✔ test 1: an activate that carries the pair refuses after chmod 644, in the plan and the run, before anything stops (2446.688111ms)
✔ test 1: an activate that carries the pair refuses after a symlink to a mode-600 file, in the plan and the run, before anything stops (2482.041409ms)
✔ test 1: an activate that carries the pair refuses after removal, in the plan and the run, before anything stops (2588.161885ms)
✔ test 2: a rollback that carries the pair refuses after chmod 644, in the plan and the run, before anything stops (2519.470907ms)
✔ test 3: a proof file inside the repository refuses, in the plan and the run, before anything stops (1072.16824ms)
✔ test 4: a path outside the repository through a directory symlink into it refuses on its realpath (1051.014097ms)
✔ T54 row 188: a carried pair gets the proof file checks, and a proof file inside the repository refuses (12160.807594ms)
▶ T55 row 189: activate --no-send drops --send, and rollback and pm-on carry it off
✔ test 1: a live-copy --no-send drops --send from the pointer and the unit, keeps the rest in order, logs the step and backs up the stopped store (2259.642635ms)
✔ test 2: a plain live-copy activate still refuses already-active, and so does --no-send once --send is gone (3343.91884ms)
✔ test 3: --plan prints one send: line in each case, with the live-copy note on a same-copy run (5041.937663ms)
✔ test 4: after --no-send, a rollback to the earlier copy leaves --send out of the pointer and the unit (3596.269633ms)
✔ test 4: pm-on after --no-send keeps --send off (3333.314366ms)
✔ test 5: --no-send on rollback, pm-on, status, adopt or rehearse is a usage error (720.67796ms)
✔ test 6: with both a pair and --send in the pointer, --no-send and --no-proof each drop what they name and keep the rest (10968.047556ms)
✔ T55 row 189: activate --no-send drops --send, and rollback and pm-on carry it off (29265.29686ms)
▶ T57 row 200: activate --sso, its refusals before any stop, and the rollback to a Console without --sso
✔ item 1: --sso drops the preview set and the pair, puts --sso before --send and the tester port, and the plan names what it drops and carries (4144.072077ms)
✔ item 1: --sso may re-pin the live copy once; later activates carry it; --no-send still drops --send (10107.453196ms)
✔ item 1: --sso with a pair or --no-proof, or on any verb but activate, is a usage error (752.444713ms)
✔ item 2: a target without --sso, a missing or bad console.sso, and each slot problem refuse before any stop (6160.441256ms)
✔ item 3: a config whose console key the target loader refuses stops an activate or a rollback before any stop, naming the first step (4686.242307ms)
✔ row 203: a config whose federation key the target loader refuses stops an activate or a rollback before any stop, naming the first step (4032.454805ms)
✔ item 3: a rollback from --sso to a Console without it takes the flags from the set of the activation onto the copy, past a same-copy re-pin (sage-1389) (12126.954522ms)
✔ item 3: a rollback set that is missing, fails its sums, holds no argv or already ran --sso refuses sso-rollback-flags (4641.43181ms)
✔ round 2 (webby-0028 N1): run through a symlinked repository path, a slot or a proof file inside the repository still refuses (2544.234973ms)
✔ round 2 (webby-0028 N2): a config.json that does not parse stops the run before anything is read or stopped (2240.146674ms)
✔ round 3 (sage-1556): a named instance turns --sso on with its own config, slot and Console unit, and rolls back from its own set (4757.215195ms)
✔ row 238 (#1744): on a named instance the sso-config first step names --instance NAME in both commands (1137.418467ms)
✔ T57 row 200: activate --sso, its refusals before any stop, and the rollback to a Console without --sso (57333.0898ms)
▶ T58 row 273: activate --send and --no-sso
✔ T1: --sso --send turns send on after --sso and before the tester port, and the plan says so (2922.685515ms)
✔ T1: --send beside a carried --sso re-pins the live copy once, and the plan names the carried --sso (4564.738795ms)
✔ T2: --send without --sso, given or carried, refuses before any stop, and --plan lists it (2214.063723ms)
✔ T2 (sage-2315 B1): a rollback from an --sso --send pointer to a Console without --sso ends with neither flag (4268.694092ms)
✔ T2 and T4: --send with --no-send, --no-sso with --sso, --send, a pair or --no-proof, and either flag on another verb, is a usage error (2330.138792ms)
✔ T3: --no-sso on the same copy returns the unit and the pointer to the flags from before --sso, without --send (5625.038909ms)
✔ T3: the set walk passes later re-pins that ran with --sso, and the tester follows the pointer (5560.847509ms)
✔ T3 (sage-2305 a): after --sso, two later re-pins that carry it, then --no-sso restores the flags from before --sso byte for byte (8419.548918ms)
✔ T4 (sage-2305 b): a log in which every set holds a Console with --sso refuses before any unit stops (3963.641971ms)
✔ T4: --no-sso refuses before any stop on a pointer without --sso, a tampered or missing set, a set that ran with --sso, an ok line with no activation, and a log with no set (6149.395328ms)
✔ T58 row 273: activate --send and --no-sso (46020.729753ms)
✔ R1 rehearse passes on the same schema; the scratch root holds its files and the live files stay byte-identical (3458.77861ms)
✔ R2 rehearse runs the migration checks when the schema differs; the live store stays at 3g (3576.149439ms)
✔ R3 a failing migration gives REHEARSAL_FAIL migrate and starts nothing (371.187328ms)
✔ R4 a host that does not start, does not answer status, reports another pid, launches anyway, makes a launches directory or keeps its lock each fails by name (25651.767956ms)
✔ R5 a host that ignores SIGTERM gets SIGKILL and FAIL host-stopped (4453.135149ms)
✔ R6 a Console that does not answer /healthz gives REHEARSAL_FAIL healthz (5661.823175ms)
✔ R7 a host on another copy fails copy-match (5675.461683ms)
✔ R8 a scratch port in use or reserved refuses, and the rehearsal takes no other port (536.106532ms)
✔ R9 mos-0963: a role reference left outside placeholders/, or left on an env variable, fails credential-ref-live before the host starts (800.91623ms)
✔ R10 mos-0962: a scratch business that still sets a tracker fails tracker-configured (389.294822ms)
✔ R11 mos-0961: a scratch config on the live data root or on any root but the scratch one, or a sessions.json naming a running pid, refuses by name (1522.742846ms)
✔ R12 mos-0962: a notifier config with a binding fails notify-off (373.64699ms)
✔ R13 the pre-checks: an old copy, a backup that fails its sums, a missing backup or pointer, and usage (516.24475ms)
✔ R14 a host that writes the live config, the live business file or the backup fails the end check by name (10350.073889ms)
✔ R15 a rehearsal stopped by TERM, INT or HUP fails signal and still stops the host and Console and runs the end checks (10040.389669ms)
✔ row 233: --backup last takes the newest backup the log records; a later line with backup null does not hide it, and the store line names it (3476.770208ms)
✔ row 233: --backup last with no backup in the log, or no log, exits 3 with no-backup and makes no rehearsal directory (209.278877ms)
✔ row 233: --backup last refuses a newest backup that is not an activation id, with exit 1 (121.511846ms)
▶ T56 row 190: named instances side by side on one unit directory, $BIN and set of stand-ins
✔ T-I3 each instance renders its own config, session env and Description, and nothing of another (1609.62252ms)
✔ T-I4 a Console port another installed Console takes refuses port-claimed, and a named instance keeps off the default ports (2122.081567ms)
✔ T-I6 alpha's activate and rollback reach nothing of beta's (4189.660782ms)
✔ T-I6 swapped: beta's reach nothing of alpha's (4136.059924ms)
✔ T-I7 MOSAIC_CONFIG naming alpha's config with no flag refuses instance-root-mismatch and changes nothing (729.953997ms)
✔ T-I9 another instance's bus active refuses nothing; one of this instance's does (6485.314259ms)
✔ T56 row 190: named instances side by side on one unit directory, $BIN and set of stand-ins (19274.139979ms)
✔ row196 explicit socket conversion refuses inherited TCP before stop and rollback disables socket (6254.426968ms)
✔ row196 SSO socket conversion pins pointer and unit argv order without send (2413.23298ms)
▶ row196 interpreter activation checks receipt, identity, plan and startup log
✔ plan and started log preserve the same interpreter JSON (2335.70251ms)
✔ interpreter-receipt-refuse fails at the gate and restores the pointer (3457.512358ms)
✔ interpreter-drift fails at the gate and restores the pointer (3449.980527ms)
✔ missing-verifier refuses before any start or stop (1103.147558ms)
✔ interpreter-unsafe refuses before any start or stop (1122.047271ms)
✔ row196 interpreter activation checks receipt, identity, plan and startup log (11470.083552ms)
▶ row196 rehearsal selects socket only for marked copies and uses scratch dataRoot
✔ socket copy (2438.460635ms)
✔ legacy copy (2454.586459ms)
✔ row196 rehearsal selects socket only for marked copies and uses scratch dataRoot (4893.818199ms)
✔ config-any-key: a non-console target refusal stops activate and rollback before any stop (2942.981853ms)
✔ config-any-key: a pre-270 target refuses each row 270 key on a full activate and rollback, naming the key (4827.444826ms)
✔ config-any-key: accepting loaders run validate with the selected config on activate and rollback (3331.697977ms)
✔ config-any-key: missing-loader copies accept only the four oldest keys (137.670506ms)
✔ config-any-key: missing config passes but malformed JSON refuses without calling the loader (45.7837ms)
ℹ tests 224
ℹ suites 0
ℹ pass 224
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 638805.10408