Repository navigation
Correct documentation claims the first pass did not audit - #107
Merged
Merged
Conversation
A second pass over README.md, the runbook's monitoring section, journey-json.md, test-journeys.md and the landing page - the files the previous pass changed only glancingly or not at all. Each correction was found by checking the document against the source rather than by reading. Monitoring was the worst of it. Six of the seven metrics the runbook told operators to alert on do not exist: the names are waymark_session_*, the code registers onboarding_sessions_*; there is no abandoned-session counter at all; webhook failures and retries are one counter with a status label, not two metrics; and dotnet_duration_seconds needs UseHttpMetrics, which is never called. Alerts built from that table would never have fired, which is worse than no monitoring because it looks like coverage. The section now lists what is actually emitted, and names what is not - including onboarding_active_sessions, a gauge nothing ever sets. README: three of the five NodeType ordinals were wrong (Information, Logic, Redirect and DocumentUpload are 3, 4, 2 and 1, not 1, 2, 3 and 4). The column stores the ordinal with no conversion, so anyone writing seed data or raw SQL against the documented values would create the wrong node type. AnalyticsEvents and SessionReadModels were undocumented; both are now described. test-journeys.md: every submit example omitted the payload envelope the API binds, so none of the walkthroughs would have worked, and the API key shown was not the one the app ships. index.html claimed journeys can be defined in "JSON or YAML" - there is no YAML support anywhere - and that document upload streams progress over SSE, when progress comes from XHR events. journey-json.md pointed at the wrong file for NODE_TYPE_STYLES. Verified: documented metric names and enum ordinals now match the source exactly, all links resolve, every documented /api path maps to a real route, both pages parse, tables are well formed. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A second documentation pass, over the files the previous one (#106) changed only glancingly or not at all:
README.md, the runbook's monitoring section,docs/journey-json.md,website/docs/test-journeys.mdand the landing page.Every correction below was found by checking the document against the source, not by reading it.
Monitoring was the worst of it
Six of the seven metrics the runbook told operators to alert on do not exist.
waymark_session_started_totalonboarding_sessions_started_total(labelflowId)waymark_session_completed_totalonboarding_sessions_completed_total(labelflowId)waymark_session_abandoned_totalwaymark_webhook_delivery_failed_totalonboarding_webhook_deliveries_totalwith astatuslabelwaymark_webhook_delivery_retried_totaldotnet_duration_secondsUseHttpMetrics()is never called, so there is no request-duration series at allprocess_cpu_seconds_totalAlerts built from that table would never have fired — worse than no monitoring, because it reads as coverage. The section now lists what is actually emitted and, just as importantly, names what is not: no HTTP request metrics, no abandoned-session counter, and
onboarding_active_sessionsis a registered gauge that nothing ever sets, so it reads zero permanently.It also promised a
docs/grafana-dashboard.jsonthat has never existed, hedged as "(if available)".README
Three of the five
NodeTypeordinals were wrong. Documented asForm=0, Information=1, Logic=2, Redirect=3, DocumentUpload=4; actuallyForm=0, DocumentUpload=1, Redirect=2, Information=3, Logic=4. The column stores the ordinal with no value conversion, so anyone writing seed data or raw SQL against the documented numbers would create the wrong node type. (ConditionOperatorandSessionStatuswere both correct.)Two tables were undocumented —
AnalyticsEvents(the durable trail from #95) andSessionReadModels— now described, with a note on why neither appears in the ER diagram.website/docs/test-journeys.md
Every submit example omitted the
payloadenvelope the API binds, so none of the three walkthroughs would have worked as written. The API key shown (dev-key) was also not the one the app ships.Landing page
xhr.upload.onprogress; SSE carries session step progress, a different thing.journey-json.md
Pointed at
VisualJourneyCanvas.tsxforNODE_TYPE_STYLES, which lives invisualJourneyCanvasUtils.ts. The colour mapping it documents is correct.Verification
Added two checks beyond the previous pass, both now passing:
PrometheusMetricsServiceexactly — 0 documented-but-unregistered.Plus the existing battery: all links resolve, every documented
/apipath maps to one of 27 real routes, both website pages parse with balanced nesting, all markdown tables well formed. Backend 354 passed / 3 skipped (broker tests; Docker down locally), frontend 175 passed.Note
UseHttpMetrics()being absent is a genuine gap, not just a documentation one — there is no per-endpoint latency or error-rate telemetry. I documented the absence rather than adding the middleware, since that is a runtime change beyond a docs pass. Worth a follow-up issue if you want that telemetry.🤖 Generated with Claude Code