feat!: replace Uhura with the 0.4 machine-first language - #24
Conversation
|
Important Review skippedToo many files! This PR contains 309 files, which is 209 over the limit of 100. To get a review, narrow the scope: Upgrade to a paid plan to raise the limit. Usage-priced reviews support at most 300 files. ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (2)
📒 Files selected for processing (553)
You can disable this status message by setting the ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
We measured v0's L0 frictions empirically: a machine cannot exist without a view (UH5011); configuration must be hardcoded into guards; the input domain is defined by the view's descriptors rather than a machine declaration (the trace harness rejects an input no control emits); and a guard miss dispatches no handler and carries no named result ( FYI on our open items — no action needed from you: we'll rework #18 on top of 0.4 after this merges, we're withdrawing the video question in #22 (the contradiction is deleted on this branch), and we'll re-target or close #23 ourselves. One question only you can answer: the v0 gaps we verified (unvalidated |
|
Thanks — this is a useful boundary question. For this PR I am deliberately keeping the scope on the machine-first language redesign. The one “rule of physics” I do want the core language to impose is the state-ownership boundary:
If the draft affects validation, another control's disabled state, search-as-you-type, persistence, deterministic replay, or a static example, then the draft is machine state. A possible controlled spelling is the one this branch currently demonstrates: The renderer can still own caret position, selection, IME composition, and a temporary in-flight editing buffer. Those are interaction mechanics, not application state. Once the machine accepts the input, its projected value is authoritative; rejection or normalization is also expressed through the machine transition rather than hidden widget mutation. An uncontrolled field is not necessarily forbidden. It would mean something different and should be explicit: the renderer owns the draft until a boundary such as The same state-ownership rule can inform So the direct answer is: I do not intend this PR to decide whether those v0 gaps become 0.4 UI obligations. They remain open for the dedicated |
Status
Ready for review. This is the complete Uhura 0.4 machine-first replacement, not a compatibility scaffold. It is intentionally breaking and does not preserve an executable 0.3 source path.
Why
Uhura's previous state/store language worked, but its core model and authoring topology had not been designed with enough deliberate scrutiny. This branch rebuilds the language around Uhura's actual mission: a compact, deterministic state-machine language whose UI support is explicit and first-class, rather than the definition of the core language itself.
The source language is Rust-shaped for familiarity and bounded learnability, while the runtime remains a deterministic global kernel. Source modules, packages, parts, and imports are semantic authoring boundaries that compile into one checked IR.
What changed
MachineProgramkernel artifact inside the aggregate applicationProgram;.relayadmission, compatibility loaders, legacy identity hashes, and thedevcommand alias;[evidence.modules];.uhurasources, typed state/events, deterministic effects and outcomes, packages, parts, provenance, evidence, snapshots, and explicituse uhura::ui;uhura-editor-state/5,uhura-machine-inspection/1,uhura-inspection/1, and the shared strictuhura-evidence-summary/0contract;Performance result
The final review found that Editor and Play were publishing roughly 100 MiB of duplicated evidence data. This was a browser read-model/transport problem, not a kernel dispatch problem.
For the canonical Instagram application:
Validation
cargo fmt --all -- --check;cargo clippy --offline --locked --workspace --all-targets -- -D warnings;cargo test --offline --locked --workspace --all-targets;corepack pnpm@10.11.0 -C web check— 45 files passed, 282 tests passed, 2 skipped;feed_like_refused_scenarioexpanded trace passed;Running; mobile/desktop frames, scrolling, contained Surface focus/inert/restore behavior, debugger, and restart were verified with no browser warnings or errors.Current boundary
Uhura has no supported backward-compatibility surface. Historical pointers and explicit rejection tests remain as documentation and negative conformance evidence; they cannot admit or execute retired source.
Project-wide
uhura fmt --checkremains gated on RFC 0003 comment attachment: the formatter deliberately refuses to erase authored evidence comments. Rust formatting, source checking, nontrivial trace execution, browser contracts, and payload budgets are all covered by the current validation surface.Final checkpoints
38c194e— close final kernel, host, Editor, Play, renderer, protocol, performance, and regression-review gaps;c02f19e— align the active Uhura 0.4 specifications, RFCs, widget boundary, and Instagram guidance.Companion PR
Uhura should merge first. The Spock companion remains draft until its gitlink is synchronized to the resulting Uhura main revision and revalidated.