Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
365 commits
Select commit Hold shift + click to select a range
6ba6a2c
v5 seam after Codex's review: a stepwise replay session for gated seg…
a9lim Nov 2, 2026
e324442
Shell: a room's hash step stays in the workbench, the workbench title…
a9lim Nov 2, 2026
6bfabca
Units reference: the tiny fixture models regenerated bit for bit, a d…
a9lim Nov 2, 2026
04f8bb8
e2e: the workbench title and room Back/Forward run (no longer fixme),…
a9lim Nov 2, 2026
ffd1375
e2e: the Token view's Readings switch replays a steered token without…
a9lim Nov 2, 2026
5e4f9fa
Fork scripts share one module of overlay checks (overlay_checks.py): …
a9lim Nov 2, 2026
548672f
Units: the CPU reference backend (every block-sites member), the four…
a9lim Nov 2, 2026
f631feb
Units: reading scales and the S readout (footprint z, slens/ probe ro…
a9lim Nov 2, 2026
b933967
Hosted pack builder: full-depth R and S lens packs, S embedding stati…
a9lim Nov 2, 2026
8d73d82
e2e: a token replaced from the Loom map streams its branch on the Loo…
a9lim Nov 2, 2026
1e03455
Pack builder tests on the ABI v5 tiny fixture: shipped units tensors …
a9lim Nov 2, 2026
c2f2b0d
Units fixtures: build-units-fixtures.py converts drowse's units-tiny-…
a9lim Nov 2, 2026
aa0775d
Units: the UnitReader port (neuron and head reads with hidden hubs, t…
a9lim Nov 2, 2026
e49d5fa
Units: type the OV map and pursuit locals
a9lim Nov 2, 2026
e76906a
Packs store fp32 rank-2 tensors with logical shapes and the S mask as…
a9lim Nov 2, 2026
75d0028
Units: replay segments over browser programs, the replay driver and t…
a9lim Nov 2, 2026
dc65ee7
Units: the token anatomy port (four reads per layer, R-lens contribut…
a9lim Nov 2, 2026
b046488
Registry reads full-depth packs: R and S lens layers on first read wi…
a9lim Nov 2, 2026
dc85e4a
Residency rule tolerates path-less fixture files; the resident-budget…
a9lim Nov 2, 2026
09290ec
Residency test: install set, readout layers resident, one fetch per o…
a9lim Nov 2, 2026
a71f2c9
Catalog kinds slens and units: one of each per context, units only be…
a9lim Nov 2, 2026
7880a42
Lens source section is 6.0's 2x2 over the installed R and S packs wit…
a9lim Nov 2, 2026
be87a8f
Units: the worker members (BrowserUnitsService over the block-sites b…
a9lim Nov 2, 2026
86c4fc5
Runbook validates units through its lens packs and records install an…
a9lim Nov 2, 2026
019886d
Units: the fixture runtimes answer every units member through the rea…
a9lim Nov 2, 2026
73f8445
Core concepts: drowse 6.0's 17 default concepts (one-node deceptive, …
a9lim Nov 2, 2026
2fb9f68
Units: unit programs in the structured compiler (unit ablations group…
a9lim Nov 2, 2026
bb3ef9f
Retire the capture-based lens builder (build-hosted-jlens.mjs, its ca…
a9lim Nov 2, 2026
557de40
README: lens, units and core packs (native fits, the builder, full de…
a9lim Nov 2, 2026
225f883
release-corpus README: the native lens corpus; the capture builder's …
a9lim Nov 2, 2026
738842c
test:runtime runs the units host-port and service tests
a9lim Nov 2, 2026
efbbfbd
Provider lens audit covers only the base models drowse cannot fit; Ge…
a9lim Nov 2, 2026
1193db4
Units: slens/ probes attach as post-forward lens probes (no GPU slot)…
a9lim Nov 2, 2026
a524270
Units: live unit taps, readings and unit gates replayed against drows…
a9lim Nov 2, 2026
3c81a94
e2e: seeded generated Loom nodes carry a recipe (6.0 refuses token ro…
a9lim Nov 2, 2026
02528f4
README: measured pack sizes for the 1B and 1.7B models
a9lim Nov 2, 2026
869ebfd
Units: the missing-lens absent text names the pack to install (the ho…
a9lim Nov 2, 2026
1010cb7
Worker fetches on-demand pack files one at a time, so each install-re…
a9lim Nov 2, 2026
fa1b51d
Shared layer loads run under the model load's lifetime; a reader that…
a9lim Nov 2, 2026
cd90d1d
After Codex's review: fits must be of the loaded weights and a Hub mo…
a9lim Nov 2, 2026
5a50040
Hook ABI v5 in the MLC overlay: drowse_block per architecture (sites …
a9lim Nov 2, 2026
d022f52
After Codex's second read: a Hub model's loaded revision is the one d…
a9lim Nov 2, 2026
90cdf9e
Units: unit and slens/ probes carry native's digests (units-readout-v…
a9lim Nov 2, 2026
53e4619
Units: the seven members stay withheld until the model load wires Bro…
a9lim Nov 2, 2026
dced0d2
WebLLM bridge for hook ABI v5: descriptor schema 4 (block-sites-v5, s…
a9lim Nov 2, 2026
d3b1b60
Units: readings carry attached unit probes only (gate-only taps feed …
a9lim Nov 2, 2026
0f58f4a
Shell: the workbench reads its history entry after a recovery reload …
a9lim Nov 2, 2026
a55a39c
e2e: the Readings switch test checks the readings the Token view show…
a9lim Nov 2, 2026
842980c
Units: the units family block once configured (no source, live on, al…
a9lim Nov 2, 2026
d8a624f
drowse.ai adapter for hook ABI v5: the schema-4 descriptor attested a…
a9lim Nov 2, 2026
60af681
Pack builder: core writes the neutral rows the whitener is built from…
a9lim Nov 2, 2026
2d1c733
Steering term layers: replay drowse's steering-term-layers golden thr…
a9lim Nov 2, 2026
28bd72d
Core whitener fitted from the native neutral rows and bound through t…
a9lim Nov 2, 2026
85ddf63
Units: the compiler's unit programs replayed against drowse's goldens…
a9lim Nov 2, 2026
845a0d0
Tool test: the monopolar fold and the neutral-rows whitener agree wit…
a9lim Nov 2, 2026
44dfda4
Units: a fresh slens/ probe attaches through the instrument runtime a…
a9lim Nov 2, 2026
f5c67d0
S statistics name the runtime's tokenizer and the browser refuses ano…
a9lim Nov 2, 2026
c807b2c
Units: the unit source survives a manifold refresh (withInstalledMani…
a9lim Nov 2, 2026
e364990
First run: choosing units on a base model chooses its R pack too, and…
a9lim Nov 2, 2026
7611437
R and S naming in the release tooling's messages and the agent text; …
a9lim Nov 2, 2026
172c029
WebGPU units goldens harness (browser-units-goldens.mjs): the fixture…
a9lim Nov 2, 2026
ddd0b1e
Validators share the native-rows whitener fit; a units pack validates…
a9lim Nov 2, 2026
8885955
HOOK_ABI.md: the unit kernels as built (three in-place/tap dispatches…
a9lim Nov 2, 2026
815d401
Bridge: the prefill-chunk descriptor index is 51 (C0's order), pinned…
a9lim Nov 2, 2026
44f57e0
fork-overlays test: the manifest attests block-sites-v5, standard-v4,…
a9lim Nov 2, 2026
a06a7ec
Core builder worker: GPUFeatureName is the DOM's feature type
a9lim Nov 2, 2026
71aecf4
After Codex's read: the core statistics bind each context's whitener …
a9lim Nov 2, 2026
21127c9
MLC overlay: drowse_replay_batch_prefill (anatomy stores, on-device u…
a9lim Nov 2, 2026
a48c3da
Replay traces and pattern keys are sized to the replay (symbolic trac…
a9lim Nov 2, 2026
d8238f6
Replay through the bridge and the adapter: drowseBlockSites (head gra…
a9lim Nov 2, 2026
80ef5f4
Replay kernels compare symbolic extents as int32 (an int64 exporter s…
a9lim Nov 2, 2026
f120af8
MLC overlay: static reads and exact-readout-v2 (drowse_reads.py: unit…
a9lim Nov 2, 2026
d3e9c3c
Static reads through the bridge and the adapter: drowseBlockSites gai…
a9lim Nov 2, 2026
7ed46b5
Static-read kernels compile for WebGPU: top-k reduction stages read t…
a9lim Nov 2, 2026
2740ca6
WebGPU reads suite (browser-units-reads.mjs): every static-read membe…
a9lim Nov 2, 2026
9bae21e
One path in the forks: the rank-one feasibility functions go from the…
a9lim Nov 2, 2026
c8d0ccd
Bridge: drop the rank-one unit-length helper
a9lim Nov 2, 2026
1a9ee90
Vendor the v5 bridge as @drowse/web-llm 0.2.84-drowse.41 (exports the…
a9lim Nov 2, 2026
e66410a
One path, continued: verify-mlc-hook and the compiler gate drop the r…
a9lim Nov 2, 2026
e436928
web-llm-generation test on the v4 profile and the structured engine s…
a9lim Nov 2, 2026
295ca7c
Compile gates require the v5 surface: the exact-readout-v2 functions …
a9lim Nov 2, 2026
8eefabd
Generation: unit groups count as per-token controls and gates, unit t…
a9lim Nov 2, 2026
b99222a
Static reads: logSumExp reports an all -inf row as -Infinity, as topK…
a9lim Nov 2, 2026
d6c51d4
Goldens: top-k order checked against ties (declared groups and tolera…
a9lim Nov 2, 2026
a4ce8d4
Unit-reads goldens check each neuron's raw pole reads (writes and fir…
a9lim Nov 2, 2026
b8dcb1e
web-llm-engine test on hook ABI v5: a standard-v4-residual library at…
a9lim Nov 2, 2026
0701f53
Merge branch 'parity/c0' into parity/w3i
a9lim Nov 2, 2026
5ad829e
Merge branch 'parity/i3' into parity/w3i
a9lim Nov 2, 2026
9dd34e5
Merge branch 'parity/b6' into parity/w3i
a9lim Nov 2, 2026
4598e1e
Merge branch 'parity/b5' into parity/w3i
a9lim Nov 2, 2026
4da30f4
Merge branch 'parity/b4' into parity/w3i
a9lim Nov 2, 2026
78f6a80
Keep I3's R and S lens sample query in the agent catalog (lost resolv…
a9lim Nov 2, 2026
ace6e4b
Approve the native lens corpus's FineWeb-Edu attribution (ODC-By 1.0)…
a9lim Nov 2, 2026
7bbc2ea
Pin drowse at c86d8b6c: PR 71's phone and short-screen layouts, focus…
a9lim Nov 2, 2026
0b2ad6f
Track the core concepts' provenance.json: .gitignore dropped all seve…
a9lim Nov 2, 2026
86d85ad
Raise the pattern layer cap to 16: UNIT_MAX_PATTERN_LAYERS in the MLC…
a9lim Nov 2, 2026
a98128e
Single-term steering lowers through the structured program; core pack…
a9lim Nov 2, 2026
78fe4e6
Release tooling on hook ABI v5: one VM function list from overlay_che…
a9lim Nov 2, 2026
ab66dfa
Delete the rank-one hook path: rankOneHookProgram.ts, its test, and e…
a9lim Nov 2, 2026
fc7cc8d
Candidate lock on v5 (fills library and converted-manifest digests an…
a9lim Nov 2, 2026
18385ed
Release workers load v5 libraries: the lock's blockSpec and unitRefus…
a9lim Nov 2, 2026
2035857
Catalog and pack policy on v5: both v5 profiles declare the exact-rea…
a9lim Nov 2, 2026
eb704f2
browser-core-build.mjs: the in-browser core build on B4's tiny v5 fix…
a9lim Nov 2, 2026
998f6d9
Bind unit programs to the loaded library where they leave the compiler
a9lim Nov 2, 2026
0691542
Release corpus schema 2: prepare_hosted_release_corpus.py writes only…
a9lim Nov 2, 2026
7cb4ff4
Runtime profiles on hook ABI v5: catalogs, fixture runtimes and recor…
a9lim Nov 2, 2026
d43615a
verify-production-library.py: a production v5 library on the CPU (exp…
a9lim Nov 2, 2026
d06129a
Release evidence on hook ABI v5: the feasibility gates (rank-one tiny…
a9lim Nov 2, 2026
27b2779
Whitener tool test on the v5 profiles
a9lim Nov 2, 2026
c77d123
Delete the upstream-MLC adopt path (every v5 library is converted fro…
a9lim Nov 2, 2026
4a9cbad
browser-runtime README on hook ABI v5: the lock, the candidate lock t…
a9lim Nov 2, 2026
b650f31
The q4 parity capture on hook ABI v5: steered reads through structure…
a9lim Nov 2, 2026
f7a8277
browser-app-runtime traces clearDrowseProgram; the README describes t…
a9lim Nov 2, 2026
636094f
q4 parity on v5: one productionQ4Parity record per q4 lock model (bou…
a9lim Nov 2, 2026
23f14d0
Benchmark evidence schema takes the lock's model ids
a9lim Nov 2, 2026
f0ab4d2
Production-app harness catalog declares the exact-readout limits for …
a9lim Nov 2, 2026
fd1c896
Lock reader exposes each model's blockSpec or unitRefusal (lock schem…
a9lim Nov 2, 2026
cdcccbd
Pack identity tool refuses a lock model whose library is still pendin…
a9lim Nov 2, 2026
7d7c487
Review fixes (Codex second read): a recompiled library clears its con…
a9lim Nov 2, 2026
baeb7ff
README: the WebGPU units record's bridge and fixture digests
a9lim Nov 2, 2026
65d4481
Units ports for an async engine: batch token texts, async S token res…
a9lim Nov 2, 2026
4e1a899
Second round of review fixes: both publishers take a candidate lock (…
a9lim Nov 2, 2026
ded0d05
Units pack source over the instrument registry: core statistics and w…
a9lim Nov 2, 2026
bd628d8
build-production-webgpu.py rebind: carry a published conversion to th…
a9lim Nov 2, 2026
ea26d62
Model load builds BrowserUnitsService and routes the seven units memb…
a9lim Nov 2, 2026
cdcc5af
Release evidence producers bind closure files up to 64 MiB (the WebGP…
a9lim Nov 2, 2026
36fa640
Pin drowse at 5c86520a (the Lens room 2x2 split from its local fit) a…
a9lim Nov 2, 2026
d2b302e
Share drowse's Ledger link card: the PNG byte for byte with its own a…
a9lim Nov 2, 2026
7837f6e
Loads take their library's block spec and unit refusal from the runti…
a9lim Nov 2, 2026
f283ac6
The loaded session names the units family once its members are config…
a9lim Nov 2, 2026
261c066
q4 parity reference builds Qwen3.5 (Qwen3_5ForCausalLM from the MLC t…
a9lim Nov 2, 2026
9da8240
Release transaction: the C VM and WebGPU goldens run as checks after …
a9lim Nov 2, 2026
5556a46
Units golden records require the neuron-push and unit-artifacts suite…
a9lim Nov 2, 2026
f438b80
Full-runtime closure check takes exactly the lock's runtime ABI: the …
a9lim Nov 2, 2026
e28a746
q4 parity validator on N1's capture schema 4 (parity/n1 b650f31: stru…
a9lim Nov 2, 2026
57fb735
e2e at PR 71: the phone Loom map, landscape conversation, short-scree…
a9lim Nov 2, 2026
92ff3a1
Drop the pack-kind casts: drowse's first-run pack and catalog availab…
a9lim Nov 2, 2026
76e90a4
rebind compares the copied files with the manifest's in path order (p…
a9lim Nov 2, 2026
cc0985b
Raise the pattern layer cap to 16: UNIT_MAX_PATTERN_LAYERS in the MLC…
a9lim Nov 2, 2026
0829bff
q4 parity covers B1 4.3's production measures on a units library: act…
a9lim Nov 2, 2026
4a268d0
productionQ4Parity records B1 4.3's unit measures: the lock checker a…
a9lim Nov 2, 2026
8efce34
Bridge keeps a forward's [L, d] capture for the host when the program…
a9lim Nov 2, 2026
1263ab4
q4 torch test: the fake transformers module offers the Qwen3.5 classe…
a9lim Nov 2, 2026
9ab28ea
Live units and S channels in generation: units/unitProgram's tap read…
a9lim Nov 2, 2026
7c8aca2
Token anatomy's pattern pass is one replay: the profile's maxPatternL…
a9lim Nov 2, 2026
2dcd429
The MLC q4 reference refuses Transformers 4 (it drops rope_parameters…
a9lim Nov 2, 2026
e009301
e2e for units: the Units room (neurons, heads, search, no catalog), t…
a9lim Nov 2, 2026
d4f7f5a
e2e for the lenses: the Lens room's S and R reads by layer, the four …
a9lim Nov 2, 2026
756b6a2
e2e at the new pin: the Lenses section's 2x2 (source buttons, the S p…
a9lim Nov 2, 2026
29ae542
README: rebind a published conversion to a new runtime ABI; verify a …
a9lim Nov 2, 2026
2d13f5a
e2e: the Units room and a token's anatomy on a phone; units and lense…
a9lim Nov 2, 2026
cd425a6
e2e: resolve the refusal test's module path as sourceUrl does
a9lim Nov 2, 2026
e5a1194
e2e: the Lens room's token reads differ from the last token's, unitFi…
a9lim Nov 2, 2026
496a28d
Choosing units checks the combined memory budget with the R and S pac…
a9lim Nov 2, 2026
7dfcc45
After a Codex review: rebind binds the conversion to the runtime lock…
a9lim Nov 2, 2026
3c0e4a5
browser-units-worker.mjs: Half B through the hosted runtime worker on…
a9lim Nov 2, 2026
e6c3bcf
Build provenance takes the v5 hook ABI (block-sites-v*); the units wo…
a9lim Nov 2, 2026
3bf7cd6
Units worker harness: preview globals before the worker's modules, th…
a9lim Nov 2, 2026
2f1accd
e2e: the header poll treats a header mid-render as not yet laid out
a9lim Nov 2, 2026
21f1b79
Bridge .44: block-sites reads and residents run in a generation strea…
a9lim Nov 2, 2026
7ff3694
An unsteered replay's empty unit section carries its unit shape (the …
a9lim Nov 2, 2026
a19ce0a
An unsteered replay's forwards send its program's zero controls (driv…
a9lim Nov 2, 2026
939e65c
Node replays are sized to the positions they feed (the bridge refused…
a9lim Nov 2, 2026
4e3ca02
Envelopes bind the canonical steering text, as native's recipe steeri…
a9lim Nov 2, 2026
1d95813
Units worker reference: drowse's pursuit chooses find's k as the gold…
a9lim Nov 2, 2026
f21aa31
e2e: the residual refusal through BrowserUnitsService's own routing, …
a9lim Nov 2, 2026
657f90b
e2e: the phone Weave's horizontal containment runs as an expected fai…
a9lim Nov 2, 2026
8b4b017
e2e: the expected failures name drowse PR 73
a9lim Nov 2, 2026
e0afe78
README: rebind takes the lock's model id
a9lim Nov 2, 2026
9a53850
Generated nodes keep the canonical steering in their recipe, and node…
a9lim Nov 2, 2026
b4423d4
Bridge .45: a stream's token window runs its admitted operations (mea…
a9lim Nov 2, 2026
789dbdf
The full-runtime and instrument-runtime release workers admit v5 libr…
a9lim Nov 2, 2026
de7e196
A units reset releases the session's resident lens matrices and embed…
a9lim Nov 2, 2026
2a9c3d4
Node replays score every gate as generation does (native's gate run):…
a9lim Nov 2, 2026
a3b2572
A token with nothing measured carries no envelope (native build_measu…
a9lim Nov 2, 2026
faf5a38
Gates resolve as native's resolve_gates: a gate reads the attached pr…
a9lim Nov 2, 2026
b441bac
Merge parity/w4a: pattern cap 16, the nine v5 libraries' tooling (reb…
a9lim Nov 2, 2026
cf7073c
Merge parity/n1: one structured steering path on v5, units and S live…
a9lim Nov 2, 2026
8bad2fc
Merge parity/n2: release tooling on hook ABI v5 (lock schema 2, evide…
a9lim Nov 2, 2026
71e1357
Merge parity/n3: pin drowse at 5c86520a (LensQuad), the hosted Lens s…
a9lim Nov 2, 2026
c5dbe88
After merging W3i: one lock reader for blockSpec and unitRefusal; the…
a9lim Nov 2, 2026
5d560d8
Whitener tool test on the merged lock: qwen3-4b carries its block spe…
a9lim Nov 2, 2026
b90d487
Pin drowse at ccb6ba88 (PR 73): a unit refusal reads as the model's, …
a9lim Nov 2, 2026
9307a6a
Lock records each library's compiled prefill chunk; the adapter attes…
a9lim Nov 2, 2026
c143400
Physical harness on hook ABI v5: optional SAE and R packs, S and unit…
a9lim Nov 2, 2026
fe8a5a6
Capture schema 5: on a standard-v4 library the residual capture repla…
a9lim Nov 2, 2026
83a6009
Node replays name their prompt through the bridge's generation render…
a9lim Nov 2, 2026
920e8b2
Delete structured hook profiles v1-v3 and the v1 runtime-identity ali…
a9lim Nov 2, 2026
75b13b4
Evidence configs for hook ABI v5's runtime records: cVmGoldens on job…
a9lim Nov 2, 2026
43c7507
Per-token R-lens and SAE probe readings only while their family is live
a9lim Nov 2, 2026
1faf37c
e2e on a worker fixture with unit sites: the Artifacts room opens on …
a9lim Nov 2, 2026
65d8486
Merge parity/w3i: hook ABI v5 end to end (W3: the seam, overlay and b…
a9lim Nov 2, 2026
bcfb8a1
Catalog for runtime v2 at its own path: the distribution lock names v…
a9lim Nov 2, 2026
d16b19a
Fork manifest binds the checked-in base adapters: its baseModels dige…
a9lim Nov 2, 2026
1be1e8c
Vendor @drowse/web-llm 0.2.84-drowse.47: the device asks for exactly …
a9lim Nov 2, 2026
d321d55
The physical harness accepts Chrome Beta's channel (the M5 carries no…
a9lim Nov 2, 2026
14af7a3
Units worker harness: a chat fixture (drowse's fixture chat template …
a9lim Nov 2, 2026
e4c9ca5
Catalog admission implies loadability: each library's binding is deri…
a9lim Nov 2, 2026
3b5a133
Any finite presence and frequency penalty, as native's sampling param…
a9lim Nov 2, 2026
fc34163
HOOK_ABI.md: the lock's prefill chunk, N1's bridge additions and the …
a9lim Nov 2, 2026
9a732c7
Bridge .48 re-vendored: the sampler takes any finite penalty too
a9lim Nov 2, 2026
18bab97
Units worker harness: the goldens mode's unit-ablation check reads th…
a9lim Nov 2, 2026
82f8547
The adapter derives the device's binding from the verified files and …
a9lim Nov 2, 2026
53cadaf
HOOK_ABI.md: the adapter derives the binding at load
a9lim Nov 2, 2026
4f7ed51
Bridge .48 re-vendored with drowse_content_trim (Gemma 3's turn trim)…
a9lim Nov 2, 2026
f1963e1
Physical harness on the M5: the Vite HMR socket attaches to the harne…
a9lim Nov 2, 2026
7f278d5
Residual capture loads with the lock's context profiles and their bin…
a9lim Nov 2, 2026
e2f2195
q4 parity observer keeps stderr empty on macOS: torch.distributed.ela…
a9lim Nov 2, 2026
5708a43
The units binding bounds a layer's head rows and a unit read's vocabu…
a9lim Nov 2, 2026
a79fb43
productionLibrary configs run Chrome Beta, the only Chrome on the M5;…
a9lim Nov 2, 2026
ef56682
Doc comments: the descriptor's prefill chunk is the lock's
a9lim Nov 2, 2026
ad0af5a
Physical harness on base models: the curve's nodes carry no roles and…
a9lim Nov 2, 2026
33ffce1
AGENTS.md: every deploy checks the signed catalog at the lock's URL (…
a9lim Nov 2, 2026
55656f8
A stopped reply pools the last token's aggregate view
a9lim Nov 2, 2026
991d59e
Re-vendor @drowse/web-llm 0.2.84-drowse.47: residual captures split b…
a9lim Nov 2, 2026
b84cc28
HOOK_ABI.md: the binding's head-row, unit-read and capture bounds
a9lim Nov 2, 2026
fa634a7
Publisher refuses a first catalog at a new directory whose predecesso…
a9lim Nov 2, 2026
4381ff2
Bridge .48 re-vendored (fork a06595d): a user generation seat with th…
a9lim Nov 2, 2026
a70a094
Units worker harness, goldens mode: every unit-ablation forward's top…
a9lim Nov 2, 2026
7c31f1b
A stopped reply pools no aggregate when the request returns no probe …
a9lim Nov 2, 2026
36134bc
Node replays refuse a turn order the bridge does not render (a seat a…
a9lim Nov 2, 2026
337fb6b
Unit weight rows run in calls the binding covers
a9lim Nov 2, 2026
117e3eb
Units worker harness, goldens mode: the unit-ablation reads sample on…
a9lim Nov 2, 2026
774ae98
Production chat configs take the bridge's conversation rules: generat…
a9lim Nov 2, 2026
89cf4b7
ARCHITECTURE.md names the v5 library profiles, not standard-v3
a9lim Nov 2, 2026
85c1cf0
HOOK_ABI.md: which catalogs admission covers, and what the browser's …
a9lim Nov 2, 2026
d6a2655
Bridge .48 patch at fork ffa2152 (a Qwen3 thinking-off seat test; the…
a9lim Nov 2, 2026
5f1b7ab
The fake generation port offers the aggregate as the WebLLM port does
a9lim Nov 2, 2026
9adc752
Merge parity/r2: the physical harness and capture schema 5 on v5, evi…
a9lim Nov 2, 2026
2614fae
Merge parity/r1: per-model prefill and library binding in the lock, b…
a9lim Nov 2, 2026
a253041
Merge parity/r3: one render path for generation and replay prompts (c…
a9lim Nov 2, 2026
ec97f85
A release records the two golden gates; per-library harness and q4 pa…
a9lim Nov 2, 2026
2af68ba
HOOK_ABI.md §7: replay prompt ids, conversation rules and penalties (…
a9lim Nov 2, 2026
ae5739e
Session coordinator test port claims without aliased runtime identities
a9lim Nov 2, 2026
85455c8
Candidate lock reads the prefill a library was compiled with as MLC d…
a9lim Nov 2, 2026
26b8dd3
Adopt the hook ABI v5 runtime lock: the nine libraries published to s…
a9lim Nov 2, 2026
a504fd8
Pin drowse at decdd31f (PR 74): StructuredHookProfileId is standard-v…
a9lim Nov 2, 2026
967b4c2
Tests after the adoption and PR 74: session claims take no aliased id…
a9lim Nov 2, 2026
feb5642
C VM golden observer: the toolchain's python keeps its virtual-enviro…
a9lim Nov 2, 2026
5ea33c3
Merge parity/w4i: W4b code (per-model prefill and library binding, th…
a9lim Nov 2, 2026
5ccb3d5
Provider SAE import only: import-provider-sae.py packages Google's Ge…
a9lim Nov 2, 2026
46bd9a5
Pin drowse at 52ec0389, the 6.0.1 release (PR 75): the version line i…
a9lim Nov 2, 2026
5c1d7c8
Lock: each model's converted revision is its core-pack publish, the r…
a9lim Nov 2, 2026
b116610
Distribution lock verified: catalog 11 published at v2/ (stdlogits/dr…
a9lim Nov 2, 2026
a954613
e2e: the guarded Models route waits for its navigation (the URL names…
a9lim Nov 2, 2026
3be3151
Slim the release: no evidence records, attestations or promotion rule…
a9lim Nov 3, 2026
a5df180
Merge parity/w4i: drowse 6.0.1 pinned, catalog 11 published at v2/ wi…
a9lim Nov 3, 2026
4cc221b
CodeQL: the whitener's ridge map is built without writing input-deriv…
a9lim Nov 3, 2026
73c73c0
CI: the native WebMCP lane reads the composer by its label (the 6.0 w…
a9lim Nov 3, 2026
9b0e433
units-pack-source test: the default number tolerance is 1e-5, a few f…
a9lim Nov 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
84 changes: 14 additions & 70 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ jobs:
- run: pip install -e "./drowse[dev]"
- run: pytest -q

webui-build:
webui:
runs-on: ubuntu-latest
env:
DROWSE_STORAGE_BROWSERS: chromium
Expand All @@ -53,10 +53,9 @@ jobs:
cache: npm
cache-dependency-path: package-lock.json
- name: Install the drowse submodule for Python artifact checks
run: pip install -e ./drowse
run: pip install -e ./drowse pyarrow
- run: npm ci
- name: Install the pinned Playwright browsers
run: npx playwright install --with-deps chromium webkit firefox
- run: npx playwright install --with-deps chromium
working-directory: webui
- name: Allow the pinned Chrome sandbox to create user namespaces
working-directory: webui
Expand All @@ -72,21 +71,16 @@ jobs:
sudo apparmor_parser -r /etc/apparmor.d/drowse-webmcp-chrome
- run: npm run check
working-directory: webui
- name: Verify native WebMCP with pinned Chrome and Puppeteer
run: npm run test:webmcp:native
- run: npm run test:webmcp:native
working-directory: webui
- run: npm run check:hosted
working-directory: webui
- run: npm run test:hosted
working-directory: webui

webui-browser:
e2e:
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
shard: [1, 2, 3, 4, 5, 6]
timeout-minutes: 30
defaults:
run:
working-directory: webui
Expand All @@ -101,48 +95,16 @@ jobs:
cache-dependency-path: package-lock.json
- run: npm ci
working-directory: .
- name: Install the pinned Playwright browsers
run: npx playwright install --with-deps chromium webkit firefox
- run: npm run test:e2e -- --shard=${{ matrix.shard }}/6 --workers=1
- name: Preserve browser failure diagnostics
- run: npx playwright install --with-deps chromium
- run: npm run test:e2e -- --workers=3
- name: Keep failure traces
if: failure()
uses: actions/upload-artifact@v7
with:
name: browser-failures-${{ matrix.shard }}
name: e2e-failures
path: /tmp/drowse-playwright-results
retention-days: 3

webui:
runs-on: ubuntu-latest
needs: [webui-build, webui-browser]
if: always()
steps:
- name: Verify the hosted build and browser matrix succeeded
run: |
if [ "${{ needs.webui-build.result }}" != "success" ] || [ "${{ needs.webui-browser.result }}" != "success" ]; then
echo "webui-build=${{ needs.webui-build.result }}, webui-browser=${{ needs.webui-browser.result }}"
exit 1
fi

webkit-storage:
runs-on: macos-15
defaults:
run:
working-directory: webui
steps:
- uses: actions/checkout@v7
with:
submodules: true
- uses: actions/setup-node@v7
with:
node-version: "24"
cache: npm
cache-dependency-path: package-lock.json
- run: npm ci
working-directory: .
- run: npx playwright install chromium webkit
- run: node scripts/iphone-storage.test.mjs

contact-worker:
runs-on: ubuntu-latest
defaults:
Expand All @@ -168,11 +130,7 @@ jobs:
- run: npm run build

fitting-wasm:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-15]
runs-on: ${{ matrix.os }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
with:
Expand All @@ -181,20 +139,6 @@ jobs:
run: |
rustup component add rustfmt clippy
rustup target add wasm32-unknown-unknown
- name: Check formatting
run: cargo fmt --manifest-path browser-runtime/fitting-wasm/Cargo.toml -- --check
- name: Run tests
run: cargo test --locked --manifest-path browser-runtime/fitting-wasm/Cargo.toml
- name: Run Clippy
run: cargo clippy --locked --manifest-path browser-runtime/fitting-wasm/Cargo.toml --all-targets -- -D warnings
- name: Build optimized WebAssembly module
run: cargo build --locked --release --target wasm32-unknown-unknown --manifest-path browser-runtime/fitting-wasm/Cargo.toml
- name: Install the pinned wasm-bindgen packager
if: runner.os == 'macOS'
run: cargo install wasm-bindgen-cli --version 0.2.127 --locked
# Compare on the same host architecture that produces the committed assets;
# Cargo's host-dependent metadata changes Wasm function ordering on Linux.
- name: Verify committed browser bindings are reproducible
if: runner.os == 'macOS'
run: npm run check:fitting-wasm
working-directory: webui
- run: cargo fmt --manifest-path browser-runtime/fitting-wasm/Cargo.toml -- --check
- run: cargo test --locked --manifest-path browser-runtime/fitting-wasm/Cargo.toml
- run: cargo clippy --locked --manifest-path browser-runtime/fitting-wasm/Cargo.toml --all-targets -- -D warnings
11 changes: 3 additions & 8 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,7 @@ webui/dist-local/
browser-runtime/.v3-compile.*/
browser-runtime/.local-build/
browser-runtime/vendor/*.tgz
!browser-runtime/vendor/drowse-web-llm-0.2.84-drowse.34.tgz
!browser-runtime/vendor/drowse-web-llm-0.2.84-drowse.36.tgz
!browser-runtime/vendor/drowse-web-llm-0.2.84-drowse.37.tgz
!browser-runtime/vendor/drowse-web-llm-0.2.84-drowse.38.tgz
!browser-runtime/vendor/drowse-web-llm-0.2.84-drowse.39.tgz
!browser-runtime/vendor/drowse-web-llm-0.2.84-drowse.40.tgz
!browser-runtime/vendor/drowse-web-llm-0.2.84-drowse.49.tgz

# Virtual environments
.venv/
Expand Down Expand Up @@ -84,8 +79,8 @@ docs/superpowers/
!/browser-runtime/evidence/README.md
PROVENANCE.md
provenance.json
# Required authored-source manifest, not a run or audit record.
!/browser-runtime/release-inputs/core-manifolds/welcoming.detached/provenance.json
# Required authored-source manifests (the core concepts' provenance), not run or audit records.
!/browser-runtime/release-inputs/core-manifolds/*/provenance.json

# Local research, benchmark reports, and generated verification output.
/DOMAIN_NAME_*.md
Expand Down
24 changes: 10 additions & 14 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,11 @@ anything that crosses the runtime seam.
browser implementations of the seams the shared app imports.
- `vite.config.ts` — what ad-hoc Vite servers in `scripts/` load when they pass
no config: the dashboard's own config from the submodule.
- `scripts/` — unit tests, release and catalog tooling, evidence recording.
- `scripts/` — unit tests, release and catalog tooling.
- `e2e/` — Playwright specs against the hosted dev and preview servers.
- `contact-worker/` — separate Cloudflare Worker with its own package.
- `browser-runtime/` — WebLLM/MLC forks and compiler, the Rust/WASM fitting
kernel, runtime and distribution locks, release inputs, evidence schemas.
kernel, runtime and distribution locks, release inputs.
`browser-runtime/README.md` is the reference for artifacts and release.
- `tests/` — Python tests for the browser-runtime tools (`pytest`, with
`pip install -e "./drowse[dev]"`).
Expand All @@ -59,25 +59,21 @@ Site tests that read shared files exist to check how the hosted shell uses them.
## Parity goldens

`drowse/tests/fixtures/browser/*` are the Python reference outputs the browser
runtime replays (`rank-one-hook-program`, `structured-hook-parity`, the Rust
runtime replays (`browser-core-pack`, `structured-hook-parity`, the Rust
topology tests, `verify-mlc-hook.py`). drowse's own tests pin them against the
engine; regenerate them there, then bump the pin and update the runtime here.
Browser-only fixtures stay in `browser-runtime/fixtures/`.

## Release provenance
## Release

Release builds record this repository's exact HEAD as the source revision
(`drowse-source-url` points at `stdlogits/drowse.ai/tree/<sha>`); the gitlink at
that commit pins the drowse source. Evidence closures may name files inside the
submodule (`drowse/drowse/geometry/...`); the tracked-file checks resolve those in
the submodule's own repository. A submodule bump is a change to executable
source, so evidence recorded against the previous pin no longer qualifies.
`./deploy.sh` builds the release from a clean, pushed HEAD, uploads `webui/dist-hosted` to the
`drowse-web` Pages project with Wrangler and verifies the live site. It skips the runtime-lock and
distribution gates unless given `--full`, which changes to the runtime, its locks or the pin need;
`--dry-run` stops before the upload. The Cloudflare account is not a9's: deploying needs access
granted by its owner. The gated process behind it is in
`browser-runtime/README.md#cloudflare-pages-deployment`.
that commit pins the drowse source. `./deploy.sh` builds the release from a clean HEAD pushed to
`main` (`build:hosted:release`: the lock check, the signed catalog at the distribution lock's URL,
the build and its output checks), uploads `webui/dist-hosted` to the `drowse-web` Pages project
with Wrangler and verifies the live site; `--dry-run` stops before the upload. The Cloudflare
account is not a9's: deploying needs access granted by its owner. Publishing models, packs and a
catalog is `browser-runtime/README.md#release`.

## Commands

Expand Down
8 changes: 5 additions & 3 deletions ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,9 +50,11 @@ syntax, including projections, ablations, manifold positions, phase windows,
probe gates, SAE selectors, and J-lens selectors. Python and TypeScript consume
the same accept/reject fixture. Parsing does not imply execution support: each
expression is reduced to an explicit hook-feature requirement set before GPU
program compilation. The `standard-v3` library profile implements
structured affine and curved programs, exact geometry reads, precomputed SAE
steering/readout, and exact full-vocabulary J-lens steering/readout. The worker
program compilation. The hook ABI v5 library profiles (`standard-v4` with unit
sites, `standard-v4-residual` without) implement structured affine and curved
programs, exact geometry reads, precomputed SAE steering/readout, and exact
full-vocabulary J-lens steering/readout; `standard-v4` adds the neuron and head
unit sites (`browser-runtime/HOOK_ABI.md`). The worker
still validates the library feature manifest, runtime identity, model profile,
and required instrument packs before every program is installed; unsupported
or incompatible combinations fail before generation. Production downloads require
Expand Down
6 changes: 2 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ the browser.
| --- | --- |
| `drowse/` | Submodule pinned to [stdlogits/drowse](https://github.com/stdlogits/drowse): the shared dashboard source (`drowse/webui/src`), the Python reference implementation, and the parity goldens (`drowse/tests/fixtures/browser`) the browser runtime replays. |
| `webui/` | The hosted shell (`hosted/`), site-only UI and runtime (`src/`), static assets (`public-hosted/`), build, release, and test scripts (`scripts/`), Playwright specs (`e2e/`), and the `/api/contact` Worker (`contact-worker/`). |
| `browser-runtime/` | The WebGPU runtime: WebLLM/MLC forks and compiler, the Rust/WASM fitting kernel, runtime and distribution locks, release inputs, and evidence schemas. |
| `browser-runtime/` | The WebGPU runtime: WebLLM/MLC forks and compiler, the Rust/WASM fitting kernel, runtime and distribution locks, and release inputs. |
| `tests/` | Python tests for the browser-runtime build and validation tools. |

The hosted Vite config swaps the dashboard's HTTP runtime for the browser one
Expand Down Expand Up @@ -56,9 +56,7 @@ git add drowse && git commit -m "bump drowse to <commit>"
```

Dependabot proposes the bump weekly. To try an unmerged drowse branch, check it
out inside `drowse/`; commit only pins that exist on drowse's `main`. A pin
bump changes executable source, so release evidence recorded against the old
pin has to be recorded again.
out inside `drowse/`; commit only pins that exist on drowse's `main`.

## Browser edition status

Expand Down
Loading
Loading