Skip to content

oracle-gaps batch 3: default-out stop and daemon results missing beside the stream log (intermittent) #76

Open

Description

@KyleAMathews

Observed once, on PR #57 (feat/gap-cli-stream-log) at 10:50 on 2026-11-13, in a local batch (log batch3-r1.log, not in the repo).

Failing units and messages:

  • fixed seed 20261105: a stop with the default output directory: "the run completed, but its results.json is not beside its stream log"
  • fixed seed 20261105: a daemon check with the default output directory: the same message
  • fixed seed 20261105: two runs on one output directory: "the second run on a live output directory exited 0, not refusing it"

Not reproduced in four later runs of the same code, two of them with two copies running at once.

Likely cause: a leaked mutant. Both failure signatures match the hostile mutants F2 (the supervisor does not pass --out to the child or daemon) and F4 (no live-run refusal). A bisect file swap that was in place at the time was ruled out by timestamps, but a mutant left in the file would produce exactly these messages.

Next step: make the results-beside-log message name the directory and whether results.json is missing or unparseable, so the next occurrence says which it was. Then find a check that asserts the file is restored after each mutant run.

Activity

  1. KyleAMathews commented on Nov 14, 2026

    @KyleAMathews
    ContributorAuthor

    Reproduced, and fixed by #57 (feat/gap-cli-stream-log, head 7db86c5).

    Mechanism: the overlap witness kept the first run alive with a wall-clock hold (HOLD_EXIT_MS), so under load the second run could start after the first had exited. The CLI then correctly found a dead claim and took it over, and the witness's expected refusal was wrong for that schedule. That is a nondeterministic witness, not a CLI defect.

    RED (parent 5fa74e0, unchanged CLI; second spawn delayed until the first process has exited, the extreme-load schedule):
    cd <scratch worktree at 5fa74e0>/packages/oracles
    npx vitest --run --config oracle-gaps/vitest.config.mjs gap-report-oracle -t 'fixed seed 20261105: two runs on one output directory$'
    -> Difference: the second run on a live output directory exited 0, not refusing it

    GREEN (7db86c5; the first run holds its exit and claim at a named point until the driver releases it after the second run is refused; same delayed second spawn, with an injected 3 s delay before it):
    -> Tests 1 passed

    Fix in #57: the overlap is deterministic by construction (ORACLE_GAPS_TEST_HOLD_UNTIL replaces the wall-clock HOLD_EXIT_MS). Status: fixed on #57; this issue closes when #57 merges.

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions