Spaces:
Running
Running
fix(console): mesh real mesh_reach organs + honest empty-state ledger DAG
Browse files- pages/console.html +11 -5
pages/console.html
CHANGED
|
@@ -5363,13 +5363,15 @@ window.warboard_init=warboard_init; window.warboard_all=warboard_all;
|
|
| 5363 |
+'<div class="brain-note" id="me-note">Edge label = wire status. <span style="color:'+TEAL+'">teal=LIVE</span>, <span style="color:'+GOLD+'">gold=LIVE_IN_PROCESS</span>. '+chip('F-G4 reachability','CI-GREEN')+' Cross-Space broker NOT wired (honest).</div></div>'+honest();
|
| 5364 |
try{
|
| 5365 |
var s=await gj('/api/a11oy/v1/observability/summary'); var mesh=await gj('/api/a11oy/v1/mesh/state');
|
| 5366 |
-
var
|
| 5367 |
-
|
|
|
|
| 5368 |
if(!window.cytoscape){ H('me-note','Cytoscape unavailable'); return; }
|
| 5369 |
var els=[]; var coreId='core';
|
| 5370 |
-
|
| 5371 |
-
|
| 5372 |
-
|
|
|
|
| 5373 |
Object.keys(wires).forEach(function(wk){ var w=wires[wk]; els.push({data:{id:'wn_'+wk,label:wk,st:w.status,wire:true}}); els.push({data:{id:'we_'+wk,source:coreId,target:'wn_'+wk,st:w.status}}); });
|
| 5374 |
var cy=cytoscape({container:E('me-cy'),elements:els,layout:{name:'cose',animate:true,idealEdgeLength:90,nodeRepulsion:8000},
|
| 5375 |
style:[
|
|
@@ -6917,6 +6919,10 @@ window.warboard_init=warboard_init; window.warboard_all=warboard_all;
|
|
| 6917 |
window.setHTML('vl-'+vk+'-verify','<span class="badge '+(ok?'b-live':'b-err')+'">'+(ok?'VERIFIED':'BROKEN')+'</span>');
|
| 6918 |
window.setTxt('vl-'+vk+'-head', String(d.head||'\u2014').slice(0,14)+'\u2026');
|
| 6919 |
var recs=d.receipts||[];
|
|
|
|
|
|
|
|
|
|
|
|
|
| 6920 |
if(recs.length){
|
| 6921 |
// 3D hash-chain DAG (reuse global dag3d): chain edges prev->cur
|
| 6922 |
var nodes=recs.slice().reverse().map(function(r,i){return {id:'r'+(r.seq!=null?r.seq:i), name:'#'+(r.seq!=null?r.seq:i), val:4, color:(i===recs.length-1?FG:TL)};});
|
|
|
|
| 5363 |
+'<div class="brain-note" id="me-note">Edge label = wire status. <span style="color:'+TEAL+'">teal=LIVE</span>, <span style="color:'+GOLD+'">gold=LIVE_IN_PROCESS</span>. '+chip('F-G4 reachability','CI-GREEN')+' Cross-Space broker NOT wired (honest).</div></div>'+honest();
|
| 5364 |
try{
|
| 5365 |
var s=await gj('/api/a11oy/v1/observability/summary'); var mesh=await gj('/api/a11oy/v1/mesh/state');
|
| 5366 |
+
var reach=(s.mesh_reach||[]); var wires=mesh.wires||{};
|
| 5367 |
+
var organsTotal=((s.melt||{}).metrics||{}).organs_total; var organsReach=((s.melt||{}).metrics||{}).organs_reachable;
|
| 5368 |
+
T('me-n',(organsReach!=null&&organsTotal!=null)?(organsReach+'/'+organsTotal):String(reach.length||'\u2014')); T('me-live',Object.keys(wires).filter(function(k){return /LIVE/.test(wires[k].status);}).length); T('me-doc',mesh.doctrine||'\u2014');
|
| 5369 |
if(!window.cytoscape){ H('me-note','Cytoscape unavailable'); return; }
|
| 5370 |
var els=[]; var coreId='core';
|
| 5371 |
+
// core hub node (always present)
|
| 5372 |
+
els.push({data:{id:coreId,label:'a11oy core',st:'live'}});
|
| 5373 |
+
// organ nodes built from the REAL live mesh-reach probe (status straight from the probe)
|
| 5374 |
+
reach.forEach(function(o){ var oid='org_'+(o.organ||''); if(!o.organ||o.organ===coreId) return; els.push({data:{id:oid,label:o.organ,st:o.status}}); els.push({data:{id:'e_'+oid,source:coreId,target:oid,st:(o.status==='ok'?'LIVE':o.status)}}); });
|
| 5375 |
Object.keys(wires).forEach(function(wk){ var w=wires[wk]; els.push({data:{id:'wn_'+wk,label:wk,st:w.status,wire:true}}); els.push({data:{id:'we_'+wk,source:coreId,target:'wn_'+wk,st:w.status}}); });
|
| 5376 |
var cy=cytoscape({container:E('me-cy'),elements:els,layout:{name:'cose',animate:true,idealEdgeLength:90,nodeRepulsion:8000},
|
| 5377 |
style:[
|
|
|
|
| 6919 |
window.setHTML('vl-'+vk+'-verify','<span class="badge '+(ok?'b-live':'b-err')+'">'+(ok?'VERIFIED':'BROKEN')+'</span>');
|
| 6920 |
window.setTxt('vl-'+vk+'-head', String(d.head||'\u2014').slice(0,14)+'\u2026');
|
| 6921 |
var recs=d.receipts||[];
|
| 6922 |
+
if(!recs.length){
|
| 6923 |
+
// honest empty-state: no receipts this runtime yet (not a render error)
|
| 6924 |
+
window.setHTML('vl-'+vk+'-dag','<div class="row mono dim" style="display:flex;align-items:center;justify-content:center;height:100%;text-align:center;padding:1rem">No receipts emitted yet this runtime \u2014 the hash-chain is empty (depth 0). Run a governed decision on the Decision tab to populate the signed chain; the 3D DAG appears here once the first receipt is sealed.</div>');
|
| 6925 |
+
}
|
| 6926 |
if(recs.length){
|
| 6927 |
// 3D hash-chain DAG (reuse global dag3d): chain edges prev->cur
|
| 6928 |
var nodes=recs.slice().reverse().map(function(r,i){return {id:'r'+(r.seq!=null?r.seq:i), name:'#'+(r.seq!=null?r.seq:i), val:4, color:(i===recs.length-1?FG:TL)};});
|