Commit History
Yesterday
-
[NOTICKET] fix(planner): one grain per turn, PA trend from summed hours, audit follow-ups
Rifqi Hafizuddin +1: Claude Opus 5.5- C1: a weekly table whose monthly twin exists is left out of the turn's catalog unless the message, rewrite, objective or a business question names weeks (src/catalog/twins.py, called in SlowPathCoordinator.run and mirrored in the planner eval). 11 of 63 stored EMA final plans read weekly with no week word. Generic (column names), never-throw, nothing deleted - IRRepairer: two same-named in-play columns that are the sides of the query's own join resolve to the left side (site_id after the scope hook joins vw_dim_site). Stored attempts with the join: old 3 rejected, new 0 - U5: analyze_trend (agg mean, freq = period grain) over raw rows of a ratio measure gets its input grouped by period, in the M7' fail-open swap. Stored gate plan on the demo DB: 7 of 7 months equal the summed-hours key - A8: router log carries confidence and group_hint - A2: EMA eval fixture binds PA (hour columns), ema_dont_avg catalog with 4 ratio_measure cases (ir_agg_col), 2 no-period-word time_…970232a
2 days ago
-
[NOTICKET] fix(planner): query-shape guards for bare measures and grouping by the measure
Rifqi Hafizuddin +1: Claude Fable 5.2A "group units by PA" turn grouped by pa itself and counted unit-month rows as units; a site comparison was refused on a filter-pinned column selected bare. - inputs: a ratio measure's catalog line opens with a code-made "aggregate with: avg" (computed from the summed inputs) - IR repairer: a bare select pinned by an = filter joins group_by, only when the query is already grouped - planner validator: a bare measure under group_by takes its declared aggregate (fail-open); Check 8p rejects a per-period table grouped by a decimal measure with no period column shown - IR validator: the bare-select error names every column by name and role Local: 16 new tests, suite 1488 passed / 8 skipped (was 1472 / 8); replay of 691 stored plans, 0 regressions. Runs f3f99419 and 2cfd6e3c in the handoff doc. Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>7d7f748 -
[NOTICKET] docs(plans): planner query-shape fixes and audit follow-ups handoff
Rifqi Hafizuddin +1: ClaudeRCA of the "selected bare while group_by is present" failures of 2026-11-09, the F1-F5 fix plan (not built) and the audit follow-ups, for handoff. Co-Authored-By: Claude <noreply@anthropic.com>641b6d4
3 days ago
-
[NOTICKET] fix(planner): convert a tool-side PA average instead of refusing
Rifqi Hafizuddin +1: Claude Opus 5.5- 9 Nov optional test (analysis 0afacc01): "bandingkan PA OB LOADER IPR, LAT, SDJ 2026" was refused. Check 8o rejected the planner's retrieve -> analyze_aggregate plan twice; the third attempt failed a generic check - M7': an analyze_aggregate that averages a ratio measure over raw rows becomes one grouped retrieve_data in the same slot, with the tool's output names (pa_mean...). Built on a copy and swapped in only if the whole validation passes; otherwise the plan runs unchanged. Never rejects, never re-prompts. Check 8o removed - Verified: replay of 679 distinct stored plans, old vs new validator: 673 identical, 6 formerly rejected now pass, 0 regressions. Converted plan on the demo DB equals the key. Local suite 1472 passed, 8 skipped (was 1457/8) - Paid re-run (abd909fc): compare sites right, method named. The BIN follow-up failed for a separate reason (RATIO_MEASURES_REQUIREMENTS §10.8) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>4e83532 -
[NOTICKET] docs(plans): ratio measures re-test result
Rifqi Hafizuddin +1: Claude Opus 5.5Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>8885f70 -
[NOTICKET] feat(query): PA over several periods from summed hours
Rifqi Hafizuddin +1: Claude Opus 5.5The planner averaged monthly `pa` values (12 of 12 PA aggregations in the local ema_demo runs). The company standard and EMA's model compute PA over several periods as 100 * (sum INPR hours - sum breakdown) / sum INPR hours, which changes the lowest unit and the PA bands on the monthly table. - IR: optional `AggSelect.computed` (ratio of signed sums, scale 1|100), only on `avg`; SQL and pandas compile it as a double-precision ratio over rows where every term is set. Validator checks ids and numeric types. - Definition is data: a `compute` block on the approved PA formula knowledge entry, bound per turn to every table holding the named columns (`Column.measure_method`, Python-only). - Plan validator, last and fail-open: `avg(pa)` gets the computed spec; Check 8o rejects analyze_trend/analyze_aggregate averaging raw rows of a ratio measure. "rata-rata sederhana"/"simple average" keeps the plain average (Constraints.plain_average). - Scope line names the method ("metode: PA…307bac0
9 days ago
-
fix/analytics-test-findings (#27)
- [NOTICKET] fix(anomaly): scatter skips low-variety axis columns (5af27465ed7d7d19598814d77189022e7594cfc1) - [NOTICKET] fix(data-quality): fix missing-rate chart axis to 0-100% (0fb7af8ae9838b0e8c383e5236239b8e97a2dafe) - [NOTICKET] feat(cluster): name example members per cluster (cf34801cf4d8a2eefc1a35880a1f64f674696ba3) - [NOTICKET] fix(demo): tool-result evidence, trend chart, week-column check, importance baseline, source-name repair (21fd95509d274df6622b9c4c3b0eed094e5b119c) - [NOTICKET] feat(aggregate): optional sort_by / top_n for rankings (a79d8dabced623f61ee3143b9577a45134982f31) - [NOTICKET] feat(report): evidence tables for cluster, anomaly, descriptive, data-quality and forecast (0e64f6bac403702327e1f2c3a602c30226c18d6b) - [NOTICKET] fix(report): no default chart for descriptive evidence (9f5b58ca5dd7a224a02426bbe0ae431db2d30ea3) - [NOTICKET] feat(llm): LLM_PROFILE selector for the chat LLM quad (54m default, 6l trial) (268ef5d8200668a0c469a1c03c3be3d25dc422f3) - [NOTICKE…86dfe6f
15 days ago
-
/fix demo prep (#25)
- [NOTICKET] fix(planner): match the question's time grain; reject non-task placeholders (ac68af5f1fedb87cd64b206a25c539136e1e491e) - [NOTICKET] docs(plans): report reframe and prompt cleanup plan (1acca723005e9ce364981a6e8e20684dc41dddee) - [NOTICKET] feat(report): question-anchored report with scope, checks and an analysis ledger (564c8270c31e0729288f251c918ea075ed042ae7) - [NOTICKET] fix(report): English structure, content in the user's language (99ed8a1a0af610180bd77a65bb952d79aa7fd906) - [NOTICKET] refactor(prompts): one home per rule — planner.md 7.1k -> 3.9k tokens (71c6f2b2bf958186f1d0b430b237229f5fdcf03d)4a5f122
16 days ago
-
/fix help and active tools (#24)
- [NOTICKET] fix(help): suggest the analytical tools that are now active (b1ef6f048c8dd469a7f3d2214fae3bbfe7da4e46) - [NOTICKET] eval(help): capability cases for the v7 tool sync (87bb688ca6d8b1de28e3f911bf8502ab504012d3) - [NOTICKET] fix(chat): load the latest history, not the first ten messages (b3a1a3557a8946a0d493084be741105e0293f45e) - [NOTICKET] docs: sync REPO_STATUS, DEV_PLAN and contract with the code (19587bc335e857a2d3c992b9d2fd16e0b7e37159) - [NOTICKET] docs: close DEV_PLAN #32 — live Neon matches Go 0007 (17b54e212416e06fe32e3942ebf951856b03792e) - [NOTICKET] fix(report): no user-scope catalog fallback in the data-source appendix (35a6aedb48870a8c6007b845c7a5ff1d0f57c324) - [KM-717] feat(planner): read the catalog data dictionary into the planner's catalog summary (2d70efebcdfecd9f1fce6cfa43c5e304bf6edbe4) - [KM-717] eval(planner): data-dictionary cases, and live Neon knowledge tables verified (97b27d162f937dfe302e17c432a7e76e3cdfb937) - Merge remote-tracking branch 'origi…00ca133
-
/fix planner and unstructured pipeline (#23)
- feat(documents): v2 unstructured ingestion, image-token, scoped retrieval (b848f739c23c9ea152c5bcc5ea4b9d8b4ca64afa) - feat(prompts): mixed document+data path, figure markers (39019d57e159b510fda1f5bd813d051e1ba7c05c) - eval(chat_sim): doc + mixed suites with bound documents (b6e060b328c8dbbdb19f3da466fe97f62dab09aa) - [NOTICKET] docs: unstructured v2 plan, contract, status sync (6702119c2705ef9a99a4a0ba0adaab9ac7a28c54) - fix(check): list data and documents when both are asked (2b7c3bd79fe73b693634e583be46c812b6c74d3c) - [NOTICKET] docs: mixed suite result, check + router fixes, U8 done (0e1ad6e143e30ec20960d3a2c5ae22190aa512ff) - feat(router): a figure IN a document vs a chart FROM data (770b98855d640c727a402b0db1252638364c20d7) - fix(chatbot): reply in the turn's language, not the documents' (b6150d58b991fb5d98b0bb2278956c938d80d4c0) - fix(query,planner): stable capped rows, plan-time handoff check, trimmed records (ea9848db5ec39e32067a2c3dbc9453f1a94736d2) - eval: scoped/DB/docum…7124acf
-
/feat ds tools (#22)
- feat(tools): analytical-tools foundation — spec_builder + ml executor (ee1a76a466c6ea6dc52f337d0fd9534ca0271a86) - feat(tools): shared chart kit + auto-chart builders (535f17340950e070556441140276c47d074606e2) - feat(tools,spine): wire tool auto-charts to chart persistence (522e582bab372b645577789cbbd59d5105a66632) - build(deps): add statsmodels + explicit scikit-learn pin (4d76bd0e57f5f7b1bbb0b77e49970063d1898a1b) - [NOTICKET] docs: analytical-tools foundation — conventions, DEV_PLAN 0.9, status sync (a7f0bca51ed8ff08784cca3fd4179dce56ef7622) - [NOTICKET] eval(planner): skip cases whose tool is withheld, don't fail them (845284b4a3b32df142565de23386dee739d0f733) - [NOTICKET] feat(tools): analyze_forecast (ETS) — first ML tool, DEFERRED (dae102f68fc36cf755e7d53df10affb4ec7edaa6) - [NOTICKET] planner: rebalance few-shot exemplars EN/ID, demo the reply-language rule (fb30aec99586daf12a4799087ae538e5e862451c) - [NOTICKET] feat(tools): analyze_anomaly (Isolation Forest) — second ML tool,…e201ae4
-
/fix parsing and term extract (#21)
- [NOTICKET] fix: retire the fuzzy clustering pass; add E1c post-cluster recall (2cc21c92688d662c5cfdfeeb6784bb85b98575ca) - [NOTICKET] feat: parsing schema 0.4.0 — asset pointers for figures and tables (e662ac089b741c90e19b9f51f4933fb97a1225bc) - [NOTICKET] docs: sync REPO_STATUS / DEV_PLAN / contracts for pipeline v2 (c3c184d83bec4a4d42e9ad3f7265560802817e5b) - [NOTICKET] docs: close K15 with the paid v1-vs-v2 comparison (62782fed9292f67d7b376783920a07197d6776e9) - [NOTICKET] fix: test the caption hypothesis; ship the signal at weight 0.0 (36a166e1844d186d6cfb8fff9ea070f3dc69b220) - [NOTICKET] fix: cap key-parameter pre-emption in the review queue (Step 2) (4e3a6aefef7024db3ea4b7946fd7771a6c269601) - [NOTICKET] feat: assert on invariants, report a band, classify the genre (Steps 0 + 5) (f1d64b113db0289601806635a9b154201a6127fc) - [NOTICKET] fix: gate spend in cluster units and surface the estimate (Step 6) (cdb5fe82cc5f2893ccbb5e28282e8dc46a27e061) - [NOTICKET] fix: retire escalation…f07443e
-
/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