8000 feat(bep): wire the client-key bound into bep serve with --max-client-keys (T69) by minimal-foundry[bot] · Pull Request #2593 · gominimal/minimal · GitHub
[go: up one dir, main page]

Skip to content

feat(bep): wire the client-key bound into bep serve with --max-client-keys (T69) - #2593

Merged
norrietaylor merged 3 commits into
mainfrom
agent/2579-wire-the-client-key-bound-into-bep-serve
Oct 26, 2026
Merged

norrietaylor merged 3 commits into
mainfrom
agent/2579-wire-the-client-key-bound-into-bep-serve

Conversation

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

T69 — Wire the client-key bound into bep serve

slice: S10
kind: task
covers: BEP-063
size: S
est: 50 code, 60 tests
executor: agent
difficulty: routine
model: standard
diagnostics: bep serve --help names the bound flag, and a bad value is refused before the proxy starts
observability: one info line at start with the key bound in force
layers:
- serve:
- crates/bep/src/main.rs: bep serve builds its control socket through Control::bind_with_key_bound with a KeyBound from a flag; the idle period stays None until gominimal/arch#85 decides the root validity
test: cargo nextest run -p bep serve_passes_its_key_bound_to_the_control_socket
produces: none
consumes: none
proof: bep serve started with a smaller key bound keeps at most that many client keys.
depends on:
- assumes OQ3 (the mint reads the root certificate's own expiry, and the root is generated with a fixed default validity in one constant that gominimal/arch#85's ruling replaces)
- blocked by #2543

Proof

bep serve --max-client-keys 2 keeps at most two client keys on its control socket. A third registration drops the key registered least recently. bep serve --help lists the flag with its default of 16. --max-client-keys 0, or a value that is not a number, is refused before the proxy starts.

Notes from the agent: The flag is --max-client-keys <N>. Its default is KeyBound::DEFAULT_MAX_KEYS (16). The idle period stays None, as the task says. At start, one info line logs max_client_keys and idle. Out of scope and not changed: the module doc in crates/bep/src/control.rs (lines 98-103) and the doc on Control::bind_with_key_bound still say that the proxy binary has no setting for the bound and does not call that function. That text is now stale. A follow-up must correct it, because control.rs is outside this task's layers. cargo clippy -p bep --all-targets gives no warnings.

Tests

line exit tail
cargo nextest run -p bep serve_passes_its_key_bound_to_the_control_socket 0 Applying loadouts: default Running task runtime-implement-test-0 in session task-runtime-implement-test-0-cbf9... Compiling bep v0.0.1 (/workbench/crates/bep) Finished 'test' profile [unoptimized] target(s) in 15.16s ──────────── Nextest run ID 11e488c9-13d2-43d1-9d77-6d25e046ca82 with nexte

Verify

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

Residuals

Closes #2579


Generated by Claude Code

bep serve now binds its control socket through Control::bind_with_key_bound,
with the count from --max-client-keys (default 16). A value below 1 is
refused when the arguments parse, before the proxy starts. The idle period
stays None until gominimal/arch#85 decides the root validity.
@coderabbitai
coderabbitai Bot commented Oct 26, 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: 395f2b56-be6a-44e0-8752-3b83bdf9cb97

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.

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

Approved: no findings at c34ca3067ce9.

Nothing to do.

Verdict APPROVE, posted as a comment: the App cannot review its own pull request; the check and the label carry it.

Clobber: none seen.

@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 — No findings.

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

@minimal-foundry minimal-foundry Bot added the review:approved minimal-review approved the current head label Oct 26, 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_WITH_CONDITIONS · 1 condition · the full ruling

The flag conforms to Gatehouse §6.10. It sizes the client key registry and does not move the registration off the local UDS. The default does not change, and a bad value is refused before the proxy starts. Two docs in crates/bep/src/control.rs now say that the proxy binary has no setting for the bound. The PR body defers that fix to a follow-up and names no issue. Fix the docs or file the issue, as C1 says.

Outside the diff

  • crates/bep/src/control.rs:101: C1 · This doc says that the proxy binary has no setting for the bound. After this change bep serve --max-client-keys sets it. Change this text and the bind_with_key_bound doc at line 1044. Or file an issue for the edit and name it in the PR body.

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

Comment thread crates/bep/src/main.rs Resolved
@norrietaylor norrietaylor changed the title T69 — Wire the client-key bound into bep serve feat(bep): wire the client-key bound into bep serve with --max-client-keys (T69) Oct 26, 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 approval at 1d27615: every merge gate passes at this head (arch PASS at 1d27615, zero open threads, every lane aggregator green). Squash title feat(bep): wire the client-key bound into bep serve with --max-client-keys (T69) 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 26, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Oct 26, 2026
Copy link
Copy Markdown
Member

/revise

Round on #2593 after a merge-queue failure at 1d27615. No round is in flight. #2583 (T33) landed on main and gave wire in crates/bep/src/main.rs a fourth parameter, restored: Vec<String>. The queue build of this PR failed in clippy and tests with E0061 at crates/bep/src/main.rs:1757: the test this PR adds calls wire(key, MemoryKeychain::default(), Arc::new(signin::NoTokenEndpoint)) with three arguments.

  1. Merge main into this branch.
  2. At that call, pass Vec::new() as the fourth argument, as the other test call on main does (wire(key, keychain, Arc::new(signin::NoTokenEndpoint), Vec::new())).
  3. Change nothing else. Run cargo nextest run -p bep serve_passes_its_key_bound_to_the_control_socket and clippy on bep with --all-targets.

Generated by Claude Code

main gave wire a fourth parameter (T33). The T69 test called it with
three arguments, which broke the merge-queue build with E0061.
@minimal-foundry
Copy link
Copy Markdown
Contributor Author

Round 1 of 10 on a /revise note, pushed as c34ca3067ce9.

line exit tail
cargo nextest run -p bep serve_passes_its_key_bound_to_the_control_socket 0 Applying loadouts: default Running task runtime-implement-test-0 in session task-runtime-implement-test-0-e2ac... Compiling bep v0.0.1 (/workbench/crates/bep) Finished 'test' profile [unoptimized] target(s) in 22.69s ──────────── Nextest run ID fb3edac3-5af8-405f-b145-01b99234d316 with nexte

Verify min task run agent-verify passed.

bep serve started with a smaller --max-client-keys value keeps at most that many client keys, and the branch now builds against main again.

Notes from the agent: The merge of main was already on the branch (4a54d9d) with no conflicts. This round adds one change: the test call to wire at crates/bep/src/main.rs now passes Vec::new() as the fourth argument, as the directive asked. Nothing else changed.

@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 — 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: PASS_WITH_CONDITIONS · 1 condition · the full ruling

This head adds one test argument after the merge of main. The baseline ruling on 1d27615 stands. bep serve keeps client key registration on the control socket, as Gatehouse §6.10 line 842 says, and BEP-063 conforms. C1 stays open as residual #2598. Correct the two crates/bep/src/control.rs docs that say the proxy binary has no setting for the bound.

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

Comment thread crates/bep/src/main.rs Resolved
@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.

Own review at c34ca30: a merge of main plus one argument, Vec::new() for the restored box ids, in the key-bound test's wire call. That fixes the E0061 the merge queue hit after #2583. No other change since 1d27615.


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 c34ca30: every merge gate passes at this head (arch PASS at c34ca30, zero open threads, every lane aggregator green). Squash title feat(bep): wire the client-key bound into bep serve with --max-client-keys (T69) 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 26, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Oct 26, 2026
Copy link
Copy Markdown
Member

The merge-queue run for this PR (run 40280021752, tests) failed one test: minimald box_actor::tests::a_mint_whose_host_dies_before_attach_reports_a_spawn_failure (5.2 s). This PR changes only crates/bep/src/main.rs, and that test is older than this branch. Every lane passed on this head before queueing. I am re-queueing once. A second failure of the same test gets a root-cause issue.


Generated by Claude Code

@norrietaylor
norrietaylor added this pull request to the merge queue Oct 26, 2026
Merged via the queue into main with commit e8f53f6 Oct 26, 2026
37 checks passed
@norrietaylor
norrietaylor deleted the agent/2579-wire-the-client-key-bound-into-bep-serve branch October 26, 2026 07:16
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.

T69 — Wire the client-key bound into bep serve

1 participant

0