Nishi Family › Compare › THERAPEUTIC HAPTICS AND SEXUAL HEALTH

Nishi Compare · capabilities, evidence and delivery

THERAPEUTIC HAPTICS AND SEXUAL HEALTH

Compare capabilities and delivery evidence. Source discovery, qualification, deployment and accepted outcomes are separate; an open contract names work still to verify.

Device abstraction, measured touch, and a privacy floor cleared BEFORE anything is collected

Overview

The purpose, declared position and evidence coverage of this domain. Source presence and completed acceptance are different measures.

Where we are. Measured 2026-08-25. WORKING, and all of it inherited rather than built for this domain: an XPBD soft-tissue solver with layered compliance, gate-proven, which is the only thing that can make touch mean anything; a hierarchical k-anonymity release with COMPLEMENTARY SUPPRESSION, which is the hard half of not leaking a small cell by subtraction; the pure k-floor primitive underneath it; GDPR and CCPA subject-request and breach clocks as pure functions; and an anonymising transport interface that makes anonymity an interface decision instead of a per-caller discipline. OPEN, and it is the whole domain: there is NO device layer of any kind, the solver never reports a reaction FORCE so no feedback loop can close, there is no consent object, no admitted clinical instrument, and no release gate binding the privacy floor to any output. This domain currently collects nothing, which is the correct state until those rows land.

Where we need to go. A sovereign therapeutic-haptics substrate: measured touch from our own tissue solver, a device seam that interoperates rather than reinvents, and a privacy floor that is cleared BEFORE the first byte is collected -- not retrofitted after.

The unit. Newtons (or the stated integer scale) for force; microseconds for the touch loop; k for the anonymity floor; days for statutory clocks. A comfort or efficacy claim has no unit here and is therefore not made.
Where we already stand: 0 u. Entirely on the substrate. The tissue model and the privacy floor are both live and proven elsewhere in this estate. Nothing between them exists.
Cost to a first honest touch loop: 11 u. HC1 force readback (shared with softbody SB2) and HC2 one device class driven end to end, with HC3 measuring the loop against the banked 11 ms budget.
Cost to collect anything at all, lawfully: 14 u. HC4 consent as a revocable ledger row and HC6 the release gate. Neither is optional and neither is downstream of the fun part -- they gate it.

Research bar. Buttplug.io and Intiface is measured on open-source abstraction over intimate hardware across many devices and transports, with a public protocol and reference implementation. Theirs: front door and repository fetched and content-pinned 2026-08-25, grade-1 for existence and role. Ours: The abstraction to interoperate with. Rebuilding a working wire protocol for its own sake would be sovereignty theatre; owning the FORCE MODEL underneath it is the part nobody else has. Specific capability comparisons beyond this are deliberately not made from recollection..

Latest recorded release

No valid dated release entry is recorded for this domain.

Release entries describe recorded changes; they do not establish that every capability passed evaluation.

6 of 11 capability source symbols found|0 of them authored stronger-claims|5 open|coverage 545/1000|adoption 5 full / 1 partial

Evidence profile — what the gaps on this board actually are

Measured by nx_swcompare_evidence, read back by nx_evprofile_lib. Every figure is a count with its denominator — there is deliberately no score, no grade and no percentage anywhere in this band, because a stored scalar is a field a seat can edit and a counted partition is not.

evidence|grounded 6/6|unsupported 0|gates green 1/1|proven able to fail 0/1|never bitten 1|green at 0/0 0|open gaps 5|of them unnamed 0|of them proof withheld 0|flips ready 0

proven able to fail counts the gates that have a RECORDED RED — nx_gate_bite mutated the gate subject, rebuilt it, watched the gate go red, and that record is inside the shared TTL. never bitten is its complement over the same denominator: those gates ran and were green, and nothing has ever shown them able to detect anything, so their green is a statement about this run and not about the gate. green at 0/0 is a separate and much weaker observation — the gate printed GREEN on a zero denominator, so its own tooth counter says it examined nothing. A gate can be green, non-zero, and still never bitten; that is the common case and it is now visible instead of implied.

partition: grounded + unsupported = 6 vs present 6 · named + unnamed + withheld = 5 vs open 5 · both reconcile

liar-kill conj=GPQN · all four conjuncts held

graded document: BUILDROOT tree, 9210 bytes · gates map: PRIMARY · stamped 3d 22h ago · source ../knowledge/status/evstamp_hapticcare.verdict

Gap classWhat it is, and the work it names
NONENo gap class fires on this board: every published claim is grounded, the declared gates ran and were green, no watch contract is unnamed or already landed, and the stamp is inside its TTL. That is a statement about evidence, not about depth, scale or polish.
This band reports the referee counts. The per-axis worklist rows — which axis is unsupported, which watch is ready to flip, which gap is unnamed — are printed by nx_swcompare_evidence hapticcare itself and are not carried on the stamp, so this page names the classes and the producer names the rows. That split is stated rather than hidden: a count without a worklist is not actionable, and this band is honest about which half of that it is.

Production map

Follow the dependencies, declared acceptance criteria and recorded priorities. Inspect source binding before treating a rank as executable work.

Ranking source binding: UNBOUND. Recorded priorities require current acceptance evidence and resource checks before execution.

Recorded ranking withheld

Current prerequisite graph is invalid or unavailable. Historical rank data is retained, but cannot establish a current order. Latest execution outcome is unverified.

Declared roadmap — contract, acceptance, executor, effort

RungCloses withDefinition of done (pre-declared)ExecutorEst.
Contact reaction force out of the tissue solver (HC1)
after
st_contact_forceA signed contact force in stated units, monotonic in penetration depth, distinguishing a soft layer from the stiff structure beneath, bite-proven against a known load. SHARED with softbody SB2 -- one organ, counted once, not built twice.Organ3 u
One device class driven end to end from a NishiLang organ (HC2)
after HC1
hc_device_openA real device of one named class opened, driven and closed from an organ, with the transport named and a neg-control proving a refused or absent device is reported by name rather than silently no-oping.Organ8 u
Touch-loop latency measured against the banked budget (HC3)
after HC2
hc_loop_usReports microseconds round trip from contact event to device command and REFUSES above knowledge/gamefeel_oracle.conf frame_budget_ms_90hz, with js_block_ms as the second conjunct. Same shape as softbody SB1 and it should reuse that organ, not fork it.Organ3 u
Consent as a revocable, scoped, provable ledger row (HC4)
after
hc_consent_grantA grant is a durable row carrying scope and expiry; revocation takes effect at the NEXT call rather than eventually; and a neg-control proves a revoked or expired grant is refused BY NAME. Nothing in this domain may read or write subject data without one.Organ6 u
One published instrument admitted as data (HC5)
after HC4
hc_instrument_rowA published, validated instrument carried VERBATIM as conf rows with its citation in the row, scored by a pure function -- the pattern communitypulse already proved with a 12-item measure. Never paraphrased into code, because a paraphrased instrument is a different instrument.Data4 u
The release gate that binds the two halves (HC6)
after HC4
hc_release_gateNo aggregate leaves this domain unless it passed the k-floor WITH complementary suppression and every contributing grant is unrevoked. Bite-proven twice: a planted under-floor cell must be refused, and a planted revoked grant must be refused, each naming its rule.Organ5 u

Milestones

MilestoneRungsCumulative
M1 · Touch that is measured rather than assertedHC1,HC2,HC314 u
M2 · Lawful to collectHC4,HC611 u
M3 · Outcomes that can be citedHC54 u
Ladder verdict. NOT DECLARED. This board names no dated best-in-class or frontier target and no rung roles (sotatarget and rungrole rows on its plan); the ranker labels it NO-LADDER until it does, and until then its rungs climb toward a target nobody has written down. Bars read NO-BAR against the current month 2026-10.
Bar freshness, counted
ClassCountNote
bars0sotabar rows on the plan
fresh0the bar month is the current month
attested0an older bar with a this-month barscan reporting no newer entry
stale0a this-month scan saw a newer month the bar ignores
unattested0nobody looked this month
malformed0a sotabar row missing a field
duplicate0bar ids an earlier row already carries
bars, summed0RECONCILED: the parts sum to the total 0
current month2026-10the month every bar is judged against
Treatment verdict. NOT DECLARED. No rung on this board declares its three-step treatment (a treat row naming the MCP row, the API route, the primitive it composes, the workflow that composes it and the agent beat that runs it); the ranker labels every rung TREATMENT-UNDECLARED until it does.

Inspect a rung and its prerequisites

Declared nodes 6. Rank input binding: UNBOUND. Dependency order is authored. Implementation, acceptance evidence, authority and resource readiness are unverified. No action is recommended or dispatched here.

Plan SHA-256 ff0a53348472eae6eec67743f9327bd7b75d9b9714728e589c5f0cb61b9f9337. Target rows 0; role rows 0. Existing risks and release worklog retain their own scope; no node completion is inferred.

Invalid declared graph. Malformed rows or IDs 2; duplicate IDs 0; duplicate prerequisites 0; missing prerequisites 0; cyclic or cycle-dependent nodes 0. Node paths withheld.

Learning and practice paths

No structured learning path is declared for this plan. Existing research, roadmap and worklog remain available above.

Rung dossiers — every record that bears on a rung, in one place

Joined by symbol, never typed. Each dossier is assembled on every publish from the rows this board already carries: the plan's rung row, the matrix row that carries its contract symbol (its status re-measured by the one symbol ruler), the gate the organ declares and the verdict the evidence referee recorded on its last run, the reference marks in the rung text, the design rows that name the rung and the work log filed against it. The capability matrix links each cell to its dossier and each dossier links back to its cell and forward to the rungs it stands on; a dependency naming no rung on this plan is written as UNRESOLVED rather than linked. Absences are named: NO-MATRIX-ROW, NO-GATE-DECLARED, UNRECORDED.
Gate verdicts: UNSTAMPED — no per-gate verdict artifact is published for this domain yet (nx_swcompare_evidence hapticcare writes it beside its stamp); every gate below reads UNRECORDED until it runs.
Gate declarations: knowledge/organ_gate.conf read from this working directory (1 rows) and from the estate root (196 rows); rows in both counted once: 0; declarations read: 197. Every declaration in either copy counts, so a stub beside the publisher can never hide the root.
HC1 Contact reaction force out of the tissue solver · cell PRESENT · gate NO-GATE-DECLARED
Contractst_contact_force · executor Organ · 3 u · stands on
Definition of doneA signed contact force in stated units, monotonic in penetration depth, distinguishing a soft layer from the stiff structure beneath, bite-proven against a known load. SHARED with softbody SB2 -- one organ, counted once, not built twice.
Matrix cellcontact-force-readback · runtime/nx_softtissue.nx · PRESENT decl
GateNO-GATE-DECLARED — knowledge/organ_gate.conf carries no row for nx_softtissue; declare nx_softtissue TAB <gate> and the ship loop proves it and the verdict lands here.
Work logno log row names this rung yet
HC2 One device class driven end to end from a NishiLang organ · cell WATCHING · gate NO-GATE-DECLARED
Contracthc_device_open · executor Organ · 8 u · stands on HC1
Definition of doneA real device of one named class opened, driven and closed from an organ, with the transport named and a neg-control proving a refused or absent device is reported by name rather than silently no-oping.
Matrix celldevice-protocol-abstraction · runtime/_hdl_build/nx_anon_transport.nx · WATCHING decl
GateNO-GATE-DECLARED — knowledge/organ_gate.conf carries no row for nx_anon_transport; declare nx_anon_transport TAB <gate> and the ship loop proves it and the verdict lands here.
Work logno log row names this rung yet
HC3 Touch-loop latency measured against the banked budget · cell WATCHING · gate NO-GATE-DECLARED
Contracthc_loop_us · executor Organ · 3 u · stands on HC2
Definition of doneReports microseconds round trip from contact event to device command and REFUSES above knowledge/gamefeel_oracle.conf frame_budget_ms_90hz, with js_block_ms as the second conjunct. Same shape as softbody SB1 and it should reuse that organ, not fork it.
Matrix celllatency-loop-budget · runtime/_hdl_build/nx_gamefeel_oracle_gate.nx · WATCHING decl
GateNO-GATE-DECLARED — knowledge/organ_gate.conf carries no row for nx_gamefeel_oracle_gate; declare nx_gamefeel_oracle_gate TAB <gate> and the ship loop proves it and the verdict lands here.
Work logno log row names this rung yet
HC4 Consent as a revocable, scoped, provable ledger row · cell WATCHING · gate NO-GATE-DECLARED
Contracthc_consent_grant · executor Organ · 6 u · stands on
Definition of doneA grant is a durable row carrying scope and expiry; revocation takes effect at the NEXT call rather than eventually; and a neg-control proves a revoked or expired grant is refused BY NAME. Nothing in this domain may read or write subject data without one.
Matrix cellconsent-as-a-ledger-row · runtime/nx_privacy_lib.nx · WATCHING decl
GateNO-GATE-DECLARED — knowledge/organ_gate.conf carries no row for nx_privacy_lib; declare nx_privacy_lib TAB <gate> and the ship loop proves it and the verdict lands here.
Work logno log row names this rung yet
HC5 One published instrument admitted as data · cell WATCHING · gate NO-GATE-DECLARED
Contracthc_instrument_row · executor Data · 4 u · stands on HC4
Definition of doneA published, validated instrument carried VERBATIM as conf rows with its citation in the row, scored by a pure function -- the pattern communitypulse already proved with a 12-item measure. Never paraphrased into code, because a paraphrased instrument is a different instrument.
Matrix cellclinical-instrument-as-data · runtime/nx_privacy_lib.nx · WATCHING decl
GateNO-GATE-DECLARED — knowledge/organ_gate.conf carries no row for nx_privacy_lib; declare nx_privacy_lib TAB <gate> and the ship loop proves it and the verdict lands here.
Work logno log row names this rung yet
HC6 The release gate that binds the two halves · cell WATCHING · gate NO-GATE-DECLARED
Contracthc_release_gate · executor Organ · 5 u · stands on HC4
Definition of doneNo aggregate leaves this domain unless it passed the k-floor WITH complementary suppression and every contributing grant is unrevoked. Bite-proven twice: a planted under-floor cell must be refused, and a planted revoked grant must be refused, each naming its rule.
Matrix celloutcome-reporting-gate · runtime/nx_kfloor_lib.nx · WATCHING decl
GateNO-GATE-DECLARED — knowledge/organ_gate.conf carries no row for nx_kfloor_lib; declare nx_kfloor_lib TAB <gate> and the ship loop proves it and the verdict lands here.
Work logno log row names this rung yet

dossiers=6 cells_joined=6 no_matrix_row=0 (sum 6) gates_recorded=0 gates_unrecorded=0 no_gate_declared=6 (sum 6 of cells_joined) evgates=UNSTAMPED

Capability comparisons

Compare the field, search individual capabilities and open their source and adoption evidence. Documented presence does not establish comparative quality.

Position map — centrality and distinctiveness

The four-quadrant map the field uses for brand strategy (Dawar and Bagga, HBR June 2015), re-derived from this matrix on every publish. Centrality is the share of the category's feature mass a player covers, each feature weighted by how many hold it; distinctiveness is the average lead over each rival on the rows the player holds; breadth is the depth-weighted share of the whole matrix (the bubble); depth is how deeply the rows held are held; momentum is the day-over-day move off the spine (green rising, red falling, grey until day two); the dashed path runs first day → previous day → today. Dividers are the category means. Axes are fitted to the field of play, so read the tick numerals, not the frame. Rival marks are documented presence, so a rival's position reads the record, never its quality. The picture grades its own readability below; the table beside it is the same data for a screen reader or a second method.

Rows. 11 feature rows mapped of 11 matrix rows; 0 substrate rows (kernels, bounds and instruments the plan's rungrole marks substrate) are the estate's scaffolding, not category features, and stay off the map
Views. 2D cut: centrality, distinctiveness · 3D cube: centrality, distinctiveness, breadth · axes registered: centrality, distinctiveness, breadth, depth, momentum · a board picks its own in knowledge/compare/hapticcare.cdmap (cut|x|y, cube|x|y|z); absent = the HBR defaults
Position map, two-dimensional cutOne bubble per player. Bubble area is breadth, the ring colour is momentum, the dashed lines are the category means, and both axes are fitted to the field of play with their tick numerals shown. Every value is repeated in the table that follows. 350 400 450 500 550 600 650 100 200 300 400 500 600 700 800 centrality (permil, fitted 350–650) distinctiveness (permil, fitted 100–800) mean 440 mean 332 Unconventional Aspirational Peripheral Mainstream Nishi, centrality 600, distinctiveness 666, breadth 363, depth 666, momentum 0 Buttplug.io, centrality 400, distinctiveness 500, breadth 90, depth 1000, momentum 0 Lovense SDK, centrality 400, distinctiveness 166, breadth 60, depth 666, momentum 0 OSSM, centrality 400, distinctiveness 166, breadth 60, depth 666, momentum 0 XToys, centrality 400, distinctiveness 166, breadth 60, depth 666, momentum 0 Nishi Buttplug.io Lovense SDK OSSM XToys

bubble area = breadth · ring = momentum (green rising, red falling, grey until day two) · dashed = category means · axes fitted to the field of play: centrality 350–650, distinctiveness 100–800 of 0–1000 permil (the full range put every player in one corner)
readability of the 2D cut, self-graded by the layout ruler: label overlaps 0 · labels over marks 0 · off-canvas 0 · unresolved labels 0 · mark overlaps 3 (a fact of the data: two players that close are that close) · data spread 689 permil of the plot · quadrant words unseated 0
text contrast, measured with wcag2-ratio (floors from contrast.conf), light theme: labels 16.24 (floor 4.50) · notes 16.24 (floor 4.50) · quadrant words 5.89 (floor 4.50) · tick numerals 5.89 (floor 4.50) · axis titles 5.59 (floor 4.50) · dark theme: labels 13.78 (floor 4.50) · quadrant words 5.55 (floor 4.50) · axis titles 5.97 (floor 4.50) · dark classes under their floor 0 (one figure serves both themes: a dark shortfall is a token to fix, never a class to hide) · classes refused under their floor 0 (a refused class is not drawn; the scale classes are measured, never hidden) · export: SVG PNG (receipt, rendered by the estate's own rasteriser from this page)
Position map, three-dimensional cubeThe same players in an isometric cube. Each axis is fitted to its own field of play and carries numerals on the floor grid and the vertical axis; each bubble drops a dotted line to its floor shadow so height reads as height. Values are in the table that follows. 350 400 450 500 550 600 650 100 200 300 400 500 600 700 800 0 100 200 300 400 centrality distinctiveness breadth Lovense SDK: centrality 400, distinctiveness 166, breadth 60 OSSM: centrality 400, distinctiveness 166, breadth 60 XToys: centrality 400, distinctiveness 166, breadth 60 Buttplug.io: centrality 400, distinctiveness 500, breadth 90 Nishi: centrality 600, distinctiveness 666, breadth 363 Nishi Buttplug.io Lovense SDK OSSM XToys
axes fitted: centrality 350–650 · distinctiveness 100–800 · breadth 0–400 permil · farther bubbles are painted first, nearer ones over them · the floor shadow is each bubble's (x, y) at height 0
readability of the 3D cube, self-graded by the layout ruler: label overlaps 0 · labels over marks 0 · off-canvas 0 · unresolved labels 0 · mark overlaps 3 (a fact of the data: two players that close are that close) · data spread 175 permil of the plot
Position map, small multiplesEvery pair of registered axes as one small cut. Each panel fits both axes to the field of play, the dashed lines are the category means, bubble area is breadth and the ring colour is momentum; the legend below names the colours. 350 650 100 800 distinctiveness vs centrality Nishi: centrality 600, distinctiveness 666 Buttplug.io: centrality 400, distinctiveness 500 Lovense SDK: centrality 400, distinctiveness 166 OSSM: centrality 400, distinctiveness 166 XToys: centrality 400, distinctiveness 166 350 650 0 400 breadth vs centrality Nishi: centrality 600, breadth 363 Buttplug.io: centrality 400, breadth 90 Lovense SDK: centrality 400, breadth 60 OSSM: centrality 400, breadth 60 XToys: centrality 400, breadth 60 350 650 600 1000 depth vs centrality Nishi: centrality 600, depth 666 Buttplug.io: centrality 400, depth 1000 Lovense SDK: centrality 400, depth 666 OSSM: centrality 400, depth 666 XToys: centrality 400, depth 666 350 650 480 520 momentum vs centrality Nishi: centrality 600, momentum 500 Buttplug.io: centrality 400, momentum 500 Lovense SDK: centrality 400, momentum 500 OSSM: centrality 400, momentum 500 XToys: centrality 400, momentum 500 100 800 0 400 breadth vs distinctiveness Nishi: distinctiveness 666, breadth 363 Buttplug.io: distinctiveness 500, breadth 90 Lovense SDK: distinctiveness 166, breadth 60 OSSM: distinctiveness 166, breadth 60 XToys: distinctiveness 166, breadth 60 100 800 600 1000 depth vs distinctiveness Nishi: distinctiveness 666, depth 666 Buttplug.io: distinctiveness 500, depth 1000 Lovense SDK: distinctiveness 166, depth 666 OSSM: distinctiveness 166, depth 666 XToys: distinctiveness 166, depth 666 100 800 480 520 momentum vs distinctiveness Nishi: distinctiveness 666, momentum 500 Buttplug.io: distinctiveness 500, momentum 500 Lovense SDK: distinctiveness 166, momentum 500 OSSM: distinctiveness 166, momentum 500 XToys: distinctiveness 166, momentum 500 0 400 600 1000 depth vs breadth Nishi: breadth 363, depth 666 Buttplug.io: breadth 90, depth 1000 Lovense SDK: breadth 60, depth 666 OSSM: breadth 60, depth 666 XToys: breadth 60, depth 666 0 400 480 520 momentum vs breadth Nishi: breadth 363, momentum 500 Buttplug.io: breadth 90, momentum 500 Lovense SDK: breadth 60, momentum 500 OSSM: breadth 60, momentum 500 XToys: breadth 60, momentum 500 600 1000 480 520 momentum vs depth Nishi: depth 666, momentum 500 Buttplug.io: depth 1000, momentum 500 Lovense SDK: depth 666, momentum 500 OSSM: depth 666, momentum 500 XToys: depth 666, momentum 500
Nishi Buttplug.io Lovense SDK OSSM XToys
10 panels over 5 registered axes, every pair once (the lower axis on x, the higher on y) · each panel fitted to its own field of play, first and last tick numerals shown · no labels in a small cut, the legend names the colours; the grade below reports the mark terms only (MM summed over the panels, spread averaged)
readability of the small multiples, self-graded by the layout ruler: label overlaps 0 · labels over marks 0 · off-canvas 0 · unresolved labels 0 · mark overlaps 36 (a fact of the data: two players that close are that close) · data spread 593 permil of the plot
PlayerQuadrantcentralitydistinctivenessbreadthdepthmomentumRows heldDays on spineFirst seen
NishiAspirational6006663636660 since 2026-09-236102026-09-15
Buttplug.ioUnconventional4005009010000 since 2026-09-231102026-09-15
Lovense SDKPeripheral400166606660 since 2026-09-231102026-09-15
OSSMPeripheral400166606660 since 2026-09-231102026-09-15
XToysPeripheral400166606660 since 2026-09-231102026-09-15
DayMatrix rows reviewedPlayers recorded
2026-09-15115
2026-09-16115
2026-09-17115
2026-09-18115
2026-09-19115
2026-09-20115
2026-09-21115
2026-09-22115
2026-09-23115
2026-10-08115

players 5|matrix rows 11|feature mass 10|centrality mean 440|distinctiveness mean 332|axes 5|spine days 10 (shown 10)|rows written today 0|readability defects 2D 0 cube 0|spine knowledge/status/cdmap/hapticcare.spine

How to read this evidence. A Nishi source mark records whether the named symbol is declared in the selected source file. It does not establish working behavior or accepted delivery. A watching tag names an expected source entry; discovering it updates source coverage only. A dark tag means the file exists but the named symbol was not found: inspect the source and contract before assuming the capability is missing or renaming code. Peer codes are authored assessments; unassessed means no comparison is established, not absence. Qualification, deployment identity, runtime observations and acceptance must carry their own evidence. Adoption records the catalog's observed path through source, build, promotion, registration and invocation; libraries use importer evidence and gates use declared execution surfaces. A full catalog path does not establish quality, freshness or a successful user outcome. Partial and unknown states retain their stated next action. Census stamps: importers asof 1790637268, gate census asof 1790104131 (unix seconds; -1 = census absent).

Capability matrix — measured against source

◉ authored stronger claim; source present● present◐ partial○ absent? unassessed; excluded from relative comparison · click any capability for its evidence

Peer cell coverage: authored assessed 44, unassessed 0. Authored assessments are not verified outcomes.

CapabilityNishiButtplug.ioLovense SDKOSSMXToys
tissue-force-modelMeasured: st_substep exists in runtime/nx_softtissue.nx, verified at emit. The XPBD solver that would make touch mean anything is LIVE and gate-proven, with layered compliance so a soft layer and the structure beneath it are distinguishable. None of the four is a physics engine, which is not a criticism of them -- it is why this row sits on our side of the board. See /compare/softbody, which owns it. A device protocol with no tissue model underneath is a vibration API. Adoption: LIB-WIRED importers=14 nonval=4 — fully adopted (top of its ladder).
Pros Implementing source symbol found; runtime acceptance separate; ahead of Buttplug.io, Lovense SDK, OSSM, XToys; fully adopted on the estate ladderCons none on the measured axes (rival marks are documented presence, not depth)
●○○○○
contact-force-readbackMeasured: st_contact_force exists in runtime/nx_softtissue.nx, verified at emit. LANDED 2026-08-25 and THE BLOCKING RUNG FOR THIS DOMAIN IS NOW OPEN. The solver reports the contact constraint's own impulse: a 20 mm press reads 3.2x a 10 mm press (superlinear, because the tissue stiffens under the probe) and firm tissue reads 3.75x harder than soft at the SAME depth. That second number is the one this domain needs -- it is the difference between a vibration API and a surface that can tell you what it is touching. Proven by nx_contactforce_gate 6/6 with both neg-controls firing. Units are solver units, never newtons: there is no kilogram in the solver, so the teeth assert monotonicity and discrimination, which is what a feedback loop consumes anyway. Tracked as SB2 on /compare/softbody; consumed here, not duplicated. Adoption: LIB-WIRED importers=14 nonval=4 — fully adopted (top of its ladder).
dossier
Pros Implementing source symbol found; runtime acceptance separate; ahead of Buttplug.io, Lovense SDK, OSSM, XToys; fully adopted on the estate ladderCons none on the measured axes (rival marks are documented presence, not depth)
●○○○○
device-protocol-abstractionDARK — runtime/_hdl_build/nx_anon_transport.nx EXISTS but does not declare hc_device_open: something shipped at this path under another name, and this mark would read open forever. Repoint the contract to the real entry point (the plan rung AND this row) or rename the function; the flip follows on the next beat, and the comparewatch- plane row reads DARK until then. ABSENT ENTIRELY on our side -- we have no device layer of any kind, and this is the row where the field is plainly ahead. Buttplug.io [buttplug] is BEST: a mature open abstraction with its protocol and reference implementation public [buttplugrepo]. Lovense ships a vendor developer SDK [lovense], OSSM is open hardware with its own firmware [ossm], XToys automates control in the browser [xtoys]. Bar: one device class driven end to end from a NishiLang organ, with the transport named -- interoperating, not reinventing.
dossierwatching hc_device_open
Pros none measured yetCons behind Buttplug.io (leads), Lovense SDK, OSSM, XToys; open contract; expected source declaration not established
○◉●●●
latency-loop-budgetDARK — runtime/_hdl_build/nx_gamefeel_oracle_gate.nx EXISTS but does not declare hc_loop_us: something shipped at this path under another name, and this mark would read open forever. Repoint the contract to the real entry point (the plan rung AND this row) or rename the function; the flip follows on the next beat, and the comparewatch- plane row reads DARK until then. OPEN, and the bar is ALREADY BANKED rather than needing research: knowledge/gamefeel_oracle.conf frame_budget_ms_90hz 11..12 and js_block_ms 0..2, cited to vendor VR performance guidance. A touch loop that misses it reads as sensory dissonance rather than as touch. Nothing measures ours because there is no loop yet. Bar: report microseconds round trip and REFUSE above the budget, REUSING nx_tissuebudget rather than forking it -- that organ shipped 2026-08-25 and already reads these same two rows, derives the budget from the frame rate, and carries the neg-control, so this rung is a second caller and not a second ruler.
dossierwatching hc_loop_us
Pros none measured yetCons open contract; expected source declaration not established
○○○○○
k-anonymity-release-floorMeasured: kfl_release exists in runtime/nx_kfloor_lib.nx, verified at emit. LIVE shared lib with HIERARCHICAL release and COMPLEMENTARY SUPPRESSION -- the hard part, because suppressing a small cell while leaving its complement standing leaks it by subtraction. Proven in the communitypulse lane. For this domain it is the difference between an outcome statistic and an outing. The four rivals do not publish aggregates at all, so this is a capability they have no occasion to have. Adoption: LIB-WIRED importers=1 nonval=1 — fully adopted (top of its ladder).
Pros Implementing source symbol found; runtime acceptance separate; ahead of Buttplug.io, Lovense SDK, OSSM, XToys; fully adopted on the estate ladderCons none on the measured axes (rival marks are documented presence, not depth)
●○○○○
k-anonymity-floor-primitiveMeasured: kn_release exists in runtime/_hdl_build/nx_kanon.nx, verified at emit. LIVE pure-math floor primitive (kn_release, kn_apply, kn_count_below) with no I/O, so it is testable in isolation and cannot leak by construction. The layer kfl_release composes. Adoption: LIB-WIRED importers=6 nonval=3 — fully adopted (top of its ladder).
Pros Implementing source symbol found; runtime acceptance separate; ahead of Buttplug.io, Lovense SDK, OSSM, XToys; fully adopted on the estate ladderCons none on the measured axes (rival marks are documented presence, not depth)
●○○○○
privacy-request-clocksMeasured: prv_gdpr_dsar_pure exists in runtime/nx_privacy_lib.nx, verified at emit. LIVE: GDPR and CCPA subject-request deadlines and breach-notification clocks as PURE functions. A health-adjacent domain acquires these obligations the moment it stores anything, and holding them as deterministic pure functions means the deadline is computed rather than remembered. Vendor platforms certainly have privacy programmes; what they do not have is the clock as a testable function, which is the only form this estate accepts. Adoption: LIB-WIRED importers=2 nonval=1 — fully adopted (top of its ladder).
Pros Implementing source symbol found; runtime acceptance separate; ahead of Buttplug.io, Lovense SDK, OSSM, XToys; fully adopted on the estate ladderCons none on the measured axes (rival marks are documented presence, not depth)
●○○○○
anonymising-transportMeasured: anon_connect exists in runtime/_hdl_build/nx_anon_transport.nx, verified at emit. LIVE: the single seam the privacy no-leak proof binds to, so anonymity is an interface decision rather than a per-caller discipline. Load-bearing here because device telemetry is identifying by its nature -- what is attached says a great deal about who is attached to it. Adoption: LIB-GATE-ONLY importers=1 — PARTIAL: imported only by validation organs (gates, tests, benches): wire it into a shipping program.
not adopted: imported only by validation organs (gates, tests, benches): wire it into a shipping program
Pros Implementing source symbol found; runtime acceptance separate; ahead of Buttplug.io, Lovense SDK, OSSM, XToysCons not adopted yet: imported only by validation organs (gates, tests, benches): wire it into a shipping program
●○○○○
clinical-instrument-as-dataDARK — runtime/nx_privacy_lib.nx EXISTS but does not declare hc_instrument_row: something shipped at this path under another name, and this mark would read open forever. Repoint the contract to the real entry point (the plan rung AND this row) or rename the function; the flip follows on the next beat, and the comparewatch- plane row reads DARK until then. OPEN. The pattern is already proven here: communitypulse carries a published 12-item measure VERBATIM as conf rows rather than as code, so the instrument can be cited and swapped without a rebuild. Sexual health has published, validated instruments; none is admitted here yet, so no outcome may be reported. Bar: one published instrument as data rows with its citation in the row, scored by a pure function, never paraphrased into code.
dossierwatching hc_instrument_row
Pros none measured yetCons open contract; expected source declaration not established
○○○○○
outcome-reporting-gateDARK — runtime/nx_kfloor_lib.nx EXISTS but does not declare hc_release_gate: something shipped at this path under another name, and this mark would read open forever. Repoint the contract to the real entry point (the plan rung AND this row) or rename the function; the flip follows on the next beat, and the comparewatch- plane row reads DARK until then. OPEN. The rung that binds the two halves: no aggregate leaves this domain unless it passed the k-floor WITH complementary suppression and every contributing grant is unrevoked. Bar: a gate that REFUSES a release by name, bite-proven twice -- a planted under-floor cell and a planted revoked grant.
dossierwatching hc_release_gate
Pros none measured yetCons open contract; expected source declaration not established
○○○○○
Rival-claim provenance. Every Yes, Best or Part mark in a rival column is a claim about someone else's product. A cited row carries a reference mark that resolves to a pinned mirror (the refs gate measures that); an uncited row is an observation read and is badged in its evidence until a reference lands. The badge is the receipt, never the proof: a mark proves a mirror exists, not that the mirror supports the code. The rows are counted below.
Rival claims, counted
ClassCountNote
rows with rival marks1rows carrying a Yes, Best or Part in a rival column
cited1a reference mark resolves to a pinned mirror
uncited0an observation read, badged until a reference lands
rows, summed1RECONCILED: the parts sum to the total 1

Delivery and evidence

Inspect risks, technical debt, rendered observations, experiments and references. Read scope and limitations alongside every result.

Risk register

RiskLikelihood x impactMitigation
Collecting anything before the consent and release rows existcertain x highHC4 and HC6 gate every collection row, and the matrix header states the precondition once so no row can quietly omit it. The domain collects nothing today and that is deliberate, not incidental.
Software informing therapy is a regulated device under FDA SaMD and EU MDRlikely x highNamed as a row and routed through the legal lane before any pilot. HC1 is the first rung that makes a therapeutic claim even reachable, so the review belongs at HC1, not at launch.
Device telemetry is identifying by its nature -- what is attached says a great deal about who is attached to itcertain x highnx_anon_transport is the seam and is already live; HC2 must bind to it rather than opening its own socket, and the neg-control should prove a direct connection is refused.
Publishing an efficacy or comfort claim with no instrument and no unitlikely x highHC5 admits a published instrument before any outcome is reported, and the unit row above states that a claim without a unit is not made here.
Rebuilding a working open protocol for sovereignty's sake and calling it progresspossible x mediumThe bar row says it plainly: interoperate at the protocol, own the force model. Sovereignty is measured where it buys something, and here that is the tissue physics and the privacy floor.
On these two registers. Rows are declared in the domain's plan file and carry the debt id, which is the join key back to the sovereign debt plane — that plane, not this page, is the authority on state. Reconciling them automatically (the regen reading the plane and refreshing these rows) is a named, owed rung; until it lands, treat an id here as a pointer to look up, not a status to trust.
Honest verdict. The two substrates that matter both already exist here and are proven elsewhere in this estate -- an XPBD tissue solver and a k-anonymity release floor with complementary suppression. What is entirely missing is the seam between them and any device at all. Buttplug.io [buttplug] is the abstraction to interoperate with rather than reimplement: there is no sovereignty won by re-deriving a working wire protocol, and a great deal won by owning the force model underneath it. Nothing on this board may collect a byte until the consent and release rows are wired, and the domain collects nothing today.

Person · product · place — not yet measured for this domain

Every compare carries this layer. Declare knowledge/compare/hapticcare.ppp (rows surface|nishi or c1..c4|label|url|connect naming OUR live surface and each rival's front door), run nx_ppp_probe domain hapticcare, and this section fills itself on the next beat: the same ruler on both sides — privacy and CX (third-party hosts, tracker classes, cookies, security headers), design and longevity (design hygiene, computed WCAG contrast, render-blocking resources, unsized media, script weight, theme and motion queries), findability (landmarks, skip link, on-site search, breadcrumb, headings, internal links).

Mined from the field — review and competitive intelligence proposed to this board

Rows written by nx_intelmine_propose from nx_reviewmine_lib signals (Steam reviews under the exceeds / meets / mixed / does-not-meet rubric, the installed-title census) and routed here by capability_map.conf. DEFECT names a rival failing that a rung here answers; DEMANDED a capability buyers ask for and do not get; WE-DO-BETTER an exceed the reviews corroborate; THEY-DO-WELL a bar this board must meet; SHIPS a rival capability to match. A proposal is a lead, never a rung — it closes only when a rung with a gate lands, and nothing in this band changes a measured cell.

SignalKindTermTitleProposed rungEvidence
WE-DO-BETTERfeatureheadsetDanceXR 1905510Headset support: DanceXR -- every runtime door measuredpraised=1 complained=1 mixed=0 demanded=1
SHIPSvrOpenXRDanceXR 1905510OpenXR door: DanceXR ships OpenXR -- the Nishi VR runtime door measured against itfingerprint=installed-tree

proposals 2|malformed rows 0 (counted, never rendered: a row that is not prop| with 10 fields)|read-capped 0

The field — discovered, not chosen

Rows written by nx_field_discover from hapticcare.seeds: the industry's own lists (Wikipedia wikitext, GitHub topics, awesome lists) read mechanically, every candidate counted across seeds. The matrix columns above are a SEAT'S pick; this band is the population they were picked from, and the stats line measures one against the other. A rival here is a lead, never a verdict — it earns a column when its capabilities are read and pinned.

Discovery receipt. One row per counter the run wrote, in the receipt's own order; the rival rows follow in their own table.
Field discovery, counted
ClassCountNote
seeds4
scanned4
fetched4
reused0
failed0
named4
candidates4
mentions4
capped0
RankRivalSeedsMentionsFirst seedKindLink
1Buttplug.io11col0-buttplugnamedhttps://buttplug.io/
2Lovense SDK11col1-lovensenamedhttps://developer.lovense.com/
3OSSM11col2-ossmnamedhttps://github.com/KinkyMakers/OSSM-hardware
4XToys11col3-xtoysnamedhttps://xtoys.app/

field candidates 4|shown 4 of 4|matrix columns in the field 4 of 4|discovered rivals with no column 0|malformed rows 0 (counted, never rendered)|read-capped 0

Exclusive and shared capabilities

One capability is graded on one board; every other board references it. The fleet duplicate census (nx_rivalcensus dupes, on the fleetdupes clock row) reads every board's matrix and names each capability graded as a row on two or more boards, with a home derived from evidence: rung when exactly one board's plan contracts the symbol (that board is starred), gates when no plan contracts it and exactly one board's executed gate map runs the organ's gate (that board is plussed), ambiguous when several boards carry the deciding evidence (a decision for their seats), and none when no evidence decides it, with the reason beside it: unmapped (no board of the duplicate declares a gates map; declare the maps) or unproven (a map exists and runs none of the organ's gates; gate the organ on its proving board, or declare it a shared library by policy). A home elsewhere means this board should carry an @xrow reference to the home board's row rather than a graded row of its own; a home here means the other boards should. The table is this board's slice of one estate-wide census: the shape is shared, the rows are the board's.

This board grades 11 capabilities: 9 exclusive to it and 2 shared with other boards. Shared rows on this page: 2 = home here 0 + home elsewhere 0 + ambiguous 2 + undecided 0 + refused 0 (partition 2); undecided = unmapped 0 + unproven 0 + unevidenced 0; homonyms 0; since the previous census: new 0, resolved 0. Census FRESH age_s=6873.

CapabilityOrganBoards grading itHomeRuleEvidenceStanding on this board
st_substepnx_softtissue.nxsoftbody+, hapticcare+, dcc—ambiguousgatesambiguous
st_contact_forcenx_softtissue.nxsoftbody*+, hapticcare*+—ambiguousplanambiguous

Gaps from the record — what the estate does that no board carries

The record census (nx_goalmap record) reads the invoked-tool population and every plan queue row and files each organ or directive that NO matrix, plan or gates row names. A row here is a callout the boards missed: adjudicate it onto a board or declare it infrastructure. Census state STALE (age 1395978 s), sources read 4 of 7 declared — a BLIND census is a FLOOR: unread sources can only add rows.

kindnameboardsourceevidence

rows shown 0|this board's directives 0|estate-wide un-boarded organs 452 (listed in full on /compare/ecosystem)|census rows 639|malformed 0 (counted, never rendered)

References

Beyond a link list. Every reference below resolves twice — the publisher's copy and, where banked, the estate's own non-rottable library mirror with a content pin — and carries its evidence class plus the exact claim on this page it grounds. Keyed marks like [key] in the matrix notes jump here. A dash means honestly absent, never assumed.
  1. [buttplug] Buttplug.io -- the open-source intimate-hardware abstraction project and its Intiface tooling publisher · read in our library knowledge/fetched/cmp_hapticcare_buttplug.html · pin h35600d309a3a93d3d6e7dfb79060aea587de8f42ef8a0c41c0811e9e587790fb · accessed 2026-08-25 · vendor-docGrounds: device-protocol-abstraction
  2. [buttplugrepo] buttplugio/buttplug -- the protocol and reference implementation repository publisher · read in our library knowledge/fetched/cmp_hapticcare_buttplugrepo.html · pin h4f16629da20cecff5d8f74ed93935b36df1312b5135cbb49aab4bae26e674010 · accessed 2026-08-25 · source-readGrounds: device-protocol-abstraction
  3. [lovense] Lovense developer portal -- the vendor SDK and API surface for its device line publisher · read in our library knowledge/fetched/cmp_hapticcare_lovense.html · pin h940930ee24dcacdf1300bde77ef854825735158d221f0847234037b7c6da606a · accessed 2026-08-25 · vendor-docGrounds: device-protocol-abstraction
  4. [ossm] OSSM -- the open-source machine, open hardware with its own firmware and control publisher · read in our library knowledge/fetched/cmp_hapticcare_ossm.html · pin h46b0ef604d3933f3506b22d191a0253aebf1c1569d1a4a1003cd66b0cb49ec9c · accessed 2026-08-25 · source-readGrounds: device-protocol-abstraction
  5. [xtoys] XToys -- a browser platform for control, online play and automation, per its own description publisher · read in our library knowledge/fetched/cmp_hapticcare_xtoys.html · pin hcae8d06778a5fe59b0ec452f2bc451bc76e473c3a07fac51dd53e6f7664be0f2 · accessed 2026-08-25 · vendor-docGrounds: device-protocol-abstraction

generated by nx_swcompare_matrix (sovereign NishiLang organ) from knowledge/compare/hapticcare.matrix · source checks show implementation presence; runtime and user-outcome evidence are reported separately · JavaScript supports page controls