GUI-Native Language Roadmap — Execution Status
GUI-Native Language Roadmap — Execution Status
Section titled “GUI-Native Language Roadmap — Execution Status”Provenance. Derived from the April 2026 roadmap authored by Bertrand Reyna-Brainerd. This file tracks what has actually been implemented versus what is planned. Updated by AI agent on 2026-05-01.
Canonical roadmap source. The full task specifications live in
docs/src/architecture/vox-gui-native-roadmap-2026.md. This file is the status overlay.
Phase 0 — Dashboard Safety
Section titled “Phase 0 — Dashboard Safety”| Task | Status | Commit | Notes |
|---|---|---|---|
| TASK-0.1 — ADR 024: Dashboard as Axum SPA | ✅ Done | b7536331 | docs/src/adr/024-dashboard-axum-spa.md created. Index updated. |
| TASK-0.2 — Replace loopback-auto-unauth with token auth | ✅ Done | bb72c7e3 | token.rs created. DashboardToken::generate_or_load() implemented. Meta-tag injection in assets.rs. |
| TASK-0.3 — Strict Origin/Host allowlist middleware | ✅ Done | 327bf460 | Extracted origin check into origin_guard.rs with JSON error body, strict WS-upgrade check, and comprehensive unit tests. |
| TASK-0.4 — CSP, X-Frame-Options, Referrer-Policy, CORS | ✅ Done | d152d272 | X-Frame-Options and Content-Security-Policy headers present in assets.rs. CorsLayer::new() with allow_origin(Any), allow_methods(Any), allow_headers(Any) installed in http_gateway/mod.rs. |
TASK-0.5 — Fix vox dashboard CLI detachment + readiness polling | ✅ Done | b7536331 | DashboardLauncher struct with setsid()/Windows DETACHED_PROCESS flags implemented. |
TASK-0.6 — Harden transport.ts: backoff, auth refresh | 🟡 Partial | b7536331 | Needs verification of backoff caps and authStatus event emission. |
TASK-0.7 — Fix App.tsx hooks violation + dead imports | ✅ Done | b7536331 | useVoxTransport() moved to top of component. Dead imports removed. |
| TASK-0.8 — Integration tests for dashboard crate | ✅ Done | HEAD | Tests implemented in crates/vox-dashboard/tests/ (auth.rs, asset_serving.rs, origin_guard.rs) and pass successfully. |
Phase 0 verdict: 7 complete, 0 partial, 0 not started.
Phase 1 — Dashboard Cleanup
Section titled “Phase 1 — Dashboard Cleanup”| Task | Status | Commit | Notes |
|---|---|---|---|
TASK-1.1 — Delete vscode.ts shim | ✅ Done | b7536331 | rg finds zero vscode.postMessage or getVsCodeApi references. |
TASK-1.2 — Fix or delete vox-dashboard-d binary | ✅ N/A | — | Binary never existed in the repo; no action needed. |
TASK-1.3 — build.rs for include_dir! safety + ETag | ✅ Done | b7536331 | include_dir::include_dir!("$CARGO_MANIFEST_DIR/dist") in assets.rs. ETag confirmed: version-prefixed "pkg--path-size" format with If-None-Match check → 304 on match. |
TASK-1.4 — Clean up index.css duplication | ✅ Done | HEAD | Removed hand-rolled .text-violet-500, .bg-violet-500, .border-violet-500/30 (now generated by Tailwind JIT). Kept .glow-violet (custom, not in Tailwind palette). |
TASK-1.5 — Pin workspace deps, remove tsconfig.tsbuildinfo | ✅ Done | b7536331 | tower-http uses workspace = true. tsbuildinfo removed and gitignored. |
Phase 1 verdict: 5 complete, 0 partial, 0 not started. Phase 1 is complete.
Phase 2 — Compiler Primitive Collapse
Section titled “Phase 2 — Compiler Primitive Collapse”Per LANGUAGE_DESIGN_PRIORITIES.md: Phase 2 is the P1 cleanup phase — every task collapses redundant shapes to a single canonical form. Where a task also removes a Python-recognizable keyword, it is also a P2 advance.
| Task | Priority | Status | Commit | Notes |
|---|---|---|---|---|
TASK-2.1 — Delete Path B UI fields from HirModule | P1 (purge dual UI representation) | ✅ Done | HEAD | HirLoweringMigrationFlags removed. endpoint_fns unified. hir.components fully purged from codegen_ts, web_ir, and typeck. |
TASK-2.2 — Unify @server/@query/@mutation → @endpoint(kind: …) | P1 (3→1 endpoint shapes), P2 (@endpoint distinctive surface) | ✅ Done | 00588f6a | HirEndpointFn with EndpointKind unified. query_fns/mutation_fns/server_fns collapsed to endpoint_fns. |
TASK-2.3 — Collapse HirExpr::DbTableOp into MethodCall | P1 (collapse HirExpr variants) | ✅ Done | HEAD | HirExpr::DbTableOp removed entirely; operations lowered into MethodCall with HirDbQueryPlan. Obsolete comment removed. |
TASK-2.4 — Resolve HirExpr::Pipe vs Binary(Pipe) | P1 (one canonical pipe form) | ✅ Done | HEAD | Removed redundant HirExpr::Pipe variant; pipeline expressions now strictly use HirExpr::Binary(HirBinOp::Pipe, ...). All matches updated safely. |
TASK-2.5 — Retire http bare-keyword routing | P1 (one route shape), P2 (removes Python-recognizable http keyword) | ✅ Done | HEAD | Tombstoned in parser. Verified via test_parse_http_route_is_tombstoned. |
TASK-2.6 — Align workflow/activity/actor | P1 (collapse 3 declaration shapes to 1) | ✅ Done | e7f3e884 | Full dead-code sweep complete: ActorDecl/WorkflowDecl/ActivityDecl AST types, HirActor/HirWorkflow/HirActivity HIR types, all codegen emit functions, typeck registration/checker code, validate/dead_code/db_op_walk walkers, and VoxIr schema fields all removed. Parser tombstones already in place since prior commit. Orphaned caller-side references (9 files) fixed in e7f3e884; downstream test suites (vox-workflow-runtime, vox-integration-tests) and grammar-export hash updated in 60fd439b. |
Phase 2 verdict: 6 complete, 0 partial, 0 not started. Aggregate priority advance: 6 redundant shapes collapsed (P1), 2 Python-recognizable keywords removed (P2). Phase 2 is complete — all preconditions for Phase 3 and Phase 4 are satisfied.
Phase 3 — Grammar Unification Policy
Section titled “Phase 3 — Grammar Unification Policy”| Task | Status | Notes |
|---|---|---|
| TASK-3.1 — Add grammar unification rule to AGENTS.md | ✅ Done | HEAD |
Phase 4 — Compiler Primitive Expansion
Section titled “Phase 4 — Compiler Primitive Expansion”Per LANGUAGE_DESIGN_PRIORITIES.md: Phase 4 is the first phase that primarily advances P0 (structural prevention) — each task encodes a bug class as a type or grammar rule so the bug becomes unrepresentable. Source: vox-gui-native-roadmap-2026.md §Phase 4.
| Task | Priority | Status | Notes |
|---|---|---|---|
TASK-4.1 — Add state_machine first-class block | P0 (missing (state, event) handler unrepresentable via exhaustiveness), P1 (collapses ad-hoc reducer-hook patterns to one shape), P2 (state_machine keyword distinctive) | ✅ Done | HEAD |
TASK-4.2 — Add effect annotations (uses net, db, mcp(...)) | P0 (“function secretly touches network” unrepresentable via effect propagation), P3 (effects declared locally on the signature; no global flow analysis), P2 (uses clause distinctive) | ✅ Done | HEAD |
| TASK-4.3 — Add typed URLs primitive | P0 (broken link to deleted route unrepresentable via URL variant graph), P1 (single URL algebra replacing string patterns + raw <Link to="/…">), P2 (url Path { … } block distinctive) | ✅ Done | HEAD |
TASK-4.4 — Compile vox.tokens.json into types | P0 (unknown token name → compile error; pair contrast validated at token-load time — warning at <4.5:1, error at <3:1 on body text), P1 (collapses raw #rrggbb / rgb(…) / hardcoded-px to named tokens) | ✅ Done | TokenRegistry + WCAG 2.1 contrast engine + validate_web_ir_with_registry integrated into maybe_web_ir_validate. vox-tokens.css and tokens.ts emitted from codegen_ts/tokens_emit.rs. Schema at contracts/tokens/tokens.v1.json. Canon doc: docs/src/reference/token-system.md. 21 tests passing. |
Phase 4 verdict: 4 complete (TASK-4.1, TASK-4.2, TASK-4.3, TASK-4.4), 0 partial, 0 not started.
Sequencing note. All four tasks listed “Phase 2 complete” as their only common precondition and were parallel-safe per the roadmap. Per LANGUAGE_DESIGN_PRIORITIES.md §C2 (the GUI wedge), TASK-4.4 was the first P0 demonstration — it landed the contrast-validated color type the audit identified as the highest-impact accessibility-error prevention (research cites contrast as 26.6% of WCAG violations). Phase 4 is now fully complete; Phase 5 is unblocked.
Phase 5 — Validation Layer
Section titled “Phase 5 — Validation Layer”| Task | Priority | Status | Notes |
|---|---|---|---|
| TASK-5.1 — Token resolution validator | P0 (literal CSS color/dimension → compile error) | ✅ Done | 2aca2730 |
| TASK-5.2 — Route reachability validator | P0 (broken link → compile error, dead route → warning) | ✅ Done | 1e0d943d |
| TASK-5.3 — A11y validator | P0 (img_missing_alt, interactive_missing_label, role_button_missing_keyboard) | ✅ Done | 1e0d943d |
| TASK-5.4 — v0.dev output validator | P0 (integration gate — a11y + design-token checks on v0 output) | ✅ Done | ab0454a8 |
Phase 5 verdict: 4 complete, 0 partial, 0 not started. Phase 5 is complete — all preconditions for Phase 6 are satisfied.
Phase 6 — GUI Primitive Authoring Surface
Section titled “Phase 6 — GUI Primitive Authoring Surface”Per vox-gui-native-roadmap-2026.md §Phase 6.
| Task | Priority | Status | Notes |
|---|---|---|---|
| TASK-6.1 — Semantic primitive set | P0/P1 (GUI primitive authoring surface) | ✅ Done | HEAD |
| TASK-6.2 — Token-ref-only style values | P0/P1 | ✅ Done | 968cae6f |
| TASK-6.3 — Surface pair primitive | P0 | ✅ Done | 0fd8bb1a |
| TASK-6.4 — Overlay block + z-index DAG validator | P0 | ✅ Done | 9fb6e958 |
| TASK-6.5 — Contrast ratio along ancestor chain | P0 | ✅ Done | HEAD |
Phase 6 verdict: 5 complete, 0 not started. Phase 6 is complete — all preconditions for Phase 7 are satisfied.
Phase 7 — Dashboard Re-author Through vox-codegen-ts
Section titled “Phase 7 — Dashboard Re-author Through vox-codegen-ts”| Task | Status | Notes |
|---|---|---|
| TASK-7.1 — Re-author App.tsx as app.vox | ✅ Done | app.vox created with tab switcher. build.rs integrates vox build. HirExpr::If IIFE bug fixed — codegen now emits nested ternaries. Reactive component pipeline restored in emitter. Generated AppShell.tsx produces clean (tab === "speak" ? <SpeakTab /> : ...) output. |
| TASK-7.2 — Port 13 tab panels to .vox | ✅ Done | 0951020b/f5c25275 |
| TASK-7.3 — Delete Vite/Tailwind parallel setup | 🟡 Partial | 05c1ee60 |
Phase 7 verdict: 2 complete, 1 partial (TASK-7.3 component wiring done; full bundler replacement deferred).
Phase 8 — Corpus + MENS
Section titled “Phase 8 — Corpus + MENS”| Task | Status | Commit | Notes |
|---|---|---|---|
| TASK-8.1 — Atomic corpus migration PR | ✅ Done | 135b7591 | Golden corpus .vox files were already clean. Migrated 9 training-eligible docs + vox_system_prompt.txt to fn-based actor/workflow/activity syntax and current component syntax. Created scripts/migrate-corpus.vox verification script. All 247 compiler tests pass. |
| TASK-8.2 — MENS training run on new corpus | 🔲 Not started | — | Deferred — awaiting operator MENS training run. Operator must run vox populi train --config qlora.toml and compare eval scores before this task can be marked complete. |
Phase 8 verdict: 1 complete, 1 pending operator action (compute).
Phase 9 — Route Pipeline Restoration
Section titled “Phase 9 — Route Pipeline Restoration”| Task | Status | Commit | Notes |
|---|---|---|---|
TASK-9.1 — Wire Decl::Routes → HIR → WebIR | ✅ Done | 240375b0 | HirModule::client_routes added. Decl::Routes now lowers to hir.client_routes instead of being silently dropped. lower_client_routes in web_ir/lower.rs produces RouteNode::RouteTree. routes.manifest.ts now emitted on build. Duplicate routes {} correctly triggers web_ir_validate.route.duplicate_contract_id. is_advisory_diagnostic SSOT in web_ir::validate. 4 vox-cli test failures resolved; corpus digest golden updated. |
Token / Secrets Status
Section titled “Token / Secrets Status”FORGE_TOKEN is now stored in ~/.vox/auth.json (local vox-secrets vault, not
committed to the repo). vox ci watch-run reads it automatically. No
more $env:FORGE_TOKEN=... prefix required for CI polling.
The gho_* token is a GitHub OAuth token scoped to your existing gh session.
It is safe to store in vox-secrets for local use — vox-secrets writes to
~/.vox/auth.json on your machine, never to the repository. You do NOT need
to generate a new PAT. The existing OAuth token is sufficient for the
workflow and repo scopes needed by watch-run.
Immediate Next Tasks (in order)
Section titled “Immediate Next Tasks (in order)”- TASK-8.2 — MENS training run. Deferred — awaiting operator compute action. Operator must run
vox populi train --config qlora.tomlagainst the updated corpus and compare eval scores. - TASK-7.3 (remaining partial) — Full bundler replacement. Deferred to Phase 9 of vox-gui-native-roadmap-2026.md §Phase 9; blocked on a vox-integrated bundler. Can be worked in parallel with TASK-8.2 once Phase 9 is scoped.
test_agent_mcp_roundtrippre-existing failure —vox_complete_taskcalled with integertask_id = 1but orchestrator uses"T-0001"string format. Fix: parsevox_submit_taskresponse to extract the real task ID. Tracked as side-task chip.vox-corpussynthetic_gen flakiness — Windows temp file contention in parallel workspace mode. Tests pass in isolation (cargo test -p vox-corpus). Pre-existing; not introduced in this session. Fix: serialize temp-file access in synthetic_gen tests.
Audit log
Section titled “Audit log”- 2026-04-24 — Initial status tracker created (commit
08c8ad87). - 2026-04-25 — Audit refresh against HEAD
fa350de8. TASK-0.4, TASK-0.8 promoted to ✅ (commitd152d272). TASK-2.6 reclassified as half-done with retrospective + re-plan note. Hygiene flags surfaced. (Cowork session.) - 2026-04-29 — TASK-0.6 completed: typed transport events, clean backoff,
missing
types.tsexports, broken import paths fixed. TASK-2.1 re-confirmed ✅ Done:componentsfield is Path C (HirFieldOwnership::SemanticCore), not a Path B residual. 9 stale .py scripts deleted. Stale compiler WIP discarded..cargo/config.tomlfixed (relative = true). Phase 0 verdict updated to 8/8. (Agent session.) - 2026-04-29 — TASK-1.2 N/A confirmed (bin/ empty; binary never created). TASK-1.3 ✅ Done confirmed (ETag + If-None-Match in assets.rs lines 26–76). TASK-3.1 ✅ Done: §“Grammar Unification” section added to AGENTS.md. Phase 1 verdict updated to 5/5 complete. Phase 3 verdict: 1/1 complete. Next-tasks list reduced to TASK-2.6 only. (Agent session.)
- 2026-04-29 — TASK-2.6 Path B executed: 15 compiler files, −1 150 lines,
cargo check -p vox-compiler0 errors 0 warnings.HirActor,HirActorHandler,HirWorkflow,HirActivitystructs and all lowering/typeck/codegen paths retired.BindingKind::Actor,ActorHandlerSig,lookup_actorpreserved (live Claude built-in path). Phase 2 verdict: 6/6 complete. Commit6524b3f7. Phases 4–8 now unblocked. (Agent session.) - 2026-04-30 — TASK-8.1 ✅ Done: Atomic corpus migration. Golden corpus
.voxfiles already clean. 9 training-eligible docs +vox_system_prompt.txtmigrated to fn-based syntax.scripts/migrate-corpus.voxcreated. All 247 compiler tests pass. Commit135b7591. (Agent session.) - 2026-04-30 — TASK-9.1 ✅ Done:
Decl::Routes→ HIR → WebIR wired.HirModule::client_routesadded.lower_client_routesproducesRouteNode::RouteTree.routes.manifest.tsemitted on build. Commit240375b0. (Agent session.) - 2026-05-01 — TASK-2.6 Path A audit (PR #47 CodeRabbit round 3). Restored
Decl::Workflow,Decl::Activity,Decl::Actorvariants (lost in merge), plus parsers indescent/decl/mid.rsand lowering arms inhir/lower/mod.rs+hir/lower/decl.rs. FixedHirFn.effectsstale field inworkflow_tracker_tests.rs; fixedDefIdimport ineffect_check.rstests; fixedstate_machine_check.rstest to useHirSmFrom::Namedand correct function signature; fixedcontracts/tokens/tokens.v1.jsonschema ("version"property added to satisfy"additionalProperties": false); fixedvalidate_a11y.rs(DomNode::Loop { body }field, case-insensitive attr lookup, anchor-href and input-label checks); addedWebIrDiagnosticSeverityenum + computed method toweb_ir/mod.rs; updatedv0_tsx_validate.rsdiagnostic codes andd.severity()call; added_emitAuthStatus('authorized')+ movedgetToken()insideonopenintransport.ts; populatedBehaviorNode::EventHandlerfor keyboard attrs intsx_to_web_ir_module; fixedvalidate.rsroute-test fixtures (addeddom_nodes[0]toview_roots-using tests); activity-name filtering inplan.rs. (Agent session, PR #47.)
Resolved (no action needed):
- TASK-0.6:
transport.tsbackoff andauthStatusalready correct — exponential cap at 30s,authStatusemitted on init (no_token), WS close codes 1008/4001/4003/4401 (unauthorized), and HTTP 401/403 fromcallTool(unauthorized). - TASK-1.2:
vox-dashboard-dbinary never existed — decision N/A. - TASK-4.2 stdlib pass: complete (see above).
- Post-
4843d7ceorphan failures: all 9 caller-side files purged (e7f3e884); workflow-journal JSON schema repaired; grammar-export hash and rule names corrected (60fd439b). Workspace compiles cleanly.