Merge branch 'codex/simp-prune-llm-contract' into codex/simp-hide-llm-adapter-helpers
This commit is contained in:
@@ -20,7 +20,7 @@ Adopt `fast-check` (a root devDependency) with one `tests/properties.spec.ts` pe
|
|||||||
## Consequences
|
## Consequences
|
||||||
|
|
||||||
- Generator quality is the value lever — the generators bias toward small index pools and short strings so collisions and interleavings are common.
|
- Generator quality is the value lever — the generators bias toward small index pools and short strings so collisions and interleavings are common.
|
||||||
- **It already paid off:** the BlockAssembler stream found a real bug — a duplicate `block-end` at the same index overwrote an already-flushed block, so the streamed prefix disagreed with final `blocks()`. Fixed (first close wins, matching the existing straggler rule) with a dedicated regression test.
|
- **It already paid off:** the BlockAssembler stream found a real bug — a duplicate `block-end` at the same index rewrote a completed block. Fixed (first close wins, matching the existing straggler rule) with a dedicated regression test.
|
||||||
- A property flake from a timeout is a finding, not something to retry away. The loop properties are deterministic by construction (settle on `agent/status`), so a hang is a real defect.
|
- A property flake from a timeout is a finding, not something to retry away. The loop properties are deterministic by construction (settle on `agent/status`), so a hang is a real defect.
|
||||||
- Property tests supplement, not replace, the example tests that pin specific branches for the 100%-coverage gate.
|
- Property tests supplement, not replace, the example tests that pin specific branches for the 100%-coverage gate.
|
||||||
|
|
||||||
|
|||||||
@@ -72,9 +72,8 @@ export class BlockAssembler {
|
|||||||
case 'block-end': {
|
case 'block-end': {
|
||||||
const partial = this.ensure(chunk.index, chunk.block.type)
|
const partial = this.ensure(chunk.index, chunk.block.type)
|
||||||
// First close wins: a second block-end for an already-closed index is
|
// First close wins: a second block-end for an already-closed index is
|
||||||
// a straggler (same rule as post-close deltas). Ignoring it keeps the
|
// a straggler (same rule as post-close deltas). Ignoring it prevents a
|
||||||
// streamed prefix and the final blocks() in agreement — otherwise a
|
// later chunk from rewriting a completed block.
|
||||||
// re-close could rewrite a block already flushed downstream.
|
|
||||||
if (partial.block) return
|
if (partial.block) return
|
||||||
partial.block = chunk.block
|
partial.block = chunk.block
|
||||||
return
|
return
|
||||||
|
|||||||
Reference in New Issue
Block a user