Merge pull request #44 from mattpolicastro/spec/nightshift-issue-31-evidence-track-mutant-timeouts-separatel
Pushed 25 commits to mattpolicastro/nightshift
• specloop: archive nightshift-issue-31-evidence-track-mutant-timeouts-separatel into openspec/specs
• specloop: complete task 1.3
• specloop: task 1.3 Add only the integer `timeouts` argument at the existing evidence-event call in `specloop/loop.py:section_evidence`. Add new event and reviewer-context tests in `tests/test_specloop
• specloop: complete task 1.2
• specloop: task 1.2 In `specloop/evidence.py`, align the summary's caught fraction with the existing score filter, add the exact nonzero timeout-count line, and correct unmeasured wording while preserv
• specloop: complete task 1.1
• specloop: task 1.1 In `specloop/evidence.py`, retain the first non-passing receipt in `_mutate_one`, apply invalid-step precedence, and return/document `timeout` for selected test receipts with null e
• Draft OpenSpec change nightshift-issue-31-evidence-track-mutant-timeouts-separatel (specloop propose, round 1)
• specloop: complete task 1.3
• specloop: task 1.3 Add only the integer `timeouts` argument at the existing evidence-event call in `specloop/loop.py:section_evidence`. Add new event and reviewer-context tests in `tests/test_specloop
• specloop: complete task 1.2
• specloop: task 1.2 In `specloop/evidence.py`, align the summary's caught fraction with the existing score filter, add the exact nonzero timeout-count line, and correct unmeasured wording while preserv
• specloop: complete task 1.1
• specloop: task 1.1 In `specloop/evidence.py`, retain the first non-passing receipt in `_mutate_one`, apply invalid-step precedence, and return/document `timeout` for selected test receipts with null e
• specloop: complete task 3.1
• specloop: task 3.1 Style Details, Finished and Refresh in `plugins/nightshift/client/factory.tsx`, retaining the tested disclosure spacing, tree relationships and text, and using a decorative non-text
• specloop: complete task 2.2
• specloop: task 2.2 In `plugins/nightshift/client/factory.tsx`, place all currently available navigation items in one secondary wrapping row apart from actions and confirmations, preserving Details gat
• specloop: complete task 2.1
• specloop: task 2.1 In `plugins/nightshift/client/factory.tsx`, style the nested status chip and muted progress while retaining the exact combined Text content and direct-child change title. Add `statu
• specloop: complete task 1.2
• specloop: task 1.2 Reuse the landed button styles for Confirm and Cancel in `plugins/nightshift/client/factory.tsx`. Add rendered confirmation tests in `plugins/nightshift/tests/factory-style.test.ts`
• specloop: complete task 1.1
• specloop: task 1.1 In `plugins/nightshift/client/factory.tsx`, add local token-based action styles, minimum 44-by-44 targets, and wrapping, selecting roles from the unchanged `factoryButtons` order wi
Merge pull request #32 from mattpolicastro/spec/nightshift-issue-10-one-unreadable-run-must-not-break-speclo
Pushed 80 commits to mattpolicastro/nightshift
• specloop: archive nightshift-issue-10-one-unreadable-run-must-not-break-speclo into openspec/specs
• specloop: complete task 3.2
• specloop: task 3.2 Add mixed healthy/error document tests through the daemon client and attention parser in Python tests and through Factory's injected executor in `plugins/nightshift/tests/factory.te
• specloop: complete task 3.1
• specloop: task 3.1 Add `test_status_after_partial_finish` in `tests/test_specloop_act.py` using a real local archive commit, a stubbed failing external push, and a second healthy run; check named/all-
• specloop: complete task 2.1
• specloop: task 2.1 Extract per-run JSON construction and implement the exception boundary and compatible synthetic error row in `specloop/cli.py`, using strict state reads and preserving named-unknown
• specloop: complete task 1.2
• specloop: task 1.2 Strengthen the tests so each of these single-line mutations of code added in section 1 makes a test fail; where a mutation genuinely cannot change behaviour, say why in a comment on
• specloop: strengthen section 1 after its evidence check
• specloop: complete task 1.1
• specloop: task 1.1 Add opt-in `require_existing` loading to `Run` construction, `for_change`, and reload behavior in `specloop/state.py`; keep admission defaults and unknown-field compatibility. Add u
• Draft OpenSpec change nightshift-issue-10-one-unreadable-run-must-not-break-speclo (specloop propose, round 1)
• Draft OpenSpec change nightshift-issue-10-one-unreadable-run-must-not-break-speclo (specloop propose, round 1)
• Merge pull request #43 from mattpolicastro/fix/in-flight-name-files
• Drafter: the implementer never sees the in-flight list, so name files to avoid
• Draft OpenSpec change nightshift-issue-5-check-who-applied-a-front-door-label (specloop propose, round 1)
• Merge pull request #27 from mattpolicastro/spec/nightshift-issue-4-run-evidence-gate-mutants-in-parallel
• specloop: archive nightshift-issue-4-run-evidence-gate-mutants-in-parallel into openspec/specs
• specloop: complete task 4.1
• specloop: task 4.1 Address review feedback 1: "**mattpolicastro:**\n\nHosted CI fails 13 tests in `tests/test_specloop_evidence.py`, every one a prepared-mode (`[True]`) variant. For example, `test_fa
• specloop: append review round 1
• specloop: complete task 3.2
• specloop: task 3.2 Add `test_parallel_mutants_match_serial_results` and `test_parallel_mutants_respect_time_box` in `tests/test_specloop_evidence.py`, exercising the landed dispatcher with prepared/un
• specloop: complete task 3.1
• specloop: task 3.1 Add bounded thread-pool dispatch and index-based collection in `specloop/evidence.py`; drain active workers before baseline cleanup and propagate unexpected errors. Add event-driven
• specloop: complete task 2.3
• specloop: task 2.3 Strengthen the tests so each of these single-line mutations of code added in section 2 makes a test fail; where a mutation genuinely cannot change behaviour, say why in a comment on
• specloop: strengthen section 2 after its evidence check
• specloop: complete task 2.2
• specloop: task 2.2 Apply immutable baseline-derived timeout overrides to mutant prepare and verify steps in `specloop/evidence.py`; add exact-budget and real short subprocess timeout tests alongside t
• specloop: complete task 2.1
• specloop: task 2.1 Refactor `specloop/evidence.py` to use a private source and fresh build through `verify.run_extracted` for each mutant, initially retaining serial dispatch; keep the baseline immuta
• specloop: complete task 1.1
• specloop: task 1.1 Add `Manifest.mutation_parallel` and strict positive-integer parsing in `specloop/manifest.py`, with default, invalid-type, explicit serial limit and template/load round-trip tests
• Draft OpenSpec change nightshift-issue-4-run-evidence-gate-mutants-in-parallel (specloop propose, round 1)
• Merge pull request #38 from mattpolicastro/fix/implementer-no-run-notes
• Implementer: run results go in the summary, never in a repository file
• Merge pull request #26 from mattpolicastro/spec/nightshift-issue-25-factory-page-fold-finished-runs-away
• specloop: archive nightshift-issue-25-factory-page-fold-finished-runs-away into openspec/specs
• specloop: complete task 4.1
• specloop: task 4.1 Append focused regression tests in `plugins/nightshift/tests/factory-view.test.ts` for status transitions, retained disclosure choice across refreshes and temporary empty finished g
• specloop: complete task 3.1
• specloop: task 3.1 Append additional action regression tests in `plugins/nightshift/tests/factory-view.test.ts` for both Finish and Abort, verifying no send before confirmation, post-action status tra
• specloop: complete task 2.2
• specloop: task 2.2 Strengthen the tests so each of these single-line mutations of code added in section 2 makes a test fail; where a mutation genuinely cannot change behaviour, say why in a comment on
• specloop: strengthen section 2 after its evidence check
• specloop: complete task 2.1
• specloop: task 2.1 Use `groupFactoryRuns` in `plugins/nightshift/client/factory.tsx`, add the initially collapsed accessible Finished toggle, reuse FactoryRow for both groups, and update counts and th
• specloop: complete task 1.1
• specloop: task 1.1 Add `groupFactoryRuns(runs: readonly FactoryRun[]): { active: FactoryRun[]; finished: FactoryRun[] }` in `plugins/nightshift/client/factory-model.ts`, leaving `orderFactoryRuns` unc
• Draft OpenSpec change nightshift-issue-25-factory-page-fold-finished-runs-away (specloop propose, round 2)
• Draft OpenSpec change nightshift-issue-25-factory-page-fold-finished-runs-away (specloop propose, round 1)
• Merge pull request #36 from mattpolicastro/fix/spec-stage-checks
• Spec stage: catch human-only tasks, work in flight, and broken spec guarantees
• Merge pull request #29 from mattpolicastro/spec/nightshift-issue-24-front-door-honour-blocked-by-before-draf
• specloop: archive nightshift-issue-24-front-door-honour-blocked-by-before-draf into openspec/specs
• specloop: complete task 1.2
• specloop: task 1.2 Add focused tests in `tests/test_specloop_intake.py` for pending background-job collection followed by delivery after a blocker reopens, open-PR recovery without a receipt, a body w
• specloop: complete task 1.1
• specloop: task 1.1 Add the new-round blocker check and INFO logger in `nightshift/specloop_intake.py` at the boundary described in `design.md`. Add only new local test support and the three required t
• Draft OpenSpec change nightshift-issue-24-front-door-honour-blocked-by-before-draf (specloop propose, round 1)
• Draft OpenSpec change nightshift-issue-24-front-door-honour-blocked-by-before-draf (specloop propose, round 2)
• Merge pull request #22 from mattpolicastro/spec/nightshift-issue-11-attention-list-infra-pauses-past-their-a
• specloop: archive nightshift-issue-11-attention-list-infra-pauses-past-their-a into openspec/specs
• specloop: complete task 2.2
• specloop: task 2.2 Add marked snapshot regressions in `tests/test_specloop_attention.py` for malformed allowances after a successful read, offline cached exhausted/requested entries, and successful re
• specloop: complete task 2.1
• specloop: task 2.1 Replace `HUMAN_REASONS` in `nightshift/specloop_attention.py` with the allowance predicate, missing-field fallback, and allowance validation. Extend `tests/test_specloop_attention.p
• specloop: complete task 1.1
• specloop: task 1.1 Add `pause.auto_resumes_remaining` in `specloop/cli.py::_status_json` using `serve.AUTO_RESUME`, the pause schedule, and a non-mutating task lookup as specified in design.md. Extend
• Draft OpenSpec change nightshift-issue-11-attention-list-infra-pauses-past-their-a (specloop propose, round 1)
• Merge pull request #30 from mattpolicastro/fix/drafter-human-tasks
• Drafter: human-only checks belong in the design, never in tasks.md
• Draft OpenSpec change nightshift-issue-25-factory-page-fold-finished-runs-away (specloop propose, round 2)
• Merge pull request #20 from mattpolicastro/archive/factory-context
• Archive factory-context into openspec/specs
• Merge pull request #18 from mattpolicastro/fix/prepare-mutants
• Evidence gate: measure mutants for manifests with prepare steps; never pass on nothing