Explain why valid obligation rules cannot be satisfied jointly. The person first sees a concise conflict explanation naming the conflicting rules and practical bottleneck, then may inspect the original obligation branches actually explored. No plan, date score, or counterfactual matrix is fabricated for a conflict.
Acceptance criteria
PlanningConflict displays a concise domain-readable explanation tied to the frozen submitted rules and balances.
The explanation identifies the reported conflicting obligations and the known horizon, capacity, type, availability, or earned-entitlement bottleneck.
The advanced trace contains every obligation branch actually explored before infeasibility was concluded.
Pruned, infeasible, and solution-limit decisions retain their real reason and do not receive invented metrics.
The trace does not include quality phases that were never reached.
No final plan explanation, placement stepper, or counterfactual date matrix is shown for a conflict.
InvalidInput continues to show validation reasons without a conflict explanation or calculation trace.
A conflict cannot be produced merely because tracing, trace delivery, or explanation failed.
Public planner and rendered annual-calendar tests cover typed-capacity conflict, joint date conflict, earned-entitlement conflict, and malformed input separation.
Blocked by
#49 — Tracer les obligations, le risque et les préférences du calcul original
## Parent
#46
## What to build
Explain why valid obligation rules cannot be satisfied jointly. The person first sees a concise conflict explanation naming the conflicting rules and practical bottleneck, then may inspect the original obligation branches actually explored. No plan, date score, or counterfactual matrix is fabricated for a conflict.
## Acceptance criteria
- [ ] `PlanningConflict` displays a concise domain-readable explanation tied to the frozen submitted rules and balances.
- [ ] The explanation identifies the reported conflicting obligations and the known horizon, capacity, type, availability, or earned-entitlement bottleneck.
- [ ] The advanced trace contains every obligation branch actually explored before infeasibility was concluded.
- [ ] Pruned, infeasible, and solution-limit decisions retain their real reason and do not receive invented metrics.
- [ ] The trace does not include quality phases that were never reached.
- [ ] No final plan explanation, placement stepper, or counterfactual date matrix is shown for a conflict.
- [ ] `InvalidInput` continues to show validation reasons without a conflict explanation or calculation trace.
- [ ] A conflict cannot be produced merely because tracing, trace delivery, or explanation failed.
- [ ] Public planner and rendered annual-calendar tests cover typed-capacity conflict, joint date conflict, earned-entitlement conflict, and malformed input separation.
## Blocked by
- #49 — Tracer les obligations, le risque et les préférences du calcul original
Conflict explanations, named frozen rules, bottleneck reasons, original obligation traces and InvalidInput separation are implemented. The specified regression coverage is incomplete: published explanation tests cover typed capacity, while rendered conflict coverage uses one typed-capacity fixture; there is no equivalent explanation/trace coverage for joint-date and earned-entitlement conflicts. Add/verify those cases before declaring every acceptance criterion done.
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
Conflict explanations, named frozen rules, bottleneck reasons, original obligation traces and InvalidInput separation are implemented. The specified regression coverage is incomplete: published explanation tests cover typed capacity, while rendered conflict coverage uses one typed-capacity fixture; there is no equivalent explanation/trace coverage for joint-date and earned-entitlement conflicts. Add/verify those cases before declaring every acceptance criterion done.
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.
Conflict explanations distinguish typed, joint-date, and earned-order conflicts from invalid input and retain the actual explored branch history without fabricating a plan.
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.
Conflict explanations distinguish typed, joint-date, and earned-order conflicts from invalid input and retain the actual explored branch history without fabricating a plan.
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 why valid obligation rules cannot be satisfied jointly. The person first sees a concise conflict explanation naming the conflicting rules and practical bottleneck, then may inspect the original obligation branches actually explored. No plan, date score, or counterfactual matrix is fabricated for a conflict.
Acceptance criteria
PlanningConflictdisplays a concise domain-readable explanation tied to the frozen submitted rules and balances.InvalidInputcontinues to show validation reasons without a conflict explanation or calculation trace.Blocked by
mentioned in issue #54
mentioned in issue #55
Completion audit — 2026-10-02
Conflict explanations, named frozen rules, bottleneck reasons, original obligation traces and InvalidInput separation are implemented. The specified regression coverage is incomplete: published explanation tests cover typed capacity, while rendered conflict coverage uses one typed-capacity fixture; there is no equivalent explanation/trace coverage for joint-date and earned-entitlement conflicts. Add/verify those cases before declaring every acceptance criterion done.
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.
Conflict explanations distinguish typed, joint-date, and earned-order conflicts from invalid input and retain the actual explored branch history without fabricating a plan.
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 #53 history: source attribution, exact timestamps, discussion grouping and review positions. Historical diff snapshots: 0; visible source notes: 5.
gitlab-35-issue-53.md (SHA-256
a5d595075fbd10c07e100aa0ed7a592ec670e5e63ad675d165bc676389404421)gitlab-35-issue-53.json (SHA-256
a270d522b4982f1b733504de5aab10d3f5919d74bbe37dd06702fea524c06d0f)Old CI job execution and reports are omitted. Original source files and rollback backups remain protected.