feat(spike): parent home candidate C — handoff-first prototype (S1 fixtures + contract tests) - #23
obvious-autobuild[bot] wants to merge 3 commits into
Conversation
…xtures + contract tests) Standalone prototype under spikes/home-c-handoff (not a workspace member; nothing merges from this branch — candidate exclusion, exploration only). - Contract mirror of art_I2TCG08V v0.2 on pinned effect@4.0.0-rc.115 (Entry, Event, extraction envelope with stale-suppression + idempotent apply) - Audience/grants model: household/relationship grants; per-event restriction as explicitly flagged PROPOSED extension; stated draft-visibility rule - Deterministic S1 fixtures (all six beats) + 30-day history whose final row is SET from the S1 day (no divergence by construction); regeneration is a byte-level no-op (tested); transcripts sha256-pinned in manifest - RN screens (typechecked, not executed): handoff-first home with takeover brief + five facts, S1-A capture replay, S1-B inspect/correct/restrict/ attach, S1-C source links, S1-D failed-extraction recovery, S1-E read-only question, S1-F Rosa grants view - 23 tests / 87 assertions: fixture→contract decode, sha256 round-trip, determinism, S1 beat integrity, grants semantics, envelope semantics, correction pinning, read-only question immutability - Out of scope per rubric ground rule 3: extraction-review cards (slots 11-14), handoff implementation (slot 23), digest flow (slot 24)
Independent review — pass-with-notes (reviewer does not merge)Verdict: pass-with-notes · Tested head SHA: Scope (ground rule 3)Merge base Acceptance criteria — verified against the diff (8/8)
Reviewer-run gates (isolated uncached worktree at the exact head)
ChecksCI run Manifest gate — NOT satisfied (blocking for any merge path)No Notes (non-blocking)
All results above were produced by direct inspection and execution at the exact head SHA; nothing carried over from earlier commits. |
…without a source
Product-owner ruling (binding): absence of logged sleep data may never be
stated as a confirmed absence ("No nap today") nor carry a behavioral
prediction ("expect an early meltdown"). The takeover brief fact-4
headline, plan note, Q&A answer, and both citation refs now state
absence-of-record ("No nap recorded", "coverage: ..."), ported verbatim
from the canonical arena fixture (c3c1dc3).
Tests: five-fact #4 asserts the corrected headline; the Q&A source
assertion pins "coverage:"; a new negative control sweeps the whole
fixture so "meltdown" can only appear in the drop-off event's own
context — never as a forecast — and bans confirmed-absence phrasing on
all prediction surfaces. Suite: 24 tests / 113 assertions, green on
this HEAD (negative control verified to fail on regressed text).
Co-authored-by: Gilbert Polanco <gilbertpolanco42@gmail.com>
Acceptance criteria
(Rubric art_VyNYOggs v1.0 — candidate 3, handoff-first; binding scenario S1; rubric ground rules 1–3.)
Verification (against HEAD 0c27c82)
bun test(spike dir): 23 pass / 0 fail, 87 assertions — fixture→contract decode (Entry + Event), transcript sha256 round-trip, determinism (regenerate = byte no-op), S1 beat integrity (one clarification; interruption is a session fact, never transcript bytes; failed attempt visible with transcript preserved), grants semantics (locked-not-silence for Rosa; restrictions narrow; drafts rule), envelope semantics (stale-result suppression, idempotent apply, capture independence), correction pinning (survives attempt 1), read-only question immutability.bun run typecheck(tsc strict over src/test/scripts, RN screens included): clean. Bun 1.3.14; effect 4.0.0-rc.115 (pinned).bun scripts/generate-fixtures.ts: byte-identical regeneration verified by in-test hash comparison.Known divergences (for the evaluator)
packages/domain(pre-v0.3) usedtimestamp/payloadwith different field ownership; contract v0.2 and the evaluation corpus useoccurredAt/quantity/authorId. This spike follows the contract document. Note: master folded contract v0.3 (PR feat(domain): fold contract v0.3 — context envelope, operation outputs, lineage #14) while this spike was in flight — the spike mirrors the v0.2 contract the frozen rubric pins; reconciliation belongs to the contract lane (Event.authorId already flagged there).caregiver-1/"Ava"; the rubric's binding S1 personas (Elena/Marco/Rosa/Sofia) are used verbatim with slug-style authorIds matching the repo id style.All data is synthetic. The spike is standalone (
spikes/is not a pnpm workspace member) — CI impact: none beyond the normal PR pipeline.