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 category | Scoping 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
| Tier | Definition | Example |
|---|---|---|
| P0 | Blocks demonstrable end-to-end | L-07 —apply (V-401), integration branch merge (V-101), watermelon test (V-703) |
| P1 | High-value; needed for credibility | Per-role Playwright (V-601..V-605), backend tool matrix (V-501..V-506) |
| P2 | Quality / hardening | Iterative loop runbook (V-801), standup auto-gen (V-802) |
| P3 | Nice-to-have | Acceptance gate dashboard widget |
State
NOT_STARTED / IN_PROGRESS / BLOCKED / VERIFYING / COMPLETED / DEFERRED
Proof types (this tracker emphasizes visual)
| Proof type | Required for | Storage convention |
|---|---|---|
| pixel_screenshot | UI tasks (Phase 6, parts of 5) | .artifacts/screenshots/<role>-<scenario>-<sha>-<timestamp>.png |
| clickthrough_video | UX flow tasks (Phase 6) | .artifacts/playwright-traces/<role>-<scenario>-<sha>.zip (Playwright trace.zip) |
| curl_response | API endpoint tasks (Phase 3/5) | .artifacts/api-curl/<endpoint>-<sha>-<timestamp>.json |
| test_output | Code tasks (Phases 1, 5, 7) | Vitest output captured in commit message OR .artifacts/tests/<phase>-<sha>.txt |
| migration_log | Schema tasks (Phase 2) | Neon MCP schema_migrations query result |
| replay_output | Projection tasks (Phase 4) | pnpm cli replay-projection ... output |
| deployment_proof | Deploy tasks (Phase 3) | /version + /health curl returning expected SHA |
| gradeboard_delta | Phase 7 only | Eval suite output with score + baseline + delta |
| lineage_trace | Backend agentic tasks | walk_provenance output terminating in event_id |
| vault_commit | Doc tasks | <repo>@<sha> |
1. Cumulative Counts (live)
| Phase | Tasks | P0 | P1 | P2 | Done | InProgress | Blocked | NotStarted |
|---|---|---|---|---|---|---|---|---|
| 0 Pre-flight | 5 | 4 | 1 | 0 | 5 | 0 | 0 | 0 |
| 1 Repo hygiene | 11 | 8 | 3 | 0 | 1 | 0 | 0 | 10 |
| 2 Migrations | 10 | 9 | 1 | 0 | 0 | 0 | 0 | 10 |
| 3 Deploy | 4 | 3 | 1 | 0 | 0 | 0 | 0 | 4 |
| 4 Seed data | 5 | 4 | 1 | 0 | 0 | 0 | 0 | 5 |
| 5 Backend verify | 8 | 7 | 1 | 0 | 0 | 0 | 0 | 8 |
| 6 Playwright | 6 | 4 | 2 | 0 | 0 | 0 | 0 | 6 |
| 7 Agentic eval | 4 | 3 | 1 | 0 | 0 | 0 | 0 | 4 |
| 8 Iterative loop | 3 | 0 | 1 | 2 | 0 | 0 | 0 | 3 |
| TOTAL | 56 | 42 | 12 | 2 | 6 | 0 | 0 | 50 |
2. Phase 0 — Pre-flight Audit
| ID | Sev | Task | State | Owner | Deps | Acceptance | Proof type | Proof artifact |
|---|---|---|---|---|---|---|---|---|
| V-001 | P0 | Inventory all parity-task-* branches (pushed vs local) | COMPLETED | claude | — | Diff doc shows N pushed / M local | test_output | DONE 2026-05-16T23:30Z PRE_FLIGHT_2026-05-16.md §V-001. 2→18 parity branches on origin. |
| V-002 | P0 | Inventory subagent worktrees + HEAD commits | COMPLETED | claude | — | All 13+ worktrees catalogued | test_output | DONE PRE_FLIGHT_2026-05-16.md §V-002. 13+ subagent worktrees inventoried. |
| V-003 | P0 | Map migration touch points across branches | COMPLETED | claude | V-001, V-002 | Collision map (049/050/055/056 conflicts identified) | test_output | DONE PRE_FLIGHT_2026-05-16.md §V-003. 049 collision: doc_backlink wins; IAR-RM-033 renumber to 064+. |
| V-004 | P1 | Baseline event/projection counts on nathel-prod + fin-central-prod | COMPLETED | claude | — | SQL output captured | curl_response | DONE 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-005 | P1 | Write docs/audits/PRE_FLIGHT_2026-05-16.md | COMPLETED | claude | V-001..V-004 | Doc in vault | vault_commit | DONE vault@(this commit) docs/audits/PRE_FLIGHT_2026-05-16.md. Plus Rule §7 surfaced 10 high-overlap programs. |
3. Phase 1 — Repo Hygiene
| ID | Sev | Task | State | Owner | Deps | Acceptance | Proof type | Proof artifact |
|---|---|---|---|---|---|---|---|---|
| V-101 | P0 | Create claude/parity-program-integration branch + push to origin | COMPLETED | claude | V-005 | Branch exists on origin | curl_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-102 | P0 | Push all 13+ local subagent branches to origin | COMPLETED | claude | V-001 | git ls-remote shows all parity-task-* branches | test_output | DONE 2026-05-16T23:30Z during V-001 rescue. All 18 parity-task branches on origin/fin-agentic. |
| V-103 | P0 | Resolve EntityType duplicate in @fin/shared | COMPLETED | claude | — | typecheck @fin/shared passes | test_output | DONE 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-104 | P0 | Merge F (frontmatter) → integration | COMPLETED | claude | V-101 | Merge commit; tests still pass | test_output + code_commit | DONE 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-105 | P0 | Merge A (stock parity) → integration | COMPLETED | claude | V-104 | Same | test_output + code_commit | DONE. Cherry-picked cdaa6435 as 5f98a55e (14 adapted commodity profiles + 2 audit scripts). Clean — no conflicts. |
| V-106 | P0 | Merge B (B-03..B-08 worker chain) → integration | COMPLETED | claude | V-105 | Worker tests pass | test_output + code_commit | DONE. 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-107 | P0 | Merge C (renderers + variety extract) → integration | COMPLETED | claude | V-106 | All renderer tests pass | test_output + code_commit | DONE. Cherry-picked 41233c68 as 42f81fd2 (vendor/region/variety renderers + bulk seed). Resolved 1 modify/delete conflict on bulk-render-knowledge-forge.ts. |
| V-108 | P1 | Merge L (historical importers) → integration | COMPLETED | claude | V-107 | Importer tests pass | test_output + code_commit | DONE. 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-109 | P1 | Merge H + E + I + N + D + J + K + M.1 + P + G + Day-5-final → integration | COMPLETED | claude | V-108 | All tests still pass | test_output + code_commit | DONE 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-110 | P0 | Local pre-flight passes (typecheck + biome + scoped vitest) | COMPLETED | claude | V-109 | <10 min runtime; 0 errors | test_output | DONE 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-111 | P0 | Push integration branch to origin | COMPLETED | claude | V-110 | git push origin claude/parity-program-integration succeeds | curl_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-112 | P1 | Fix 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_STARTED | rob_audit_agent | V-111 | 0 spurious lineage-gate failures on subsequent pushes | curl_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-113 | P0 | Audit + 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_STARTED | rob_audit_agent | — | Both failures fixed OR scoped to followup with issue tracking | test_output + issue_link | NEW 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-114 | P1 | Draft 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_STARTED | rob_audit_agent | V-301 | Doc in vault under docs/programs/PARITY_INTEGRATION_TOPOLOGY_2026-05-17.md | vault_commit | NEW 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
| ID | Sev | Task | State | Owner | Deps | Acceptance | Proof type | Proof artifact |
|---|---|---|---|---|---|---|---|---|
| V-201 | P0 | Apply 055 customer_360_projection to staging | COMPLETED | claude | V-110 | Table exists; RLS forced + 5 policies; recorded in schema_migrations | migration_log | DONE 2026-05-17T~01:00Z. workflow run 25977421076 success. Verified: relforcerowsecurity=true, 5 policies. |
| V-202 | P0 | Apply 056 vendor_360 to staging | COMPLETED | claude | V-201 | Same | migration_log | DONE 2026-05-17T~00:51Z. Workflow 25977311737-batch. nathel-prod staging table + 5 policies. |
| V-203 | P0 | Apply 057 commodity_360 to staging | COMPLETED | claude | V-202 | Same | migration_log | DONE. Same workflow batch. |
| V-204 | P0 | Apply 058 location_intel to staging (was applied earlier via MCP to fin-central-prod prod branch; re-applied to nathel-prod staging) | COMPLETED | claude | V-203 | Same | migration_log | DONE. Workflow run 25977428xxx success. |
| V-205 | P0 | Apply 059 supply_chain_position to staging | COMPLETED | claude | V-204 | Same | migration_log | DONE. Workflow batch. |
| V-206 | P0 | Apply 060 daily_company_pulse to staging | COMPLETED | claude | V-205 | Same | migration_log | DONE. Workflow batch. |
| V-207 | P0 | Apply 061 sales_team_dashboard to staging | COMPLETED | claude | V-206 | Same | migration_log | DONE. Workflow batch. |
| V-208 | P0 | Apply 062 buyer_team_dashboard to staging | COMPLETED | claude | V-207 | Same | migration_log | DONE. Workflow batch. |
| V-209 | P0 | Apply 063 data_quality_dashboard to staging | COMPLETED | claude | V-208 | Same | migration_log | DONE. Workflow batch. |
| V-210 | P1 | Verify all RLS forced + 4 policies each | COMPLETED | claude | V-209 | pg_class.relforcerowsecurity=true for all | migration_log | DONE 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-210b | P1 | Apply migration 064 intel_inbox_daily_digest_projection to staging (mirror of J-13) | COMPLETED | claude | V-210 | Table exists; RLS forced; 4 policies; consumer registered | migration_log | DONE. Workflow run 25977311737 success; verified table exists + 5 policies on nathel-prod staging. |
| V-210c | P1 | Apply 065 doc_backlink + 066 entity_doc to staging | COMPLETED | claude | V-210b | Tables exist; RLS forced | migration_log | DONE. 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-210d | P1 | CRITICAL 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 clarification | COMPLETED | claude | V-210 | Documented in tracker proof column | vault_commit | DONE. 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
| ID | Sev | Task | State | Owner | Deps | Acceptance | Proof type | Proof artifact |
|---|---|---|---|---|---|---|---|---|
| V-301 | P0 | pnpm deploy:staging from integration branch | COMPLETED | claude | V-210 | Wrangler deploy succeeds | deployment_proof | DONE 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-302 | P0 | /version returns integration SHA | COMPLETED | claude | V-301 | curl shows expected SHA | curl_response | DONE 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-303 | P0 | /health returns role + role_verified=true | COMPLETED | claude | V-302 | curl shows full health | curl_response | DONE. 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-304 | P1 | Smoke test 3-5 unauth read endpoints | COMPLETED | claude | V-303 | All return 200 + valid JSON | curl_response | DONE. 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)
| ID | Sev | Task | State | Owner | Deps | Acceptance | Proof type | Proof artifact |
|---|---|---|---|---|---|---|---|---|
| V-401 | DEFERRED | --apply | DEFERRED | — | — | Rob’s OPERATIONAL_DATA_SPINE program owns intake (IAR-RM-022..027 all FIXED_VERIFIED). Real data already flowing from intel@/arrivals@. | n/a | n/a — owned by IAR-RM lanes |
| V-401b | P0 | Verify entity_doc_projection populates from real knowledge rows | COMPLETED | claude | V-209 + B-followup chain (3 fixes) | Run renderer worker against nathel-prod knowledge.domain=commodity rows; entity_doc_projection populates without error | curl_response + replay_output | DONE 2026-05-17T~02:16Z. Required 3 B-followup fixes in sequence: (1) SET LOCAL app.tenant_id = $1 → SELECT 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-402 | DEFERRED | DEFERRED | — | — | Real Nathel data already in nathel-prod (12.1M events). No backfill needed for verify. | n/a | n/a | |
| V-403 | P0 | Seed sales reps + buyers via K-07 bulk scripts (Robert-shadow personas — already in nathel-prod) | NOT_STARTED | claude | V-209 | sales_team_dashboard + buyer_team_dashboard projection rows visible for Robert-shadow actors | replay_output + curl_response | (pending) |
| V-404 | P0 | Verify projection fill from real nathel-prod events: customer_360 / vendor_360 / commodity_360 / entity_doc / proof_package > 0 rows | NOT_STARTED | claude | V-401b, V-403 | SQL counts > 0; consumer cascade processing real signal.* + lot.* + sales.* events | curl_response | (pending) |
| V-405 | P1 | Generate W19 proof package from REAL nathel-prod data (replaces synthetic) | NOT_STARTED | claude | V-404 | New proof_package_2026-W19.md with real event counts matching nathel-prod activity | vault_commit + replay_output | (pending) |
| V-405b | P1 | Regenerate intel-inbox + arrivals-inbox daily digests from REAL nathel-prod ingest_pipeline events (J-14 renderer) | NOT_STARTED | claude | V-210b, V-404 | Per-inbox per-day docs for ≥7 days back; ≥1 fact_citation per claim; R2 artifact links resolve | vault_commit + replay_output | (pending) |
7. Phase 5 — Backend Verification
| ID | Sev | Task | State | Owner | Deps | Acceptance | Proof type | Proof artifact |
|---|---|---|---|---|---|---|---|---|
| V-501 | P0 | get_entity_profile returns structured DocContent | NOT_STARTED | claude | V-404 | Returns ≥1 fact_citation; schema validates | curl_response + test_output | (pending) |
| V-502 | P0 | walk_provenance terminates in real events | NOT_STARTED | claude | V-501 | Chain ends at event_id; no cycles | lineage_trace | (pending) |
| V-503 | P0 | get_doc_graph uses doc_backlink_projection | NOT_STARTED | claude | V-501 | Returns bounded BFS; depth respected | curl_response | (pending) |
| V-504 | P0 | search_entity_profiles recall ≥95% on test corpus | NOT_STARTED | claude | V-404 | Recall metric captured | test_output | (pending) |
| V-505 | P0 | All 5 generate-{role}-brief tools cite ≥5 facts each | NOT_STARTED | claude | V-404 | curl per role; assert ≥5 fact_citations | curl_response | (pending) |
| V-506 | P0 | All 5 explore-* tools return next_steps[] | NOT_STARTED | claude | V-303 | Response shape verified per role | curl_response | (pending) |
| V-506b | P1 | get_intel_inbox_digest(inbox, date) returns structured DocContent for ≥3 historical days (J-15 tool) | NOT_STARTED | claude | V-405b | curl returns DocContent with funnel + top_senders + signal_subtype_counts + artifact_refs; schema validates | curl_response + test_output | (pending) |
| V-507 | P0 | RLS audit probe — 0 cross-tenant leak | NOT_STARTED | claude | V-303 | seed-audit-probe.yml workflow exits 0 | test_output | (pending) |
| V-508 | P1 | Customer-boundary HARD rules — 0 leaks | NOT_STARTED | claude | V-303 | Negative tests pass (vendor watermark stripped, etc.) | test_output | (pending) |
8. Phase 6 — Human-POV Playwright (5 ROLES × pixel + click-through)
| ID | Sev | Task | State | Owner | Deps | Acceptance | Proof type | Proof artifact |
|---|---|---|---|---|---|---|---|---|
| V-601 | P0 | Sales rep canonical drill-through (Cucumber Hot House) | NOT_STARTED | claude | V-404, V-505 | ≤6 clicks, <10s, ≥3 fact_citations visible in UI | pixel_screenshot + clickthrough_video | (pending) |
| V-602 | P0 | Buyer canonical drill-through (Asparagus market position) | NOT_STARTED | claude | V-404 | ≤5 clicks; market chart renders | pixel_screenshot + clickthrough_video | (pending) |
| V-603 | P0 | QC inspector canonical drill-through (Mission Produce today) | NOT_STARTED | claude | V-404 | ≤4 clicks; defect modes visible | pixel_screenshot + clickthrough_video | (pending) |
| V-604 | P1 | Foreman canonical drill-through (dock board + roster) | NOT_STARTED | claude | V-404 | ≤4 clicks; team roster visible | pixel_screenshot + clickthrough_video | (pending) |
| V-605 | P1 | Exec canonical drill-through (daily pulse + fusion insights) | NOT_STARTED | claude | V-404, V-405 | ≤5 clicks; fusion insights surfaced | pixel_screenshot + clickthrough_video | (pending) |
| V-603b | P1 | Admin/exec inbox digest UX: navigate to today’s intel@ + arrivals@ digest cards; verify funnel + extraction bottleneck visible; click an artifact_ref → R2 PDF opens | NOT_STARTED | claude | V-506b | ≤3 clicks to either inbox digest; funnel surface (received → pdf_attached → extracted → signals_emitted) renders; artifact link resolves | pixel_screenshot + clickthrough_video | (pending) |
| V-606 | P0 | All 5 role artifacts archived in .artifacts/ | NOT_STARTED | claude | V-601..V-605 | 5 .png + 5 .zip files | vault_commit (list) | (pending) |
9. Phase 7 — Live Agentic Quality Eval
| ID | Sev | Task | State | Owner | Deps | Acceptance | Proof type | Proof artifact |
|---|---|---|---|---|---|---|---|---|
| V-701 | P0 | 30-query agentic eval suite runs against staging | NOT_STARTED | claude | V-501..V-506 | All 30 queries complete with structured results | test_output + curl_response | (pending) |
| V-702 | P0 | Gradeboard ≥4.51 LIVE | NOT_STARTED | claude | V-701 | Live score ≥4.51 vs 4.01 baseline | gradeboard_delta | (pending) |
| V-703 | P0 | §10 watermelon test SUBSTITUTED: “ORG BLACKBERRY arrivals from HOMEGROWN ORGANIC FARMS this past week” cites ≥3 real events | NOT_STARTED | claude | V-701 | Agent response cites real event_ids; references commodity + vendor | lineage_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-704 | P1 | Per-tool eval breakdown (accuracy/citation/recall/latency/sequence) | NOT_STARTED | claude | V-701 | docs/audits/AGENTIC_EVAL_LIVE_2026-05-XX.md in vault | vault_commit | (pending) |
10. Phase 8 — Iterative Loop Infrastructure
| ID | Sev | Task | State | Owner | Deps | Acceptance | Proof type | Proof artifact |
|---|---|---|---|---|---|---|---|---|
| V-801 | P1 | Iterative loop runbook | NOT_STARTED | claude | V-301 | docs/runbooks/DEPLOY_TEST_FIX_LOOP_2026-05-16.md | vault_commit | (pending) |
| V-802 | P2 | Daily standup auto-gen extension to cover verify program | NOT_STARTED | claude | — | parity-tracker-rollup.yml includes verify-tracker counts | code_commit | (pending) |
| V-803 | P2 | Acceptance gate dashboard | NOT_STARTED | claude | V-606, V-702, V-703 | Composite dashboard doc showing pass/fail across 7 gates | vault_commit | (pending) |
11. Acceptance gates (cross-reference Plan §10)
When ALL 7 below show ✅, system is demonstrable:
| Gate | Required from | Status |
|---|---|---|
| 1. All 5 role canonical drill-throughs pass | V-601..V-606 | ⬜ |
| 2. Gradeboard ≥4.51 LIVE | V-702 | ⬜ |
| 3. §10 watermelon test cites ≥3 real events | V-703 | ⬜ |
| 4. p95 latency: projection reads <500ms, compose <2s | V-501..V-506 | ⬜ |
| 5. Customer-boundary HARD rules: 0 leaks | V-508 | ⬜ |
| 6. RLS: 0 cross-tenant leak | V-507 | ⬜ |
| 7. Proof package W19 rebuilds from real events | V-405 | ⬜ |
12. Per-Session Update Protocol
End of every session:
- Update task states (NOT_STARTED → IN_PROGRESS → VERIFYING → COMPLETED)
- Attach proof artifacts — replace
(pending)with concrete path/SHA/curl-response - Update §1 cumulative counts
- Update §11 acceptance gates checklist
- Commit + push tracker to vault before ending session
13. References
- Plan: FIN_PRODUCTION_PARITY_DEPLOY_AND_VERIFY_PLAN_2026-05-16.md
- Parent build program: FIN_PRODUCTION_PARITY_PROGRAM_2026-05-16.md
- Parent build tracker: FIN_PRODUCTION_PARITY_TRACKER_2026-05-16.md
- Existing tracker pattern (model):
fin-agentic/docs/processes/FINN_LIVE_TEST_UNIFIED_VERIFICATION_TRACKER_2026-05-03.md - Iterative loop reference:
feedback_staging_first_iteration_loop.md(user memory) - UI testing strategy:
feedback_ui_testing_strategy.md(user memory) - fin-demo staging environment:
project_fin_demo_testing_environment.md(user memory)