Skip to content

feat(create): PROG-115 default new actions to backlog, one shared defaulting path#93

Merged
bryankennedy merged 2 commits into
mainfrom
act/PROG-115
Jul 13, 2026
Merged

feat(create): PROG-115 default new actions to backlog, one shared defaulting path#93
bryankennedy merged 2 commits into
mainfrom
act/PROG-115

Conversation

@exe-dev-github-integration

Copy link
Copy Markdown
Contributor

Every create-action surface now starts a new action in backlog instead of To do — promotion to todo becomes a deliberate act, matching the DB schema and API fallback that already said backlog.

What changed

  • DEFAULT_ACTION_STATUS ("backlog") minted in src/shared/constants.ts — referenced by the API's fallback, the client store, and the create dialog's initial pick, so the default lives in one place.
  • The "appropriate amount of DRY": the three creation UIs (modal dialog, Outline capture bullet, Agenda dated quick-add) are deliberately different surfaces, so instead of merging them, the shared piece is the defaulting path. ActionCreateInput now requires only title + focusId; store.createAction resolves every omitted field once (arc/parent → null, status → backlog, priority → none, estimate/due → null) and builds both the optimistic temp row and the POST body from the same resolved values — the optimistic UI can no longer drift from what the server stores. Call sites shed their copy-pasted status/priority/estimate boilerplate and keep only the fields they actually mean.
  • Side effect (intended): the Agenda quick-add creates backlog actions now — still visible in its bucket, since the Agenda lists every non-closed status.
  • Docs: REFERENCE §2 (anatomy) + §5 (Agenda) updated; rationale in docs/decisions/PROG-115.md.

Verified

tsc -b clean, 170 unit tests pass, and a Playwright drive confirmed all four paths: the create dialog opens on Backlog and its created action lands in backlog; an Outline capture creates backlog; the Agenda quick-add creates a dated backlog action that stays visible in its bucket; a bare POST /api/actions (no status) returns backlog.

The DB schema and API fallback already said backlog, but every client
creation surface — the create dialog, the Outline capture, the Agenda
quick-add — hardcoded status "todo", so raw intake skipped the backlog
and polluted To do.

Mint DEFAULT_ACTION_STATUS ("backlog") in src/shared/constants.ts and
make it the single source for the API fallback, the store, and the
dialog's initial pick. DRY the surfaces at the defaulting path rather
than the UI: ActionCreateInput now requires only title + focusId, and
store.createAction resolves every omitted field once (arc/parent null,
status backlog, priority none, estimate/due null) before building both
the optimistic row and the POST body from the same values, so the temp
row can't disagree with what the server stores. Call sites keep only
the fields they mean.

Side effect: the Agenda quick-add now creates backlog (not todo)
actions — still visible there, since the Agenda lists every non-closed
status. REFERENCE §2/§5 updated; rationale in docs/decisions/PROG-115.md.
@bryankennedy bryankennedy merged commit d3a82b6 into main Jul 13, 2026
2 checks passed
@bryankennedy bryankennedy deleted the act/PROG-115 branch July 13, 2026 17:01
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.

1 participant