Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
107 commits
Select commit Hold shift + click to select a range
5286553
docs: v2.0.0 released — STATUS repo section and ledger postscript
a9lim Aug 8, 2026
30b4b78
docs: qALC — quantum-algebraic pillar architecture design contract
a9lim Aug 9, 2026
996f9a4
docs: qALC architecture — incorporate adversarial review round 1
a9lim Aug 9, 2026
a80ccf2
docs: qALC — incorporate review round 2; add reference machine sketch
a9lim Aug 9, 2026
67af866
docs: harmonize qALC into house current-only format
a9lim Aug 9, 2026
27f2c4b
docs: qALC — repair the three round-3 blockers
a9lim Aug 9, 2026
ea4abad
docs: qALC contract frozen — round-4 sign-off; two precision nits landed
a9lim Aug 9, 2026
de08c12
docs: qALC machine — formal draft v0 with transition table and witnes…
a9lim Aug 9, 2026
9881203
docs: qALC machine v0 review incorporated — retractions, defect regis…
a9lim Aug 9, 2026
632cb50
docs: qALC machine formal draft v1 — no-erasure forward machine, colo…
a9lim Aug 9, 2026
e819d80
docs: normalize colour -> color (American spelling, matches future Ru…
a9lim Aug 9, 2026
7f28eec
docs: qALC machine v1 verdict registered — protocol broken by no-cloning
a9lim Aug 9, 2026
8b978fb
docs: qALC route (b) pinned — token-transport v2 brief; STATUS docket…
a9lim Aug 9, 2026
c36577b
docs: ledger — v1 killshot and route (b) decision; session pinned for…
a9lim Aug 9, 2026
bb0e917
qalc: token-machine amendment ratified and applied; v2 design sketch
a9lim Aug 9, 2026
86b9750
docs: harmonize qALC docs to current-only format
a9lim Aug 9, 2026
7a6914d
qalc: three-program kernel v1 — machine-verified, in review
a9lim Aug 9, 2026
fa85d9e
qalc: kernel v1.1 — conformance blocker fixed, amendments applied
a9lim Aug 9, 2026
0c827af
qalc: kernel v1 adversarial verdict — recall CONFIRMED-BROKEN
a9lim Aug 9, 2026
1beee56
qalc: kernel v1.2 — inert replay stack repair, full battery green
a9lim Aug 9, 2026
92c2d0e
qalc: v1.2 re-review registered — transparency criterion adopted
a9lim Aug 9, 2026
e2e12e4
qalc: kernel v1.3 — replay rule, instance frames, transparency pop; t…
a9lim Aug 9, 2026
c5c2b74
qalc: v1.3 review verdict registered — polarity theorem route; in-ses…
a9lim Aug 9, 2026
f540e21
qalc: v1.4 — polarity theorem with closed form; canonical certificate…
a9lim Aug 9, 2026
e674e33
qalc: encoded-fibre amendment ratified-with-edits, applied to archite…
a9lim Aug 9, 2026
44cb164
qalc: coloring theorem confirmed; C-collapse countermodel; the v1.5 e…
a9lim Aug 9, 2026
f8a0875
qalc: kernel v1.6 — the conservation theorem; PASS claimed for the h-…
a9lim Aug 9, 2026
6b38273
qalc: v1.6 fresh review registered — core confirmed, h-fragment PASS …
a9lim Aug 9, 2026
dc10308
qalc: kernel v1.7 — the replay record; WF subtype; h-fragment PASS re…
a9lim Aug 9, 2026
38711ae
qalc: v1.8 — audit #1 FAIL registered; decode records + refire guard;…
a9lim Aug 9, 2026
ed85767
qalc: §15.4 — state the coverage claim exactly; register the HNH load…
a9lim Aug 9, 2026
0193b65
qalc: v1.9 — working-review corrections; docs rewritten current-only
a9lim Aug 9, 2026
1c81b64
qalc: v1.10 — hybrid pipeline, instance-directed certificates, B heal…
a9lim Aug 9, 2026
b995df7
qalc: kernel v1.11 — audit #3 FAIL inverts W; spectator transition wi…
a9lim Aug 9, 2026
bf7c830
qalc: kernel v1.12 — KD names only representation-free keys; parsimon…
a9lim Aug 9, 2026
110682b
qalc: kernel v1.13 — complete KD subtraction; phase-3 greedy rescue; …
a9lim Aug 9, 2026
e3628b7
qalc: v1.14 — regression ten gates; rescue pool completed; claims res…
a9lim Aug 9, 2026
4bb15fc
qalc: v1.15 — non-vacuous coverage; exit-code verdict; the None sente…
a9lim Aug 9, 2026
0371337
docs: decruft pass — current-only across README, AGENTS, STATUS, toke…
a9lim Aug 9, 2026
48c4210
qalc: v1.16 — key-level non-vacuity; the admission claim stated honestly
a9lim Aug 9, 2026
41df238
qalc: v1.17 — §7.1 states the theorem its checker enforces; KD joins …
a9lim Aug 9, 2026
bd887cc
qalc: v1.18 — the checker catches up to the register (popped-F); inst…
a9lim Aug 9, 2026
71bc2da
qalc: v1.19 — deep W4; all six instruments gate; full decruft
a9lim Aug 9, 2026
bae18f1
qalc: kernel v1.20 — W4 closed by enumeration; anshead species typed
a9lim Aug 10, 2026
962a62e
qalc: kernel v1.21 — W0 token grammar; stall class typed; provenance …
a9lim Aug 10, 2026
9a2c9a7
qalc: kernel v1.22 — W0 is the full state language; exact-int bits; p…
a9lim Aug 10, 2026
3cfd709
qalc: kernel v1.23 — always-emit KD bundles; typed t fence; sorted W0…
a9lim Aug 10, 2026
49e25ca
qalc: kernel v1.24 — every fire appends exactly one arm-typed head; a…
a9lim Aug 10, 2026
b661ba2
qalc: kernel v1.25 — wf() total by the W0 gate; alien-gate; ten-mark …
a9lim Aug 10, 2026
2fe9499
qalc: kernel v1.26 — every wf traversal iterative; totality scoped to…
a9lim Aug 10, 2026
5f2f443
qalc: kernel v1.27 — the checker learns what a term is; the structura…
a9lim Aug 10, 2026
60c9ba3
qalc: kernel v1.28 — the linear max-free term validator; wf7 gated by…
a9lim Aug 10, 2026
289f200
qalc: kernel v1.29 — roots and d join purity; index-based binder walk…
a9lim Aug 10, 2026
468de2a
qalc: kernel v1.30 — the full-lp memo restores composition linearity;…
a9lim Aug 10, 2026
5a2dd5c
qalc: kernel v1.31 — the occurrence memo; the memos' honest invariant…
a9lim Aug 10, 2026
9a882c7
qalc: kernel v1.32 — extend-once-per-slice; the KD sibling preempted;…
a9lim Aug 10, 2026
aaca38a
qalc: kernel v1.33 — the lam-count clamp; both provenance misses mark…
a9lim Aug 10, 2026
0fa62ea
qalc: kernel v1.34 — field-presence guards; the defaulted-field fallb…
a9lim Aug 10, 2026
fdef4df
qalc: kernel v1.35 — comments catch up to their code; audit #27 regis…
a9lim Aug 10, 2026
429572d
qalc: kernel v1.36 — regression 31's shells become distinct for real;…
a9lim Aug 10, 2026
21db0ec
qalc: kernel v1.37 — the correction corrected; n−1 stated with its re…
a9lim Aug 10, 2026
70d76d5
qalc: kernel v1.38 — the carrier that was never read; sensitivity bec…
a9lim Aug 10, 2026
29c2cf3
qalc: kernel v1.39 — the walker pops from the other end; corruption l…
a9lim Aug 10, 2026
8e04c1c
qalc: kernel v1.40 — the claim shrinks to what the gates prove; the r…
a9lim Aug 10, 2026
10eaff0
qalc: kernel v1.41 — verdicts were always predicates; the boundary ge…
a9lim Aug 10, 2026
f2c5c34
qalc: kernel v1.42 — the rationale learns which families it describes
a9lim Aug 10, 2026
a7b405d
qalc: audit #35 PASSES kernel v1.42 — the loop closes at thirty-five
a9lim Aug 10, 2026
db729b4
docs: post-PASS current-only pass — STATUS compressed, core docs upda…
a9lim Aug 10, 2026
800d435
Narrow qALC instance identity proof gap
a9lim Aug 10, 2026
7ee6c73
Isolate qALC reachable-recall proof frontier
a9lim Aug 11, 2026
81ac3ff
Add qALC direct RRI proof gate
a9lim Aug 11, 2026
58a0eb2
Record concrete Lean RRI replay
a9lim Aug 11, 2026
61f0466
Sharpen qALC uniform RRI frontier
a9lim Aug 11, 2026
1ad9d53
Close qALC architecture Gate 1
a9lim Aug 12, 2026
44c5962
Decruft qALC Gate 1 surfaces
a9lim Aug 12, 2026
029ec6f
docs: record qalc Gate 2 construction boundary
a9lim Aug 12, 2026
7fa70e4
docs: record qalc Gate 2 physical frontier
a9lim Aug 12, 2026
96adbe5
docs: pin qalc physical refinement frontier
a9lim Aug 12, 2026
613d538
Record qALC physical preparation theorem
a9lim Aug 12, 2026
528cdec
Decruft qALC Gate 2 documentation
a9lim Aug 13, 2026
17065b2
Record qALC first-gate physical refinements
a9lim Aug 13, 2026
64b8774
Close qALC Architecture Gate 2
a9lim Aug 13, 2026
774ece5
Consolidate qALC closure surface
a9lim Aug 13, 2026
7804f6d
Promote qALC reference into repository
a9lim Aug 13, 2026
cfe2d66
Add canonical speed-prior (Levin) surface
a9lim Aug 14, 2026
403ea5d
Clarify floors file scope in speed contract
a9lim Aug 14, 2026
df1e9b5
Park discrete Solomonoff-induction lane in the classical docket
a9lim Aug 14, 2026
d12d4a8
Record coding-theorem residuals; park induction and quantum speed lanes
a9lim Aug 14, 2026
4857fd1
Add spar-complete Rust qALC pillar implementation sketch
a9lim Aug 14, 2026
10956ef
fmt: rustfmt pass over the speed-prior changes
a9lim Aug 14, 2026
e6f7a27
qALC Rust pillar phase 0: schema, codec, Amp, differential fixtures
a9lim Aug 14, 2026
d4abdad
Sketch: record the phase-3 PyReprKey domain growth (shadow c-port RS …
a9lim Aug 14, 2026
5abffc0
Land qALC Rust pillar phase 1: the kernel step table
a9lim Aug 14, 2026
104b869
Fold the phase-1 Codex drift review into the qALC kernel port
a9lim Aug 14, 2026
b616c17
Land the composed-machine core of qALC phase 2 (in progress)
a9lim Aug 14, 2026
525ee96
Close qALC phase 2: Gate-1 composed differential byte-pinned
a9lim Aug 14, 2026
b3f343b
Close qALC phase 3 clean compilation
a9lim Aug 17, 2026
0e8f601
Close qALC phase 4 admission and semantics
a9lim Aug 17, 2026
b23c6f6
Add qALC reference CLI group
a9lim Aug 17, 2026
07e4d2b
Collapse documentation and remove dead paths
a9lim Aug 18, 2026
f2ea4e7
Add qALC finite-clock census
a9lim Aug 18, 2026
07d7149
Optimize qALC census and runtime gates
a9lim Aug 18, 2026
7467583
Trim qALC CI to fixture determinism
a9lim Aug 18, 2026
864a3ac
Decruft qALC census and proof surface
a9lim Aug 18, 2026
0f90ace
Bump blam to 2.1.0 and deduplicate CI
a9lim Aug 18, 2026
0da583c
Extend qALC census convergence record
a9lim Aug 18, 2026
2f0d751
Characterize qALC U M and Omega
a9lim Aug 18, 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
  •  
  •  
  •  
13 changes: 6 additions & 7 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: CI

on:
push:
branches: [main, dev]
branches: [main]
pull_request:
branches: [main]

Expand Down Expand Up @@ -58,10 +58,9 @@ jobs:

stale-invocations:
# One binary, `blam`, with subcommands. Every predecessor bin name
# (qcensus, certsearch, tracescan, …) is gone, so a script or doc
# that still invokes one is a command that cannot run. Historical
# prose under docs/ and ledger/ is exempt — that is the record of
# what WAS — and so is the vendored ref/AIT.
# (qcensus, certsearch, tracescan, …) is gone, so a script or current
# document that still invokes one is a command that cannot run. Only the
# vendored ref/AIT tree is outside this repository's command contract.
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
Expand All @@ -70,7 +69,7 @@ jobs:
bins='census|qcensus|qradical|qcomplement|certsearch|certlean|certdiag|tracescan|slotsearch|oddminproto|solomonoff|adjudicate|normalize|selfint|qskeleton'
hits=$(grep -rnE "target/(release|debug)/($bins)\b|--bin +($bins)\b" \
--exclude-dir=.git --exclude-dir=target --exclude-dir=ref \
--exclude-dir=docs --exclude-dir=ledger . || true)
. || true)
if [ -n "$hits" ]; then
echo "stale invocations of retired binaries:"
echo "$hits"
Expand Down Expand Up @@ -117,7 +116,7 @@ jobs:
- run: bash scripts/spot-check.sh 4 32

lean:
# Kernel-check all 297 divergence certificates (zero sorries, no
# Kernel-check all 305 divergence certificates (zero sorries, no
# mathlib; ~2 s once the pinned toolchain is cached).
runs-on: ubuntu-latest
steps:
Expand Down
52 changes: 52 additions & 0 deletions .github/workflows/qalc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
name: qALC

on:
push:
branches: [main]
paths:
- "qalc/**"
- "src/qalc/**"
- "src/cli/qalc/**"
- "src/cli/main.rs"
- "tests/qalc/**"
- "tests/qalc_cli.rs"
- "tests/qalc_codec.rs"
- ".github/workflows/qalc.yml"
pull_request:
branches: [main]
paths:
- "qalc/**"
- "src/qalc/**"
- "src/cli/qalc/**"
- "src/cli/main.rs"
- "tests/qalc/**"
- "tests/qalc_cli.rs"
- "tests/qalc_codec.rs"
- ".github/workflows/qalc.yml"

concurrency:
group: qalc-${{ github.ref }}
cancel-in-progress: true

permissions:
contents: read

jobs:
fixture-determinism:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v7
- uses: actions/setup-python@v6
with:
python-version: "3.12"
- name: Rust differential fixtures are current
run: |
PYTHONHASHSEED=1 python qalc/export_rust_fixtures.py --check
PYTHONHASHSEED=2 python qalc/export_rust_fixtures.py --check
PYTHONHASHSEED=1 python qalc/export_composed_fixtures.py --check
PYTHONHASHSEED=2 python qalc/export_composed_fixtures.py --check
PYTHONHASHSEED=1 python qalc/export_gate2_fixtures.py --check
PYTHONHASHSEED=2 python qalc/export_gate2_fixtures.py --check
PYTHONHASHSEED=1 python qalc/export_admission_fixtures.py --check
PYTHONHASHSEED=2 python qalc/export_admission_fixtures.py --check
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
!/ref/AIT
/.claude/
__pycache__/
*.olean
.DS_Store
lean/.lake/
/tmp/
Expand Down
88 changes: 66 additions & 22 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
Rust engine for binary lambda calculus / AIT experiments, verified against
Tromp's Haskell. The root `README.md` is the public story and repository map.
`docs/STATUS.md` is the single authority for current measurements and the open
docket. Durable classical and quantum architecture, proof plans, research
notes, and monthly history live under `docs/`. Canonical measurement outputs
live in `data/`; standing protocols are runnable from `scripts/`.
docket. Durable classical and quantum architecture, proof plans, and research
notes live under `docs/`. Canonical measurement outputs live in `data/`;
standing protocols are runnable from `scripts/`.

This file carries the conventions and operational facts that must be in hand
before changing the project. Read `docs/STATUS.md` before research or docket
Expand All @@ -26,16 +26,18 @@ work; do not duplicate its moving state here.
arms only exist under default features), then a census spot-check
(`scripts/spot-check.sh`) whose halt counts are
bit-identical to `data/classical/census_table.txt` at the sizes touched.
Halts have been invariant through every change in history; treat drift as a
bug in the change, not a discovery.
Canonical halt counts are invariants; treat drift as a bug in the change,
not a discovery.
- `data/` holds results, not scratch, and only canonical generations live in
the tree. The classical census, frontier, and Ω/K outputs are in
`data/classical/`; the operator census is in `data/quantum/`; certificate
evidence and self-interpreter logs have their own subdirectories. Filenames
are unversioned where a bound can advance: the covered range is stated in
the file and `docs/STATUS.md`, superseded generations live in git history,
and a bound bump regenerates in place. Regenerate rather than hand-edit via
`scripts/census-regen.sh` and `scripts/solomonoff-regen.sh`.
`scripts/census-regen.sh`, `scripts/solomonoff-regen.sh`, and
`scripts/qalc-census-extend.sh`. The qALC finite-clock convergence record is
in `data/qalc/`.

## Conventions that will bite you

Expand All @@ -62,11 +64,48 @@ work; do not duplicate its moving state here.

## The engines

The library is three layers — `blc` substrate, symmetric `classical` and
`quantum` pillars, `lab` behind its own feature — and one binary, `blam`,
whose subcommands live in `src/cli/`. Lab-gated subcommands are recognised
without the feature and say how to get themselves; do not "fix" that by
deleting the arm.
The library has a `blc` substrate, three semantic pillars (`classical`,
`quantum`, and `qalc`), and a `lab` layer behind its own feature. The `blam`
binary dispatches through `src/cli/`. Lab-gated subcommands are recognised
without the feature and explain how to enable themselves; do not delete those
dispatcher arms.

qALC is quantum *control*: a storeless machine whose runtime states lie in
ℓ² over token configurations. `docs/quantum-algebraic/architecture.md` is the
semantic contract, `token.md` fixes token identity, `kernel.md` is the current
v1.43 rule register, and `rust-pillar.md` maps the live Rust implementation.
`src/qalc/` contains the exact amplitude domain, wire codec, kernel and
full-normal-form machine, linear-SSA compiler, native-CNOT shadow, structural
admission, finite checker, and total public semantics. The default-built
`blam qalc` group exposes `run`, `gram`, `compile`, `fixtures`, and the separate
measured `census` layer over ordinary prefix-free `p h t` invocations.
The census's 1,000-state admission preflight is one-sided: success is a
complete checked admission, but failure is only a scheduling signal and must
retry the canonical 300,000-state selector. Retries run in a separate pool
(`--retry-threads`, auto-capped at eight); never turn preflight failure
into a conservative verdict. Selection/evolution phase timings are stderr-only
and deliberately absent from deterministic reports and checkpoints.

The Python/Lean reference, batteries, proof records, and fixture exporters live
in `qalc/`. Generated kernel fixtures, composed Gate-1 cores, the mixed Gate-2
carrier, and the embedded admission selector are regenerated only through their
four named exporters. The Rust differential tests regenerate the fixtures
byte-identically and check the 7,507-state Gate-1 carrier and 917-state Gate-2
carrier, including predecessor inverses and totalization probes. Error arms not
reached by those carriers remain review-pinned rather than theorem-backed.
Gate 1 supplies exact H/T scattering, full-NF readback, typed terminal sectors,
validated finite admission, and the algorithmic-information objects. Gate 2
supplies the unbounded arbitrary-circuit H/T/CNOT refinement from a common
reachable input cut to exact ideal columns. The stronger ambient lifecycle
theorem remains optional, and raw-WF recall is noninjective. qALC work must
leave classical and qBLC rows bit-identical.

`gate1_check.py` and `gate2_check.py` are explicit local runtime/Python gates.
The qALC CI workflow runs neither those exhaustive batteries nor Lean: it owns
only fixture determinism, while the ordinary CI release suites own the Rust
differentials. Run `gate1_lean_check.py` and `gate2_lean_check.py` manually only
when the Lean/generated-proof surface or its exporters intentionally move; do
not rerun them for Rust-only changes.

`classical::ladder` owns the halting ladder, and every classical driver
(`census`, `adjudicate`, `solomonoff`) adjudicates through it: prescan →
Expand Down Expand Up @@ -117,6 +156,14 @@ ambient load (the measurements and the scheduler A/B are in STATUS).
- `blc::enumerate`: tasks are bit-reversal-interleaved on purpose.
Expensive terms cluster by enumeration prefix and rayon splits by index
range; do not simplify the order back.
- The `solomonoff` driver also owns the speed-prior (Levin) surface
(`docs/classical/speed.md` is the contract). Two unit grids coexist in its
outputs: m/Ω masses are 2⁻⁶⁴ units, speed masses are 2⁻¹²⁸ units with
directed rounding — do not mix them when post-processing. Unknowns are
charged on the upper side only, at t-floors read from the machine's
fuel-death counters (`Machine::last_steps`; on a β death the counter
includes the contraction it could not fund). `data/classical/speed_floors.txt`
is part of the certificate-trim protocol, not a diagnostic.
- The census memos live in the census driver, deliberately outside the ladder:
they reuse one term's fate for a *different* term, which is a fact about an
enumeration rather than about a term. Keeping them out is what lets
Expand Down Expand Up @@ -179,14 +226,12 @@ ambient load (the measurements and the scheduler A/B are in STATUS).
steps / 100k nodes / 4096 lemma steps, measured kill-equivalent to the
battery's 2000/200k (`::THOROUGH`). A complete four-rung frontier sweep
(v1 + HTR + selector + PDR) measured 981.3 s wall / 6,630 s user at
`--threads 8` on the M5 Max over the 4,235-term frontier
(2026-08-08, the sweep that discovered the eight PDR kills) — 1.84
core-hours, well under the pre-measurement four-core-hour estimate,
wall tail-bound as predicted.
`--threads 8` on the M5 Max over the 4,235-term frontier that produced the
eight canonical PDR kills — 1.84 core-hours, with a tail-bound wall time.
For a new kill, append to
`data/certificates/ratchet_kills.tsv`, run `scripts/recert-kills.sh`,
regenerate the frontier with `scripts/census-regen.sh`, trim Ω by exact
fraction arithmetic, and ledger it. The soundness battery is a crate unit
fraction arithmetic, and update `docs/STATUS.md`. The soundness battery is a crate unit
test at `src/classical/certificate/battery.rs` — inside the crate so it runs
under plain `cargo test` while discovery stays off the default public
surface: 196,848 provable halters ≤28 bits through the exact sweep
Expand Down Expand Up @@ -219,9 +264,8 @@ ambient load (the measurements and the scheduler A/B are in STATUS).
## Collaboration

Claude and Codex are co-equal here; handoffs run over the `gaslamp` CLI.
Existing threads: `blc-conformance` (certificate exchange),
`blc-interpreter` (design theory), `blc-interp-search` (slot-search spec),
`blc-qblc` (qBLC design ratification), `qblc-selfint` (self-interpretation and
bisimulation), `qblc-omega-witnesses` (dyadicity hunt and phase-2 design), and
`blam-reshape` (v2 refactor design ratification and reviews).
Send raw evidence—encodings, diffs, measured bits—not summaries.
Use the other seat for a genuinely independent read, adversarial pressure, or
verification. Whoever owns the task owns the synthesis. Send raw evidence—
encodings, diffs, measurements, and exact claims—not a softened summary.
When independence matters, open a fresh context instead of reviving one that
already contains the design argument.
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "blam"
version = "2.0.0"
version = "2.1.0"
edition = "2021"
rust-version = "1.87"
description = "Binary lambda calculus engine for algorithmic information theory: exhaustive term censuses, busy-beaver frontiers, exact Solomonoff/Kolmogorov measurements"
Expand Down
Loading