Skip to content

Propagate bursts 3 and 4 to main#20

Merged
REPPL merged 3 commits into
mainfrom
bughunt-3
Jul 20, 2026
Merged

Propagate bursts 3 and 4 to main#20
REPPL merged 3 commits into
mainfrom
bughunt-3

Conversation

@REPPL

@REPPL REPPL commented Jul 20, 2026

Copy link
Copy Markdown
Owner

Why

PRs #17, #18 and #19 all report as merged, but only #17 reached main.

The three PRs formed a stack (bughunt-4bughunt-3bughunt-2main) and each merged into its parent branch rather than into main. Because #18 merged seventeen seconds before #19, the cascade never propagated upward:

ref contains
main (8e5474e) burst 2 only
bughunt-2 (59e53bb) bursts 2, 3
bughunt-3 (89a3262) bursts 2, 3, 4

main is therefore missing a8efef2 (burst 3 — ingest/capture edge cases) and 1a86362 (burst 4 — validation upper bound, missing-t0 merge).

What

Merges bughunt-3, which contains all three fix commits, into main.

No new code — every commit here has already been reviewed and CI-gated under #17, #18, or #19.

After this lands

bughunt-2, bughunt-3 and bughunt-4 become safe to delete. Until then they hold the only refs for bursts 3 and 4.

Assisted-by: Claude:claude-opus-4-8

REPPL added 3 commits July 18, 2026 17:49
…e, verdict guard

Burst 3 of the autonomous correctness hunt — 4 low-severity bugs, each
with a watched-to-fail regression test. Several are second-order
refinements of the burst 1 fixes.

- validate rejected a finding at t<0, but an imported recording whose
  creation_time predates the manifest t0 yields legitimately-negative
  session-relative utterance times; a faithfully-anchored finding then
  failed the whole transactional ingest. The lower bound is now derived
  from the earliest timeline entry (min(0, idx.start)), symmetric with
  the upper bound; a normal session still floors at 0.
- appendLines could still persist a newline-less line on a full disk:
  os.File.Write gives no atomicity, so ENOSPC lands a truncated prefix.
  New appendRecords records the file length and Truncates back on any
  write error, so no partial line survives. Corrects the earlier
  comment's false atomicity claim.
- ingesting an empty findings array silently truncated a prior good
  findings.jsonl (O_TRUNC write) — a model that finds nothing, or a
  truncated answer file, wiped real data. Ingest now refuses an empty
  answer instead of overwriting.
- the overwrite guard counted only enum-valid verdicts, so a hand-edited
  findings.jsonl whose only verdicts carried a foreign value was clobbered
  on re-ingest. The guard now counts raw kind:"verdict" lines.

Docs (analyze surface, schemas, CLI/session references) and DECISIONS.md
updated in step. Gates green.

Assisted-by: Claude:claude-fable-5
Burst 4 of the autonomous correctness hunt — 2 distinct low-severity
bugs, both boundary conditions.

- validate seeded idx.end from the zero value 0 and grew it only via
  end > idx.end, while idx.start was correctly seeded on the first entry.
  For a fully-negative timeline (an external recording predating
  manifest t0), idx.end stayed 0, so a finding anchored after the real
  (negative) session end was accepted. idx.end is now seeded on the
  first entry, symmetric with idx.start. This is the sibling of burst
  3's lower-bound fix — the same function's other half.
- merge silently produced a nonsense timeline (events ~55 years after
  the speech) when a hand-edited/exchanged manifest omitted
  t0_epoch_ms, because BuildEntries anchored interactions to t0=0. Merge
  now rejects a manifest missing t0_epoch_ms when interactions are
  present; transcript-only sessions (already session-relative) are
  unaffected.

Both fixes make the code match its documented contract. Docs (merge
surface, CLI reference) and DECISIONS.md updated in step. Gates green.

Assisted-by: Claude:claude-fable-5
Fix validation upper bound and missing-t0 merge (burst 4)
@REPPL
REPPL merged commit fadf74b into main Jul 20, 2026
6 checks passed
@REPPL
REPPL deleted the bughunt-3 branch July 20, 2026 12:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant