-
released this
2026-10-20 12:13:15 +00:00 | 42 commits to main since this releaseVerified rebuild of the current user-visible feature path. No source change since
daily-2026-10-19— main is stilld0b3c10, and no PR was merged for this release.What this release is
daily-2026-10-19shipped a confirmed log whose saved photo is kept separate from the log itself: a label instead of a thumbnail, revealed only on request, removable without touching the log. That path is unchanged and was re-verified end to end on camera today, so this drop is honest book-keeping, not a new claim: verified rebuild; no source change.Held back, deliberately
Nightly PR #82 (
timmy/16-image-ingress-hardening, closes #16) was reviewed and not merged. Its own new release gate fails in the release builder's environment:scripts/build_release.pystarts the server withTIMMY_VISION_ENABLED=false,server.mjsanswers 503 from the provider-disabled branch beforeingressGuardruns, andtests/ingress-capture.acceptance.mjsasserts 400 —AssertionError: the server must refuse non-image bytes, saw 503. CI is green only because the workflow does not set that variable. Detail and the suggested ordering fix are on the PR: comment 17291. Nothing from that branch is in this release.Gates (all passed)
unit/security 193 pass 0 fail · mobile green path · photo-first acceptance · sleek Hermes chat · manual fallback draft recovery · provisional suggestion state · hard-stool follow-up · vision corpus refusal · worker container receipts · worker post-load readiness · longitudinal pattern summary · grounded chat citations · dependency audit (0 high) · syntax · secret scan · forbidden-artifact scan · actual browser recording · H.264 720x1280 yuv420p probe · complete MP4 decode · release delta painted on camera.
Demonstrated features (61/61 captions measured as painted bars)
- Photo-first path: consent gate, provisional suggestion, explicit confirm, user overrule clears AI-confirmed state.
- Type 2 follow-up asking soreness/hydration/blood/black-or-tarry — never inferred from the photo; mild self-care copy; deterministic red-flag path on a truly black/tarry answer; dark brown not escalated.
- Worker offline and model-still-loading states: no AI control, no consent, no upload; manual entry one tap away; kept draft survives.
- Corpus refusals: non-stool photo refused, unreadable-fields abstention, out-of-range fail-closed (with and without a filled field).
- Pattern summary cites its confirmed logs and refuses to describe a trend on two logs.
- Saved-photo lifecycle: presence as a label, reveal on request, remove photo and keep the log.
- Threat-model surface live: local ledger, consent-gated upload, portable export, delete-all clears ledger and photos.
- Grounded local chat citations plus Hermes chat with credentials/tools server-side and deterministic urgent-language interception before Hermes.
Artifacts
- Source archive
timmy-talking-turd-2026-10-20-d0b3c10aea2f.tar.gz— 246,045 bytes — SHA-2562ab3df629ff1d6363e3454f397547f8a0dc9244bb5d1cfdf2f7c9f29098aaa18 - Demo
timmy-talking-turd-2026-10-20-d0b3c10aea2f-demo.mp4— 16,543,563 bytes — 720x1280 H.264/yuv420p, 25 fps, 4m19s — SHA-25661b093cf632d82c7fe15287d33c053c3a77c124bc899eb692d78e0dd8f1a3989
Model / profile
Vision profile
selfhost(SmolVLM2-2.2B-Instruct banner in the app). The recording drives the real app server in Chromium at 405x720; the three provider-facing endpoints (/api/vision-status,/api/analyze,/api/agent/status,/api/agent/chat) are fulfilled at the network layer from deterministic synthetic fixtures, so no model inference and no Hermes call happened during recording. Every fixture is synthetic: a committed text file named.jpg, a synthetic Type-4 photo, and fictional multi-day sample logs seeded into the browser's own storage.Known accuracy limitation
The vision layer only ever suggests visible Bristol form, broad color, and image quality, with bounded confidence and abstention; it cannot judge urgency, pain, symptoms, blood, or a diagnosis, and a photo never rules out bleeding. Sensitive visual fields remain low-confidence, screenshots and non-stool images are refused rather than guessed, and user confirmation is mandatory before anything is saved. Server-side ingress hardening for hostile uploads (#16) is not in this release.
Downloads