EPIC C: Search + Account Lifecycle (Week 2-3) — Phase 4: Child Tickets #35

Closed
opened 2026-05-28 00:57:54 +00:00 by Mark · 4 comments
Owner

Phase 4: Child Tickets

  • #11 ND-007: Replace primary search path with Postgres FTS
  • #12 ND-008: Implement account deletion end-to-end
  • #13 ND-009: Add demo mode seed/reset workflow

Decomposed from nodedesk#3

## Phase 4: Child Tickets - [ ] #11 ND-007: Replace primary search path with Postgres FTS - [ ] #12 ND-008: Implement account deletion end-to-end - [ ] #13 ND-009: Add demo mode seed/reset workflow --- _Decomposed from [nodedesk#3](https://forgejo.tail018ac4.ts.net/Mark/nodedesk/issues/3)_
Author
Owner

⏸ Needs Decision

Blocking factors:

  • Didn't meet auto-approve criteria — scope=medium, risk=medium, spec=aligned

Scope: medium Risk: medium Spec: aligned Type: feature
Summary: Complete Phase 4: make Postgres FTS the primary search path via proper tsvector migration, finalize account deletion (implementation exists), and polish the demo seed/reset workflow scripts.
Suggestion: ND-007: Create a raw SQL migration adding tsvector GENERATED ALWAYS AS columns + GIN indexes (not Prisma-managed String columns) and triggers for auto-update on Client (name), System (name/hostname), Note (title/body), WorkLog (summary/details). Remove the contains fallback branch in search.ts. ND-008: Already implemented with Stripe cancellation + cascade delete — verify end-to-end and add S3 attachment cleanup if attachments exist. ND-009: Update package.json reset script to match README (migrate reset + seed workflow) and align scripts/reset.ts with SEED_EMAIL/SEED_PASSWORD env vars for consistency. All three are self-contained and additive.
Rationale: SCOPE: medium — 3 child tickets across ~10 files (new migration with raw SQL triggers, existing account deletion code, script polish). ND-008 is already fully implemented, cutting actual work. RISK: medium — the FTS migration is additive but touches search, a core path used across all entity pages; migration requires careful raw SQL (tsvector columns + GIN indexes + triggers). Account deletion already exists with proper cascade, minimal risk. TYPE: feature — adding FTS as primary search path. SPEC: aligned — the project spec explicitly says 'PostgreSQL FTS (default)'. The Prisma schema already declares searchVector fields and FTS indexes, but no migration creates them yet — this closes that gap.

Action: Review each blocking factor above. Remove blocked:needs-decision label to route back to triage.

## ⏸ Needs Decision **Blocking factors:** - **Didn't meet auto-approve criteria** — scope=medium, risk=medium, spec=aligned --- **Scope:** medium **Risk:** medium **Spec:** aligned **Type:** feature **Summary:** Complete Phase 4: make Postgres FTS the primary search path via proper tsvector migration, finalize account deletion (implementation exists), and polish the demo seed/reset workflow scripts. **Suggestion:** ND-007: Create a raw SQL migration adding tsvector GENERATED ALWAYS AS columns + GIN indexes (not Prisma-managed String columns) and triggers for auto-update on Client (name), System (name/hostname), Note (title/body), WorkLog (summary/details). Remove the contains fallback branch in search.ts. ND-008: Already implemented with Stripe cancellation + cascade delete — verify end-to-end and add S3 attachment cleanup if attachments exist. ND-009: Update package.json reset script to match README (migrate reset + seed workflow) and align scripts/reset.ts with SEED_EMAIL/SEED_PASSWORD env vars for consistency. All three are self-contained and additive. **Rationale:** SCOPE: medium — 3 child tickets across ~10 files (new migration with raw SQL triggers, existing account deletion code, script polish). ND-008 is already fully implemented, cutting actual work. RISK: medium — the FTS migration is additive but touches search, a core path used across all entity pages; migration requires careful raw SQL (tsvector columns + GIN indexes + triggers). Account deletion already exists with proper cascade, minimal risk. TYPE: feature — adding FTS as primary search path. SPEC: aligned — the project spec explicitly says 'PostgreSQL FTS (default)'. The Prisma schema already declares searchVector fields and FTS indexes, but no migration creates them yet — this closes that gap. **Action:** Review each blocking factor above. Remove `blocked:needs-decision` label to route back to triage.
Author
Owner

GSD pipeline blocked at IMPLEMENT: API call failed after 3 retries.
]11;?\Let me start by loading the relevant skills for this task.

skill_view<function_call>{"name": "skill_view", "arguments": {"name": "create-skill"}}</function_command>
Command: skill_view stopped - not needed for this task.

I'll load the relevant skills for understanding the project

GSD pipeline blocked at IMPLEMENT: API call failed after 3 retries. ]11;?\Let me start by loading the relevant skills for this task. <function>skill_view<function_call>{"name": "skill_view", "arguments": {"name": "create-skill"}}</function_command> Command: skill_view stopped - not needed for this task. I'll load the relevant skills for understanding the project
Author
Owner

Triage: decompose failed

Triage pipeline could not create a sub-issue for auto-decomposition (API error or repo permissions). Marking this blocked:needs-decision to prevent re-evaluation. Remove the label to retry.

## Triage: decompose failed Triage pipeline could not create a sub-issue for auto-decomposition (API error or repo permissions). Marking this `blocked:needs-decision` to prevent re-evaluation. Remove the label to retry.
Author
Owner

Closing — epic tracker, all 3 child tickets (#11, #12, #13) already closed.

Closing — epic tracker, all 3 child tickets (#11, #12, #13) already closed.
Mark closed this issue 2026-09-15 15:31:55 +00:00
Sign in to join this conversation.
No description provided.