feat(web): reshape workshop from 'tune a harness' to 'design a domain node'
The board is now a Claude-powered ZeroClaw agent with expert skills that teams talk to directly (its own dashboard / Telegram / voice). The frontend was built on the older sensor+harness model; this repoints it. - State/DTO: AddLayers remapped to the 5 design layers (Domain/Skills/Policies/ Harness/Loops); added session.domain (+ mirrored through TeamSnapshot, sync, and the SQLite store with a guarded migration); dropped Harness/Provider/RunMode; persist v2 migrate resets stale state. - Removed the harness/sim/failover machinery (HarnessProviderSelect, HarnessTuner, HarnessTomlPreview, ResiliencePanel, TriggerButtons, harness.ts, useSerial, LiveFeed/serial classifier) and every sim-vs-live branch. - Onboarding: EnvSetup rebuilt into 'Meet your node' — Open-your-node hero (new reusable OpenYourNode CTA), say-hi-to-your-agent, a free-text DomainPicker (domain drives L1-L5), Telegram/voice pointers, and the open->locked lockdown policy step. Domain is required to proceed. - Modules repointed: M1 Domain & events (L1), M2 Skills & Policies (L2/L3, skills reference + actuation-gate framing), M3 Harness (reasoning+tiering) & Loops (cadence) (L4/L5). BuildFlash reframed as a guided 'ask your node to build X' that hands off to the node dashboard. - Judge rubric -> Domain fit/Skills/Policies/Harness/Loops; Lecture + Landing re-storied to the Claude-node + talk-to-your-node narrative. Verified: web tsc + 181 tests, api tsc + 58 tests, dead-ref sweep clean. Co-Authored-By: Claude Opus 4.8 <[email protected]>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
3be44ec215
commit
6d94833bb9
@@ -14,7 +14,7 @@ function renderLanding() {
|
||||
describe('Landing', () => {
|
||||
it('renders the workshop headline and date', () => {
|
||||
renderLanding()
|
||||
expect(screen.getByRole('heading', { level: 1 })).toHaveTextContent(/on-device agentic systems/i)
|
||||
expect(screen.getByRole('heading', { level: 1 })).toHaveTextContent(/design a domain node/i)
|
||||
expect(screen.getByText(/FabLab Torino/i)).toBeInTheDocument()
|
||||
expect(screen.getByText(/July 27, 2026/i)).toBeInTheDocument()
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user