Commit History
-
[NOTICKET] fix(knowledge_extraction): show the model the section heading
Rifqi Hafizuddin +1: Claude Fable 5The evidence block sent to the model carried only `chunk.text`, so the section heading never reached it. Two consequences, both silent: - Indonesian standards name the term in the heading and open the body with the definition — "2.1.3 Physical of Availability (PA)" / "Adalah ketersediaan fisik…" — and the body often never repeats the term. The model was being asked to define a term its evidence never named. - It broke the invariant that what the model reads is exactly what the span check searches. `validate.evidence_text` already composed heading + text, so a field quoting a section title would have been rejected as unlocatable — and the model could not have quoted one anyway. Found while verifying the claim in the flow illustration: "Physical of Availability" appeared in the prompt only because the prompt file's own worked example contains that string, never from the document being processed. The deterministic `source_wording` fallback masked the effect, which is why th…a7bdeae
-
[NOTICKET] feat(knowledge_extraction): paid extraction stage + validate, diff, queue
Rifqi Hafizuddin +1: Claude Fable 5Completes every stage that does not depend on the seam. The pipeline now runs end to end: artifact -> filters -> cluster -> rank -> LLM -> validate -> diff -> frequency-sorted review queue. extract/ client on the nano __54n quad; structured output is PROBED not assumed (json_schema, falling back to json_object + validate-retry, recording which applied); cached tokens read from the API, never modelled. Four branches, one call per TERM CLUSTER. Prompts stay as files so the fixed prefix is byte-identical and caching keeps engaging. validate/ span check (whitespace-only normalisation, never repairs, unlocatable provenance rejects every guarded field), escalation, conflict detection by token overlap — explainable to the reviewer, and it never picks a winner. diff/ new / duplicate / conflicting against an explicitly supplied active glossary, so the duplicate and conflicting paths are reachable. The …ab5ea78