Restore a green harness library suite
Problem
Main's harness library gate reproduced the four reported failures plus native-accounting regressions: 576 passed, 14 failed at e58b7746b. The decoder's descendant rescans also exhaust the unchanged 65,536-item budgets used by gc-local and #496.
Design and culprit commits
| Failure | Culprit | Resolution |
|---|---|---|
| Default registry | 4774d27a82 (#495) | Defaults acquired bash/fs; correct the stale absence assertion and verify contextless authorization, execution and reconciliation reject them. |
| Ref-only memory builder | 4774d27a82 (#495) | Automatic tools exceeded this model-only fixture's existing 4 KiB journal payload bound. Disable tools explicitly and assert both model requests have none; preserve attachment, replay, eviction and owner checks. |
| Private goal fixture | 5b5cef5df6 (#615) | Its project writes did not address the private goal volume. Upstream #671 now tests the unreachable task-view behavior. Keep main's goal tests unchanged here; isolate the private-output continuation fixtures and their remaining stall investigation into a follow-up. |
| Configured HTTP MCP | 9df7691ec8 (#668) | The fixture exceeded its unchanged model context capacity. Main's #682 corrects the input fixture and settings isolation; retain it and add response-size and full-script-consumption assertions. Both payloads exceed the independent catalog-byte bound. |
| Native JSON quotas | 8638ab53b9 (#608) | Object construction rescanned all descendant bytes to count entries. Fund entry-buffer growth as keys arrive, retaining sorting, last-key-wins and conservative B-tree admission. |
| Nested array quotas | 4f07582036 (#683) | Keep reserve-once arrays and its physical-allocation property. Record array lengths during the existing encoding/copy pass in a funded prefix of that same buffer. Nested decoding reads each length directly, without descendant rescans. |
| Native denial assertions | 8638ab53b9 (#608) | Match the original direct NativeWork denial, exact counter and empty custody, rather than its former allocating wrapper. Preserve state, hash, copy and growth assertions. |
Shrinking properties assert exact structural work for objects and nested/wide arrays independently of descendant text length, with full-scan negative controls. Existing physical allocation-prefix properties cover reserve-once arrays, typed denials and cleanup. A shared canonical-byte/round-trip oracle backs normal corpus replay and a cargo-fuzz target with four checked seeds. No limits, accounting categories or concurrency primitives change.
Deletions
Remove object/array descendant pre-counting and stale test expectations. +368/-93, net +275 text lines, plus four small corpus files. No goal-test diff remains in this PR.
Tests run
Latest main merge: f93f52a3c, preserving #683. Signed head: 2b08496a2c4dda17f6788f4f59a0018026e2c6f2.
- bb1: rehearsed #496 head
b8850f424a8b8b643812985b7b731f45971d81f4on this head, without committing its changes. 8 harness tests passed in 1.14 s, includingnative_stock_model_original_lost_ack_uses_native_provider_and_settlement, native tool settlement and configured HTTP MCP. #496'severy_adapter_runs_a_stock_turn_on_the_issued_native_taskpassed all four adapters in 0.58 s, under unchanged quotas. Chat: open 225 + lease 186 + run 64,885 = 65,296 items; other adapters lower. Log:/home/var/log/buildbox/2026-10-16T101430775Z-3458197.log. - Same built binary, JSON verification: 18 passed in 0.54 s, including nested/wide-array and object work properties, full-scan negative controls, #683's allocation property, prefix-denial properties and corpus replay. Log:
/home/var/log/buildbox/2026-10-16T102005745Z-3495221.log. - Earlier full library gate at
1d218844b, before separating private goal fixtures and the final main merge: 617 passed, 0 failed in 22.12 s. This is historical full-suite evidence, not a claim of a new full run at this head. - Windows through
lb.ps1:cargo check -p acyclic-harness --lib --tests --features filesystem-local,mcp-httppassed at this head. The unchanged bounded_json fuzz target also passed its Windows compile gate before the final main merge; no fuzz-engine run is claimed. - Formatting, diff whitespace check and SSH commit-signature verification passed.
Slow tests
Measured previously with the built Linux binary, including subprocess startup; no wall-clock assertions:
| Test | Seconds |
|---|---|
store::tests::messages::indexed_conversation_lookup_is_atomic_bounded_and_pinned_after_eviction | 16.988 |
filesystem::memory::summary_tests::compaction::alternating_volumes_preserve_linear_payload_staging_work | 3.943 |
filesystem::memory::summary_tests::compaction::payload_staging_work_grows_linearly_with_retained_history | 1.989 |
executor::tests::sampling_allocations::tool_free_sampling_allocations_are_identical_for_10_and_10000_tools | 1.946 |
filesystem::execution_journal::conversation::tests::durable_turn_growth_reopens_and_replays_original_identity | 1.795 |
Decisions and follow-up
Production goal writes through stock tools depend on #503's mount routing, tracked by gc-tools (#503) and gc-goal (#671). Preserve main's goal coverage here. The private-output continuation fixture and its diagnostics are preserved in draft #700 so the decoder can unblock other lanes immediately.
The private fixture stall was reproduced on run 20: private-unchanged-active-settles-until-agent-done, third task declared, first two completed, three scripted calls remaining, execution pending. Its root cause remains unconfirmed; diagnostic passes are not proof of a wakeup fix. Keep its eight-second timeout and coverage in the follow-up and require the requested 20-run proof after the root cause is fixed. Optimize the existing 10k-message library test separately.