Stage 1: project foundation (strict TS, lint boundaries B-1..B-7, directory structure, CI, boundary tests)
- dedicated git repo at /home/avi/Projects/Lumen (main)
- TypeScript strict (target ES2022, bundler, exactOptionalPropertyTypes, noUncheckedIndexedAccess)
- ESLint 9 + typescript-eslint strictTypeChecked + eslint-plugin-boundaries for B-1..B-7, no-restricted-globals/syntax for B-1/B-7
- Prettier 3.5
- Structure per IMPLEMENTATION-CONTRACT.md §4 (src/platform/idb|cache|sw, storage, data, sync/{transport,verifier}, domain/{emergency,schedule,map,festival,readiness,clock,favorites}, ui/{components,views,router,render}, app, emergency-baseline, assets, public, content, pipeline, tests, scripts)
- CI: .github/workflows/ci.yml (typecheck + lint + format + test)
- Boundary tests: tests/unit/boundaries.test.ts (4 tests) + scripts/check-boundaries.ts
- No feature code, no PWA/IDB/sync/mesh/accounts per contract Stage 1
This commit is contained in:
commit
c0bfd413ff
100 changed files with 9863 additions and 0 deletions
59
experiments/README.md
Normal file
59
experiments/README.md
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
# Lumen — Validation Experiments (Architecture Validation Phase)
|
||||
|
||||
These are **disposable validation experiments**. They are **not** application
|
||||
code, not part of the future product, and must not be imported by the app.
|
||||
They exist to falsify or confirm specific architectural assumptions before
|
||||
the architecture is frozen. Each is referenced by the spike document that
|
||||
consumes its results.
|
||||
|
||||
| File | Validates | Spike | Runtime |
|
||||
|------|-----------|-------|---------|
|
||||
| `exp1-time-model.mjs` | UTC storage, IANA-zone rendering, day boundaries, DST, skew, sanity window, now/next | SPIKE-08 | `node exp1-time-model.mjs` |
|
||||
| `exp2-ab-update-sim.mjs` | A/B dual-slot atomic update state machine under crash/fault injection | SPIKE-02 | `node exp2-ab-update-sim.mjs` |
|
||||
| `exp3-map-bench.html` | Map representation approaches (raster+DOM, SVG, canvas) | SPIKE-03 | headless Chromium (see below) |
|
||||
|
||||
## Evidence classes used throughout
|
||||
|
||||
Every claim in the spike documents is labelled:
|
||||
|
||||
- **CONFIRMED** — observed by running an experiment here, or directly
|
||||
documented by the platform vendor as guaranteed behavior.
|
||||
- **INFERRED** — follows from documented platform behavior + architectural
|
||||
reasoning, but not directly observed in this environment.
|
||||
- **UNVERIFIED** — cannot be established on this Linux dev box; requires a
|
||||
physical device/browser.
|
||||
|
||||
## Environment
|
||||
|
||||
- Linux dev machine, Node v22.23.2 (full-ICU), headless Chromium
|
||||
(`chromium-browser`), Firefox available.
|
||||
- **No iOS hardware or iOS Simulator is reachable from this environment.**
|
||||
Nothing labelled iOS is CONFIRMED here; iOS items are INFERRED or
|
||||
UNVERIFIED and are listed in each spike's "must test on physical iOS"
|
||||
section.
|
||||
|
||||
## How the map benchmark is run (EXP-3)
|
||||
|
||||
```
|
||||
chromium-browser --headless=new --disable-gpu --no-sandbox \
|
||||
--window-size=800,600 --virtual-time-budget=120000 \
|
||||
--dump-dom "file:///…/experiments/exp3-map-bench.html"
|
||||
```
|
||||
|
||||
**Interpretation caveat (important):** the benchmark measures synchronous JS
|
||||
work per animation frame on a desktop GPU/CPU. All three approaches measured
|
||||
≈ 0 ms/frame here. That does **not** mean they are equivalent on a low-end
|
||||
Android phone: the dominant costs there are GPU compositing of transformed
|
||||
layers, texture memory, and raster image decode — none of which a headless
|
||||
desktop run represents. EXP-3's value is confirming that none of the three
|
||||
has a disqualifying *JS-side* cost and that the DOM-overlay and SVG variants
|
||||
are mechanically viable; the final representation decision still requires the
|
||||
physical-device protocol in SPIKE-03.
|
||||
|
||||
## Observed results (run 2026-08-30)
|
||||
|
||||
- EXP-1: **24/24 PASS**. (Two earlier failures were test-data errors in the
|
||||
experiment itself, corrected; the time logic was sound.)
|
||||
- EXP-2: **16/16 PASS** across all crash/fault points.
|
||||
- EXP-3: all variants complete; per-frame JS work ~0 ms across the board
|
||||
(see caveat).
|
||||
Loading…
Add table
Add a link
Reference in a new issue