Skip to content

feat(home-b): Today feed-first parent home prototype with persistent conversational composer (synthetic data) - #30

Draft
obvious-autobuild[bot] wants to merge 3 commits into
masterfrom
candidate/home-b-today
Draft

obvious-autobuild[bot] wants to merge 3 commits into
masterfrom
candidate/home-b-today

Conversation

@obvious-autobuild

Copy link
Copy Markdown
Contributor

Candidate B of the parent-home A/B comparison — DO NOT AUTO-MERGE. Candidate PRs are excluded from individual auto-merge until the product owner compares candidates. Candidate A lives on its own branch; do not rebase or merge this PR against it.

Why

The parent home needs an organizing experience, and the A/B comparison must test two coherent answers, not two feature sets. Candidate B's thesis: the feed is home — today's recorded events newest-first, with the whole month's history one navigation away — and capture is always one composer away, docked at the bottom of every screen. A parent taking over care should answer "what happened today?" before they answer "what do I want to record?".

What

A runnable Expo React Native prototype (Expo web export verified) of the Today feed-first parent home with a persistent conversational composer:

  • Today feed home — newest-first events with provenance back to the raw source; month navigation (‹ September 2026 › day chips with counts) into the Sep 1–16 synthetic history; a "since you were away" catch-up block heads the feed.
  • Persistent composer — voice button + text field docked on every screen; both channels feed the identical pipeline (raw transcript → deterministic extraction double → proposed events → review → publish).
  • Review surface over the feed — interpreted draft cards (type, child, time, amount, audience) edit in place next to the raw source text, with re-run-extraction and remove; publishing lands events with provenance.
  • Append-only corrections — post-publish corrections append lineage from the event's source view; the original stays intact.
  • Fail-closed authorization — persona switcher (mom / dad / invited caregiver) demonstrates audience-scoped visibility; a non-member sees nothing.

Synthetic data only (Polanco Household, 22 deterministic utterances across Sep 1–16, 2026); in-memory store mirroring the Convex adapter semantics — no live Convex, no LLM. All stored shapes decode through the canonical Effect v4 schemas in packages/domain.

Task: todo_w3Y69OzH
Evidence & findings: https://app.obvious.ai/p/ai-dictation-powered-agent-companion-monorepo-BIp9UTWX/parent-home-candidate-b-today-feed-first-prototype-VwaZuiWP

How to Review

  • packages/home-b/src/store.ts — the behavioral core (raw-before-events, captureId idempotency, review edits, audience controls, append-only lineage, read-only lookups).
  • packages/home-b/src/ui/HomeBDemoApp.tsx — the candidate experience; the persistent composer is the load-bearing UX claim, so check it stays reachable in every state.
  • packages/home-b/src/ui/theme.ts + apps/mobile/App.tsx — candidate-local tokens and the env-guarded mobile wiring (EXPO_PUBLIC_HOME_CANDIDATE=b); the Convex-backed shell path is otherwise untouched.
  • Intentionally excluded: backend/convex changes, arena/extraction-card review UI, live device voice (simulated-transcript demo mode ships instead — documented in the evidence doc), and any cross-cutting shared-code change — the last are listed as shared-change requests in the evidence doc §8.

Test Evidence

  • corepack pnpm turbo run typecheck test build → 18/18 tasks successful, 0 cached, at pushed HEAD 3b4b53b19b9c2c509e8c55f0a83d8bcab39682d8.
  • packages/home-b Vitest suite 22/22: mixed-topic capture via both text and simulated-voice paths; pre-publish correction of type/child/time/amount/audience; publish → raw-preserved entry + provenance; post-publish append-only lineage (original intact); read-only lookups never write; fail-closed authorization (non-member sees nothing).
  • Expo web export (464 modules) exercised in a browser: feed rendered and a mixed-topic utterance produced the three expected draft cards (Milo meal, Milo mood, Iris nap). Screenshots tc-1-today-feed.png, tc-2-review-after-send.png in the evidence artifact.

Human author: Gilbert Polanco (gilbertpolanco42@gmail.com)

🔗 Obvious Project · 🧵 Obvious Thread

ObviousApp and others added 3 commits September 17, 2026 19:00
…2-test behavior suite

Candidate B core (no UI yet): raw-before-events capture with captureId
idempotency, { captureId, attempt } extraction envelope with stale-result
suppression, review-surface edits with schema validation, audience grants,
publish with provenance, append-only post-publish corrections, fail-closed
authorization (port of security/access/policy.ts + audience dimension),
read-only lookups pinned by a serialized-state test, and the synthetic
September 2026 Polanco household fixtures.

Co-authored-by: Gilbert Polanco <gilbertpolanco42@gmail.com>
…le wiring

- HomeBDemoApp: persona switcher, since-you-were-away catch-up, month day
  navigation, Today feed with provenance, draft review/edit surface,
  append-only correction flow, and a persistent composer (text path +
  simulated-voice demo mode) driving the same store pipeline.
- Denied results now carry DenyDecision (a denial always holds a DENY).
- apps/mobile: EXPO_PUBLIC_HOME_CANDIDATE=b renders candidate B; Convex
  client constructed only on the shell path; web platform enabled for the
  Expo web demo export.

Co-authored-by: Gilbert Polanco <gilbertpolanco42@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants