Skip to content

feat(recurrence): link a relapse to the same issue's timeline (R-05/E-01)#44

Open
ChelseaKR wants to merge 1 commit into
mainfrom
roadmap/recurrence-modeling-r-05-e-01
Open

feat(recurrence): link a relapse to the same issue's timeline (R-05/E-01)#44
ChelseaKR wants to merge 1 commit into
mainfrom
roadmap/recurrence-modeling-r-05-e-01

Conversation

@ChelseaKR

Copy link
Copy Markdown
Owner

A relapsed condition should attach to the SAME issue's history as a
recurrence and reopen that issue, instead of forcing a new orphan issue.
This fits entirely within the existing CRDT shapes, so there is no schema
or version change and merge semantics are untouched.

  • model: CaseDocument.record_recurrence(issue_id, text="") appends a
    kind="recurrence" timeline entry and sets the issue's LWW status
    register back to "open" with a fresh clock stamp; raises on unknown id.
  • cli: new habitable recur --vault ... --issue ID [--text ...] command.
  • appserver: AppServer.recur action + POST /api/issues/<id>/recur
    route returning {entry_id, status: "open"}; 4xx on unknown issue.
  • app: "This happened again" button on each issue that POSTs to the recur
    endpoint and refreshes status; EN/ES strings (issue_recur,
    msg_recur_added) kept at parity.
  • tests: model (append + reopen + unknown-issue + merge round-trip),
    appserver (endpoint + status reflects reopen/recurrence + 4xx), and a
    CLI test for recur.
  • docs: mark R-05/E-01 done in the persona feedback tables and move them
    from deferred to code-validated in the execution log.

Validated: make test (203 passed), make type (mypy --strict clean),
make i18n (G1/G3/G5/G6 green). Ruff clean on all touched files.

Co-Authored-By: Claude Fable 5 noreply@anthropic.com


Backfill PR for a completed roadmap item (roadmap/recurrence-modeling-r-05-e-01, 1 commit(s) over main). Part of the portfolio roadmap batch.

…-01)

A relapsed condition should attach to the SAME issue's history as a
recurrence and reopen that issue, instead of forcing a new orphan issue.
This fits entirely within the existing CRDT shapes, so there is no schema
or version change and merge semantics are untouched.

- model: `CaseDocument.record_recurrence(issue_id, text="")` appends a
  `kind="recurrence"` timeline entry and sets the issue's LWW status
  register back to "open" with a fresh clock stamp; raises on unknown id.
- cli: new `habitable recur --vault ... --issue ID [--text ...]` command.
- appserver: `AppServer.recur` action + `POST /api/issues/<id>/recur`
  route returning {entry_id, status: "open"}; 4xx on unknown issue.
- app: "This happened again" button on each issue that POSTs to the recur
  endpoint and refreshes status; EN/ES strings (issue_recur,
  msg_recur_added) kept at parity.
- tests: model (append + reopen + unknown-issue + merge round-trip),
  appserver (endpoint + status reflects reopen/recurrence + 4xx), and a
  CLI test for `recur`.
- docs: mark R-05/E-01 done in the persona feedback tables and move them
  from deferred to code-validated in the execution log.

Validated: make test (203 passed), make type (mypy --strict clean),
make i18n (G1/G3/G5/G6 green). Ruff clean on all touched files.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants