DAPS: Add intrin specs to nontrin specs

We no longer do intrin specs as a separate stimbuff; rather now we
do them as a specifier segment within the pipeline spec of a normal
nontrin spec.
This commit is contained in:
2026-04-18 12:02:27 -04:00
parent fc1fcae0b0
commit 632a227985
16 changed files with 441 additions and 620 deletions
+29 -28
View File
@@ -18,16 +18,15 @@ descriptors tell it exactly which body spots are raising it.
This direct information also assists SMO in narrowing down the scope of its
DB searches for methods to handle (increase or decrease) the stimval. For
example, for a negtrin whose intrinsic pipeline is declared with a dedicated
`negtrin(...)` spec (and whose sensory data may come from intensity or another
stimbuff via `from-stimbuff`), we don't search DB by trying to match all
possible body spots with their stimvals. Rather, we search for all the body
spots that are described in the stencil. This optimizes DB searches
and also makes negtrin relieving/postrin satisfying searches more explicit
and obviously scoped items of knowledge. The eventual solution is
automatically classified as being a method to relieve/satisfy intrins at
this point on the body and not just hazily generally for "all over the
body". We get to make the new item of knowledge more specific.
example, for a negtrin raised from a `negtrin(...)` segment attached to a
nontrin DAP line (e.g. `pcloudAmbience`), we don't search DB by trying to
match all possible body spots with their stimvals. Rather, we search for
all the body spots that are described in the stencil. This optimizes DB
searches and also makes negtrin relieving/postrin satisfying searches
more explicit and obviously scoped items of knowledge. The eventual
solution is automatically classified as being a method to relieve/satisfy
intrins at this point on the body and not just hazily generally for "all
over the body". We get to make the new item of knowledge more specific.
## Format and Allocation Model
@@ -60,15 +59,14 @@ But it's fine because we don't expect the relationship between SMO and
stimbuff libraries to be inimical enough for security measures like that to
be non-negotiable.
## n-stencils QualeIfaceApi Parameter
## n-stencils Intrin-Segment Parameter
Where a stim buff supports it, a qualeIfaceApi parameter called `n-stencils`
tells the stimbuff how many stencils it can allocate and deliver to SMO
simultaneously for **intrinsic** delivery. Intrinsic rate limiting and stencil
counts apply to **dedicated** intrinsic qualeIfaceApi specs (`negtrin(...)`,
`postrin(...)`) when the implementation attaches them—not to sensory-only
lines such as `pcloudIntensity` or `pcloudAmbience` (see
`docs/design/intrin-thresholds.md`).
Where a stim buff supports it, a parameter called `n-stencils` tells the
stimbuff how many stencils it can allocate and deliver to SMO
simultaneously for **intrinsic** delivery. `n-stencils` belongs on the
`postrin(...)` / `negtrin(...)` segment it rate-limits — **not** on the
nontrin qualeIfaceApi params. Postrin and negtrin get independent
budgets.
The stimbuff must wait until SMO returns stencils to it via postrinEventRdy or
negtrinEventRdy before delivering new intrin events. Stimbuffs can deliver
@@ -77,23 +75,26 @@ have been given to SMO, they must wait until SMO returns a stencil before
raising new intrins.
**Specification:**
- The parameter is specified as part of the `quale-iface-api-params` in the
DAP specification
- The value is an integer representing the maximum number of stencils that
can be allocated simultaneously
- The parameter is specified inside a `postrin(...)` or `negtrin(...)`
segment on a DAP line
- The value is an integer representing the maximum number of stencils
that can be allocated simultaneously for that segment's intrin path
- This parameter controls rate limiting for intrin events
- Stimbuffs must respect this limit and wait for stencil returns before
allocating new ones
**Example (generic dedicated intrin line—shape only; names depend on device):**
**Example (generic shape names depend on device):**
```
+idev|my-device|negtrin(from-stimbuff=someSensoryQuale|n-stencils=4)|someStimBuffApi()|livoxProto1()|SERIAL
+idev|my-device
|negtrin(interest-pc=85|n-stencils=4)|someSensoryQuale()|someStimBuffApi()
|livoxProto1()|SERIAL
```
The Livox Gen1 **`pcloudAmbience`** sensory line does **not** use `n-stencils`;
ambience floats are delivered in the stimulus frame buffer. If Livox adds
`n-stencils` for intrinsic pipelines, it would appear on **`negtrin(...)`** /
**`postrin(...)`** lines (with `from-stimbuff`), not on `pcloudAmbience` itself.
The Livox Gen1 **`pcloudAmbience`** sensory line does **not** use
`n-stencils`; ambience floats are delivered in the stimulus frame buffer.
If Livox adds `n-stencils` for its intrinsic pipelines, it would appear
inside the `postrin(...)` / `negtrin(...)` segments attached to
`pcloudAmbience`, not on `pcloudAmbience` itself.
**Invalid (sensory qualeIfaceApi must not carry intrin-oriented params):**
```