README invalid-options cell lists only count, key, text and duplicates; a
non-{key,text} option refuses invalid-request (Sage 28378, Filbert C1 28379).
Broker test pins the option shape cases. m1 and m2 killed; full gate passed
15:53:56-15:59:33Z on BASE 96656dd21.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
133 lines
9.5 KiB
Plaintext
133 lines
9.5 KiB
Plaintext
✔ a first launch clones the root at its branch, with the root's path as origin (31.528412ms)
|
||
✔ the clone is not at its place until git clone has finished (20.188366ms)
|
||
✔ a later launch fast-forwards a clean clone after a commit to the root, then finds it current (63.853535ms)
|
||
✔ a clone ahead of the root keeps its commits and counts as current (41.207111ms)
|
||
▶ a dirty clone, one on another branch and one diverged are kept as they are
|
||
✔ a modified file (64.76877ms)
|
||
✔ an untracked file (35.319808ms)
|
||
✔ a staged file (137.996395ms)
|
||
✔ another branch (44.998877ms)
|
||
✔ a detached HEAD (33.769811ms)
|
||
✔ a diverged branch (47.400922ms)
|
||
✔ a dirty clone, one on another branch and one diverged are kept as they are (365.453067ms)
|
||
▶ a clone with user.name or user.email in its config is kept, and git runs nothing in it
|
||
✔ user.name (28.661009ms)
|
||
✔ user.email (29.153136ms)
|
||
✔ a clone with user.name or user.email in its config is kept, and git runs nothing in it (58.255436ms)
|
||
✔ a commit git can't read after the fast-forward is null (47.339772ms)
|
||
✔ a new clone whose commit can't be read refuses the launch and leaves nothing behind (18.529752ms)
|
||
▶ a clone the session rigged is kept, and git runs nothing and writes nothing outside it
|
||
✔ core.fsmonitor (32.795421ms)
|
||
✔ core.hooksPath (33.175295ms)
|
||
✔ a hook file (30.939737ms)
|
||
✔ include.path (37.074221ms)
|
||
✔ includeIf (33.271559ms)
|
||
✔ a filter driver (31.165688ms)
|
||
✔ origin moved (40.861674ms)
|
||
✔ a second origin url (33.31299ms)
|
||
✔ the origin url twice, both the root (37.339656ms)
|
||
✔ an ext:: origin (34.523568ms)
|
||
✔ a branch tracking another remote (33.801031ms)
|
||
✔ a branch merging a tag (32.899195ms)
|
||
✔ a fetch line onto local branches (32.498253ms)
|
||
✔ no origin (33.031558ms)
|
||
✔ a config file over the size cap (29.999488ms)
|
||
✔ config a symlink to /dev/zero (29.473174ms)
|
||
✔ the clone a symlink to the bait (35.967422ms)
|
||
✔ the clone a file (30.086517ms)
|
||
✔ the clone a plain directory (30.863744ms)
|
||
✔ .git a gitdir: file (31.658053ms)
|
||
✔ .git a symlink (32.811751ms)
|
||
✔ .git/logs a symlink (32.435478ms)
|
||
✔ .git/refs/heads a symlink (28.915777ms)
|
||
✔ .git/objects a symlink (29.582899ms)
|
||
✔ a reflog hard-linked to a file outside (29.791027ms)
|
||
✔ HEAD a fifo (30.731523ms)
|
||
✔ a commondir file (32.586213ms)
|
||
✔ an alternates file (32.013943ms)
|
||
✔ a gitlink staged, no .gitmodules (42.212088ms)
|
||
✔ a gitlink and .gitmodules staged (52.015949ms)
|
||
✔ a gitlink to a repository with its own gitlink (55.023758ms)
|
||
✔ a gitlink and .gitmodules committed (55.956759ms)
|
||
✔ a gitlink and submodule.active in config (49.039218ms)
|
||
✔ a .git/modules with no gitlink (37.81503ms)
|
||
✔ a clone the session rigged is kept, and git runs nothing and writes nothing outside it (1209.991829ms)
|
||
▶ a root that can't be cloned refuses with the project id and leaves nothing behind
|
||
✔ missing (9.753434ms)
|
||
✔ not a repository (9.732615ms)
|
||
✔ a plain directory inside another repository (16.313025ms)
|
||
✔ unreadable (9.626861ms)
|
||
✔ on no branch (11.072652ms)
|
||
✔ missing an object (18.454158ms)
|
||
✔ a root that can't be cloned refuses with the project id and leaves nothing behind (75.740287ms)
|
||
✔ a clone whose root is on no branch, or gone, is kept and named (33.558881ms)
|
||
✔ no credential or forge remote of the root reaches a clone (53.425ms)
|
||
✔ every project in the business file gets its own clone at its own branch (35.301663ms)
|
||
✔ a clone past its time gets SIGTERM and refuses the launch, with nothing left in the workspace (512.501316ms)
|
||
✔ a clone that ignores SIGTERM gets SIGKILL once the grace period is over (1017.061236ms)
|
||
✔ a timeout signals git's process group, so a process git started dies with it (512.803574ms)
|
||
✔ once a signalled git has closed, its group gets SIGKILL, so a process that ignored SIGTERM dies too (512.891074ms)
|
||
✔ RUNNER_FILES is exactly what the runner and the harness sources it starts import (1.538723ms)
|
||
✔ sandboxProblem names a missing bwrap and a bwrap that fails (7.831895ms)
|
||
✔ every bind says why; the bundle and session file stay read-only over the run directory (1.31514ms)
|
||
✔ the host's git socket is bound only when given, read-only and before the writable binds (0.658426ms)
|
||
✔ the git identity is the instance's, at <instance>@<business>.mosaic.invalid, and sandboxArgv refuses without it (1.04553ms)
|
||
✔ a confined session's shell reaches its own workspace and run directory and nothing of the founder's or another session's (1877.789861ms)
|
||
✔ a bind that exposes a stand-in, or a missing workspace bind, fails the matching check (2482.369701ms)
|
||
✔ a confined session that runs tester-cli.mjs is refused as tester, and the same shim outside the sandbox binds (260.732818ms)
|
||
✔ resolveSeat: by name under --repo resolves the repo layout (1.227279ms)
|
||
✔ resolveSeat: by path resolves the fleet layout (0.335102ms)
|
||
✔ resolveSeat: refusals for missing dir, missing launch.sh, non-executable launch.sh, invalid name, and unknown layout (0.71536ms)
|
||
✔ tmuxContext: outside tmux, default socket, custom socket, and exec failure (0.638395ms)
|
||
✔ makeRegistration produces a record that validates; each shape violation throws SeatError (0.789876ms)
|
||
✔ writeRegistration/readRegistration: round trip, permissions, absence, and malformed records (1.272779ms)
|
||
✔ updateTask: changes task, taskSetBy and updatedAt only, and refuses appropriately (1.152335ms)
|
||
✔ CLI launch: registers, execs the fake launch script, and passes args through (28.452855ms)
|
||
✔ CLI launch: --harness lands in the record (29.50702ms)
|
||
✔ CLI launch: the launch script's own exit code passes through (28.028062ms)
|
||
✔ CLI launch: relaunching a seat rewrites the one registration record (55.712682ms)
|
||
✔ CLI launch: omitting --task records an empty string, not null (29.48618ms)
|
||
✔ CLI seat task: updates only the task after a launch, and refuses on an unlaunched seat (82.894805ms)
|
||
✔ CLI refusals: no args, unknown flag, missing config, already-registered env, and exec failure (131.403837ms)
|
||
✔ samePath: equal paths, symlinked dirs, distinct dirs, and non-strings (0.40043ms)
|
||
✔ resolveSetBy: explicit --by wins over the environment; absent or empty environment gives unknown; invalid explicit or environment values refuse with exit 4 (0.540357ms)
|
||
✔ validateRegistration/readRegistration: taskSetBy is optional; a record without it (written before #1511) still loads unchanged; an invalid one is refused; the version does not change (0.685345ms)
|
||
✔ updateTask: records setBy, preserves startedAt and every unrelated field, upgrades an old record in place only when the task is set, and replaces a previous attribution (15.964538ms)
|
||
✔ CLI seat task: --by beats MOSAIC_AGENT_NAME, the environment beats nothing, empty environment is unknown, invalid --by or environment refuses with exit 4 and leaves the record byte for byte (259.31286ms)
|
||
✔ family: exactly one launch.max key in the model name, else null (0.659835ms)
|
||
✔ sessionEnv passes only the allowlist, the repo's bin on PATH, and the run id (0.666467ms)
|
||
✔ sessionExit gives a runner's signal death back as the signal; a session credential is one whole set of nonempty variables (0.247648ms)
|
||
✔ newRun: short ids, 0700 directories, and a refusal when the socket path won't fit (1.425569ms)
|
||
✔ session file and launch log: 0600, the session file written once (1.059556ms)
|
||
✔ endReason maps the runner's exit codes; a signal is killed (0.122519ms)
|
||
✔ Registry mirrors to sessions.json; readSessions marks live entries; bad files refuse (1.221735ms)
|
||
✔ stopSession refuses an unknown run, reports a stale one, and won't signal a pid that isn't a runner (0.995438ms)
|
||
✔ a session runs in its sandbox as pid 1 of its namespace, claims, answers, and stops on mosaic stop (490.025839ms)
|
||
✔ workRef and validBranch take only what a ref name can hold (1.106558ms)
|
||
✔ a push lands as the task's work ref, a fast-forward lands after it, and main is the root's (231.623798ms)
|
||
✔ a rewritten branch refuses non-fast-forward and the work ref stays (262.278444ms)
|
||
✔ a branch with no history in common with main refuses unrelated-history (71.826835ms)
|
||
✔ a bundle that needs commits the working repository lacks refuses missing-prerequisite (41.475226ms)
|
||
✔ main is fetched from the root again before each push, so a clone of a newer root pushes (144.551799ms)
|
||
✔ a root moved back after the clone leaves the push's base unknown: missing-prerequisite (87.995783ms)
|
||
✔ a commit with a broken object refuses invalid-bundle, and only because fsck is on (89.552053ms)
|
||
✔ only a v2 bundle with the named branch is read (48.768739ms)
|
||
✔ a branch named main, or named for another task, moves only this task's work ref (95.4966ms)
|
||
✔ a record that throws moves the work ref back, or removes a new one (161.853772ms)
|
||
✔ a work ref that can't go back refuses rollback-failed, naming the ref and the commit (412.077743ms)
|
||
✔ a root that can't be read refuses root-unreadable (28.418402ms)
|
||
✔ a git past its time gets SIGTERM, leaves no ref lock, and the next push lands (2181.22563ms)
|
||
✔ a git that ignores SIGTERM gets SIGKILL once the grace period is over (1029.279088ms)
|
||
✔ a working repository path that isn't a directory refuses (24.042811ms)
|
||
✔ review bundles a pushed commit as refs/mosaic/review, leaving out what the reviewer has (113.664317ms)
|
||
✔ review of a project with no working repository refuses unknown-commit (12.919641ms)
|
||
✔ the runner's git tools hold the host's limits and branch rule (1.123743ms)
|
||
ℹ tests 120
|
||
ℹ suites 0
|
||
ℹ pass 120
|
||
ℹ fail 0
|
||
ℹ cancelled 0
|
||
ℹ skipped 0
|
||
ℹ todo 0
|
||
ℹ duration_ms 5096.816808
|