Phase 19 wiring + Path 1/2 work + chain integrity fixes
Backend:
- crates/vectord/src/playbook_memory.rs (new): Phase 19 in-memory boost
store with seed/rebuild/snapshot, plus temporal decay (e^-age/30 per
playbook), persist_to_sql endpoint backing successful_playbooks_live,
and discover_patterns endpoint for meta-index pattern aggregation
(recurring certs/skills/archetype/reliability across similar past fills).
- DEFAULT_TOP_K_PLAYBOOKS bumped 5 → 25; old default silently missed
most boosts when memory had > 25 entries.
- service.rs: new routes /vectors/playbook_memory/{seed,rebuild,stats,
persist_sql,patterns}.
Bun staffing co-pilot (mcp-server/):
- /search, /match, /verify, /proof, /simulation/run, MCP tools all
forward use_playbook_memory:true and playbook_memory_k:25 to the
hybrid endpoint. Boost was previously dark across the entire app.
- /log no longer POSTs to /ingest/file — that endpoint REPLACES the
dataset's object list, so single-row CSV writes were wiping all prior
rows in successful_playbooks (sp_rows went 33→1 in one /log call).
/log now seeds playbook_memory with canonical short text and calls
/persist_sql to keep successful_playbooks_live in sync.
- /simulation/run cumulative end-of-week CSV write removed for the same
reason. Per-day per-contract /seed (added in this session) is the
accumulating feedback path now.
- search.html addWorkerInsight renders a green "Endorsed · N playbooks"
chip with playbook citations when boost > 0.
Internal Dioxus UI (crates/ui/):
- Dashboard phase list rewritten through Phase 19 (was stuck at "Phase
16: File Watcher" / "Phase 17: DB Connector" — both wrong).
- Removed fabricated "27ms" stat label.
- Ask tab examples + SQL default replaced with real staffing prompts
against candidates/clients/job_orders (was referencing nonexistent
employees/products/events).
- New Playbook tab exposes /vectors/playbook_memory/{stats,rebuild} and
side-by-side hybrid search (boost OFF vs ON) with citations.
Tests (tests/multi-agent/):
- run_e2e_rated.ts: parallel two-agent (mistral + qwen2.5) build phase
+ verifier rating (geo, auth, persist, boost, speed → /10).
- network_proving.ts: continuous build → verify → repeat with
staffing-recruiter profile hot-swap; geo-discrimination check.
- chain_of_custody.ts: single recruiter operation traced through every
layer (Bun /search, direct /vectors/hybrid parity, /log, SQL,
playbook_memory growth, profile activation, post-op boost lift).
This commit is contained in:
+14
-1
@@ -384,11 +384,13 @@ function addContractInsight(parent,c,isUrgent){
|
||||
if(isUrgent&&i===0)label='FIRST CHOICE — highest match score, call first';
|
||||
else if(isUrgent&&i>0&&i<c.headcount)label='';
|
||||
else if(isUrgent&&i>=c.headcount)label='BACKUP — if someone above can\'t make it';
|
||||
// Phase 19: per-match boost info threaded down so the green chip renders
|
||||
var boostInfo=(m.playbook_boost>0)?{boost:m.playbook_boost,citations:m.playbook_citations||[]}:null;
|
||||
addWorkerInsight(cd,w.nm,
|
||||
[w.role,w.loc].filter(Boolean).join(' · '),
|
||||
label||buildWhyText(w,c),i,
|
||||
isUrgent&&i===0?'#f85149':isUrgent&&i>=c.headcount?'#484f58':null,
|
||||
w);
|
||||
w,boostInfo);
|
||||
});
|
||||
var remaining=c.matches.length-showCount;
|
||||
if(remaining>0){
|
||||
@@ -570,12 +572,23 @@ function addWorkerInsight(parent,name,detail,why,idx,highlight){
|
||||
if(highlight)w.style.borderLeft='3px solid '+highlight;
|
||||
w.style.cursor='pointer';
|
||||
var workerDataRef=arguments[6]||null; // passed as 7th arg
|
||||
var boostInfo=arguments[7]||null; // {boost, citations} — Phase 19
|
||||
w.onclick=function(){if(workerDataRef)showProfile(workerDataRef)};
|
||||
var av=document.createElement('div');av.className='av';av.style.background=AC[(idx||0)%AC.length];
|
||||
av.textContent=(name||'?').split(' ').map(function(n){return(n[0]||'').toUpperCase()}).join('').substring(0,2);
|
||||
w.appendChild(av);
|
||||
var info=document.createElement('div');info.className='info';
|
||||
var nm=document.createElement('div');nm.className='nm';nm.textContent=name;
|
||||
// Phase 19: when a past playbook endorsed this worker, show a green chip
|
||||
// next to the name. Hover reveals the citation IDs.
|
||||
if(boostInfo && boostInfo.boost > 0){
|
||||
var chip=document.createElement('span');
|
||||
chip.style.cssText='display:inline-block;margin-left:8px;padding:2px 7px;border-radius:9px;font-size:10px;font-weight:600;background:#0d2818;border:1px solid #2ea043;color:#3fb950;vertical-align:middle';
|
||||
var n=(boostInfo.citations && boostInfo.citations.length) || 0;
|
||||
chip.textContent='Endorsed · '+n+' playbook'+(n!==1?'s':'');
|
||||
chip.title='Boosted by past playbooks: '+(boostInfo.citations||[]).join(', ');
|
||||
nm.appendChild(chip);
|
||||
}
|
||||
var dt=document.createElement('div');dt.className='detail';dt.textContent=detail;
|
||||
info.appendChild(nm);info.appendChild(dt);
|
||||
if(why){var wh=document.createElement('div');wh.className='why';wh.textContent=why;info.appendChild(wh)}
|
||||
|
||||
Reference in New Issue
Block a user