morgana: row 257 slot result on 1261fa2d8 (sage-4159): three files whole 15/29/1 pass, supervisor suite 45/45, mutants M1-M8 all killed by assertion, tree restored; BUILD.md and evidence only
This commit is contained in:
1 parent
fc5f282902
commit
73692e1bb6
3 files changed
+447
No files matched your search
@@ -142,3 +142,25 @@ dependency.
|
|||||||
- The kit is /mnt/storage/scratch/morgana-r257 (slot257.sh, mutate.py). It refuses unless HEAD is the
|
- The kit is /mnt/storage/scratch/morgana-r257 (slot257.sh, mutate.py). It refuses unless HEAD is the
|
||||||
candidate and the tree is clean, and stops after two unexpected failures (mos-0823).
|
candidate and the tree is clean, and stops after two unexpected failures (mos-0823).
|
||||||
- Static checks before the slot: `node --check` on every file, run from `/`. No test has run yet.
|
- Static checks before the slot: `node --check` on every file, run from `/`. No test has run yet.
|
||||||
|
|
||||||
|
## Slot result (sage-4159 CLEAR, 2026-10-24 17:00:27Z to 17:00:30Z, candidate 1261fa2d8)
|
||||||
|
|
||||||
|
Run as `busy.sh && timeout -k 10 1500 slot257.sh` in its own session (setsid). The busy check read
|
||||||
|
CLEAR. The worktree was checked out at 1261fa2d8 with a clean tree. Filbert's approved code is
|
||||||
|
unchanged. The summary is in `gate-run.log` and the per-run node output in `mutants-run.log`.
|
||||||
|
|
||||||
|
| Run | tests | pass | fail | skip | cancelled | todo |
|
||||||
|
|---|---|---|---|---|---|---|
|
||||||
|
| tests/pressure.test.mjs whole | 15 | 15 | 0 | 0 | 0 | 0 |
|
||||||
|
| tests/rules.test.mjs whole | 29 | 29 | 0 | 0 | 0 | 0 |
|
||||||
|
| tests/purity.test.mjs whole | 1 | 1 | 0 | 0 | 0 | 0 |
|
||||||
|
| package suite `node --test tests/` | 45 | 45 | 0 | 0 | 0 | 0 |
|
||||||
|
|
||||||
|
Mutants: 8 of 8 killed. Each one ran only its named test (1 test, rc=1), and each failure was an
|
||||||
|
AssertionError in that test, not a crash: M1 hold edge, M2 early release, M3 memory floor, M4 sample
|
||||||
|
count, M5 stale, M6 effective CPU, M7 critical latch, M8 critical memory edge.
|
||||||
|
|
||||||
|
Restore check: `git checkout -- packages/supervisor` ran after each mutant, and the script found the
|
||||||
|
tree clean every time. At the end HEAD was 1261fa2d8 and `git status --porcelain` was empty. After the
|
||||||
|
run no node, python or bash process had its cwd under the kit or the worktree, and no g257 TMPDIR was
|
||||||
|
left behind. The run reached no scripts/test-*.sh.
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
CLEAR
|
||||||
|
== files 2026-10-24T17:00:27Z
|
||||||
|
file-pressure rc=0 1s ℹ pass 15 ℹ fail 0
|
||||||
|
file-rules rc=0 0s ℹ pass 29 ℹ fail 0
|
||||||
|
file-purity rc=0 0s ℹ pass 1 ℹ fail 0
|
||||||
|
== package suite 2026-10-24T17:00:28Z
|
||||||
|
suite-supervisor rc=0 0s ℹ pass 45 ℹ fail 0
|
||||||
|
== mx 2026-10-24T17:00:28Z (each must fail its named test)
|
||||||
|
M1 applied to rules.mjs
|
||||||
|
mx-M1 rc=1 0s ℹ pass 0 ℹ fail 1
|
||||||
|
mx-M1 KILLED
|
||||||
|
M2 applied to rules.mjs
|
||||||
|
mx-M2 rc=1 0s ℹ pass 0 ℹ fail 1
|
||||||
|
mx-M2 KILLED
|
||||||
|
M3 applied to rules.mjs
|
||||||
|
mx-M3 rc=1 0s ℹ pass 0 ℹ fail 1
|
||||||
|
mx-M3 KILLED
|
||||||
|
M4 applied to rules.mjs
|
||||||
|
mx-M4 rc=1 0s ℹ pass 0 ℹ fail 1
|
||||||
|
mx-M4 KILLED
|
||||||
|
M5 applied to rules.mjs
|
||||||
|
mx-M5 rc=1 0s ℹ pass 0 ℹ fail 1
|
||||||
|
mx-M5 KILLED
|
||||||
|
M6 applied to pressure.mjs
|
||||||
|
mx-M6 rc=1 0s ℹ pass 0 ℹ fail 1
|
||||||
|
mx-M6 KILLED
|
||||||
|
M7 applied to rules.mjs
|
||||||
|
mx-M7 rc=1 0s ℹ pass 0 ℹ fail 1
|
||||||
|
mx-M7 KILLED
|
||||||
|
M8 applied to rules.mjs
|
||||||
|
mx-M8 rc=1 0s ℹ pass 0 ℹ fail 1
|
||||||
|
mx-M8 KILLED
|
||||||
|
restored at 1261fa2d8
|
||||||
|
SLOT257_DONE 2026-10-24T17:00:30Z
|
||||||
@@ -0,0 +1,391 @@
|
|||||||
|
===== file-pressure.log
|
||||||
|
✔ loadavg parses the three loads (1.192277ms)
|
||||||
|
✔ a malformed loadavg throws (0.412303ms)
|
||||||
|
✔ meminfo returns bytes and keeps unitless counts (0.258214ms)
|
||||||
|
✔ meminfo without MemAvailable, with a repeated key or a bad line throws (0.206592ms)
|
||||||
|
✔ PSI parses some and full, and cpu may lack full (0.374747ms)
|
||||||
|
✔ PSI without a full line for memory or io, or with a bad line, throws (0.195229ms)
|
||||||
|
✔ CPU lists count distinct CPUs (0.237299ms)
|
||||||
|
✔ cpu.max gives the quota in CPUs, or null for max (0.23685ms)
|
||||||
|
✔ memory.max, memory.current and memory.events (0.351243ms)
|
||||||
|
✔ vmstat gives swap counters and the host OOM counter (0.234271ms)
|
||||||
|
✔ effective CPUs fall back to the host count with no cgroup input (0.119728ms)
|
||||||
|
✔ effective CPUs take the smallest of host, cpuset and every quota level (0.117052ms)
|
||||||
|
✔ effective memory falls back to the host with no cgroup levels, or only max (0.609639ms)
|
||||||
|
✔ effective memory uses the tightest limited level (0.187466ms)
|
||||||
|
✔ a limited level without memory.current throws (0.096904ms)
|
||||||
|
ℹ tests 15
|
||||||
|
ℹ suites 0
|
||||||
|
ℹ pass 15
|
||||||
|
ℹ fail 0
|
||||||
|
ℹ cancelled 0
|
||||||
|
ℹ skipped 0
|
||||||
|
ℹ todo 0
|
||||||
|
ℹ duration_ms 171.66419
|
||||||
|
===== file-rules.log
|
||||||
|
✔ the first state is held, and healthy samples open it after exactly 30 s (2.048214ms)
|
||||||
|
✔ load holds at 0.80 for 3 samples and not at 0.7999 (1.121376ms)
|
||||||
|
✔ load divides by effective CPUs, fractional ones included (0.360874ms)
|
||||||
|
✔ a gap of more than 6 s resets the consecutive count (0.343221ms)
|
||||||
|
✔ load releases at 0.55 and not at 0.5501 (0.435882ms)
|
||||||
|
✔ a dead-band sample restarts the 30 s release window (0.376884ms)
|
||||||
|
✔ memory holds below the larger floor, on one sample (0.259125ms)
|
||||||
|
✔ on a small limit the 1 GiB floor is the larger one (0.346965ms)
|
||||||
|
✔ memory releases only above the larger release floor (0.906516ms)
|
||||||
|
✔ each PSI hold threshold holds at its value for 3 samples and not just below (0.661209ms)
|
||||||
|
✔ the PSI count runs across resources (0.15624ms)
|
||||||
|
✔ each PSI release threshold blocks at its value and releases just below (0.613751ms)
|
||||||
|
✔ a missing required signal holds at once with health-unknown (0.388768ms)
|
||||||
|
✔ a signal is stale at more than 6 s old and fresh at exactly 6 s (0.446828ms)
|
||||||
|
✔ malformed signal values count as missing (0.787389ms)
|
||||||
|
✔ after health-unknown, recovery waits the full 30 s (0.34472ms)
|
||||||
|
✔ a host that never had PSI skips the PSI rows (0.201995ms)
|
||||||
|
✔ PSI that disappears after it was present holds with health-unknown (0.634442ms)
|
||||||
|
✔ a rise in the OOM kill counter is critical; the first sample is the baseline (0.230518ms)
|
||||||
|
✔ a falling OOM counter resets the baseline with a note, not an event (0.208182ms)
|
||||||
|
✔ memory under 5% and disk under 1 GiB are critical, at their edges (0.800954ms)
|
||||||
|
✔ critical stays until reconciliation, then still waits the 30 s release (0.585483ms)
|
||||||
|
✔ critical reasons accumulate while critical (0.174367ms)
|
||||||
|
✔ a clock that goes backwards holds with health-unknown (0.165886ms)
|
||||||
|
✔ a sample without a numeric time throws (0.515819ms)
|
||||||
|
✔ evaluate doesn't change the state it was given (0.327166ms)
|
||||||
|
✔ resolveRules with no overrides is the D4 table, frozen (0.502534ms)
|
||||||
|
✔ overrides apply in the evaluator (0.291524ms)
|
||||||
|
✔ contradictory or unknown settings refuse (1.168994ms)
|
||||||
|
ℹ tests 29
|
||||||
|
ℹ suites 0
|
||||||
|
ℹ pass 29
|
||||||
|
ℹ fail 0
|
||||||
|
ℹ cancelled 0
|
||||||
|
ℹ skipped 0
|
||||||
|
ℹ todo 0
|
||||||
|
ℹ duration_ms 86.686704
|
||||||
|
===== file-purity.log
|
||||||
|
✔ src reads no file, process, network or clock (1.611513ms)
|
||||||
|
ℹ tests 1
|
||||||
|
ℹ suites 0
|
||||||
|
ℹ pass 1
|
||||||
|
ℹ fail 0
|
||||||
|
ℹ cancelled 0
|
||||||
|
ℹ skipped 0
|
||||||
|
ℹ todo 0
|
||||||
|
ℹ duration_ms 63.38547
|
||||||
|
===== suite-supervisor.log
|
||||||
|
✔ loadavg parses the three loads (1.322312ms)
|
||||||
|
✔ a malformed loadavg throws (0.491714ms)
|
||||||
|
✔ meminfo returns bytes and keeps unitless counts (0.306568ms)
|
||||||
|
✔ meminfo without MemAvailable, with a repeated key or a bad line throws (0.282108ms)
|
||||||
|
✔ PSI parses some and full, and cpu may lack full (0.382364ms)
|
||||||
|
✔ PSI without a full line for memory or io, or with a bad line, throws (0.229427ms)
|
||||||
|
✔ CPU lists count distinct CPUs (0.310693ms)
|
||||||
|
✔ cpu.max gives the quota in CPUs, or null for max (0.258658ms)
|
||||||
|
✔ memory.max, memory.current and memory.events (0.36499ms)
|
||||||
|
✔ vmstat gives swap counters and the host OOM counter (0.27834ms)
|
||||||
|
✔ effective CPUs fall back to the host count with no cgroup input (0.148614ms)
|
||||||
|
✔ effective CPUs take the smallest of host, cpuset and every quota level (0.118641ms)
|
||||||
|
✔ effective memory falls back to the host with no cgroup levels, or only max (0.189321ms)
|
||||||
|
✔ effective memory uses the tightest limited level (0.248126ms)
|
||||||
|
✔ a limited level without memory.current throws (0.174502ms)
|
||||||
|
✔ src reads no file, process, network or clock (1.698537ms)
|
||||||
|
✔ the first state is held, and healthy samples open it after exactly 30 s (2.722678ms)
|
||||||
|
✔ load holds at 0.80 for 3 samples and not at 0.7999 (1.31022ms)
|
||||||
|
✔ load divides by effective CPUs, fractional ones included (0.457608ms)
|
||||||
|
✔ a gap of more than 6 s resets the consecutive count (0.487291ms)
|
||||||
|
✔ load releases at 0.55 and not at 0.5501 (0.471881ms)
|
||||||
|
✔ a dead-band sample restarts the 30 s release window (0.407363ms)
|
||||||
|
✔ memory holds below the larger floor, on one sample (0.311888ms)
|
||||||
|
✔ on a small limit the 1 GiB floor is the larger one (0.337859ms)
|
||||||
|
✔ memory releases only above the larger release floor (0.852137ms)
|
||||||
|
✔ each PSI hold threshold holds at its value for 3 samples and not just below (0.670722ms)
|
||||||
|
✔ the PSI count runs across resources (0.168238ms)
|
||||||
|
✔ each PSI release threshold blocks at its value and releases just below (0.706245ms)
|
||||||
|
✔ a missing required signal holds at once with health-unknown (0.45638ms)
|
||||||
|
✔ a signal is stale at more than 6 s old and fresh at exactly 6 s (0.501209ms)
|
||||||
|
✔ malformed signal values count as missing (0.703616ms)
|
||||||
|
✔ after health-unknown, recovery waits the full 30 s (0.252741ms)
|
||||||
|
✔ a host that never had PSI skips the PSI rows (0.136341ms)
|
||||||
|
✔ PSI that disappears after it was present holds with health-unknown (0.302628ms)
|
||||||
|
✔ a rise in the OOM kill counter is critical; the first sample is the baseline (0.181417ms)
|
||||||
|
✔ a falling OOM counter resets the baseline with a note, not an event (0.166744ms)
|
||||||
|
✔ memory under 5% and disk under 1 GiB are critical, at their edges (0.59429ms)
|
||||||
|
✔ critical stays until reconciliation, then still waits the 30 s release (0.346404ms)
|
||||||
|
✔ critical reasons accumulate while critical (0.111712ms)
|
||||||
|
✔ a clock that goes backwards holds with health-unknown (0.098686ms)
|
||||||
|
✔ a sample without a numeric time throws (0.425754ms)
|
||||||
|
✔ evaluate doesn't change the state it was given (0.239173ms)
|
||||||
|
✔ resolveRules with no overrides is the D4 table, frozen (0.368226ms)
|
||||||
|
✔ overrides apply in the evaluator (0.251687ms)
|
||||||
|
✔ contradictory or unknown settings refuse (0.917827ms)
|
||||||
|
ℹ tests 45
|
||||||
|
ℹ suites 0
|
||||||
|
ℹ pass 45
|
||||||
|
ℹ fail 0
|
||||||
|
ℹ cancelled 0
|
||||||
|
ℹ skipped 0
|
||||||
|
ℹ todo 0
|
||||||
|
ℹ duration_ms 92.173971
|
||||||
|
===== mx-M1.log
|
||||||
|
✖ load holds at 0.80 for 3 samples and not at 0.7999 (2.627622ms)
|
||||||
|
ℹ tests 1
|
||||||
|
ℹ suites 0
|
||||||
|
ℹ pass 0
|
||||||
|
ℹ fail 1
|
||||||
|
ℹ cancelled 0
|
||||||
|
ℹ skipped 0
|
||||||
|
ℹ todo 0
|
||||||
|
ℹ duration_ms 53.826624
|
||||||
|
|
||||||
|
✖ failing tests:
|
||||||
|
|
||||||
|
test at tests/rules.test.mjs:75:1
|
||||||
|
✖ load holds at 0.80 for 3 samples and not at 0.7999 (2.627622ms)
|
||||||
|
AssertionError [ERR_ASSERTION]: Expected values to be strictly deep-equal:
|
||||||
|
+ actual - expected
|
||||||
|
|
||||||
|
[
|
||||||
|
'open',
|
||||||
|
'open',
|
||||||
|
+ 'open'
|
||||||
|
- 'held'
|
||||||
|
]
|
||||||
|
|
||||||
|
at TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/morgana-row257/packages/supervisor/tests/rules.test.mjs:77:10)
|
||||||
|
at Test.runInAsyncScope (node:async_hooks:226:14)
|
||||||
|
at Test.run (node:internal/test_runner/test:1402:25)
|
||||||
|
at Test.start (node:internal/test_runner/test:1262:17)
|
||||||
|
at startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) {
|
||||||
|
generatedMessage: true,
|
||||||
|
code: 'ERR_ASSERTION',
|
||||||
|
actual: [ 'open', 'open', 'open' ],
|
||||||
|
expected: [ 'open', 'open', 'held' ],
|
||||||
|
operator: 'deepStrictEqual',
|
||||||
|
diff: 'simple'
|
||||||
|
}
|
||||||
|
===== mx-M2.log
|
||||||
|
✖ the first state is held, and healthy samples open it after exactly 30 s (1.670671ms)
|
||||||
|
ℹ tests 1
|
||||||
|
ℹ suites 0
|
||||||
|
ℹ pass 0
|
||||||
|
ℹ fail 1
|
||||||
|
ℹ cancelled 0
|
||||||
|
ℹ skipped 0
|
||||||
|
ℹ todo 0
|
||||||
|
ℹ duration_ms 48.463372
|
||||||
|
|
||||||
|
✖ failing tests:
|
||||||
|
|
||||||
|
test at tests/rules.test.mjs:62:1
|
||||||
|
✖ the first state is held, and healthy samples open it after exactly 30 s (1.670671ms)
|
||||||
|
AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:
|
||||||
|
|
||||||
|
'open' !== 'held'
|
||||||
|
|
||||||
|
at TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/morgana-row257/packages/supervisor/tests/rules.test.mjs:65:10)
|
||||||
|
at Test.runInAsyncScope (node:async_hooks:226:14)
|
||||||
|
at Test.run (node:internal/test_runner/test:1402:25)
|
||||||
|
at Test.start (node:internal/test_runner/test:1262:17)
|
||||||
|
at startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) {
|
||||||
|
generatedMessage: true,
|
||||||
|
code: 'ERR_ASSERTION',
|
||||||
|
actual: 'open',
|
||||||
|
expected: 'held',
|
||||||
|
operator: 'strictEqual',
|
||||||
|
diff: 'simple'
|
||||||
|
}
|
||||||
|
===== mx-M3.log
|
||||||
|
✖ memory holds below the larger floor, on one sample (2.628385ms)
|
||||||
|
ℹ tests 1
|
||||||
|
ℹ suites 0
|
||||||
|
ℹ pass 0
|
||||||
|
ℹ fail 1
|
||||||
|
ℹ cancelled 0
|
||||||
|
ℹ skipped 0
|
||||||
|
ℹ todo 0
|
||||||
|
ℹ duration_ms 54.087261
|
||||||
|
|
||||||
|
✖ failing tests:
|
||||||
|
|
||||||
|
test at tests/rules.test.mjs:119:1
|
||||||
|
✖ memory holds below the larger floor, on one sample (2.628385ms)
|
||||||
|
AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:
|
||||||
|
|
||||||
|
'open' !== 'held'
|
||||||
|
|
||||||
|
at TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/morgana-row257/packages/supervisor/tests/rules.test.mjs:125:10)
|
||||||
|
at Test.runInAsyncScope (node:async_hooks:226:14)
|
||||||
|
at Test.run (node:internal/test_runner/test:1402:25)
|
||||||
|
at Test.start (node:internal/test_runner/test:1262:17)
|
||||||
|
at startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) {
|
||||||
|
generatedMessage: true,
|
||||||
|
code: 'ERR_ASSERTION',
|
||||||
|
actual: 'open',
|
||||||
|
expected: 'held',
|
||||||
|
operator: 'strictEqual',
|
||||||
|
diff: 'simple'
|
||||||
|
}
|
||||||
|
===== mx-M4.log
|
||||||
|
✖ load holds at 0.80 for 3 samples and not at 0.7999 (2.72525ms)
|
||||||
|
ℹ tests 1
|
||||||
|
ℹ suites 0
|
||||||
|
ℹ pass 0
|
||||||
|
ℹ fail 1
|
||||||
|
ℹ cancelled 0
|
||||||
|
ℹ skipped 0
|
||||||
|
ℹ todo 0
|
||||||
|
ℹ duration_ms 54.494912
|
||||||
|
|
||||||
|
✖ failing tests:
|
||||||
|
|
||||||
|
test at tests/rules.test.mjs:75:1
|
||||||
|
✖ load holds at 0.80 for 3 samples and not at 0.7999 (2.72525ms)
|
||||||
|
AssertionError [ERR_ASSERTION]: Expected values to be strictly deep-equal:
|
||||||
|
+ actual - expected
|
||||||
|
|
||||||
|
[
|
||||||
|
- 'open',
|
||||||
|
- 'open',
|
||||||
|
'held',
|
||||||
|
+ 'held',
|
||||||
|
+ 'held'
|
||||||
|
]
|
||||||
|
|
||||||
|
at TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/morgana-row257/packages/supervisor/tests/rules.test.mjs:77:10)
|
||||||
|
at Test.runInAsyncScope (node:async_hooks:226:14)
|
||||||
|
at Test.run (node:internal/test_runner/test:1402:25)
|
||||||
|
at Test.start (node:internal/test_runner/test:1262:17)
|
||||||
|
at startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) {
|
||||||
|
generatedMessage: true,
|
||||||
|
code: 'ERR_ASSERTION',
|
||||||
|
actual: [ 'held', 'held', 'held' ],
|
||||||
|
expected: [ 'open', 'open', 'held' ],
|
||||||
|
operator: 'deepStrictEqual',
|
||||||
|
diff: 'simple'
|
||||||
|
}
|
||||||
|
===== mx-M5.log
|
||||||
|
✖ a signal is stale at more than 6 s old and fresh at exactly 6 s (2.946775ms)
|
||||||
|
ℹ tests 1
|
||||||
|
ℹ suites 0
|
||||||
|
ℹ pass 0
|
||||||
|
ℹ fail 1
|
||||||
|
ℹ cancelled 0
|
||||||
|
ℹ skipped 0
|
||||||
|
ℹ todo 0
|
||||||
|
ℹ duration_ms 58.672563
|
||||||
|
|
||||||
|
✖ failing tests:
|
||||||
|
|
||||||
|
test at tests/rules.test.mjs:187:1
|
||||||
|
✖ a signal is stale at more than 6 s old and fresh at exactly 6 s (2.946775ms)
|
||||||
|
AssertionError [ERR_ASSERTION]: Expected values to be strictly deep-equal:
|
||||||
|
+ actual - expected
|
||||||
|
|
||||||
|
+ []
|
||||||
|
- [
|
||||||
|
- 'load'
|
||||||
|
- ]
|
||||||
|
|
||||||
|
at TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/morgana-row257/packages/supervisor/tests/rules.test.mjs:191:10)
|
||||||
|
at Test.runInAsyncScope (node:async_hooks:226:14)
|
||||||
|
at Test.run (node:internal/test_runner/test:1402:25)
|
||||||
|
at Test.start (node:internal/test_runner/test:1262:17)
|
||||||
|
at startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) {
|
||||||
|
generatedMessage: true,
|
||||||
|
code: 'ERR_ASSERTION',
|
||||||
|
actual: [],
|
||||||
|
expected: [ 'load' ],
|
||||||
|
operator: 'deepStrictEqual',
|
||||||
|
diff: 'simple'
|
||||||
|
}
|
||||||
|
===== mx-M6.log
|
||||||
|
✖ effective CPUs take the smallest of host, cpuset and every quota level (1.625079ms)
|
||||||
|
ℹ tests 1
|
||||||
|
ℹ suites 0
|
||||||
|
ℹ pass 0
|
||||||
|
ℹ fail 1
|
||||||
|
ℹ cancelled 0
|
||||||
|
ℹ skipped 0
|
||||||
|
ℹ todo 0
|
||||||
|
ℹ duration_ms 55.012035
|
||||||
|
|
||||||
|
✖ failing tests:
|
||||||
|
|
||||||
|
test at tests/pressure.test.mjs:101:1
|
||||||
|
✖ effective CPUs take the smallest of host, cpuset and every quota level (1.625079ms)
|
||||||
|
AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:
|
||||||
|
|
||||||
|
4 !== 1.5
|
||||||
|
|
||||||
|
at TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/morgana-row257/packages/supervisor/tests/pressure.test.mjs:103:10)
|
||||||
|
at Test.runInAsyncScope (node:async_hooks:226:14)
|
||||||
|
at Test.run (node:internal/test_runner/test:1402:25)
|
||||||
|
at Test.start (node:internal/test_runner/test:1262:17)
|
||||||
|
at startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) {
|
||||||
|
generatedMessage: true,
|
||||||
|
code: 'ERR_ASSERTION',
|
||||||
|
actual: 4,
|
||||||
|
expected: 1.5,
|
||||||
|
operator: 'strictEqual',
|
||||||
|
diff: 'simple'
|
||||||
|
}
|
||||||
|
===== mx-M7.log
|
||||||
|
✖ critical stays until reconciliation, then still waits the 30 s release (4.842568ms)
|
||||||
|
ℹ tests 1
|
||||||
|
ℹ suites 0
|
||||||
|
ℹ pass 0
|
||||||
|
ℹ fail 1
|
||||||
|
ℹ cancelled 0
|
||||||
|
ℹ skipped 0
|
||||||
|
ℹ todo 0
|
||||||
|
ℹ duration_ms 54.317924
|
||||||
|
|
||||||
|
✖ failing tests:
|
||||||
|
|
||||||
|
test at tests/rules.test.mjs:259:1
|
||||||
|
✖ critical stays until reconciliation, then still waits the 30 s release (4.842568ms)
|
||||||
|
AssertionError [ERR_ASSERTION]: The expression evaluated to a falsy value:
|
||||||
|
|
||||||
|
assert.ok(waiting.decisions.every((d) => d.mode === "critical" && d.reasons[0] === "critical-disk"))
|
||||||
|
|
||||||
|
at TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/morgana-row257/packages/supervisor/tests/rules.test.mjs:262:10)
|
||||||
|
at Test.runInAsyncScope (node:async_hooks:226:14)
|
||||||
|
at Test.run (node:internal/test_runner/test:1402:25)
|
||||||
|
at Test.start (node:internal/test_runner/test:1262:17)
|
||||||
|
at startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) {
|
||||||
|
generatedMessage: true,
|
||||||
|
code: 'ERR_ASSERTION',
|
||||||
|
actual: false,
|
||||||
|
expected: true,
|
||||||
|
operator: '==',
|
||||||
|
diff: 'simple'
|
||||||
|
}
|
||||||
|
===== mx-M8.log
|
||||||
|
✖ memory under 5% and disk under 1 GiB are critical, at their edges (3.080014ms)
|
||||||
|
ℹ tests 1
|
||||||
|
ℹ suites 0
|
||||||
|
ℹ pass 0
|
||||||
|
ℹ fail 1
|
||||||
|
ℹ cancelled 0
|
||||||
|
ℹ skipped 0
|
||||||
|
ℹ todo 0
|
||||||
|
ℹ duration_ms 49.440823
|
||||||
|
|
||||||
|
✖ failing tests:
|
||||||
|
|
||||||
|
test at tests/rules.test.mjs:245:1
|
||||||
|
✖ memory under 5% and disk under 1 GiB are critical, at their edges (3.080014ms)
|
||||||
|
AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:
|
||||||
|
|
||||||
|
'critical' !== 'held'
|
||||||
|
|
||||||
|
at TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/morgana-row257/packages/supervisor/tests/rules.test.mjs:253:10)
|
||||||
|
at Test.runInAsyncScope (node:async_hooks:226:14)
|
||||||
|
at Test.run (node:internal/test_runner/test:1402:25)
|
||||||
|
at Test.start (node:internal/test_runner/test:1262:17)
|
||||||
|
at startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) {
|
||||||
|
generatedMessage: true,
|
||||||
|
code: 'ERR_ASSERTION',
|
||||||
|
actual: 'critical',
|
||||||
|
expected: 'held',
|
||||||
|
operator: 'strictEqual',
|
||||||
|
diff: 'simple'
|
||||||
|
}
|
||||||
Reference in new issue
Block a user