Explain a calculation that stops before completing the planning objective order. When an incumbent exists, the person receives the same stable plan explanation as for a completed plan, while the original trace ends at the real interruption point and distinguishes completed from unexecuted phases. An interruption without an incumbent remains understandable without inventing a plan.
Acceptance criteria
PlanningIncomplete with an incumbent exposes the chronological plan explanation bound to the original input snapshot.
The trace contains every event captured before the actual interruption and no event after it.
Completed, interrupted, and unexecuted phases are visibly distinguishable.
The last completed checkpoint and incumbent remain identical to an uninstrumented calculation under the same planning-work budget.
PlanningIncomplete without an incumbent explains why no plan is available and never renders stale placements.
Trace loading or explanation failure does not replace the existing incomplete outcome or lose its incumbent.
Deadline, worker-unavailable, worker-error, and planner-error reasons remain distinct.
The annual calendar clears any previous calculation context before displaying the incomplete result.
Public planner tests cover interruption during early and quality phases; rendered tests cover incumbent and no-incumbent states.
Blocked by
#50 — Compléter la trace des optimisations de qualité
## Parent
#46
## What to build
Explain a calculation that stops before completing the planning objective order. When an incumbent exists, the person receives the same stable plan explanation as for a completed plan, while the original trace ends at the real interruption point and distinguishes completed from unexecuted phases. An interruption without an incumbent remains understandable without inventing a plan.
## Acceptance criteria
- [ ] `PlanningIncomplete` with an incumbent exposes the chronological plan explanation bound to the original input snapshot.
- [ ] The trace contains every event captured before the actual interruption and no event after it.
- [ ] Completed, interrupted, and unexecuted phases are visibly distinguishable.
- [ ] The last completed checkpoint and incumbent remain identical to an uninstrumented calculation under the same planning-work budget.
- [ ] `PlanningIncomplete` without an incumbent explains why no plan is available and never renders stale placements.
- [ ] Trace loading or explanation failure does not replace the existing incomplete outcome or lose its incumbent.
- [ ] Deadline, worker-unavailable, worker-error, and planner-error reasons remain distinct.
- [ ] The annual calendar clears any previous calculation context before displaying the incomplete result.
- [ ] Public planner tests cover interruption during early and quality phases; rendered tests cover incumbent and no-incumbent states.
## Blocked by
- #50 — Compléter la trace des optimisations de qualité
Incumbent and no-incumbent explanations exist. On the published worker timeout/error path, fail() terminates the worker and supplies only fallbackTrace plus explanationError rather than preserving the actual captured prefix and materializing the incumbent explanation. Early/quality interruption trace fidelity and the distinct worker/planner failure cases remain to verify through the public seam.
Evidence: reviewed issue requirements/discussions and f1f0835 (published application source; live main 57a39c81 only adds Renovate configuration). Tested an isolated checkout of the published source: 20 test files, 157/157 tests passed, including the five benchmark scenarios. Local commit 51978f7 and uncommitted edits were inspected separately and are not evidence of published completion.
Completion audit — 2026-10-02
Incumbent and no-incumbent explanations exist. On the published worker timeout/error path, fail() terminates the worker and supplies only fallbackTrace plus explanationError rather than preserving the actual captured prefix and materializing the incumbent explanation. Early/quality interruption trace fidelity and the distinct worker/planner failure cases remain to verify through the public seam.
Evidence: reviewed issue requirements/discussions and f1f0835 (published application source; live main 57a39c81 only adds Renovate configuration). Tested an isolated checkout of the published source: 20 test files, 157/157 tests passed, including the five benchmark scenarios. Local commit 51978f7 and uncommitted edits were inspected separately and are not evidence of published completion.
Implemented with $luna-verified-implement and independently verified.
Incomplete calculations retain the valid incumbent and stable explanation, preserve the real interruption prefix and phase states, and distinguish deadline, planner, and worker errors. Emergency recovery uses the exact checkpoint without re-optimization.
Validation: 198/198 tests across 23 files, app/spec TypeScript checks, ESLint, and production build pass. Chromium keyboard, focus-restoration, background comparison, and responsive checks at 375/768/1440 pixels pass with no page errors. Original benchmark outcomes match the pre-change baseline in all five scenarios, with and without tracing.
The implementation is in the local working tree based on 0ce33cc9d6fe7381965a9162571abe205d0b7350; no commit or push has been made.
Implemented with $luna-verified-implement and independently verified.
Incomplete calculations retain the valid incumbent and stable explanation, preserve the real interruption prefix and phase states, and distinguish deadline, planner, and worker errors. Emergency recovery uses the exact checkpoint without re-optimization.
Validation: 198/198 tests across 23 files, app/spec TypeScript checks, ESLint, and production build pass. Chromium keyboard, focus-restoration, background comparison, and responsive checks at 375/768/1440 pixels pass with no page errors. Original benchmark outcomes match the pre-change baseline in all five scenarios, with and without tracing.
The implementation is in the local working tree based on 0ce33cc9d6fe7381965a9162571abe205d0b7350; no commit or push has been made.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Parent
#46
What to build
Explain a calculation that stops before completing the planning objective order. When an incumbent exists, the person receives the same stable plan explanation as for a completed plan, while the original trace ends at the real interruption point and distinguishes completed from unexecuted phases. An interruption without an incumbent remains understandable without inventing a plan.
Acceptance criteria
PlanningIncompletewith an incumbent exposes the chronological plan explanation bound to the original input snapshot.PlanningIncompletewithout an incumbent explains why no plan is available and never renders stale placements.Blocked by
mentioned in issue #54
mentioned in issue #55
Completion audit — 2026-10-02
Incumbent and no-incumbent explanations exist. On the published worker timeout/error path, fail() terminates the worker and supplies only fallbackTrace plus explanationError rather than preserving the actual captured prefix and materializing the incumbent explanation. Early/quality interruption trace fidelity and the distinct worker/planner failure cases remain to verify through the public seam.
Evidence: reviewed issue requirements/discussions and
f1f0835(published application source; live main57a39c81only adds Renovate configuration). Tested an isolated checkout of the published source: 20 test files, 157/157 tests passed, including the five benchmark scenarios. Local commit 51978f7 and uncommitted edits were inspected separately and are not evidence of published completion.Implemented with $luna-verified-implement and independently verified.
Incomplete calculations retain the valid incumbent and stable explanation, preserve the real interruption prefix and phase states, and distinguish deadline, planner, and worker errors. Emergency recovery uses the exact checkpoint without re-optimization.
Validation: 198/198 tests across 23 files, app/spec TypeScript checks, ESLint, and production build pass. Chromium keyboard, focus-restoration, background comparison, and responsive checks at 375/768/1440 pixels pass with no page errors. Original benchmark outcomes match the pre-change baseline in all five scenarios, with and without tracing.
The implementation is in the local working tree based on 0ce33cc9d6fe7381965a9162571abe205d0b7350; no commit or push has been made.
mentioned in issue #46
Preserved GitLab #52 history: source attribution, exact timestamps, discussion grouping and review positions. Historical diff snapshots: 0; visible source notes: 5.
gitlab-35-issue-52.md (SHA-256
8f9bce3f271d8186feadfa065cda85e7403df53b3b54224bc7d3f60c452e7ad4)gitlab-35-issue-52.json (SHA-256
7a1d1c070d04f672aaf8b08693ccc2d883910860badee25975d3cbe996d79dd1)Old CI job execution and reports are omitted. Original source files and rollback backups remain protected.