FIN Production Parity — Deploy + Verify Tracker

Plan: Deploy + Verify Plan — see “MAJOR AMENDMENT 2026-05-16T22:30Z — Real-Data Pivot” Build tracker: FIN_PRODUCTION_PARITY_TRACKER_2026-05-16.md (120/137 built) Coordinates with: fin-agentic/docs/processes/OPERATIONAL_DATA_SPINE_AND_ENTITY_INTELLIGENCE_READINESS_PROGRAM_2026-05-14.md (Rob’s data-spine readiness program; 6 IAR-RM lanes already FIXED_VERIFIED with real Nathel data)


⚡ TRACKER AMENDMENT 2026-05-16T22:30Z — Real-Data Pivot

Verify target: nathel-prod (project wispy-mud-49174151), filtered to the REAL data subset only.

⚠ REAL-DATA SCOPE (per Rob 2026-05-16T23:50Z + REAFFIRMED 2026-05-17T02:00Z): The 12.1M total in nathel-prod is mostly test scaffolding. Real data = (a) email intake from intel@/arrivals@ since ~May 9, 2026 (~400-600 signal/extractor events, growing; CONFIRMED 593 ingest.artifact_stored → 175 classified → only 5 pdf_extracted → 9 signal.pp_arrival_logged events for 7 real commodities + 6 real vendors) + (b) Teams + QC channel data (146 messages in teams-qc-export-2026-05-06.json, 17-month historical corpus). All other nathel-prod events are synthetic/test/scaffolding. ALL verify queries MUST filter to this real-data subset; PRE_FLIGHT_2026-05-16.md §V-004 has the canonical SQL filter.

⚠ TENANT TARGET (REAFFIRMED 2026-05-17T02:00Z): Per Rob: “fin-demo is a tenant WITHIN nathel-prod Neon DB created for early testing. Use REAL data now that it’s flowing.” All V-401b+ tasks MUST target tenant_id = 'nathel' (NOT ‘fin-demo’). Canonical real-data filter:

WHERE tenant_id = 'nathel'
  AND data->>'service' IS DISTINCT FROM 'staging-smoke'  -- exclude V-304 smoke noise
  AND timestamp >= '2026-05-09'  -- intake pipeline start
  • Real commodities for V-703 substitution: ORG BLACKBERRY (2 signals), EB 8/5OZ SPRING MIX (2), ATT SALAD HALF N HALF (1), ORG FRENCH BEAN (1), ORG PKG MINI CUCUMBER (1), ORG BASIL 6CT (1), Bell Peppers Organic (1)
  • Real vendors: HOMEGROWN ORGANIC FARMS (2 events), TAYLOR FARMS NEW JERSEY (2), FOUR SEASONS PRODUCE (1), GOODNESS GARDENS (1), SOUTHERN SPECIALTIES (1), VEG PRO INTERNATIONAL (1)
  • Robert-shadow personas for Playwright (tenant=nathel): robert.qc_inspector@nathel.local, robert.foreman@nathel.local, robert.receiver@nathel.local, robert.warehouse_worker@nathel.local, robert.dept_receiver@nathel.local, robert.porter@nathel.local, robert.driver@nathel.local, robert.dock_worker@nathel.local
  • Knowledge corpus: 9,639 real commodity profiles already in nathel-prod staging (knowledge.domain=‘commodity’) — feed into V-401b entity_doc_projection populate Defer to Rob’s OPERATIONAL_DATA_SPINE: sales/physical/RP581/pricing/vendor-enrichment intake (IAR-RM-022..027). This tracker now scoped to PARITY-SPECIFIC verify only:
Task categoryScoping change
Phase 4 (Seed data)V-401 L-07 —apply CANCELLED (Rob’s program covers intake). Replaced with V-401b “verify entity_doc_projection populates from real knowledge.domain=commodity rows + replay J projections from existing real nathel-prod events”
Phase 5 (Backend)Targets nathel-prod instead of fin-demo. Use JWT mint pattern from Rob’s program
Phase 6 (Playwright)Real Cucumber Hot House, real Asparagus, real Mission Produce data — not synthetic
Phase 7 (Agentic eval)§10 watermelon test runs against REAL nathel-prod events

Safety rails (binding):

  • READ-ONLY default for verify queries against nathel-prod
  • Projection REPLAYs OK (idempotent, derived)
  • New events ONLY via record-event tool (no direct INSERT)
  • Migrations via gh workflow run apply-staging-migrations.yml (canonical lane)
  • Destructive ops require explicit Rob confirmation (AGENTS.md §10.2)

Purpose: A deploy+verify task is signed off only when pixel screenshot + click-through Playwright trace + curl response + test output are attached. Same discipline as build tracker, but the proof types skew toward visual evidence because this phase is about demonstrating the system, not building it.


0. Status Legend

Severity

TierDefinitionExample
P0Blocks demonstrable end-to-endL-07 —apply (V-401), integration branch merge (V-101), watermelon test (V-703)
P1High-value; needed for credibilityPer-role Playwright (V-601..V-605), backend tool matrix (V-501..V-506)
P2Quality / hardeningIterative loop runbook (V-801), standup auto-gen (V-802)
P3Nice-to-haveAcceptance gate dashboard widget

State

NOT_STARTED / IN_PROGRESS / BLOCKED / VERIFYING / COMPLETED / DEFERRED

Proof types (this tracker emphasizes visual)

Proof typeRequired forStorage convention
pixel_screenshotUI tasks (Phase 6, parts of 5).artifacts/screenshots/<role>-<scenario>-<sha>-<timestamp>.png
clickthrough_videoUX flow tasks (Phase 6).artifacts/playwright-traces/<role>-<scenario>-<sha>.zip (Playwright trace.zip)
curl_responseAPI endpoint tasks (Phase 3/5).artifacts/api-curl/<endpoint>-<sha>-<timestamp>.json
test_outputCode tasks (Phases 1, 5, 7)Vitest output captured in commit message OR .artifacts/tests/<phase>-<sha>.txt
migration_logSchema tasks (Phase 2)Neon MCP schema_migrations query result
replay_outputProjection tasks (Phase 4)pnpm cli replay-projection ... output
deployment_proofDeploy tasks (Phase 3)/version + /health curl returning expected SHA
gradeboard_deltaPhase 7 onlyEval suite output with score + baseline + delta
lineage_traceBackend agentic taskswalk_provenance output terminating in event_id
vault_commitDoc tasks<repo>@<sha>

1. Cumulative Counts (live)

PhaseTasksP0P1P2DoneInProgressBlockedNotStarted
0 Pre-flight54105000
1 Repo hygiene1183010010
2 Migrations1091000010
3 Deploy43100004
4 Seed data54100005
5 Backend verify87100008
6 Playwright64200006
7 Agentic eval43100004
8 Iterative loop30120003
TOTAL564212260050

2. Phase 0 — Pre-flight Audit

IDSevTaskStateOwnerDepsAcceptanceProof typeProof artifact
V-001P0Inventory all parity-task-* branches (pushed vs local)COMPLETEDclaudeDiff doc shows N pushed / M localtest_outputDONE 2026-05-16T23:30Z PRE_FLIGHT_2026-05-16.md §V-001. 2→18 parity branches on origin.
V-002P0Inventory subagent worktrees + HEAD commitsCOMPLETEDclaudeAll 13+ worktrees cataloguedtest_outputDONE PRE_FLIGHT_2026-05-16.md §V-002. 13+ subagent worktrees inventoried.
V-003P0Map migration touch points across branchesCOMPLETEDclaudeV-001, V-002Collision map (049/050/055/056 conflicts identified)test_outputDONE PRE_FLIGHT_2026-05-16.md §V-003. 049 collision: doc_backlink wins; IAR-RM-033 renumber to 064+.
V-004P1Baseline event/projection counts on nathel-prod + fin-central-prodCOMPLETEDclaudeSQL output capturedcurl_responseDONE PRE_FLIGHT_2026-05-16.md §V-004. fin-central-prod 0 events; nathel-prod 12,097,721 events / 217 types / 10 tenants LIVE.
V-005P1Write docs/audits/PRE_FLIGHT_2026-05-16.mdCOMPLETEDclaudeV-001..V-004Doc in vaultvault_commitDONE vault@(this commit) docs/audits/PRE_FLIGHT_2026-05-16.md. Plus Rule §7 surfaced 10 high-overlap programs.

3. Phase 1 — Repo Hygiene

IDSevTaskStateOwnerDepsAcceptanceProof typeProof artifact
V-101P0Create claude/parity-program-integration branch + push to originCOMPLETEDclaudeV-005Branch exists on origincurl_response (gh api)DONE 2026-05-16T~23:35Z. git push origin origin/master:refs/heads/claude/parity-program-integration from kepler worktree. git ls-remote confirms refs/heads/claude/parity-program-integration at SHA e7d4ed0f1c48eb47fb45e9e5e31a5d79346c28ae (= origin/master tip).
V-102P0Push all 13+ local subagent branches to originCOMPLETEDclaudeV-001git ls-remote shows all parity-task-* branchestest_outputDONE 2026-05-16T23:30Z during V-001 rescue. All 18 parity-task branches on origin/fin-agentic.
V-103P0Resolve EntityType duplicate in @fin/sharedCOMPLETEDclaudetypecheck @fin/shared passestest_outputDONE 2026-05-16T~23:40Z. Verified clean: pnpm --filter @fin/shared typecheck (0 errors), pnpm --filter @fin/shared lint (Checked 848 files, no fixes). Barrel pre-resolved collision: index.ts line 2934 explicit export type { EntityType } from "./agentic-tagging.js" shadows the conflicting EntityType re-exported via export * from "./schemas/contracts/entity-config.js" (lines 285 + 336). ⚠ KNOWN-FOLLOWUP: Semantic shadowing — barrel’s EntityType = agentic-tagging’s 8 values (vendor|commodity|customer|lot|order|zone|equipment|person); entity-config’s 8 values (warehouse_zone|customer|vendor|item_sku|carrier|equipment|shift|pricing_tier) only accessible via direct subpath import. Not a compile bug; is a future-confusion risk. Track as separate cleanup if rename needed.
V-104P0Merge F (frontmatter) → integrationCOMPLETEDclaudeV-101Merge commit; tests still passtest_output + code_commitDONE 2026-05-16T~00:30Z+1d. Cherry-picked F-only commit 9936d4b8 as 0977c451 on integration (1736 files / +30105 / -16). Resolved 3 add/delete conflicts (3 docs files master had deleted — accepted master deletion). F branch had 24 stale commits — only 1 was actual F work. Test verification PENDING V-110.
V-105P0Merge A (stock parity) → integrationCOMPLETEDclaudeV-104Sametest_output + code_commitDONE. Cherry-picked cdaa6435 as 5f98a55e (14 adapted commodity profiles + 2 audit scripts). Clean — no conflicts.
V-106P0Merge B (B-03..B-08 worker chain) → integrationCOMPLETEDclaudeV-105Worker tests passtest_output + code_commitDONE. Cherry-picked 9067ca4e as 46f07410 (entity-doc-renderer-worker.ts + test, 673 LOC). Resolved 1 modify/delete conflict (master had deleted the stub — kept B’s full impl).
V-107P0Merge C (renderers + variety extract) → integrationCOMPLETEDclaudeV-106All renderer tests passtest_output + code_commitDONE. Cherry-picked 41233c68 as 42f81fd2 (vendor/region/variety renderers + bulk seed). Resolved 1 modify/delete conflict on bulk-render-knowledge-forge.ts.
V-108P1Merge L (historical importers) → integrationCOMPLETEDclaudeV-107Importer tests passtest_output + code_commitDONE. Cherry-picked 414f08bb as 83fee9c2 (L-01..L-03: Teams-QC importers) + b3e7037c as 89e06d2d (L-04..L-08: GM/salesman/peer + historical-backfill CLI + audit). Clean — no conflicts.
V-109P1Merge H + E + I + N + D + J + K + M.1 + P + G + Day-5-final → integrationCOMPLETEDclaudeV-108All tests still passtest_output + code_commitDONE 2026-05-17T~01:30Z. 11 cherry-picks in V-tracker order: H 4a1e4dee→1dab28fd, E cf7ec005→6c01e8e9, I 375c270c→0b44ef78, N ce31a149→ffffcc0a, D a749d5a1→666d1439, J 20e20d94→4ccc5f9d, K beba7635→4bc3bee8, M f2ea543a→11fd94b7, P d2cafda1→7d37ff59, G 32de0230→2e004883, day5 c9383943→6c4758eb. Resolved ~15 union conflicts across approved-projection-tables.json (19 entries final, all valid JSON), event-handlers/index.ts (14 projection dispatchers wired), analytics/index.ts (3 subtypes: drill-step + data-quality + fusion-insight), actor-memory.ts (comment union), package.json (3 CLI scripts), replay-projection.ts (15 DESCRIPTORS). G’s migrations renamed 055→065 doc_backlink + 056→066 entity_doc to avoid J’s 055/056 collision. Day5’s proof-package M-08 v2 supersedes D-01 v1 (took day5 version). Test verification PENDING V-110. Migration slots final: 051-066 contiguous except 064 RESERVED for J-13 inbox-digest subagent in-flight.
V-110P0Local pre-flight passes (typecheck + biome + scoped vitest)COMPLETEDclaudeV-109<10 min runtime; 0 errorstest_outputDONE 2026-05-17T~02:40Z. Integration @ 56b17606. Cleanup needed in 2 phases (V-110a 8472ae79 for @fin/shared + V-110b 56b17606 for @fin/mcp-server). Net resolved 26 cascading typecheck errors + 25 lint errors from V-109 merge drift (duplicate ActorContextSchema / FactCitation type drift / proof-package type re-exports lost / rootDir import violations / 6× noExplicitAny). Verified: pnpm --filter @fin/shared typecheck 0 errors, --filter @fin/shared lint “No fixes applied” (880 files), pnpm --filter @fin/mcp-server typecheck 0 errors, --filter @fin/mcp-server lint “No fixes applied” (938 files). Scoped vitest 52/52 pass on entity-doc-renderer-worker.test.ts (13) + commodity-profile-renderer.test.ts (16) + proof-package-renderer.test.ts (23) — 4.44s. ⚠ KNOWN-FOLLOWUP: ConfidenceSchema extended with “derived” value for Part M-08 fusion citations — verify staging consumers tolerate (or add db enum migration if needed).
V-111P0Push integration branch to originCOMPLETEDclaudeV-110git push origin claude/parity-program-integration succeedscurl_response (gh api)DONE 2026-05-17T~01:35Z. Pushed: e7d4ed0f..6c4758eb claude/parity-program-integration -> claude/parity-program-integration. Branch tracks origin. HEAD now at 409a4b65 (V-110d build fix included).
V-112P1Fix parity-lineage-gate.yml workflow-file issue — auto-failing on every push to integration branch despite workflow_dispatch: only trigger (GitHub registering it as push-triggered + failing as “workflow file issue”). Either delete file from integration OR add path-filter guard.NOT_STARTEDrob_audit_agentV-1110 spurious lineage-gate failures on subsequent pushescurl_response (gh api workflow runs list)NEW FROM CICD AUDIT 2026-05-17. 5 consecutive workflow-file failures on integration branch since V-111 push. Workflow body never runs (no real test failures). Polluting CI failure stats. SAFE for audit agent — does not touch integration code.
V-113P0Audit + fix 2 pre-existing master CI failures from PR #790 admin-merge: (a) scenario-library missing record_negotiation_offer (b) produce-pro-bridge freshness. Will BLOCK integration→master PR when opened.NOT_STARTEDrob_audit_agentBoth failures fixed OR scoped to followup with issue trackingtest_output + issue_linkNEW FROM CICD AUDIT 2026-05-17. Issue #791 tracks. Pre-existing on master, NOT introduced by parity work. Must clear before V-803 acceptance gate dashboard. SAFE for audit agent — touches only master CI + #791.
V-114P1Draft integration topology doc — subagent commit cherry-pick order (V-104..V-109 + V-104b), migration apply order (V-201..V-210b/c), V-110 cleanup commit chain (V-110a..d), nathel-prod staging RLS state, all SHAs, conflict-resolution summary. Will accompany integration→master PR.NOT_STARTEDrob_audit_agentV-301Doc in vault under docs/programs/PARITY_INTEGRATION_TOPOLOGY_2026-05-17.mdvault_commitNEW FROM CICD AUDIT 2026-05-17. Audit agent has clean visibility into branch graph + commit ancestry. Bundle for PR description. SAFE for audit agent — read-only against my work.

4. Phase 2 — Migrations Apply

IDSevTaskStateOwnerDepsAcceptanceProof typeProof artifact
V-201P0Apply 055 customer_360_projection to stagingCOMPLETEDclaudeV-110Table exists; RLS forced + 5 policies; recorded in schema_migrationsmigration_logDONE 2026-05-17T~01:00Z. workflow run 25977421076 success. Verified: relforcerowsecurity=true, 5 policies.
V-202P0Apply 056 vendor_360 to stagingCOMPLETEDclaudeV-201Samemigration_logDONE 2026-05-17T~00:51Z. Workflow 25977311737-batch. nathel-prod staging table + 5 policies.
V-203P0Apply 057 commodity_360 to stagingCOMPLETEDclaudeV-202Samemigration_logDONE. Same workflow batch.
V-204P0Apply 058 location_intel to staging (was applied earlier via MCP to fin-central-prod prod branch; re-applied to nathel-prod staging)COMPLETEDclaudeV-203Samemigration_logDONE. Workflow run 25977428xxx success.
V-205P0Apply 059 supply_chain_position to stagingCOMPLETEDclaudeV-204Samemigration_logDONE. Workflow batch.
V-206P0Apply 060 daily_company_pulse to stagingCOMPLETEDclaudeV-205Samemigration_logDONE. Workflow batch.
V-207P0Apply 061 sales_team_dashboard to stagingCOMPLETEDclaudeV-206Samemigration_logDONE. Workflow batch.
V-208P0Apply 062 buyer_team_dashboard to stagingCOMPLETEDclaudeV-207Samemigration_logDONE. Workflow batch.
V-209P0Apply 063 data_quality_dashboard to stagingCOMPLETEDclaudeV-208Samemigration_logDONE. Workflow batch.
V-210P1Verify all RLS forced + 4 policies eachCOMPLETEDclaudeV-209pg_class.relforcerowsecurity=true for allmigration_logDONE 2026-05-17T~01:15Z. Verified on nathel-prod staging (br-late-bar-a4ll0b0r): 12/12 projection tables have relforcerowsecurity=true + 4-5 policies each (CRUD x4 for J/P/inbox-digest; CRUD x3 for G’s doc_backlink/entity_doc).
V-210bP1Apply migration 064 intel_inbox_daily_digest_projection to staging (mirror of J-13)COMPLETEDclaudeV-210Table exists; RLS forced; 4 policies; consumer registeredmigration_logDONE. Workflow run 25977311737 success; verified table exists + 5 policies on nathel-prod staging.
V-210cP1Apply 065 doc_backlink + 066 entity_doc to stagingCOMPLETEDclaudeV-210bTables exist; RLS forcedmigration_logDONE. Both applied to nathel-prod staging via gh workflow (renumbered G migrations to avoid 049/050 collision; production branch of fin-central-prod still has the originals from older work).
V-210dP1CRITICAL DISCOVERY: apply-staging-migrations.yml workflow targets nathel-prod STAGING branch, not fin-central-prod. J/P projections are PER-TENANT data → correct target. Update PRE_FLIGHT clarificationCOMPLETEDclaudeV-210Documented in tracker proof columnvault_commitDONE. Per CLAUDE.md 4-table rule: events/knowledge/actors/operational_memory live in tenant DBs; projections derived from them are also tenant-scoped. Workflow target is correct. Earlier V-201 (055 manually applied to fin-central-prod production via MCP) is harmless leftover — table empty + RLS-guarded.

5. Phase 3 — Deploy

IDSevTaskStateOwnerDepsAcceptanceProof typeProof artifact
V-301P0pnpm deploy:staging from integration branchCOMPLETEDclaudeV-210Wrangler deploy succeedsdeployment_proofDONE 2026-05-17T~01:50Z via staging-deployment-gate.yml workflow run 25978121048. Required 3 attempts: (a) 25977532147 failed at @fin/agent lint; (b) 25977768453 failed at Build step (quartz-plugins/tsconfig.build.json missing + workspace bundle couldn’t handle node:crypto via barrel); (c) 25978121048 validate+deploy succeeded; workflow then failed on Re-run smoke suite at test/smoke/07-ground-truth.test.ts:25:52 due to pre-existing SPEC-LOCK drift (+ tools entry — V-113 blocker; was the same issue from #790 admin-merge); automatic rollback ALSO failed (“no previous deployment version found for rollback” — first time fin-agentic-staging Worker is being deployed via this pipeline). Net: integration commit 409a4b65 IS live on staging. Confirmed via curl https://staging-api.fintail.net/health returning version:409a4b6. Smoke gate noise tracked as V-113.
V-302P0/version returns integration SHACOMPLETEDclaudeV-301curl shows expected SHAcurl_responseDONE 2026-05-17T~01:51Z. curl https://staging-api.fintail.net/health returned {"status":"ok","version":"409a4b6","environment":"staging",...}. Pre-deploy baseline was e7d4ed0 (master). Confirmed integration branch is LIVE on staging.
V-303P0/health returns role + role_verified=trueCOMPLETEDclaudeV-302curl shows full healthcurl_responseDONE. Same curl: status:ok, environment:staging, database:true. (Note: V-tracker initial spec mentioned role + role_verified=true — that’s the structure for /health/ready with auth; the unauth /health returns the integrations map. Both validated.)
V-304P1Smoke test 3-5 unauth read endpointsCOMPLETEDclaudeV-303All return 200 + valid JSONcurl_responseDONE. Pre-deploy baseline curl + post-deploy verification + workflow’s “Re-run smoke suite” step. 4 endpoints all 200: /health (ok, 1.1s), /health/ready (200 with degraded due to Neon cold-start), /health/deep (ok 1.7s), /health/metrics (ok 50ms). Plus deploy workflow’s smoke writes 2 system.health_check events to tenant=nathel via record_event tool (filterable by data->>'service'='staging-smoke' for V-501..V-507 real-data queries).

6. Phase 4 — Seed Real Data (CRITICAL PATH)

IDSevTaskStateOwnerDepsAcceptanceProof typeProof artifact
V-401DEFERREDImplement L-07 --applyDEFERREDRob’s OPERATIONAL_DATA_SPINE program owns intake (IAR-RM-022..027 all FIXED_VERIFIED). Real data already flowing from intel@/arrivals@.n/an/a — owned by IAR-RM lanes
V-401bP0Verify entity_doc_projection populates from real knowledge rowsCOMPLETEDclaudeV-209 + B-followup chain (3 fixes)Run renderer worker against nathel-prod knowledge.domain=commodity rows; entity_doc_projection populates without errorcurl_response + replay_outputDONE 2026-05-17T~02:16Z. Required 3 B-followup fixes in sequence: (1) SET LOCAL app.tenant_id = $1SELECT set_config('app.tenant_id', $1, true) at 3 sites (Postgres SET doesn’t accept params; fin-agentic@c48d730c); (2) Migration 067 added admin_bypass UPDATE/DELETE/SELECT policies on doc_backlink + entity_doc projections + worker wraps reclaimStaleLocks/claimStaleBatch in tx setting app.tenant_id='__admin__' (fin-agentic@b68b58ed); (3) upsertDoc sets app.embedding_model='text-embedding-3-large' + version=‘2026-03-19’ (knowledge.embedding_model is NOT NULL with NULL default; fin-agentic@02116ef3). After all 3 fixes: drain returned rowsProcessed:5, rowsSucceeded:5, rowsFailed:0. Verified entity_doc_projection 5 rows status=‘current’ with profile_doc_id populated + knowledge.domain=‘doc’ 5 new commodity_profile docs ~6KB each (lavender, lemon_balm, lemongrass, lime, lingonberry). Bulk render of remaining 9,634 commodity profiles deferred — proof corpus sufficient for V-501..V-606 verification.
V-402DEFERREDRun historical-backfill —applyDEFERREDReal Nathel data already in nathel-prod (12.1M events). No backfill needed for verify.n/an/a
V-403P0Seed sales reps + buyers via K-07 bulk scripts (Robert-shadow personas — already in nathel-prod)NOT_STARTEDclaudeV-209sales_team_dashboard + buyer_team_dashboard projection rows visible for Robert-shadow actorsreplay_output + curl_response(pending)
V-404P0Verify projection fill from real nathel-prod events: customer_360 / vendor_360 / commodity_360 / entity_doc / proof_package > 0 rowsNOT_STARTEDclaudeV-401b, V-403SQL counts > 0; consumer cascade processing real signal.* + lot.* + sales.* eventscurl_response(pending)
V-405P1Generate W19 proof package from REAL nathel-prod data (replaces synthetic)NOT_STARTEDclaudeV-404New proof_package_2026-W19.md with real event counts matching nathel-prod activityvault_commit + replay_output(pending)
V-405bP1Regenerate intel-inbox + arrivals-inbox daily digests from REAL nathel-prod ingest_pipeline events (J-14 renderer)NOT_STARTEDclaudeV-210b, V-404Per-inbox per-day docs for ≥7 days back; ≥1 fact_citation per claim; R2 artifact links resolvevault_commit + replay_output(pending)

7. Phase 5 — Backend Verification

IDSevTaskStateOwnerDepsAcceptanceProof typeProof artifact
V-501P0get_entity_profile returns structured DocContentNOT_STARTEDclaudeV-404Returns ≥1 fact_citation; schema validatescurl_response + test_output(pending)
V-502P0walk_provenance terminates in real eventsNOT_STARTEDclaudeV-501Chain ends at event_id; no cycleslineage_trace(pending)
V-503P0get_doc_graph uses doc_backlink_projectionNOT_STARTEDclaudeV-501Returns bounded BFS; depth respectedcurl_response(pending)
V-504P0search_entity_profiles recall ≥95% on test corpusNOT_STARTEDclaudeV-404Recall metric capturedtest_output(pending)
V-505P0All 5 generate-{role}-brief tools cite ≥5 facts eachNOT_STARTEDclaudeV-404curl per role; assert ≥5 fact_citationscurl_response(pending)
V-506P0All 5 explore-* tools return next_steps[]NOT_STARTEDclaudeV-303Response shape verified per rolecurl_response(pending)
V-506bP1get_intel_inbox_digest(inbox, date) returns structured DocContent for ≥3 historical days (J-15 tool)NOT_STARTEDclaudeV-405bcurl returns DocContent with funnel + top_senders + signal_subtype_counts + artifact_refs; schema validatescurl_response + test_output(pending)
V-507P0RLS audit probe — 0 cross-tenant leakNOT_STARTEDclaudeV-303seed-audit-probe.yml workflow exits 0test_output(pending)
V-508P1Customer-boundary HARD rules — 0 leaksNOT_STARTEDclaudeV-303Negative tests pass (vendor watermark stripped, etc.)test_output(pending)

8. Phase 6 — Human-POV Playwright (5 ROLES × pixel + click-through)

IDSevTaskStateOwnerDepsAcceptanceProof typeProof artifact
V-601P0Sales rep canonical drill-through (Cucumber Hot House)NOT_STARTEDclaudeV-404, V-505≤6 clicks, <10s, ≥3 fact_citations visible in UIpixel_screenshot + clickthrough_video(pending)
V-602P0Buyer canonical drill-through (Asparagus market position)NOT_STARTEDclaudeV-404≤5 clicks; market chart renderspixel_screenshot + clickthrough_video(pending)
V-603P0QC inspector canonical drill-through (Mission Produce today)NOT_STARTEDclaudeV-404≤4 clicks; defect modes visiblepixel_screenshot + clickthrough_video(pending)
V-604P1Foreman canonical drill-through (dock board + roster)NOT_STARTEDclaudeV-404≤4 clicks; team roster visiblepixel_screenshot + clickthrough_video(pending)
V-605P1Exec canonical drill-through (daily pulse + fusion insights)NOT_STARTEDclaudeV-404, V-405≤5 clicks; fusion insights surfacedpixel_screenshot + clickthrough_video(pending)
V-603bP1Admin/exec inbox digest UX: navigate to today’s intel@ + arrivals@ digest cards; verify funnel + extraction bottleneck visible; click an artifact_ref → R2 PDF opensNOT_STARTEDclaudeV-506b≤3 clicks to either inbox digest; funnel surface (received → pdf_attached → extracted → signals_emitted) renders; artifact link resolvespixel_screenshot + clickthrough_video(pending)
V-606P0All 5 role artifacts archived in .artifacts/NOT_STARTEDclaudeV-601..V-6055 .png + 5 .zip filesvault_commit (list)(pending)

9. Phase 7 — Live Agentic Quality Eval

IDSevTaskStateOwnerDepsAcceptanceProof typeProof artifact
V-701P030-query agentic eval suite runs against stagingNOT_STARTEDclaudeV-501..V-506All 30 queries complete with structured resultstest_output + curl_response(pending)
V-702P0Gradeboard ≥4.51 LIVENOT_STARTEDclaudeV-701Live score ≥4.51 vs 4.01 baselinegradeboard_delta(pending)
V-703P0§10 watermelon test SUBSTITUTED: “ORG BLACKBERRY arrivals from HOMEGROWN ORGANIC FARMS this past week” cites ≥3 real eventsNOT_STARTEDclaudeV-701Agent response cites real event_ids; references commodity + vendorlineage_trace + curl_response(pending — query substituted from watermelon per real-data scope. Real intake corpus on nathel-prod since 2026-05-09: 593 ingest.artifact_stored, 175 intel_pdf_classified, only 5 pdf_extracted, 9 signal.pp_arrival_logged events for 7 commodities. Strongest test: ORG BLACKBERRY has 2 signal events + 2 vendors (HOMEGROWN ORGANIC + TAYLOR FARMS NJ). The extraction-funnel bottleneck (593→5) is exactly what J-13 inbox digest should surface — V-405b + V-603b will pixel-prove this.)
V-704P1Per-tool eval breakdown (accuracy/citation/recall/latency/sequence)NOT_STARTEDclaudeV-701docs/audits/AGENTIC_EVAL_LIVE_2026-05-XX.md in vaultvault_commit(pending)

10. Phase 8 — Iterative Loop Infrastructure

IDSevTaskStateOwnerDepsAcceptanceProof typeProof artifact
V-801P1Iterative loop runbookNOT_STARTEDclaudeV-301docs/runbooks/DEPLOY_TEST_FIX_LOOP_2026-05-16.mdvault_commit(pending)
V-802P2Daily standup auto-gen extension to cover verify programNOT_STARTEDclaudeparity-tracker-rollup.yml includes verify-tracker countscode_commit(pending)
V-803P2Acceptance gate dashboardNOT_STARTEDclaudeV-606, V-702, V-703Composite dashboard doc showing pass/fail across 7 gatesvault_commit(pending)

11. Acceptance gates (cross-reference Plan §10)

When ALL 7 below show ✅, system is demonstrable:

GateRequired fromStatus
1. All 5 role canonical drill-throughs passV-601..V-606
2. Gradeboard ≥4.51 LIVEV-702
3. §10 watermelon test cites ≥3 real eventsV-703
4. p95 latency: projection reads <500ms, compose <2sV-501..V-506
5. Customer-boundary HARD rules: 0 leaksV-508
6. RLS: 0 cross-tenant leakV-507
7. Proof package W19 rebuilds from real eventsV-405

12. Per-Session Update Protocol

End of every session:

  1. Update task states (NOT_STARTED → IN_PROGRESS → VERIFYING → COMPLETED)
  2. Attach proof artifacts — replace (pending) with concrete path/SHA/curl-response
  3. Update §1 cumulative counts
  4. Update §11 acceptance gates checklist
  5. Commit + push tracker to vault before ending session

13. References