docs(spec): Phase 18 — vision + executable spec + architecture + testing pyramid (freezone pattern) #5
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Why
We've built the engineering-discipline pieces of the multi-session pipeline (CLAUDE.md / prompt.md / decisions / limitations / sessions / kickstart / handoff / start / stop). What we're missing is the product-spec layer — a stakeholder-facing document that maps every user-facing behaviour to a verification across the test pyramid.
The pattern this issue adopts:
znzfreezone_deploy/docs/dev/e2e_checklist.md— 1860 lines, 30+ sections, ~600-row matrix, 5-column row state schema (Schema? / Wired? / MCP? / Browser? / Human?), audit-log at the top, stakeholder-first framing. Tracking issue #86 for context.What makes this exemplary:
[skip: REASON]mandatory for opt-out.Goal
Bring hero_assistance to "ship-ready" parity with the freezone documentation pattern. After this issue lands:
Deliverables
1.
docs/vision/HERO_ASSISTANCE.md(new, ~600 lines)The freezone analog: why this product exists.
2.
docs/dev/e2e_checklist.md(new, ~1500 lines)The executable spec. Sections (best guess at row classes):
_app)_appdesktop mounts_ui_wasm::App; embed_smoke verifies; D-17 live-restart)phase13_seed.rsprofiles, demo orchestrator)[skip: V03])_uidual-mode--dist, mycelium spawn, custom-protocol asset serve)5-column schema. Per-row MS tag (v0.1 / v0.2 / v0.3 / v1.0).
[skip: ...]markers. Audit log at the top mirrors freezone — every session adds an entry, every regression flips a column with strikethrough + reason.3.
docs/dev/architecture.md(new, ~400 lines)Topology diagram (browser →
_ui --dist→ rpc.sock →_server→ SQLite + events.sock → fanout → /ws/user/{id}). Networking layers. Failure tolerance. Component responsibilities (_server/_ui/_ui_wasm/_app/_sdk).4.
docs/dev/testing.md(new, ~300 lines) + 7-layer pyramidcargo test --libtests/smoke.sh(curl)integration.rstests/e2e_journey.shtests/playwright/*.spec.ts5. The 4-port browser-deployable demo as canonical test infra
The session-24 work (Mycelium + Hero rebrand on 8083-8086) becomes the canonical test environment.
scripts/phase13_demo.sh --browserboots 2_servers + 2_ui --dist+ 4 socat bridges; Playwright config picks them up via env vars; CI runs against the same recipe.6. Decision file
D-19-spec-as-checklist.mdLock the freezone-pattern adoption: vision + executable spec + 7-layer pyramid as first-class artifacts. (Note: D-18 in this session was for spec-as-checklist; renumber on landing if needed.)
Out of scope (forward to other issues)
Sequencing — Phase 18 (a/b/c)
Why now (sequencing rationale)
Phase 16b (visual polish) and #4 (auth-split) both want explicit acceptance criteria. The checklist gives them that. Phase 16b without the checklist = iterate on cosmetics with no clear "done" line. Auth-split without the checklist = land features without a security-row matrix to check against (freezone's "OWASP top-10 for auth" rows are the model).
Estimated effort
2-3 sessions
Success criterion
After Phase 18 lands, every issue in the project (open and closed) cross-references one or more checklist rows. Every PR description includes "rows green" / "rows changed". The checklist is the single page that answers "where is hero_assistance" for any stakeholder.
Update (session 24): Issue #4 (originally "auth split / Phase 20" — same session) was closed as wrong scope. Phase 18's checklist Section J should document the three candidate v0.3.0+ auth paths as
[skip: NO-CUSTOMER-DEMAND]rows so the analysis is preserved:device_addr) — one-session feature when daily-magic-link papercut becomes real for someoneAuthorization: Bearer <host-jwt>validated against configurable JWKS) — per D-09 §"Argument" pt 5 the embed-as-Support-tab is the primary deployment; host shell auth flows throughMagic-link-for-everyone is the answer indefinitely per
memory/feedback_no_auth_padding.md. Section J rows stay[skip: NO-CUSTOMER-DEMAND]until a real customer deployment surfaces a real gap, at which point a precise implementation issue gets filed.Phase 18a complete — session 25 (commit
079f267ondevelopment).Two new docs landed
docs/vision/HERO_ASSISTANCE.md(230 lines) — mission, eight principles (peer-to-peer / mycelium-bound / embed-as-Support-tab / schema-per-customer / AI-amenable / config-as-code / "looks amazing" UI bar / auth-by-role-deferred), industry positioning vs Zendesk/Intercom/Linear, M1–M4 roadmap, 7-bucket decisions index covering D-01..D-18, conflict-resolution clause.docs/dev/e2e_checklist.md(334 lines) — audit log (one s25 entry), Who-this-is-for 5-row table, Vision pull-in, 7-layer pyramid (current counts L1=236 / L2=0 / L3=74 / L4=0 / L5=0 / L6=0 / L7=5), 4-port browser-deployable access table, How-to-run blocks, M1–M4 milestone scope, 5-column row state schema (Schema?/Wired?/MCP?/Browser?/Human?),[skip: REASON]opt-out marker with recognised REASON list, sections A–D rows, process invariants block at bottom.Sections A–D row counts
[skip: V03][skip: M2]85 M1 + 5 M2 by milestone tag. Row IDs use
M1-A-1style (section letter + index) with M1=v0.1+v0.2 / M2=v0.3 / M3=v1.0 mapping at the top of the doc.Process invariants adopted byte-for-byte from freezone
test_file:test_namereference in the row body.strikethroughwith reason in the audit log.[skip: REASON]markers must use the recognised REASON list.What's deferred
_appchrome) / I (config) / J (auth-split candidates with[skip: V03]) / K (operations) / L (programmable surface, ~91 RPC rows) / M (visual baselines).docs/dev/architecture.md+docs/dev/testing.md→ Phase 18b.Test posture (unchanged from session 24)
_ui_wasmlib: 31 passing unchanged.Decisions / limitations
Phase B walk drifts (flagged at plan-proposal time, all reconciled)
FREEZONE.mdembeds[D-NNN]refs inline rather than topic-indexing — followed §3's spec (topic-organised index across 7 buckets) since non-engineer stakeholders need that for navigation.Phase 18b is next; 18c after that. v0.2.0 ships after Phase 18b + Phase 16b land.
Phase 18b — Done (session 26, commit
0c0abc3ondevelopment)Phase 18b shipped sections E–M rows (+225 rows / 74 wired-green / 21 human-stamps; doc-wide 90 → 315) plus two new companion docs (
docs/dev/architecture.md~350 lines +docs/dev/testing.md~280 lines).Per-section deltas
_appdesktop chrome[skip: V03])Doc-wide totals
[skip: V03]rows are excluded)Companion docs
docs/dev/architecture.md— ASCII topology diagram + 7-layer networking stack + failure tolerance + per-crate component responsibilities + cross-cutting concerns + open architectural gaps tabledocs/dev/testing.md— 7-layer pyramid spec + file map + current vs target counts (realcargo testnumbers: 236 L1+L3 passing; ~330 / ~444 v1 target) + per-layer how-to-run + what-it-catches/doesn't-catch + cross-link to checklist columns + authoring guideNo new decisions, no new limitations
All four D-19 candidates (Section L row format / Section M desktop baselines / architecture.md topology format / testing.md counts source) held bias per §3 instruction. B.5 default-skip held (docs only).
Test posture unchanged
205 native passing / 31
_ui_wasmlib passing / 3 L-03 unchanged / 1 phase10 transient flake / 8 ignored. Kickstart's verify assertions extended +24 (273 → 297).Next
Phase 18 docs work is complete. Phase 16b (#2) and Phase 18c (#3) are now independent next-session candidates — 16b ships v0.2.0; 18c opens the test lane every Phase 19+ session needs.
Phase 18 fully shipped end-to-end:
docs/vision/HERO_ASSISTANCE.md+ executable specdocs/dev/e2e_checklist.mdskeleton + sections A–D rows. D-18 filed locking the freezone-pattern adoption.docs/dev/architecture.md+docs/dev/testing.md(7-layer pyramid as first-class artefact)._ui --dist;hero_browserMCP owns L7 captures;_appdesktop chrome andMultiProjectClientcross-mesh stay[skip: NO-AUTOMATED-DESKTOP]). +50 assertions across L2/L4/L5/L6.enrol.spec.ts+breadcrumb.spec.ts) + 6 L7 SPA baselines viascripts/capture-spa-baselines.sh+ 31 cell flips across Sections A/C/D/G/L. v0.3.0 tagged ondevelopment(commit39d85e5).All three sub-phases complete; D-18 + D-19 locked. Closing as shipped — should have closed in s29 alongside the v0.3.0 tag.
For per-phase historical detail, see prompt.md §1 and sessions/{25,26,28,29}.yml manifests.