From b16f922daaed50d53b36a4e92fa43c4c50738372 Mon Sep 17 00:00:00 2001 From: Rogee Date: Sun, 7 Jun 2026 01:56:41 +0800 Subject: [PATCH] docs: refresh placeholder audit --- docs/CHATWOOT_PARITY_DEVELOPMENT_PLAN.md | 15 ++++++++------- docs/parity/frontend_smoke_report.md | 2 +- docs/parity/placeholder_audit.md | 7 +++++-- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/docs/CHATWOOT_PARITY_DEVELOPMENT_PLAN.md b/docs/CHATWOOT_PARITY_DEVELOPMENT_PLAN.md index bbf9093c..b26c4889 100644 --- a/docs/CHATWOOT_PARITY_DEVELOPMENT_PLAN.md +++ b/docs/CHATWOOT_PARITY_DEVELOPMENT_PLAN.md @@ -49,13 +49,13 @@ Hermes task landing checklist: ## Current Baseline -- Current tracking checkpoint: 2026-06-07 first-response distribution range parity checkpoint, prepared as `feat(reports): align first response distribution range`. +- Current tracking checkpoint: 2026-06-07 Phase 6 placeholder audit refresh, prepared as `docs: refresh placeholder audit`. - Latest implementation checkpoint: this checkpoint, prepared as `feat(reports): align first response distribution range`. -- Latest documentation/tooling checkpoint: this tracker update records P3.53 first-response distribution range parity plus the committed P3.52/P3.51/P3.50/P3.49/P3.48/P3.47/P3.46/P3.45/P3.44/P3.43/P3.42/P3.41/P3.40 reports baseline, lands the known Hermes plan families into this document, and keeps this file as the active follow-up plan that supersedes `.hermes/plans/*`. +- Latest documentation/tooling checkpoint: this tracker update refreshes Phase 6 placeholder audit evidence and `docs/parity/frontend_smoke_report.md`; it confirms the broader placeholder scan has no reused-frontend critical account/contact/conversation/message/inbox/widget/public handler placeholder, with remaining `chatwootParityStub` use limited to public webhook nil-handler fallbacks. - Plan landing status: complete for the current known Hermes plans and user-confirmed scope. Future work should update this file directly instead of opening a parallel tracker. - Worktree status at this implementation checkpoint: v2 reports first-response distribution now matches inspected Chatwoot `V2::Reports::FirstResponseTimeDistributionBuilder` range semantics by allowing missing or partial `since/until` to omit the date filter while preserving range filtering when both params are present. P3.52 outgoing-message count builder parity, P3.51 inbox-label matrix filter parity, P3.50 bot metrics builder count parity, P3.49 reports conversation agent-metric parity, P3.48 live grouped team-scope parity, P3.47 grouped error-shape parity, P3.46 summary aggregate parity, P3.45 report bot metric timeseries count strategies, P3.44 live additive rollup parity, P3.43 rollup/backfill timezone parity, P3.42 timeseries timezone parity, P3.41 CSV/download parity, and P3.40 raw JSON/date parity for report, live-report, and summary-report endpoints remain implemented. Profile MFA, Facebook callbacks, account WhatsApp calls, onboarding, notification scoping, API v2 year-in-review, and WhatsApp calling toggle parity remain implemented from previous checkpoints. Live API/browser/enterprise smoke still needs the full PostgreSQL/Redis/Meilisearch/GoChat/Vite/Chrome stack. -- Next executable implementation checkpoint: continue Phase 2/3 drift audit for deeper report data-source/metric-builder drift or the next reused-frontend mismatch, Phase 6 placeholder audit, or B12 live smoke from fresh reference/smoke evidence. -- `go test ./...` passes when run outside the restricted socket sandbox; focused Facebook callback handler/router/route-parity tests pass in the sandbox. +- Next executable implementation checkpoint: continue Phase 2/3 drift audit for deeper report data-source/metric-builder drift or the next reused-frontend mismatch, or run B12 live smoke when the full PostgreSQL/Redis/Meilisearch/GoChat/Vite/Chrome stack is available. Re-run Phase 6 placeholder audit after future route/smoke changes. +- `go test ./...` passes when run outside the restricted socket sandbox for the latest implementation baseline; the latest docs/tooling checkpoint verified `scripts/parity_frontend_smoke.sh --check` with workspace-local temp/cache dirs after `/tmp` was full. - Route dump succeeds with `967` registered routes after profile MFA route tracking. - Route parity artifacts now exist under `docs/parity/` and are generated by `cmd/route_parity`. - Tracked frontend-critical route audit covers 439 Chatwoot routes: 421 exact, 0 method-compatible, 18 parameter-compatible, 0 missing. The 18 parameter-compatible routes are Gin-internal parameter-name differences for nested AgentCapacityPolicy users/inbox limits, dashboard app member `:id` names, WhatsApp call `:id` route names, plus the public article `.md`/`.png` suffixes served through the same external article route dispatcher. @@ -77,7 +77,7 @@ This section is the quick entry point for the next implementation turn. Use the | Placeholder burn-down | Phase 6 is in Review; current audit shows only webhook nil-handler fallbacks still call `chatwootParityStub`. | Re-run `rg` placeholder audit after route/smoke changes and burn down any frontend-reachable stub. | No account/contact/conversation/message/inbox/widget/public critical stub is ownerless. | | Live B12 smoke | Harness exists; live run is environment-dependent. | Run when PostgreSQL, Redis, Meilisearch, GoChat, Vite, and Chrome are available. | `docs/parity/frontend_smoke_report.md` maps every failure to an owner slice or records clean pass. | -Execution rule for the next turn: start with Phase 2/3 drift audit unless the full B12 live stack is available. Keep implementation slices small, update this document in the same commit, and do not create parallel trackers. +Execution rule for the next turn: start with Phase 2/3 drift audit unless the full B12 live stack is available. Keep implementation slices small, update this document in the same commit, and do not create parallel trackers. Treat Phase 6 as a repeatable guard after route/smoke changes, not as a blocking implementation slice while the audit remains clean. ## Planning Control Board @@ -105,8 +105,8 @@ Execution queue for the next agent turn: | Order | Slice ID | Why now | Required commit contents | | --- | --- | --- | --- | | 1 | Phase 2/3 drift audit | Route parity is currently green for the tracked set, but only fresh reference/frontend inspection proves the next missing reused-frontend path. | Named drift rows with inspected reference files, fixture tests where behavior is known, regenerated route artifacts if the route set changes. | -| 2 | Phase 6 placeholder audit | `chatwootParityStub` remains only as webhook nil-handler fallback, but every audit result must stay recorded so no frontend-critical stub becomes ownerless. | `rg` audit result, either a burn-down implementation or explicit non-frontend fallback classification, focused tests if code changes. | -| 3 | B12 live smoke | The harness is checked in; live pass/fail still needs the full PostgreSQL/Redis/Meilisearch/Vite/Chrome stack. | Updated smoke report with command, environment, failures, and linked owner rows. | +| 2 | B12 live smoke | The harness is checked in; live pass/fail still needs the full PostgreSQL/Redis/Meilisearch/Vite/Chrome stack. | Updated smoke report with command, environment, failures, and linked owner rows. | +| Guard | Phase 6 placeholder audit | Current audit is clean for reused-frontend critical handlers; re-run after future route/smoke changes so no frontend-critical stub becomes ownerless. | `rg` audit result, either a burn-down implementation or explicit non-frontend fallback classification, focused tests if code changes. | Slice lifecycle: @@ -2569,3 +2569,4 @@ Verification milestone gates: - 2026-06-07: P3.51 inbox-label matrix filter checkpoint prepared as `feat(reports): align inbox label matrix filters`; audited Chatwoot `V2::Reports::InboxLabelMatrixBuilder`. GoChat `/reports/inbox_label_matrix` now parses optional frontend `since/until`, `inbox_ids`, and `label_ids`, filters the returned inbox/label axes, and counts only selected account conversations in the requested date and inbox scope. Focused Analytics handler and service tests passed; escalated full `go test ./...` and `git diff --check` passed. No route artifacts change. - 2026-06-07: P3.52 outgoing messages count builder checkpoint prepared as `feat(reports): align outgoing message counts`; audited Chatwoot v2 reports controller `outgoing_messages_count` and `V2::Reports::OutgoingMessagesCountBuilder`. GoChat invalid or blank `group_by` now returns empty `422`, and label grouping now follows Chatwoot by grouping counts on tag name and resolving the current account label id rather than returning the raw joined tag id. Focused Analytics handler and service tests passed; escalated full `go test ./...` and `git diff --check` passed. No route artifacts change. - 2026-06-07: P3.53 first-response distribution range checkpoint prepared as `feat(reports): align first response distribution range`; audited Chatwoot `V2::Reports::FirstResponseTimeDistributionBuilder` and `DateRangeHelper#range`. GoChat `/reports/first_response_time_distribution` now accepts missing or partial `since/until` as an all-time distribution and only applies the created-at range when both params are present. Focused Analytics handler and service tests passed; escalated full `go test ./...` and `git diff --check` passed. No route artifacts change. +- 2026-06-07: Documentation checkpoint prepared as `docs: refresh placeholder audit`; refreshed Phase 6 placeholder evidence and `docs/parity/frontend_smoke_report.md`. The narrow `chatwootParityStub` scan still finds only public webhook nil-handler fallbacks, and the broader placeholder/TODO scan finds no reused-frontend critical account/contact/conversation/message/inbox/widget/public handler placeholder. `scripts/parity_frontend_smoke.sh --check` passed after rerunning with workspace-local `GOCACHE`, `GOTMPDIR`, and `TMPDIR` because `/tmp` was full; `git diff --check` passed. Next default action remains Phase 2/3 drift audit unless the full B12 live stack is available. diff --git a/docs/parity/frontend_smoke_report.md b/docs/parity/frontend_smoke_report.md index c138a05d..dc26b25f 100644 --- a/docs/parity/frontend_smoke_report.md +++ b/docs/parity/frontend_smoke_report.md @@ -1,6 +1,6 @@ # Frontend Smoke Report -Updated: 2026-06-06T04:15:19Z +Updated: 2026-06-06T17:52:53Z ## Status diff --git a/docs/parity/placeholder_audit.md b/docs/parity/placeholder_audit.md index 6c1a9bc7..06afd763 100644 --- a/docs/parity/placeholder_audit.md +++ b/docs/parity/placeholder_audit.md @@ -1,12 +1,13 @@ # Phase 6 Placeholder Audit -Updated: 2026-06-06T04:15:19Z +Updated: 2026-06-06T17:53:18Z ## Commands ```bash rg -n "chatwootParityStub" internal/handler internal/service internal/router internal/channel rg -n "chatwootParityStub" internal/router/router.go | wc -l +rg -n "chatwootParityStub|TODO|placeholder|stub|not implemented|unsupported" internal/handler internal/service internal/router -g'*.go' scripts/parity_frontend_smoke.sh --check ``` @@ -14,6 +15,8 @@ scripts/parity_frontend_smoke.sh --check `chatwootParityStub` appears only in `internal/router/router.go`: 20 call sites plus the helper definition. +The broader placeholder scan still has no reused-frontend critical account/contact/conversation/message/inbox/widget/public handler placeholder. Non-stub matches are test doubles, expected validation errors such as unsupported file/search/bulk-action operations, excluded SSO/SAML placeholder notes, or provider-specific nil-handler fallbacks. + All call sites are nil-handler guards for public webhook registration paths: - Telegram webhook callback. @@ -35,4 +38,4 @@ Phase 6 is therefore in Review for the inspected placeholder surface. Reopen it ## B12 Readiness -`scripts/parity_frontend_smoke.sh --check` passed and refreshed `docs/parity/frontend_smoke_report.md`. Live API/browser/enterprise smoke remains pending because it requires the full PostgreSQL, Redis, Meilisearch, GoChat, Vite, and Chrome stack. +`scripts/parity_frontend_smoke.sh --check` passed and refreshed `docs/parity/frontend_smoke_report.md`. The first check attempt failed because `/tmp` was full; rerunning with workspace-local `GOCACHE`, `GOTMPDIR`, and `TMPDIR` succeeded. Live API/browser/enterprise smoke remains pending because it requires the full PostgreSQL, Redis, Meilisearch, GoChat, Vite, and Chrome stack.