Skip to content

docs: add step-by-step user guides and docs-capture test suite - #931

Draft
lazabogdan wants to merge 129 commits into
mainfrom
ralphx/ralphx/agent-0babee1e
Draft

docs: add step-by-step user guides and docs-capture test suite#931
lazabogdan wants to merge 129 commits into
mainfrom
ralphx/ralphx/agent-0babee1e

Conversation

@lazabogdan

@lazabogdan lazabogdan commented Jul 30, 2026

Copy link
Copy Markdown
Collaborator

Summary

Adds 24 new user guide files organized by workflow and topic, each illustrated with real app screenshots captured from the running UI. Consolidates 7 older user-guide files (agent-orchestration, configuration, getting-started, github-pr-mode, graph-view, ideation-studio, kanban) into the new workflow/topic/integration/advanced structure. Moves 4 technical docs (internal-skills, merge, execution, task-state-machine) to docs/architecture/ and reframes them for a maintainer audience. Adds a Playwright-based docs-capture test suite that automatically validates guide images stay fresh across UI changes.

User Impact

New guides — Users installing RalphX for the first time get a clear learning path:

  1. Install and first run (provider setup, project creation)
  2. Tour of the app (navigation, start modes, settings structure)
  3. Five core workflows: planning, implementing, reviewing own work, reviewing PRs, asking questions
  4. Integration guides (GitHub, Jira, Linear, ClickUp, Granola)
  5. Configuration guides (choosing a provider, teaching RalphX about your project, capacity control)
  6. Advanced features (task-managed delivery, automations, personas, external API access, troubleshooting)

Each workflow guide includes real app screenshots captured from the running UI, not mockups. Settings paths verified against the current app UI (7-section consolidated navigation post PR #930).

Reorganized docs — Technical reference docs (internal-skills, merge-pipeline, task-execution, task-state-machine) moved to docs/architecture/ with added maintainer-audience headers; they remain linked from the architecture index but out of the user-guide index.

README update — Simplified feature list, removed feature-tour copy, and added links to the new user guide index and per-topic guides.

Technical Context

Docs-capture suite — New frontend/tests/docs-capture/ with 5 test specs (onboarding-and-tour.spec.ts, planning-and-implementing.spec.ts, reviews-and-github.spec.ts, integrations.spec.ts, settings-panels.spec.ts) that:

  • Inject mock chat scenarios and transcript state
  • Hydrate artifact panes (Plan, Review tab states)
  • Capture full app window at 1728px width (rendered at 1x logical pixels for legible guide use)
  • Generate -docs-capture-darwin.png baselines

Image publishing pipeline — New assets/scripts/publish-guide-images.py script that:

  • Compresses baselines from frontend/tests/docs-capture/snapshots/ to assets/public/guides/
  • Stores baseline SHAs in assets/public/guides/baselines.sha256
  • Strips the suffix and publishes as <scenario-name>.png (18 total guide images)

CI validation — New CI step checks that published guide images match their baseline SHAs, catching re-baselined screenshots not republished.

Risks / Follow-Ups

  • Docs restructure is large; all markdown cross-references have been verified to resolve correctly.
  • Playwright capture suite runs only on macOS (baselines carry -darwin suffix); other platforms will skip. CI gate is platform-aware.
  • Guide viewport is 1728px; text and UI details have been verified as legible in all 18 screenshots.
  • Future guide additions will need both markdown and a corresponding docs-capture test + image publish step before merge.
View full plan

User Guides: Prod Triage, Restructure, and Per-Guide Specs

Goal

"user guides need to be USAGE user guides not docs, not building from source etc. also we need to triage if anything is not in prod anymore or feature flagged in prod thats never reachable prod users (like extensibility) and remove stale guides. also we need a better tree/think structure for the guides… we need a list first with high level specs for the guides we should be working on, clear the existing guides, give it a structure etc."

Produce the specification, restructure, and the written core guides for docs/user-guides/: a prod-reachability triage of every current guide, a delete/salvage decision for each, a task-oriented guide tree named after what a user is trying to do, a high-level spec per guide, and finished prose for the nine P0 spine guides. P1 (integrations, configure) and P2 (advanced, troubleshooting) are specified here but written in a follow-on effort. The P0 guides ship with screenshots captured by a new Playwright docs-capture project, so guide images stay verified against the real UI rather than rotting silently.

Scope decisions

# Decision Source
A1 Deliverable = spec + restructure + write the core (P0) guides. P1/P2 stay specified-only. Answered by you
A2 Direct implementation is the canonical path; task-managed delivery is a marked opt-in branch Matches shipped defaults (Tasks is off by default)
A3 Salvage genuinely-useful reference content into docs/architecture/, then delete from docs/user-guides/ merge.md and task-state-machine.md are real maintainer reference, wrong audience
A4 Guides carry screenshots, produced by a new docs-capture Playwright suite — 14 images across the nine P0 guides, raw/unframed, dark theme, 1440×900 at 2× Answered by you (superseded the earlier text-only decision)
A5 Each capture is both a regression baseline and the published image — UI drift fails CI Retires the drift objection that motivated the old text-only stance
A6 Captures never render ambient mock seed data. Every image comes from a named, dedicated guide scenario the suite controls explicitly Answered by you — the generic web mocks are not presentable enough for published guides
A7 No generic providers guide. Two specific guides instead: Using Claude Code with RalphX and Using Codex with RalphX Answered by you. The two harnesses expose disjoint controls (permission modes vs approval policy + sandbox), so one guide could not be specific about either

A2, A3 remain assumptions; say so if either is wrong. A7's two guides stay P1 (specified only), consistent with A1 — promoting them into the written P0 set is a scope call you have not made.


The finding that reshapes everything

Tasks ships OFF by default. frontend/src/types/ideation-config.ts:51 sets tasksEnabled: false, and the settings row states: "Off by default. Disabling pauses all task-managed work immediately; history and worktrees are retained, and plans can still be implemented directly." (IdeationSettingsPanel.tsx:308-317)

Six of the twelve guides — execution.md, merge.md, task-state-machine.md, kanban.md, graph-view.md, agent-orchestration.md, about 163 KB of 227 KB — document that opt-in pipeline as if it were the product. A user who installs RalphX today and follows those guides cannot reach any of it.

The actual default journey is:

PlanApprove PlanImplement DirectlyWorkspace ReviewCommit & PublishReview PR

That is exactly the spine you proposed, and it happens to be the shipped default path.


Prod-reachability triage

Ground truth: frontend/src/components/layout/nav-items.ts:27-79 and config/ralphx.yaml:37-49.

Surface Reachable in prod? Gate
Agents, Ticketing, GitHub, Granola, Insights Yes, always visible: () => true
Automations Yes automations_page: true
Extensibility No extensibility_page: false, no in-app toggle
Activity No activity_page: false, no in-app toggle
Atlassian (Jira/Confluence) via API token Yes Settings → Integrations → Atlassian
Atlassian OAuth 2.0 No atlassian_oauth: false
Agent Personas Off by default, but user-togglable in Settings → Personas
Tasks / Kanban / Graph / execution / merge Off by default, user-togglable Settings → General → Tasks
Internal Skills No user-facing UI at all agent/config owned

There is no in-app "Labs" toggle for the config flags — docs/handoffs/ui-feature-flag-settings-toggle.md specs one but it is unimplemented, so extensibility_page and activity_page are unreachable for anyone running the installed app.

Two more corrections the current guides need:

  • Install is Homebrew, not a git clone. docs/install/homebrew.md has the real path; getting-started.md:80-102 tells users to clone the repo and run npm run tauri dev.
  • Kanban and Graph are not top-level views. They are toggles inside the Agents → Tasks artifact pane (AgentsArtifactPane.tsx:2175-2220). Two guides present them as destinations.
  • docs/user-guides/ is orphaned — nothing in README.md links to it.

The root README repeats the same mistake

README.md:123-143 has the identical defect. Its First Workflow walks a new user through "Review proposals""Watch execution""Tasks move through Kanban" (:127-130) — the opt-in pipeline, presented as the first thing you do. Its Core Surfaces table lists Kanban, Graph, and Activity as surfaces (:140-142); Activity is unreachable in prod and the other two are toggles inside the Tasks artifact.

Since this effort already edits the root README to link the guide index, correcting those two sections is a small, in-scope addition — the same fix, in the doc most new users read first. It is scoped as one step and can be dropped without affecting anything else.


Disposition of the 12 existing guides

Guide Verdict Becomes
getting-started.md Rewrite + split 01-install-and-first-run.md, 02-tour-of-the-app.md
ideation-studio.md Rewrite workflows/planning-a-feature.md
github-pr-mode.md Rewrite + split workflows/reviewing-a-pull-request.md, integrations/connect-github.md
configuration.md Split four configure/*.md guides; ralphx.yaml section → maintainer docs
agent-harnesses.md Salvage → split configure/using-claude-code-with-ralphx.md + configure/using-codex-with-ralphx.md; "Architecture direction" section dropped
kanban.md + graph-view.md Merge one section of advanced/task-managed-delivery.md
execution.md + merge.md Salvage → architecture condensed into advanced/task-managed-delivery.md; internals → docs/architecture/
task-state-machine.md Move docs/architecture/task-state-machine.md — real reference, wrong audience
agent-orchestration.md Delete architecture explainer, not usage
internal-skills.md Move docs/architecture/ — no prod UI exists

Net: 12 maintainer-ish documents → 0 remain in docs/user-guides/.


Proposed tree

docs/user-guides/
├── README.md                            ← index; "Start here" + pick-your-task map
├── 01-install-and-first-run.md
├── 02-tour-of-the-app.md
├── workflows/
│   ├── planning-a-feature.md
│   ├── implementing-a-feature.md
│   ├── reviewing-your-own-work.md
│   ├── reviewing-a-pull-request.md
│   └── asking-about-a-codebase.md
├── integrations/                        ← one dedicated guide per integration
│   ├── connect-github.md
│   ├── connect-jira-and-confluence.md
│   ├── using-jira-and-confluence.md
│   ├── connect-linear.md
│   ├── connect-clickup.md
│   ├── connect-granola.md
│   └── ticketing-dashboard.md
├── configure/
│   ├── using-claude-code-with-ralphx.md
│   ├── using-codex-with-ralphx.md
│   ├── project-setup-and-validation.md
│   └── capacity-and-concurrency.md
├── advanced/
│   ├── task-managed-delivery.md         ← opt-in; Tasks/Kanban/Graph/merge
│   ├── delivering-large-projects.md     ← the Automations surface
│   ├── personas.md                      ← opt-in; agent voice
│   └── external-access.md               ← API Keys + External MCP
└── troubleshooting.md

24 guides in three waves:

Wave Guides Count This effort
P0 — the spine README.md, 01, 02, five workflows/*, integrations/connect-github.md 9 Written
P1 — integrations + configure 6 remaining integrations/*, 4 configure/* 10 Specified only
P2 — advanced + troubleshooting 4 advanced/*, troubleshooting.md 5 Specified only

connect-github is pulled into P0 because reviewing-a-pull-request names it as a hard prerequisite, and a written guide must not depend on an unwritten one.

Those nine are what a user needs to go from install to a merged change on the default path, so they stand alone as a coherent set even before P1/P2 land. The directory skeleton and README.md router are created now so the later waves drop in without restructuring.

Each guide's spec — audience, prerequisite, exact UI surfaces walked, and the "you can now…" outcome — is in the Implementation Blueprint, along with the writing conventions the P0 prose must follow.


Affected Files

Path Action
docs/user-guides/** Delete 12 existing guides; create the new tree and write the nine P0 guides
docs/architecture/** Receive four salvaged maintainer documents (git mv, shown as renames)
README.md Link the guide index; correct First Workflow and Core Surfaces
frontend/playwright.config.ts Add the docs-capture project; add testIgnore to chromium
frontend/src/api-mock/guide-scenarios.ts New — the dedicated guide scenario fixtures (web-mode bundle only)
frontend/src/api-mock/chat-scenarios.ts Register the guide scenarios into the existing scenario registry
frontend/tests/docs-capture/** New capture specs, scenario-application fixtures, and committed baselines
frontend/package.json Add the test:docs-capture script
assets/scripts/publish-guide-images.py New publish helper (delegates to existing compress-assets.py)
assets/public/guides/** 14 published, compressed images
.github/workflows/ci.yml Run the capture suite and check published-image freshness

No backend, schema, or runtime code is touched.


Decisions

Decision Choice Rationale
Organising principle By user task, not by app feature Your framing; features become sections inside task guides
Canonical path Direct implementation It is the shipped default (A2)
Tasks positioning advanced/ with an explicit "turn this on first" step Honest about the default
Unreachable features Not documented at all Extensibility, Activity, Atlassian OAuth, Internal Skills
Install story Homebrew only; build-from-source stays in docs/development/ Usage guides, not build docs
Guide titles Match your task phrasing "Planning a feature with RalphX" etc.
Integrations One dedicated guide per integration Your instruction; no lumped "other trackers" guide. Jira and Confluence share a single Atlassian credential and panel, so they share one connect guide
Automations framing "Delivering large projects with automated, supervised goals" Your phrasing, and it matches the shipped feature: a goal decomposed into ordered items, each run gated by plan approval
Personas Documented as advanced/personas.md Your instruction; it is off by default but user-togglable, so it meets the enablement-step rule
Discoverability README.md index + link from root README.md Fixes the orphaning
Root README Correct First Workflow + Core Surfaces in the same pass Same defect, highest-traffic doc; scoped as one droppable step
Guide images Captured by a new docs-capture Playwright project, raw/unframed, dark Your answers. Reuses the existing e2e suite, page objects, and mock API rather than a new tool
Capture data source Dedicated guide scenarios, named and seeded per capture; never the ambient mock defaults Your answer. The generic mocks are shared with the regression suite and carry test-y strings; a published guide image needs data we control outright
Prod-chrome parity setupCapture pins feature flags and integration state to the shipped baseline; captures gate on that state having settled The web mock ships activityPage/extensibilityPage as true (tauri-api-core.ts:1342-1344) while config/ralphx.yaml:39-41 ships both false — today every web-target screenshot would show two nav destinations real users never have
Where guide scenarios live frontend/src/api-mock/guide-scenarios.ts, registered into the existing scenario registry Forced by architecture: api-mock/chat.ts (the web-mode mock) imports getMockChatScenario from chat-scenarios.ts; guide scenarios must extend MockChatScenarioName and chatScenarioFixtures there so Playwright can call window.__mockChatApi?.seedScenario() at test time. Guide scenario data is web-mode only — no Tauri command path imports it
Providers guide Split into two specific guides, one per harness; no generic "providers" page Your answer. Claude exposes permission modes; Codex exposes approval policy + sandbox mode + Fast mode + ultra effort. The overlap is the enable/CLI-status card, which each guide repeats rather than cross-references
Image resolution 1440×900 logical at deviceScaleFactor: 2 → 2880×1800 PNG 1440×900 is the smallest common MacBook logical size, so the layout is representative; 2× keeps it crisp on Retina when shown at 1440px wide
Capture isolation New Playwright project, not a change to chromium Raising DPI on the existing project would invalidate every committed regression baseline
Image count 14 across the nine P0 guides One per decision point, not one per step
P1/P2 prose Deferred to a follow-on effort Keeps this effort reviewable; specs are complete enough to hand off

Risks And Open Questions

  • P0 prose ships before P1/P2 exist, so P0 guides will link forward to files that are not yet written. Mitigation: the README.md router marks unwritten guides as coming soon rather than linking dead paths, and no P0 guide states an unwritten guide as a hard prerequisite except reviewing-a-pull-requestconnect-github, which is why that one integration guide is pulled into P0 (see Blueprint §2).

  • If Tasks becomes default-on, advanced/task-managed-delivery.md gets promoted to the spine — the tree absorbs that without reshuffling.

  • Personas is labelled "Experimental." in its own settings row (PersonasEnableToggle.tsx:18). advanced/personas.md must carry that word so a reader knows the surface may still move.

  • Automations is not a scheduler. Cron and time-based triggers are explicitly deferred beyond V1 (docs/features/automations.md:97). A guide that promises scheduling would document a feature that does not exist.

  • Salvage targetdocs/architecture/ has no existing state-machine or merge-internals doc, so moved files land as new documents rather than merging into existing ones.

  • docs/external-mcp/ already holds solid integrator docs; advanced/external-access.md should link to them rather than restate.

Risks introduced by adding images

  • Captures show scenario data, not a real project. The suite runs against dev:web, which is deterministic and free of personal paths or tokens. The ambient mock store is not used: it is shared with the regression suite and carries strings like "Execute task-mock-4" and "Widget matrix coverage" that would read as test scaffolding in a published guide. Blueprint §2c specifies dedicated guide scenarios instead — every capture names one, and a capture that renders ambient defaults is a bug the suite must catch (proof obligation 20).

  • Guide scenarios add a second consumer to the mock fixtures. They live beside the regression scenarios in frontend/src/api-mock/, so a careless edit to shared helpers can move both. Mitigated by keeping guide fixtures in their own module and by obligation 21 (the visual suite's baselines must not move when guide scenarios change).

  • Per-harness guides go stale faster than the rest of the tree. Model catalogs and CLI capability gates move on the vendors' cadence, not ours. Mitigation is editorial, stated in both specs: the guides explain how the catalog is gated — a model absent from the list means the installed CLI does not advertise it — rather than freezing an enumerated model list into prose.

  • Some steps cannot be honestly captured. Real harness execution, real git push, and a live GitHub PR do not exist in mock mode. Those steps stay prose-only. The 14-image set is bounded by what an existing spec already proves reachable.

  • Timestamp drift is not currently handled anywhere. Fixtures use new Date().toISOString() and there is no page.clock or mask: usage in frontend/tests. Relative labels are stable only because "now" always renders as "just now"; any surface showing an absolute date would break baselines overnight. §2c pins a fixed clock — this is new work, not an existing guarantee.

  • The app has two independent feature-flag readers, and this effort does not fix that. useFeatureFlags.ts:20 and uiStore.ts:142 each define their own DEFAULT_FEATURE_FLAGS (both all-true for the page flags), and uiStore.ts:869 fires a second get_ui_feature_flags invoke at module load alongside the TanStack query. That is the WRITER/DRIFT pair in .claude/rules/big-pr-review-checklist.md, and it is why captures need an explicit settle gate rather than trusting first paint. Consolidating to one reader is production-code work and stays out of scope here — say so if you want it folded in, since the capture gate works either way.

  • Each image is stored twice in git (test baseline + published asset). This is the deliberate price of CI-detected staleness. Worth revisiting if the image count grows well beyond 14.

  • Capture cost lands on every UI PR. Any change to a captured surface now fails CI until the guide and its baseline are updated. That is the intended mechanism, but it is real ongoing cost — say so if the trade is not worth it, and the image scope can be cut to a smaller set without touching the rest of the plan.


Generated by RalphX


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.

Restructure user-guides into workflow-oriented docs with screenshot
capture test infrastructure. Move architecture docs to docs/architecture/.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@codecov

codecov Bot commented Jul 30, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 97.72727% with 1 line in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
frontend/src/api-mock/guide-scenarios.ts 96.96% 1 Missing ⚠️

📢 Thoughts on this report? Let us know!

lazabogdan and others added 28 commits July 30, 2026 12:37
…endering

The settings-overview docs-capture snapshot consistently differs by ~2%
between local and CI macOS runners due to font hinting and subpixel
rendering variance. Docs-capture screenshots illustrate documentation
and don't need pixel-perfect regression accuracy, so raise their
maxDiffPixelRatio to 0.03 (3%) while keeping the stricter 1% threshold
for the visual regression suite.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move tool group expansion inside the waitFor retry loop so it re-expands
after recovery hydration re-keys the content block groups on slow CI
runners.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Cover languageFor branches, scenario fixture access, tool-use content
blocks, and seedGuideStore to satisfy codecov/patch threshold.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The guide screenshots were captured before PRs #918, #923, and #930
landed, so they showed the old settings UI layout. Re-baselined all 12
snapshots with --update-snapshots=all on the current merged main.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The docs-capture baselines were re-captured against the latest main but
the published guide images and baselines.sha256 manifest were not
regenerated, causing the Frontend Visual Snapshots CI check to fail.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Completes the follow-on writing pass specified in the user-guides
blueprint. Adds every guide the index previously listed as *coming soon*:

Integrations — Atlassian connect + usage, Linear, ClickUp, Granola, and
the ticketing dashboard. The three token-based connect guides are
deliberately standalone and repeat their shared panel mechanics rather
than cross-referencing each other, so a user connecting one tool reads
exactly one file. ClickUp's workspace selection gets its own step
because a connection that stops at "Saved" loads no tasks.

Configure — separate Claude Code and Codex guides (also standalone, also
non-overlapping), project setup and validation, and capacity tuning. The
Codex guide leads with the shipped MCP requirement, since hardening
approval or sandbox mode silently disables RalphX's MCP tooling.

Advanced — tracked delivery with Tasks, automated supervised goals,
personas, and external access, each opening with the enablement step for
its off-by-default feature. Plus a top-level troubleshooting guide.

Every bolded control was verified against frontend source; labels with
no definition site were dropped rather than invented.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Replaces every *coming soon* placeholder in the user-guides index with a
link, and adds router rows for choosing an agent runtime, project setup,
tickets, and troubleshooting.

Also corrects the Settings navigation described in the tour. The shipped
registry groups are Models & Providers, Agents, Automation, Repository,
Integrations, Notifications, and Application — the tour still described a
pre-#918 structure with Harness, Workspace, General, External Access, and
Preferences groups, none of which exist. The Enable Tasks toggle lives
under Automation, not Planning.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The artifact pane header control is a toggle, and the pane also auto-opens
on its own once the conversation's attached ideation session query resolves.
On slower machines the single open click lands inside that window, reads the
freshly auto-opened state, and closes the pane again — leaving the tab row
mounted but hidden, so the following tab click fails with "element is not
visible" / "element was detached from the DOM" until the test times out.

Make the navigation fixtures converge on an open pane instead of assuming one
click sticks, and add `openArtifactTab` so pane-open and tab-select retry
together. Applied to the Jira, plan, and publish captures.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…nesses.md

Accept main's deletion of agent-harnesses.md which was removed upstream
while this branch had a pending merge.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The previous merge resolution (fad260a) claimed main deleted this file,
but main still carries it. Restore from origin/main to unblock publish.
lazabogdan and others added 30 commits August 11, 2026 21:39
The file was an engineering doc misfiled as a user guide: orphaned from the
guide index, carrying the guide set's only broken link, and naming two
Settings destinations that do not exist.

- git mv to docs/architecture/ (W2-3, completes the Wave 1 step-4 miss)
- intro now states the maintainer audience and routes users to the two
  configure/using-*-with-ralphx.md guides
- internal-skills.md and agent-thinking-capture.md now resolve as siblings
- replace "Settings -> General -> Execution Agents" and "Settings -> Ideation
  -> Ideation Agents" with the shipped IA: Models & Providers -> Providers
  validates CLIs, Agents -> Roles sets per-role provider/model defaults.
  The two lane screens were merged into one role list upstream.
- repoint the two tracked inbound references the move would have broken

Closes proof obligations 34 and 35.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The guide set used worktree, harness, provider, plan bundle, artifact, and
Workspace Review before defining them, and the only definition of "harness"
lived in the orphaned file W2-3 just moved out of the tree.

- new docs/user-guides/concepts.md defines the seven load-bearing terms in
  reader order, each pointing at the guide that puts it to work
- includes the compact Claude-vs-Codex chooser (A9), routing to the two
  configure/using-* guides rather than restating them
- linked from README.md twice: the "Start here" block and an "I want to..." row
- every UI string quoted verbatim from source: Enabled/Ready/Not ready and
  CLI Ready/CLI Not Ready (HarnessProvidersSection.tsx:110,137), the artifact
  tabs (AgentsArtifactPane.tsx:411-436), Run review (AgentReviewPanel.tsx:260),
  and the two Repository helper texts

Also repoints ten architecture cross-references this effort's own Wave 1
commit (3f56b38) broke when it deleted execution.md/merge.md/
agent-orchestration.md/configuration.md and salvaged two under new names.

docs/user-guides/** now has 118 relative links, 0 broken (obligations 33, 36).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
These are the two documents a new user opens first, and they were written in
the weakest style in the set: 13.7 and 15.5 words per numbered step against a
56.8 reference, a 4.8x spread. Most numbered entries were commentary wearing a
procedure's clothes -- "Create the workspace" spent 9 steps on 1 real action.

Reshaped, not rewritten from scratch. Every action in the old numbering
survives; only commentary was demoted to indented paragraphs beneath its step.

- 01: 72 steps -> 19, 44.5 words/step
- 02: 65 steps -> 11 steps + 4 reference tables, 56.6 non-table words/step
- reference lists (nav destinations, start modes, artifact tabs, settings
  groups) become tables; the plan mandates this for start modes and the same
  reasoning applies to the other three
- all 5 screenshots and all 6 template sections preserved
- first-use glosses for harness and worktree linking concepts.md

Two source corrections found while verifying:
- 02 omitted Database from the Application settings group
  (settings-registry.ts:160) -- this is W2-8 item 1, folded in here because it
  lands in the rewritten file
- blueprint §0 gives the wizard field as "Project Name (optional)", which is
  unfindable by grep: the label is split across a JSX span
  (ExistingRepositoryStep.tsx:287). Guide names **Project Name** so obligation 1
  stays provable, and states the field is optional in prose.

Action inventory for obligation 29 is in .artifacts/guides-wave2/ (untracked).
Obligations 28 (see note on 02), 29, 30, 31.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
connect-github.md already documented five named failure states with exact UI
strings and specific remedies. The other four guides did not: ClickUp had no
failure handling at all, Linear and Granola compressed it to one generic
"fix the token" bullet, and Atlassian -- the most complex setup in the set --
never said what success looks like.

- port the named-state -> exact UI string -> specific remedy pattern to
  ClickUp (5 states), Linear (4), and Granola (4)
- Atlassian gets a banner-state table. Its banner is a status *label*, not a
  sentence like the other three panels
- de-duplicate the gh-vs-stored-token contrast: it appeared verbatim in three
  files, now stated once in connect-github.md where it belongs
- token scopes named only where verifiable: ClickUp personal tokens take no
  scope selection (inherit account permissions); Linear and Granola defer to
  the vendor's own docs rather than guess

Corrects a claim in the plan itself. Both the plan and the review described a
"stops at Validated" trap for Atlassian, by analogy with the ClickUp Workspace
trap. That state is unreachable: validate_and_enable()
(atlassian_integration_service.rs:597-612) sets enabled=true and
validation_status=Valid in one operation, and the only other writers go through
pending_status_for_settings(), which returns Pending or NotConfigured but never
Valid. A successful Save and validate goes straight to Enabled. The guide now
documents the four reachable states instead of a manufactured trap.

All 28 UI strings quoted across the five guides are verbatim-verified against
frontend/src. Terminal periods moved outside the quotation marks where the
source string has none, so the quotes stay literally checkable (obligation 38).

Obligations 37, 38.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The set had zero worked examples in 17,736 words: no sample prompt, no plan
excerpt, no review finding, no @-reference. Readers were told the shape of
each step but never shown one.

One invented feature now runs end to end -- the composer prompt, the Plan
Overview excerpt it produced, the mid-run scope correction, the blocking review
finding, and the PR comment. Each callout is a blockquote with a bold lead so a
reader can tell the example from the instruction, and the first one says plainly
that the feature is invented.

The example deliberately carries real texture rather than filler: the plan makes
a gate-placement decision that a weaker plan would have got wrong, the
implementation drifts out of scope and gets corrected, and the review catches a
stale read. That is what makes it worth reading.

Subject strings match frontend/src/api-mock/guide-scenarios.ts verbatim, so
prose and screenshots corroborate each other and drift becomes a capture
failure: project "RalphX Release Companion" (:46) and feature "Block publishing
until the release checklist is complete" (:281, :312). Both appear in all five
guides. The seeded task title "Ship a dependable release checklist" is
deliberately not used as the feature name -- it is the documented trap.

Also adds the first-use plan bundle gloss linking concepts.md, and the concrete
@-reference example asking-about-a-codebase.md needed.

Density moves from 18.7-21.1 to 26.0-33.8 words/step; W2-7 closes the rest.

Obligation 32.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Three gaps the first-reader review found, all on the main path:

No duration expectations. The guides said "click Verify Plan" without hinting
whether that returns in a second or ten minutes, so a reader cannot tell a slow
step from a hung one. Hints are qualitative ("several minutes", "usually under
a minute") -- a precise figure would be wrong on the reader's hardware, model,
and repo size, and would rot silently.

No cost expectations. The only mention of provider credits in 25 guides was in
advanced/delivering-large-projects.md, five guides deep in the optional tier.
Each workflow guide now says plainly that runs consume credits, with the
relative weight: Ask is cheapest, implementation is by far the most expensive.

No way to stop. Nothing told a reader how to end a run, or what happened to
their branch if they did. Documents the real control: the composer's Send
button becomes Stop while an agent is running -- but only when the composer is
empty (AgentComposerSurface.tsx:493-494), which is exactly the kind of detail
that leaves someone hunting for a button that is not there. Also states that
stopping leaves the worktree and its changes intact, because the natural fear
is that stopping discards work.

Every workflow guide now ends with a concrete "if this did not look right"
pointer to troubleshooting.md, naming the failures likely at that specific
stage. Previously troubleshooting was two hops from the moment of panic.

Density: 26.0-33.8 -> 31.8-42.1 words/step.

Obligation 40.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1. troubleshooting.md linked project-setup-and-validation as "Configuring
   project setup and validation"; the target's H1 is "Teaching RalphX about
   your project". Matched, as the other 22 links already do.

2. delivering-large-projects.md ran steps 1-6 across three ### subsections, so
   "Plan approval" opened at step 2 and "PR merge" at step 4 -- a reader
   scanning for step 1 of PR merge found nothing. Numbering now restarts per
   subsection.

3. reviewing-a-pull-request.md is the last guide on the main path and ended by
   pointing back at the index, with no sense of arrival. It now says the main
   path is complete and offers four concrete directions by intent.

4. asking-about-a-codebase.md asserted "Ask is for understanding, not changing"
   four times in 296 words, including a whole section that only restated it.
   Said once, in the step where it matters. The recovered space went to what
   the guide is actually for -- the @-reference mechanic -- and to what to do
   when the question turns into work.

5. (Landed in the 01/02 rewrite) 02 omitted Database from the Application
   settings group.

Density across the five workflow guides: 18.7-21.1 -> 34.1-41.0 words/step.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
17 of 25 guides had no screenshot, including every settings-heavy one -- the
guides where a reader most needs to confirm they are looking at the right
panel. This adds four captures on the existing docs-capture pipeline:

- settings-atlassian     -> integrations/connect-jira-and-confluence.md
- providers-claude-card  -> configure/using-claude-code-with-ralphx.md
- providers-cli-not-ready-> configure/using-codex-with-ralphx.md
- settings-capacity      -> configure/capacity-and-concurrency.md

They reuse the existing contract exactly (setupCapture -> applyGuideScenario ->
captureGuideScreenshot); no new fixture primitives, no new Playwright project,
no change to PROD_UI_FEATURE_FLAGS semantics. Image set goes 14 -> 18.

Two of the six planned captures are deliberately NOT shipped, because they
cannot be produced honestly in mock mode:

- tasks-kanban-board. The Tasks artifact tab needs tasksEnabled, which is
  ideation config (api-mock/ideation.ts:476 hardcodes false), not a
  ui.feature_flag. Seeding the query cache does not survive the refetch that
  opening the conversation triggers. Forcing it would need either a new fixture
  primitive or an edit to the mock the visual regression suite shares -- both
  ruled out by the plan's own constraints.
- settings-setup-validation. The project-analysis section body renders empty in
  mock mode with no console error and no loading state, despite the correct leaf
  being selected and an active project in the store. Root cause not established.

Rather than leave half-built machinery behind, their scenarios and the
144-line kanban fixture branch are removed too; git history has them if the
underlying seams are fixed later. The plan designates W2-6 as its one
independently droppable item and names Kanban among the most droppable.

Validation: npm run test:docs-capture passes twice consecutively with no
baseline churn (ob 13); npm run test:visual 219 passed / 0 failed with
frontend/tests/visual/snapshots untouched (ob 14, 21); 18 baselines = 18
published = 18 manifest entries = 18 resolving image refs, all with alt text
(ob 16, 39); publish script is idempotent (ob 17); applyGuideScenario precedes
every capture (ob 20); no task-mock/matrix/Sample strings (ob 22);
__mockUiFeatureFlags confined to capture.fixtures.ts (ob 25).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant