Commit History
-
[NOTICKET] planner: surface numeric min/max, so thresholds aren't chosen blind
Rifqi Hafizuddin +1: Claude Opus 5BUG 14, found by giving analyze_segmentation its first end-to-end run — it was the last active tool never to have executed outside unit tests. Asked to band `pa` into low/medium/high, the planner used thirds of 0-100 and all 42 rows landed in "high". A segmentation where every row is in one bucket says nothing, and nothing in the pipeline flagged it: the tool did exactly what it was told. The column runs 68.8-95.9. Go has populated stats.min/max on 98 of 98 numeric columns all along; CatalogSummary dropped them, keeping only sample values. The planner did not guess badly — it could not see the range. Same root cause as A28 (constant columns): the catalog knew, the prompt discarded it. It is also the Python half of the date-range gap handed to Harry — his side populates dates, this side renders whatever is there, and neither half is useful alone. Date columns render automatically once he ships. Rendered as `range=<min>..<max>`, skipped for constant columns because their marker alrea…9155dcb -
[NOTICKET] fix(planner): surface constant columns, reject constant targets (A23 Bug 3)
Rifqi Hafizuddin +1: Claude Opus 5Asked "what's driving down hours the most?", the planner targeted Total_Hours -- a fixed 24-hour day -- instead of Total_Down_Hour, and analyze_importance correctly refused: nothing can explain a number that never moves. The catalog knew all along. Total_Hours carries distinct_count=1, min=24, max=24. But CatalogSummary carried only sample_values and top_values and dropped every other stat, so the fact never reached the prompt. The planner was not ignoring the evidence; it never had it. Two fixes, both deterministic: 1. The planner can now SEE it. ColumnSummary.is_constant, rendered as "[CONSTANT: one value in every row -- cannot be a target or a grouping key]" and ONLY when true, so a normal column costs nothing and the marker is conspicuous exactly where it matters. A bool rather than the raw count, because constancy is the only fact here that changes a planning decision -- a count on every column would spend tokens saying something true but useless about the other …688431c -
[NOTICKET] planner: unblock the ML tools A15 just activated (A24, A25)
Rifqi Hafizuddin +1: Claude Opus 5A15 turned on all 18 tools. Two things would have kept the four ML tools effectively unusable, both found while drafting the A15 handoff, both mine. A24 -- modeling was still forbidden in CODE. prompt.py injected, on every planner call: - modeling_allowed: False (no modeling tools exist in v1 -- do not emit modeling tasks) Rule 5 in planner.md was rewritten to permit modeling, but this line sits in the constraints block, is more specific, and flatly asserts the tools do not exist. The planner would have been told to ignore forecast/anomaly/importance/cluster the moment they went live -- four of the demo's payoffs. Constraints.modeling_allowed now defaults True, and the rendered text follows the flag rather than asserting a fixed world. Kept as a knob, not deleted: a caller can still force a strictly descriptive run. A25 -- few-shots were not scoped with the registry, an A17 gap I introduced. render_examples() took no arguments, so all 13 rendered regardless of the group hint. A…3258aa2
-
/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 check and help tool (#8)
- /fix data_catalog model + CatalogStore to dedorch schema (data → catalog_payload) (09857fc52486354f53e752e3ea329b064a9e4c4b) - [NOTICKET] fix(help): lock reply language to user's language on button path (cb7f5ac484ad4a510e68faf5291091958b6d2f42) - /fix default SKIP_INIT_DB=true for dedorch cutover (skip init_db on Go-owned schema) (781b93c6b8744209a1101629b5170175e9212592) - /fix surface catalog foreign keys to the planner (FK-backed joins) (446c57524e932fcdbb0ddecc049189c443b6ae97) - [NOTICKET] feat(eval): add help-skill eval harness + goal-based language fallback (cbdbefb7ab0ffa36949713f18422213db480a959) - [NOTICKET] fix(eval): update readiness eval to post-KM-652 floor (drop problem_validated) (6f46e81bdeb1eb987f9dac8af0e22a975474cbb1) - /fix infer FKs for FK-less dedorch catalog + log repr(e) in db executor (3669290474583ae011f5ed5e50b94dad146fbc77) - Merge eval/help + readiness eval fix into PR #8 (5f4818a8e38f93988ab5756f3a06c94645826b15) - /docs REPO_STATUS: FK inference (FK-…3743cfe
-
feat/Knowledge & Data Tools (#3)
- [KM-641] refactor(tools): trim analytics registry to 4 active tools (66e2e4df66f1abf7eaa7e442d9900d428696ece4) - [NOTICKET] docs: add checkpoint plan for 2026-06-17 sync (8c1bb63ebdee02f9db0da9fc2b2269823b0a7688) - [KM-642] refactor(tools): rename data-access tools to data/knowledge naming (c38c0c29d3e6b245f67d03f2c35e451900e1abdb) - [KM-643] feat(tools): merge data sources into data_check + add knowledge_check (4bd5f1efdc560a64092cc8df672a7990fa949b59) - [NOTICKET] docs: record KM-642/643 in checkpoint plan + PROGRESS (4c57588b90fe0cac8d0d4d22cfe5701fc9eb52dd) - [NOTICKET] fix(chat): scope response cache by user_id + drop TTL to 1h (R5) (b701e95d300c7d2480a3608b2d4da6dfe102b19a) - [NOTICKET] feat(slow-path): persist AnalysisRecord via PostgresAnalysisStore (09f845188226dd01633cf74525caa569e4a7d37a) - [NOTICKET] Adopt verb-first skill naming (2d6406def7ed45edd1226e96645ba2a5cdbfa3d0) - [NOTICKET] docs: sync checkpoint plan — verb-first tool names + report-as-API (3b399f84d73b0d98bd99…0721bb4
-
feat/Planner Agent (#2)
- [KM-567][AI] Planner agent: contracts, schemas, inputs, registry (be96601ad46c00e8e789768dd6e89c2db827bde4) - [KM-567][AI] Planner agent: prompt + few-shot examples (83ba6b1743370145454d9315224eeb7b2d12ac18) - [KM-567][AI] Planner agent: validator + service (72306d0ce92c76d60117a20c701c7f8185bcfeef) - [KM-567] docs: record Phase 3 Planner agent in PROGRESS.md (ba2fa8892392028c8d13646c09d1155bbf34e703) - [KM-567][AI] Planner agent: fix PII leak + placeholder/retry robustness (6b3637dda097f16cd98d4b9ad6094fdaed6d1346) - [KM-624] Implement Compute Functions Tools (78c598c22d2f2a14229a83c3f43fa98c5d520ae7) - [KM-624][AI] Planner: realign stub registry + examples to composite analyze_* tools (93a24dabf48d8121e981cc470c835cb10badb62a) - [KM-624] docs: record tool taxonomy + ownership revision in PROGRESS (f3461142542f6216aff23b30a1321dfb4654afdc) - [KM-626][AI] Slow-path agent: seam contracts + TaskRunner (ac310de551d0888ccfef31e981e22d88f54c6a38) - [KM-626][AI] Slow-path agent: Assembler…81e5fe7