feat(chronicle): Phase 2 — Research & evidence - #108
Merged
Merged
Conversation
…er, facets (Phase 2 task 2.1, #105) POST /api/search over the maildb library: exact (mention_search/find, date-ordered), semantic (search_all RRF), hybrid (endpoint-level RRF k=60 with exact-match boost), per-result match explanations. §5.3 structured syntax parsed into scope constraints (total parser, unsupported operators collected, never errors). Embedding failure: hybrid degrades to exact with an explicit degraded flag, semantic returns 503 — no silent fallback. Signed-cursor ranked window (500 ceiling), exact-basis facets. Implemented via cheap-coder (grok-4.5 @ max). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XP7M17NHxw6mjpTFtMqwZu
…grouping (Phase 2 task 2.3, #105) /research lens: hybrid/exact/semantic mode selection with distinct descriptions; parsed-syntax constraints as editable chips (edit/remove re-runs); message and attachment cards with visible type labels, why-matched disclosures, React-node snippet emphasis (no innerHTML); thread/year/mailbox grouping; facet sidebar; degraded-semantic banner; J/K/Enter keyboard flow; scope inherited across lens changes both ways. Implemented via cheap-coder (grok-4.5 @ max). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XP7M17NHxw6mjpTFtMqwZu
…contract (Phase 2 task 2.4, #105) Model gateway v1: Ollama route behind an injectable transport, three-role prompt structure confining source text to a delimited evidence block (injection-tested), availability probe, audit rows with IDs and question hash only. POST /api/ask streams retrieval status, answer tokens, and citations over SSE; [S#] markers resolve only to retrieved sources (unmatched surfaced, never fabricated); answers + citations persisted to app_answers/app_citations with excerpt hashes. Research Desk gains the Ask mode answer block (streaming, citation chips → inspector, model route/policy footer, cancel); model-unavailable leaves search fully functional. Implemented via cheap-coder (grok-4.5 @ max). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XP7M17NHxw6mjpTFtMqwZu
… chips (Phase 2 task 2.2, #105) POST /api/query/interpret: deterministic syntax parse always; gateway extraction from residual text behind a strict JSON whitelist (any parse/ validation failure degrades to model_used=false, never 5xx); person names resolve through the contacts subsystem or surface as unresolved chips; syntax wins conflicts. Research Desk interprets NL-like queries first (3s timeout falls through to search), rendering origin-badged chips. Implemented via cheap-coder (grok-4.5 @ max). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XP7M17NHxw6mjpTFtMqwZu
… extraction visibility (Phase 2 task 2.5, #105) /files lens: dense table + gallery over POST /api/attachments/list (keyset, family filters, sha256 exact-duplicate groups with full provenance). Preview endpoint enforces declared-type allowlist AND magic- number match, CSP sandbox + nosniff headers, strict path containment (resolve + is_relative_to, no path leakage); SVG never previewable; downloads audited with attachment disposition. Failed extractions stay discoverable with reasons. Implemented via cheap-coder (grok-4.5 @ max). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XP7M17NHxw6mjpTFtMqwZu
…ports (Phase 2 task 2.6, #105) app_workspaces/app_workspace_blocks with optimistic concurrency (409 on version mismatch); heading/note/pin/answer blocks (notes plain-text only); pin affordances in the inspector and answer block; workspace scope opens in Chronicle as the live working set; Markdown/JSON/CSV exports share a deduplicated source manifest (pins + answer citations) with a stable fingerprint and export audit. Completes Phase 2. Implemented via cheap-coder (grok-4.5 @ max). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XP7M17NHxw6mjpTFtMqwZu
6 tasks done
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Objective
Phase 2 of Life Chronicle (epic #105): Research & evidence. Goal mode: review + merge delegated to Claude via /goal. Execution order: 2.1 → 2.3 → 2.4 → 2.2 → 2.5 → 2.6.
Tasks — all complete
POST /api/search: hybrid/exact/semantic with explanations, §5.3 parser, no-silent-fallback degradation, facets, ranked-window cursor/api/ask+app_answers/app_citationsPhase 2 exit criterion (spec §20.1)
"User can answer a factual question, inspect evidence, and export a source manifest" — met: Ask streams grounded answers with citations resolving only to retrieved sources; every citation opens in the inspector; workspace exports carry fingerprinted manifests.
Gates
Every task commit green on both gates. Final: 188 server + 176 web tests (+1 todo), root 674.
Reviews
6/6 approved in session
.cheap-coder/review-NN.md; 0 revision rounds; 0 reviewer code fixes this phase.Provenance
Implementer: Grok Build CLI,
grok-4.5@ max. Architecture, spec, review: Claude.🤖 Generated with Claude Code
https://claude.ai/code/session_01XP7M17NHxw6mjpTFtMqwZu