Nishi Family › Compare › THERAPEUTIC HAPTICS AND SEXUAL HEALTH
Nishi Compare · measured, not asserted
THERAPEUTIC HAPTICS AND SEXUAL HEALTH
Nishi vs the field — every Nishi cell is measured against real organ source at emit time; each gap names the watch contract that will close it.
Device abstraction, measured touch, and a privacy floor cleared BEFORE anything is collected
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.
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..
6 of 11 capabilities measured|0 of them measured exceeds|5 open|coverage 545/1000|adoption 5 full / 1 partial
Do this next — computed by the ranker, never chosen by a seat
Order from nx_compare_rank (nx_dr_ocm: (deficit + cost-of-delay + option + enables) x sponsor x self-sufficiency x momentum / cost). FINISH rows are rungs whose symbol is present but whose organ is short of full adoption: the cheapest closures on this board, listed before any new work. Stamp: # asof=1787883583 domain=hapticcare target_version=0.1 rungs=6 done=1 open=5 finish=0 ranker=nx_dr_ocm
| # | Stage | Rung | Priority | Derivation |
|---|---|---|---|---|
| #1 | 0.1 | One device class driven end to end from a NishiLang organ (HC2) hc_device_open | 175 | v=7 m=2 c=80 |
| #2 | 0.1 | Touch-loop latency measured against the banked budget (HC3) hc_loop_us | 33 | v=1 m=1 c=30 |
| #3 | later | Consent as a revocable, scoped, provable ledger row (HC4) hc_consent_grant | 100 | v=3 m=1 c=30 |
| #4 | later | One published instrument admitted as data (HC5) hc_instrument_row | 50 | v=1 m=1 c=20 |
| #5 | later | The release gate that binds the two halves (HC6) hc_release_gate | 20 | v=1 m=1 c=50 |
Critical path — contract, done-rule, executor, cost
| Rung | Closes with | Definition of done (pre-declared) | Executor | Est. |
|---|---|---|---|---|
| Contact reaction force out of the tissue solver (HC1) after | st_contact_force | A 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. | Organ | 3 u |
| One device class driven end to end from a NishiLang organ (HC2) after HC1 | hc_device_open | A 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. | Organ | 8 u |
| Touch-loop latency measured against the banked budget (HC3) after HC2 | hc_loop_us | Reports 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. | Organ | 3 u |
| Consent as a revocable, scoped, provable ledger row (HC4) after | hc_consent_grant | A 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. | Organ | 6 u |
| One published instrument admitted as data (HC5) after HC4 | hc_instrument_row | A 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. | Data | 4 u |
| The release gate that binds the two halves (HC6) after HC4 | hc_release_gate | No 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. | Organ | 5 u |
Milestones
| Milestone | Rungs | Cumulative |
|---|---|---|
| M1 · Touch that is measured rather than asserted | HC1,HC2,HC3 | 14 u |
| M2 · Lawful to collect | HC4,HC6 | 11 u |
| M3 · Outcomes that can be cited | HC5 | 4 u |
comparewatch- plane row flips with it. The flip is necessary, not sufficient: it proves the symbol exists, never that the capability is good. The bar is the rung's pre-declared done-rule, proven by its gate — a symbol shipped without the behaviour behind it is a defect, and the flip is exactly what makes that defect visible instead of quiet. Competitor marks record documented capability presence — presence, not depth or scale. Adoption is measured too: every measured row carries where its organ stands on the estate's ladder (source → built → promoted → registered → invoked; libraries by importer reach minus validation importers; gates by the execution surfaces that run them). A row is fully adopted only at the top of its ladder; anything short is tagged partial with the exact remedy, so a build nobody promoted can no longer read as shipped. Census stamps: importers asof 1787849099, gate census asof 1787855507 (unix seconds; -1 = census absent).Capability matrix — measured against source
◉ leads / measured exceed● present◐ partial○ absent · click any capability for its evidence
| Capability | Nishi | Buttplug.io | Lovense SDK | OSSM | XToys |
|---|---|---|---|---|---|
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=12 nonval=2 — fully adopted (top of its ladder). | ● | ○ | ○ | ○ | ○ |
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=12 nonval=2 — fully adopted (top of its ladder). | ● | ○ | ○ | ○ | ○ |
device-protocol-abstractionOpen — watchingruntime/_hdl_build/nx_anon_transport.nx : hc_device_open, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. 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. | ○ | ◉ | ● | ● | ● |
latency-loop-budgetOpen — watchingruntime/_hdl_build/nx_gamefeel_oracle_gate.nx : hc_loop_us, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. 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. | ○ | ○ | ○ | ○ | ○ |
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). | ● | ○ | ○ | ○ | ○ |
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). | ● | ○ | ○ | ○ | ○ |
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). | ● | ○ | ○ | ○ | ○ |
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. | ● | ○ | ○ | ○ | ○ |
consent-as-a-ledger-rowOpen — watchingruntime/nx_privacy_lib.nx : hc_consent_grant, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. OPEN. The estate has consent machinery elsewhere but this domain has no consent object of its own, and it is the one domain where consent must be revocable, scoped, time-boxed and PROVABLE after the fact. Bar: a grant is a durable row with scope and expiry, revocation takes effect at the NEXT call rather than eventually, and a neg-control proves a revoked grant is refused by name. | ○ | ○ | ○ | ○ | ○ |
clinical-instrument-as-dataOpen — watchingruntime/nx_privacy_lib.nx : hc_instrument_row, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. 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. | ○ | ○ | ○ | ○ | ○ |
outcome-reporting-gateOpen — watchingruntime/nx_kfloor_lib.nx : hc_release_gate, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. 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. | ○ | ○ | ○ | ○ | ○ |
Risk register
| Risk | Likelihood x impact | Mitigation |
|---|---|---|
| Collecting anything before the consent and release rows exist | certain x high | HC4 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 MDR | likely x high | Named 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 it | certain x high | nx_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 unit | likely x high | HC5 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 progress | possible x medium | The 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. |
Person · product · place — not yet measured for this domain
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).References
- [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· pinh35600d309a3a93d3d6e7dfb79060aea587de8f42ef8a0c41c0811e9e587790fb· accessed 2026-08-25 · vendor-docGrounds: device-protocol-abstraction - [buttplugrepo] buttplugio/buttplug -- the protocol and reference implementation repository publisher · read in our library
knowledge/fetched/cmp_hapticcare_buttplugrepo.html· pinh4f16629da20cecff5d8f74ed93935b36df1312b5135cbb49aab4bae26e674010· accessed 2026-08-25 · source-readGrounds: device-protocol-abstraction - [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· pinh940930ee24dcacdf1300bde77ef854825735158d221f0847234037b7c6da606a· accessed 2026-08-25 · vendor-docGrounds: device-protocol-abstraction - [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· pinh46b0ef604d3933f3506b22d191a0253aebf1c1569d1a4a1003cd66b0cb49ec9c· accessed 2026-08-25 · source-readGrounds: device-protocol-abstraction - [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· pinhcae8d06778a5fe59b0ec452f2bc451bc76e473c3a07fac51dd53e6f7664be0f2· accessed 2026-08-25 · vendor-docGrounds: device-protocol-abstraction
generated by nx_swcompare_matrix (sovereign NishiLang organ) from knowledge/compare/hapticcare.matrix · every Nishi cell verified against organ source at emit time · watch cells re-measured on every compare beat · zero JS, zero trackers