8000 T28 — Inject a stored key in the registered form, read from the Keychain per request · Issue #2292 · gominimal/minimal · GitHub
[go: up one dir, main page]

Skip to content
Dismiss alert

T28 — Inject a stored key in the registered form, read from the Keychain per request #2292

Closed

Description

@norrietaylor

Task

slice size difficulty model who estimated lines
Keychain secrets by reference L needs care strongest an agent 800 (380 code, 420 tests)

A request to the rule's upstream carries the stored key in the registered header, and a replaced key is sent next time.

Covers:

  • BEP-032
  • BEP-033
  • BEP-045
  • BEP-054
  • BEP-065
  • BEP-066

Layers:

  • inject:
    • crates/bep/src/inject.rs (new): emits the registered prefix and the value as the header's value, or one basic_auth field; refuses CR or LF in a value or prefix
    • crates/bep/src/store.rs: reads the value per request, writes it nowhere, refuses a deleted or disabled item
    • crates/bep/src/forward.rs: injects for an admitted store reference; refuses a sign-in reference naming another instance
    • crates/bep/src/lib.rs: module line
    • cargo nextest run -p bep store_reference_injects_in_registered_form
    • cargo nextest run -p bep store_value_read_per_request_never_written
    • cargo nextest run -p bep deleted_keychain_item_refuses_next_injection
    • cargo nextest run -p bep reference_to_another_sign_in_instance_is_refused
    • cargo nextest run -p bep replaced_secret_is_injected_on_next_request
    • cargo nextest run -p bep injected_value_is_exactly_prefix_plus_value
    • cargo nextest run -p bep crlf_in_value_or_prefix_refuses_injection

Waits on:

Plan block
### T28 — Inject a stored key in the registered form, read from the Keychain per request
  slice: S3
  kind: task
  covers: BEP-032, BEP-033, BEP-045, BEP-054, BEP-065, BEP-066
  size: L
  est: 380 code, 420 tests
  executor: agent
  difficulty: needs care
  model: strongest
  diagnostics: `min box audit <box>` shows each injection's store and identifier, and a refused one marked `injection_invalid` or as a deleted item, never the value
  observability: one debug log line per injection naming the store, the identifier and the header, never the value
  layers:
    - inject:
      - crates/bep/src/inject.rs (new): emits the registered prefix and the value as the header's value, or one `basic_auth` field; refuses CR or LF in a value or prefix
      - crates/bep/src/store.rs: reads the value per request, writes it nowhere, refuses a deleted or disabled item
      - crates/bep/src/forward.rs: injects for an admitted store reference; refuses a sign-in reference naming another instance
      - crates/bep/src/lib.rs: module line
      test: cargo nextest run -p bep store_reference_injects_in_registered_form
      test: cargo nextest run -p bep store_value_read_per_request_never_written
      test: cargo nextest run -p bep deleted_keychain_item_refuses_next_injection
      test: cargo nextest run -p bep reference_to_another_sign_in_instance_is_refused
      test: cargo nextest run -p bep replaced_secret_is_injected_on_next_request
      test: cargo nextest run -p bep injected_value_is_exactly_prefix_plus_value
      test: cargo nextest run -p bep crlf_in_value_or_prefix_refuses_injection
  produces: none
  consumes:
    - crates/bep/src/store.rs
  proof: A request to the rule's upstream carries the stored key in the registered header, and a replaced key is sent next time.
  depends on:
    - blocked by #2287
    - blocked by #2288
    - blocked by #2257

Activity

  1. added
    kind:taskA task the plan skill rendered; the body carries ## Task
    size:L500 to 900 net lines; one PR, a 8000 nd the ceiling
    model:strongestThe strongest model available: unknown ground, or large work that needs care
    on Oct 17, 2026
  2. minimal-foundry commented on Oct 25, 2026

    @minimal-foundry
    Contributor

    Done. #2574 merged.

    branch agent/2292-inject-a-stored-key-in-the-registered-form-read · epic #1501 · PR #2574

    round outcome job
    1 pushed 1c61b8ad
    2 pushed 9d0c9615
    3 pushed 6c190c33
    4 pushed c78748dd
    5 pushed 14b3e400
    6 pushed 6282bc7b
    7 pushed 24b143f8
    8 pushed b60795d8
    9 changed nothing: Revise round 9. I judged both open threads invalid, so this round has no code change. The head commit fec6f0b is unchanged, and all seven test lines pass on it. The C1 wiring (proxy.rs calls Flow::wi 0ab1deb8

    Updated 2026-10-26T04:17:07.275Z.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    kind:taskA task the plan skill rendered; the body carries ## Taskmodel:strongestThe strongest model available: unknown ground, or large work that needs caresize:L500 to 900 net lines; one PR, and the ceiling

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      0