Money register contract tests fail in workspace suite #1570

Closed
opened 2026-10-11 03:01:57 +00:00 by kayg · 30 comments
Owner

The required full-workspace cargo test run on job/fix1569 (HEAD 0866ca3b225e1d0964d80dccab14d5dc1b96b69e) completed with exit 101 after the calternal-plugin-money lib tests. The new #1569 server test and all calternal-server tests passed.

Two Money register contract tests failed:

  • routes::register_contract_tests::register_writes_publish_before_reads panicked at crates/plugins/money/src/register_contract_tests.rs:270:17: unrelated row must retain its Index identity.
  • routes::register_contract_tests::register_mark_writes_touch_constant_rows_with_card_history panicked at crates/plugins/money/src/register_contract_tests.rs:1050:13: assertion left == right failed, one row per mark, regardless of history size. The observed trigger log contained many category delete / category insert writes, while the expected log contained eight update entries.

The suite result was:

test result: FAILED. 180 passed; 2 failed; 3 ignored; 0 measured; 0 filtered out; finished in 1193.17s

I did not change either test or Money implementation. Please triage these contract failures; this report does not establish whether they reproduce in isolation or predate this branch.

The required full-workspace `cargo test` run on `job/fix1569` (HEAD `0866ca3b225e1d0964d80dccab14d5dc1b96b69e`) completed with exit 101 after the `calternal-plugin-money` lib tests. The new #1569 server test and all `calternal-server` tests passed. Two Money register contract tests failed: - `routes::register_contract_tests::register_writes_publish_before_reads` panicked at `crates/plugins/money/src/register_contract_tests.rs:270:17`: `unrelated row must retain its Index identity`. - `routes::register_contract_tests::register_mark_writes_touch_constant_rows_with_card_history` panicked at `crates/plugins/money/src/register_contract_tests.rs:1050:13`: assertion `left == right` failed, `one row per mark, regardless of history size`. The observed trigger log contained many `category delete` / `category insert` writes, while the expected log contained eight `update` entries. The suite result was: `test result: FAILED. 180 passed; 2 failed; 3 ignored; 0 measured; 0 filtered out; finished in 1193.17s` I did not change either test or Money implementation. Please triage these contract failures; this report does not establish whether they reproduce in isolation or predate this branch.
Author
Owner

Started fix1570 on branch job/fix1570 at base 0866ca3b22. Read the repository contract, glossary and Money decisions. I will reproduce both scoped-projection failures on the job base and production revision 4ebeba0b8, inspect the publication path, and retain the existing assertions.

Started fix1570 on branch job/fix1570 at base 0866ca3b225e1d0964d80dccab14d5dc1b96b69e. Read the repository contract, glossary and Money decisions. I will reproduce both scoped-projection failures on the job base and production revision 4ebeba0b8, inspect the publication path, and retain the existing assertions.
Author
Owner

Root cause: start_register_build_worker subscribes to the process-global calternal_plugin::event_bus(). Parallel Money fixtures all use User owner and Budget folder Home. review688_file_change_invalidates_retained_numbers and review688_invalid_source_refresh_never_serves_retained_numbers publish Files events on that global bus. Every live fixture receives them; refresh_files_change calls invalidate_folder and then Register::build_for, deleting and inserting unrelated rows and Categories in a separate fixture's Index. A feed-loss/reconciliation event can also invalidate all fixtures.

This subscription and refresh path are also present on production revision 4ebeba0b8, so the mechanism predates merge round 39. The deterministic new regression failed with the old shared sender: a Files event must not reach another test data directory; test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 185 filtered out; finished in 2.16s.

Fix: test-only Files channels belong to each MoneyState, and the two source-adoption tests publish to that fixture's channel. Production still subscribes to the Instance bus. Existing row-identity and eight-update assertions remain unchanged. The requested repeated matrices are running against frozen pre-fix test executables for both revisions; logs include static rebuild-path diagnostics on the job base.

Decision: isolate the test bus at MoneyState rather than alter production invalidation or serialize the whole suite. No product API or arithmetic changes are required.

Root cause: `start_register_build_worker` subscribes to the process-global `calternal_plugin::event_bus()`. Parallel Money fixtures all use User `owner` and Budget folder `Home`. `review688_file_change_invalidates_retained_numbers` and `review688_invalid_source_refresh_never_serves_retained_numbers` publish Files events on that global bus. Every live fixture receives them; `refresh_files_change` calls `invalidate_folder` and then `Register::build_for`, deleting and inserting unrelated rows and Categories in a separate fixture's Index. A feed-loss/reconciliation event can also invalidate all fixtures. This subscription and refresh path are also present on production revision 4ebeba0b8, so the mechanism predates merge round 39. The deterministic new regression failed with the old shared sender: `a Files event must not reach another test data directory`; `test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 185 filtered out; finished in 2.16s`. Fix: test-only Files channels belong to each MoneyState, and the two source-adoption tests publish to that fixture's channel. Production still subscribes to the Instance bus. Existing row-identity and eight-update assertions remain unchanged. The requested repeated matrices are running against frozen pre-fix test executables for both revisions; logs include static rebuild-path diagnostics on the job base. Decision: isolate the test bus at MoneyState rather than alter production invalidation or serialize the whole suite. No product API or arithmetic changes are required.
Author
Owner

Committed test isolation and its deterministic real-Index regression as 9eec9f681. The new regression now passes: test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 185 filtered out; finished in 3.74s. Existing contract expectations were not changed.

Both original tests passed 20/20 alone on base 0866ca3b2. Production repetitions and both parallel/load matrices continue. The required fetch and merge of origin/dev reported Already up to date.

Correction to my previous finding: the second global Files-event publisher is named directory_source_refuses_reads_without_server_failure (not review688_invalid_source_refresh_never_serves_retained_numbers). Its Account/Month directory probes publish the same owner/folder event as the source-change test.

Committed test isolation and its deterministic real-Index regression as 9eec9f681. The new regression now passes: `test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 185 filtered out; finished in 3.74s`. Existing contract expectations were not changed. Both original tests passed 20/20 alone on base 0866ca3b2. Production repetitions and both parallel/load matrices continue. The required fetch and merge of origin/dev reported `Already up to date.` Correction to my previous finding: the second global Files-event publisher is named `directory_source_refuses_reads_without_server_failure` (not `review688_invalid_source_refresh_never_serves_retained_numbers`). Its Account/Month directory probes publish the same owner/folder event as the source-change test.
Author
Owner

Additional product finding: the server bridge in crates/calternal-server/src/wire.rs publishes fs events after adopt_root_change, including source writes made by Money itself. Money's refresh_files_change unconditionally invalidated and rebuilt every matching retained folder. Thus the same identity churn can occur in production after an already committed incremental mutation, not only between parallel fixtures.

I strengthened the original identity contract by delivering that real bridge hint after each mutation. With test isolation already fixed but the old refresh behavior retained, it fails deterministically at the unchanged assertion unrelated row must retain its Index identity: test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 185 filtered out; finished in 6.15s.

The product fix shares intent recovery's source-generation comparison with Files refresh. Under the existing User write lock, a matching published source keeps its rows; changed, missing or invalid sources still repair. The strengthened identity contract now passes: test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 185 filtered out; finished in 6.51s. The eight-update mark contract now delivers the same bridge hint after every mark too; its expected operations remain unchanged.

Cost: one Index metadata lookup plus one fingerprint per source file for an incoming retained-folder hint; no posting parse and no projection row writes when it matches. This check is in the existing bounded background worker, not a request or Home scan. I am extending the existing #688 profile to cover serial and burst self-write hints and count any category/row rebuilds.

The earlier Money/workspace gates were stopped before completion because they tested the isolation-only commit. Their logs are retained; final gates will run against the product fix. The initial web build passed. No push, deploy, remote merge, or macOS VM use.

Additional product finding: the server bridge in `crates/calternal-server/src/wire.rs` publishes `fs` events after `adopt_root_change`, including source writes made by Money itself. Money's `refresh_files_change` unconditionally invalidated and rebuilt every matching retained folder. Thus the same identity churn can occur in production after an already committed incremental mutation, not only between parallel fixtures. I strengthened the original identity contract by delivering that real bridge hint after each mutation. With test isolation already fixed but the old refresh behavior retained, it fails deterministically at the unchanged assertion `unrelated row must retain its Index identity`: `test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 185 filtered out; finished in 6.15s`. The product fix shares intent recovery's source-generation comparison with Files refresh. Under the existing User write lock, a matching published source keeps its rows; changed, missing or invalid sources still repair. The strengthened identity contract now passes: `test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 185 filtered out; finished in 6.51s`. The eight-update mark contract now delivers the same bridge hint after every mark too; its expected operations remain unchanged. Cost: one Index metadata lookup plus one fingerprint per source file for an incoming retained-folder hint; no posting parse and no projection row writes when it matches. This check is in the existing bounded background worker, not a request or Home scan. I am extending the existing #688 profile to cover serial and burst self-write hints and count any category/row rebuilds. The earlier Money/workspace gates were stopped before completion because they tested the isolation-only commit. Their logs are retained; final gates will run against the product fix. The initial web build passed. No push, deploy, remote merge, or macOS VM use.
Author
Owner

Product fix and profile extension committed as c39b170f10 (after isolation commit 9eec9f681). Worktree is clean.

Register contracts, verbatim:
test result: ok. 36 passed; 0 failed; 0 ignored; 0 measured; 150 filtered out; finished in 22.35s
exit=0

Clippy, verbatim:
Finished \dev` profile [unoptimized + debuginfo] target(s) in 7m 18s exit=0`

Both original tests passed 20/20 alone and 20/20 with eight CPU/four bounded IO workers on each pre-fix revision. Both full parallel suites have reproduced the mark-count failure; the job base also reproduced identity churn. Their slow scoped-history replay property test is still running. Final complete Money and workspace gates now test the product fix.

The benchmark has a new MONEY688_PUBLISHED_REFRESH_ONLY=1 path: five serial marks and a four-mark burst, plus restoration, followed by real bridge consumption. SQL probes require eleven row updates and zero row/category inserts or deletes. It records p50/p95, CPU and RSS at 50,000/200,000 rows. The fixed debug server is copied to the perf VM; the run is queued through perf-run, and will be labelled debug, without comparison to release timing budgets. Release compilation/qualification belongs to the merge round under the shared verification policy.

Product fix and profile extension committed as c39b170f10562b53f848ef133c9db978029a0e53 (after isolation commit 9eec9f681). Worktree is clean. Register contracts, verbatim: `test result: ok. 36 passed; 0 failed; 0 ignored; 0 measured; 150 filtered out; finished in 22.35s` `exit=0` Clippy, verbatim: ` Finished \`dev\` profile [unoptimized + debuginfo] target(s) in 7m 18s` `exit=0` Both original tests passed 20/20 alone and 20/20 with eight CPU/four bounded IO workers on each pre-fix revision. Both full parallel suites have reproduced the mark-count failure; the job base also reproduced identity churn. Their slow scoped-history replay property test is still running. Final complete Money and workspace gates now test the product fix. The benchmark has a new `MONEY688_PUBLISHED_REFRESH_ONLY=1` path: five serial marks and a four-mark burst, plus restoration, followed by real bridge consumption. SQL probes require eleven row updates and zero row/category inserts or deletes. It records p50/p95, CPU and RSS at 50,000/200,000 rows. The fixed debug server is copied to the perf VM; the run is queued through `perf-run`, and will be labelled debug, without comparison to release timing budgets. Release compilation/qualification belongs to the merge round under the shared verification policy.
Author
Owner

First completed whole-library/default-thread reproduction: base 0866ca3b2 failed both target contracts (180 passed, 2 failed, 3 ignored; 3022.22 s); production 4ebeba0b8 failed the mark contract while the identity contract passed (3001 s overall). The base failure trace says Files event invalidates and rebuilds retained folder for both contracts. This proves the cross-fixture event defect predates merge round 39.

Both revisions also passed 20/20 isolated repetitions of each target, and 20/20 isolated repetitions of each target under eight CPU plus four bounded IO workers. More full-library repetitions are running. Each library round takes approximately 50 minutes on this shared host, primarily in the existing fixed-seed 256-case scoped replay property test. The requested 20 rounds per revision and load variant cannot finish inside the job four-hour time box; any unfinished counts will be reported explicitly.

First completed whole-library/default-thread reproduction: base 0866ca3b2 failed both target contracts (180 passed, 2 failed, 3 ignored; 3022.22 s); production 4ebeba0b8 failed the mark contract while the identity contract passed (3001 s overall). The base failure trace says `Files event invalidates and rebuilds retained folder` for both contracts. This proves the cross-fixture event defect predates merge round 39. Both revisions also passed 20/20 isolated repetitions of each target, and 20/20 isolated repetitions of each target under eight CPU plus four bounded IO workers. More full-library repetitions are running. Each library round takes approximately 50 minutes on this shared host, primarily in the existing fixed-seed 256-case scoped replay property test. The requested 20 rounds per revision and load variant cannot finish inside the job four-hour time box; any unfinished counts will be reported explicitly.
Author
Owner

The final two-crate gate completed with exit=0. Verbatim output summaries:

test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.14s
test result: ok. 21 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.71s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
test result: ok. 4 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 2.88s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.37s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.41s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 185 filtered out; finished in 33.98s
test result: ok. 183 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 2616.90s
test result: ok. 29 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 5.96s
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
exit=0

The real-server profile completed its 50,000-row fixture under perf-run on the perf VM (load averages 0.23 / 1.46 / 2.41). Eleven accepted setters produced exactly 11 row updates, zero row inserts/deletes and zero Category inserts/deletes after all 11 Files hints were consumed. This validates the production shared event bus, not only the isolated test channel. Serial p50/p95: 1286.5/1536.9 ms; four-request burst: 2529.4/4574.8 ms; server CPU 27.65 s; RSS before/peak 757563392/836206592 bytes. These are explicitly debug-server timings with an SQL counter, not comparable to the release baseline. The 200,000-row fixture is now running. The full workspace gate is still active.

The final two-crate gate completed with exit=0. Verbatim output summaries: ```text test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.14s test result: ok. 21 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.71s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s test result: ok. 4 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 2.88s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.37s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.41s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 185 filtered out; finished in 33.98s test result: ok. 183 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 2616.90s test result: ok. 29 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 5.96s test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s exit=0 ``` The real-server profile completed its 50,000-row fixture under `perf-run` on the perf VM (load averages 0.23 / 1.46 / 2.41). Eleven accepted setters produced exactly 11 row updates, zero row inserts/deletes and zero Category inserts/deletes after all 11 Files hints were consumed. This validates the production shared event bus, not only the isolated test channel. Serial p50/p95: 1286.5/1536.9 ms; four-request burst: 2529.4/4574.8 ms; server CPU 27.65 s; RSS before/peak 757563392/836206592 bytes. These are explicitly debug-server timings with an SQL counter, not comparable to the release baseline. The 200,000-row fixture is now running. The full workspace gate is still active.
Author
Owner

Real-server qualification completed with exit=0 under perf-run. Both 50,000 and 200,000 rows produced exactly 11 row updates, no inserts/deletes, and no Category writes after Files hints converged.

Rows Serial p50/p95 ms Burst p50/p95 ms Server CPU s RSS before/peak bytes
50000 1286.5/1536.9 2529.4/4574.8 27.65 757563392/836206592
200000 4388.8/44172.7 8145.9/16858.2 89.15 1628164096/2600812544

Qualification: perf-vm-debug, SQL write-count probe; load averages inside the lock: [0.23, 1.46, 2.41]. The release baseline docs/perf/baseline.json has cleared-mark p95 299.8 ms at 50k (money688h) and 963.3 ms at 200k (allocator-contained). Those builds, allocator conditions and probe costs differ, so these are not an A/B regression comparison. The 200k 44.2-second outlier remains SLOW-only and needs release qualification in the merge round. No projection-rebuild assertion failed.

Real-server qualification completed with exit=0 under perf-run. Both 50,000 and 200,000 rows produced exactly 11 row updates, no inserts/deletes, and no Category writes after Files hints converged. |Rows|Serial p50/p95 ms|Burst p50/p95 ms|Server CPU s|RSS before/peak bytes| |---:|---:|---:|---:|---:| |50000|1286.5/1536.9|2529.4/4574.8|27.65|757563392/836206592| |200000|4388.8/44172.7|8145.9/16858.2|89.15|1628164096/2600812544| Qualification: perf-vm-debug, SQL write-count probe; load averages inside the lock: [0.23, 1.46, 2.41]. The release baseline docs/perf/baseline.json has cleared-mark p95 299.8 ms at 50k (money688h) and 963.3 ms at 200k (allocator-contained). Those builds, allocator conditions and probe costs differ, so these are not an A/B regression comparison. The 200k 44.2-second outlier remains SLOW-only and needs release qualification in the merge round. No projection-rebuild assertion failed.
Author
Owner

The fixed Money library passed in the full workspace command as well as the focused two-crate command. Workspace output, verbatim:

test result: ok. 183 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 2725.73s

The workspace command is now running later crates. Old base parallel rounds: 0/2 pass for each target. Old production parallel rounds: identity 2/2 pass, mark 0/2 pass. Third rounds are active; whole-library CPU/IO-load rounds will use the remaining job time after these rounds complete. Both revisions already completed all 20 isolated/load repetitions per target.

The fixed Money library passed in the full workspace command as well as the focused two-crate command. Workspace output, verbatim: ```text test result: ok. 183 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 2725.73s ``` The workspace command is now running later crates. Old base parallel rounds: 0/2 pass for each target. Old production parallel rounds: identity 2/2 pass, mark 0/2 pass. Third rounds are active; whole-library CPU/IO-load rounds will use the remaining job time after these rounds complete. Both revisions already completed all 20 isolated/load repetitions per target.
Author
Owner

All required gates passed against head c39b170f10. The one origin/dev fetch/merge was already up to date before final gates. Web frozen install and production build each exit=0. Fmt exit=0; both-crate Clippy exit=0; both-crate tests exit=0; full workspace cargo test exit=0. No workspace failure.

Server output, verbatim:

test result: ok. 277 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 185.05s

Full workspace output summaries, verbatim (including unchanged ignored tests):

test result: ok. 23 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.11s
test result: ok. 141 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 64.54s
test result: ok. 52 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.81s
test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.58s
test result: ok. 141 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 177.41s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.18s
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.31s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.93s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 63.55s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.11s
test result: ok. 15 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.78s
test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.44s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.86s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.62s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 12.04s
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.17s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 40.69s
test result: ok. 15 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.17s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.92s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 21.76s
test result: ok. 63 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.88s
test result: ok. 40 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.15s
test result: ok. 40 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.03s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.32s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.15s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.26s
test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.53s
test result: ok. 22 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 1.56s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.08s
test result: ok. 43 passed; 0 failed; 5 ignored; 0 measured; 0 filtered out; finished in 50.77s
test result: ok. 107 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 20.48s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.18s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.22s
test result: ok. 54 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 412.99s
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.82s
test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
test result: ok. 11 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
test result: ok. 30 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.18s
test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.11s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 11 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.55s
test result: ok. 24 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.16s
test result: ok. 21 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.23s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
test result: ok. 4 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 3.27s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.91s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.41s
test result: ok. 589 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.56s
test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 19 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.59s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.46s
test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 63 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 10.07s
test result: ok. 24 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.99s
test result: ok. 34 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.02s
test result: ok. 106 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 14.32s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.55s
test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.14s
test result: ok. 281 passed; 0 failed; 4 ignored; 0 measured; 0 filtered out; finished in 198.88s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 8 filtered out; finished in 0.03s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 8 filtered out; finished in 0.04s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 8 filtered out; finished in 0.03s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 8 filtered out; finished in 0.16s
test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.00s
test result: ok. 172 passed; 0 failed; 10 ignored; 0 measured; 0 filtered out; finished in 50.99s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 185 filtered out; finished in 33.70s
test result: ok. 183 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 2725.73s
test result: ok. 29 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 10.86s
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.66s
test result: ok. 326 passed; 0 failed; 5 ignored; 0 measured; 0 filtered out; finished in 258.85s
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.33s
test result: ok. 45 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.37s
test result: ok. 60 passed; 0 failed; 4 ignored; 0 measured; 0 filtered out; finished in 7.19s
test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.29s
test result: ok. 61 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 23.30s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.77s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.19s
test result: ok. 29 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 441.99s
test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
test result: ok. 1 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 5.16s
test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 277 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 185.05s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 29.84s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.64s
test result: ok. 72 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.00s
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 72 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 61.84s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
exit=0

Third old-revision parallel rounds are still active. Complete-library CPU/IO-load rounds will follow within the four-hour job time box; the requested 20 rounds cannot all fit because each complete library round takes 43–50 minutes here.

All required gates passed against head c39b170f10562b53f848ef133c9db978029a0e53. The one origin/dev fetch/merge was already up to date before final gates. Web frozen install and production build each exit=0. Fmt exit=0; both-crate Clippy exit=0; both-crate tests exit=0; full workspace cargo test exit=0. No workspace failure. Server output, verbatim: ```text test result: ok. 277 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 185.05s ``` Full workspace output summaries, verbatim (including unchanged ignored tests): ```text test result: ok. 23 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.11s test result: ok. 141 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 64.54s test result: ok. 52 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.81s test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.58s test result: ok. 141 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 177.41s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.18s test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.31s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.93s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 63.55s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.11s test result: ok. 15 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.78s test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.44s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.86s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.62s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 12.04s test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.17s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 40.69s test result: ok. 15 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.17s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.92s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 21.76s test result: ok. 63 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.88s test result: ok. 40 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.15s test result: ok. 40 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.03s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.32s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.15s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.26s test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.53s test result: ok. 22 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 1.56s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.08s test result: ok. 43 passed; 0 failed; 5 ignored; 0 measured; 0 filtered out; finished in 50.77s test result: ok. 107 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 20.48s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.18s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.22s test result: ok. 54 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 412.99s test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.82s test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s test result: ok. 11 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s test result: ok. 30 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.18s test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.11s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 11 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.55s test result: ok. 24 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.16s test result: ok. 21 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.23s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s test result: ok. 4 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 3.27s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.91s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.41s test result: ok. 589 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.56s test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 19 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.59s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.46s test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 63 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 10.07s test result: ok. 24 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.99s test result: ok. 34 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.02s test result: ok. 106 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 14.32s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.55s test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.14s test result: ok. 281 passed; 0 failed; 4 ignored; 0 measured; 0 filtered out; finished in 198.88s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 8 filtered out; finished in 0.03s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 8 filtered out; finished in 0.04s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 8 filtered out; finished in 0.03s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 8 filtered out; finished in 0.16s test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.00s test result: ok. 172 passed; 0 failed; 10 ignored; 0 measured; 0 filtered out; finished in 50.99s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 185 filtered out; finished in 33.70s test result: ok. 183 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 2725.73s test result: ok. 29 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 10.86s test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.66s test result: ok. 326 passed; 0 failed; 5 ignored; 0 measured; 0 filtered out; finished in 258.85s test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.33s test result: ok. 45 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.37s test result: ok. 60 passed; 0 failed; 4 ignored; 0 measured; 0 filtered out; finished in 7.19s test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.29s test result: ok. 61 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 23.30s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.77s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.19s test result: ok. 29 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 441.99s test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s test result: ok. 1 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 5.16s test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 277 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 185.05s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 29.84s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.64s test result: ok. 72 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.00s test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 72 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 61.84s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s exit=0 ``` Third old-revision parallel rounds are still active. Complete-library CPU/IO-load rounds will follow within the four-hour job time box; the requested 20 rounds cannot all fit because each complete library round takes 43–50 minutes here.
Author
Owner

Final review found a performance defect in the first retention guard: a Money-folder hint made one source-receipt query per retained Budget. Fixed in atomic commit 1bf626d208. The worker now checks retained existence, takes the User lock, and reads all affected folder/signature receipts in one Index snapshot. Source comparison is synchronous and reused by recovery. The existence precheck keeps unrelated User roots from creating route state. No dependency, schema, route or assertion changed.

The identity contract now forces both whole-Money and normal file hints after every mutation. Focused regression output, verbatim:

test result: ok. 36 passed; 0 failed; 0 ignored; 0 measured; 150 filtered out; finished in 33.65s
exit=0

Fmt exit=0. Both-crate Clippy output, verbatim:

    Checking calternal-plugin-money v0.0.1 (/home/kayg/Developer/calternal-wt/fix1570/crates/plugins/money)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 15.53s
exit=0

The two-crate and workspace tests are running again because this final Rust change came after the first successful gates. The previous successful workspace and two-crate logs are retained as before-batch evidence, not claimed as final-head results. The new server build will refresh the real-server profile at final head. Corrected cost: at most two Index reads per hint (existence and one batched receipt snapshot), then one fingerprint per source file; no per-Budget query and no posting parse for a retained source.

Final review found a performance defect in the first retention guard: a Money-folder hint made one source-receipt query per retained Budget. Fixed in atomic commit 1bf626d208cf75d5e32012b23f07dd439c8a79aa. The worker now checks retained existence, takes the User lock, and reads all affected folder/signature receipts in one Index snapshot. Source comparison is synchronous and reused by recovery. The existence precheck keeps unrelated User roots from creating route state. No dependency, schema, route or assertion changed. The identity contract now forces both whole-Money and normal file hints after every mutation. Focused regression output, verbatim: ```text test result: ok. 36 passed; 0 failed; 0 ignored; 0 measured; 150 filtered out; finished in 33.65s exit=0 ``` Fmt exit=0. Both-crate Clippy output, verbatim: ```text Checking calternal-plugin-money v0.0.1 (/home/kayg/Developer/calternal-wt/fix1570/crates/plugins/money) Finished `dev` profile [unoptimized + debuginfo] target(s) in 15.53s exit=0 ``` The two-crate and workspace tests are running again because this final Rust change came after the first successful gates. The previous successful workspace and two-crate logs are retained as before-batch evidence, not claimed as final-head results. The new server build will refresh the real-server profile at final head. Corrected cost: at most two Index reads per hint (existence and one batched receipt snapshot), then one fingerprint per source file; no per-Budget query and no posting parse for a retained source.
Author
Owner

Final-head (1bf626d208) two-crate gate passed. Verbatim output:

test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s
test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.76s
test result: ok. 21 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.53s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
test result: ok. 4 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 3.25s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.13s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.50s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 185 filtered out; finished in 38.80s
test result: ok. 183 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 2019.80s
test result: ok. 29 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 7.36s
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.92s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
exit=0

The full workspace gate is still active with no failure lines. The refreshed final-head profile waits for the perf VM; another 55-minute holder acquired it before this queued call. The successful c39b170f1 real-server profile remains valid evidence of the scoped fix, but will not be mislabeled as final-head timing. The job will stay within four hours and report any missing qualification.

Final-head (1bf626d208cf75d5e32012b23f07dd439c8a79aa) two-crate gate passed. Verbatim output: ```text test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.76s test result: ok. 21 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.53s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s test result: ok. 4 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 3.25s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.13s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.50s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 185 filtered out; finished in 38.80s test result: ok. 183 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 2019.80s test result: ok. 29 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 7.36s test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.92s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s exit=0 ``` The full workspace gate is still active with no failure lines. The refreshed final-head profile waits for the perf VM; another 55-minute holder acquired it before this queued call. The successful c39b170f1 real-server profile remains valid evidence of the scoped fix, but will not be mislabeled as final-head timing. The job will stay within four hours and report any missing qualification.
Author
Owner

Final-head workspace gate passed at 1bf626d208. Output summaries, verbatim:

test result: ok. 23 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.12s
test result: ok. 141 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 56.60s
test result: ok. 52 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.79s
test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.73s
test result: ok. 141 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 184.92s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.31s
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.05s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.56s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 55.20s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.41s
test result: ok. 15 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.29s
test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.15s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.93s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.09s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 13.82s
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.91s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 46.60s
test result: ok. 15 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.24s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.38s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 23.02s
test result: ok. 63 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.60s
test result: ok. 40 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.10s
test result: ok. 40 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.97s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.21s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.20s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.27s
test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.72s
test result: ok. 22 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.99s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.08s
test result: ok. 43 passed; 0 failed; 5 ignored; 0 measured; 0 filtered out; finished in 40.44s
test result: ok. 107 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 15.22s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.11s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.79s
test result: ok. 54 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 267.63s
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.80s
test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 11 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 30 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.14s
test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 11 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.48s
test result: ok. 24 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.07s
test result: ok. 21 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.72s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
test result: ok. 4 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 2.62s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.61s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.36s
test result: ok. 589 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.46s
test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 19 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.17s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.47s
test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 63 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 10.08s
test result: ok. 24 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.43s
test result: ok. 34 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.31s
test result: ok. 106 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 12.01s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.59s
test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.15s
test result: ok. 281 passed; 0 failed; 4 ignored; 0 measured; 0 filtered out; finished in 171.09s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 8 filtered out; finished in 0.03s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 8 filtered out; finished in 0.03s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 8 filtered out; finished in 0.03s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 8 filtered out; finished in 0.19s
test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.13s
test result: ok. 172 passed; 0 failed; 10 ignored; 0 measured; 0 filtered out; finished in 22.85s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 185 filtered out; finished in 30.64s
test result: ok. 183 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 1286.59s
test result: ok. 29 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 6.35s
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.68s
test result: ok. 326 passed; 0 failed; 5 ignored; 0 measured; 0 filtered out; finished in 136.52s
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.87s
test result: ok. 45 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.20s
test result: ok. 60 passed; 0 failed; 4 ignored; 0 measured; 0 filtered out; finished in 4.79s
test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.13s
test result: ok. 61 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 11.73s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.69s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
test result: ok. 29 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 178.63s
test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 1 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 2.27s
test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 277 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 107.11s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 29.56s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.14s
test result: ok. 72 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.09s
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 72 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 46.24s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
exit=0

Both old revisions now completed three whole-library default-thread rounds: base identity 0/3 pass and mark 0/3 pass; production identity 3/3 pass and mark 0/3 pass. These match the prior diagnosis. Full-library load runs have now started with one shared pool of eight CPU and four IO workers. They will stop at the four-hour job limit. The final-head real-server profile is still queued for the perf VM; no timing is collected without the lock.

Final-head workspace gate passed at 1bf626d208cf75d5e32012b23f07dd439c8a79aa. Output summaries, verbatim: ```text test result: ok. 23 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.12s test result: ok. 141 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 56.60s test result: ok. 52 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.79s test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.73s test result: ok. 141 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 184.92s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.31s test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.05s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.56s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 55.20s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.41s test result: ok. 15 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.29s test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.15s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.93s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.09s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 13.82s test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.91s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 46.60s test result: ok. 15 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.24s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.38s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 23.02s test result: ok. 63 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.60s test result: ok. 40 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.10s test result: ok. 40 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.97s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.21s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.20s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.27s test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.72s test result: ok. 22 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.99s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.08s test result: ok. 43 passed; 0 failed; 5 ignored; 0 measured; 0 filtered out; finished in 40.44s test result: ok. 107 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 15.22s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.11s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.79s test result: ok. 54 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 267.63s test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.80s test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 11 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 30 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.14s test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 11 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.48s test result: ok. 24 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.07s test result: ok. 21 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.72s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s test result: ok. 4 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 2.62s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.61s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.36s test result: ok. 589 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.46s test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 19 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.17s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.47s test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 63 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 10.08s test result: ok. 24 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.43s test result: ok. 34 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.31s test result: ok. 106 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 12.01s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.59s test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.15s test result: ok. 281 passed; 0 failed; 4 ignored; 0 measured; 0 filtered out; finished in 171.09s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 8 filtered out; finished in 0.03s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 8 filtered out; finished in 0.03s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 8 filtered out; finished in 0.03s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 8 filtered out; finished in 0.19s test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.13s test result: ok. 172 passed; 0 failed; 10 ignored; 0 measured; 0 filtered out; finished in 22.85s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 185 filtered out; finished in 30.64s test result: ok. 183 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 1286.59s test result: ok. 29 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 6.35s test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.68s test result: ok. 326 passed; 0 failed; 5 ignored; 0 measured; 0 filtered out; finished in 136.52s test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.87s test result: ok. 45 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.20s test result: ok. 60 passed; 0 failed; 4 ignored; 0 measured; 0 filtered out; finished in 4.79s test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.13s test result: ok. 61 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 11.73s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.69s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s test result: ok. 29 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 178.63s test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 1 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 2.27s test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 277 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 107.11s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 29.56s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.14s test result: ok. 72 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.09s test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 72 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 46.24s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s exit=0 ``` Both old revisions now completed three whole-library default-thread rounds: base identity 0/3 pass and mark 0/3 pass; production identity 3/3 pass and mark 0/3 pass. These match the prior diagnosis. Full-library load runs have now started with one shared pool of eight CPU and four IO workers. They will stop at the four-hour job limit. The final-head real-server profile is still queued for the perf VM; no timing is collected without the lock.
Author
Owner

Final-head real-server profile passed at 1bf626d208 (exit=0). Both fixtures: exactly 11 row updates and zero row inserts/deletes or Category inserts/deletes. Current-source hints retained the scoped projection through the production shared bus.

Rows Serial p50/p95 ms Four-request burst p50/p95 ms Server CPU s RSS before/peak bytes
50000 1347.9/1512.9 2256/4237.3 27.13 806744064/920244224
200000 5727.1/50268.4 11866.5/23235.3 112.22 1634304000/2556575744

Measured under perf-run, load averages [2.72, 2.35, 2.29]. Debug server plus SQL write-counter qualification; release baseline cleared-mark p95 is 299.8 ms at 50k and 963.3 ms at allocator-contained 200k. This is not a comparable A/B timing result. The final 200k serial p95 outlier is 50.3 s, SLOW-only; no projection-rebuild assertion failed. The combined release build must qualify it in the merge round. The helper was built on this host and staged to the VM for this final run.

Final-head real-server profile passed at 1bf626d208cf75d5e32012b23f07dd439c8a79aa (exit=0). Both fixtures: exactly 11 row updates and zero row inserts/deletes or Category inserts/deletes. Current-source hints retained the scoped projection through the production shared bus. |Rows|Serial p50/p95 ms|Four-request burst p50/p95 ms|Server CPU s|RSS before/peak bytes| |---:|---:|---:|---:|---:| |50000|1347.9/1512.9|2256/4237.3|27.13|806744064/920244224| |200000|5727.1/50268.4|11866.5/23235.3|112.22|1634304000/2556575744| Measured under perf-run, load averages [2.72, 2.35, 2.29]. Debug server plus SQL write-counter qualification; release baseline cleared-mark p95 is 299.8 ms at 50k and 963.3 ms at allocator-contained 200k. This is not a comparable A/B timing result. The final 200k serial p95 outlier is 50.3 s, SLOW-only; no projection-rebuild assertion failed. The combined release build must qualify it in the merge round. The helper was built on this host and staged to the VM for this final run.
Author
Owner

NOT READY — the required 20-round whole-library repetition matrix is incomplete within the four-hour job limit. The fix, final-head gates and real-server projection qualification are complete.

Head: 1bf626d208. Branch: job/fix1570. Base: 0866ca3b22. Production comparison: detached 4ebeba0b8e. One origin/dev fetch/merge before final gates: already up to date. No push, deploy, remote merge, issue close or macOS VM use.

Built:

  • 9eec9f681: isolated unit-fixture Files channels so identical User/Budget IDs cannot invalidate another data directory.
  • c39b170f1: retained published register generations when the real server Files bridge announces Money's own source writes. The previous worker rebuilt them after successful scoped publication.
  • 1bf626d20: batched folder-generation receipts after the User lock. A whole-Money hint now uses two Index reads total, not one extra query per Budget. Recovery and Files hints reuse one fingerprint comparison.

Files: crates/plugins/money/src/routes.rs; crates/plugins/money/src/register.rs; crates/plugins/money/src/register_contract_tests.rs; bench/money-register-688.mjs. No dependency, lockfile, migration, API shape or UI control changed. Final doc comments were re-read in all four files.

Root cause and regression proof:

  • The original fixtures shared the global Instance bus. Both source-adoption publishers use owner/Money/Home, so one test caused another fixture to invalidate and rebuild its Index. This predates merge round 39. Failure diagnostics show the Files invalidation/rebuild path, not a time threshold or SQLite fallback.
  • The production server also publishes fs hints for Money's own writes. A forced own-write hint fails the unchanged unrelated-row identity assertion before the product fix, even with test channels isolated; it passes afterward.
  • The new channel-isolation regression fails with the old shared sender. It verifies real external-source adoption in A and untouched Index identities in B, including reconciliation isolation.
  • All 36 register contracts pass. Existing expected statuses and assertions are unchanged. The identity contract now forces both file and whole-Money hints; the mark contract delivers the same server bridge hint after every mark at both history sizes. Genuine edited, deleted and invalid sources still repair or refuse stale numbers.

Reproduction counts (frozen executables compiled from each revision; --exact for isolated runs, default threads for libraries; CARGO_BUILD_JOBS=4):

Revision Isolated identity Isolated mark Isolated identity under 8 CPU/4 IO Isolated mark under 8 CPU/4 IO Whole-library identity Whole-library mark
0866ca3b2 20 pass / 0 fail 20 / 0 20 / 0 20 / 0 0 pass / 3 fail 0 / 3
4ebeba0b8 20 / 0 20 / 0 20 / 0 20 / 0 3 / 0 0 / 3

Default-thread library rounds took 43–50 minutes each. Production's first round also hit the existing card property request timeout (SLOW-only); later production rounds failed only the target mark contract. No test count, timeout or assertion was weakened. Complete-library load counts will be added below after the time box.

Performance, final head, real local server on the perf VM through perf-run (exit=0). Load averages inside the lock: [2.72, 2.35, 2.29]. A synthetic SQL counter adds one small counter update per projection write. Every fixture has exactly 11 row updates and zero row inserts/deletes or Category inserts/deletes after source hints converge. Five serial setters plus restoration, then four concurrent setters plus restoration.

Rows Serial p50/p95 ms Burst p50/p95 ms Server CPU s RSS before/peak bytes Release baseline mark p95 ms
50000 1347.9/1512.9 2256/4237.3 27.13 806744064/920244224 299.8
200000 5727.1/50268.4 11866.5/23235.3 112.22 1634304000/2556575744 963.3

Qualification is perf-vm-debug with an SQL write probe. The baseline in docs/perf/baseline.json uses release builds and different probe/allocator conditions; these are not comparable A/B regression timings. The 200k serial p95 outlier (50.3 seconds) is SLOW-only and needs release qualification. The projection write counts passed throughout.

Decisions:

  • Keep production on the shared Instance bus; give only unit-fixture Instances a private Files feed with the same bounded capacity.
  • Use the existing recovery source-fingerprint comparison, rather than change the Files event protocol to carry origin flags.
  • Query existence before creating route state, then take the User lock and batch fresh receipts. This avoids unrelated User roots and prevents stale receipt reads while a Money writer publishes. Expected retained-hint cost: two Index reads plus source files × one fingerprint, with no posting parse or projection writes. Marks retain one scoped row/Account update and their existing one-Month parse cost.

Known gaps:

  • Seventeen of the requested twenty default-thread library rounds per revision remain. Whole-library load completion counts are below; unfinished rounds are not called passes. The deterministic regressions and successful final-head suites cover the real causes.
  • Release timing qualification remains for the merge round; the debug 200k outlier is not hidden or used to claim a speedup.
  • Media runtime setup failed before server startup on the perf VM because the FFmpeg alternatives copy targeted the same BLAS file through a symlink. Filed #1571. The first harness setup also compiled its C dropcaps helper there, contrary to the no-build rule. The final run staged the helper built locally. No Rust build ran on the VM. All private VM runtime, server, source and copied frontend files were removed after the run; no own server/browser remained.

For the merge round: qualify the combined release binary with perf-run calternal fix1570-release 20 -- env MONEY688_PUBLISHED_REFRESH_ONLY=1 MONEY688_ROWS=50000,200000 CALTERNAL_SERVER_BIN=<combined release binary> CALTERNAL_E2E_MEDIA_RUNTIME=<supplied native runtime> bun bench/money-register-688.mjs. It must retain exactly one row update per setter, zero row/Category rebuild writes, and measure the 200k latency outlier in the release build. Complete the missing repetition matrix if required.

Final-head gate output, verbatim:

cargo fmt --check

exit=0

cargo clippy -p calternal-money -p calternal-plugin-money --all-targets -- -D warnings

    Checking calternal-plugin-money v0.0.1 (/home/kayg/Developer/calternal-wt/fix1570/crates/plugins/money)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 15.53s
exit=0

cargo test -p calternal-money -p calternal-plugin-money

test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s
test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.76s
test result: ok. 21 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.53s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
test result: ok. 4 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 3.25s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.13s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.50s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 185 filtered out; finished in 38.80s
test result: ok. 183 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 2019.80s
test result: ok. 29 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 7.36s
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.92s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
exit=0

cargo test (full workspace)

test result: ok. 23 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.12s
test result: ok. 141 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 56.60s
test result: ok. 52 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.79s
test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.73s
test result: ok. 141 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 184.92s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.31s
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.05s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.56s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 55.20s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.41s
test result: ok. 15 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.29s
test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.15s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.93s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.09s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 13.82s
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.91s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 46.60s
test result: ok. 15 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.24s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.38s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 23.02s
test result: ok. 63 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.60s
test result: ok. 40 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.10s
test result: ok. 40 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.97s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.21s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.20s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.27s
test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.72s
test result: ok. 22 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.99s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.08s
test result: ok. 43 passed; 0 failed; 5 ignored; 0 measured; 0 filtered out; finished in 40.44s
test result: ok. 107 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 15.22s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.11s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.79s
test result: ok. 54 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 267.63s
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.80s
test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 11 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 30 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.14s
test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 11 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.48s
test result: ok. 24 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.07s
test result: ok. 21 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.72s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
test result: ok. 4 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 2.62s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.61s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.36s
test result: ok. 589 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.46s
test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 19 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.17s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.47s
test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 63 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 10.08s
test result: ok. 24 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.43s
test result: ok. 34 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.31s
test result: ok. 106 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 12.01s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.59s
test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.15s
test result: ok. 281 passed; 0 failed; 4 ignored; 0 measured; 0 filtered out; finished in 171.09s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 8 filtered out; finished in 0.03s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 8 filtered out; finished in 0.03s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 8 filtered out; finished in 0.03s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 8 filtered out; finished in 0.19s
test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.13s
test result: ok. 172 passed; 0 failed; 10 ignored; 0 measured; 0 filtered out; finished in 22.85s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 185 filtered out; finished in 30.64s
test result: ok. 183 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 1286.59s
test result: ok. 29 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 6.35s
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.68s
test result: ok. 326 passed; 0 failed; 5 ignored; 0 measured; 0 filtered out; finished in 136.52s
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.87s
test result: ok. 45 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.20s
test result: ok. 60 passed; 0 failed; 4 ignored; 0 measured; 0 filtered out; finished in 4.79s
test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.13s
test result: ok. 61 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 11.73s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.69s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
test result: ok. 29 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 178.63s
test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 1 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 2.27s
test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 277 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 107.11s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 29.56s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.14s
test result: ok. 72 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.09s
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 72 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 46.24s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
exit=0

Web prerequisite: bun install --frozen-lockfile and bun run --cwd apps/web build each completed with the literal final output exit=0. No web source changed. The focused register-contract output is recorded in artifacts/batched-contracts.log.

Time-box result: complete-library load runs stopped after approximately 45 minutes with 0 complete rounds per revision. The target tests had finished: base identity FAIL / mark FAIL; production identity PASS / mark FAIL. Both full suites were still in their existing long property tests, so their totals are incomplete. No additional non-SLOW failed test was recorded. All 20 whole-library load rounds and 17 default-thread rounds per revision remain.

Cleanup: stopped the 16-process owned load tree (including eight CPU and four IO workers), removed the production detached worktree, removed web build output and named ignored test/runtime binaries and temp data. A generated production proptest timeout seed file was copied into artifacts before restoring that detached baseline file for removal. Cargo cleanup output, verbatim:

     Removed 16475 files, 26.2GiB total
exit=0

Both sets of private perf VM files and copied frontend paths were removed; no own server/browser remained and the perf lock was released. Worktree is clean. Logs and JSON evidence remain in ignored artifacts.

NOT READY — required repetition matrix incomplete; final-head code, gates and real-server projection checks passed.

NOT READY — the required 20-round whole-library repetition matrix is incomplete within the four-hour job limit. The fix, final-head gates and real-server projection qualification are complete. Head: 1bf626d208cf75d5e32012b23f07dd439c8a79aa. Branch: job/fix1570. Base: 0866ca3b225e1d0964d80dccab14d5dc1b96b69e. Production comparison: detached 4ebeba0b8e13b06223bc2b24ee7a398a0933bda0. One origin/dev fetch/merge before final gates: already up to date. No push, deploy, remote merge, issue close or macOS VM use. Built: - 9eec9f681: isolated unit-fixture Files channels so identical User/Budget IDs cannot invalidate another data directory. - c39b170f1: retained published register generations when the real server Files bridge announces Money's own source writes. The previous worker rebuilt them after successful scoped publication. - 1bf626d20: batched folder-generation receipts after the User lock. A whole-Money hint now uses two Index reads total, not one extra query per Budget. Recovery and Files hints reuse one fingerprint comparison. Files: crates/plugins/money/src/routes.rs; crates/plugins/money/src/register.rs; crates/plugins/money/src/register_contract_tests.rs; bench/money-register-688.mjs. No dependency, lockfile, migration, API shape or UI control changed. Final doc comments were re-read in all four files. Root cause and regression proof: - The original fixtures shared the global Instance bus. Both source-adoption publishers use owner/Money/Home, so one test caused another fixture to invalidate and rebuild its Index. This predates merge round 39. Failure diagnostics show the Files invalidation/rebuild path, not a time threshold or SQLite fallback. - The production server also publishes fs hints for Money's own writes. A forced own-write hint fails the unchanged unrelated-row identity assertion before the product fix, even with test channels isolated; it passes afterward. - The new channel-isolation regression fails with the old shared sender. It verifies real external-source adoption in A and untouched Index identities in B, including reconciliation isolation. - All 36 register contracts pass. Existing expected statuses and assertions are unchanged. The identity contract now forces both file and whole-Money hints; the mark contract delivers the same server bridge hint after every mark at both history sizes. Genuine edited, deleted and invalid sources still repair or refuse stale numbers. Reproduction counts (frozen executables compiled from each revision; --exact for isolated runs, default threads for libraries; CARGO_BUILD_JOBS=4): |Revision|Isolated identity|Isolated mark|Isolated identity under 8 CPU/4 IO|Isolated mark under 8 CPU/4 IO|Whole-library identity|Whole-library mark| |---|---|---|---|---|---|---| |0866ca3b2|20 pass / 0 fail|20 / 0|20 / 0|20 / 0|0 pass / 3 fail|0 / 3| |4ebeba0b8|20 / 0|20 / 0|20 / 0|20 / 0|3 / 0|0 / 3| Default-thread library rounds took 43–50 minutes each. Production's first round also hit the existing card property request timeout (SLOW-only); later production rounds failed only the target mark contract. No test count, timeout or assertion was weakened. Complete-library load counts will be added below after the time box. Performance, final head, real local server on the perf VM through perf-run (exit=0). Load averages inside the lock: [2.72, 2.35, 2.29]. A synthetic SQL counter adds one small counter update per projection write. Every fixture has exactly 11 row updates and zero row inserts/deletes or Category inserts/deletes after source hints converge. Five serial setters plus restoration, then four concurrent setters plus restoration. |Rows|Serial p50/p95 ms|Burst p50/p95 ms|Server CPU s|RSS before/peak bytes|Release baseline mark p95 ms| |---:|---:|---:|---:|---:|---:| |50000|1347.9/1512.9|2256/4237.3|27.13|806744064/920244224|299.8| |200000|5727.1/50268.4|11866.5/23235.3|112.22|1634304000/2556575744|963.3| Qualification is perf-vm-debug with an SQL write probe. The baseline in docs/perf/baseline.json uses release builds and different probe/allocator conditions; these are not comparable A/B regression timings. The 200k serial p95 outlier (50.3 seconds) is SLOW-only and needs release qualification. The projection write counts passed throughout. Decisions: - Keep production on the shared Instance bus; give only unit-fixture Instances a private Files feed with the same bounded capacity. - Use the existing recovery source-fingerprint comparison, rather than change the Files event protocol to carry origin flags. - Query existence before creating route state, then take the User lock and batch fresh receipts. This avoids unrelated User roots and prevents stale receipt reads while a Money writer publishes. Expected retained-hint cost: two Index reads plus source files × one fingerprint, with no posting parse or projection writes. Marks retain one scoped row/Account update and their existing one-Month parse cost. Known gaps: - Seventeen of the requested twenty default-thread library rounds per revision remain. Whole-library load completion counts are below; unfinished rounds are not called passes. The deterministic regressions and successful final-head suites cover the real causes. - Release timing qualification remains for the merge round; the debug 200k outlier is not hidden or used to claim a speedup. - Media runtime setup failed before server startup on the perf VM because the FFmpeg alternatives copy targeted the same BLAS file through a symlink. Filed #1571. The first harness setup also compiled its C dropcaps helper there, contrary to the no-build rule. The final run staged the helper built locally. No Rust build ran on the VM. All private VM runtime, server, source and copied frontend files were removed after the run; no own server/browser remained. For the merge round: qualify the combined release binary with `perf-run calternal fix1570-release 20 -- env MONEY688_PUBLISHED_REFRESH_ONLY=1 MONEY688_ROWS=50000,200000 CALTERNAL_SERVER_BIN=<combined release binary> CALTERNAL_E2E_MEDIA_RUNTIME=<supplied native runtime> bun bench/money-register-688.mjs`. It must retain exactly one row update per setter, zero row/Category rebuild writes, and measure the 200k latency outlier in the release build. Complete the missing repetition matrix if required. Final-head gate output, verbatim: cargo fmt --check ```text exit=0 ``` cargo clippy -p calternal-money -p calternal-plugin-money --all-targets -- -D warnings ```text Checking calternal-plugin-money v0.0.1 (/home/kayg/Developer/calternal-wt/fix1570/crates/plugins/money) Finished `dev` profile [unoptimized + debuginfo] target(s) in 15.53s exit=0 ``` cargo test -p calternal-money -p calternal-plugin-money ```text test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.76s test result: ok. 21 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.53s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s test result: ok. 4 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 3.25s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.13s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.50s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 185 filtered out; finished in 38.80s test result: ok. 183 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 2019.80s test result: ok. 29 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 7.36s test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.92s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s exit=0 ``` cargo test (full workspace) ```text test result: ok. 23 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.12s test result: ok. 141 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 56.60s test result: ok. 52 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.79s test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.73s test result: ok. 141 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 184.92s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.31s test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.05s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.56s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 55.20s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.41s test result: ok. 15 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.29s test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.15s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.93s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.09s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 13.82s test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.91s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 46.60s test result: ok. 15 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.24s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.38s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 23.02s test result: ok. 63 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.60s test result: ok. 40 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.10s test result: ok. 40 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.97s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.21s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.20s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.27s test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.72s test result: ok. 22 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.99s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.08s test result: ok. 43 passed; 0 failed; 5 ignored; 0 measured; 0 filtered out; finished in 40.44s test result: ok. 107 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 15.22s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.11s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.79s test result: ok. 54 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 267.63s test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.80s test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 11 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 30 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.14s test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 11 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.48s test result: ok. 24 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.07s test result: ok. 21 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.72s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s test result: ok. 4 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 2.62s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.61s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.36s test result: ok. 589 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.46s test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 19 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.17s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.47s test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 63 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 10.08s test result: ok. 24 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.43s test result: ok. 34 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.31s test result: ok. 106 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 12.01s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.59s test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.15s test result: ok. 281 passed; 0 failed; 4 ignored; 0 measured; 0 filtered out; finished in 171.09s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 8 filtered out; finished in 0.03s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 8 filtered out; finished in 0.03s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 8 filtered out; finished in 0.03s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 8 filtered out; finished in 0.19s test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.13s test result: ok. 172 passed; 0 failed; 10 ignored; 0 measured; 0 filtered out; finished in 22.85s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 185 filtered out; finished in 30.64s test result: ok. 183 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 1286.59s test result: ok. 29 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 6.35s test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.68s test result: ok. 326 passed; 0 failed; 5 ignored; 0 measured; 0 filtered out; finished in 136.52s test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.87s test result: ok. 45 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.20s test result: ok. 60 passed; 0 failed; 4 ignored; 0 measured; 0 filtered out; finished in 4.79s test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.13s test result: ok. 61 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 11.73s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.69s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s test result: ok. 29 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 178.63s test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 1 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 2.27s test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 277 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 107.11s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 29.56s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.14s test result: ok. 72 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.09s test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 72 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 46.24s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s exit=0 ``` Web prerequisite: `bun install --frozen-lockfile` and `bun run --cwd apps/web build` each completed with the literal final output `exit=0`. No web source changed. The focused register-contract output is recorded in artifacts/batched-contracts.log. Time-box result: complete-library load runs stopped after approximately 45 minutes with 0 complete rounds per revision. The target tests had finished: base identity FAIL / mark FAIL; production identity PASS / mark FAIL. Both full suites were still in their existing long property tests, so their totals are incomplete. No additional non-SLOW failed test was recorded. All 20 whole-library load rounds and 17 default-thread rounds per revision remain. Cleanup: stopped the 16-process owned load tree (including eight CPU and four IO workers), removed the production detached worktree, removed web build output and named ignored test/runtime binaries and temp data. A generated production proptest timeout seed file was copied into artifacts before restoring that detached baseline file for removal. Cargo cleanup output, verbatim: ```text Removed 16475 files, 26.2GiB total exit=0 ``` Both sets of private perf VM files and copied frontend paths were removed; no own server/browser remained and the perf lock was released. Worktree is clean. Logs and JSON evidence remain in ignored artifacts. NOT READY — required repetition matrix incomplete; final-head code, gates and real-server projection checks passed.
Author
Owner

Independent review started in rev1570 at detached HEAD 1bf626d20 (base 0866ca3b2). Scope: number correctness and data safety of the three Money commits. Read-only product review; only a failing regression test for a confirmed defect will be committed. No merge or push.

Independent review started in rev1570 at detached HEAD 1bf626d20 (base 0866ca3b2). Scope: number correctness and data safety of the three Money commits. Read-only product review; only a failing regression test for a confirmed defect will be committed. No merge or push.
Author
Owner

Independent review finding: the source receipt hashes file names plus device/inode/size/mtime, but not content or ctime (store.rs:677-689; the new retain check is register.rs:135-145). A private source inode edited in place with unchanged size and restored mtime has an identical receipt. After synchronous Files hint processing completes, a fresh MoneyIndex and full recomputation disagree with retained Account summaries, register rows, and funding totals: accounts_match=false, rows_match=false, funding_totals_match=false. Source bytes remain intact.

This first probe requires an out-of-process writer to restore write permission on the read-only source. Normal atomic replacements with preserved size/mtime are distinguished by inode and passed. The metadata-only parser and recovery checks predate this branch. I am now testing inode reuse with calternal-fs-only delete/purge/sync-upload operations to determine whether the collision also reaches normal server writes.

Eight fixed-seed generated hint schedules passed, including concurrent Money marks, delayed/coalesced hints, two Budgets, two Users with identical Budget IDs, interrupted source publication, invalid source, Month rename/delete/restore, and fresh full-replay comparisons. Product code is unchanged.

Independent review finding: the source receipt hashes file names plus device/inode/size/mtime, but not content or ctime (`store.rs:677-689`; the new retain check is `register.rs:135-145`). A private source inode edited in place with unchanged size and restored mtime has an identical receipt. After synchronous Files hint processing completes, a fresh MoneyIndex and full recomputation disagree with retained Account summaries, register rows, and funding totals: `accounts_match=false, rows_match=false, funding_totals_match=false`. Source bytes remain intact. This first probe requires an out-of-process writer to restore write permission on the read-only source. Normal atomic replacements with preserved size/mtime are distinguished by inode and passed. The metadata-only parser and recovery checks predate this branch. I am now testing inode reuse with calternal-fs-only delete/purge/sync-upload operations to determine whether the collision also reaches normal server writes. Eight fixed-seed generated hint schedules passed, including concurrent Money marks, delayed/coalesced hints, two Budgets, two Users with identical Budget IDs, interrupted source publication, invalid source, Month rename/delete/restore, and fresh full-replay comparisons. Product code is unchanged.
Author
Owner

Independent regression committed on job/rev1570-review: f579abfae3. Only a failing test and its comments changed; no product fix or existing expectation change. Focused result: test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 186 filtered out; finished in 0.89s. Failure: accounts_match=false, rows_match=false, funding_totals_match=false after the hint completes. Scope: watched out-of-process same-inode edits with restored write permission and mtime. The bounded calternal-fs-only inode-reuse probe did not exercise a collision and is not claimed as correctness proof. The final required two-crate gate is running sequentially with four test threads.

Independent regression committed on job/rev1570-review: f579abfae3f139546413ef6b96142d45192574d3. Only a failing test and its comments changed; no product fix or existing expectation change. Focused result: test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 186 filtered out; finished in 0.89s. Failure: accounts_match=false, rows_match=false, funding_totals_match=false after the hint completes. Scope: watched out-of-process same-inode edits with restored write permission and mtime. The bounded calternal-fs-only inode-reuse probe did not exercise a collision and is not claimed as correctness proof. The final required two-crate gate is running sequentially with four test threads.
Author
Owner

BLOCK — one source-freshness item under the requested external-edit threat model.

Reviewed 9eec9f681, c39b170f1, and 1bf626d20 against base 0866ca3b2.
Review branch: job/rev1570-review.
Review HEAD: f579abfae3f139546413ef6b96142d45192574d3.

Built and files

Added one failing regression to crates/plugins/money/src/register_contract_tests.rs.
Product code and existing test expectations are unchanged. The test uses a private
source inode, one cleared posting, a settled Files hint, and fresh independent
source parsing. It compares register rows, working/cleared/uncleared Account
balances and full Category/Ready to Assign totals. It also checks source bytes
remain intact. Module and function comments were reread.

Review artifacts: artifacts/rev1570-findings.md, generated passing probes in
artifacts/rev1570-probes.rs, and logs under artifacts/rev1570-*.log.
No author report or result files were read.

Blocking item

The new source_is_published retain check (register.rs:135) uses a receipt
that hashes names, device, inode, size and mtime (store.rs:677). It omits
content hashes and ctime. A watched out-of-process writer can make a private
source writable, change its postings, and restore its mtime. With equal
inode/size/mtime, the hint completes without repairing the stale register or
parsed Budget. A fresh parse disagrees with retained rows, Account balances and
Category totals. Source bytes are not lost, but the derived numbers are wrong.

This source-cache and recovery weakness predates the branch. The new hint
retain path shares it. The regression requires an out-of-process writer; it
is not a demonstrated failure of an authorized atomic server write. The
Ready to Assign value is compared but does not change in this fixture.

Focused regression output, verbatim:

settled Files hint retained stale source numbers: accounts_match=false, rows_match=false, funding_totals_match=false
test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 186 filtered out; finished in 0.89s
error: test failed, to rerun pass `-p calternal-plugin-money --lib`

Passing risk cases

Eight fixed-seed generated schedules extend the register sequence strategy.
They check two concurrent Money marks and a delayed hint; external edits in
two Budgets before one whole-Money hint; atomic writes with identical size and
mtime; a source intent and fresh state at restart; Month rename/delete/restore;
invalid-source refusal; and two Users with identical Budget IDs. After hints
settle, every page, Account summary and month total is compared with fresh source
recomputation. Foreign row identities also remain unchanged.

test routes::register_contract_tests::review1570_generated_delayed_hints_match_replay ... ok

Known gaps

  • No product fix is permitted in this review job. The failing test is intentional.
  • A 128-cycle calternal-fs-only Trash/purge/sync-upload probe did not reproduce
    inode reuse. Output: inode reuse probe not exercised on this filesystem.
    This gives no allocator-collision guarantee. Normal preserved-mtime atomic
    replacements passed because their inodes changed.
  • The source-write interruption probe uses a durable intent and fresh state.
    Existing SIGKILL recovery tests are also part of the required suite.
  • Hints in the focused probes are delivered directly to the production handler.
    No browser or separate production watch server was used.
  • No performance measurement: this job is a correctness review, with no product
    behavior change. Passing generated probes are artifacts, not committed tests.

Decisions

The review-specific no-merge rule takes precedence over the generic merge-dev
instruction. The pinned branch remains intact. No dependencies changed, so no
version choice was needed. BLOCK applies to the requested watched external-edit
freshness invariant; no normal atomic server-write failure was established.

Gates

Final sequential gate: exit 101. All other plugin tests passed; only the review regression failed. Core Money targets passed.

Gate summary output, verbatim (including the suite's one-pass child memory guard):

test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.87s
test result: ok. 21 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.58s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 4 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 2.09s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.96s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.30s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 186 filtered out; finished in 27.57s
test result: FAILED. 183 passed; 1 failed; 3 ignored; 0 measured; 0 filtered out; finished in 1284.32s
error: test failed, to rerun pass `-p calternal-plugin-money --lib`

Failure output, verbatim:

settled Files hint retained stale source numbers: accounts_match=false, rows_match=false, funding_totals_match=false

The final cargo command stops at the failing plugin lib target; later plugin integration/doc targets are not reached. After a fix, the same two-crate command must complete all targets.

Environment: CARGO_BUILD_JOBS=4,
CARGO_PROFILE_DEV_DEBUG=line-tables-only, CARGO_INCREMENTAL=0,
TMPDIR=<worktree>/target/tmp; preset CARGO_TARGET_DIR unchanged.
Command: cargo test -p calternal-money -p calternal-plugin-money -- --test-threads=4.
cargo fmt --check: exit 0, no output.

The earlier suite overlapped recompilation of its self-relaunching binary and
was terminated. It is not accepted as gate evidence. Its log is kept. The final
suite runs without concurrent compilation.

Clippy command: cargo clippy -p calternal-plugin-money --all-targets -- -D warnings; exit 0.
Verbatim completion output:

    Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 12s

Formatting command: cargo fmt --check; exit 0; no output.

Cleanup command: cargo clean; exit 0. Verbatim output:

     Removed 5855 files, 2.4GiB total

The worktree's own test temporary directory was removed. No web build was created.
Git worktree is clean. No push, merge, deploy or issue close was done.

Final verdict: BLOCK — metadata-only source validation can retain stale numbers
for the requested same-inode external-edit case. Normal atomic server-write
risk cases passed. The product fix belongs to the author, outside this review.

BLOCK — one source-freshness item under the requested external-edit threat model. Reviewed `9eec9f681`, `c39b170f1`, and `1bf626d20` against base `0866ca3b2`. Review branch: `job/rev1570-review`. Review HEAD: `f579abfae3f139546413ef6b96142d45192574d3`. ## Built and files Added one failing regression to `crates/plugins/money/src/register_contract_tests.rs`. Product code and existing test expectations are unchanged. The test uses a private source inode, one cleared posting, a settled Files hint, and fresh independent source parsing. It compares register rows, working/cleared/uncleared Account balances and full Category/Ready to Assign totals. It also checks source bytes remain intact. Module and function comments were reread. Review artifacts: `artifacts/rev1570-findings.md`, generated passing probes in `artifacts/rev1570-probes.rs`, and logs under `artifacts/rev1570-*.log`. No author report or result files were read. ## Blocking item The new `source_is_published` retain check (`register.rs:135`) uses a receipt that hashes names, device, inode, size and mtime (`store.rs:677`). It omits content hashes and ctime. A watched out-of-process writer can make a private source writable, change its postings, and restore its mtime. With equal inode/size/mtime, the hint completes without repairing the stale register or parsed Budget. A fresh parse disagrees with retained rows, Account balances and Category totals. Source bytes are not lost, but the derived numbers are wrong. This source-cache and recovery weakness predates the branch. The new hint retain path shares it. The regression requires an out-of-process writer; it is not a demonstrated failure of an authorized atomic server write. The Ready to Assign value is compared but does not change in this fixture. Focused regression output, verbatim: ``` settled Files hint retained stale source numbers: accounts_match=false, rows_match=false, funding_totals_match=false test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 186 filtered out; finished in 0.89s error: test failed, to rerun pass `-p calternal-plugin-money --lib` ``` ## Passing risk cases Eight fixed-seed generated schedules extend the register sequence strategy. They check two concurrent Money marks and a delayed hint; external edits in two Budgets before one whole-Money hint; atomic writes with identical size and mtime; a source intent and fresh state at restart; Month rename/delete/restore; invalid-source refusal; and two Users with identical Budget IDs. After hints settle, every page, Account summary and month total is compared with fresh source recomputation. Foreign row identities also remain unchanged. ``` test routes::register_contract_tests::review1570_generated_delayed_hints_match_replay ... ok ``` ## Known gaps - No product fix is permitted in this review job. The failing test is intentional. - A 128-cycle calternal-fs-only Trash/purge/sync-upload probe did not reproduce inode reuse. Output: `inode reuse probe not exercised on this filesystem`. This gives no allocator-collision guarantee. Normal preserved-mtime atomic replacements passed because their inodes changed. - The source-write interruption probe uses a durable intent and fresh state. Existing SIGKILL recovery tests are also part of the required suite. - Hints in the focused probes are delivered directly to the production handler. No browser or separate production watch server was used. - No performance measurement: this job is a correctness review, with no product behavior change. Passing generated probes are artifacts, not committed tests. ## Decisions The review-specific no-merge rule takes precedence over the generic merge-dev instruction. The pinned branch remains intact. No dependencies changed, so no version choice was needed. BLOCK applies to the requested watched external-edit freshness invariant; no normal atomic server-write failure was established. ## Gates Final sequential gate: exit 101. All other plugin tests passed; only the review regression failed. Core Money targets passed. Gate summary output, verbatim (including the suite's one-pass child memory guard): ``` test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.87s test result: ok. 21 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.58s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 4 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 2.09s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.96s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.30s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 186 filtered out; finished in 27.57s test result: FAILED. 183 passed; 1 failed; 3 ignored; 0 measured; 0 filtered out; finished in 1284.32s error: test failed, to rerun pass `-p calternal-plugin-money --lib` ``` Failure output, verbatim: ``` settled Files hint retained stale source numbers: accounts_match=false, rows_match=false, funding_totals_match=false ``` The final cargo command stops at the failing plugin lib target; later plugin integration/doc targets are not reached. After a fix, the same two-crate command must complete all targets. Environment: `CARGO_BUILD_JOBS=4`, `CARGO_PROFILE_DEV_DEBUG=line-tables-only`, `CARGO_INCREMENTAL=0`, `TMPDIR=<worktree>/target/tmp`; preset CARGO_TARGET_DIR unchanged. Command: `cargo test -p calternal-money -p calternal-plugin-money -- --test-threads=4`. `cargo fmt --check`: exit 0, no output. The earlier suite overlapped recompilation of its self-relaunching binary and was terminated. It is not accepted as gate evidence. Its log is kept. The final suite runs without concurrent compilation. Clippy command: `cargo clippy -p calternal-plugin-money --all-targets -- -D warnings`; exit 0. Verbatim completion output: ``` Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 12s ``` Formatting command: `cargo fmt --check`; exit 0; no output. Cleanup command: `cargo clean`; exit 0. Verbatim output: ``` Removed 5855 files, 2.4GiB total ``` The worktree's own test temporary directory was removed. No web build was created. Git worktree is clean. No push, merge, deploy or issue close was done. Final verdict: BLOCK — metadata-only source validation can retain stale numbers for the requested same-inode external-edit case. Normal atomic server-write risk cases passed. The product fix belongs to the author, outside this review.
Author
Owner

Started fix1570b on job/fix1570, HEAD fc6aeee2f2fa89f9ac353ac99a67a1109945a8cc, dev base 0c712b98c164b6734d54f63485012bd1a11005b4. The receipt omits ctime, and both publication retention and recovery trust it. Add a ctime-aware, one-stat fingerprint and version the receipt. Keep the independent reviewer regression unchanged. No merges, pushes or deploys per the job-specific instruction.

Started fix1570b on `job/fix1570`, HEAD `fc6aeee2f2fa89f9ac353ac99a67a1109945a8cc`, dev base `0c712b98c164b6734d54f63485012bd1a11005b4`. The receipt omits ctime, and both publication retention and recovery trust it. Add a ctime-aware, one-stat fingerprint and version the receipt. Keep the independent reviewer regression unchanged. No merges, pushes or deploys per the job-specific instruction.
Author
Owner

Finding: adding ctime only to the stored receipt is insufficient because UserMoney::load and parse also reuse the old inode/size/mtime fingerprint. Both now use SourceFingerprint with ctime seconds and nanoseconds. Receipt validation uses the existing directory-list stat, not a second stat or content hash. FileStat now carries device/inode so its listed observation can construct that token. Minimal compatibility additions in Files set zero device/inode for virtual directories and its stat fixture; behavior and assertions stay unchanged. The old filesystem continuity token remains unchanged, including the reviewer collision assertion. The new ctime-v1: receipt prefix ensures every unversioned stored receipt rebuilds once. No dependencies or ratchets changed. Formatting passes; crate gates are running.

Finding: adding ctime only to the stored receipt is insufficient because `UserMoney::load` and `parse` also reuse the old inode/size/mtime fingerprint. Both now use `SourceFingerprint` with ctime seconds and nanoseconds. Receipt validation uses the existing directory-list stat, not a second stat or content hash. `FileStat` now carries device/inode so its listed observation can construct that token. Minimal compatibility additions in Files set zero device/inode for virtual directories and its stat fixture; behavior and assertions stay unchanged. The old filesystem continuity token remains unchanged, including the reviewer collision assertion. The new `ctime-v1:` receipt prefix ensures every unversioned stored receipt rebuilds once. No dependencies or ratchets changed. Formatting passes; crate gates are running.
Author
Owner

Committed the ctime filesystem extension as a431aa383 and Money receipt/cache fix as 2488d7826. The unchanged reviewer regression passes, as do register_writes_publish_before_reads and register_mark_writes_touch_constant_rows_with_card_history. The new ctime/version unit test and filesystem confinement regression pass. Formatting and all four crate clippy gates pass. The full Money suite is still running and reported one crash-recovery failure; diagnostics follow when it ends. No existing expectations, reviewer regression, dependency versions or performance ratchets were changed.

Committed the ctime filesystem extension as `a431aa383` and Money receipt/cache fix as `2488d7826`. The unchanged reviewer regression passes, as do `register_writes_publish_before_reads` and `register_mark_writes_touch_constant_rows_with_card_history`. The new ctime/version unit test and filesystem confinement regression pass. Formatting and all four crate clippy gates pass. The full Money suite is still running and reported one crash-recovery failure; diagnostics follow when it ends. No existing expectations, reviewer regression, dependency versions or performance ratchets were changed.
Author
Owner

All 37 register contract tests passed, including the unchanged independent ctime-collision regression. The full plugin suite reported a failure in register_recovery_survives_sigkill_at_every_durability_point; diagnostics are buffered until its last scoped-history property test ends. One focused isolation run passed all 25 durability boundaries unchanged:

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 187 filtered out; finished in 57.43s

The original suite result will stay in the final report. The fs and core Money test suites passed, and all four crate clippy gates passed. No test expectations were changed. Head remains 2488d782634a591f5053eaeb0f30a63a6368ab66.

All 37 register contract tests passed, including the unchanged independent ctime-collision regression. The full plugin suite reported a failure in `register_recovery_survives_sigkill_at_every_durability_point`; diagnostics are buffered until its last scoped-history property test ends. One focused isolation run passed all 25 durability boundaries unchanged: ```text test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 187 filtered out; finished in 57.43s ``` The original suite result will stay in the final report. The fs and core Money test suites passed, and all four crate clippy gates passed. No test expectations were changed. Head remains `2488d782634a591f5053eaeb0f30a63a6368ab66`.
Author
Owner

The complete Money library result was:

test result: FAILED. 184 passed; 1 failed; 3 ignored; 0 measured; 0 filtered out; finished in 1636.60s

Failure evidence: register_recovery_tests.rs:143:18 parsed the child port marker and got ParseIntError { kind: Empty }. wait_for_file checked existence only, so the parent could read the file between creation and the std::fs::write that fills it. The failure is a test readiness race, not a recovery assertion or source-number mismatch; the isolated 25-boundary run passed unchanged. Fixing the readiness helper to require nonempty marker contents, with a focused regression that delays publication after creating an empty port file. No existing expectations change. All 37 register contracts and all other Money library tests passed.

The complete Money library result was: ```text test result: FAILED. 184 passed; 1 failed; 3 ignored; 0 measured; 0 filtered out; finished in 1636.60s ``` Failure evidence: `register_recovery_tests.rs:143:18` parsed the child port marker and got `ParseIntError { kind: Empty }`. `wait_for_file` checked existence only, so the parent could read the file between creation and the `std::fs::write` that fills it. The failure is a test readiness race, not a recovery assertion or source-number mismatch; the isolated 25-boundary run passed unchanged. Fixing the readiness helper to require nonempty marker contents, with a focused regression that delays publication after creating an empty port file. No existing expectations change. All 37 register contracts and all other Money library tests passed.
Author
Owner

Completed fix1570b on job/fix1570.

Head: c3aadd409b7c32d302fe844bff7e6b2462d10ebe.
Commits: a431aa383 (one-stat ctime source identity), 2488d7826 (Money receipt and cache validation), c3aadd409 (recovery marker readiness regression).

Built:

  • Source receipts include ctime seconds and nanoseconds, plus source names, device, inode, size and mtime. Directory-list metadata supplies one stat per source. The receipt does not read or hash content.
  • Parsed source generations use the same ctime-aware identity, so a rebuild cannot reuse stale parses after an external edit that restores mtime.
  • ctime-v1: receipts reject old stored receipts once and rebuild Derived data. Metadata-only writes cause a harmless rebuild.
  • The independent reviewer regression passes unchanged. All 37 register contracts pass, including both original #1570 failures. Existing assertions and the performance ratchet are unchanged.
  • Fixed a test readiness race found by the full gate: a parent saw an empty port marker before its write completed. The wait now requires nonempty contents. A new regression delays publication after creating the empty marker. The existing recovery assertions are unchanged.

Files:

crates/calternal-fs/src/blob.rs
crates/calternal-fs/src/lib.rs
crates/calternal-fs/src/root.rs
crates/calternal-fs/tests/storage.rs
crates/plugins/files/src/lib.rs
crates/plugins/files/src/shares.rs
crates/plugins/money/src/register.rs
crates/plugins/money/src/register_recovery_tests.rs
crates/plugins/money/src/routes.rs
crates/plugins/money/src/store.rs

The Files edits only add zero identity fields to synthetic directories and its existing stat fixture. No Files behavior changed. Doc comments in all touched files were re-read.

Decisions:

  • Keep the existing filesystem continuity token unchanged. Add SourceFingerprint for ctime-based source validation. This preserves the reviewer's inode/size/mtime collision assertion and existing Files identity semantics.
  • Use an explicit receipt version prefix to reject every old unversioned receipt. No schema migration is needed.

Expected cost: N sources × one listed stat and fixed-size identity hashing, plus the existing name sort. No extra content IO. Ctime adds 16 bytes to each parsed source identity. This is a correctness fix; no performance measurement was run under the verification policy.

Known gaps:

  • The first complete Money library gate exited 101 because of the empty-marker test race. It reported 184 passed, 1 failed and 3 ignored. The race is fixed and the final focused recovery module passes. The full library was not repeated, per the once-per-round policy. This report does not claim that the original full gate was green.
  • No remaining source-number or register-contract failures were found. No UI changed; UX gaps closed/left and screenshots do not apply.

For the merge round:
CARGO_BUILD_JOBS=4 CARGO_PROFILE_DEV_DEBUG=line-tables-only CARGO_INCREMENTAL=0 cargo test -p calternal-plugin-money -- --test-threads=4
Confirm the complete Money suite on the combined branch, including the fixed marker handshake.

Gate output below is quoted verbatim. Formatting emitted no output and exited 0. All commands used CARGO_BUILD_JOBS=4, CARGO_PROFILE_DEV_DEBUG=line-tables-only, CARGO_INCREMENTAL=0 and this worktree's target/tmp. The preset CARGO_TARGET_DIR was not changed.

Clippy: calternal-fs, calternal-money, calternal-plugin-money (exit 0):

    Finished `dev` profile [unoptimized + debuginfo] target(s) in 3m 26s

Clippy: calternal-plugin-files (exit 0):

    Finished `dev` profile [unoptimized + debuginfo] target(s) in 6m 53s

Final Clippy: calternal-plugin-money after marker fix (exit 0):

    Finished `dev` profile [unoptimized + debuginfo] target(s) in 12.83s

Initial complete fs/core Money/plugin Money test gate (exit 101):

test result: ok. 107 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 28.25s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.15s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.90s
test result: ok. 55 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 181.16s
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s
test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.12s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.12s
test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 17.03s
test result: ok. 21 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.87s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s
test result: ok. 4 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 3.69s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 9.23s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.64s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 187 filtered out; finished in 45.20s
test result: FAILED. 184 passed; 1 failed; 3 ignored; 0 measured; 0 filtered out; finished in 1636.60s

Remaining Money integration tests (exit 0):

test result: ok. 29 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 5.02s
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.13s

Rust doc tests (exit 0):

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Files test gate (exit 0):

test result: ok. 281 passed; 0 failed; 4 ignored; 0 measured; 0 filtered out; finished in 166.16s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 8 filtered out; finished in 0.03s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 8 filtered out; finished in 0.03s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 8 filtered out; finished in 0.14s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 8 filtered out; finished in 0.03s
test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.44s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Initial failure evidence:

failures:

---- register_recovery_tests::register_recovery_survives_sigkill_at_every_durability_point stdout ----

thread 'register_recovery_tests::register_recovery_survives_sigkill_at_every_durability_point' (1651995) panicked at crates/plugins/money/src/register_recovery_tests.rs:143:18:
called `Result::unwrap()` on an `Err` value: ParseIntError { kind: Empty }
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace


failures:
    register_recovery_tests::register_recovery_survives_sigkill_at_every_durability_point

test result: FAILED. 184 passed; 1 failed; 3 ignored; 0 measured; 0 filtered out; finished in 1636.60s

error: test failed, to rerun pass `-p calternal-plugin-money --lib`

Final focused recovery module (exit 0):

Compiling calternal-plugin-money v0.0.1 (/home/kayg/Developer/calternal-wt/fix1570/crates/plugins/money)
    Finished `test` profile [unoptimized + debuginfo] target(s) in 20.06s
     Running unittests src/lib.rs (/home/kayg/build/targets/fix1570b/debug/deps/calternal_plugin_money-369d9e0370502d5a)

running 5 tests
test register_recovery_tests::register_kill_child ... ignored, child of register_recovery_survives_sigkill_at_every_durability_point
test register_recovery_tests::marker_wait_does_not_accept_an_empty_port_file ... ok
test register_recovery_tests::review688_directory_source_does_not_stop_startup ... ok
test register_recovery_tests::recovery_invalidates_broken_sources_without_changing_files ... ok
test register_recovery_tests::register_recovery_survives_sigkill_at_every_durability_point ... ok

test result: ok. 4 passed; 0 failed; 1 ignored; 0 measured; 184 filtered out; finished in 22.62s

     Running tests/import_review.rs (/home/kayg/build/targets/fix1570b/debug/deps/import_review-aba121fe52b95939)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 32 filtered out; finished in 0.00s

     Running tests/write_addresses.rs (/home/kayg/build/targets/fix1570b/debug/deps/write_addresses-16c662fa8aded75e)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 2 filtered out; finished in 0.00s

Cleanup (exit 0):

Removed 12891 files, 8.7GiB total

Web build output is absent. Worktree is clean. No pushes, merges or deploys. git fetch origin found the same origin/dev base already present (0c712b98c164b6734d54f63485012bd1a11005b4); the job-specific no-merge instruction was followed. The issue remains open.

Completed fix1570b on `job/fix1570`. Head: `c3aadd409b7c32d302fe844bff7e6b2462d10ebe`. Commits: `a431aa383` (one-stat ctime source identity), `2488d7826` (Money receipt and cache validation), `c3aadd409` (recovery marker readiness regression). Built: - Source receipts include ctime seconds and nanoseconds, plus source names, device, inode, size and mtime. Directory-list metadata supplies one stat per source. The receipt does not read or hash content. - Parsed source generations use the same ctime-aware identity, so a rebuild cannot reuse stale parses after an external edit that restores mtime. - `ctime-v1:` receipts reject old stored receipts once and rebuild Derived data. Metadata-only writes cause a harmless rebuild. - The independent reviewer regression passes unchanged. All 37 register contracts pass, including both original #1570 failures. Existing assertions and the performance ratchet are unchanged. - Fixed a test readiness race found by the full gate: a parent saw an empty port marker before its write completed. The wait now requires nonempty contents. A new regression delays publication after creating the empty marker. The existing recovery assertions are unchanged. Files: ```text crates/calternal-fs/src/blob.rs crates/calternal-fs/src/lib.rs crates/calternal-fs/src/root.rs crates/calternal-fs/tests/storage.rs crates/plugins/files/src/lib.rs crates/plugins/files/src/shares.rs crates/plugins/money/src/register.rs crates/plugins/money/src/register_recovery_tests.rs crates/plugins/money/src/routes.rs crates/plugins/money/src/store.rs ``` The Files edits only add zero identity fields to synthetic directories and its existing stat fixture. No Files behavior changed. Doc comments in all touched files were re-read. Decisions: - Keep the existing filesystem continuity token unchanged. Add `SourceFingerprint` for ctime-based source validation. This preserves the reviewer's inode/size/mtime collision assertion and existing Files identity semantics. - Use an explicit receipt version prefix to reject every old unversioned receipt. No schema migration is needed. Expected cost: N sources × one listed stat and fixed-size identity hashing, plus the existing name sort. No extra content IO. Ctime adds 16 bytes to each parsed source identity. This is a correctness fix; no performance measurement was run under the verification policy. Known gaps: - The first complete Money library gate exited 101 because of the empty-marker test race. It reported 184 passed, 1 failed and 3 ignored. The race is fixed and the final focused recovery module passes. The full library was not repeated, per the once-per-round policy. This report does not claim that the original full gate was green. - No remaining source-number or register-contract failures were found. No UI changed; UX gaps closed/left and screenshots do not apply. For the merge round: `CARGO_BUILD_JOBS=4 CARGO_PROFILE_DEV_DEBUG=line-tables-only CARGO_INCREMENTAL=0 cargo test -p calternal-plugin-money -- --test-threads=4` Confirm the complete Money suite on the combined branch, including the fixed marker handshake. Gate output below is quoted verbatim. Formatting emitted no output and exited 0. All commands used CARGO_BUILD_JOBS=4, CARGO_PROFILE_DEV_DEBUG=line-tables-only, CARGO_INCREMENTAL=0 and this worktree's target/tmp. The preset CARGO_TARGET_DIR was not changed. Clippy: calternal-fs, calternal-money, calternal-plugin-money (exit 0): ```text Finished `dev` profile [unoptimized + debuginfo] target(s) in 3m 26s ``` Clippy: calternal-plugin-files (exit 0): ```text Finished `dev` profile [unoptimized + debuginfo] target(s) in 6m 53s ``` Final Clippy: calternal-plugin-money after marker fix (exit 0): ```text Finished `dev` profile [unoptimized + debuginfo] target(s) in 12.83s ``` Initial complete fs/core Money/plugin Money test gate (exit 101): ```text test result: ok. 107 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 28.25s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.15s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.90s test result: ok. 55 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 181.16s test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.12s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.12s test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 17.03s test result: ok. 21 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.87s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s test result: ok. 4 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 3.69s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 9.23s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.64s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 187 filtered out; finished in 45.20s test result: FAILED. 184 passed; 1 failed; 3 ignored; 0 measured; 0 filtered out; finished in 1636.60s ``` Remaining Money integration tests (exit 0): ```text test result: ok. 29 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 5.02s test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.13s ``` Rust doc tests (exit 0): ```text test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s ``` Files test gate (exit 0): ```text test result: ok. 281 passed; 0 failed; 4 ignored; 0 measured; 0 filtered out; finished in 166.16s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 8 filtered out; finished in 0.03s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 8 filtered out; finished in 0.03s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 8 filtered out; finished in 0.14s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 8 filtered out; finished in 0.03s test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.44s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s ``` Initial failure evidence: ```text failures: ---- register_recovery_tests::register_recovery_survives_sigkill_at_every_durability_point stdout ---- thread 'register_recovery_tests::register_recovery_survives_sigkill_at_every_durability_point' (1651995) panicked at crates/plugins/money/src/register_recovery_tests.rs:143:18: called `Result::unwrap()` on an `Err` value: ParseIntError { kind: Empty } note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace failures: register_recovery_tests::register_recovery_survives_sigkill_at_every_durability_point test result: FAILED. 184 passed; 1 failed; 3 ignored; 0 measured; 0 filtered out; finished in 1636.60s error: test failed, to rerun pass `-p calternal-plugin-money --lib` ``` Final focused recovery module (exit 0): ```text Compiling calternal-plugin-money v0.0.1 (/home/kayg/Developer/calternal-wt/fix1570/crates/plugins/money) Finished `test` profile [unoptimized + debuginfo] target(s) in 20.06s Running unittests src/lib.rs (/home/kayg/build/targets/fix1570b/debug/deps/calternal_plugin_money-369d9e0370502d5a) running 5 tests test register_recovery_tests::register_kill_child ... ignored, child of register_recovery_survives_sigkill_at_every_durability_point test register_recovery_tests::marker_wait_does_not_accept_an_empty_port_file ... ok test register_recovery_tests::review688_directory_source_does_not_stop_startup ... ok test register_recovery_tests::recovery_invalidates_broken_sources_without_changing_files ... ok test register_recovery_tests::register_recovery_survives_sigkill_at_every_durability_point ... ok test result: ok. 4 passed; 0 failed; 1 ignored; 0 measured; 184 filtered out; finished in 22.62s Running tests/import_review.rs (/home/kayg/build/targets/fix1570b/debug/deps/import_review-aba121fe52b95939) running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 32 filtered out; finished in 0.00s Running tests/write_addresses.rs (/home/kayg/build/targets/fix1570b/debug/deps/write_addresses-16c662fa8aded75e) running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 2 filtered out; finished in 0.00s ``` Cleanup (exit 0): ```text Removed 12891 files, 8.7GiB total ``` Web build output is absent. Worktree is clean. No pushes, merges or deploys. `git fetch origin` found the same origin/dev base already present (`0c712b98c164b6734d54f63485012bd1a11005b4`); the job-specific no-merge instruction was followed. The issue remains open.
Author
Owner

Independent review round 2 started on detached HEAD c3aadd409b (requested review base). Scope: fc6aeee2f..c3aadd409; no author reports read. Read-only review except failing regression tests. Full Money and filesystem suites will run once. No merges, pushes or deploys.

Independent review round 2 started on detached HEAD c3aadd409b7c32d302fe844bff7e6b2462d10ebe (requested review base). Scope: fc6aeee2f..c3aadd409; no author reports read. Read-only review except failing regression tests. Full Money and filesystem suites will run once. No merges, pushes or deploys.
Author
Owner

Round-2 source review: ctime and identity fields come from the same confined fstat/statx result. Money receipt validation now reuses each directory entry's stat, removing the former per-source reopen/stat. Both the receipt and parsed-source reuse include ctime. Unprefixed old receipts cannot match ctime-v1: receipts. c3aadd409 touches only the test harness; both marker producers are test-only, and production requests cannot reach the empty marker state. Full suites are still running; these are source findings, not a passing verification verdict.

Round-2 source review: ctime and identity fields come from the same confined fstat/statx result. Money receipt validation now reuses each directory entry's stat, removing the former per-source reopen/stat. Both the receipt and parsed-source reuse include ctime. Unprefixed old receipts cannot match `ctime-v1:` receipts. c3aadd409 touches only the test harness; both marker producers are test-only, and production requests cannot reach the empty marker state. Full suites are still running; these are source findings, not a passing verification verdict.
Author
Owner

Round-2 focused probes passed: restored mtime, rename-over, hard-link edit, chmod, file and folder Trash restore, cross-User Budget copy, and unprefixed receipt migration. The colliding-token probes assert equal device/inode/size/mtime and different ctime, then compare Accounts, register rows and totals to a fresh parse. A second settled hint and matching-receipt completion recovery make zero projection writes. The old receipt rebuilds once and then reuses the current version.

One initial review-probe assertion was too strong: it required copy receipts to survive filesystem recovery unchanged. Existing identical-file copy-overwrite can leave same-inode temporary links. Recovery removed two links and changed Budget.md/Accounts.md ctime while leaving bytes and device/inode/size/mtime unchanged. Money correctly rebuilt once; another recovery made zero writes. This is not a number-correctness defect or a rebuild loop. The initial failed probe log is retained. No existing test expectation changed, and no passing probe was committed.

Final focused probe output:

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 189 filtered out; finished in 18.58s

The full Money suite is still running its scoped-history property test. Filesystem suite and cleanup will follow.

Round-2 focused probes passed: restored mtime, rename-over, hard-link edit, chmod, file and folder Trash restore, cross-User Budget copy, and unprefixed receipt migration. The colliding-token probes assert equal device/inode/size/mtime and different ctime, then compare Accounts, register rows and totals to a fresh parse. A second settled hint and matching-receipt completion recovery make zero projection writes. The old receipt rebuilds once and then reuses the current version. One initial review-probe assertion was too strong: it required copy receipts to survive filesystem recovery unchanged. Existing identical-file copy-overwrite can leave same-inode temporary links. Recovery removed two links and changed Budget.md/Accounts.md ctime while leaving bytes and device/inode/size/mtime unchanged. Money correctly rebuilt once; another recovery made zero writes. This is not a number-correctness defect or a rebuild loop. The initial failed probe log is retained. No existing test expectation changed, and no passing probe was committed. Final focused probe output: ``` test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 189 filtered out; finished in 18.58s ``` The full Money suite is still running its scoped-history property test. Filesystem suite and cleanup will follow.
Author
Owner

READY — independent Money number-correctness review, round 2.

HEAD: c3aadd409b. Reviewed fc6aeee2f..c3aadd409; no author reports read. No product changes or new commits, as required by the review-only brief. No pushes, merges, deploys or issue closes.

Built: temporary private-fixture probes through calternal-fs primitives and the Money Files-hint handler, plus the review report. Files: artifacts/rev1570b-findings.md, rev1570b-probes.rs, Money/filesystem logs, both probe logs, compile logs and cleanup log. The tracked test file was restored byte for byte after compilation; the worktree is clean.

Findings:

  • The round-1 regression passes. Independent probes prove the old device/inode/size/mtime token stays equal while ctime differs, then verify fresh Accounts, register rows and month totals.
  • Device, inode, size, mtime and ctime come from the same confined fstat/statx result. Published-receipt validation uses directory-list stat data, with no added source syscall. The pre-existing statx fallback and number of parse-path checks are unchanged; the parse tokens now include ctime.
  • Unprefixed old receipts cannot match ctime-v1 receipts. A runtime probe verifies one rebuild, publication of the new receipt, and zero projection writes on another hint and matching-receipt recovery.
  • Rename-over, hard-link edit, chmod, file and whole-Budget Trash restore, cross-User Budget copy and reopened Root/Index scenarios pass against fresh source numbers. The existing real-HTTP SIGKILL recovery test passes.
  • The reused mark contract passes: eight marks cause exactly eight row updates, zero Category writes and stable row IDs/prefixes, at both history sizes. Own Files hints and completion recovery keep published generations.
  • c3aadd409 changes a test only. Both marker producers are test-only. A production User request cannot reach that empty-marker state; no product recovery assertion was weakened.

One initial review-probe assertion was too strong: it required copy receipts to survive recovery even when ctime changed. Existing same-inode copy overwrite left two temporary links; recovery removed them, changing only ctime. The corrected probe verifies unchanged bytes/continuity fields, correct numbers, one rebuild and no repeated writes. The initial failed log remains as evidence. No existing test expectation changed. This pre-existing Files cleanup behavior is filed as #1575 (kayg/calternal#1575); it does not block number correctness.

Gates: both required full Cargo commands ran once and exited 0. CARGO_BUILD_JOBS=4, CARGO_PROFILE_DEV_DEBUG=line-tables-only, CARGO_INCREMENTAL=0; TMPDIR was inside the worktree. cargo fmt --check exited 0 with no output. No persistent Rust change required a touched-crate clippy run. Output excerpts below are verbatim.

cargo test -p calternal-money -p calternal-plugin-money:

test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.36s
test result: ok. 21 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.13s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 4 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 2.20s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.27s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.38s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 188 filtered out; finished in 36.35s
test result: ok. 186 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 1903.31s
test result: ok. 29 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 7.38s
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.37s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

The result with 188 filtered tests is the nested memory-guard child.

cargo test -p calternal-fs (RUST_TEST_THREADS=4):

test result: ok. 107 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 32.63s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.38s
test result: ok. 55 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 158.51s
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Focused probe (all eight cases):

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 189 filtered out; finished in 18.58s

cargo clean exited 0:

     Removed 3448 files, 2.1GiB total

Known gaps: no Money correctness blocker found in scope. #1575 is a nonblocking, pre-existing Files cleanup issue. Passing temporary review probes were not committed. No UI changed; no screenshots or web build were needed. No dependency changed.

Decisions: no product design decisions. Kept the exact requested detached HEAD; the review brief forbids merges. Receipt survival after restart is conditional on ctime remaining equal. A real recovery metadata change must rebuild once and then settle.

READY

READY — independent Money number-correctness review, round 2. HEAD: c3aadd409b7c32d302fe844bff7e6b2462d10ebe. Reviewed fc6aeee2f..c3aadd409; no author reports read. No product changes or new commits, as required by the review-only brief. No pushes, merges, deploys or issue closes. Built: temporary private-fixture probes through calternal-fs primitives and the Money Files-hint handler, plus the review report. Files: artifacts/rev1570b-findings.md, rev1570b-probes.rs, Money/filesystem logs, both probe logs, compile logs and cleanup log. The tracked test file was restored byte for byte after compilation; the worktree is clean. Findings: - The round-1 regression passes. Independent probes prove the old device/inode/size/mtime token stays equal while ctime differs, then verify fresh Accounts, register rows and month totals. - Device, inode, size, mtime and ctime come from the same confined fstat/statx result. Published-receipt validation uses directory-list stat data, with no added source syscall. The pre-existing statx fallback and number of parse-path checks are unchanged; the parse tokens now include ctime. - Unprefixed old receipts cannot match ctime-v1 receipts. A runtime probe verifies one rebuild, publication of the new receipt, and zero projection writes on another hint and matching-receipt recovery. - Rename-over, hard-link edit, chmod, file and whole-Budget Trash restore, cross-User Budget copy and reopened Root/Index scenarios pass against fresh source numbers. The existing real-HTTP SIGKILL recovery test passes. - The reused mark contract passes: eight marks cause exactly eight row updates, zero Category writes and stable row IDs/prefixes, at both history sizes. Own Files hints and completion recovery keep published generations. - c3aadd409 changes a test only. Both marker producers are test-only. A production User request cannot reach that empty-marker state; no product recovery assertion was weakened. One initial review-probe assertion was too strong: it required copy receipts to survive recovery even when ctime changed. Existing same-inode copy overwrite left two temporary links; recovery removed them, changing only ctime. The corrected probe verifies unchanged bytes/continuity fields, correct numbers, one rebuild and no repeated writes. The initial failed log remains as evidence. No existing test expectation changed. This pre-existing Files cleanup behavior is filed as #1575 (https://git.kayg.org/kayg/calternal/issues/1575); it does not block number correctness. Gates: both required full Cargo commands ran once and exited 0. CARGO_BUILD_JOBS=4, CARGO_PROFILE_DEV_DEBUG=line-tables-only, CARGO_INCREMENTAL=0; TMPDIR was inside the worktree. cargo fmt --check exited 0 with no output. No persistent Rust change required a touched-crate clippy run. Output excerpts below are verbatim. cargo test -p calternal-money -p calternal-plugin-money: ``` test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.36s test result: ok. 21 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.13s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 4 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 2.20s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.27s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.38s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 188 filtered out; finished in 36.35s test result: ok. 186 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 1903.31s test result: ok. 29 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 7.38s test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.37s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s ``` The result with 188 filtered tests is the nested memory-guard child. cargo test -p calternal-fs (RUST_TEST_THREADS=4): ``` test result: ok. 107 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 32.63s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.38s test result: ok. 55 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 158.51s test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s ``` Focused probe (all eight cases): ``` test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 189 filtered out; finished in 18.58s ``` cargo clean exited 0: ``` Removed 3448 files, 2.1GiB total ``` Known gaps: no Money correctness blocker found in scope. #1575 is a nonblocking, pre-existing Files cleanup issue. Passing temporary review probes were not committed. No UI changed; no screenshots or web build were needed. No dependency changed. Decisions: no product design decisions. Kept the exact requested detached HEAD; the review brief forbids merges. Receipt survival after restart is conditional on ctime remaining equal. A real recovery metadata change must rebuild once and then settle. READY
Author
Owner

Deployed to calternal.cloud in merge round 40 (build c0f8da461, 01:38 IST 2026-10-12). Health state ok, /readyz 200, served-page check passed. Pre-deploy backup taken.

Deployed to calternal.cloud in merge round 40 (build c0f8da461, 01:38 IST 2026-10-12). Health state ok, /readyz 200, served-page check passed. Pre-deploy backup taken.
kayg closed this issue 2026-10-11 20:08:46 +00:00
Commenting is not possible because the repository is archived.
No labels
No milestone
No project
No assignees
1 participant
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
kayg/calternal-v0#1570
No description provided.