Commit History
-
[NOTICKET] docs(knowledge): record the DomainContext v3 reshape
Rifqi Hafizuddin +1: Claude Opus 5Brings the two canonical docs up to `172d8dc`. REPO_STATUS section 14 gains a dated delta for the v3 reshape; DEV_PLAN section 0.8 gains K12. Both now state that the domain branch is no longer the pipeline's one unverifiable output, and WHY that was achievable without a bigger model: the branch was asked a different question. "Summarise" cannot be located in the source by construction; "locate the document's own statement of purpose" can, so `GUARDED_FIELDS["summary"]` could move from `()` to `("title", "purpose_verbatim")`. Also records the review-queue contract change Harry needs — rows now carry `row_kind`, and a `key_parameter` row has no term_id, definition or mention count. One correction made in passing: REPO_STATUS described the extraction stages as `... validate -> diff -> queue`, omitting `link`, which has run between them since the v2 schema landed on 2026-08-26. Docs only; no code in this commit. The knowledge checklist (X26), the calibration guarded-field table and the…6a9fb78
-
[NOTICKET] eval(knowledge): commit the BUMA fixture artifact; K9/K10 close
Rifqi Hafizuddin +1: Claude Opus 5The 2026-08-27T13:28 re-parse of STD_2026_006_MNO becomes the committed fixture (S7/K10). Same document and content_hash as the 08-26 parse, same parser_config, five corrected chunk boundaries — of which ::0030 is the one that matters: it previously held only "Keterangan grafik:" and now carries the hierarchy-level paragraph, moving Controllable / Hierarki Level Analysis from E1 miss to hit. One paid run on it (90 calls, 170 s): E1 0.8293 / E2 2.556x / E3 1.000, all three above their kill lines, rule recall 0.4286 (6/14). 0 fields rejected by the span check, rules_without_term_link 0. Two caveats recorded beside the numbers rather than left for a reader to rediscover: E3's precision 1.000 sits on a scoreable base of 6 (57 of 63 entries abstain, recall 0.33 against the 18 gold terms with criteria), and the rule-recall delta is partly a denominator change — the same 6 rules matched as in the 08:29 run, the gold base went 15 to 14 when X23 closed. The harness now runs with data/knowled…e5f4abe
-
[NOTICKET] feat(knowledge_extraction): output schema v2 — entity ids, links, 16 fields cut
Rifqi Hafizuddin +1: Claude Fable 5Harry's review of the output contract asked for four things: an id on every entity, a formula referenced rather than restated, rules related to formulas, and a smaller schema. All four are adopted. Two defects surfaced while adding the ids, and they matter more than the ids do. Neither existing identifier survived a re-run: `cluster_id` was a frequency-rank ordinal (`#c000` over a list sorted by mention count), so one changed count reshuffled every id after it, and `rule_id` was written by the model, so the same rule could return a different slug next run. The product is an expert working a review queue — if Mas Beta approves 40 entries and a prompt is retuned, unstable ids lose which 40. Approval continuity, not linking, is why these exist. New `ids.py` mints term/formula/rule/brief ids as sha256 over content: never positional, never model-supplied. New `link.py` resolves every reference after the branches run — deterministic, no LLM, no spend — and returns dangle counts rather than…49dfe4d
-
[NOTICKET] docs: reorganise into docs/ and give every doc a status banner
Rifqi Hafizuddin +1: Claude Opus 5The root carried 14 markdown files and no way to tell which were authoritative. That knowledge lived in CLAUDE.md §1 and in Rifqi's head, which works for us and fails for anyone else — and one of the stale ones already has a named failure mode ("The Stale-Doc Believer") for being implemented from. Root now holds four: REPO_STATUS, DEV_PLAN, API_CONTRACT_BE_PYTHON, README. Everything else moves under docs/, by git mv so history follows: docs/knowledge/ context, TODO, calibration, parsing output contract docs/plans/ SPINE_V2_PLAN (approved, W3 deferred), DS_TOOLS_PLAN (proposal) docs/archive/ API_ENDPOINTS_RESTRUCTURE, CODE_REVIEW_2026-07-23, PROJECT_BRD docs/reference/ API_CONTRACT_BE_GOLANG (the Go repo's, a copy that can drift) Every doc gains a one-line status banner under its H1, marked <!-- doc-status -->: LIVE / LIVE PLAN / PROPOSAL / ARCHIVED / REFERENCE. Archived ones name what superseded them — API_ENDPOINTS_RESTRUCTURE now opens with "DO NOT IMPLEMENT FROM…f1342ce -
[NOTICKET] docs: sync REPO_STATUS §14 + DEV_PLAN §0.8 to the landed knowledge pipeline
Rifqi Hafizuddin +1: Claude Fable 5Both halves of the knowledge pipeline are now in-tree (commits 024c30a..a7bdeae, ~5,360 lines) and the canonical docs still described a state where nothing had landed. Reconciled against what the code actually does; every claim grepped this session rather than recalled. REPO_STATUS.md — new §14 plus a header reconcile note. Leads with the thing most easily misread: none of it is on the live surface. No endpoint, no table, nothing mounted in main.py; both halves are offline CLIs run by an admin a few times a year, and the existing src/knowledge/ OCR->pgvector RAG path is untouched and still the one serving retrieval. Documents the seam (one versioned ParsedDocument, extraction never takes a file path), the three artifact properties that were each a measured bug before they were a rule, the extraction stage order, the controls not to weaken (mandatory verbatim span, abstention is correct, nothing dropped at term level), and what is NOT done. DEV_PLAN.md — §0.8 retires the "Nothing has …4cc2edb
-
[NOTICKET] docs: knowledge pipeline — reframe kex as prototype, not port target
Rifqi Hafizuddin +1: Claude Fable 5kex is a prototype that answered the design questions; extraction v2 gets rebuilt in this repo. What carries forward is the evidence and the tuned constants, not the code. Restructures the checklist accordingly: - New §2 prototype disposition (P1 freeze / P2 harvest constants / P3 migrate the gold sets + scorer into eval/knowledge/ / P4 record negative findings). P3 lands before any v2 pipeline code — without a standing baseline "improved" cannot be shown, and the nano schema-fill experiment already failed. - §5 splits every stage into DESIGN (validated, with a number) vs BUILD (exists in this repo). The previous table read 11 done, which was honest about the design and misleading about a rebuild — none of it exists here. - Adds the module-name collision: src/knowledge/ is the existing OCR->pgvector service, so v2 needs its own name. - Seam section reflects Sofhia's contracts.py draft as the agreed base, with the envelope / section-structure / source_wording items still …7cce5ff -
[NOTICKET] docs: knowledge pipeline test integration — context, audited task checklist, DEV_PLAN §0.8
Rifqi Hafizuddin +1: Claude Fable 5Planning-only. No code, dependency, table or endpoint added to this repo. - knowledge_pipeline_context.md: intent, ownership split, the six stages, and the settled decisions (term-cluster call unit, no relevance gate, mandatory verbatim provenance span, all content fields Optional, frequency-sorted review queue). - KNOWLEDGE_PIPELINE_TODO.md: task checklist with owners, for review with Sofhia. Statuses verified against the existing kex POC and its run artifacts, not estimated. - DEV_PLAN.md: new §0.8 tracking the work in the usual place, plus two §6 open decisions (where kex lives; the admin ingest surface's auth posture). Audit finding that shapes the plan: the extraction half is not greenfield. A working POC (~2,763 LOC, 21 passing tests, four experiments against real Azure calls) exists outside version control. Measured on the BUMA standard: GLiNER Indonesian recall 0.854 (PASS, closing the context doc's headline open risk), clustering 2.56x (PASS), nano schema-fill 0.75 (…8e69dc6 -
/fix planner count and report (#19)
- /fix planner count question (11de970ff65be9b4f81f773cfb355d3dc57358d7) - [noticket] fix report bug where some answered analysis isnt included in report summary answers (8dec1825cf803ad28f4ff0400b9c373250a7d90a) - [NOTICKET] fix: split report floor from report body; scope analysis reads by user_id (fd4865b20dfc46782706be9aab318f909b9903c3) - [NOTICKET] docs: sync report floor/body + security posture; add review remediation tracker (fc5200c994441ec505ea7a82469da577afe170a5) - [NOTICKET] test: planner eval harness (rule-compliance, --selfcheck/--rescore) (4292522aa3fa3a7af8f933307334cb7e5eb0b377) - [NOTICKET] eval: repair readiness harness; commit intent/help/readiness baselines (08a0a4ad5eacc6c90df22fab5be69f2d33579f29) - [NOTICKET] fix: compiler parity — F-17 fabricated column, F-18 LIKE nulls, F-25 empty in/not_in (8f736f90f1958960a83847d332b45b13fa346168) - [NOTICKET] feat: bound catalog render + blob read; scope charts/traceability; mark degraded seams (0cb7d53cb6f7f7e7b687dd6d9c27…f282b15
-
/fix report not working (#18)
- [NOTICKET] fix: write reports.user_id (Neon NOT NULL column broke report persistence) (13f74e11df6058800f71e539fe135eeba7576f24) - [NOTICKET] docs: correct 13f74e1 root cause — Go migrations are non-convergent (86d0805130637d66082c5a75b8da71fae36002ad)9070d67
-
/fix change model to gpt 5.4 mini (#17)
- [NOTICKET] chore: rename LLM env quad __4o -> __54m (GPT-5.4-mini) (790ef0c7aaac6e76eb01b0ef9a3398ff4249416d)d65c41d -
fix/ check and new chart tool (#16)
- check: table-level column drill + drop misleading "name a table" hint (ef0c7b1c5aa49a244b02f1b5eea15cc77dcf2bcb) - [KM-715] charts: render_chart tool + message_charts store + GET /api/v1/charts + planner viz slice (87cfcf884d923ee4bcd722e0e4ef4d90d7eaedca) - [KM-715] checkpoint: S1a deterministic quality checkpoint between runner and assembler (f3c8de34dc19a573031b67fd4f48dcfbadcdfed8) - [KM-715] docs: sync REPO_STATUS/DEV_PLAN + land SPINE_V2_PLAN (W1/W2 done) (434eacbf2ac8324188ebe5e32775dbc9d2a3f49a) - planner: value-handoff (${tN.col} → list) for tabular lookup/anti-join (54070ac1407b751000e49dfe7f102a2be5ab1ff8) - [KM-715] charts: GET /charts by message_id only + tri-state status marker (b8d15761addf4d499c9631df64e7693aa1d61fa2) - [KM-715] report: embed charts as plotly EDA fences; render_chart counts toward the floor (89db8be6b6f11e86ad0776d2ee07f2306e3b6079) - [KM-715] docs: contract + status deltas for the charts lead-review round (96347ee7c55a4eb39a906409ec214463e25c5e35) - …5a60e93
-
/fix traceability (#15)
- [KM-691] Traceability: add resolved data_used layer for the FE (a646735e33f6ac725d0756a88956b0aec15fe495) - check: don't leak user-scope catalog when analysis catalog missing (c0ba82938383169b41059c4125765db5275885e7) Co-authored-by: Sofhia Az-Zahra <sofhiaazzhr@users.noreply.huggingface.co>32abc41
-
/fix planner and report (#13)
- [KM-644] planner: infeasible plan outcome + entity-ranking few-shots (089b69d9b6111e813307c6afbd3e7613bb823f9d) - [KM-644] harden query path: grouped-select rule, int-date trends, sample decode, trace guard (74ad5261736bda0bd72bccdb41565ea67313993a) - [KM-703] add analyze_merge tool: two-table combine (analytics.combine) (8abf635532366d670367557a3ffa03d42371d831) - [KM-567] planner support for analyze_merge: data_right guard + two-retrieve merge few-shot (a029a843247e6ea4d3c79a4e2c1b7571ba4cda69) - [KM-644] report v2: BQ answers, unresolved/excluded sections, evidence tables + curation/readiness endpoints (4ceb058d85c5a2a289443b9411d2b345027fa226) - [NOTICKET] refactor: mint message_id as UUID to mirror analyses_messages id shape (4253733b6b8db0449a82442a915c732ddd55f528) - [KM-644] report: drop Notes/Unresolved/Method sections from rendered markdown (compact report) (eef6de811a139402c79fd74ad4adfc00cf7aff01) - /edit md file (8198cc188ff05a2798ae2056b90b6e56e1bea87b) Co-authored-by…49b0848
-
/feat traceability (#11)
- [NOTICKET] Fix check skill: reply language + tabular inventory routing (1367f41269cf9ef42fd91f311b24d4edf5885c7b) - [KM-691] Develop traceability (23cc2079989fef931a6e146980fe6bf528ee6e92) - [NOTICKET] Humanize check output: hide UUIDs, add lead-in, list format (2bdda8fc3fc4b4e17b4df7fb53aee5abede45add) - [NOTICKET] check: schema-detail view for column/type questions (9e248d9cc5688d6ee622be523a6bedddf5010995) - [KM-691] Make sources trace-authoritative; drop stream sources (b43ecc77f26c1537cbbfddb6800ec4ff62d16441) - [KM-691] Bound traceability payload + reject contradictory IR filter ranges (db6db73d6ab0c2175447946742038443d67b2f78) - /fix planner can now plan quarter comparison (839e32c8d6d5895029072074ab7aba8bb4fcdb6e) Co-authored-by: Sofhia Az-Zahra <sofhiaazzhr@users.noreply.huggingface.co>f873f92
-
/fix analysis + report_inputs and storage update (#9)
- fix(chat): drop ENABLE_SLOW_PATH flag + make chat persistence read-only (b8b76c4fb8db21de183cc6f80c0acba0d35bdad1) - [NOTICKET] feat(storage): read tabular Parquet from Supabase S3 via provider toggle (3f48226adaf2ed107a4eb2c0373cbb73fc62f552) Co-authored-by: Sofhia Az-Zahra <sofhiaazzhr@users.noreply.huggingface.co>079782d
-
/fix message_id for chat/stream Endpoint (#6)
- [NOTICKET] refactor(api): server-mint message_id only; unwire v1 chat (729086150b982cbd747829074658bc798d8e18f4)d8e7745 -
feat/ Endpoint Restructure (#5)
- [KM-686] Unwire Non-AI Routers from Main + Swagger (0b2d6785801ecc4d58a32580b1a9ef6238059de2) - [NOTICKET] docs: pr/5 sprint tracker + endpoint-restructure contract + REPO_STATUS banner (ce7be178428cadf1884a77d3d1f1398dccf32f6e) - [KM-687] Add Dedicated /tools/help Endpoint + Regroup Tools List (a881d38851470bf685990fdb554417da4fc1eccd) - [KM-688] feat(api): v2 chat pilot + regroup report under /tools; adopt lead API contracts (ad2ce619b51c234a8cd1c3772417a9a542a9a40d) Co-authored-by: Sofhia Az-Zahra <sofhiaazzhr@users.noreply.huggingface.co>3bacc1d
-
feat/Analysis State & Report Rework (#4)
- [NOTICKET] Add project repo documentation (ade9c0c635b1bb6f171a3f4e710e6d0f9bae28f3) - [KM-674] feat(report): adapt report generator to objective + business_questions (9bd8ec51fdcd5057b5e8ba6b219a7d9dce945144) - [NOTICKET] Add revision plan md file (e0384e1dc600b2496f96cbba152e616d65650f07) - chore(docs): tidy root markdown — archive stale docs, delete superseded ones (4835fb85915bd69079fb43d7c602774d514e02ae) - [KM-652] refactor: remove problem_statement skill + problem_validated gate (057e0b24b56dd697603d183f508cb1e8a87268fd) - [KM-678] feat(tools): trim FE slash menu to /help + /report (fed17ccc98ec523088c482673132763826f86701) - [NOTICKET] docs: sync DEV_PLAN status (#8/#9/#20) (e936cfafdfde1385fe16bd7e3796e7d46c193197) - [KM-679] fix(help): drop problem_statement refs after KM-652 (0bec4725db572d492634ced6a80ef6e65d075edc) - [KM-680] feat(report): show author display name (users.fullname) (9bccc122878fbdbae0ac1bd0b4316f5ea8af658c) - [NOTICKET] docs: add API_ENDPOINTS.md (FE surf…0e02a0f