• rockachopa released this 2026-10-20 12:13:15 +00:00 | 42 commits to main since this release

    Verified rebuild of the current user-visible feature path. No source change since daily-2026-10-19 — main is still d0b3c10, and no PR was merged for this release.

    What this release is

    daily-2026-10-19 shipped 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.py starts the server with TIMMY_VISION_ENABLED=false, server.mjs answers 503 from the provider-disabled branch before ingressGuard runs, and tests/ingress-capture.acceptance.mjs asserts 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-256 2ab3df629ff1d6363e3454f397547f8a0dc9244bb5d1cfdf2f7c9f29098aaa18
    • Demo timmy-talking-turd-2026-10-20-d0b3c10aea2f-demo.mp4 — 16,543,563 bytes — 720x1280 H.264/yuv420p, 25 fps, 4m19s — SHA-256 61b093cf632d82c7fe15287d33c053c3a77c124bc899eb692d78e0dd8f1a3989

    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