Commit History
-
[NOTICKET] feat(knowledge): incremental ingest — versions, reuse, staleness (i1-i7)
Rifqi Hafizuddin +1: Claude Opus 5The 2026-09-08 "ingest bertahap" items, against four rulings taken 2026-09-14. i5 Identity is `doc_id`; the same document arriving with different bytes is a NEW VERSION of it, not a new document. That is what keeps an amended file's approvals attached - entity_id derives from doc_id, which does not move. The reuse check moves to find_document_by_hash (any version): computing the next version first and then looking it up would miss the row that already holds those bytes and re-parse a document we already have, turning the idempotency guarantee into a paid no-op. The artifact's own `version` is ignored - parsing stamps 1 on every parse and cannot know what the tenant already holds. i2 A term this company has already approved is no longer re-extracted. One LLM call per cluster is the entire cost of the glossary branch, so every recognised term is a call not made - and it is also what stops one concept arriving as term 1.1 and term 1.2. Ids s…72e18a5
-
[NOTICKET] feat: pull one linked partner chunk into the evidence window
Rifqi Hafizuddin +1: Claude Opus 50.4.0 pairs a table chunk with the prose that introduces it (`referenced_by`, both directions) and nothing consumed the pointer. Measured what it would buy, ranking only on the three v2 artifacts -- free, no GLiNER, no spend: clusters top-5 touches a pair BOTH sides only ONE BUMA 83 31 0 31 Komatsu 93 55 0 55 Open Pit 427 70 0 70 Zero of 603 clusters saw both sides. The ranker never co-selects a table and the prose that names it, so the partner is unseen content rather than a duplicate -- and for a bare grid that prose is often its only title ("Troubleshooting of engine (S-mode)" above "S-1 | 6"). Cost at the cap of 1: evidence read +14.5%/+24.5%/+9.9%, i.e. +1.6%/+4.1%/+4.2% of total prompt spend; Open Pit moves 71% -> ~74% of the 2M ceiling. The expansion lives in `top_k`, not `rank_evidence`, for two rea…5d51025 -
[NOTICKET] fix: gate spend in cluster units and surface the estimate (Step 6)
Rifqi Hafizuddin +1: Claude Opus 5Found on the way in, and it is the bigger half of this commit: the pre-flight ceiling was gating on a PARTIAL number. `estimate_cost` summed the glossary branch alone while reporting a field named `estimated_prompt_tokens`, so every consumer read a part as a whole. Measured on the three v2 artifacts, free: clusters calls old (glossary) new (all four) undercount BUMA 83 106 170,466 201,751 18.4% Komatsu 93 95 208,993 227,329 8.8% Open Pit 427 494 1,354,283 1,560,548 15.2% The Open Pit chapter is at 78.0% of the 2M ceiling, not 71%. Adds a SECOND ceiling on cluster count, which is what actually drives spend -- one LLM call per term cluster -- and unlike the token figure is exact and known for free. Two things the token ceiling cannot see: the cache hit rate degrades as a run grows, so the real bill rises faster than the estimate; and part of that estimate is…cdb5fe8
-
/feat knowledge management (#20)
- [NOTICKET] docs: knowledge pipeline test integration — context, audited task checklist, DEV_PLAN §0.8 (8e69dc6c638509f4dd7b6775d520fb4aa4efbd3e) - [NOTICKET] docs: knowledge pipeline — reframe kex as prototype, not port target (7cce5ffc9ab88791ac139dbef8e88e124a3d049e) - [NOTICKET] feat(eval): knowledge-extraction gold set, scorer + frozen prototype baseline (60cf4a885ef31a8aa64916f5a70ac5a0e8062c5f) - [NOTICKET] chore: add missing planner and readiness eval results (bd6659b3bf523597e4482b04ab1fcff5e1284d25) - [NOTICKET] feat(knowledge_extraction): free stages — models, seam adapter, filters, cluster, ranking (024c30abd1189119d33508eded334fe5a3ed5011) - [NOTICKET] fix(knowledge_extraction): move runner into the package; fix two ranking defects (72605ff6876a7936ab685d417c766ce820f6214b) - [NOTICKET] feat(knowledge_extraction): span filter — E1 recall 0.8537, matches the frozen baseline (3a016343398753cf730d50548c0e92ff47c6716c) - [NOTICKET] feat(knowledge_extraction): paid extraction …b68816f