Repository navigation
refactor(bep): give the proxy-binary resolver one owner for min secret and minvmd (T62) - #2581
Conversation
minvmd now resolves the bep binary through bep::store::proxy_binary_path, the same rule min secret names in a keychain item's access control. The rule logs one debug line with the resolved path. minvmd gains a bep dependency for it.
|
Important Review skippedBot user detected. To trigger a single review, invoke the
|
|
Round 1 of 10 on a failed check suite: the coder changed nothing. Revise round 1: no change. The directive gives two failed checks. |
|
/revise Round 2 of #2581, on the red macOS This PR caused it, though not in a file it edits.
One commit, Conventional Commits subject, every body line at most 72 characters. Generated by Claude Code |
|
Round 2 of 10 on a /revise note: the coder changed nothing. every commit this round put on the branch above 90c508e is a merge of the base branch, so it carries no work of its own |
|
Approved: every review thread resolved at @norrietaylor resolved the last thread, which releases the approval this review had withheld. Nothing to do. |
There was a problem hiding this comment.
arch-review: PASS · the full ruling
The change conforms. Gatehouse §6.10 line 831 binds store access to the BEP process identity. One rule in bep::store::proxy_binary_path now gives that identity to both minvmd and min secret. The behaviour and the refusals on each side are the same as at base. The new bep dependency in minvmd moves no process boundary.
Ruled at d54b1e2 against gominimal/arch@109541a48c31 by claude-opus-5-5.
…roxy-binary-resolver-one-owner-shared
Review finding 4373693200: the minvmd test never reached the lookup that min secret runs. bep::store::proxy_binary_on_path now owns the relative variable check, the PATH search and the link handling. resolve_proxy only maps its errors to text, and the minvmd test calls the shared lookup.
|
Round 3 of 10 on the runtime's review findings, pushed as
Verify Outside the task's
Converted to a draft: something above needs a person before review. Review threads the coder judged:
Under one PATH and one MINVMD_BEP_BIN, Notes from the agent: This round moved find_on_path, is_executable and exe_path from crates/minimal/src/cmd/secret.rs into crates/bep/src/store.rs, behind the new bep::store::proxy_binary_on_path and ProxyLookupError. resolve_proxy keeps its two refusal texts unchanged and only maps the error variants to them. minvmd cannot call resolve_proxy directly, because minimal depends on minvmd, so a dependency in the other direction makes a cycle. The shared lookup is the fix in its place. cargo clippy -p minimal -p bep -p minvmd --all-targets shows no warnings in these three crates. |
There was a problem hiding this comment.
arch-review: PASS · the full ruling
This change conforms to Gatehouse §6.10 lines 831 and 844. The rule for the proxy binary now has one definition, bep::store::proxy_binary_path. minvmd and min secret both call it, so the item's access control names the program that minvmd starts. The PATH lookup moved into bep::store::proxy_binary_on_path. It still refuses a relative variable and a missing minvmd. The ruling on the earlier head stands, and there are no conditions.
Ruled at 8884770 against gominimal/arch@109541a48c31 by claude-opus-5-5.
There was a problem hiding this comment.
minimal-review — approved
Verdict APPROVE — every review thread is resolved; @norrietaylor closed the last one. The review of 8884770e4c3b 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.
There was a problem hiding this comment.
Babysitter approval at 8884770: every merge gate passes
C8A9
at this head (arch PASS at 8884770, zero open threads, every lane aggregator green). Squash title refactor(bep): give the proxy-binary resolver one owner for min secret and minvmd (T62) and the squashed message pass commitlint. Queued for squash merge.
Generated by Claude Code
T62 — Give the proxy-binary resolver one owner shared by min secret and minvmd
slice: S9
kind: task
covers: BEP-051
size: S
est: 80 code, 100 tests
executor: agent
difficulty: routine
model: standard
diagnostics:
min secret setandminvmd runprint the same proxy path in their logs for one PATH and oneMINVMD_BEP_BINobservability: one d 8000 ebug line naming the resolved proxy path at each resolution
layers:
- resolver:
- crates/bep/src/store.rs:
proxy_binary_pathis the one rule, and its doc stops naming #2527- crates/minvmd/src/cmd/run.rs:
resolve_bep_binarycallsbep::store::proxy_binary_pathinstead of its own copy- crates/minimal/src/cmd/secret.rs:
resolve_proxyuses the shared rule and its doc stops naming #2527test: cargo nextest run -p minvmd minvmd_and_min_secret_resolve_the_same_proxy_binary
produces: none
consumes: none
proof: Under one PATH and one
MINVMD_BEP_BIN,min secret setandminvmd runresolve the same proxy binary, and the rule has one definition.depends on:
- blocked by T26
Proof
bep::store::proxy_binary_path is now the only definition of the proxy-binary rule. minvmd's resolve_bep_binary and min secret's resolve_proxy both call it. So under one PATH and one MINVMD_BEP_BIN,
min secret setandminvmd runresolve the same bep binary. Each resolution logs one debug line that names the path. No doc comment names #2527 now.Notes from the agent: Out of layers: crates/minvmd/Cargo.toml and Cargo.lock. minvmd did not depend on the bep crate, and it cannot call bep::store::proxy_binary_path without that dependency. The change adds one dependency line and the matching lock entry. The shared function now takes
minvmdas a closure and returns Option. So the variable check runs only once, and minvmd is looked up only when the variable is unset or empty. min secret keeps its own extra refusal of a relative MINVMD_BEP_BIN, and its error texts are the same as before. minvmd's BEP_BIN_ENV now aliases bep::store::PROXY_BIN_ENV. The minvmd test cannot call min's resolve_proxy, because the minimal crate is a binary crate and minvmd does not depend on it. So the test proves that minvmd's resolution equals the shared rule's result, and min uses the same rule. Extra checks also passed:cargo nextest run -p minimal secret(17 passed),cargo nextest run -p minimal resolve_proxy proxy(24 passed),cargo nextest run -p bep store(19 passed). Clippy is clean for bep, minimal and minvmd.Tests
cargo nextest run -p minvmd minvmd_and_min_secret_resolve_the_same_proxy_binaryVerify
min task run agent-verifyexited 101 under rustc 1.98.1, which the repository does not pin (1.97.0 in rust-toolchain.toml); the PR is not a draft on that alone — CI, which honours the pin, is the gate.Layer exception
The epic owner's rule accepts out-of-layer changes a task needs. The babysitter accepted this one on 2026-10-26:
crates/minvmd/Cargo.toml(and itsCargo.lockline): minvmd now depends onbepforbep::store::proxy_binary_path, the one owner of the proxy-binary rule thatmin secretalso uses. This dependency put bep's macOS-only code into the macOS clippy scope, which surfaced a lint incrates/bep/src/keys.rs. That lint is fixed on main, and the branch picked up main.Out of scope
These files are outside the task's
layers:, so this PR is a draft:crates/minvmd/Cargo.tomlCloses #2542
Generated by Claude Code