Commit graph

472 commits

Author SHA1 Message Date
979554d4dc docs(phase-24): mark 24-07 plan complete in ROADMAP (7/7)
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-05 23:19:29 -04:00
820e5c584b fix(state): correct STATE.md progress totals after tool bug
gsd-sdk's state.complete-phase fallback (gsd-tools.cjs) overwrote the
milestone-wide progress totals with just phase 24's counts (total_phases:
1, total_plans: 7) and lost milestone_name entirely. Restored accurate
project-wide totals (10 phases / 37 plans across v3.0 including this
post-ship addition) and the milestone name.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-05 23:19:13 -04:00
3465192ab5 docs(24): mark code review findings fixed (commit e057255)
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-05 23:17:43 -04:00
52afdca8a1 docs(24-07): resolve live end-to-end checkpoint — all 9 steps passed
Ran the phase-closing 9-step live verification against the real
wulfconsulting.com hosted zone. All steps confirmed passing:
sync, create/update/delete round-trip, audit completeness, NS-write
rejection + genuine AWS failure logging, admin/user auth gating,
drift detection, and D-12/D-10 health-check behavior.

One real bug found and fixed along the way (commit 4da5664): TXT
record values weren't RFC-1035-quoted, so AWS rejected every TXT
create/update with InvalidCharacterString. Fixed in
route53-change-submit.ts, 4 regression tests added, retried
successfully.

Logged one pre-existing, unrelated finding: /admin/integrations page
load is slow overall, confirmed not specific to Route 53's own health
check (which is bounded to a few seconds) — likely another
integration's untimeouts liveCheck() probe. Deferred, not fixed.

24-VALIDATION.md's three Manual-Only Verifications rows updated with
observed outcomes; status marked complete.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-05 22:55:27 -04:00
31eb5e0321 docs(24-07): partial plan summary — Tasks 1-2 complete, Task 3 checkpoint pending
- Task 1 (page shell) and Task 2 (record editor dialog) committed and
  verified (tsc + build + acceptance-criteria greps all green)
- Task 3 is a blocking checkpoint:human-verify requiring a live 9-step
  round-trip against a real AWS account — not run, not fabricated
- Marked 24-07-T1/24-07-T2 rows green in 24-VALIDATION.md; 24-07-T3 and
  the three Manual-Only Verifications rows it covers remain pending
  human execution
2026-08-05 20:54:14 -04:00
493d6daf6c docs(phase-24): update tracking after wave 3 (plans 24-05, 24-06 complete)
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-05 20:39:58 -04:00
c47de2a91c chore: merge executor worktree (worktree-agent-a8fd5f9961335cf8d) — plan 24-05 2026-08-05 20:38:35 -04:00
5e1b8aae75 docs(24-05): add plan summary
Route 53 API surface — read routes, sync trigger, CRUD write routes with
pending/committed/failed audit lifecycle.
2026-08-05 20:37:55 -04:00
a7d6a04110 feat(24-05): CRUD write routes with pending/committed/failed audit lifecycle
- app/api/route53/zones/[zoneId]/records/route.ts: add POST (create)
- app/api/route53/zones/[zoneId]/records/[recordId]/route.ts: PATCH (update), DELETE
- All three write handlers: requireAdmin() first (D-04), validateRecordWrite() before
  any AWS command (D-01), createPendingAuditLog() before submitRecordChange() (D-07/SC-3)
- Committed path: markAuditCommitted -> insertPulseCrudHistory (pulse_crud, SC-4) ->
  mirror refresh; failed path: sanitizeAwsError -> markAuditFailed -> 502, no history row
- DELETE submits the exact mirror-read recordset (name/type/ttl/resourceRecords), never
  client-supplied values, per Route 53's exact-match delete requirement
- recordId zone-prefix mismatch guard (T-24-17): 400 before any audit row or AWS call
- No staged-approval mechanism anywhere (D-03) — mutation executes on first request
- tsc clean; npm test 554/556 passing (2 pre-existing itglue-search failures, unrelated,
  logged in deferred-items.md, already documented by plans 24-01/24-03)
2026-08-05 20:36:54 -04:00
82408733a4 docs(24-06): append self-check results to plan summary 2026-08-05 20:33:26 -04:00
8fcf587a30 docs(24-06): create plan summary 2026-08-05 20:33:08 -04:00
2b009573c4 docs(phase-24): update tracking after wave 2 (plans 24-02, 24-03, 24-04 complete)
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-05 20:27:11 -04:00
d00c47ecb1 chore: merge executor worktree (worktree-agent-a30d26dba3410e0da) — plan 24-04 2026-08-05 20:26:13 -04:00
2dbb1e13e2 chore: merge executor worktree (worktree-agent-ab77d007f6dbb3578) — plan 24-03 2026-08-05 20:26:13 -04:00
416abe98a0 docs(24-04): create plan summary
- Route 53 registered in integration health with D-12 live NS-delegation check
- Records EGRESS-OK path taken (Node dns module, no DoH fallback needed)
- Documents local sanitizeAwsError duplication vs plan 24-03 (parallel worktree gap)
2026-08-05 20:25:33 -04:00
6df084cb98 docs(24-02): create plan summary
Route 53 sync + drift detection plan complete: 3 tasks, 4 files, all
verification passing (22 new tests, tsc clean, full suite green aside from
pre-existing unrelated itglue-search failures).
2026-08-05 20:24:18 -04:00
3d2680c47f docs(24-03): add plan summary
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-05 20:23:24 -04:00
8b5e926bb1 feat(24-03): add Route 53 audit lifecycle and pulse_crud history persistence
- createPendingAuditLog/markAuditCommitted/markAuditFailed implement the pending -> committed/failed lifecycle (D-07, SC-3); markAuditFailed always sanitizes via sanitizeAwsError
- insertPulseCrudHistory writes 'pulse_crud' history rows, documented as callable only after a committed write
- upsertMirrorRecord/softDeleteMirrorRecord/loadMirrorRecord manage the route53_records mirror; mirror writes are best-effort and soft-delete only (D-08), audit/history writes are not best-effort
- log same pre-existing itglue-search.test.ts failures (unrelated, out of scope) in deferred-items.md
2026-08-05 20:22:24 -04:00
ecd4dabd67 docs(phase-24): update tracking after wave 1 (plan 24-01 complete)
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-05 20:17:42 -04:00
b81ad3ecc2 docs(24-01): resolve checkpoint — BWS key rename confirmed, DNS egress OK
Checkpoint task 3 resolved: BWS secret keys renamed in Bitwarden
(AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY confirmed present), DNS egress
to public resolvers confirmed OK, credentials confirmed reaching the
Node process. IAM scope left as an open operational item for the
developer to confirm via AWS console.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-05 20:16:45 -04:00
97ec5722b1 docs(24-01): create partial SUMMARY, checkpoint pending
Tasks 1-2 complete (AWS SDK + schema migration, types + credential factory).
Task 3 is a blocking human-verify checkpoint requiring BWS/AWS credential
confirmation and live docker/DNS-egress verification — not fabricated, not
run unilaterally. Execution stops here pending developer response.
2026-08-05 19:26:46 -04:00
fadae68fe4 docs(24-01): log pre-existing itglue-search test failures as out-of-scope
Unrelated to Route 53 factory/schema work; not fixed per scope boundary rule.
2026-08-05 19:25:39 -04:00
602c3bb7b5 docs(24): create phase plan 2026-08-05 19:18:13 -04:00
0eab4996e9 docs(24): add pattern map 2026-08-05 19:18:00 -04:00
998c4b1a36 docs(24): research phase domain for AWS Route 53 DNS sync 2026-08-05 19:17:59 -04:00
52affe348c docs(24): cite D-02/D-05/D-08/D-09 in plan must_haves 2026-08-05 19:17:35 -04:00
15e52280b5 docs(24): create phase plan — 7 plans in 4 waves for AWS Route 53 DNS sync 2026-08-05 19:09:15 -04:00
6ad27fcbb6 docs(phase-24): add validation strategy 2026-08-05 18:46:43 -04:00
e289f2d24f docs(state): record phase 24 context session 2026-08-05 18:31:11 -04:00
0805e387e3 docs(24): capture phase context 2026-08-05 18:31:06 -04:00
e9478101a3 docs(quick-260721-n49): fix classifier to resolve per-company Mimecast tenant instead of the global tenant 2026-07-21 16:48:11 -04:00
f58856e103 docs(260721-n49): pre-dispatch plan for fix classifier Mimecast tenant resolution 2026-07-21 16:41:14 -04:00
3e9c7633d1 docs(quick-260721-mmf): fix Mimecast blast-radius query so it reflects the true blast radius across all recipients, not just the single reporter 2026-07-21 16:26:57 -04:00
f50b8a3a9b docs(260721-mmf): pre-dispatch plan for fix Mimecast blast-radius query scope 2026-07-21 16:19:31 -04:00
6eafaae40a docs(quick-260721-fy8): fix mimecast and qbo sync scheduler dispatch and reschedule mimecast cron
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-21 11:39:52 -04:00
d41d6e7c0b docs(260721-fy8): pre-dispatch plan for fix mimecast and qbo sync scheduler dispatch and reschedule mimecast cron 2026-07-21 11:33:33 -04:00
a0d01cfe8b docs(v3.0): add LLM-context companion doc for phishing triage feature 2026-07-18 11:22:09 -04:00
f0c09927f4 docs(v3.0): generate milestone summary for onboarding 2026-07-18 11:20:31 -04:00
a65b29055c docs(quick-260718-9qg): complete QBO integration handoff quick task
Records the plan, execution summary, and STATE.md quick-task log entry
for the QBO_INTEGRATION_HANDOFF.md doc committed in ea8a36b.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W6RuWdiUiXrPK6FLBHjtpY
2026-07-18 07:08:29 -04:00
672f17b7f9 chore: check in pending work — queue preferences, QBO AR diagnostics, mobile engagement fixes, ops scripts
Bundles several in-progress efforts that were sitting uncommitted:
- User queue-preferences (migration 087, API route, popover component)
- QBO invoice soft-delete (migration 088) and AR diagnostics route
- Dashboard/mobile engagement route and page adjustments
- Docker Compose log-rotation config
- One-off ticket/RMM investigation scripts (scripts/)
- Planning docs: phase verification/pattern notes, mobile shell design spec
- .gitignore: exclude local scratch financial/inventory data and Claude Code
  worktree/local-settings runtime state (never meant for version control)

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W6RuWdiUiXrPK6FLBHjtpY
2026-07-18 06:34:57 -04:00
a30d72e9ba docs(quick-260718-7v8): Fix Mimecast blast-radius held-message false-positive fix 2026-07-18 05:48:23 -04:00
36f4d418d0 docs(260718-7v8): pre-dispatch plan for Mimecast blast-radius held-message fix 2026-07-18 05:42:27 -04:00
4a77b0544c docs(quick-260717-v6c): Add Mark as accidental report action to phishing Action Area 2026-07-17 22:37:25 -04:00
2b48dc0c10 docs(260717-v6c): pre-dispatch plan for Mark as accidental report action 2026-07-17 22:30:37 -04:00
90a1b684c9 docs: fix commit hash reference in quick task 260717-a19 STATE.md row 2026-07-17 07:27:14 -04:00
266fc19153 docs(quick-260717-a19): phishing allowlist/timing/idempotency fixes + Seubert reclassification 2026-07-17 07:27:02 -04:00
075c4bbd24 chore: remove REQUIREMENTS.md for v3.0 milestone
Archived to .planning/milestones/v3.0-REQUIREMENTS.md. Fresh REQUIREMENTS.md
gets created when the next milestone's requirements are defined.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W6RuWdiUiXrPK6FLBHjtpY
2026-07-17 06:58:12 -04:00
e5d42bda88 docs: update retrospective for v3.0 2026-07-17 06:57:43 -04:00
e9101b0d44 chore: archive v3.0 milestone files 2026-07-17 06:56:49 -04:00
8b04be160f docs: fix stale requirement checkboxes (CLASSIFY-01..06, REVIEW-03), record milestone-close deferred items 2026-07-17 06:48:16 -04:00