8000 feat(bep): attribute a host-address redemption to its cohort and mark the audit by minimal-foundry[bot] · Pull Request #2511 · gominimal/minimal · GitHub
[go: up one dir, main page]

Skip to content

feat(bep): attribute a host-address redemption to its cohort and mark the audit - #2511

Merged
norrietaylor merged 6 commits into
mainfrom
agent/2284-attribute-a-host-address-redemption-to-its-cohor
Oct 24, 2026
Merged

norrietaylor merged 6 commits into
mainfrom
agent/2284-attribute-a-host-address-redemption-to-its-cohor

Conversation

@minimal-foundry
@minimal-foundry minimal-foundry Bot commented Oct 24, 2026 •
Copy link
Copy Markdown
Contributor

T37 — Attribute a host-address redemption to its cohort and mark the audit

slice: S7
kind: task
covers: BEP-028
size: S
est: 100 code, 60 tests
executor: agent
difficulty: needs care
model: standard
diagnostics: min box audit <box> shows a cohort redemption marked cohort_attributed
observability: the connection span gains the cohort flag
layers:
- decide:
- crates/bep/src/redeem.rs: admits a host-address sender presenting a value naming a live host-address box, marked cohort_attributed
test: cargo nextest run -p bep host_ip_redemption_is_cohort_attributed
produces: none
consumes: none
proof: A host-address box redeems a value naming another live host-address box, and its audit record is marked cohort-attributed.
depends on:
- blocked by #2276

Proof

In crates/bep/src/redeem.rs, the redemption decision admits a host_ip sender that presents a value naming another live host_ip box of this host. The admission is Attributed::Cohort, and Decision::marker() gives cohort_attributed for it. The test host_ip_redemption_is_cohort_attributed shows this. It also shows that the same value is refused as cross_box when the named box is outside the cohort, and that the expiry and revocation checks still apply. Rounds 3 to 5 carried the marker into the audit log: Verdict::Admit carries decision.marker(), the forwarder writes it on the admitted record, and host_ip_redemption_is_cohort_attributed_in_the_audit_record in redeemer.rs shows the record. The forwarder also records cohort_attributed on the box_connection span after the substitution succeeds.

Notes from the agent: Before this task, decide() already admitted a cohort sender as Attributed::Cohort. This task adds Attributed::marker() (cohort_attributed for Cohort, None for OwnBox), Decision::marker() (the refusal marker or the attribution marker), Decision::cohort_attributed() as the span flag, and the named test. The only layer is redeem.rs, so I did not wire the marker into the audit record or the connection span. In redeemer.rs, Redeemer::redeem matches Decision::Admit { .. }, and Verdict::Admit has no marker field. forward.rs and proxy.rs write the admitted audit Decision with no marker. A follow-up must carry decision.marker() through Verdict::Admit into the audit record. It must also record decision.cohort_attributed() on the connection span. Rounds 3 to 5 made that change (redeemer.rs, forward.rs, proxy.rs, under the audit layer the owner added to #2284), so the diagnostics line holds end to end at 9c4bda7. I ran clippy -p bep --all-targets with no warnings, and cargo fmt --check is clean.

Tests

line exit tail
cargo nextest run -p bep host_ip_redemption_is_cohort_attributed 0 Applying loadouts: default Running task runtime-implement-test-0 in session task-runtime-implement-test-0-a34f... Compiling bep v0.0.1 (/workbench/crates/bep) Finished 'test' profile [unoptimized] target(s) in 19.58s ──────────── Nextest run ID 82fa10a3-e447-4350-9905-aa56e5f9748f with nexte

Verify

min task run agent-verify passed ([tasks.verify]).

Layer exception

Round 3 (2835db0) touched crates/bep/src/proxy.rs, outside the layers the PR header lists: one cohort_attributed = tracing::field::Empty line in the box_connection span declaration, plus the doc sentence that names the field. forward.rs records the field that proxy.rs declares, so the audit layer the owner added to #2284 for arch C1 cannot land without it. Accepted under the owner's layer-exception rule of 2026-10-19; #2284 and the plan now name proxy.rs in the audit layer.

Closes #2284


Generated by Claude Code

A host_ip sender that presents a value naming another live host_ip box
of this host is admitted as Attributed::Cohort. The decision now gives
the audit marker cohort_attributed for that admission, and a flag for
the connection span (BEP-028).
@coderabbitai
coderabbitai Bot commented Oct 24, 2026 •
Copy link
Copy Markdown
Contributor

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 58d6ef5d-cd53-4bb9-abdb-78b4d90cf4ac

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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

8000

@minimal-foundry
minimal-foundry Bot commented Oct 24, 2026 •
Copy link
Copy Markdown
Contributor Author

Approved: no findings at c6c0b8355ae5.

Nothing to do.

Clobber: none seen.

@minimal-arch minimal-arch 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.

arch-review: CONDITIONS · 2 conditions · the full ruling

The decision admits a host_ip cohort redemption correctly. But the audit record does not carry the cohort_attributed marker. Gatehouse §6.10 line 823 says cohort-sourced redemptions carry that marker. Redeemer::redeem drops the attribution, and forward.rs line 573 writes the admit with no marker. C1 carries Decision::marker() through Verdict::Admit into the record and widens T37's layers. C2 proves the marker on the audit record itself.

Ruled at 0b777b3 against gominimal/arch@109541a48c31 by claude-opus-5-5.

Comment thread crates/bep/src/redeem.rs Resolved
Comment thread crates/bep/src/redeem.rs Resolved
Comment thread crates/bep/src/redeem.rs Resolved
@minimal-foundry minimal-foundry Bot left a comment
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

minimal-review — advisory review

Verdict COMMENT — 1 finding, 1 inline.

Panel: 3 of 3 personas ran (correctness, security, supply-chain).

Comment thread crates/bep/src/redeem.rs Resolved
The cohort test now asserts the cross_box case that its doc comment
names. The cohort_attributed doc comment no longer says that a span
records the flag, because no span records it yet.
@minimal-foundry
Copy link
Copy Markdown
Contributor Author

Round 1 of 10 on the runtime's review findings, pushed as 412f30e604a0.

line exit tail
cargo nextest run -p bep host_ip_redemption_is_cohort_attributed 0 Applying loadouts: default Running task runtime-implement-test-0 in session task-runtime-implement-test-0-4ffe... Compiling bep v0.0.1 (/workbench/crates/bep) Finished 'test' profile [unoptimized] target(s) in 9.66s ──────────── Nextest run ID bdc5db9e-7d4d-423b-a2ad-1f438da745d9 with nextes

Verify min task run agent-verify passed.

Review threads the coder judged:

  • 👎 invalid — crates/bep/src/redeem.rs:378: The finding is correct about the code, but the fix is outside this task's layers. They name only redeem.rs. Carrying the marker through Verdict::Admit needs crates/bep/src/redeemer.rs and crates/bep/src/forward.rs (line 573). I recorded this in the notes for a follow-up task.
  • 👍 valid — crates/bep/src/redeem.rs: Corrected the doc comment on Decision::cohort_attributed: it now says no span records the flag yet. The box_connection span field is in forward.rs, which is outside this task's layers.
  • 👎 invalid — crates/bep/src/redeem.rs:1415: The send-based test belongs in crates/bep/src/redeemer.rs, which is outside this task's layers. It also needs the forward.rs change from the first thread before records[0].marker can be cohort_attributed. I recorded both in the notes for a follow-up task.
  • 👍 valid — crates/bep/src/redeem.rs: Added the OwnIp(NAMED + 1) case, which asserts Refuse(CrossBox) and the cross_box marker. Reworded the doc comment to name the own_ip address of another box.

Partly delivered. In crates/bep/src/redeem.rs, the decision admits a host_ip sender that presents a value naming another live host_ip box as Attributed::Cohort, and Decision::marker() gives cohort_attributed for it. The audit record that the forwarder writes does not carry the marker yet: redeemer.rs maps every admit to Verdict::Admit, and forward.rs line 573 records the admit with marker None. So min box audit <box> does not show cohort_attributed at this branch.

Notes from the agent: The task is cut too narrow for its proof. The layers name only crates/bep/src/redeem.rs. To put the marker in the audit record, crates/bep/src/forward.rs needs Verdict::Admit to carry the marker and record it at line 573, and to add a cohort_attributed field to the box_connection span. crates/bep/src/redeemer.rs needs to pass decision.marker() into Verdict::Admit, and needs a send-based test on records[0].marker. I did not touch those files. A follow-up task that names forward.rs and redeemer.rs in its layers must do this work. This round: the test now asserts the own_ip-from-another-box cross_box case, and the cohort_attributed doc comment no longer claims that a span records the flag.

@minimal-foundry minimal-foundry Bot left a comment
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

minimal-review — approval withheld

Verdict COMMENT — APPROVE withheld: 4 unresolved threads — minimal-arch[bot] crates/bep/src/redeem.rs:378, minimal-arch[bot] crates/bep/src/redeem.rs, minimal-arch[bot] crates/bep/src/redeem.rs:1415, minimal-foundry[bot] crates/bep/src/redeem.rs. No findings.

Panel: 3 of 3 personas ran (correctness, security, supply-chain).

@minimal-arch minimal-arch 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.

arch-review: CONDITIONS · 1 condition · the full ruling

The redemption decision and the new own_ip test case conform to Gatehouse §6.10 step 2. The audit record still does not carry cohort_attributed. Forwarder::decide writes every admit with marker: None (crates/bep/src/forward.rs:573), but §6.10 line 823 says that cohort-sourced redemptions carry the marker. Make the change in C1: carry Decision::marker() through Verdict::Admit into the audit record, and test the written record. Alternatively, link an open issue for that wiring in the PR body. Then the ruling becomes PASS_WITH_CONDITIONS with a residual.

Ruled at 412f30e against gominimal/arch@109541a48c31 by claude-opus-5-5.

Comment thread crates/bep/src/redeem.rs Resolved
@minimal-foundry
Copy link
Copy Markdown
Contributor Author

Round 2 of 10 on a failed check suite: the coder changed nothing. This round has no commit. Nothing that this round asks for is inside the task's layers. (1) cargo-deny fails on a new RUSTSEC vulnerability advisory (timing variability) in the ecdsa/rfc6979/primeorder chain that russh pulls in. It also warns that the ignore for RUSTSEC-2026-0009 in deny.toml matches no crate. This branch changes only crates/bep/src/redeem.rs, so the failure is in the dependency graph on the base branch. The fix goes in deny.toml or Cargo.lock, outside this task. (2) ci-success is the lane aggregator and runs exit 1 because cargo-deny failed. It has no failure of its own. (3) The audit half of the proof is a planning defect: the task names only redeem.rs. Carrying the marker into the audit record needs Verdict::Admit in crates/bep/src/forward.rs to gain a marker field. It also needs Redeemer::redeem in crates/bep/src/redeemer.rs to pass the marker through, and Forwarder::record (forward.rs about line 573) to write it. A follow-up task with those layers mu…[truncated]

Review threads the coder judged:

  • 👎 invalid — crates/bep/src/redeem.rs:378: The gap is real: forward.rs writes an admit with marker None, and Redeemer::redeem drops the Decision marker. The fix needs crates/bep/src/forward.rs (Verdict::Admit, Forwarder::record) and crates/bep/src/redeemer.rs. Neither file is in this task's layers, which name only redeem.rs. So the change go

Copy link
Copy Markdown
Member

/revise Carry the cohort attribution into the audit record and the span (arch C1 and C2 on review 5636951737, re-stated at 412f30e in review thread 4366094746). The task's layers were too narrow for the requirement, so #2284 now has an audit layer naming the files:

  • crates/bep/src/redeemer.rs: carry Decision::marker() through Verdict::Admit, so Redeemer::redeem no longer drops the attribution of a cohort admit (thread 4366080337).
  • crates/bep/src/forward.rs: write the admitted audit record with that marker instead of marker: None at line 573, and record cohort_attributed on the box_connection span, then restore the doc comment on Decision::cohort_attributed to say the span records it (thread 4366080340).
  • A send-based test in crates/bep/src/redeemer.rs named cohort_admit_is_recorded_cohort_attributed: records[0].marker is cohort_attributed for a cohort admit and None for an own-box admit (thread 4366080343, C2).

Gatehouse §6.10 line 823: cohort-sourced redemptions carry cohort_attributed in the audit. Keep the redeem.rs changes and the own_ip cross_box case from 412f30e as they are.


Generated by Claude Code

Verdict::Admit now carries the decision's marker and cohort flag. The
forwarder writes the admitted audit record with that marker, so a
host_ip cohort redemption is recorded cohort_attributed (BEP-028). It
also records cohort_attributed on the box_connection span, which
declares the field.
@minimal-foundry
Copy link
Copy Markdown
Contributor Author

Round 3 of 10 on a /revise note, pushed as 2835db096b50.

line exit tail
cargo nextest run -p bep host_ip_redemption_is_cohort_attributed 0 Applying loadouts: default Running task runtime-implement-test-0 in session task-runtime-implement-test-0-70b8... Compiling bep v0.0.1 (/workbench/crates/bep) Finished 'test' profile [unoptimized] target(s) in 10.53s ──────────── Nextest run ID 2713f062-441a-42a6-9b2f-debba5c880ba with nexte
cargo nextest run -p bep cohort_admit_is_recorded_cohort_attributed 0 Applying loadouts: default Running task runtime-implement-test-1 in session task-runtime-implement-test-1-b570... Finished 'test' profile [unoptimized] target(s) in 0.25s ──────────── Nextest run ID 886ba594-77eb-4e8b-ac02-97877c308ddf with nextest profile: default Starting 1 test across 2

Verify min task run agent-verify passed.

Outside the task's layers::

  • crates/bep/src/proxy.rs

Converted to a draft: something above needs a person before review.

Review threads the coder judged:

  • 👍 valid — crates/bep/src/redeem.rs:378: Verdict::Admit now carries Decision::marker(), and forward.rs writes the admitted audit record with it in place of None.
  • 👍 valid — crates/bep/src/redeem.rs:378: Redeemer::redeem passes the admission's marker through Verdict::Admit, and the forwarder records it, so a cohort admit is audited cohort_attributed.
  • 👍 valid — crates/bep/src/redeem.rs:1415: Added the send-based test cohort_admit_is_recorded_cohort_attributed in redeemer.rs: records[0].marker is cohort_attributed for a cohort admit and None for an own-box admit.

A host_ip box that redeems a value naming another live host_ip box is admitted. Its audit record now carries the marker cohort_attributed, so min box audit <box> shows it. An admission from the named box itself carries no marker. The box_connection span records cohort_attributed.

Notes from the agent: Out of layers: crates/bep/src/proxy.rs has one added line. It declares cohort_attributed = tracing::field::Empty on the box_connection span, and its doc comment changed to match. tracing ignores a record() call for a field that the span does not declare, so forward.rs cannot record the flag without this line. Verdict::Admit gained two fields, marker and cohort_attributed. I updated the three test redeemers in forward.rs to match. The redeem.rs changes and the own_ip cross_box case from 412f30e are unchanged, except for the cohort_attributed doc comment, which again says that the span records the flag. The cargo-deny failure is a RustSec advisory on the russh/ecdsa dependency tree, outside this task's layers. I did not change deny.toml or Cargo.lock. The whole bep suite passed (139 tests). clippy -p bep --all-targets and cargo fmt --check are clean.

@minimal-foundry
minimal-foundry Bot marked this pull request as draft October 24, 2026 05:33
@minimal-arch minimal-arch 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.

arch-review: PASS_WITH_CONDITIONS · 1 condition · the full ruling

The marker now reaches the audit record and the box_connection span, so BEP-028 conforms to Gatehouse §6.10 line 823. One gap remains. The BEP-028 verify filter host_ip_redemption_is_cohort_attributed selects only the decide() test, and that test does not read an audit record. The test that proves the audit half has a different name. Rename it as C1 says, and run the filter at this head.

Ruled at 2835db0 against gominimal/arch@109541a48c31 by claude-opus-5-5.

Comment thread crates/bep/src/redeemer.rs Resolved
@minimal-foundry minimal-foundry Bot left a comment
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

minimal-review — approval withheld

Verdict COMMENT — APPROVE withheld: 5 unresolved threads — minimal-arch[bot] crates/bep/src/redeem.rs:378, minimal-arch[bot] crates/bep/src/redeem.rs, minimal-arch[bot] crates/bep/src/redeem.rs:1415, minimal-foundry[bot] crates/bep/src/redeem.rs, minimal-arch[bot] crates/bep/src/redeem.rs:378. No findings.

Panel: 3 of 3 personas ran (correctness, security, supply-chain).

@minimal-foundry
Copy link
Copy Markdown
Contributor Author

Revise round 2 ran against ci-success, cargo-deny and left it red; a coder round cannot clear it, a person should look. No round was started for the failed suite on 2835db096b50.

@norrietaylor
norrietaylor marked this pull request as ready for review October 24, 2026 05:40
Copy link
Copy Markdown
Member

/revise One rename for arch C1 at 2835db0 (review thread 4366138662): the audit-half test in crates/bep/src/redeemer.rs is named cohort_admit_is_recorded_cohort_attributed, so the spec's verify filter cargo nextest run -p bep host_ip_redemption_is_cohort_attributed does not select it. Rename it to host_ip_redemption_is_cohort_attributed_in_the_audit_record, run that filter at the new head and put both selected tests in the Tests table. #2284's audit layer now names the new test. No other change: arch ruled PASS_WITH_CONDITIONS on the rest.


Generated by Claude Code

The spec's verify filter host_ip_redemption_is_cohort_attributed now selects the audit-record test too.
@minimal-foundry
Copy link
Copy Markdown
Contributor Author

Round 4 of 10 on a /revise note, pushed as 3106832036ca.

line exit tail
cargo nextest run -p bep host_ip_redemption_is_cohort_attributed 0 Applying loadouts: default Running task runtime-implement-test-0 in session task-runtime-implement-test-0-25de... Compiling bep v0.0.1 (/workbench/crates/bep) Finished 'test' profile [unoptimized] target(s) in 10.11s ──────────── Nextest run ID 722b0dea-0f42-430f-a343-6ee4a4a06f92 with nexte
cargo nextest run -p bep host_ip_redemption_is_cohort_attributed_in_the_audit_record 0 Applying loadouts: default Running task runtime-implement-test-1 in session task-runtime-implement-test-1-40bf... Finished 'test' profile [unoptimized] target(s) in 0.26s ──────────── Nextest run ID 36deabe0-b073-4d8e-b05b-d59549161fa4 with nextest profile: default Starting 1 test across 2

Verify min task run agent-verify passed.

Review threads the coder judged:

  • 👍 valid — crates/bep/src/redeemer.rs: Renamed the audit-record test to host_ip_redemption_is_cohort_attributed_in_the_audit_record. The verify filter now selects it, and both selected tests pass.

A host-address box redeems a value that names another live host-address box. The proxy admits it, and its audit record carries the cohort_attributed marker. The spec's verify filter host_ip_redemption_is_cohort_attributed now selects both the decision test and the audit-record test.

Notes from the agent: This round renames one test only: cohort_admit_is_recorded_cohort_attributed is now host_ip_redemption_is_cohort_attributed_in_the_audit_record. No other code changed.

@minimal-arch minimal-arch 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.

arch-review: PASS · the full ruling

This head conforms to Gatehouse §6.10 line 823. A host_ip sender is admitted only for a live host_ip box of this host. The admitted audit record carries cohort_attributed, and the box_connection span carries the flag. The test rename lets the BEP-028 verify filter select the audit-record test, so the proof tests the cited rule. Update the ## Proof paragraph in the PR body. It still says the marker does not reach the audit log.

Ruled at 3106832 against gominimal/arch@109541a48c31 by claude-opus-5-5.

@minimal-foundry minimal-foundry Bot left a comment
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

minimal-review — advisory review

Verdict COMMENT — 1 finding, 1 inline.

Panel: 3 of 3 personas ran (correctness, security, supply-chain).

Comment thread crates/bep/src/forward.rs Resolved
@minimal-foundry
Copy link
Copy Markdown
Contributor Author

Round 5 of 10 on the runtime's review findings, pushed as 9c4bda7c1615.

line exit tail
cargo nextest run -p bep host_ip_redemption_is_cohort_attributed 0 Applying loadouts: default Running task runtime-implement-test-0 in session task-runtime-implement-test-0-f7cb... Compiling bep v0.0.1 (/workbench/crates/bep) Finished 'test' profile [unoptimized] target(s) in 9.30s ──────────── Nextest run ID 210293fb-d159-4828-83ee-e2f05603dcb9 with nextes
cargo nextest run -p bep host_ip_redemption_is_cohort_attributed_in_the_audit_record 0 Applying loadouts: default Running task runtime-implement-test-1 in session task-runtime-implement-test-1-bda2... Finished 'test' profile [unoptimized] target(s) in 0.25s ──────────── Nextest run ID c97b04f8-2558-483a-8ec4-7caa6ed70201 with nextest profile: default Starting 1 test across 2

Verify min task run agent-verify passed.

Review threads the coder judged:

  • 👍 valid — crates/bep/src/forward.rs: Moved the cohort_attributed span.record after substitute succeeds, so a refused substitution leaves the span flag unset.

A host-address box that redeems a value naming another live host-address box is admitted, and its audit record (min box audit ) carries the cohort_attributed marker. The box_connection span records cohort_attributed only when the admit stands.

Notes from the agent: Revise round 5: moved span.record("cohort_attributed", ...) in Flow::decide after substitute succeeds, so a refused substitution does not show the cohort flag on the span.

@minimal-arch minimal-arch 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.

arch-review: PASS · the full ruling

This head conforms to Gatehouse §6.10 line 823. The only change since 31068320 moves the cohort_attributed span record after a successful substitution. The audit marker path does not change. The span flag now matches the audit record on a refused substitution. The PASS on the earlier head stands.

Ruled at 9c4bda7 against gominimal/arch@109541a48c31 by claude-opus-5-5.

@minimal-foundry minimal-foundry Bot left a comment
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

minimal-review — approval withheld

Verdict COMMENT — APPROVE withheld: 6 unresolved threads — minimal-arch[bot] crates/bep/src/redeem.rs:378, minimal-arch[bot] crates/bep/src/redeem.rs, minimal-arch[bot] crates/bep/src/redeem.rs:1415, minimal-arch[bot] crates/bep/src/redeem.rs:378, minimal-arch[bot] crates/bep/src/redeemer.rs, …. No findings.

Panel: 3 of 3 personas ran (correctness, security, supply-chain).

@minimal-foundry minimal-foundry Bot left a comment
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

minimal-review — approved

Verdict APPROVE — every review thread is resolved; @norrietaylor closed the last one. The review of 9c4bda7c1615 withheld this approval on the threads open then. Posted as a comment: the App cannot approve its own pull request; the check and the label carry it.

@minimal-foundry minimal-foundry Bot added the review:approved minimal-review approved the current head label Oct 24, 2026
@norrietaylor norrietaylor left a comment
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Babysitter verification at 9c4bda7, on the owner's decision after round 6 stalled (Revising since 06:01Z with no push).

  • Arch ruled PASS at 9c4bda7 (check-run arch-review).
  • All six review threads verified against the code and resolved: the admission marker rides Verdict::Admit into the audit record (redeemer.rs 361–365, forward.rs 570–587); the box_connection span declares and records cohort_attributed after a successful substitution (proxy.rs 347, forward.rs 583); the send-based test host_ip_redemption_is_cohort_attributed_in_the_audit_record pins the record and is selected by the verify filter; the span flag stays unset on a refused substitution.
  • PR body Proof and Notes updated to describe this head: they said the marker did not reach the audit log, which rounds 3 to 5 fixed.
  • Layer exception for proxy.rs stands as recorded in the body.

No code was pushed. Remaining red: ci-success on the base-branch cargo-deny advisory, fixed by #2517.


Generated by Claude Code

@norrietaylor norrietaylor changed the title T37 — Attribute a host-address redemption to its cohort and mark the audit feat(bep): attribute a host-address redemption to its cohort and mark the audit Oct 24, 2026
@minimal-arch minimal-arch 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.

arch-review: PASS · the full ruling

This head is a merge of main into the head that passed before. The PR's own diff did not change. The merge touches no file in crates/bep, and it does not touch BEP-028. The cohort attribution and the cohort_attributed audit marker still satisfy Gatehouse §6.10 line 823. The PASS carries forward to this head.

Ruled at c6c0b83 against gominimal/arch@109541a48c31 by claude-opus-5-5.

@norrietaylor norrietaylor left a comment
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Babysitter verification at c6c0b83. This head is GitHub's merge of main fa31776 onto 9c4bda7, which the earlier review covered; arch re-ruled PASS here and minimal-review approved the head as a base merge only. Zero open threads, every lane aggregator green. Squash title feat(bep): attribute a host-address redemption to its cohort and mark the audit passes commitlint.


Generated by Claude Code

@norrietaylor norrietaylor left a comment
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Babysitter approval at c6c0b83: every merge gate passes at this head (arch PASS, zero open threads, every lane aggregator green, bot resolutions re-verified). The one failing gate, no-implement-in-flight, is a stale runtime round the owner waived on 2026-10-24. Squash title feat(bep): attribute a host-address redemption to its cohort and mark the audit and the squashed message pass commitlint. Queued for squash merge.


Generated by Claude Code

@norrietaylor
norrietaylor added this pull request to the merge queue Oct 24, 2026
Merged via the queue into main with commit 2aa47e7 Oct 24, 2026
36 of 37 checks passed
@norrietaylor
norrietaylor deleted the agent/2284-attribute-a-host-address-redemption-to-its-cohor branch October 24, 2026 22:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

review:approved minimal-review approved the current head

Projects

None yet

Development

Successfully merging this pull request may close these issues.

T37 — Attribute a host-address redemption to its cohort and mark the audit

1 participant

0