Give landlords consistent validation and safe recovery across notice, withdrawal, invalidation, agreed ending, closure, and evidence workflows for ending a Bail.
Acceptance criteria
Every editable date, reason, timezone, evidence, and attestation value is audited against its command and domain lifecycle rule.
Notice, withdrawal, invalidation, agreed-end, and closure forms show field-specific French guidance after touch or submit.
Multipart and JSON commands return structured field failures or safe operation-level file guidance without raw exception text.
Each operation owns its pending and error state, preserves unrelated actions, and prevents duplicate submission.
Domain conflicts and impossible lifecycle transitions remain distinct from request validation.
Existing lease-ending backend, service, card, page, and journey tests cover the slice and relevant checks pass.
## Parent
#42
## What to build
Give landlords consistent validation and safe recovery across notice, withdrawal, invalidation, agreed ending, closure, and evidence workflows for ending a Bail.
## Acceptance criteria
- [ ] Every editable date, reason, timezone, evidence, and attestation value is audited against its command and domain lifecycle rule.
- [ ] Notice, withdrawal, invalidation, agreed-end, and closure forms show field-specific French guidance after touch or submit.
- [ ] Multipart and JSON commands return structured field failures or safe operation-level file guidance without raw exception text.
- [ ] Each operation owns its pending and error state, preserves unrelated actions, and prevents duplicate submission.
- [ ] Domain conflicts and impossible lifecycle transitions remain distinct from request validation.
- [ ] Existing lease-ending backend, service, card, page, and journey tests cover the slice and relevant checks pass.
## Blocked by
- #46
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
#42
What to build
Give landlords consistent validation and safe recovery across notice, withdrawal, invalidation, agreed ending, closure, and evidence workflows for ending a Bail.
Acceptance criteria
Blocked by
/blocked_by #46
mentioned in issue #59
mentioned in commit 690bb5fa9f068a7c8195bce5091b90ff52a65e37
mentioned in commit 8a2220d1bbb6266a65085f403a5b0b7f20b1cae4
Preserved GitLab #54 history: source attribution, exact timestamps, discussion grouping and review positions. Historical diff snapshots: 1; visible source notes: 4.
gitlab-47-issue-54.md (SHA-256
bd84e9679eb6f29a02e87010bcd8668d32c6d568b706d379d4c555da2b0bf08f)gitlab-47-issue-54.json (SHA-256
e70abd88116e19d3b6b36a8239625366fab1e7b8daed3f46d0b1fc51904c1428)Old CI job execution and reports are omitted. Original source files and rollback backups remain protected.