This binary is a Model visualization of objects defined in qga. It proves nothing about OP1–OP6.
Spine: qga — manuscript + pedagogical Python
Shared math: flux_hopf_lib
Engine: qga_engine (scenes, Rust math) · qga_gpu (frame)
This repo: inverse-Hopf scan / pixel model. Not a generic renderer.
inner_cone is the sculpture viewer. This crate stays the pixel/scan model. Neither absorbs the other for 90 days; no third Vulkan front-end.
The Realism Interface — a 3D CRT
| Public title | Phosphor Loom |
| Sculpture | The Realism Interface |
| Subtitle | a 3D CRT |
| Crate | shellscan |
| Type (not a repo) | qga_pixel |
| Checkout | git clone; pin qga_engine@7e7866b + qga_gpu@b9c9994, not ~/Projects and not v0.1.0 |
| Remote | github.com/kinaar8340/shellscan |
A CRT writes a glowing surface by sweeping a beam in two fields. This crate writes a glowing shell by lifting a chart through inverse-Hopf in two clocks. The pixel is a local plane-cut of the observer’s double cone. Color is a conic type, not an RGB triple. The shell is a trajectoid, so the screen has an identity and a trench, not a rectangle.
Four layers of one machine, not a mashup render:
| Layer | Role |
|---|---|
| CRT | scan ritual (two-field ledger, persist as age, separator as blanking) |
| Inverse-Hopf loom | write path / address ((\theta,\phi,\psi)) |
| Plane ∩ double cone | pixel algebra (section) |
| Trajectoid shell | faceplate (\gamma(s)) |
qga_gpu owns the frame. inner_cone owns the observer. flux_trajectoid owns the shell (sidecar only). The only new noun is qga_pixel.
This is a Model and a Software fact. It is not a vacuum tube and not a theorem of displays. Claims: docs/SPEC.md.
Tip of the sign-mask fact: c5c5095. Working rule: unfreeze is one labeled sentence, not a new sculpture.
| Slot | State |
|---|---|
| Faceplate + bind | Frozen |
| Two clocks as a picture | Tested, not visible at sculpture distance |
| Picker as writer | Frozen |
SLM sidecar + generic_512 + --mask |
Frozen (loopback on unmasked blob) |
| N1 nested layers in composition | Tested, not visible |
vision_tracker calib + AttentionWell |
Paper + bench solver; not a lens |
Scan A consumes gaze.site |
Frozen |
Gun / LF |
Off |
| HITL / named panel | Not v1 |
| Fig 6.1 four-preset clone | Paper in qga_gpu. Faceplate stays elliptic. docs/ATLAS.md |
| Recipe sidecar | Scored; T=3 field strip and cylinder isoline are sidecar MP4s, not Animation A. inner_cone owns the observer, not the film. Atlas stop. docs/RECIPE.md |
Splat at (4.2), persist (=1): (0.0315R). Rails (0.02R) and (\Delta R=0.08R) both lost as pictures.
Do not: Scan A consume site, HITL Pluto, nested draw, LF, stacked clear windows, wetware pine in demo, four flux kinds on one trench.
- Phase 0 — spec with four claim labels
- Phase 1 — 32-byte
qga_pixel - Phase 2 — two-clock CPU write + persistence tests
- Phase 3 — offline trench bind; headless 8-frame;
demo-tiny-scale window - Phase 4 — faceplate pass, clock fail, gun deferred. docs/TESTIMONY.md
- Phase 5 v1 —
vqc_demoloopback BER 0;generic_512(shell_s=0.5, trench746a79b8…). HITL not v1. docs/PHASE5.md - Phase 6 —
make pickwrites the blob. Not a second loom - Animation A — scan head on (\gamma(s)), layer 0. docs/SCAN.md
- N1 — three confocal trenches, ledger pass, composition fail. docs/NEST.md
-
vision_tracker— real lens (K) + still. Well is specified. Scan A does not consumesite. docs/VISION.md - Sign mask —
--mask {none,antipode,blank,nappe}on the SLM seed. docs/SIGN.md - Fig 6.1 atlas — four isolated loom presets in
qga_gpu, not a composition window on (\gamma). docs/ATLAS.md - Recipe sidecar — pass closed. Cylinder Hypothesis frozen; T=7 occupancy Model + Software fact (P22 vs CK 1.0, vs polyoma (12/72)). T=3 field strip is a sidecar MP4, not Animation A. Not a faceplate verb. docs/RECIPE.md · scores
End goal compatible with the freeze: a pipeline that emits a drive signal (record → dump → phase package → later a named panel / glass). Not a single Vulkan window that is a 4D OAM crystal ball.
The only box still worth ticking on the faceplate is make scan. The recipe sidecar is scored and frozen off (\gamma(s)): atlas stop (no pierid), no bind.
32 bytes, same slot as GpuParticle:
| Field | Meaning |
|---|---|
theta, phi |
(S^2) cell: cutting-plane tilt (hue class) |
psi |
fiber phase (subpixel scan). Antipode mask is (\psi+\pi) on the SLM seed only |
offset |
plane offset (eccentricity / saturation) |
amplitude |
shard length. Blank mask sets seed amp (0). Not R, G, or B |
shell_s |
trench parameter. Do not fold layer into this |
persist |
mote age. Export dumps (0) |
| packed | field:1 | section:2 | layer:8 |
RGB is rgb_preview(), a witness projection onto the inner_cone four-bin palette (elliptic cyan (0.55) / parabolic gold (0.10) / hyperbolic orange (0.30) / flat magenta (0.80)). No fifth hue. Antipode does not change that preview.
Odd field → visual cone (+Z). Even field → feeling cone (+Y). Separator = blanking. Elliptic = compact, no pierce, this side of the separator.
After bind: pos = γ(shell_s). Occupancy (256). RAIL_EPS = 0.02R (collapsed at sculpture distance).
Ten-minute CPU path (no GPU, no sibling checkout):
make test # cargo test: record, clocks, trench bind
# optional, if pytest is installed:
python3 -m pytest tests/test_parse_pixel.py tests/test_sign_mask.py tests/test_recipe.py -q
make test # CPU: record, clocks, trench bind
make headless # 8 frames, elliptic, static_uploads == 1
make demo # tiny window; live_every = 30; gun off
make stills # locked-eye PNGs, no HUD, glow off
make tick # 6s locked strip (clocks-as-picture: failed)
make scan # Animation A: persist peak, lock + crop
make nest-headless # N1 ledger
make nest-stills # N1 composition stills (picture: failed)
make testimony # body stills + orbit of 03_both
make pick # writer: hemisphere → output/pick/qga_pixel.bin
make slm-loopback # recover dump; BER 0 on unmasked blob
make slm-export # generic_512; MASK=none
make slm-mask # antipode seed (ψ+π)
make track-synth # bench points.json (not a live still)
make track-calibrate # solvePnP → calib.json
make track-gaze # EYE=u,v → gaze.json (not consumed)
make recipe # all recipes/*.yaml → output/recipe/ (not γ)
make recipe RECIPE=setal-polyxenes-cylinder
PYTHONPATH=scripts python3 -m recipe score setal-polyxenes-cylinder
PYTHONPATH=scripts python3 -m recipe twist-scan setal-plexippus-cylinder --dense
PYTHONPATH=scripts python3 -m recipe compare capsid-t7-p22 capsid-t7
make film # T=3 field strip MP4 (sidecar; not make scan)
make film-cylinder # isoline Hypothesis; no capsid; not γ(s)
Recipe verbs: --name, score, twist-scan, compare. Carriers: Goldberg (m,n) or open 13×36 cylinder. Scores: docs/recipe-scores/. Bound and freeze: docs/RECIPE.md.
Sidecar (once, not in the frame loop):
make export-shell # optional sidecar; not required to run the crate
Picker: click hemisphere; L lock-to-4; shell_s; F field bit (packed, not a picture); E export.
cargo run --release --bin pick -- --dump
SLM mask:
make slm-export MASK=none # plain package
make slm-mask # antipode seed
# qga_pixel.bin = dump
# qga_pixel_seed.bin = masked seed
Default (\hat E_{\mathrm{def}}=(0,0,1)), ((\theta,\phi){\mathrm{def}}=(0,0)), (i{\mathrm{def}}=40) (even site nearest (+\hat z) on trench 746a79b8…).
(\Delta t=1/30,\mathrm{s}), (\alpha_{\min}=3^\circ), (T_{\mathrm{off}}=2,\mathrm{s}), (\tau=0.8,\mathrm{s}), (\beta=0.3). Presence inside the dead zone keeps attention. Loss of blob starts the timer, then leak. Unmatched samples dropped. locked ≠ attention_state. Faceplate does not read gaze.json.
| Repo | Role |
|---|---|
| shellscan | this crate |
| qga | manuscript |
| qga_engine | math / sim |
| qga_gpu | frame |
| inner_cone | observer / cones |
| flux_trajectoid | faceplate sidecar |
| vqc_demo | loopback + SLM package |
| vqc_proto | LG / typehead (sibling, not a path-dep) |
| wetware_printer | Hopf stylus grower — stay in that crate |
| pic | RubikConeConduit noun; (\sqrt{3}-1) is identity topology, not (\Delta R) |
Geometry libraries are MIT. Several VQC repos are PolyForm Noncommercial plus patent notice US 63/913,110. This repo is MIT.