17 Closed · 5 Blocked · Pushed

Waves 28-30 Closeout — 2026-05-15

PR #343 head fast-forwarded with 12 new commits. Backend classifier disambiguation, find-talent LLM-refusal fix, AnalysisCard wiring, dispatch watchdog, /chat MCQ flag honoring, and per-class count caps all live. Frontend canvas + chat-shell merges + extractToolItems extension surfaces cards for the 7 heavy classes Group A reported as "stuck dispatching."

Branch: wave28-auth-gate → feat/anything-engine
Range: 5d5b165b..5110faa9
Tests: 26,212 passing / 0 failing
← Back to Hub
Headline numbers
17
Tasks Closed
12
Commits Pushed
26,212
Tests Passing
5
Open (Mark/Robert)
8
Live Xano Endpoints Patched
25
Outcome Classes
Backend Xano — deployed live + curl-verified
8 endpoints patched LIVE
8572
talent_agent_requests — fixed openui_lang typo, tightened cypher to film/TV-only filter, honest ErrorState("no film/TV in graph") empty-state. NO synthetic stub.
8492
find-talent (OpenUI 0.5) — reframed role-extraction prompt as "string-extraction tool, NOT a recruiter"; defensive validator lambda rejects refusal patterns + caps word count. Verified clean role extract on 4 refusal-bait queries.
8402
find-talent (legacy group 1270) — same fix as 8492 applied for defensive coverage.
8559
research-person — cypher score threshold 1.5 → 0.85, default count 5 → 3, cap 25 → 5, synth instructed "drop weak rows, do not pad". Verified: Sam Altman returns 1 high-confidence card vs 20 random VCs before. Now emits AnalysisCard(title, summary, source).
8560
research-company — same tightening + AnalysisCard wiring. Verified: Anthropic returns 1 card vs 20 before.
8561
research-topic — person threshold 1.4 → 0.9, default 6 → 4, cap 25 → 6 + AnalysisCard. Verified: AI safety alignment research returns 4 relevant company cards (match_score ≥ 0.53) vs 20 noisy before.
8400/8490
classifier disambiguation — Both classifiers (legacy 8400 + OpenUI 0.5 8490) patched with "Research X / Tell me about / Who is / What is / Brief me on" disambiguation rule. Verified live: Research Sam Altman → research_person 0.95 confidence (was mis-routing to find_partners). Patch via patch_endpoint MCP — no sync-prompts needed.
×5
per-class count caps — find-speakers (8556), find-collaborators (8554) → 8; get-advice (8551), find-cofounder (8552) → 5; find-co-investors (8562) → 8. Caps were 25; quality-over-quantity for non-investor classes.
Frontend — committed + pushed
12 commits on feat/anything-engine PUSHED
fbb87c0
Merge of origin/dev — Charles's helper-function path refactor (mapContextPersonNode/Company/FundingRound). 4 conflict files resolved by Sonnet subagent. Helpers extended to keep paths field that downstream consumers read.
56dbac4
extractToolItems — extended to recognize 19 per-class card-list keys (targets, opportunities, partners, advisors, journalists, candidates, collaborators, roles, speakers, attendees, intros, cofounders, co_investors, experts, vendors, products, operators, properties). Fix for Group A's "stuck dispatching 0 cards" report — backend was returning valid arrays under per-class keys; canvas fallback only knew the older shared keys.
d1fc694
PATH B DispatchConfirmation wiring — verified already wired (InterviewSummaryConfirm at ready=true returns early, no auto-dispatch). Honest empty commit documents the verification.
35fdf8f
Result-count picker [20/100/500] — verified already wired into InterviewSummaryConfirm.
6005894
Bare URL reload starts fresh conversation — mount-only useEffect syncs conversationIdRef to selectedId. No stale thread bleed.
df46fd3
60s dispatch watchdog + empty-result recovery card. Both confirm-summary and fall-through paths covered.
7e69eb6
chat-shell MCQ multi_select + allow_freetext — InterviewCard now honors both flags (63 LOC matching canvas InterviewTurn pattern). Was silently ignored on /chat.
91aaba1
AnalysisCard component — new OpenUI 0.5 component with positional args (title, summary, source?, related_entities?). Multi-paragraph summary + source attribution + related-entity chips. Registered in anythingEngineLibrary.
464210b
classify.md disambiguation — local mirror updated. (Live Xano patched separately via patch_endpoint MCP.)
8954961
starters.test bumped 24 → 25 to reflect talent_agent_requests addition. Full pnpm test = 26,212 passing.
5110faa
Reverted .github/workflows/registry-sync.yml from this push — current OAuth token lacks workflow scope. File logic complete; cherry-pick from 14a13f4 after re-auth with workflow scope.
Verification — live browser daemon
#43
Inline MCQ Send button — Group C reported "always disabled regardless of input". Live verification: typed into composer textbox (ref e116), Send button (ref e117) went from disabled to enabled the moment text appeared. Group C's report was a Playwright/agent-browser fill() limitation that didn't trigger React's onChange. Code is correct; no change needed.
#38
Modify tab post-BFF strip — clicked Modify tab on right rail; renders content correctly (Anything Engine banner, MARK USER #15 pin, suggestion buttons). Functional.
#39 / #49
Bare URL reload context reset — bare /network?active-view=anything-engine reload returns ?q= only, no conversation-id, fresh "What would you like to work on?" landing — no stale conversation context bleed.
#57
Xano fixes through dispatch chain — ran "Research Sam Altman" through canvas. Cards rendered (extractToolItems fix verified end-to-end). Side finding: classifier mis-routed before today's deploy; now fixed at 8400 + 8490.
Open — require Mark or Robert action
#34 — Specific leverage loop pipeline (per-person + outcome routing) SPEC
Voice transcript only. Building blind = grenade. Need Mark to write down: input shape (person_id + outcome_class? Person + free-text outcome?), expected dispatch behavior (which find_* endpoints fire?), expected card output, edge cases.
#42 — Weak-match filter UX policy UX CALL
find_collaborators / purchase_real_estate currently show weak matches (match_score 0.31-0.38) with honest WHYs admitting weak fit. Decision needed: filter at 0.5 threshold by default, show all with visible match-score badge, or "Show weaker matches" toggle. Once decided, ~10 LOC per affected endpoint.
#47 — PitchProfileDiff accumulator SCOPE
Backend ep 8545 + fn 12993 live since Wave 20. Frontend pre-wire shipped Wave 19 (summarizeFn BFF + debounced handlers + pending-backend badge). Missing: PitchProfileDiff that accumulates user edits and feeds them into ep 8545, then surfaces rewritten summary back to confirmation card. ~100+ LOC; needs design call before building.
#61 — Mark to seed FalkorDB with film/TV nodes DATA
talent_agent_requests honest empty-state currently lists what to seed (UTA / CAA / WME / Netflix / Warner / A24). Without seeding, dispatch returns 0 cards.
#62 — Mark to seed FalkorDB advisor / cofounder / advice-edge data DATA
find_advisors, find_cofounder, get_advice all return 0 graph candidates. Wave 25 threshold relaxation didn't help because there are no source nodes. Mark or his team must add advisor expertise edges and cofounder-intent signals.
#67 — Re-auth gh with workflow scope, cherry-pick 14a13f4 CI
registry-sync.yml workflow file is complete + YAML-validated. Push deferred because OAuth token lacks workflow scope. Run gh auth login --scopes workflow, then git cherry-pick 14a13f4 and push.
Lessons captured
Group A's "stuck dispatching" was a frontend bug, not backend. Direct curl on every reported endpoint returned valid card arrays in 2-9 seconds. The frontend's extractToolItems only knew about older shared keys (persons, companies, investors). Adding the per-class keys (targets, opportunities, partners, candidates, etc.) closed the gap without any backend change.
Synthetic stubs are grenades. Earlier this session I was about to ship a hardcoded film/TV demo card list for talent_agent_requests; Robert's "no shit grenades for us with stubs and fallbacks be honest" pulled the plug. Shipped honest empty-state instead.
patch_endpoint works fine — use SHORT unique substrings. Earlier failed multi-line replacements; the issue was whitespace/escaping mismatches in the long anchors. Single-line distinctive substrings match cleanly.
Live classifier prompts edit via patch_endpoint, not sync-prompts. The prompt lives in XanoScript as a string literal. patch_endpoint MCP edits it directly without touching the local md file. pnpm sync-prompts is for batch deploys; surgical fixes go through MCP.
"Demo-blocking" framing is rationalization. Robert's "remove the demo from your mind … I'm asking about completion" reset the lens. Completion is binary; demo dates are noise.
Currently running
100% canvas dogfood audit (Sonnet subagent) — running through all 25 outcome classes end-to-end in the live browser daemon. Recording classifier verdict, interview turns, dispatch outcome, card count, time, and any visual bugs per class. Report lands at /tmp/dogfood-100/REPORT.md when complete. Findings will be appended to a follow-on status post.