Joseph Doherty
d123684f9a
fix: guard scene close key-quote suffix against re-close bloat (T80.1)
...
Re-running apply_scene_close_summary on the same scene previously caused
recursive bloat: _build_key_quotes_suffix sourced quote text from
memories.pov_summary, which after the first close already carried a
"Key quotes:" suffix. The next close would then quote the quotes,
nesting deeper each time.
Strip any existing suffix from candidate text before truncating to
200 chars in the suffix builder, and from the fresh classifier output
before composing the new value in _summarize_and_apply_for_witness so
the rewrite replaces rather than stacks.
Adds test_scene_close_re_run_does_not_double_suffix.
2026-04-26 21:46:20 -04:00
Joseph Doherty
29e6f346ef
merge: T79 _witness_role_for defensive None handling
2026-04-26 21:42:24 -04:00
Joseph Doherty
cb570a5adc
merge: T78 search_memories docstring SQL-bias note
2026-04-26 21:42:24 -04:00
Joseph Doherty
ce4f56adfa
merge: T77 AddresseeDecision.confidence as Literal
2026-04-26 21:42:24 -04:00
Joseph Doherty
bdc93b4b67
merge: T76 narrate_skip timeout_s plumbed through
2026-04-26 21:42:24 -04:00
Joseph Doherty
9c9d71eb31
fix: _witness_role_for defensive None handling (T79)
2026-04-26 21:41:15 -04:00
Joseph Doherty
4199038b8b
fix: AddresseeDecision.confidence as Literal[high|medium|low] (T77)
2026-04-26 21:40:47 -04:00
Joseph Doherty
e3dfe18811
docs: search_memories docstring mentions SQL-side significance bias (T78)
2026-04-26 21:40:40 -04:00
Joseph Doherty
d759b90aa1
fix: plumb narrate_skip timeout_s through to client.generate (T76)
2026-04-26 21:40:29 -04:00
Joseph Doherty
fb7e97260b
docs: add Phase 3.5 cleanup plan (Phase 2.6/3 + 3.5/4 backlog burn-down)
...
12 tasks across 7 waves consolidating the 17-item backlog tracked in
CLAUDE.md (7 from Phase 2.6/3 + 10 from Phase 3.5/4). Items are
grouped by file ownership so each wave stays file-disjoint:
- Wave 1 (parallel 4-way): trivial single-line/single-file fixes
(timeout_s plumbing, Literal type, docstring, defensive None)
- Wave 2 (single): scene_summarize.py polish bundle (5 T58 items)
- Wave 3 (single): typed ChatNotFoundError for skip routes
- Wave 4 (single): turns.py wiring (consume_pending_meanwhile_digests
+ natural-language skip runs scene close detection)
- Wave 5 (single): regenerate.py polish (cancel hook + DRY +
sibling query + lifecycle rollback documentation + ordering)
- Wave 6 (parallel 3-way): unified record_turn_memory API + JSON
audit + frontend turn_html_replace SSE handler
- Wave 7 (single): docs sweep
No schema migrations. Bundled tasks split into per-item sub-commits
for clean review bisection. Uses task ids T76-T87 to avoid collision
with prior phases (Phase 3 used T49-T67, Phase 2.5 used T68-T75).
2026-04-26 21:33:16 -04:00
dohertj2
753cec327f
Merge pull request 'Phase 3: events, time skips, threads, meanwhile scenes' ( #4 ) from phase-3 into main
2026-04-26 21:26:49 -04:00
Joseph Doherty
70a5ad3ecc
docs: add T66-discovered consume_pending_meanwhile_digests backlog item
2026-04-26 21:19:11 -04:00
Joseph Doherty
6709cf46a7
merge: T67 phase 3 documentation update
2026-04-26 21:18:38 -04:00
Joseph Doherty
c3947bbb68
merge: T66 phase 3 cross-feature integration coverage
2026-04-26 21:18:38 -04:00
Joseph Doherty
f865ac2ee2
test: phase 3 cross-feature integration coverage (T66)
2026-04-26 21:16:30 -04:00
Joseph Doherty
af6c54dd05
docs: phase 3 status, behavioral defaults, deferred items (T67)
2026-04-26 21:10:49 -04:00
Joseph Doherty
dc35833534
test: feed meanwhile digest canned response after Wave 6b cross-feature merge
2026-04-26 21:07:44 -04:00
Joseph Doherty
0cd41636b3
merge: T65 meanwhile summary digest surfaces to next you-scene
2026-04-26 21:06:10 -04:00
Joseph Doherty
2c7aa68af9
merge: T64 meanwhile turn flow (host+guest, no you)
2026-04-26 21:06:10 -04:00
Joseph Doherty
cf43ba0993
feat: meanwhile turn flow (host+guest, no you) (T64)
2026-04-26 21:05:40 -04:00
Joseph Doherty
a781732ee6
feat: meanwhile summary digest surfaces to next you-scene (T65)
2026-04-26 20:59:35 -04:00
Joseph Doherty
c9d58b8229
merge: T63 meanwhile scene schema + state
2026-04-26 20:52:51 -04:00
Joseph Doherty
c463dc70b2
feat: meanwhile scene schema + state (T63)
2026-04-26 20:52:45 -04:00
Joseph Doherty
819803da84
merge: T62 natural-language skip command flow + shared skip controllers
2026-04-26 20:47:07 -04:00
Joseph Doherty
a7eedb8037
feat: natural-language skip detection + skip command flow (T62)
...
Extend ParsedTurn with intent/landing_state_hint so the classifier can
flag skip-elision and skip-jump prose. The post_turn handler short-
circuits the regular narrative path when intent != "narrative":
elision runs through the shared controller in chat/web/skip.py;
jump returns 422 directing the user to the drawer's structured form
(simpler Phase 3 path — natural-language fiction-time delta parsing
is too fragile for v1 without a structured surface).
Extract the elision/jump logic that previously lived in drawer.py
into chat/web/skip.py so both the drawer T59 routes and the new
natural-language path share one canonical implementation. The drawer
routes become thin HTTP wrappers that translate ValueError to 400
and refresh the drawer partial; the existing drawer skip tests pass
unchanged.
The new natural-language elision derives ``new_time`` by bumping the
chat clock by 1 hour (Phase 3 stub) — the drawer's structured form
remains the path for picking a specific landing time.
2026-04-26 20:45:05 -04:00
Joseph Doherty
e236bcadcd
merge: T61 per-turn event-lifecycle detection + completion promotion
2026-04-26 20:37:21 -04:00
Joseph Doherty
3678bcaca6
merge: T60 prompt assembly active events + open threads
2026-04-26 20:37:21 -04:00
Joseph Doherty
b582567521
feat: per-turn event-lifecycle detection + completion promotion (T61)
2026-04-26 20:35:34 -04:00
Joseph Doherty
21c4ffa63c
feat: prompt assembly renders active events + open threads (T60)
2026-04-26 20:34:26 -04:00
Joseph Doherty
83f94a4325
merge: T59 drawer events / threads / skip controls
2026-04-26 20:29:40 -04:00
Joseph Doherty
2d14197553
feat: drawer events / threads / skip controls (T59)
2026-04-26 20:27:47 -04:00
Joseph Doherty
8efbcdf6c3
merge: T58 scene compression + thread emission on close
2026-04-26 20:21:01 -04:00
Joseph Doherty
8aeadfd0e4
merge: T57 significance-aware retrieval ranking
2026-04-26 20:21:01 -04:00
Joseph Doherty
88350d7d2e
merge: T56 event-completion promotion service
2026-04-26 20:21:00 -04:00
Joseph Doherty
343f305587
feat: significance-driven quote retention + thread emission on close (T58)
2026-04-26 20:18:34 -04:00
Joseph Doherty
021587b3df
feat: event-completion promotion service (T56)
2026-04-26 20:15:51 -04:00
Joseph Doherty
5e6b29e0c5
feat: significance-aware retrieval ranking (T57)
2026-04-26 20:15:19 -04:00
Joseph Doherty
a34931375c
merge: T55 thread-detection service
2026-04-26 20:12:12 -04:00
Joseph Doherty
959fe11410
merge: T54 synthesized-memories service
2026-04-26 20:12:12 -04:00
Joseph Doherty
2959e1ac2a
merge: T53 skip narration service
2026-04-26 20:12:12 -04:00
Joseph Doherty
afe940259a
merge: T52 event-lifecycle detection service
2026-04-26 20:12:12 -04:00
Joseph Doherty
c2144cd9df
feat: skip narration service (T53)
2026-04-26 20:10:42 -04:00
Joseph Doherty
7857da4112
feat: thread-detection service (T55)
2026-04-26 20:10:36 -04:00
Joseph Doherty
adbbd32873
feat: synthesized-memories service for jump skips (T54)
2026-04-26 20:10:05 -04:00
Joseph Doherty
98250644ad
feat: event-lifecycle detection service (T52)
2026-04-26 20:09:13 -04:00
Joseph Doherty
da1f67fb6a
test: bump schema_version assertion to 10 (0009 events + 0010 threads)
2026-04-26 20:07:08 -04:00
Joseph Doherty
03ba34272b
merge: T51 threads table + projector handlers
2026-04-26 20:06:45 -04:00
Joseph Doherty
e26885b011
merge: T50 time_skip event handlers
2026-04-26 20:06:45 -04:00
Joseph Doherty
5b7a195cf5
merge: T49 events table + lifecycle handlers
2026-04-26 20:06:45 -04:00
Joseph Doherty
25bcbac055
feat: threads table + projector handlers (T51)
2026-04-26 20:05:09 -04:00