docs: record row 324 rebased verification and mutant evidence

This commit is contained in:
jason.woltje committed 2026-10-23 18:44:35 -05:00
1 parent 7e59ba8b3d
commit dbdfcfd52c
10 files changed
+351

No files matched your search

+2
View File
@@ -5437,3 +5437,5 @@ Row 299 (573, #1806, Gander, Filbert): before, the P10 band test timed a fault r
2026-10-23 | Goldie | Row 324 / #1820 before (Q247, mos-1555) | New branch goldie/row324 at row298 approved860afc2b6. Design/readers audit in agents/goldie/work/queue-324/BUILD.md: normalize omitted tracker to null, preserve present validation, guard sync readers/adapter config; runtime/instance-settings/broker checks already optional. Existing business.test.mjs98 explicitly requires tracker, so implementation held for Mos approval of removing that one list entry; no old test or product edit, no tests run.
2026-10-23 | Goldie | Row 324 / #1820 draft built (sage-3836, mos-1556) | Claim rev3759. Omitted tracker normalizes null; present including null/malformed stays validated. Loader, business validate, bootConfig trackerFor and Console sync reader handle absence. Row298's guarded runtime/instance-settings/broker paths preserved. Two new test files (9 planned tests); sole old-test edit drops tracker from required-key list under mos-1556. node --check6/6 and diff check pass. No tests run: untested branch push expressly ordered before CLEAR; Duckworth review and Sage gate pending.
2026-10-23 | Goldie | Row 324 / #1820 rebased verification (sage-3850) | Rebased onto3569bf54f as7e59ba8b3; only append-log conflicts, eight manifest files byte-equal. Serialized timeout-k10 scratch TMPDIR goldieOdgIjr: new business5/5, new CLI4/4 (includes Console absent read), existing business21/21; presence mutant killed, bytes restored, new files rerun5/5 and4/4. No unexpected red. Published rebased branch goldie/row324-r2 preserves original remote draft without force-push. Evidence/mutant diff/reader list in BUILD.md; review/full gate pending.
+30
View File
@@ -58,3 +58,33 @@ No tests run. New node_modules symlink points to canonical checkout dependencies
Static verification: node --check passed for all four edited source modules and both new test files; git diff --check passed. No node --test or shell suite was run. reader-audit.txt captures the requested grep on the draft. MANIFEST.sha256 pins README, four source files, the one existing test and both new tests. mutant.py prepares the required omission-presence mutant and restores/checks bytes in finally; it has not run.
Proposed CLEAR run order: new business optional-tracker.test.mjs whole (5 tests), new cli optional-tracker.test.mjs whole (4 tests), existing business.test.mjs whole, then the targeted presence mutant and restored new tests. Broaden to business/CLI/Console/bus package gates only when Sage assigns that scope/slot. All test runs use timeout -k 10 and an explicitly allocated TMPDIR under /mnt/storage/scratch/tmp.
## Rebased verification — sage-3850 CLEAR
Rebased c4b14952e onto pushed refactor `3569bf54f53870fcd4e92cdbbb95e3412f629f3a` as `7e59ba8b3d6f63c30a0fa308c0607dfc1e47dd12`. The landing range has no changes in this row's business/config/Console source paths. Only BUILD-LOG.md and docs/SESSIONS.md conflicted: retained the entire landed file then appended this row's original suffix. All eight manifest-pinned files remain byte-equal to the draft; range-diff differences are log context only. To obey no-force-push while preserving the published draft, the rebased candidate is published on `goldie/row324-r2`; original remote goldie/row324 remains at c4b14952e.
Scratch TMPDIR was created by `mktemp -d /mnt/storage/scratch/tmp/goldieXXXXXX`: `/mnt/storage/scratch/tmp/goldieOdgIjr`. All runs were serialized, with timeout -k 10 (120s new files/mutant driver, 180s existing whole file). Node v26.8.1. No test used /tmp or a real host configuration/credential.
| Order | Whole file / check | Result | Evidence |
| --- | --- | --- | --- |
| 1 | packages/business/tests/optional-tracker.test.mjs | 5/5 pass, exit0 | test-business-optional.log |
| 2 | packages/cli/tests/optional-tracker.test.mjs | 4/4 pass, exit0 | test-cli-optional.log |
| 3 | packages/business/tests/business.test.mjs | 21/21 pass, exit0 | test-business-existing.log |
| 4 | Presence-check mutant, targeted omission test | 0/1 pass, exit1, killed as expected | mutant.log, mutant-driver.log |
| 5 | Restored new business file whole | 5/5 pass, exit0 | test-business-restored.log |
| 6 | Restored new CLI file whole | 4/4 pass, exit0 | test-cli-restored.log |
No unexpected first-run red or old-test red. The Console absent-tracker read test is the third test in the new CLI file and passed on both whole-file runs. There is no separate edited webui test file; the only test files touched by this row are the three whole files above. Existing fixture preservation is covered by the whole business.test.mjs, including its untouched fixture, role bot, credential, sync bot collision and example checks. Broader package/script gates remain Sage's.
Required mutant diff (business/src/business.mjs:296):
```diff
- const tracker = Object.hasOwn(document, "tracker") ? checkTracker(document.tracker, file) : null;
+ const tracker = checkTracker(document.tracker, file);
```
The new omission test fails with BusinessError `tracker must be a JSON object`. mutant.py restores in finally and checks exact bytes. Restored business.mjs SHA256: `e76db42158f396ec6a44f97320355d6c2254dccb5fc53cd04e8ac42843b0d60a`. Full manifest check passes after restoration. git diff --check passes. The full reader list remains above; reader-audit.txt is its raw grep receipt.
The only pre-existing test delta still is exactly one list entry removed at business.test.mjs:98, under mos-1556: tracker is removed; human/arbiters/projects/roles and the assertion remain. No production/test source changed during verification. Only evidence and append-only log notes follow the tested rebased commit. Slot is returned in the completion report; Duckworth review and Sage's full landing gate remain pending.
Evidence log trailing whitespace is normalized for git diff --check; test results and output content are unchanged.
@@ -0,0 +1,2 @@
presence mutant: exit 1
restored sha256 e76db42158f396ec6a44f97320355d6c2254dccb5fc53cd04e8ac42843b0d60a
+32
View File
@@ -0,0 +1,32 @@
TAP version 13
# Subtest: Q247: omitting tracker loads as null and preserves independent role bots
not ok 1 - Q247: omitting tracker loads as null and preserves independent role bots
---
duration_ms: 4.653674
type: 'test'
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/goldie-row324/packages/business/tests/optional-tracker.test.mjs:21:1'
failureType: 'testCodeFailure'
error: '/mnt/storage/scratch/tmp/goldieOdgIjr/mosaic-business-IHRJco/config/businesses/acme.json tracker must be a JSON object'
code: 'ERR_TEST_FAILURE'
name: 'BusinessError'
stack: |-
refuse (file:///home/jwoltje/.t3/worktrees/mosaic-stack/goldie-row324/packages/business/src/errors.mjs:12:9)
requireObject (file:///home/jwoltje/.t3/worktrees/mosaic-stack/goldie-row324/packages/business/src/util.mjs:11:30)
checkTracker (file:///home/jwoltje/.t3/worktrees/mosaic-stack/goldie-row324/packages/business/src/business.mjs:87:3)
validateBusinessDocument (file:///home/jwoltje/.t3/worktrees/mosaic-stack/goldie-row324/packages/business/src/business.mjs:296:19)
loadBusiness (file:///home/jwoltje/.t3/worktrees/mosaic-stack/goldie-row324/packages/business/src/business.mjs:325:10)
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/goldie-row324/packages/business/tests/optional-tracker.test.mjs:25:13)
Test.runInAsyncScope (node:async_hooks:226:14)
Test.run (node:internal/test_runner/test:1402:25)
Test.start (node:internal/test_runner/test:1262:17)
startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17)
...
1..1
# tests 1
# suites 0
# pass 0
# fail 1
# cancelled 0
# skipped 0
# todo 0
# duration_ms 54.363835
@@ -0,0 +1,136 @@
TAP version 13
# Subtest: C2-04: library mappings load without roots, remain frozen, and retain mapping refusals
ok 1 - C2-04: library mappings load without roots, remain frozen, and retain mapping refusals
---
duration_ms: 10.358877
type: 'test'
...
# Subtest: C2-04: an otherwise valid publish grant cannot name a library repo
ok 2 - C2-04: an otherwise valid publish grant cannot name a library repo
---
duration_ms: 1.405968
type: 'test'
...
# Subtest: config directory and file path follow MOSAIC_CONFIG
ok 3 - config directory and file path follow MOSAIC_CONFIG
---
duration_ms: 0.194682
type: 'test'
...
# Subtest: the fixture business validates and comes back frozen
ok 4 - the fixture business validates and comes back frozen
---
duration_ms: 0.883527
type: 'test'
...
# Subtest: two instances may share a definition
ok 5 - two instances may share a definition
---
duration_ms: 0.869413
type: 'test'
...
# Subtest: top-level refusals
ok 6 - top-level refusals
---
duration_ms: 2.622608
type: 'test'
...
# Subtest: arbiters and projects
ok 7 - arbiters and projects
---
duration_ms: 3.523393
type: 'test'
...
# Subtest: role instances
ok 8 - role instances
---
duration_ms: 2.015683
type: 'test'
...
# Subtest: Vikunja bots
ok 9 - Vikunja bots
---
duration_ms: 4.64219
type: 'test'
...
# Subtest: a role without Vikunja takes no tracker block
ok 10 - a role without Vikunja takes no tracker block
---
duration_ms: 5.70969
type: 'test'
...
# Subtest: credential references match the definition's services
ok 11 - credential references match the definition's services
---
duration_ms: 1.94586
type: 'test'
...
# Subtest: launch
ok 12 - launch
---
duration_ms: 6.957271
type: 'test'
...
# Subtest: REQ-THREAD-2 REQ-LAUNCH-1 launch.threadIdleSeconds: absent is the default, a positive integer is used, anything else refuses
ok 13 - REQ-THREAD-2 REQ-LAUNCH-1 launch.threadIdleSeconds: absent is the default, a positive integer is used, anything else refuses
---
duration_ms: 3.58016
type: 'test'
...
# Subtest: loadBusiness: file checks
ok 14 - loadBusiness: file checks
---
duration_ms: 1.772126
type: 'test'
...
# Subtest: loadBusiness: not a regular file
ok 15 - loadBusiness: not a regular file
---
duration_ms: 40.121918
type: 'test'
...
# Subtest: loading writes nothing
ok 16 - loading writes nothing
---
duration_ms: 1.07771
type: 'test'
...
# Subtest: names that are Object.prototype properties don't count as declared
ok 17 - names that are Object.prototype properties don't count as declared
---
duration_ms: 3.194384
type: 'test'
...
# Subtest: the shipped example refuses as written and validates once filled in
ok 18 - the shipped example refuses as written and validates once filled in
---
duration_ms: 0.919964
type: 'test'
...
# Subtest: persona vars: agent layer, creative definition only, both or neither
ok 19 - persona vars: agent layer, creative definition only, both or neither
---
duration_ms: 7.866405
type: 'test'
...
# Subtest: row 194 keep, noHire and retired validate, and a file without them loads as before
ok 20 - row 194 keep, noHire and retired validate, and a file without them loads as before
---
duration_ms: 1.704708
type: 'test'
...
# Subtest: row 194 each bad keep, noHire or retired entry refuses
ok 21 - row 194 each bad keep, noHire or retired entry refuses
---
duration_ms: 5.095541
type: 'test'
...
1..21
# tests 21
# suites 0
# pass 21
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 159.214713
@@ -0,0 +1,40 @@
TAP version 13
# Subtest: Q247: omitting tracker loads as null and preserves independent role bots
ok 1 - Q247: omitting tracker loads as null and preserves independent role bots
---
duration_ms: 5.298841
type: 'test'
...
# Subtest: Q247: real business validate passes without a sync credential reference or file
ok 2 - Q247: real business validate passes without a sync credential reference or file
---
duration_ms: 71.475563
type: 'test'
...
# Subtest: Q247: present tracker retains its values and validation without mutating the input
ok 3 - Q247: present tracker retains its values and validation without mutating the input
---
duration_ms: 2.384907
type: 'test'
...
# Subtest: Q247: present null, undefined and malformed trackers still refuse
ok 4 - Q247: present null, undefined and malformed trackers still refuse
---
duration_ms: 3.746
type: 'test'
...
# Subtest: Q247: absent business tracker does not waive a role's Vikunja bot requirement
ok 5 - Q247: absent business tracker does not waive a role's Vikunja bot requirement
---
duration_ms: 0.804648
type: 'test'
...
1..5
# tests 5
# suites 0
# pass 5
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 135.467249
@@ -0,0 +1,40 @@
TAP version 13
# Subtest: Q247: omitting tracker loads as null and preserves independent role bots
ok 1 - Q247: omitting tracker loads as null and preserves independent role bots
---
duration_ms: 5.02203
type: 'test'
...
# Subtest: Q247: real business validate passes without a sync credential reference or file
ok 2 - Q247: real business validate passes without a sync credential reference or file
---
duration_ms: 68.916604
type: 'test'
...
# Subtest: Q247: present tracker retains its values and validation without mutating the input
ok 3 - Q247: present tracker retains its values and validation without mutating the input
---
duration_ms: 2.414133
type: 'test'
...
# Subtest: Q247: present null, undefined and malformed trackers still refuse
ok 4 - Q247: present null, undefined and malformed trackers still refuse
---
duration_ms: 3.820979
type: 'test'
...
# Subtest: Q247: absent business tracker does not waive a role's Vikunja bot requirement
ok 5 - Q247: absent business tracker does not waive a role's Vikunja bot requirement
---
duration_ms: 0.873886
type: 'test'
...
1..5
# tests 5
# suites 0
# pass 5
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 135.196828
@@ -0,0 +1,34 @@
TAP version 13
# Subtest: Q247: bootConfig omits tracker setup even with tracker variables left in the business
ok 1 - Q247: bootConfig omits tracker setup even with tracker variables left in the business
---
duration_ms: 5.854825
type: 'test'
...
# Subtest: Q247: trackerless business boots and registers no @sync credential
ok 2 - Q247: trackerless business boots and registers no @sync credential
---
duration_ms: 48.935736
type: 'test'
...
# Subtest: Q247: Console business read works with tracker absent and shows no sync credential
ok 3 - Q247: Console business read works with tracker absent and shows no sync credential
---
duration_ms: 1.663483
type: 'test'
...
# Subtest: Q247: a present tracker with a missing token still refuses bus boot
ok 4 - Q247: a present tracker with a missing token still refuses bus boot
---
duration_ms: 11.355417
type: 'test'
...
1..4
# tests 4
# suites 0
# pass 4
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 226.91643
@@ -0,0 +1,34 @@
TAP version 13
# Subtest: Q247: bootConfig omits tracker setup even with tracker variables left in the business
ok 1 - Q247: bootConfig omits tracker setup even with tracker variables left in the business
---
duration_ms: 5.203349
type: 'test'
...
# Subtest: Q247: trackerless business boots and registers no @sync credential
ok 2 - Q247: trackerless business boots and registers no @sync credential
---
duration_ms: 46.033814
type: 'test'
...
# Subtest: Q247: Console business read works with tracker absent and shows no sync credential
ok 3 - Q247: Console business read works with tracker absent and shows no sync credential
---
duration_ms: 1.547096
type: 'test'
...
# Subtest: Q247: a present tracker with a missing token still refuses bus boot
ok 4 - Q247: a present tracker with a missing token still refuses bus boot
---
duration_ms: 11.051525
type: 'test'
...
1..4
# tests 4
# suites 0
# pass 4
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 195.359585
+1
View File
@@ -1607,3 +1607,4 @@ are never rewritten or removed; corrections are new entries.
2026-10-23T22:48Z | Goldie (a13dd6d5-5e73-4b7d-8318-02abeff24940) | Row 322 / #1818 F8/F9 builder verification | sage-3808 slot: 54/54 across three whole files, new tests first-run/restored2/2, original-N installer and both mutants fail as intended; bytes restored. Candidate ready for goldie/row322 push and Morgana review; no merge/full-gate claim.
2026-10-23T23:15Z | Goldie (a13dd6d5-5e73-4b7d-8318-02abeff24940) | Row 324 / #1820 optional tracker design | New goldie/row324 worktree from approved860afc2b6, pinned brief f375f4e92, complete reader audit/plan. Existing required-key test contradicts Q247; requesting Mos exception before implementation. Tests held until CLEAR; row323 remains deferred until324 lands.
2026-10-23T23:18Z | Goldie (a13dd6d5-5e73-4b7d-8318-02abeff24940) | Row 324 / #1820 untested draft | Claim3759; optional tracker implementation, new loader/CLI/boot/Console tests, complete reader audit and prepared mutant. Mos-1556 permits sole existing required-key-list change. Syntax/diff checks pass; no tests before CLEAR. Untested push authorized sage-3836.
2026-10-23T23:44Z | Goldie (a13dd6d5-5e73-4b7d-8318-02abeff24940) | Row 324 / #1820 verified rebased candidate | sage-3850: rebase onto3569bf54f, only append-log conflicts; 5/5 +4/4 +21/21, mutant killed/restored, new files rerun9/9; no unexpected red. Publishing goldie/row324-r2 avoids force push. Duckworth review and Sage full gate pending.