Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
93 commits
Select commit Hold shift + click to select a range
300f0fb
docs(engine): track migration phases and baseline evidence
voltcrash Oct 22, 2026
afae54c
test(engine): freeze consumer inventory and browser performance baseline
voltcrash Oct 22, 2026
e5a1c39
test(engine): preserve immutable fixtures in neutral package
voltcrash Oct 22, 2026
0890a7f
test(engine): freeze UTF-16 commands and intermediate TypeScript oracle
voltcrash Oct 22, 2026
259adfe
feat(engine): add pinned Rust workspace and finite UTF-16 session slice
voltcrash Oct 22, 2026
0ddcb84
feat(engine): prove browser Wasm through Start Cloudflare assets and CSP
voltcrash Oct 22, 2026
b5bc526
ci(engine): bootstrap pinned Rust and test native browser Wasm paths
voltcrash Oct 22, 2026
9013d4d
docs(engine): record Cloudflare proof and freeze performance budgets
voltcrash Oct 22, 2026
d27c21c
feat(engine): port error penalties difficulty and code indentation rules
voltcrash Oct 22, 2026
7807497
feat(engine): record physical keys and preserve legacy cleanup ordering
voltcrash Oct 22, 2026
72ff8da
feat(engine): derive legacy score and timing fields from event logs
voltcrash Oct 22, 2026
936cdda
feat(engine): preserve timer stalls minimum accuracy speed and burst …
voltcrash Oct 22, 2026
9dce593
fix(engine): preserve Korean scoring for every legacy UTF-16 unit
voltcrash Oct 22, 2026
4e1832b
test(engine): exercise every frozen command trace in real browser Wasm
voltcrash Oct 22, 2026
0f497ab
feat(engine): port owned pace weak-spot learning and typing-time state
voltcrash Oct 22, 2026
e95c295
feat(engine): match frozen Mulberry32 streams and explicit RNG exhaus…
voltcrash Oct 22, 2026
38e98e9
feat(engine): preserve browser commit composition and deferred input …
voltcrash Oct 22, 2026
4a59d28
ci(engine): verify Rust path routing and allow the requested PR stack
voltcrash Oct 22, 2026
60e451b
feat(engine): port base generation custom sections shuffle and repeats
voltcrash Oct 22, 2026
0899e24
fix(engine): preserve browser deletion extents and Firefox sentinel r…
voltcrash Oct 22, 2026
7107cdc
feat(engine): port numeric and Unicode funbox transforms against froz…
voltcrash Oct 22, 2026
3891f92
feat(engine): preserve multilingual punctuation and generator random …
voltcrash Oct 22, 2026
2ed8d59
Port lazy and British language generation without changing snapshots
voltcrash Oct 22, 2026
b86b02b
Validate deserialized random draws and document Mulberry32 contract
voltcrash Oct 22, 2026
d93d29e
Port arrows, IP, pseudolang and weak-spot word generators
voltcrash Oct 22, 2026
1eea874
Preserve Unicode normalization and slash commits in Morse generation
voltcrash Oct 22, 2026
749af6b
Port quote queues and polyglot generation; verify all 61 legacy snaps…
voltcrash Oct 22, 2026
cbc6b56
Expose typed content bindings and prove all generators in Cloudflare …
voltcrash Oct 22, 2026
d71e439
Optimize Wasm with pinned Binaryen to meet the frozen payload budget
voltcrash Oct 22, 2026
f4188e2
Unify session and generator configuration defaults in Rust
voltcrash Oct 22, 2026
58189be
Freeze historical replay, practice and save-validity reference outputs
voltcrash Oct 22, 2026
3c89616
Port full results, histories, validity, practice and historical replay
voltcrash Oct 22, 2026
ab3483d
Expose analysis bindings and verify historical results through browse…
voltcrash Oct 22, 2026
6e3373c
Preserve exhaustive Morse compatibility with a smaller immutable lookup
voltcrash Oct 22, 2026
3772c8a
Record verified historical parity and remaining engine cutover gaps
voltcrash Oct 22, 2026
ccb7db6
Own incremental generation, custom limits and recorder invalidation i…
voltcrash Oct 22, 2026
d28dd54
Freeze every funbox pair and forced-setting compatibility case
voltcrash Oct 22, 2026
e72af43
Port complete funbox metadata and configuration compatibility rules
voltcrash Oct 22, 2026
9b15687
Generate shared defaults and mechanically check website preference pa…
voltcrash Oct 22, 2026
2e7e9e5
Freeze 2048 deterministic input decisions with lossless shared defaults
voltcrash Oct 22, 2026
aee7d7a
Record browser progression before multi-character difficulty failure
voltcrash Oct 22, 2026
0b49468
Centralize input decisions, browser overflow preflight and batch chec…
voltcrash Oct 22, 2026
0f7f2c1
Match recorded browser progression before commit failure; retain head…
voltcrash Oct 22, 2026
bb9aa9f
Freeze poetry and extracted Wikipedia cleanup contracts
voltcrash Oct 22, 2026
f44fa7d
Port section cleanup and bounded cancellable content-request ownership
voltcrash Oct 22, 2026
0dac213
Resume initial section generation through typed content requests
voltcrash Oct 22, 2026
56e88cd
Preserve active input across background section requests and delayed …
voltcrash Oct 22, 2026
6b5892e
Freeze section generation, repetition and random-draw compatibility
voltcrash Oct 22, 2026
f3dab5f
Verify prepared and active section requests in built browser Wasm
voltcrash Oct 22, 2026
e75a43e
Use a measured size-optimized Wasm profile within frozen payload budgets
voltcrash Oct 22, 2026
77006a5
Keep completion decisions in Rust with explicit host timing acknowled…
voltcrash Oct 22, 2026
c9436fb
Preserve browser slow-render failure thresholds and tick ordering in …
voltcrash Oct 23, 2026
fb739e2
Own incremental replay state and seeking in Rust with disposable Wasm…
voltcrash Oct 23, 2026
55efcd9
Make Wasm loading owned, retryable and safe across concurrent session…
voltcrash Oct 23, 2026
3862526
Preserve exact language size suffixes at input normalization boundaries
voltcrash Oct 23, 2026
8271cf5
Retain app-owned learning across session replacement and expose typed…
voltcrash Oct 23, 2026
c29ac35
Verify retained learning, exact pace clocks and language normalizatio…
voltcrash Oct 23, 2026
2857955
Verify generated artifact hashes before reusing Rust and Wasm build o…
voltcrash Oct 23, 2026
244acf0
Preserve repeated wordsets and quote queues across owned session repl…
voltcrash Oct 23, 2026
8530c05
Invalidate old request generations across preparation and recycled se…
voltcrash Oct 23, 2026
a22cb5c
Prove browser repeats preserve targets, quote identity and cancelled …
voltcrash Oct 23, 2026
c9d1e0c
Centralize restart eligibility, repeat policy and long custom-text pr…
voltcrash Oct 23, 2026
10dc936
Check Rust restart thresholds and long-text progress through producti…
voltcrash Oct 23, 2026
d8346f1
Retire the slower object boundary and remove its Wasm conversion payload
voltcrash Oct 23, 2026
ebf8e11
Preserve historical UTF-16 logs through typed browser conversion and …
voltcrash Oct 23, 2026
f3f94b6
Stage generated bindings before replacing live build outputs
voltcrash Oct 23, 2026
11b6886
Freeze quote and polyglot recovery messages, settings actions and not…
voltcrash Oct 23, 2026
3207490
Return structured engine errors with frozen quote and polyglot recove…
voltcrash Oct 23, 2026
8928bba
feat(engine): expose structured Wasm recovery failures
voltcrash Oct 23, 2026
ffdd61b
test(engine): freeze failed section recovery behavior
voltcrash Oct 23, 2026
3e5ca22
feat(engine): handle unavailable content without scoring failure
voltcrash Oct 23, 2026
bf9e732
test(engine): prove source failure recovery through Cloudflare Wasm
voltcrash Oct 23, 2026
9e319ce
test(engine): freeze every historical live-stat prefix
voltcrash Oct 23, 2026
7e3cd81
perf(engine): index live statistics without cloning session logs
voltcrash Oct 23, 2026
c9698e5
feat(engine): expose typed cached live metrics
voltcrash Oct 23, 2026
3493c92
feat(engine): validate content commands and historical logs
voltcrash Oct 23, 2026
5cb07f0
fix(engine): invalidate log deltas after timestamp ties
voltcrash Oct 23, 2026
b4f4dbd
fix(build): preserve machine-readable Vite config output
voltcrash Oct 23, 2026
f0ba4ef
test(engine): measure browser initialization and ownership soaks
voltcrash Oct 23, 2026
789bf6b
test(engine): freeze fractional custom limit behavior
voltcrash Oct 23, 2026
c670d39
fix(engine): preserve fractional custom generation limits
voltcrash Oct 23, 2026
29f6bb4
test(engine): prove fractional limits in browser Wasm
voltcrash Oct 23, 2026
9ab9bdc
feat(engine): generate checked event and result contracts
voltcrash Oct 23, 2026
a033a42
build(engine): bootstrap direct checks and unify parity tasks
voltcrash Oct 23, 2026
45f4bc3
test(engine): freeze live generation setting boundaries
voltcrash Oct 23, 2026
4f526c1
feat(engine): share live generation and setting policies across hosts
voltcrash Oct 23, 2026
9dd001c
test(engine): freeze quote-length queue refresh lifecycle
voltcrash Oct 23, 2026
1ec6788
feat(engine): expose explicit quote queue refresh without resetting c…
voltcrash Oct 23, 2026
1b9a9d2
test(engine): verify final setting and quote lifecycle through built …
voltcrash Oct 23, 2026
a5f8a57
docs(engine): publish binding API and reconcile completed parity cove…
voltcrash Oct 23, 2026
e7b7ad8
perf(engine): construct typed results directly within frozen size budget
voltcrash Oct 23, 2026
ee676ab
build(engine): enforce frozen Wasm and deployed binding payload budgets
voltcrash Oct 23, 2026
dc84395
docs(engine): record Stage 1 acceptance and final measured budgets
voltcrash Oct 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions .github/actions/setup-engine/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
name: Set up Rust typing engine
description: Bootstrap pinned Rust, Wasm target/tooling and ignored browser bindings.
runs:
using: composite
steps:
- name: Restore Rust build cache
uses: actions/cache@v5.0.3
with:
path: |
~/.cargo/registry
~/.cargo/bin/wasm-bindgen*
target
key: engine-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('Cargo.lock', 'rust-toolchain.toml') }}
- name: Prepare pinned Rust and Wasm bindings
shell: bash
run: vp run engine:build
2 changes: 2 additions & 0 deletions .github/actions/setup/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,5 @@ runs:
node-version-file: .node-version
cache: true
cache-save: ${{ inputs.save-cache }}
- name: Prepare generated engine bindings
uses: ./.github/actions/setup-engine
35 changes: 32 additions & 3 deletions .github/workflows/oxytype-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ permissions:

on:
pull_request:
branches: [main, "stack/**"]
branches: [main, "stack/**", "t3/rust-engine-migration"]
types: [opened, reopened, synchronize, ready_for_review]
push:
branches: [main]
Expand Down Expand Up @@ -41,6 +41,7 @@ jobs:
packages: ${{ steps.select.outputs.packages }}
assets: ${{ steps.select.outputs.assets }}
code: ${{ steps.select.outputs.code }}
engine: ${{ steps.select.outputs.engine }}

steps:
# PRs read changed files from the API, so no checkout is needed.
Expand Down Expand Up @@ -72,12 +73,22 @@ jobs:
- 'packages/oxlint-config/**'
# Workspace packages bundled into the backend and frontend.
runtime-packages:
- 'packages/{challenges,contracts,funbox,schemas,typing-core,util}/**'
- 'packages/{challenges,contracts,funbox,schemas,typing-core,typing-engine,typing-fixtures,util}/**'
- 'crates/**'
- 'Cargo.{toml,lock}'
- 'rust-toolchain.toml'
- 'scripts/{engine,prepare-engine}.ts'
- '!packages/*/{__test__,__tests__,__fixtures__}/**'
- '!**/*.md'
packages:
- 'packages/**'
- '!**/*.md'
engine:
- 'crates/**'
- 'Cargo.{toml,lock}'
- 'rust-toolchain.toml'
- 'scripts/{engine,prepare-engine}.ts'
- 'packages/typing-{engine,fixtures}/**'
backend:
- 'backend/**'
- '!backend/__tests__/**'
Expand Down Expand Up @@ -173,9 +184,26 @@ jobs:
enable start-browser "${runtime[@]}" frontend start-tests browser-tests static-delivery
enable start-updates "${runtime[@]}" frontend start-tests update-tests static-delivery
enable start-delivery "${runtime[@]}" frontend static-delivery
enable packages packages lint-config static-layouts static-challenges
enable packages packages lint-config static-layouts static-challenges engine
enable assets assets runtime-packages
enable code code
enable engine engine runtime-packages

engine:
name: engine
needs: [changes]
if: needs.changes.outputs.engine == 'true'
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@v7.0.1
- uses: ./.github/actions/setup
- name: Native formatting, lint and parity
run: vp run engine:fmt && vp run engine:lint && vp run engine:test
- name: Install Chromium
run: vp -C frontend exec playwright install --with-deps --only-shell chromium
- name: Browser Wasm parity
run: vp run engine:test:wasm

quality:
name: quality
Expand Down Expand Up @@ -475,6 +503,7 @@ jobs:
start-delivery,
ci-assets,
ci-pkg,
engine,
]
runs-on: ubuntu-latest
timeout-minutes: 2
Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/production-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,9 @@ jobs:
- name: Install dependencies
run: vp install --frozen-lockfile

- name: Prepare pinned Rust and browser Wasm
uses: ./.github/actions/setup-engine

- name: Build production frontend and Worker
env:
OXYTYPE_BUILD_ID: ${{ env.DEPLOYMENT_SHA }}-${{ github.run_id }}-${{ github.run_attempt }}
Expand Down
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -138,3 +138,7 @@ frontend/playwright-report/

# TanStack Router generator scratch files
.tanstack/

# Rust / generated Wasm and type bindings
/target/
/packages/typing-engine/generated/
Loading
Loading