Back to Body Journal
SOURCE / PINNED RELEASE

Made of little things.

Body Journal

Release
e8049f8da4e2…
Author-recorded commit
61c04bf0e8aa…
License
LICENSE
Author’s source reference
nostr://npub182jczunncwe0jn6frpqwq3e0qjws7yqqnc3auccqv9nte2dnd63scjm4rf/wss%3A%2F%2Fgit.napplet.soy%2F/n-6c4554844c7

Archive hash verified: 4369d778da046a8b…. The source-to-build association is the author’s claim; it has not been independently rebuilt.

docs/oral-inspection.md
# Mouth inspection

An adult can show an observation on an individual tooth, tongue surface, or jaw reference and save the jaw opening with that observation. A separate Mouth layer exposes these structures without coupling camera focus to visibility or changing skin topology.

## Interaction and visual direction

Keep the white/off-black/orange interface. The layer selector gains Mouth. Its inline Jaw editor has an opening slider, closed/open illustration presets, an explicit Focus mouth action, and a short coverage note. It leaves the canvas interactive and fits a narrow portrait frame. Opening is an illustration amount, not a clinical angle or measurement. Existing focus selection plus button and the grouped visibility checkboxes remain independent. Mouth visibility groups upper/lower jaws, tooth quadrants and individual teeth; hidden items remain part of the recorded anatomy.

## Assets and vocabulary

BodyParts3D 4.0 supplies 28 permanent teeth and a coarse tongue. Copy the existing reduced maxillae and mandible into a separate versioned asset. Keep FMA IDs, triangle indices and barycentric anchors stable. Use names plus explicit **FDI** permanent-tooth numbering, relative to the patient. No wisdom teeth, gums, palate or child dentition are represented. Exposed roots are atlas anatomy, not a depiction of gum disease. Tongue motion and jaw opening are schematic; the skin face is not rigged to open.

Sources: [official asset license](https://dbarchive.biosciencedbc.jp/en/bodyparts3d/lic.html), [FDHRC FDI numbering table](https://ndhcb.uplifterinc.com/pages/ndhce/exam-prep/). BodyParts3D assets remain CC BY 4.0; application code remains MIT. See `assets/mouth/provenance.json` for hashes, modifications and attribution.

## State and boundaries

Use an optional normalized jaw-opening scalar in each concern and in the existing working-session view; absent means closed. Validate imports. Preserve opening through body presets, concern switching, SDK storage reload and image capture/restoration. Include explicit tooth labels, illustrated jaw pose and asset limitations in review/AI evidence. No new host capabilities, network calls or browser storage. Existing optional SDK storage persists sessions.

## Verification

Check all 28 FDI identities/laterality, finite geometry, closed/open lower-jaw movement while upper teeth stay fixed, ray-hit marking and anchored marks across poses, independent focus/visibility, import validation, round-trip sessions and capture restoration. Exercise tooth and tongue observations in soyLI, keyboard and touch controls, narrow/minimum/full frames, host themes and absent optional domains. Run project build, unit, guidance and conformance checks and record the tested artifact.

## Implemented and verified — 25 October 2026

- Added `bp3d-mouth-1`: 32 selectable structures, 47,467 triangles, 596,488 bytes.
  The original skin, skeleton, muscle and organ binaries are unchanged. Rebuild
  with `python3 scripts/prepare-mouth.py /path/to/isa_BP3D_4.0_obj_99.zip`.
- Mouth → upper/lower jaw → patient-left/right tooth groups → individual teeth
  integrates with the existing mixed-state visibility controls. Focus stays
  explicit. The jaw editor opens with the Mouth layer; its Focus mouth button
  frames the current posed geometry without changing visibility.
- Optional `jawOpening` values are bounded to 0–1; older records load closed.
  Per-concern and working-session values remain independent. Whole-body presets,
  SDK storage reload, summaries, revision checks and image capture preserve them.
  Automatic oral close-ups use smaller framing and occlusion clearances than
  body-region captures. Captions explain FDI labels and missing atlas coverage.
- `pnpm verify`: 71 tests passed, including four new mouth tests; type-check and
  single-file build passed. Asset hash/geometry, FDI identity/laterality, real
  ray-hit anchors, upper/lower movement, shape changes, visibility, import bounds,
  session compatibility and AI text/revision behavior are checked.
- `node tests/mouth-smoke.mjs http://127.0.0.1:4173/`: real hosted tooth/tongue
  marking; keyboard opening; working and per-observation reload; body presets;
  group visibility; saved-pose image sheets and working-view restoration passed.
  Inspected full-page captures and both generated evidence sheets.
- Actual iframe sizes 1600×1000, 900×600, 320×560, 390×844, 844×390 and the
  200×160 minimum notice passed, including both host themes, missing optional
  domains and emulated touch. Jaw controls have at least 44×44 touch targets. A final focused touch check
  at 320×560, 390×844 and 844×390 confirms the editor stays clear of the canvas;
  the narrowest touch canvas is 320×108 and the landscape canvas is 529×207.
  Fixed a shared short-landscape CSS inset that incorrectly reserved editor
  space on both sides of the canvas; the mouth test now asserts canvas width.
  The full existing `fingers-smoke.mjs` regression also passed after that fix.
- `pnpm test:conformance`: 5 passed, 0 failed, 5 skipped. The skipped evidence is
  three manifest checks, emitted wire envelopes and teardown measurement.
- `soyli check`: passed, space-playback-6 / Chromium 153.0.8010.12. The source
  budget check is approximately 35.8 MB of 40 MiB; HTML is below the 25 MiB cap.
- Final HTML: 18,992,235 bytes, SHA-256
  `86777c0dcd2a724fe7434d98c3c29fc279dda1989e9e8e71b52dbf660f5214b3`.

No provider requests, publishing or deployment were performed. Physical-phone
hardware and clinical anatomical accuracy were not evaluated. The existing
user-owned soyLI preview at http://127.0.0.1:4173/ (PID 59819) was reused; no new
preview session was started. Its owning terminal remains available for Ctrl+C.

## Profile fitting correction

The oral atlas now uses the current skin's inner lip and ear landmarks for its
head-local depth fit and bite height. The whole assembly, including the hinge,
shares this transform; original atlas triangle IDs, FDI labels and saved marks
stay valid. Runtime fitting changes no bundled binary or source license. Checked
front/profile on male/female shapes and numerical landmark relationships across
sex/BMI samples. This remains an illustrative atlas fit; the skin face does not
open with the jaw. See [current verification](anatomy-controls-slice.md).