Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
169 changes: 169 additions & 0 deletions evaluation/fixtures/home/journeys.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,169 @@
{
"$schema": "home-journeys/journeys v1",
"rubric": "art_uWsp80Fg v1.0",
"note": "The five executable journeys as data. Machine-checkable cores map to protocols P1-P6 (run.ts); full journeys run as scripted E2E/clickthrough with evidence labels.",
"journeys": [
{
"id": "J1",
"title": "Speak a mixed-topic update",
"actorId": "actor-mom",
"childId": "child-lena",
"preconditions": ["mom signed in", "fixture month loaded", "today empty"],
"steps": [
{
"step": 1,
"action": "Speak u1 in one utterance (meal with quantity, mood episode, nap with explicit span, unpinned potty x2).",
"expect": "Raw preserved byte-for-byte first; pinned instants exact; unpinned expressions gain no false precision; figures of speech yield no events.",
"protocols": ["P1"],
"gates": ["G3", "G5"],
"dims": ["S1", "S6"]
},
{
"step": 2,
"action": "Interrupt: start u1b, stop mid-way, background ~10s, resume under the same captureId.",
"expect": "Capture resumes or cleanly re-keys; no duplicate or partial events; stale older attempt cannot overwrite the newer one.",
"protocols": ["P5"],
"gates": ["G2"],
"dims": ["S1", "S6"]
},
{
"step": 3,
"action": "Observe save states pending -> saved.",
"expect": "Receipt visible: what wrote, what was proposed.",
"protocols": [],
"gates": [],
"dims": ["S6"]
}
],
"evidence": ["transcript SHA-256", "event cards", "publish receipt", "interruption log"]
},
{
"id": "J2",
"title": "Inspect & correct interpreted events",
"actorId": "actor-dad",
"childId": "child-lena",
"preconditions": ["J1 proposed events in review state", "dad signed in same household"],
"steps": [
{
"step": 1,
"action": "Open review of J1's capture.",
"expect": "Every proposed event traceable to its raw transcript fragment.",
"protocols": [],
"gates": ["G3"],
"dims": ["S2"]
},
{
"step": 2,
"action": "Correct via typed NL (u4 -> u3 sleep event) and via direct card edit.",
"expect": "Append-only revision; original retrievable; reviser attributed.",
"protocols": ["P4"],
"gates": ["G6"],
"dims": ["S2", "S6"]
},
{
"step": 3,
"action": "Reject one event (duplicate potty from u1).",
"expect": "Removed via revision, not hard delete.",
"protocols": ["P4"],
"gates": ["G6"],
"dims": ["S2"]
},
{
"step": 4,
"action": "Publish, then publish again (double-tap / network retry).",
"expect": "Exactly one write; identical receipt; idempotent replay visible.",
"protocols": ["P2"],
"gates": ["G2"],
"dims": ["S2", "S6"]
},
{
"step": 5,
"action": "Dad (non-author) corrects mom-authored events.",
"expect": "Succeeds with attribution (mom authored, dad revised).",
"protocols": ["P4"],
"gates": [],
"dims": ["S2"]
}
],
"evidence": ["lineage view", "revision chain", "receipts", "duplicate-submit log"]
},
{
"id": "J3",
"title": "Catch up before taking over care",
"actorId": "actor-ruth",
"childId": "child-lena",
"preconditions": ["mini-history seed loaded (slot-03 corpus when merged)", "ruth holds explicit caregiver grant", "one private-audience entry exists"],
"steps": [
{
"step": 1,
"action": "Open catch-up: current state without hunting.",
"expect": "Last meal, last nap (ongoing vs complete explicit), open needs; 'what should I know?' returns source-linked summary.",
"protocols": ["P3"],
"gates": ["G4"],
"dims": ["S3"]
},
{
"step": 2,
"action": "Ask q1 (food today) and q2 (last nap).",
"expect": "Answers cite sources; private-audience entry excluded or marked per audience rules.",
"protocols": ["P3"],
"gates": ["G1"],
"dims": ["S3", "S4"]
},
{
"step": 3,
"action": "Attempt a write from the question surface (q3: 'Log that she had a snack').",
"expect": "Surface refuses — capture is the only write path; state byte-identical before/after.",
"protocols": ["P3"],
"gates": ["G4"],
"dims": ["S4"]
},
{
"step": 4,
"action": "Month view over the seed window.",
"expect": "Missed days render as gaps, never zeros; correction chains visible with originals; nothing beyond the window.",
"protocols": ["P3", "P4"],
"gates": ["G7"],
"dims": ["S3"]
}
],
"evidence": ["answer citations", "write-refusal", "gap rendering", "window bounds"]
},
{
"id": "J4",
"title": "Text alternative parity",
"actorId": "actor-mom",
"childId": "child-lena",
"preconditions": ["mom signed in", "quiet/text mode available"],
"steps": [
{
"step": 1,
"action": "Submit u2 — typed twin of u1 — through the text path.",
"expect": "Schema-equivalent event set vs u1 expectations; raw text fidelity under the same byte rules; all state-table states reachable in quiet/text mode.",
"protocols": ["P1"],
"gates": ["G3", "G5"],
"dims": ["S5", "S1"]
}
],
"evidence": ["event diff vs voice path", "state-table walkthrough log"]
},
{
"id": "J5",
"title": "Authorization boundary",
"actorId": "actor-marcus",
"childId": "child-lena",
"preconditions": ["marcus is not a household member", "one child outside actor grants (child-theo)"],
"steps": [
{
"step": 1,
"action": "Marcus attempts J1/J3 flows (capture, history, question, correction) and ruth probes child-theo.",
"expect": "Fail-closed refusals on every surface; error messages disclose nothing.",
"protocols": ["P6"],
"gates": ["G1"],
"dims": ["S4"]
}
],
"evidence": ["refusal matrix", "disclosure audit (all refusals disclose nothing)"]
}
]
}
89 changes: 89 additions & 0 deletions evaluation/fixtures/home/mini-history.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
{
"$schema": "home-journeys/mini-history v1",
"rubric": "art_uWsp80Fg v1.0",
"note": "5-day synthetic stand-in for the slot-03 30-day family-history corpus (labeled JOURNEY-LOCAL SEED, not the full month corpus). Epochs pinned by timestamps.ts. Nov 1 is deliberately EMPTY — the capture journeys fill it.",
"window": { "from": 1793160000000, "to": 1793505599999 },
"householdId": "hh-primary",
"childId": "child-lena",
"entries": [
{
"entryId": "entry-o28-a",
"captureId": "cap-seed-o28a",
"transcript": "Banana toast for breakfast, good mood all morning.",
"authorId": "actor-mom",
"createdAt": 1793188800000,
"status": "published",
"audience": "household",
"events": [
{ "eventId": "ev-o28-meal", "category": "meal", "occurredAt": 1793188800000, "quantity": { "value": 1, "unit": "toast" }, "note": "banana toast" },
{ "eventId": "ev-o28-nap", "category": "sleep", "occurredAt": 1793205000000, "quantity": { "value": 60, "unit": "minutes" }, "note": "nap 12:30-13:30" }
]
},
{
"entryId": "entry-o28-b",
"captureId": "cap-seed-o28b",
"transcript": "She used the potty after quiet time.",
"authorId": "actor-mom",
"createdAt": 1793215800000,
"status": "published",
"audience": "household",
"events": [
{ "eventId": "ev-o28-potty", "category": "potty", "occurredAt": 1793215800000, "note": "after quiet time" }
]
},
{
"entryId": "entry-o30-a",
"captureId": "cap-seed-o30a",
"transcript": "Waffle for breakfast, then a solid nap, happy at pickup.",
"authorId": "actor-dad",
"createdAt": 1793363400000,
"status": "published",
"audience": "household",
"events": [
{ "eventId": "ev-o30-meal", "category": "meal", "occurredAt": 1793363400000, "quantity": { "value": 2, "unit": "waffles" }, "note": "waffle breakfast (corrected)" },
{ "eventId": "ev-o30-nap", "category": "sleep", "occurredAt": 1793378700000, "quantity": { "value": 60, "unit": "minutes" }, "note": "nap 12:45-13:45" },
{ "eventId": "ev-o30-mood", "category": "mood", "occurredAt": 1793386800000, "note": "happy at pickup" }
]
},
{
"entryId": "entry-o31-a",
"captureId": "cap-seed-o31a",
"transcript": "Oatmeal at 8, potty twice in the morning, and she pedaled the balance bike all by herself for the first time.",
"authorId": "actor-mom",
"createdAt": 1793448000000,
"status": "published",
"audience": "household",
"events": [
{ "eventId": "ev-o31-meal", "category": "meal", "occurredAt": 1793448000000, "quantity": { "value": 1, "unit": "oatmeal" }, "note": "oatmeal" },
{ "eventId": "ev-o31-potty-1", "category": "potty", "occurredAt": 1793455200000, "note": "morning potty" },
{ "eventId": "ev-o31-potty-2", "category": "potty", "occurredAt": 1793457600000, "note": "morning potty" },
{ "eventId": "ev-o31-milestone", "category": "milestone", "occurredAt": 1793476800000, "note": "first solo balance-bike pedal" }
]
},
{
"entryId": "entry-o31-private",
"captureId": "cap-seed-o31p",
"transcript": "Private note about co-parent scheduling — author only.",
"authorId": "actor-mom",
"createdAt": 1793494800000,
"status": "published",
"audience": "private",
"events": [
{ "eventId": "ev-o31-private-note", "category": "mood", "occurredAt": 1793494800000, "note": "private scheduling note (author-only)" }
]
}
],
"gaps": [{ "day": "2026-10-29", "reason": "no-data" }],
"corrections": [
{
"revisionId": "rev-o30-meal-1",
"entryId": "entry-o30-a",
"eventId": "ev-o30-meal",
"supersedes": { "quantity": { "value": 1, "unit": "waffle" } },
"patch": { "quantity": { "value": 2, "unit": "waffles" } },
"byActorId": "actor-dad",
"createdAt": 1793380000000,
"note": "Pre-seeded correction chain: original quantity (1 waffle) remains retrievable via lineage."
}
]
}
Loading
Loading