Generated 2026-04-13 00:48:05 UTC | Back to ladder index | Back to docs
Status: passed
Validation: 17/17 passed
Parser failures: 0 | Apply failures: 0
Artifacts: raw run json | rendered run transcript
| # | Expected Route | Utterance |
|---|---|---|
| 1 | assert_fact | Read this like a repaired novel chapter, but keep the extracted state exact. |
| 2 | assert_fact | assert rule ancestor(X, Y) :- parent(X, Y). |
| 3 | assert_fact | assert rule ancestor(X, Z) :- parent(X, Y), ancestor(Y, Z). |
| 4 | assert_fact | assert rule in_region(X, Z) :- at(X, Y), inside(Y, Z). |
| 5 | assert_fact | Ledger draft, first pass: Liora is Eamon's parent. Liora is Brin's parent. Eamon is Cira's parent. Cira is Dain's parent. |
| 6 | assert_fact | The staging notes are cleaner than the family notes: Dain is at old_quay. old_quay is inside frostmere. Set carries(cira, red_ledger). |
| 7 | assert_fact | Time strip from the same bundle: Set before(bell_toll, archive_visit). Set before(archive_visit, moonlit_departure). Set before(bell_toll, moonlit_departure). |
| 8 | query | Quick check, slightly premature maybe: is Liora already an ancestor of Dain and is he still at the old quay? |
| 9 | retract | Archivist correction, first layer: retract parent(cira, dain). |
| 10 | assert_fact | Set parent(brin, dain). |
| 11 | retract | No, nested fix now: retract parent(eamon, cira). |
| 12 | assert_fact | Set parent(sela, cira). Set parent(liora, sela). |
| 13 | retract | Scene cleanup after the page reorder: retract at(dain, old_quay). |
| 14 | assert_fact | Set at(dain, north_lantern). Set inside(north_lantern, frostmere). |
| 15 | retract | Prop cleanup: retract carries(cira, red_ledger). |
| 16 | assert_fact | Set carries(dain, red_ledger). |
| 17 | retract | Timing note: retract before(archive_visit, moonlit_departure). |
| 18 | assert_fact | Set before(archive_visit, flood_delay). Set before(flood_delay, moonlit_departure). |
| 19 | assert_fact | Final continuity query: query ancestor(liora, dain). Query carries(dain, red_ledger). Query at(dain, north_lantern). |
| ID | Query | Expect | Min Rows | Max Rows |
|---|---|---|---|---|
| liora_eamon_parent_kept | parent(liora, eamon). | success | 1 | |
| liora_brin_parent_kept | parent(liora, brin). | success | 1 | |
| liora_sela_parent_added | parent(liora, sela). | success | 1 | |
| sela_cira_parent_added | parent(sela, cira). | success | 1 | |
| cira_dain_parent_removed | parent(cira, dain). | no_results | 0 | |
| brin_dain_parent_added | parent(brin, dain). | success | 1 | |
| eamon_cira_parent_removed | parent(eamon, cira). | no_results | 0 | |
| liora_dain_ancestor_kept | ancestor(liora, dain). | success | 1 | |
| eamon_not_ancestor_of_cira | ancestor(eamon, cira). | no_results | 0 | |
| dain_at_north_lantern | at(dain, north_lantern). | success | 1 | |
| dain_not_at_old_quay | at(dain, old_quay). | no_results | 0 | |
| dain_in_frostmere | in_region(dain, frostmere). | success | 1 | |
| dain_has_red_ledger | carries(dain, red_ledger). | success | 1 | |
| cira_no_red_ledger | carries(cira, red_ledger). | no_results | 0 | |
| archive_visit_before_flood_delay | before(archive_visit, flood_delay). | success | 1 | |
| bell_toll_before_moonlit_departure | before(bell_toll, moonlit_departure). | success | 1 | |
| moonlit_departure_not_before_archive_visit | before(moonlit_departure, archive_visit). | no_results | 0 |