Follows a real flow hop-by-hop with file:line evidence and resolved DI bindings, ending in the side effect, with a Mermaid sequence diagram and confidence tags.
This file is not a copy of the agent spec. The reusable spec lives in the skill
skills/tasks-flow-trace/SKILL.md. This is the execution record for the I2 trace ofandroid-monorepo@e7fc70a6b564ca3baffecb9a652194702443df3b— what was planned, how the work was decomposed across agents, and what each returned.
Trace the add-to-watchlist flow (Flutter UI → backend POST → native cache sync) end-to-end with
exact file:line evidence at a pinned commit, resolve all previously-INFERRED hops to VERIFIED,
add a second corroborating flow (recent-search), and make the whole thing reproducibly verifiable.
PMLWatchlistViewModel lives under company_page/, not a
watchlist/ feature).android-monorepo/android-monorepo
(outer dir is not a repo). Pinned HEAD = e7fc70a6b564ca3baffecb9a652194702443df3b
(2026-06-20, branch bugfix/PM4-6240-...).I2_flow_trace.md, the skill, the gold-standard A1_flow_trace.md +
A1_verification_report.md, Intermediate/VALIDATION_REPORT.md, and Tasks/README.md:130
(the stale claim).| Agent | Scope | Result |
|---|---|---|
| 1 | Flow A UI→POST (hops 1-19) + resolve _useBridge default | All 19 verified; _useBridge=false @ api_manager.dart:33; documented the param double-swap |
| 2 | Post-success + native sync entry (hops 20-26) | Resolved sendNativeData → PMLSendDetailsDataUseCase (bridge getNativeData) and handleDeeplink → PMLBridgeName.handleDeepLink; confirmed only equity_sdk handles sync_watchlist |
| 3 | Native sync() sub-trace → Retrofit/Room | 7 hops to terminal Retrofit @GET; no Room write (in-memory LiveData); Dagger bindings in CommonEquityWatchlistModule |
| 4 | Riverpod DI table + auth-header chain | 9 providers mapped; header injection traced app-init → native bridges → HttpApiClient._globalHeaders → request; base URL literal confirmed |
| 5 | Flow B (recent-search) re-verification @ pin | Whole A1 chain intact; line drift folded in (Fragment +7, VM +53); PUT+Room fan-out confirmed |
api_manager.dart:121-155,
PMLWatchlistViewModel.dart catch blocks, PMLCompanyPage.dart:806-855) to source the
error-path diagram first-hand rather than trusting the happy-path agents.docs/agent-analysis/I2_flow_trace.md, I2_callgraph.yaml, scripts/verify_trace.sh.verify_trace.sh → 36/36 edges pass at the pinned commit (exit 0).removeFromWatchlist shares the param swap). See
I2_verification_report.md.Tasks/README.md:130: the portfolio entry named only "recent-search flow"; updated to name
the primary watchlist-add flow with recent-search as the corroborating Flow B.Intermediate/flow-tracer/ (a proper sibling), not /docs at repo root — the
trace doc is under docs/agent-analysis/ within this folder, matching the portfolio convention.LiveData, not Room — the original artifact's "cache
refresh" wording was correct but is now made explicit to avoid implying a DB write.