8000 T75 — Give bep serve a chain-preserving way out of an unreadable audit line · Issue #2588 · gominimal/minimal · GitHub
[go: up one dir, main page]

Skip to content

T75 — Give bep serve a chain-preserving way out of an unreadable audit line #2588

Closed

Description

@norrietaylor

Task

slice size difficulty model who estimated lines
Round-two conditions closed M needs care strongest an agent 260 (120 code, 140 tests)

bep serve --quarantine-unreadable starts past an unreadable audit line, and the chain still verifies across the quarantine.

Covers:

  • BEP-068

Layers:

  • recover:
    • crates/bep/src/audit.rs: a quarantine moves each segment holding an unreadable line into <audit dir>/quarantine/ and appends a quarantine record that carries the moved segment's final hash, so the chain stays verifiable; a record of a kind this bep does not know is told apart from a corrupt line
    • crates/bep/src/main.rs: bep serve --quarantine-unreadable runs 8000 the quarantine and starts; refuse_unreadable names that flag
    • cargo nextest run -p bep quarantine_keeps_the_chain_and_starts

Waits on:

Plan block
### T75 — Give bep serve a chain-preserving way out of an unreadable audit line
  slice: S10
  kind: task
  covers: BEP-068
  size: M
  est: 120 code, 140 tests
  executor: agent
  difficulty: needs care
  model: strongest
  diagnostics: the refusal names `bep serve --quarantine-unreadable` in place of a hand edit
  observability: one warn line per quarantined segment, and a `quarantine` audit record
  layers:
    - recover:
      - crates/bep/src/audit.rs: a quarantine moves each segment holding an unreadable line into `<audit dir>/quarantine/` and appends a `quarantine` record that carries the moved segment's final hash, so the chain stays verifiable; a record of a kind this bep does not know is told apart from a corrupt line
      - crates/bep/src/main.rs: `bep serve --quarantine-unreadable` runs the quarantine and starts; `refuse_unreadable` names that flag
      test: cargo nextest run -p bep quarantine_keeps_the_chain_and_starts
  produces: none
  consumes: none
  proof: `bep serve --quarantine-unreadable` starts past an unreadable audit line, and the chain still verifies across the quarantine.
  depends on:
    - blocked by #2290

Generated by Claude Code

Activity

  1. added
    kind:featureA new feature or capability. Applied by the inbox-route classifier.
    on Oct 26, 2026
  2. norrietaylor commented on Oct 26, 2026

    @norrietaylor
    MemberAuthor

    The epic owner added this residual to the plan on 2026-10-26 as T75 (slice S10). Its body is now the rendered task. The residual text it replaces is kept below.

    Residual text

    Residual from T33 #2583, review finding 4373352998, epic #1501. Filed under the epic owner's 2026-10-26 decision to merge the fail-closed refusal now and add the way out later.

    bep serve refuses to start when a complete audit line does not parse (refuse_unreadable in crates/bep/src/main.rs), and holds_revocation keeps that segment from the prune. The only remedy the refusal offers is to hand-edit an append-only segment, which breaks the hash chain carried across segments. A record written by a newer bep, with a kind this bep does not know, also stops a downgraded bep from starting.

    What closes this

    • A recovery path that keeps the chain intact. For example, quarantine the unreadable segment by moving it aside and recording the move in the chain, or add a flag that acknowledges the counted unreadable lines for one start and audits that acknowledgement.
    • The refusal text names that command instead of a hand edit.
    • A record of an unknown kind from a newer bep is told apart from a corrupt line, so a downgrade can start without dropping a revocation it can read.
    • Tests pin the recovery and the downgrade case.

    Generated by Claude Code

  3. changed the title [-]Give bep serve a chain-preserving way out of an unreadable audit line (BEP-068)[/-] [+]T75 — Give bep serve a chain-preserving way out of an unreadable audit line[/+] on Oct 26, 2026
  4. added
    kind:taskA task the plan skill rendered; the body carries ## Task
    size:M200 to 500 net lines; one PR
    model:strongestThe strongest model available: unknown ground, or large work that needs care
    and removed
    kind:featureA new feature or capability. Applied by the inbox-route classifier.
    on Oct 26, 2026
  5. minimal-foundry commented on Oct 26, 2026

    @minimal-foundry
    Contributor

    Done. #2608 merged.

    branch agent/2588-give-bep-serve-a-chain-preserving-way-out-of-an · epic #1501 · PR #2608

    round outcome job
    1 pushed ab0f65bc
    2 pushed aa96afe9
    3 pushed 781dcfac
    4 pushed 17172a5b
    5 pushed 9e61b374
    1 changed nothing: every commit this round put on the branch above 667d71c is a merge of the base branch, so it carries no work of its own 5a0747b6

    Updated 2026-10-26T20:55:35.219Z.

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:M200 to 500 net lines; one PR

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      0