The robust QA platform: page-by-page coverage, machine runs ahead, human always adjudicates. The AFTER diagram keeps every BEFORE box in place — new components are green, upgraded ones amber, so the overlay reads at a glance.
flowchart LR T["Tester (human)
runs scripted packs manually"] TR["Tracker app
persona task packs · ticks"] APP["App under test (staging)
version: unknown"] W["Bug widget
screenshot · console · network
rrweb replay · voice"] BW["Bug worker
sync Jira filing (8s, 502s)
hash auto-merge dk-/tp-"] J["Jira board
report+bug+fix in one ticket"] D["Developers"] RL["Railway backend logs
(disconnected island)"] RP["Retest page
hand-written JSON"] TR --> T T --> APP APP --> W W --> BW BW --> J J --> D D -."manual copy of steps".- RP RP -.-> T classDef keep fill:#E4EBF0,stroke:#8FA3B3,color:#33475B classDef island fill:#E4EBF0,stroke:#8FA3B3,color:#33475B,stroke-dasharray:5 4 class T,TR,APP,W,BW,J,D,RP keep class RL island
Pain lives in the grey: auto-merge buries reports, backend logs never reach the ticket, Jira progress never reaches the tester, and the human does the machine's job (scripted sweeps).
flowchart LR
subgraph TESTSIDE["Test side"]
AGENT["Agent executor
runs packs page-by-page
span-per-action + video"]
CON["Reconcile console
findings only: issue / pass / discuss
Take-Over button"]
T2["Tester (human)
exploratory + adjudication"]
TR2["Tracker app
packs + custom tasks (inline +)
+ retest tasks + live status bars"]
end
APP2["App under test
+ build stamp + update toast"]
W2["Bug widget
(as is — already strong)"]
subgraph PIPE["Report pipeline"]
BW2["Bug worker
instant ack · queue · retries
auto-merge OFF → flags only"]
LOGS["Log fetcher
±2 min around failure timestamp
identity-filtered"]
LLM["LLM reconciler
%-similarity per prior report
what's-NEW · close/check notes"]
end
J2["Jira board
one ticket per report + links"]
HG["Human gate
severity + merge approvals"]
D2["Developers
ticket arrives armed"]
RL2["Railway backend logs"]
WH["Jira webhooks
status timeline stream"]
TR2 --> AGENT
AGENT --> APP2
AGENT --> CON
CON --> T2
T2 -->|exploratory| APP2
T2 -->|verdicts| TR2
APP2 --> W2
W2 --> BW2
BW2 --> LOGS
RL2 --> LOGS
LOGS --> LLM
LLM --> J2
LLM --> HG
HG --> J2
J2 --> D2
J2 --> WH
WH --> TR2
classDef keep fill:#E4EBF0,stroke:#8FA3B3,color:#33475B
classDef new fill:#17A67D,stroke:#0E7D5D,color:#FFFFFF
classDef changed fill:#FBEED2,stroke:#D99A2B,color:#5B4A1E
class W2,D2,RL2 keep
class APP2,BW2,TR2,J2 changed
class AGENT,CON,LLM,LOGS,WH,HG,T2 new
Read it as the overlay: tracker, widget, worker, Jira, devs all stay where they were. Green is the forge-work; amber is surgery on what we own.
| Component | Action | What happens | Forged from |
|---|---|---|---|
| App build stamp + toast | extend | Version in every report; "new version — refresh" prompt kills ghost bugs | env var + existing service worker |
| Bug worker | extend | Instant ack, queued Jira filing with retries; auto-merge → duplicate flags | our worker (zero-dep) + CF Queues |
| Log fetcher | forge | ±2 min of backend logs around the failure's own timestamp, filtered to the tester | Railway API + widget's network capture |
| LLM reconciler | forge | Per-report notes: % match vs prior reports (incl. fixed), what's-NEW, close/check recommendation with trail | pgvector (our Postgres) + one Claude call; trIAge (OSS) as reference |
| Agent executor | forge | Runs the persona packs page-by-page, evidence per step, video per session | Playwright (ours) + browser-use (OSS) + computer-use for free-form steps |
| Reconcile console | forge | Human watches live, verdicts on findings only (issue / pass / discuss), Take-Over | our tracker UI + span-per-action pattern |
| Tracker task system | extend | Inline "+" custom tasks · auto retest tasks · live Jira status bars per task | our D1 schema + Jira webhooks |
| Bug widget | extend | Adds build number; replay/console/network capture already battle-ready | ours (rrweb replay already recording) |
Later layer (production phase, parked by design): machine-first discovery (error tracking, canary) and AI fix-to-merge flows. Nothing above depends on them.