Skip to content

feat(insights): a date on each conclusion, and no category enum - #603

Merged
mrviduus merged 2 commits into
mainfrom
feat/insight-dates
Sep 11, 2026
Merged

feat(insights): a date on each conclusion, and no category enum#603
mrviduus merged 2 commits into
mainfrom
feat/insight-dates

Conversation

@mrviduus

Copy link
Copy Markdown
Owner

Acting on the consilium's one unresolved question, which the owner answered: the return path is per-book ("I open Dracula and see what I worked out about it"), and one insight per chapter, refined over time.

Both answers remove work rather than adding it.

The category enum is not being built

Per-book retrieval is served by a chapter label and reading order — both already ship. Tabs over ≤10 insights are an empty-state generator, and a category in the unique key would take the write ceiling from 1 × chapters to 4 × chapters while falsifying the replace promise the tool description makes. Revisit only if retrieval ever turns cross-book ("every open question across all 33 books"), which is the one shape that genuinely needs a typed field — and which would also need the filter-less /me/insights route that answers 400 today.

What the panel was actually missing is a date

A конспект is read months later. Without a date it cannot answer "is this what I thought then, or what I think now". A re-run replaces the row and moves updatedAt, so this is the age of the current text, not of the conversation that started it.

  • Absolute, not relative. "3 days ago" is the right register for a shelf of things in progress and the wrong one here; by the time this matters the answer is months.
  • ISO, because the shared package holds no locale, and because a local calendar day would show the same insight under two different dates on two devices — which the test pins with a +03:00 timestamp that is still the previous day in UTC.
  • Null on an unparseable timestamp, so a bad row loses its date rather than printing Invalid Date beside a conclusion.

One pure function in shared, rendered by both clients. No schema change.

Verification

  • shared 452 (3 new), web 711, mobile 369 — pass
  • tsc --noEmit web + mobile — clean

🤖 Generated with Claude Code

https://claude.ai/code/session_011rgEMvYYi4Egj99dVtvm6E

mrviduus and others added 2 commits September 10, 2026 21:41
The categories were dropped before they were built. Three independent readings of
the code disagreed about them and converged on one question for the owner: coming
back in a month, do you open one book or all of them? The answer was one book —
and per-book retrieval is already served by a chapter label and reading order.
No column, no migration, no tabs.

What the panel was actually missing is a date. A конспект is read months later,
and without one it cannot answer "is this what I thought then, or what I think
now". A re-run replaces the row and moves updatedAt, so this is the age of the
current text, not of the conversation that started it.

Absolute, not relative: "3 days ago" is the register of a shelf in progress, and
by the time this matters the answer is months. ISO because the shared package
holds no locale and the value must not shift a day between devices.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011rgEMvYYi4Egj99dVtvm6E
Verified: every name in that list has zero references and the files do not exist —
it was removed in #597. A to-do pointing at deleted files sends the next reader
chasing nothing, which is how the Play deadline in this same file misled an agent.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011rgEMvYYi4Egj99dVtvm6E
@mrviduus
mrviduus merged commit a1b2746 into main Sep 11, 2026
10 checks passed
@mrviduus
mrviduus deleted the feat/insight-dates branch September 11, 2026 01:55
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.

1 participant