Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ All notable user-visible changes to CASCADE are documented here. The format is l

### Added

- **Linear status mapping — full parity with Trello and JIRA.** The Linear PM wizard's Field Mapping step now exposes all eight CASCADE stages that drive agent dispatch (backlog, splitting, planning, todo, inProgress, inReview, done, merged) in lifecycle order, instead of only four. An operator can now map a Linear workflow state to any of `splitting`, `planning`, `todo`, or `merged` and have the corresponding agent (splitting, planning, implementation, backlog-manager) dispatch on issue transitions — previously these four stages were unreachable from Linear because the wizard had no slot to save them. Existing Linear integrations upgrade in place: the four new slots render as "not set" on next wizard visit; pre-existing mappings are untouched. No migration required. The normalized `ProjectPMConfig.statuses` type widens to declare the full nine-stage vocabulary (including `debug`, reserved for a future trigger), so providers can no longer silently drift from the trigger layer's dispatch map. (Spec [003](docs/specs/003-linear-status-mapping-parity.md), plan [1/1](docs/plans/003-linear-status-mapping-parity/1-status-parity.md).)
- **Linear wizard — inline webhook signing-secret field and accurate events list.** The Webhooks step of the Linear PM wizard now renders a `ProjectSecretField` bound to `LINEAR_WEBHOOK_SECRET` directly beneath the webhook URL, so operators can paste Linear's signing secret in place instead of navigating to the Credentials tab. The "Enable events" instructions now list the three event families CASCADE actually consumes — `Issues` (status transitions), `Comments` (bot @mentions), and `Issue Labels` ("Ready to Process") — each with a one-line rationale tracing back to the registered trigger handlers. (Spec [002](docs/specs/002-linear-webhook-setup-ux.md), plan [2/2](docs/plans/002-linear-webhook-setup-ux/2-wizard-webhooks-step.md).)

### Changed
Expand All @@ -14,6 +15,7 @@ All notable user-visible changes to CASCADE are documented here. The format is l

### Fixed

- **JIRA `resolveLifecycleConfig` silent-drop of splitting / planning / todo.** The JIRA PM wizard accepts mappings for all eight CASCADE stages, but the normalization step that feeds them to `PMLifecycleManager` was dropping `splitting`, `planning`, and `todo` on the floor. Any agent lifecycle hook that moved JIRA issues to those statuses silently no-op'd. Now passes all eight keys through. No operator action required — existing JIRA mappings start working once the fix deploys. (Spec [003](docs/specs/003-linear-status-mapping-parity.md), plan [1/1](docs/plans/003-linear-status-mapping-parity/1-status-parity.md).)
- **Linear wizard Save — HTTP 500 on `projects.integrations.upsert`.** A check constraint (`chk_integration_category_provider`) restricted the `pm` category to `trello` or `jira`; Linear support shipped without a matching constraint update, so every attempt to save a Linear PM integration failed with SQLSTATE 23514. Migration 0049 adds `linear` to the allowed `pm` providers. (Spec [002](docs/specs/002-linear-webhook-setup-ux.md), plan [1/2](docs/plans/002-linear-webhook-setup-ux/1-save-path-fix.md).)
- **Dashboard error logs now surface DB diagnostic fields.** Unhandled errors in the Hono app error handler and tRPC error formatter now include PG error code, detail, constraint, table, and column (unwrapped from `.cause` when Drizzle wraps a pg driver error). Clients still receive a generic "Internal server error" for unexpected `INTERNAL_SERVER_ERROR` throws — real diagnostics go to stdout for operators to grep. (Spec [002](docs/specs/002-linear-webhook-setup-ux.md), plan [1/2](docs/plans/002-linear-webhook-setup-ux/1-save-path-fix.md).)

Expand Down
352 changes: 352 additions & 0 deletions docs/plans/003-linear-status-mapping-parity/1-status-parity.md.done

Large diffs are not rendered by default.

37 changes: 37 additions & 0 deletions docs/plans/003-linear-status-mapping-parity/_coverage.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Coverage map for spec 003-linear-status-mapping-parity

Auto-generated by /plan. Tracks which plans satisfy which spec ACs.

## Spec ACs

| # | Spec AC (short) | Satisfied by | Status |
|---|---|---|---|
| 1 | Linear wizard renders 8 rows in lifecycle order | plan 1 (status-parity) | full |
| 2 | Persistence of saved mappings | plan 1 (status-parity) | full |
| 3 | Linear agent dispatch for 4 newly-reachable stages | plan 1 (status-parity) | full |
| 4 | Canonical type declares 9 keys; STATUS_TO_AGENT ⊆ declared keys | plan 1 (status-parity) | full |
| 5 | Trello Field Mapping unchanged | plan 1 (status-parity) | full |
| 6 | JIRA agent dispatch for splitting / planning / todo | plan 1 (status-parity) | full |
| 7 | Existing Linear integrations upgrade cleanly | plan 1 (status-parity) | full |
| 8 | No required migration | plan 1 (status-parity) | full |
| 9 | Unmapped transition is a no-op | plan 1 (status-parity) | full |
| 10 | Zod/tRPC accepts any subset of the 9 keys | plan 1 (status-parity) | full |
| 11 | Lint + typecheck + tests green | plan 1 (status-parity) | full |

## Coverage summary

- **11 spec ACs** mapped to **1 plan**
- **11 / 11** full-coverage ACs
- **0 partial-coverage ACs** — atomic spec, single coherent plan.

## Plan dependency graph

```
1-status-parity (no deps; closes the spec)
```

## Notes

- Decomposition reviewed: splitting into "canonical-type" + "linear-ui" was considered and rejected — the type widening is 4 lines with no consumer until the Linear / JIRA changes land, so splitting would ship dead weight in plan 1. All work is tightly coupled and reads cleanly as one logical change.
- Spec 003 was amended during planning to include JIRA's silent-drop bug fix (originally non-goal #5). Amendment signed off; spec edited in place; this coverage map reflects the amended spec.
- JIRA wizard UI is already at parity (8 slots) — this plan's JIRA work is backend-only (`resolveLifecycleConfig` widening).
Loading
Loading