workers page and the build queue (the coordinator, 9 October 2026 09:5x UK): a rig card reads "agent not reporting since <time>" until a report arrives through the intake; the queue names both owners on build-2 (the site lane and the adversary lane, neither ending the other's pid), the TV-02 lane on build-5, and main's 15-minute rule (an idle box unclaimed by its owner is marked open to any lane; 30 minutes idle is a red on the board).
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
parent
ef35a0d1bb
commit
48fd4e048c
2 changed files with 9 additions and 4 deletions
|
|
@ -13,16 +13,19 @@ build-1:/srv/queue/build-queue.md (the reader reads that one; this file is its s
|
|||
- An entry carries its owner lane, its box, its pid-file path and its clock (UK). A box with no live pid file from its queue and
|
||||
a load under 1.0 for a 30-minute read is a fault, reported by the reader to the coordinator (/srv/queue/faults.log).
|
||||
- A lane that finishes an entry replaces it with the next or hands the box back here with a line; an empty box is the fault.
|
||||
- Main's rule (9 October 2026, 09:5x UK): an owner starts its matrix job on its box under /srv/queue/pids within 15 minutes of a read that
|
||||
found the box idle, or the reader marks the box unclaimed (open to any lane, written in status.json and faults.log); a box idle for
|
||||
30 minutes is a red against its owner on the steward's board. A shared box names every owner and none ends another's pid.
|
||||
|
||||
## Owners (one lane per box)
|
||||
|
||||
| box | threads | owner lane | standing use |
|
||||
|---|---|---|---|
|
||||
| build-1 | 96 | build-server lane | cuts and kits, the hands (observer-node, node1), the capacity fuzz slices, the workers page, the queue reader |
|
||||
| build-2 | 96 | site lane | the site gate (Playwright), the scene-parity suites; spare slots for the node lane's suites |
|
||||
| build-2 | 96 | site lane and the adversary lane (shared; neither ends the other's pid) | the site gate (Playwright), the scene-parity suites; X5's dram design beside them |
|
||||
| build-3 | 32 | node lane | the long consensus fuzz and property suites (kaspa-consensus, kaspa-consensus-core) |
|
||||
| build-4 | 96 | adversary lane | the chip model (OpenROAD, kepler-formal): the 20 to 25 percent floorplan for the converged SPEF row |
|
||||
| build-5 | 32 vCPU | research lane | TV-02's two independent supply-replay implementations, CPU only |
|
||||
| build-5 | 32 vCPU | TV-02 lane (or released to the queue by its line) | TV-02's two independent supply-replay implementations, CPU only |
|
||||
| build-6 | 32 vCPU | HEAL lane | the long p2p and exec property suites (kaspa-p2p-flows, igneum-exec) |
|
||||
| build-7 | 96 | node lane | the 2.0.3 flows items: their suites and known-failed tests; the heal-on harness |
|
||||
| build-8 | 96 | fleet lane | 2.0.3 kit canaries the moment a chain moves; the heal-off harness; the dn4 roll node |
|
||||
|
|
|
|||
|
|
@ -332,8 +332,10 @@ function renderCrew() {
|
|||
for (const pc of pcs) {
|
||||
const r = pc.running;
|
||||
const pcAge = pc.report_age_s === undefined || pc.report_age_s === null ? pcsAge : pc.report_age_s;
|
||||
const pcAgeText = pcAge === null ? 'report age unknown' : `report ${fmtDurShort(pcAge)} old${pcAge > 600 ? ', STALE' : ''}${pc.source === 'intake' ? ', from the PC' : ''}`;
|
||||
cards.push(`<div class="w"><div class="top"><div><div class="card">${esc(pc.name)}</div><div class="meta">${esc(pc.machine || pc.id)} · ${esc(pc.role)} · <span ${pcAge !== null && pcAge > 600 ? 'style="color:var(--warn)"' : ''}>${esc(pcAgeText)}</span></div></div>${pill(r ? 'running' : pc.queue.length ? 'queued' : 'idle', r ? 'running' : pc.queue.length ? 'queued' : '')}</div><div class="doing">${pcReportLine(pc) ? pcReportLine(pc) + '<br>' : ''}${r ? `${esc(r.kind)} ${esc(r.job)}${r.title ? '<br>' + esc(r.title) : ''}${r.stage ? `<br><span class="pill">stage ${esc(r.stage)}</span>` : ''}` : pc.queue.length ? `Next: ${esc(pc.queue[0].kind)} ${esc(pc.queue[0].job)}${pc.queue[0].title ? ', ' + esc(pc.queue[0].title) : ''}` : esc(pc.note || 'idle on jobs; the relay polls every 10 min')}</div><div class="foot"><span>${pc.recent.length} reports kept</span><span>${pc.last_report_at ? 'last report ' + esc(ago(pc.last_report_at)) : 'no report in 7 days'}</span></div></div>`);
|
||||
// a rig card reads "agent not reporting since <time>" until a report arrives through the intake (the coordinator, 9 October 2026)
|
||||
const pcLast = pc.collected_at || (D.pcs && D.pcs.collected_at) || null;
|
||||
const pcAgeText = pc.source === 'intake' ? (pcAge === null ? 'report age unknown' : `report ${fmtDurShort(pcAge)} old${pcAge > 600 ? ', STALE' : ''}, from the rig`) : `agent not reporting since ${pcLast ? esc(ukTime(pcLast)) : 'an unknown time'}`;
|
||||
cards.push(`<div class="w"><div class="top"><div><div class="card">${esc(pc.name)}</div><div class="meta">${esc(pc.machine || pc.id)} · ${esc(pc.role)} · <span ${(pc.source !== 'intake') || (pcAge !== null && pcAge > 600) ? 'style="color:var(--warn)"' : ''}>${pcAgeText}</span></div></div>${pill(r ? 'running' : pc.queue.length ? 'queued' : 'idle', r ? 'running' : pc.queue.length ? 'queued' : '')}</div><div class="doing">${pcReportLine(pc) ? pcReportLine(pc) + '<br>' : ''}${r ? `${esc(r.kind)} ${esc(r.job)}${r.title ? '<br>' + esc(r.title) : ''}${r.stage ? `<br><span class="pill">stage ${esc(r.stage)}</span>` : ''}` : pc.queue.length ? `Next: ${esc(pc.queue[0].kind)} ${esc(pc.queue[0].job)}${pc.queue[0].title ? ', ' + esc(pc.queue[0].title) : ''}` : esc(pc.note || 'idle on jobs; the relay polls every 10 min')}</div><div class="foot"><span>${pc.recent.length} reports kept</span><span>${pc.last_report_at ? 'last report ' + esc(ago(pc.last_report_at)) : 'no report in 7 days'}</span></div></div>`);
|
||||
}
|
||||
if (!pcs.length) cards.push(`<div class="w"><div class="top"><div><div class="card">rig 1 and rig 2</div><div class="meta">relay jobs</div></div>${pill('no data', 'error')}</div><div class="doing">${esc(D.sources && D.sources.pcs && D.sources.pcs.error || 'the Mac pusher reads the relay intake; nothing has arrived')}</div></div>`);
|
||||
$('crew').innerHTML = cards.join('');
|
||||
|
|
|
|||
Loading…
Reference in a new issue