Release integration review - kmosoti/FabricO11y GitHub Wiki

Release integration review

The agent execution review records the causes of repeated repair rounds and a proposed Codex CLI workflow comparison.

Reviewed 2026-10-11 against main 225b165ea9b2fcc644fb1f3660d9e7ebd6e2d4a0. Console integration #29 and security specification #30 are merged. A specification does not establish runtime verification. The finite Option B release queue is tracked in issue 32, separately from the broader FO01–FO14 roadmap. No release tag is published by this review.

Historical qualification branch

PR 26 is closed as an archived historical study rather than merged over current state. Its six unique commits, protocol, harness, reports and compact evidence remain on the preserved milestone/target-qualification branch at c7d343846a3e3175b4dc4af1708071240e218489. No branch or history is deleted.

These historical results were inspected, not rerun. They do not qualify the current console, access, dedicated-companion or package candidate. Merging the old ledger/CURRENT edits would conflate candidates; archiving avoids that churn without losing the research.

Security integration and concrete failures

The implementation bounds private-console work before body processing, uses RAII to release admission on errors and cancellations, imposes absolute OTLP read deadlines and bounded connection/queue limits, and refuses Linux log paths with symlinks in any component. Peer pacing applies to /v1/console/; Batch ingestion retains its separate authenticated 16-permit admission path. The console's eight-requests/s peer budget is not a Spindle ingestion-rate cap.

PR 31 is merged at 6a3b9c90fe904cc7b377477bee4257190360187e; no open PR remains at this checkpoint. Head 2c1ceb2 passed focused security tests and the fast registry, but its full browser workflow failed at scoped Spindle enrollment with actual HTTP 429. The fixture's 10 probes/s exceeded the new 8 requests/s private peer budget before UI work. The extended run interrupted both mutation audits at 30 minutes and failed delivery startup because it looked under repository target/release while Cargo built on the data drive. Missing completion receipts correctly failed the final completeness check.

Prospective protocol revision 5 spaces explicit benign fixture probes/actions by 550 ms without replaying writes or retrying responses. A separate sixteen-read concurrent burst must produce native 429/no-store/Retry-After and then recover after refill. Server limits and every existing authorization assertion remain. The delivery harness resolves CARGO_TARGET_DIR and owns disk-backed scratch; mutation subprocesses reuse incremental compiler work in isolated copies. Full audit completion must be measured; no timeout is relabeled as passed.

Local finite browser trial release-triage-browser-01 exited 0 with 144 assertions on the security implementation plus these fixture changes: real resident owner and additional keys, scoped workflows, explicit overload/refill, exact data, no-store and cleanup. Console build 09 was unchanged; native binaries were fresh Rust 1.99 debug builds. Runtime was 90.470 seconds; cgroup peak 551.9 MiB under 4,000,000,000 bytes with no swap. This is finite integration evidence, not exact package, physical-passkey, mobile or release qualification.

Completed local checks

The earlier frozen source eb5b0960c65777248fb6231e61ef1baf922ee260 completed local fast and semantic checks. Its hosted fast and focused workflows passed; extended verification finished all ten commands with exit zero but failed final receipt completeness. The dirty-input failure and successor are described below. Earlier failed and canceled revisions remain historical.

Hosted receipts identify GitHub's proposed merge e35fdf9d94bc54e23716596ce97fbe41e9331f91, whose parents are reviewed main 225b165 and the frozen PR head. Its tree c3be94437f21281073e610d5d73c5ad36345b92a matches the PR head exactly. Downloaded fast receipts passed independent log, command and completeness validation: all 20 checks. Focused receipts passed their log-digest and minimum-count checks: 26 security regressions. The workflow checks also include the real Chrome console and its API-cache negative control; this remains finite integration evidence rather than a deployment qualification.

Check Observed result Boundary
Complete fast registry Exit 0; all 20 checks and independent receipt completeness validation passed on eb5b096; 443.011 s, 624.094 CPU s, 3 GiB cgroup peak under a 4 GiB cap Local workspace/validators; no installation or deployment qualification
Semantic controls Exit 0; all 31 registered defects rejected by their named checkers on eb5b096; 1,246.943 s, 1,390.619 CPU s, 2.9 GiB cgroup peak under 8 GiB Finite/property/symbolic controls; unchanged invariants and independent Python oracles
Compiler-generated mutations Exit 0 on 3305f0a: 286 mutations, 235 caught, 8 detected by timeout, 36 unviable, 7 reasoned equivalents; 470.999 s, 1,794.984 CPU s, 4.5 GiB cgroup peak under 6 GiB Historical local input; final-head hosted audit is recorded below
Delivery/recovery Exit 0 on 851d50b: all four scenarios × two seeds × 20 s passed the delivery oracle and TLC; 588 observed ACKs, 588 recovered records, companion included; 452.773 s, 506.783 CPU s, 1.3 GiB cgroup peak under 4 GiB Explicit legacy administration adapter; production console access is the separate native gate
Loss control Injected child exit 1, 35 ACKs / 34 recovered, only ACKED-DURABLE; strict grader exit 0 An unrelated startup/process/oracle failure cannot satisfy this control
Manual documentation Exit 0 on eb5b096; documentation, checker probes and hook tests passed; 35.653 s, 40.440 CPU s, 237.1 MiB cgroup peak under 2 GiB Authenticated historical Bun payload; temporary runtime removed; CI/hooks remain disabled

Fuzz input freeze repair

The eb5b096 hosted extended commands all exited zero, but dependency-policy and coverage-report recorded worktree_dirty=true after fuzzing. Receipt completeness exited 1 at the dependency receipt. This is a failed run. Local cargo metadata --manifest-path fuzz/Cargo.toml --locked --offline reproduced exit 101: the separate fuzz lock lacked the current server dependency graph. Unlocked offline resolution showed the missing graph and preserved the diff. A successful command on changed inputs does not establish candidate verification.

The successor refreshes that lock and checks it before and after fuzzing. Cargo-fuzz 0.13.2 exposes no --locked flag; locked metadata resolution precedes its build, then a digest guard rejects any trial-time rewrite. No lock is reset to conceal a failure. Four targets, committed seeds, 60-second windows and 2,048 MiB per-target RSS limits remain unchanged.

Final receipt validation now checks the live worktree as well as recorded flags. Real Git fixtures reject tracked and untracked changes after the frozen identity; fuzz controls reject stale locks before target execution and in-trial rewrites. The 17 CI contract checks, locked offline resolution, counterexample registry and formatting exited 0. Manual documentation checks on 1777e66 exited 0 in 22.260 s, 30.884 CPU s, with 237.6 MiB cgroup peak under 2 GiB; temporary Bun was removed and hooks/CI stayed disabled. Both defects have deterministic fixtures and separately committed counterexample registrations.

The previous source was frozen at 1777e66c23ba72d716bf066f8c30cc1181edd1e1. Hosted proposed merge 4685c7ea29f04630a48ab86caab77aa529e322b3 has reviewed main 225b165 and that head as parents; its tree is c4c74f238f9862734a759e82ff280e666106b65b. Fast, focused and extended workflows were the matching merge requirement. Fast and focused workflows succeeded; extended mutation testing exceeded its 30-minute deadline. The workflow was canceled after that recorded failure to avoid further work on an already failed candidate. Its proof step completed; fuzzing was interrupted and downstream coverage/completeness did not establish success. No merge is claimed.

Full local fast verification on 1777e66 subsequently exited 0: all 20 checks and final live-state/log/completeness validation passed. Runtime was 411.238 s, CPU time 544.008 s, and cgroup peak 389.6 MiB under 4 GiB with no swap. This reused local build caches; it is not a benchmark speedup claim.

The real four-target fuzz successor on 1777e66 exited 0, kept the lock unchanged and left a clean worktree: 265.915 s, 226.620 CPU s, 1.1 GiB cgroup peak under 8 GiB with no swap. Each unchanged 60-second setting reported 61 s in libFuzzer's coarse timer. Batch/query/frame/observation targets completed 5,903,531 / 2,044,651 / 73,044 / 1,568,233 executions (9,589,459 total) with seeds 1464711936 / 3216923162 / 505096747 / 1943307332. This is bounded search, not proof that no malformed input can fail. Stable 1.99 ran xtask; fuzzing used the installed nightly and previously validated data-drive GCC 16.2.1 C++ toolchain.

Two earlier local launch attempts remain unsuccessful: the first could not select nightly through its direct-Cargo PATH and did not run a trial; the next failed C++ compilation because c++ was absent from PATH (318.670 s, 618.032 CPU s, 5.7 GiB peak under 8 GiB). Compiler logs were preserved before the successor; the installed data-drive toolchain resolved this without host installation.

Earlier mutation and fixture failures

Bounded verifier successor

The final hosted mutation attempt above exited 2 after 1,807.227 seconds; systemd reported 16 min 33.550 s CPU, 11.2G cgroup peak and zero swap. Its active audit transcript was lost: the registry buffered stdout/stderr until exit, and the artifact did not include raw mutation outcomes. That limits attribution of the hosted timeout.

A selected after_page -> true diagnostic on 1777e66 reproduced a separate allocation mechanism: test clients drained nonadvancing pages indefinitely. With a five-second test window, the mutant timed out (exit 3; 7.768 s service, 18.503 CPU s, 1.9G cgroup peak under 4 GiB). The test-only successor validates strict key progress within rows.len() + 1 pages, then runs the original complete-drain assertions. The same selected mutant was caught without timeout (exit 0; 4.515 s service, 15.115 CPU s, 844M peak). These include compilation and cache differences; they are diagnostics, not an isolated heap or speedup claim. Product query and Python oracle semantics remain unchanged.

A forced-stop output regression exited 101 before repair and 0 after it. The registry now writes separate partial streams before waiting; completed log ordering and its exact existing hash assertions remain. Interrupted streams never count as completion. Hosted artifacts also retain raw mutation outcomes.

The registered protocol and separately committed counterexamples preserve both defects. Source ed4b95ce885e8c152d9dd658ef31c8a478ca5b6d is the clean successor and was pushed only after complete local checks. Targeted core/xtask tests, Clippy and all 17 CI contract tests exited 0. Clean-source manual documentation checks exited 0 in 41.337 s, 48.088 CPU s, with 236.2M peak under 2 GiB. The first manual invocation omitted required --out and exited 2; that failed invocation remains preserved. Its complete fast registry exited 0: all 20 checks and independent final receipt/log/live-input validation passed; 500.432 s service, 732.932 CPU s, 3G cgroup peak under 4 GiB. The complete compiler audit exited 0: the same 286 mutations, 242 caught, seven reasoned equivalents, 36 unviable and one timeout; 383.493 s service, 1,611.628 CPU s, 2.1G peak under 6 GiB. Seven former paging timeouts now fail assertions. Both ran concurrently with other contained validation, so timings are observations rather than a controlled speed comparison. Locked offline fuzz resolution also exited 0.

Matching hosted checks are fast, focused, and extended. All three succeeded. Downloaded artifacts passed independent receipt/log/input validation with exit 0: all 20 fast checks, all ten extended checks and 26 focused security regressions. Hosted compiler outcomes contain 286 mutations: 242 caught, seven reasoned equivalents, 36 unviable and one timeout. Its recorded check duration was 334.097 seconds. This is observational rather than a controlled speed comparison with the failed predecessor.

The tested proposed merge was e4056b098c1d2c7d7b1d382d817c9839ed102b95. The actual merge 6a3b9c90fe904cc7b377477bee4257190360187e has the same parents, reviewed main 225b165 and source ed4b95c, and the same tree 61f2d7a059633e145f011b1c62c1871811b5730d. Merge-commit integration preserves the separate specification and implementation commits. Issue 32 B9 is complete; the remaining exact-package/deployment acceptance cells remain distinct.

The first complete mutation audit used a shared absolute Cargo target and was contaminated: per-worker logs showed that known tested defects ran another tree's executable. Worker-local targets repaired that evidence boundary. The isolated audit then exposed missing cases: exact mixed integer/double lower bounds, forward bindings added after promotion, inclusive source bounds, query filters, equal-time keys, overlapping sources and budget cuts. Literal expected outcomes and a bounded relational reference cover them. A source whose maximum timestamp equals a cursor timestamp can still hold larger full identity keys; pruning it is not an equivalent optimization.

The first complete semantic successor exited 1 after 1,772.091 s. Two controls still edited the frozen legacy reference instead of the production binding lookup; the remote-config mutation targeted a moved validation line. These failures were retained. The repaired controls perturb production, add a deterministic unbound third-credential witness, and preserve the named expected failures. Kani negatives run those same named proofs, while the separate core proof gate retains all eleven positive harnesses. This removes repeated unrelated proof work rather than reducing the symbolic domain or sampling fewer cases.

The earlier local fast run exited 1 on a redundant borrow introduced in the launcher refactor; Clippy rejected it. The borrow was corrected without disabling the lint. The final unchanged-source run above passed. Locally overlapping earlier runs remain diagnostics and are not combined into final-candidate qualification.

Completed semantic source/build scratch and disposable TLS/control fixtures were removed after preserving logs, mutation diffs/outcomes, heap-control receipts and sanitized delivery transcripts with archive hashes. Fixture secrets were discarded. Persistent owned build caches and compact evidence remain on the data drive. Final local cleanup exited 0 and removed owned mutation scratch and temporary documentation dependencies after archive validation. The full project directory used 79,763,619,840 allocated bytes (79.76 decimal GB, 74.29 GiB) at 18:57:30 UTC, including persistent caches and evidence; it remained below the 100 GB experiment cap. The original checkout's unrelated tracked edit was preserved.

Raw CI logs/artifacts, local logs and containment receipts are retained under /run/media/kmosoti/data/FabricO11y/evidence/release-triage-2026-10-11 and its linked data-drive results. Current-candidate package, service, recovery and device cells remain in issue 32. No release tag or new deployment qualification is claimed by this integration result.