Unclaimed files left in the canonical checkout. Inventory: canonical-cleanup-inventory.md (commit-as-evidence groups). detect-secrets scan clean on 2026-11-02: hits are sha256 pins, git object ids, test sentinels already in tracked tests and unit-file lines.
164 lines
12 KiB
Plaintext
164 lines
12 KiB
Plaintext
✔ a first launch clones the root at its branch, with the root's path as origin (46.402335ms)
|
||
✔ the clone is not at its place until git clone has finished (30.378869ms)
|
||
✔ a later launch fast-forwards a clean clone after a commit to the root, then finds it current (79.778759ms)
|
||
✔ a clone ahead of the root keeps its commits and counts as current (50.404522ms)
|
||
▶ a dirty clone and one on another branch are fetched, and nothing but refs/remotes moves
|
||
✔ a modified file (57.910668ms)
|
||
✔ an untracked file (59.09627ms)
|
||
✔ a staged file (59.010129ms)
|
||
✔ another branch (58.797002ms)
|
||
✔ a detached HEAD (57.695687ms)
|
||
✔ a dirty clone and one on another branch are fetched, and nothing but refs/remotes moves (294.01783ms)
|
||
✔ a diverged clone gets the fetch into refs/remotes and is kept, not-fast-forward (93.14183ms)
|
||
▶ a clone kept before the branch check, or for a failed status, gets no fetch
|
||
✔ not-a-clone (60.667167ms)
|
||
✔ hooks-present (37.843541ms)
|
||
✔ submodule (38.415573ms)
|
||
✔ config-changed (82.129898ms)
|
||
✔ root-unreadable (44.486316ms)
|
||
✔ root-detached (49.335971ms)
|
||
✔ status-failed, on the root's branch and clean (50.230333ms)
|
||
✔ status-failed, dirty (44.808268ms)
|
||
✔ a clone kept before the branch check, or for a failed status, gets no fetch (409.559046ms)
|
||
✔ a dirty clone whose fetch fails is kept, fetch-failed, exactly as it was (49.748997ms)
|
||
✔ every git call the host makes, for a new clone and an existing one, carries maintenance.auto=false and gc.auto=0 (56.866448ms)
|
||
✔ a clone with loose objects enough for gc --auto gets no maintenance or gc from the fetch and the merge (98.637908ms)
|
||
▶ a clone with user.name or user.email in its config is kept, and git runs nothing in it
|
||
✔ user.name (34.862652ms)
|
||
✔ user.email (35.274434ms)
|
||
✔ a clone with user.name or user.email in its config is kept, and git runs nothing in it (70.748119ms)
|
||
✔ a commit git can't read after the fast-forward is null (59.167263ms)
|
||
✔ a new clone whose commit can't be read refuses the launch and leaves nothing behind (23.690256ms)
|
||
▶ a clone the session rigged is kept, and git runs nothing and writes nothing outside it
|
||
✔ core.fsmonitor (45.97217ms)
|
||
✔ core.hooksPath (46.515621ms)
|
||
✔ a hook file (39.841338ms)
|
||
✔ include.path (39.688277ms)
|
||
✔ includeIf (41.060017ms)
|
||
✔ a filter driver (43.863858ms)
|
||
✔ origin moved (40.279486ms)
|
||
✔ a second origin url (46.014574ms)
|
||
✔ the origin url twice, both the root (44.852984ms)
|
||
✔ an ext:: origin (43.746661ms)
|
||
✔ a branch tracking another remote (40.782323ms)
|
||
✔ a branch merging a tag (41.313221ms)
|
||
✔ a fetch line onto local branches (39.734197ms)
|
||
✔ no origin (47.13466ms)
|
||
✔ a config file over the size cap (44.94032ms)
|
||
✔ config a symlink to /dev/zero (40.11926ms)
|
||
✔ the clone a symlink to the bait (35.988231ms)
|
||
✔ the clone a file (37.305001ms)
|
||
✔ the clone a plain directory (38.024591ms)
|
||
✔ .git a gitdir: file (40.458365ms)
|
||
✔ .git a symlink (39.570204ms)
|
||
✔ .git/logs a symlink (35.692048ms)
|
||
✔ .git/refs/heads a symlink (33.256906ms)
|
||
✔ .git/objects a symlink (34.281105ms)
|
||
✔ a reflog hard-linked to a file outside (34.49633ms)
|
||
✔ HEAD a fifo (31.388304ms)
|
||
✔ a commondir file (32.843239ms)
|
||
✔ an alternates file (36.465546ms)
|
||
✔ a gitlink staged, no .gitmodules (56.037117ms)
|
||
✔ a gitlink and .gitmodules staged (54.361984ms)
|
||
✔ a gitlink to a repository with its own gitlink (61.271925ms)
|
||
✔ a gitlink and .gitmodules committed (56.694202ms)
|
||
✔ a gitlink and submodule.active in config (50.804746ms)
|
||
✔ a .git/modules with no gitlink (40.017018ms)
|
||
✔ a clone the session rigged is kept, and git runs nothing and writes nothing outside it (1439.951004ms)
|
||
▶ a root that can't be cloned refuses with the project id and leaves nothing behind
|
||
✔ missing (14.746425ms)
|
||
✔ not a repository (12.240775ms)
|
||
✔ a plain directory inside another repository (18.803976ms)
|
||
✔ unreadable (12.060169ms)
|
||
✔ on no branch (14.246498ms)
|
||
✔ missing an object (18.355719ms)
|
||
✔ a root that can't be cloned refuses with the project id and leaves nothing behind (91.468955ms)
|
||
✔ a clone whose root is on no branch, or gone, is kept and named (40.067794ms)
|
||
✔ no credential or forge remote of the root reaches a clone (57.255958ms)
|
||
✔ every project in the business file gets its own clone at its own branch (40.233547ms)
|
||
✔ a clone past its time gets SIGTERM and refuses the launch, with nothing left in the workspace (513.548254ms)
|
||
✔ a clone that ignores SIGTERM gets SIGKILL once the grace period is over (1018.575299ms)
|
||
✔ a timeout signals git's process group, so a process git started dies with it (516.707264ms)
|
||
✔ once a signalled git has closed, its group gets SIGKILL, so a process that ignored SIGTERM dies too (514.031957ms)
|
||
✔ rootHits: a top-level file, a new top-level directory, src/ and v1/ are the root; paths under known directories aren't (2.170958ms)
|
||
✔ gateEnv keeps the named variables that are strings and drops everything else (0.213873ms)
|
||
✔ isMosaicStack: a checkout whose HEAD descends from the root commit and has node_modules; nothing else (35.647758ms)
|
||
✔ gateSteps: each package with tests but queue in name order, then each scripts/test-*.sh (2.705074ms)
|
||
✔ runGate: every step passes, each with its own log and a summary line, under the environment it was given (179.273278ms)
|
||
✔ runGate: the first failing step stops the gate and names its log (278.122256ms)
|
||
✔ runGate: an abort stops the running step and everything in its group, and runs nothing after it (186.038628ms)
|
||
✔ the CLI: root-file prints the hits and exits 2, or exits 0; gate exits 0, or 2 with the step and its log; anything else is usage (658.02138ms)
|
||
✔ RUNNER_FILES is exactly what the runner and the harness sources it starts import (2.604687ms)
|
||
✔ sandboxProblem names a missing bwrap and a bwrap that fails (11.623192ms)
|
||
✔ every bind says why; the bundle and session file stay read-only over the run directory (1.6431ms)
|
||
✔ REQ-THREAD-2 a thread store binds its session directory and Claude transcripts, and nothing more (1.126229ms)
|
||
✔ the host's git socket is bound only when given, read-only and before the writable binds (0.850786ms)
|
||
✔ the git identity is the instance's, at <instance>@<business>.mosaic.invalid, and sandboxArgv refuses without it (1.464721ms)
|
||
✔ a confined session's shell reaches its own workspace and run directory and nothing of the founder's or another session's (1976.834349ms)
|
||
✔ a bind that exposes a stand-in, or a missing workspace bind, fails the matching check (2860.245503ms)
|
||
✔ a confined session that runs tester-cli.mjs is refused as tester, and the same shim outside the sandbox binds (271.852007ms)
|
||
✔ resolveSeat: by name under --repo resolves the repo layout (1.647412ms)
|
||
✔ resolveSeat: by path resolves the fleet layout (0.411608ms)
|
||
✔ resolveSeat: refusals for missing dir, missing launch.sh, non-executable launch.sh, invalid name, and unknown layout (0.835922ms)
|
||
✔ tmuxContext: outside tmux, default socket, custom socket, and exec failure (0.748716ms)
|
||
✔ makeRegistration produces a record that validates; each shape violation throws SeatError (0.950241ms)
|
||
✔ writeRegistration/readRegistration: round trip, permissions, absence, and malformed records (1.659253ms)
|
||
✔ updateTask: changes task, taskSetBy and updatedAt only, and refuses appropriately (1.436842ms)
|
||
✔ CLI launch: registers, execs the fake launch script, and passes args through (37.869189ms)
|
||
✔ CLI launch: --harness lands in the record (35.114285ms)
|
||
✔ CLI launch: the launch script's own exit code passes through (32.754743ms)
|
||
✔ CLI launch: relaunching a seat rewrites the one registration record (79.66047ms)
|
||
✔ CLI launch: omitting --task records an empty string, not null (37.37462ms)
|
||
✔ CLI seat task: updates only the task after a launch, and refuses on an unlaunched seat (104.242365ms)
|
||
✔ CLI refusals: no args, unknown flag, missing config, already-registered env, and exec failure (159.438731ms)
|
||
✔ samePath: equal paths, symlinked dirs, distinct dirs, and non-strings (0.475664ms)
|
||
✔ resolveSetBy: explicit --by wins over the environment; absent or empty environment gives unknown; invalid explicit or environment values refuse with exit 4 (0.663758ms)
|
||
✔ 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.831332ms)
|
||
✔ 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 (1.377097ms)
|
||
✔ 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 (314.780322ms)
|
||
✔ REQ-LIMIT-1: family substring matching is no longer exported (0.954208ms)
|
||
✔ sessionEnv passes only the allowlist, the repo's bin on PATH, and the run id (1.042278ms)
|
||
✔ sessionExit gives a runner's signal death back as the signal; a session credential is one whole set of nonempty variables (0.446557ms)
|
||
✔ newRun: short ids, 0700 directories, and a refusal when the socket path won't fit (2.203209ms)
|
||
✔ session file and launch log: 0600, the session file written once (1.26953ms)
|
||
✔ endReason maps the runner's exit codes; a signal is killed (0.141418ms)
|
||
✔ Registry mirrors to sessions.json; readSessions marks live entries; bad files refuse (1.487903ms)
|
||
✔ REQ-THREAD-1 Registry.running keys a thread run by business, instance and thread (2.974463ms)
|
||
✔ REQ-THREAD-2 REQ-LAUNCH-1 threadStore checks both segments before the join and refuses an unsafe directory (2.513191ms)
|
||
✔ stopSession refuses an unknown run, reports a stale one, and won't signal a pid that isn't a runner (2.97558ms)
|
||
✔ a session runs in its sandbox as pid 1 of its namespace, claims, answers, and stops on mosaic stop (347.954438ms)
|
||
✔ workRef and validBranch take only what a ref name can hold (2.221213ms)
|
||
✔ a push lands as the task's work ref, a fast-forward lands after it, and main is the root's (191.879327ms)
|
||
✔ a rewritten branch refuses non-fast-forward and the work ref stays (161.731648ms)
|
||
✔ a branch with no history in common with main refuses unrelated-history (97.090305ms)
|
||
✔ a bundle that needs commits the working repository lacks refuses missing-prerequisite (53.080059ms)
|
||
✔ the root is fetched again before each push and main follows it, so a clone of a newer root pushes (251.034199ms)
|
||
✔ a root moved back after the clone leaves the push's base unknown: missing-prerequisite (169.986321ms)
|
||
✔ a commit with a broken object refuses invalid-bundle, and only because fsck is on (114.42524ms)
|
||
✔ only a v2 bundle with the named branch is read (64.344337ms)
|
||
✔ a branch named main, or named for another task, moves only this task's work ref (131.903949ms)
|
||
✔ a record that throws moves the work ref back, or removes a new one (186.369556ms)
|
||
✔ a work ref that can't go back refuses rollback-failed, naming the ref and the commit (445.77811ms)
|
||
✔ a root that can't be read refuses root-unreadable (36.514022ms)
|
||
✔ a git past its time gets SIGTERM, leaves no ref lock, and the next push lands (2204.096095ms)
|
||
✔ a git that ignores SIGTERM gets SIGKILL once the grace period is over (1035.037248ms)
|
||
✔ a working repository path that isn't a directory refuses (24.020269ms)
|
||
✔ review bundles a pushed commit as refs/mosaic/review, leaving out what the reviewer has (123.312266ms)
|
||
✔ review of a project with no working repository refuses unknown-commit (13.542644ms)
|
||
✔ the runner's git tools hold the host's limits and branch rule (1.265113ms)
|
||
✔ a reseed moves root but leaves a landed main, and main forwards once root contains it (222.404829ms)
|
||
✔ after a landing, a push built on the root still lands and main stays where the landing put it (148.179974ms)
|
||
✔ once the root shares no history with a landed main, a push is checked against main, not the root (215.931602ms)
|
||
✔ a landing squashes the reviewed diff onto main as the bus host and moves main only at finish (119.736558ms)
|
||
✔ a landing refuses ref-moved, base-conflict and root-file before it makes a commit (400.994292ms)
|
||
✔ a landing whose applied diff isn't the reviewed one refuses patch-drift and leaves no worktree (160.480046ms)
|
||
✔ finish refuses base-moved when main moved, and a record that throws moves main back (280.827859ms)
|
||
ℹ tests 150
|
||
ℹ suites 0
|
||
ℹ pass 150
|
||
ℹ fail 0
|
||
ℹ cancelled 0
|
||
ℹ skipped 0
|
||
ℹ todo 0
|
||
ℹ duration_ms 6932.378723
|