Files
L'électron rare d7e4e52fd3 chore: hard cutover frontend-scratch-v2
V2 was the legacy single-app Vite playground. Per the
2026-05-01 atelier design brainstorm, V3 is the sole
authoring target going forward. MediaManager and
NetworkPanel features explicitly retired (no porting).

Removed:
- frontend-scratch-v2/ entirely (50 files, ~11k LOC)

Retargeted to frontend-v3 + pnpm:
- Makefile: FRONTEND_DIR, frontend-typecheck/test/build
  (renamed from frontend-lint as eslint not yet wired in V3)
- tools/dev/zacus.sh: FRONTEND_ROOT, action commands
- tools/dev/zacus_tui.py: action_frontend_tests + build cwd
- .github/workflows/validate.yml: pnpm/action-setup,
  cache: pnpm, --frozen-lockfile, typecheck step added

Documentation cleanup:
- Root CLAUDE.md: Architecture, Where to Look, Nested
  Guidance lines purged of V2; pointer to atelier design
  doc added
- frontend-v3/CLAUDE.md: V2 vs V3 section removed; editor
  description points to fusion design doc
- desktop/CLAUDE.md: V2 anti-pattern removed
- specs/CLAUDE.md: cross-stack pair example updated to
  packages/scenario-engine

Archive: tag archive/frontend-scratch-v2-final on the
commit immediately preceding deletion preserves the last
state where V2 still worked.

Acceptance:
- rg "frontend-scratch-v2" in code paths -> 0 hits
- make frontend-test -> 11/11 green (3 skipped)
- make frontend-build -> 6/6 green
2026-05-02 21:51:23 +02:00

1.7 KiB

Specs

Contracts between firmware, frontends, tooling, and AI agents. Treat each spec as a versioned interface — a breaking change here triggers work in 2+ subsystems.

Canonical Specs

Spec Governs
ZACUS_RUNTIME_3_SPEC.md Scenario IR + execution semantics
AI_INTEGRATION_SPEC.md Agent layer (hints, voice, vision, TTS, audio_gen, MCP)
FIRMWARE_WEB_DATA_CONTRACT.md ESP32 ↔ frontend HTTP/WebSocket payloads
MCP_HARDWARE_SERVER_SPEC.md MCP stdio tools (6) for hardware interaction
MEDIA_MANAGER_* Media manager (firmware/frontend/runtime/sync)
STORY_DESIGNER_SCRATCH_LIKE_SPEC.md Frontend Blockly-like authoring
STORY_RUNTIME_API_JSON_CONTRACT.md Runtime API JSON shape
LOCAL_AI_STUDIO_SPEC.md Local AI studio integration
QA_TEST_MATRIX_SPEC.md QA matrix + acceptance criteria

Editing Rules

  • A spec change is a contract change. List affected consumers in the PR description.
  • Bump the version header at the top of the file when altering existing fields; never silently rename keys.
  • New spec docs must be linked from root CLAUDE.md "Canonical Files" if they introduce a new contract.
  • Pair runtime/frontend spec changes — the matching tools/scenario/compile_runtime3.py and frontend-v3/packages/scenario-engine/src/engine.ts updates ship in the same PR.

Anti-Patterns

  • "Implementation detail" comments in specs — if it's not part of the contract, remove it
  • Adding fields without specifying optionality, defaults, and version
  • Letting the IR drift between Python compiler and TS runtime without updating the spec first
  • Documenting hardware pins/ports here — they belong in ESP32_ZACUS/ firmware sources