Expliquer un conflit d’obligations #53

Closed
opened 2026-08-30 20:20:17 +02:00 by nessar · 6 comments
nessar commented 2026-08-30 20:20:17 +02:00 (Migrated from 172.24.0.1:8928)

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
## 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
nessar commented 2026-08-30 20:20:18 +02:00 (Migrated from 172.24.0.1:8928)

mentioned in issue #54

mentioned in issue #54
nessar commented 2026-08-30 20:20:19 +02:00 (Migrated from 172.24.0.1:8928)

mentioned in issue #55

mentioned in issue #55
nessar commented 2026-10-02 14:54:27 +02:00 (Migrated from 172.24.0.1:8928)

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.

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.
nessar commented 2026-10-03 15:17:32 +02:00 (Migrated from 172.24.0.1:8928)

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.
nessar (Migrated from 172.24.0.1:8928) closed this issue 2026-10-03 15:17:33 +02:00
nessar commented 2026-10-03 16:23:33 +02:00 (Migrated from 172.24.0.1:8928)

mentioned in issue #46

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.

<!-- gitlab-to-gitea-history:35:Issue:53 --> 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](https://gitea.nessar.fr/attachments/78727df5-cc06-4408-81e3-d267f13bc636) (SHA-256 `a5d595075fbd10c07e100aa0ed7a592ec670e5e63ad675d165bc676389404421`) [gitlab-35-issue-53.json](https://gitea.nessar.fr/attachments/35e07ded-2bc9-4106-a2d0-92599272b291) (SHA-256 `a270d522b4982f1b733504de5aab10d3f5919d74bbe37dd06702fea524c06d0f`) Old CI job execution and reports are omitted. Original source files and rollback backups remain protected.
gitea-emergency added this to the Development project 2026-10-11 22:14:32 +02:00
gitea-emergency moved this to Closed in Development on 2026-10-11 22:14:32 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: nessar/vac-optimizer#53