Spaces:
Running
Running
| # @szl-holdings/perception-loop | |
| Operator-loop perception envelope — typed wrapper around browser-native | |
| multi-head perception (face / body / hand / iris / gesture / liveness) | |
| with a single `PerceptionEnvelope` shape. | |
| This is the sibling of `seeing-eye` (agent vision): | |
| - **`seeing-eye`** → *what the agent sees* (image grounding for inference). | |
| - **`perception-loop`** → *who is at the keyboard / in the scene* | |
| (operator presence, reviewer liveness, drone-side scene actors). | |
| Both can emit receipts in the same session without conflict. | |
| ## Worked example | |
| ```ts | |
| import { detect, type DetectorAdapter } from '@szl-holdings/perception-loop'; | |
| const faceAdapter: DetectorAdapter = { | |
| head: 'face', | |
| costMs: 8, | |
| async detect(frame) { return runFaceModel(frame.payload); }, | |
| livenessSignal(frame) { return extractGazeSignal(frame); }, | |
| }; | |
| const envelope = await detect( | |
| { frameHash: hashFrame(frame), tMs: performance.now(), payload: frame }, | |
| [faceAdapter, /* bodyAdapter, handAdapter, ... */], | |
| { budgetMs: 33, consumerArtifact: 'a11oy' }, // 30fps budget | |
| ); | |
| if (envelope.liveness.livenessConfidence >= 0.66) { | |
| // emit `perception.envelope.v1` receipt and let the gate proceed. | |
| } | |
| ``` | |
| ## Receipt contract | |
| The envelope is the source-of-truth for `perception.envelope.v1` | |
| (Doctrine V6, Evidence-First + Policy-Aware). Mandatory fields: | |
| `frameHash`, `ranHeads`, `skippedHeads`, `liveness.livenessConfidence`, | |
| `detectionsSummary`, `budgetMs`, `consumerArtifact`. | |
| ## Source provenance | |
| Architecture and envelope shape re-expressed (not copied) from | |
| `github.com/standardgalactic/human` (Human.js — MIT). Models, weights, | |
| and DOM glue are explicitly **not** in this package — they ship in | |
| adapters per artifact. | |
| ## Consumers | |
| | Artifact | Use | | |
| |-------------------|--------------------------------------------------| | |
| | A11oy | Reviewer-presence gate on high-autonomy approvals | | |
| | Sentra | Operator-loop anomaly during incident response | | |
| | ROSIE Mobile | Drone-POV scene-actor envelopes for evidence ledger | | |
| | ROSIE | Decision Theater operator presence telemetry | | |
| See [`docs/research/perception-bio-synthesis-2026.md`](../../docs/research/perception-bio-synthesis-2026.md) §1. | |
| ## Gotchas | |
| - **WebGPU adapters require `crossOriginIsolated`.** A page that ships | |
| `perception-loop` over a WebGPU adapter must serve COOP/COEP headers | |
| or the adapter silently falls back to WebGL/CPU. Adapter | |
| implementations should fail loud rather than silently downgrade — | |
| silent fallbacks defeat the per-head receipt audit. | |