Commit History
-
[NOTICKET] fix(router): route data-condition questions to analysis, not inventory (A23 Bug 4)
Rifqi Hafizuddin +1: Claude Opus 5"Data PA-nya bersih nggak? Ada kolom yang kosong?" routed to `check` at 0.96 confidence, so the slow path never ran and analyze_data_quality was never called. The reply was a 36-row schema table whose "Boleh kosong" column is the catalog's declared `nullable` SCHEMA FLAG -- confident, well formatted, and not an answer to the question the user asked about the actual rows. The prompt defined `check` as "what columns are in this table?", and "ada kolom yang kosong?" is lexically a columns question. The only boundary offered was "what do I have" -> check versus "analyze/compute/trend/correlate" -> structured_flow, and a data-CONDITION question is neither phrasing. Recast the boundary as EXISTENCE vs CONDITION: `check` answers what is there, from metadata alone; the moment the answer depends on the values in the rows it is `structured_flow`, because only computing over the data can answer it. Stated explicitly that naming a column does not make it `check`, and that a `nullable` flag says …e815376
-
[NOTICKET] feat(tools): analyze_importance + analyze_cluster (unregistered) + CK7
Rifqi Hafizuddin +1: Claude Opus 5A8 and A10. Both files are INERT on purpose: not in _DISPATCH, not in either registry list. registry.py and invoker.py are the two files every tool addition touches, so they stay single-owner until Sofhia makes the call -- the DEFERRED mechanism means an unregistered tool costs nothing. analyze_importance -- rank what explains a target. Standardised coefficients, NOT permutation importance. For a linear model the coefficient IS the importance and comes free with the fit; permutation re-scores once per feature, which is the E4 latency tall pole, and buys nothing here. Ridge for a numeric target, Logistic for a categorical one, auto-detected. Leakage-safe: the scaler is fitted on the TRAIN split only, so no test statistic reaches the fit -- the thing R-3 and the survey literature both single out. analyze_cluster -- discover groups nobody named yet. KMeans with k chosen by silhouette over 2..8, every candidate score returned. Scatter plots two REAL columns rather than PC…9a29ca3