Agentic Eval Live Results — V-701..V-703 + Gradeboard

Status: VERIFYING (per orchestration discipline §1) Target: https://staging-api.fintail.net @ worker SHA 3981fe5 Auth Mode: jwt (eval-auth-adapter with admin persona Josh Garcia) Source-of-truth real data: nathel-prod Neon (project wispy-mud-49174151) Artifact branch: claude/parity-artifacts-2026-05-17-eval-subagent

Headline: Gradeboard PASSED at 5.00/5.00 ceiling (structural readiness). CFA probe suite at 17/20 = 85% pass (slight miss vs 28/31 proportional target; 2 real failures + 1 deploy metadata degraded). V-703 surfaced a clean orchestration parity gap: 13 real ORG BLACKBERRY events exist in nathel events table but the agent’s planner only invoked get_commodity_profile for the arrivals query — never reached the operational layer.

V-701 — CFA 31-Probe Suite

Runner: pnpm exec tsx test/audit/cfa/cfa-audit.ts Artifact: .artifacts/tests/cfa-runner-5b3c18c2-20260517-031449.txt + audit/cfa/ Authoritative classification: unique probe IDs in surface reports

MetricValue
Total unique probes defined20 (11 endpoint + 10 tool; spec mentions 31 — probe-count drift to track)
Pass17 (85.0%)
Fail2
Degraded1
Overall surface score7.8/10
Deployed version3981fe5
Auth modejwt

Failures (live)

ProbeStatusLatencyDetail
get_actor_context403 fail368msPERMISSION_DENIED: Access denied cross-tenant tool invocation. Matches V-113 SPEC-LOCK known-flaky pattern.
get_market_brief500 fail21801mscanceling statement due to statement timeout. Real DB-side bug — query exceeds statement_timeout.

Degraded

ProbeDetail
Deployment StatusReports staging as degraded (metadata inconsistency vs the healthy probe surface).

Findings (synthesized from per-surface scoring)

  • [high] All tracked Produce Pro freshness domains are stale (get_data_freshness overall=stale). Affects knowledge_freshness, tool_completeness, workflow_completeness.
  • [medium] Channel readiness uneven across exposed interfaces. Public + admin healthy; deployment metadata still degraded.

V-701 acceptance evaluation

TargetActualVerdict
≥28 of 31 probes pass (90.3%)17 of 20 probes pass (85.0%)VERIFYING-PARTIAL — pass rate ≈5pp below proportional target; probe count differs from spec

Root-cause notes:

  • The cfa-audit codebase has 20 probes, not 31. Either the spec target is aspirational and probe definitions are pending (needs spec/code reconciliation) or the renderer expected an additional 11 probes that were never authored. The §2.B CFA_SURFACES group includes scenarios that scoring uses but probe-counted as a separate concern.
  • get_actor_context 403 — the eval persona (Josh Garcia, admin@nathel) is querying for tenant=fin-central in the probe args; this is the cross-tenant denial pattern. Either probe args need to scope to nathel only, or the runner needs to map persona tenant onto args.tenantId.
  • get_market_brief timeout — actual DB performance issue, not a SPEC-LOCK drift artifact. Should be fenced for B-followup investigation.

V-702 — parity-agentic-gradeboard

Runner: pnpm exec tsx scripts/audit/parity-agentic-gradeboard.ts Artifact: .artifacts/tests/gradeboard-31a5472a-20260517-031740.txt + docs/audits/PARITY_G_GRADEBOARD_BASELINE_2026-05-17.{md,json}

Composite score: 5.00 / 5.00 (target 4.51; prior baseline 4.01).

AxisScoreNotes
tool_surface5.004/4 source files present; 4/4 registered in toolRegistry.
schema_layering5.00composeProfileSections=true, EntityProfileLayer type=true
provenance5.00terminate=true, cycles=true, truncate=true
graph5.00bound=true, cycles=true, fanout=true
search_recall5.00recall test=true, merge logic=true
composer5.00package present=true, composeLivingIntelPage exported=true
role_presets5.0013 role presets wired
side_dock_composers5.0012/12 composers present
eval_suite5.008 test() cases authored
side_dock_ui5.00side_dock=true, drill_breadcrumb=true, next_steps_strip=true

Caveat (from gradeboard doc): structural readiness only — does the code exist, are the tools wired, are the composers in place. Live drill-through under a real LLM-driven agent run captures semantic recall + UX feel + ambient intelligence freshness (the 4.01 baseline measured that). Runtime 4.51+ lands once entity overlay docs are seeded for Tenant Zero, Phase 5 §3 CF Pages wire-up (BLK-01) lands, and the Playwright suite runs against the live workspace (currently mocked).

V-702 acceptance evaluation

TargetActualVerdict
≥4.51 composite5.00PASS (structural)

V-703 — ORG BLACKBERRY Watermelon-Substituted Test

Runner: pnpm exec tsx scripts/audit/v703-blackberry-probe.ts (authored this run) Query: "ORG BLACKBERRY arrivals from HOMEGROWN ORGANIC FARMS this past week" Artifacts:

  • .artifacts/lineage/blackberry-4ce4353a-2026-05-17T03-20-42-652Z.json — agent response capture
  • .artifacts/lineage/v703-real-corpus-validation.json — Neon-validated real corpus

Live agent response (POST /agent/command)

FieldValue
HTTP status200
Tool calls made1
Tool invokedget_commodity_profile(commodity=blackberry, tenantId=nathel)
Tool duration301ms
Tool succeededtrue
Profile returnedBlackberry (Rubus fruticosus) v2.1.1, profile ID 84822208-5abd-4647-929b-e55e764595b6, confidence 0.93
Anonymization activeyes — HOMEGROWN ORGANIC FARMS → [COMPANY_1]; profile UUID → [ACCOUNT_2]
fact_citations in response0
claim_anchor in response0
event_id references0

The agent’s final message text was contextually correct (“I only have the blackberry commodity profile, not the actual arrival records … pull the actual receiving records … so we can report exact load IDs, case counts, lot IDs, and receipt timestamps”) — it correctly recognized the gap, but did NOT recover by issuing follow-up tool calls.

Real corpus validation (direct Neon query)

Query:

SELECT id, type, timestamp FROM events
WHERE tenant_id = 'nathel'
  AND data->>'service' IS DISTINCT FROM 'staging-smoke'
  AND timestamp >= '2026-05-09'::timestamptz
  AND (data::text ILIKE '%blackberry%' OR data::text ILIKE '%HOMEGROWN ORGANIC%')
ORDER BY timestamp DESC;

Result: 13 distinct real events available (well above the ≥3 target):

Event typeCountNotable event_ids
signal.pp_arrival_logged (ORG BLACKBERRY / HOMEGROWN)255a94b35-6d78-44ab-8cc7-ed6b92b143df (2026-05-13, 48 cs), 7e0917c5-964d-419e-8b2b-7c3de203c65f (2026-05-12, 48 cs)
signal.pp_arrival_logged (BLACKBERRY 12 OZ / FAMILY TREE)19b88eecb-c43b-4d22-8c56-97d80675f827 (2026-05-09, 672 cs)
ingest.pdf_extracted225d6d716..., fd984dc2... (PP RP581 raw extractions for load 00267096)
resolver.candidate_created204b7d5fb..., 64732928... (org-blackberry entity)
resolver.pending_review2502212ab..., 390c498d...
resolver.arrival_reconciled11273a108... (HOMEGROWN ORGANIC FARMS / ORG BLACKBERRY / 48 cs)
inbound.load_conflict_pending1fb2a6a07... (CONFLICTING quantity_cases 60 vs 48 for ORG BLACKBERRY HOMEGROWN load 00267096)
lot.pre_arrival_synthesized12abdc23c... (lot 91325068 ORGBLAC TLC-20260513-af5tjqbj)
inbound.load_expected1118e6b50... (load 00267096 HOMEGROWN ORGANIC FARMS ORGANIC)
work.thread_created12087a2a6... (qc_case thread for load 00267096 HOMEGROWN)
health.daily_reconciliation1d4ce44c5... (named HOMEGROWN ORGANIC FARMS load 00267096 with signal.pp_arrival_logged=1)
TOTAL13

V-703 acceptance evaluation

TargetActualVerdict
Agent cites ≥3 real event_ids that exist in nathel events table0 cited / 13 availableVERIFYING-PARTIAL_real_corpus_exists_but_agent_did_not_retrieve_it

V-703 root cause: agent orchestration parity gap

The agent demonstrates correct domain knowledge (recognized the gap, asked a sensible follow-up) and correct anonymization. But its single-tool plan for an OPERATIONAL ARRIVALS query is a real gap:

Expected tool plan for "X arrivals from Y this past week":

  1. get_events(tenantId=nathel, types=['signal.pp_arrival_logged','inbound.load_expected','ingest.pdf_extracted'], since=2026-05-09, filter_text=BLACKBERRY+HOMEGROWN) → returns 5+ real events.
  2. lookup_inventory(commodity=blackberry, tenantId=nathel) → returns active lots.
  3. walk_provenance(docId, claimAnchor, tenantId=nathel) on each cited event to build lineage.
  4. Then synthesize message citing event_ids with timestamps + case counts + load IDs.

Actual tool plan: get_commodity_profile(commodity=blackberry, tenantId=nathel) and stop.

This is the “Living-Wiki commodity drill-through (the agentic ERP experience)” vision gap (MEMORY.md): the primitives all exist; the audit purpose is to tune + wire + time correctly. V-703 has now produced the canonical proof artifact for this gap.

Per-tool eval breakdown (V-704)

Aggregating across V-701..V-703:

ToolV-701 statusV-703 invoked?V-703 surfaced gap?
get_commodity_profilepass 627msYES (the only call)No (works as designed; returned the profile correctly)
query_knowledgepass 584msNOPlanner not wired — should have hit operational events
get_eventspass 680msNOPlanner not wired — would have returned 5+ real ORG BLACKBERRY rows
lookup_inventorypass 465msNOPlanner not wired — would have returned active blackberry lots
get_data_freshnesspass 464ms (overall=stale)NOSurfaced stale data finding in V-701
get_workflowpass 467msNOn/a for this query class
trace_lotpass 1447msNOCould have traced lot 91325068 (TLC-20260513-af5tjqbj)
get_briefpass 955msNOn/a — agent should compose own brief
get_market_brieffail 21801ms statement timeoutNOReal perf bug — separate issue
get_actor_contextfail 403 cross-tenantNOV-113 known-flaky
walk_provenance (G-tool)not in CFA probe setNOG-02 surfaced in gradeboard — structurally ready, not exercised live
get_doc_graph (G-tool)not in CFA probe setNOG-03 surfaced in gradeboard — structurally ready, not exercised live
search_entity_profiles (G-tool)not in CFA probe setNOG-04 surfaced in gradeboard — structurally ready, not exercised live
get_entity_profile (G-tool)not in CFA probe setNOG-01 surfaced in gradeboard — structurally ready, not exercised live
get_intel_inbox_digestnot in CFA probe setNOn/a for this query

Known followups / proposed B-tasks

  1. B-followup (HIGH): get_market_brief statement timeout. 21801ms exceeds default statement_timeout. Investigate query plan — likely missing index or N+1 across tenant_metrics.
  2. B-followup (HIGH): Agent planner needs an “operational arrivals query” route that fans out to get_events + lookup_inventory + walk_provenance instead of stopping at get_commodity_profile. This is the V-703 canonical gap.
  3. B-followup (MED): CFA probe count drift — spec says 31, codebase has 20. Reconcile by either (a) authoring the missing 11 probes (scenarios.ts extension), or (b) amending spec target to ≥18/20.
  4. B-followup (MED): CFA get_actor_context probe persona/tenant mismatch — Josh Garcia (admin@nathel) probing for tenant=fin-central produces a 403. Probe args should bind to persona tenant.
  5. B-followup (LOW): Deploy metadata reports staging as degraded while all health probes pass — metadata source needs cleanup.
  6. V-704 deferred to follow-up session: the live runtime 4.01 baseline (vs 5.00 structural) gap will narrow as entity overlay docs are seeded for Tenant Zero, BLK-01 (Phase 5 §3 CF Pages wire-up) lands, and the Playwright suite runs against the live workspace (currently mocked per gradeboard CAVEAT).

Tracker proof artifacts

V-taskProof typeArtifactState
V-701test_output.artifacts/tests/cfa-runner-5b3c18c2-20260517-031449.txt + audit/cfa/findings.jsonVERIFYING-PARTIAL
V-702test_output.artifacts/tests/gradeboard-31a5472a-20260517-031740.txt + docs/audits/PARITY_G_GRADEBOARD_BASELINE_2026-05-17.{md,json}VERIFYING (target met)
V-703lineage_trace + curl_response.artifacts/lineage/blackberry-4ce4353a-2026-05-17T03-20-42-652Z.json + .artifacts/lineage/v703-real-corpus-validation.jsonVERIFYING-PARTIAL
V-704code_committhis docVERIFYING

Artifact branch: claude/parity-artifacts-2026-05-17-eval-subagent (pushed to origin in same run).