Skip to content

Bound external digest execution - #63

Merged
flyingrobots merged 15 commits into
mainfrom
maintenance/bounded-b3sum
Jul 29, 2026
Merged

Bound external digest execution#63
flyingrobots merged 15 commits into
mainfrom
maintenance/bounded-b3sum

Conversation

@flyingrobots

Copy link
Copy Markdown
Owner

Problem

Golden-file and conformance checks owned divergent b3sum process lifecycles. Input, output, and failed-process cleanup were not all bounded by an explicit contract.

Invariant

Every external digest returns the exact bytes produced for its admitted preimage within declared resource bounds, or returns a typed refusal. No post-spawn input, output, or cleanup wait is unbounded.

Approach

  • Add one shared Rust external-digest adapter for both callers.
  • Bound nonblocking input, captured output, diagnostics, status handling, and per-step cleanup.
  • Preserve primary failures while retaining cleanup context.
  • Keep each caller responsible for its protocol preimage.
  • Record the operational and dependency contracts in living documentation.

Alternatives rejected

  • Retaining two subprocess adapters would preserve policy drift.
  • Moving input to an unbounded writer thread would move the hang instead of bounding it.
  • Reimplementing BLAKE3 in the orchestration layer would erase the independent-oracle boundary.

Failure modes

Spawn, environment, input, output, exit-status, encoding, deadline, interruption, and cleanup failures remain distinct typed errors.

Tests

Passed formatting; workspace checks, Clippy, debug, release, doctests, and Rust 1.96; Golden, conformance, source-structure, and full xtask verify; fuzz formatting/check/Clippy; dependency deny/audit; workflow lint; Markdown and diff checks.

Benchmark impact

No production data path changed. The bounded adapter is maintenance orchestration and introduces no benchmark obligation.

Format/API compatibility

No durable format, identity preimage, or public API changed. The affected surface is private to xtask.

Recovery implications

No Keep data is written. Recovery is limited to bounded subprocess teardown.

Security implications

The child environment is cleared except for the executable search path and deterministic locale; input, output, diagnostics, time, and cleanup are bounded.

Closes #59

@coderabbitai

coderabbitai Bot commented Jul 29, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@flyingrobots, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 35 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 9de6a828-165b-4734-8e6b-900fd15e0175

📥 Commits

Reviewing files that changed from the base of the PR and between c11c7df and 46fb8d3.

📒 Files selected for processing (12)
  • docs/adr/0007-terminal-signal-process-group-guard.md
  • docs/adr/0008-deadline-bounded-reader-retirement.md
  • docs/adr/README.md
  • docs/dependencies/blake3-1.8.5.md
  • xtask/src/external_digest.rs
  • xtask/src/external_digest/tests.rs
  • xtask/src/golden_file_worldline/b3sum_oracle.rs
  • xtask/src/golden_file_worldline/error.rs
  • xtask/src/golden_file_worldline/mod.rs
  • xtask/src/golden_protocol_fuzz.rs
  • xtask/src/protocol_conformance/external_digest.rs
  • xtask/tests/process_policy_contract.rs

Walkthrough

A shared b3sum adapter now handles deadline-bounded input streaming, output limits, process-group cleanup, reader retirement, and typed failures for Golden File Worldline and protocol conformance.

Changes

External digest boundary

Layer / File(s) Summary
Bounded capture and streaming input
xtask/src/bounded_process*, xtask/Cargo.toml
Adds nonblocking, deadline-aware stdin streaming and bounded capture integration.
Deadline cleanup and reader retirement
xtask/src/bounded_process/cleanup.rs, xtask/src/bounded_process/reader.rs, xtask/src/bounded_process/error.rs
Replaces unbounded waits and joins with process-group termination, deadline-based reaping, reader retirement, and preserved typed errors.
Shared b3sum adapter and validation
xtask/src/external_digest*, xtask/src/main.rs
Adds hermetic b3sum execution, exact digest validation, diagnostic handling, and regression tests.
Digest witness migration and error contracts
xtask/src/golden_file_worldline/*, xtask/src/protocol_conformance/*
Routes both witnesses through the shared adapter and updates their error types and mappings.
Policy, dependency, and documentation alignment
xtask/tests/*, docs/..., CHANGELOG.md
Updates policy tests, Rustix feature admission, and documentation for the shared process boundary.

Estimated code review effort: 4 (Complex) | ~60 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Checker
  participant ExternalDigest
  participant BoundedProcess
  participant b3sum
  Checker->>ExternalDigest: build digest-specific preimage
  ExternalDigest->>BoundedProcess: execute b3sum with deadline and limits
  BoundedProcess->>b3sum: stream stdin
  b3sum-->>BoundedProcess: bounded stdout and stderr
  BoundedProcess-->>ExternalDigest: process result or typed failure
  ExternalDigest-->>Checker: exact digest or propagated error
Loading

Possibly related PRs

  • flyingrobots/keep#60: Introduced the earlier protocol-conformance external digest process path that this PR centralizes.
  • flyingrobots/keep#61: Modified the bounded-process teardown pipeline that this PR further changes to reader retirement.

Poem

Two witnesses call one bounded gate,
While stdin streams and clocks await.
Pipes are capped, child groups fall,
Typed errors remember all.
b3sum returns—or cleanup calls.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title is concise and accurately names the primary change: bounding external digest execution.
Description check ✅ Passed The description follows the template well and covers the required sections with enough implementation, test, and impact detail.
Linked Issues check ✅ Passed The changes match #59: one bounded adapter, deadline-before-write, bounded stdout/stderr, kill/reap cleanup, and migration of both callers.
Out of Scope Changes check ✅ Passed I don't see unrelated additions; the docs, dependency, and test updates all support the shared bounded-digest boundary.
Docstring Coverage ✅ Passed Docstring coverage is 94.03% which is sufficient. The required threshold is 80.00%.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Copy link
Copy Markdown
Owner Author

Self-audit activity summary

The branch was audited against origin/main under the repository's determinism, boundedness, architecture, documentation, and source-size contracts. Every discovered issue was resolved in its own commit before publication.

Source Priority Issue Evidence Commit Outcome
Self P1 Successful or repeatedly interrupted stdin writes could bypass deadline observation. xtask/src/bounded_process/input.rs f146939 Deadline and interruption checked before every write attempt.
Self P3 A mixed source-policy test file crossed the 300-line review threshold. xtask/tests/source_policy_contract.rs 2cd86a2 Process and source policies split by semantic ownership.
Self P3 Documentation implied synchronous spawn itself was interruptible. docs/conformance/golden-file-worldline.md 61d280e Contract now distinguishes pre-spawn clock start from post-spawn bounded work.
Self P1 Failed-process cleanup could block forever in wait or reader-thread joins. xtask/src/bounded_process/cleanup.rs, reader.rs 380bee8 Child reaping and reader retirement are deadline-bounded.
Self P1 Cleanup wrapping exposed the cleanup error as source() and obscured the primary failure. xtask/src/bounded_process/error.rs 3604131 Primary error remains the source; cleanup detail remains visible.
Self P2 Subsecond timeouts rendered as a false 0-second diagnostic. xtask/src/bounded_process/error.rs 4dbc982 Exact Duration values are preserved.
Self P4 A relative cleanup grace was named and documented like an absolute deadline. xtask/src/bounded_process/cleanup.rs, docs c11c7df Code and docs consistently say per-step cleanup grace.

No unresolved self-audit findings remain. Full local validation is green at c11c7df; the PR is ready for independent review.

@codex please confirm the findings and inspect for any missed correctness, determinism, cleanup, or documentation defects.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: c11c7df193

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread xtask/src/bounded_process/reader.rs
Comment thread xtask/src/external_digest/tests.rs Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
xtask/src/bounded_process/error.rs (1)

121-135: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Preserve the cleanup failure in the Error::source() chain.

Cleanup::source() returns the primary so chain-walking skips the io::Error that represents the failed termination/kill/reap action. Return the cleanup source itself, or wrap Cleanup around the primary so the standard .source() chain keeps the full diagnostic cause instead of dropping the OS-level cleanup failure from error-reporting tooling.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@xtask/src/bounded_process/error.rs` around lines 121 - 135, Update
ProcessError::source so the Cleanup variant exposes its cleanup failure source
in the standard error chain instead of returning only primary. Keep Additional
returning primary, and ensure Cleanup preserves both the primary error context
and the termination/kill/reap io::Error for error-reporting consumers.

Source: Coding guidelines

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@CHANGELOG.md`:
- Around line 102-105: Update finish in xtask/src/bounded_process/capture.rs so
wait_for_child timeout or failure invokes cleanup_process before propagating the
typed failure, matching the cleanup behavior of the receive paths. With that
root-cause fix, CHANGELOG.md lines 102-105,
docs/conformance/golden-file-worldline.md lines 165-167, and
docs/dependencies/blake3-1.8.5.md lines 26-29 require no direct changes because
their process-group kill/reap claims become enforced.

In `@docs/dependencies/blake3-1.8.5.md`:
- Around line 26-29: Trim the BLAKE3 dependency admission text to state only
that the external cross-check exists and mismatches are refused. Remove the
subprocess mechanics from the paragraph, including streaming, independent output
bounds, and process-group kill/reap details, and cross-reference the established
process-adapter documentation instead.

In `@xtask/src/golden_file_worldline/b3sum_oracle.rs`:
- Around line 15-21: The u64::try_from conversion in identity_digest is
guaranteed to succeed on all supported targets, so do not treat its
GoldenError::violation branch as meaningful or tested coverage. Prefer
simplifying the payload length conversion without the unreachable violation
handling, while preserving the existing big-endian digest encoding.

In `@xtask/src/golden_file_worldline/error.rs`:
- Around line 14-16: Change GoldenError::ExternalDigest to store the concrete
ExternalDigestError, matching the typed ConformanceError boundary. Update its
constructor and the sole b3sum_oracle.rs call site as needed, preserving direct
pattern matching for specific ExternalDigestError variants without boxed
trait-object allocation.

In `@xtask/src/protocol_conformance/external_digest.rs`:
- Around line 3-9: Remove the local DIGEST_BYTES declaration in digest and
import the existing crate::external_digest::DIGEST_BYTES instead. Ensure
external_digest exposes DIGEST_BYTES as pub(crate), while preserving the digest
function’s return type and existing behavior.

In `@xtask/tests/process_policy_contract.rs`:
- Around line 37-40: Strengthen the policy assertions in the relevant test by
also checking CONFORMANCE_B3SUM for the absence of “.wait()” and “.write_all(”,
matching the existing GOLDEN_B3SUM checks. Keep the current delegation-shape
assertions unchanged.

---

Outside diff comments:
In `@xtask/src/bounded_process/error.rs`:
- Around line 121-135: Update ProcessError::source so the Cleanup variant
exposes its cleanup failure source in the standard error chain instead of
returning only primary. Keep Additional returning primary, and ensure Cleanup
preserves both the primary error context and the termination/kill/reap io::Error
for error-reporting consumers.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: f71b8bd0-766c-4490-bf46-9ffa76fd3965

📥 Commits

Reviewing files that changed from the base of the PR and between d0f1ec5 and c11c7df.

📒 Files selected for processing (21)
  • CHANGELOG.md
  • docs/conformance/golden-file-worldline.md
  • docs/dependencies/blake3-1.8.5.md
  • docs/dependencies/cap-std-and-cap-fs-ext-4.0.2.md
  • xtask/Cargo.toml
  • xtask/src/bounded_process.rs
  • xtask/src/bounded_process/capture.rs
  • xtask/src/bounded_process/cleanup.rs
  • xtask/src/bounded_process/error.rs
  • xtask/src/bounded_process/input.rs
  • xtask/src/bounded_process/reader.rs
  • xtask/src/external_digest.rs
  • xtask/src/external_digest/tests.rs
  • xtask/src/golden_file_worldline/b3sum_oracle.rs
  • xtask/src/golden_file_worldline/error.rs
  • xtask/src/main.rs
  • xtask/src/protocol_conformance/error.rs
  • xtask/src/protocol_conformance/external_digest.rs
  • xtask/src/protocol_conformance/external_digest/tests.rs
  • xtask/tests/process_policy_contract.rs
  • xtask/tests/source_policy_contract.rs
💤 Files with no reviewable changes (2)
  • xtask/src/protocol_conformance/external_digest/tests.rs
  • xtask/tests/source_policy_contract.rs
📜 Review details
⏰ Context from checks skipped due to timeout. (2)
  • GitHub Check: Runtime fuzz smoke
  • GitHub Check: Rust quality gates
🧰 Additional context used
📓 Path-based instructions (4)
**/*.{rs,toml}

📄 CodeRabbit inference engine (AGENTS.md)

Use stable, pinned Rust with edition 2024; cargo fmt --check and Clippy with -D warnings must pass.

Files:

  • xtask/tests/process_policy_contract.rs
  • xtask/src/main.rs
  • xtask/Cargo.toml
  • xtask/src/bounded_process.rs
  • xtask/src/external_digest/tests.rs
  • xtask/src/external_digest.rs
  • xtask/src/bounded_process/input.rs
  • xtask/src/golden_file_worldline/b3sum_oracle.rs
  • xtask/src/bounded_process/error.rs
  • xtask/src/golden_file_worldline/error.rs
  • xtask/src/protocol_conformance/external_digest.rs
  • xtask/src/bounded_process/cleanup.rs
  • xtask/src/bounded_process/capture.rs
  • xtask/src/bounded_process/reader.rs
  • xtask/src/protocol_conformance/error.rs
**/*.rs

📄 CodeRabbit inference engine (AGENTS.md)

**/*.rs: Do not use unwrap, expect, panic!, todo!, unimplemented!, dbg!, stdout/stderr printing, unchecked indexing, lossy casts, or unsafe code. Unsafe requires a dedicated crate with documented invariants, tests, and measured necessity.
Use checked arithmetic for externally influenced values and TryFrom/try_from instead of potentially lossy as conversions.
Public functions must not take boolean parameters; use enums instead. Prefer typed newtypes for IDs, lengths, offsets, generations, and namespaces.
Parse and validate untrusted bytes before admitting them as trusted types; make illegal states unrepresentable where practical.
Prefer concrete types, synchronous core APIs, and traits only at real substitution boundaries; do not introduce async without demonstrated consumer need.
Do not let HashMap iteration order affect identity, serialization, tests, or behavior.
Use hexagonal architecture: domain and port modules own invariants and semantic capabilities, dependencies point inward, and core/ports must not import adapters, filesystems, networks, CLIs, runtimes, or application policy.
Keep codecs at ingress and egress boundaries. Ports exchange semantic or validated types, not serializer-owned JSON, CBOR, or wire values.
Keep files near 200 lines, review files over 300, and do not exceed 500; keep functions near 20 logical lines, review over 40, do not exceed 60; limit nesting to 3 and parameters to 5.
Do not create generic utils.rs, helpers.rs, common.rs, misc.rs, shared.rs, manager.rs, service.rs, types.rs, or models.rs; name files after the concept they own.
Keep items private by default; use pub(crate) unless external consumers require public visibility. Public validated types must have private fields and checked constructors, and consequential staged work, plans, commits, and results should use #[must_use].
Use Option for normal absence, typed errors by boundary, preserved error sources, and expected/observed state in...

Files:

  • xtask/tests/process_policy_contract.rs
  • xtask/src/main.rs
  • xtask/src/bounded_process.rs
  • xtask/src/external_digest/tests.rs
  • xtask/src/external_digest.rs
  • xtask/src/bounded_process/input.rs
  • xtask/src/golden_file_worldline/b3sum_oracle.rs
  • xtask/src/bounded_process/error.rs
  • xtask/src/golden_file_worldline/error.rs
  • xtask/src/protocol_conformance/external_digest.rs
  • xtask/src/bounded_process/cleanup.rs
  • xtask/src/bounded_process/capture.rs
  • xtask/src/bounded_process/reader.rs
  • xtask/src/protocol_conformance/error.rs
**/*.{rs,json,cbor}

📄 CodeRabbit inference engine (AGENTS.md)

**/*.{rs,json,cbor}: Identity, persistence, comparison, tests, and protocol behavior must be deterministic and independent of iteration order, host state, clocks, locale, and serializer defaults.
Boundary JSON and CBOR must use a named canonical profile with golden fixtures; reject duplicate fields and noncanonical identity-bearing encodings. Hash only typed, domain-separated canonical bytes.

Files:

  • xtask/tests/process_policy_contract.rs
  • xtask/src/main.rs
  • xtask/src/bounded_process.rs
  • xtask/src/external_digest/tests.rs
  • xtask/src/external_digest.rs
  • xtask/src/bounded_process/input.rs
  • xtask/src/golden_file_worldline/b3sum_oracle.rs
  • xtask/src/bounded_process/error.rs
  • xtask/src/golden_file_worldline/error.rs
  • xtask/src/protocol_conformance/external_digest.rs
  • xtask/src/bounded_process/cleanup.rs
  • xtask/src/bounded_process/capture.rs
  • xtask/src/bounded_process/reader.rs
  • xtask/src/protocol_conformance/error.rs
**/*.{rs,bin}

📄 CodeRabbit inference engine (AGENTS.md)

Durable formats must define magic bytes, versioning, canonical encoding, explicit endianness, bounds, checksums, and golden fixtures; reject trailing bytes, duplicate fields, noncanonical encodings, overflow, invalid ordering, excessive depth, and unknown mandatory flags. Do not use arbitrary Serde or Rust struct output as a durable format.

Files:

  • xtask/tests/process_policy_contract.rs
  • xtask/src/main.rs
  • xtask/src/bounded_process.rs
  • xtask/src/external_digest/tests.rs
  • xtask/src/external_digest.rs
  • xtask/src/bounded_process/input.rs
  • xtask/src/golden_file_worldline/b3sum_oracle.rs
  • xtask/src/bounded_process/error.rs
  • xtask/src/golden_file_worldline/error.rs
  • xtask/src/protocol_conformance/external_digest.rs
  • xtask/src/bounded_process/cleanup.rs
  • xtask/src/bounded_process/capture.rs
  • xtask/src/bounded_process/reader.rs
  • xtask/src/protocol_conformance/error.rs
🧠 Learnings (1)
📚 Learning: 2026-07-27T22:37:16.896Z
Learnt from: flyingrobots
Repo: flyingrobots/keep PR: 49
File: src/layout/record_length.rs:29-29
Timestamp: 2026-07-27T22:37:16.896Z
Learning: This repository targets Rust 1.96 (per `Cargo.toml` `rust-version` and `rust-toolchain.toml`). When writing or reviewing Rust code, only use APIs/language features stabilized in Rust 1.96 or earlier. Avoid using newer std/library APIs that wouldn’t be available on Rust 1.96 (e.g., you may rely on `u64::is_multiple_of` since it’s stabilized by 1.96).

Applied to files:

  • xtask/tests/process_policy_contract.rs
  • xtask/src/main.rs
  • xtask/src/bounded_process.rs
  • xtask/src/external_digest/tests.rs
  • xtask/src/external_digest.rs
  • xtask/src/bounded_process/input.rs
  • xtask/src/golden_file_worldline/b3sum_oracle.rs
  • xtask/src/bounded_process/error.rs
  • xtask/src/golden_file_worldline/error.rs
  • xtask/src/protocol_conformance/external_digest.rs
  • xtask/src/bounded_process/cleanup.rs
  • xtask/src/bounded_process/capture.rs
  • xtask/src/bounded_process/reader.rs
  • xtask/src/protocol_conformance/error.rs
🔇 Additional comments (18)
xtask/src/main.rs (1)

22-26: LGTM!

xtask/src/external_digest.rs (1)

1-164: LGTM!

xtask/src/external_digest/tests.rs (1)

1-104: LGTM!

xtask/src/golden_file_worldline/error.rs (1)

63-101: LGTM!

xtask/src/protocol_conformance/error.rs (1)

11-17: LGTM!

Also applies to: 39-41, 65-65, 99-104

docs/conformance/golden-file-worldline.md (1)

161-164: LGTM!

Also applies to: 168-169

docs/dependencies/cap-std-and-cap-fs-ext-4.0.2.md (2)

28-33: LGTM!

Also applies to: 109-111


66-66: 📐 Maintainability & Code Quality

No change needed. The manifest enables rustix = { …, features = ["fs", "process", "std"] } under repository-tasks, matching the documented dependency admission.

xtask/tests/process_policy_contract.rs (2)

49-80: LGTM!


244-248: 🎯 Functional Correctness

No change needed for require_docs indentation handling.

split_once(declaration) preserves the preceding token before the indented item, so the reverse scan skips attributes and lands on the declaration’s preceding /// when present. Indented declarations are not systematically reported as missing rustdoc.

			> Likely an incorrect or invalid review comment.
xtask/src/golden_file_worldline/b3sum_oracle.rs (1)

22-28: 🗄️ Data Integrity & Integration

No change needed. The post-content logical_length ordering matches ADR-0001 and the production hash preimage for non-encoded preimages.

xtask/src/bounded_process.rs (1)

8-8: LGTM!

Also applies to: 18-18

xtask/src/bounded_process/capture.rs (1)

8-9: LGTM!

Also applies to: 22-24, 49-49, 62-82, 130-130, 155-156, 172-195

xtask/src/bounded_process/input.rs (1)

1-156: LGTM!

xtask/Cargo.toml (1)

35-36: LGTM!

xtask/src/bounded_process/cleanup.rs (1)

5-13: LGTM!

Also applies to: 14-25, 27-44, 46-71, 73-87, 88-93, 95-115

xtask/src/bounded_process/error.rs (1)

8-15: LGTM!

Also applies to: 48-48, 85-92, 113-116, 136-180

xtask/src/bounded_process/reader.rs (1)

6-6: LGTM!

Also applies to: 16-16, 46-46, 59-59, 70-70, 82-117, 134-174

Comment thread CHANGELOG.md
Comment thread docs/dependencies/blake3-1.8.5.md Outdated
Comment thread xtask/src/golden_file_worldline/b3sum_oracle.rs
Comment thread xtask/src/golden_file_worldline/error.rs
Comment thread xtask/src/protocol_conformance/external_digest.rs Outdated
Comment thread xtask/tests/process_policy_contract.rs Outdated

Copy link
Copy Markdown
Owner Author

Additional self-review finding

The post-remediation full matrix found and resolved one issue that was not present in the original review threads.

Source Priority File Finding RED evidence Commit Outcome
Self P1 xtask/src/golden_file_worldline/error.rs, xtask/src/golden_protocol_fuzz.rs Making the Golden digest error concrete accidentally coupled the dependency-free fuzz library to a binary-only repository-task module. cargo check --workspace --all-targets --all-features --locked failed with unresolved crate::external_digest. 46fb8d3 The reusable error shape is generic; production binds ExternalDigestError, fuzz binds Infallible; exact typed matching remains intact.

The failing all-target build, targeted typed-error regression, all feature combinations, and full local matrix are now green at 46fb8d3.

@codex please confirm this repair and inspect the updated head for any remaining target-boundary or type-erasure defects.

Copy link
Copy Markdown
Owner Author

Activity Summary

All review and self-audit items are closed. Each valid defect was handled in an isolated RED → GREEN → VERIFY → COMMIT cycle; informational or false-positive items were resolved with code-path evidence rather than churn.

# Source Priority Area Commit Outcome
1 CodeRabbit P1 Child-wait cleanup claim Verified false positive: every wait_for_child error already invokes cleanup_process.
2 Codex P1 Reader-retirement concurrency decision 8b79ffb Added and indexed ADR-0008; aligned ADR-0007; policy and docs gates green.
3 Codex P2 Wall-clock escape in blocking fixture 4439dd0 Helper now parks until killed; mutation-policy and real timeout tests green.
4 CodeRabbit P2 Golden digest error type erasure 6d5cd18, 46fb8d3 Production retains concrete variants without allocation; fuzz facade remains isolated.
5 CodeRabbit P3 Duplicated process mechanics in BLAKE3 admission 716be07 Dependency page now owns digest facts and routes process policy to one reference.
6 CodeRabbit P4 Duplicated digest width 01f43d1 One documented adapter-owned DIGEST_BYTES constant.
7 CodeRabbit P4 Asymmetric caller-policy assertions affd8bc Both callers reject direct spawn, wait, and write ownership.
8 CodeRabbit P5 Infallible checked length conversion Informational: retained policy-required TryFrom; no impossible negative test fabricated.
9 Self P1 All-target fuzz-facade coupling 46fb8d3 Generic reusable error shape binds concrete production and Infallible fuzz sources.

Final evidence at 46fb8d3:

  • local formatting, all-feature/minimal-feature checks and Clippy, Rust 1.96, debug, release, and doctests: passed;
  • Golden, conformance, source-structure, and full xtask verify: passed;
  • fuzz formatting/check/Clippy, dependency deny/audit, and workflow lint: passed;
  • repository diff/whitespace, Python absence, and Rust source-size gates: passed;
  • GitHub Rust quality, documentation/workflow, runtime fuzz smoke, dependency policy, and CodeRabbit: passed;
  • unresolved review threads: 0.

No amend, rebase, force-push, draft PR, Python script, public API change, durable-format change, or Keep data mutation occurred.

@flyingrobots
flyingrobots merged commit be57049 into main Jul 29, 2026
5 checks passed
@flyingrobots
flyingrobots deleted the maintenance/bounded-b3sum branch July 29, 2026 06:05
@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. More of your lovely PRs please.

Reviewed commit: 46fb8d3ed8

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Unify bounded b3sum process execution in xtask

1 participant