Commit History
-
[NOTICKET] fix(intent): route bagaimana by object + honest out_of_scope eval scoring
intent_router.md: add object-based disambiguation (the question word is not the signal) so a meta-question about the assistant routes to chat, not unstructured; add contrastive bagaimana few-shots landing in chat/help/unstructured/structured. eval/intent: count Azure content-filter blocks on out_of_scope cases as pass (mirror chat_handler._is_content_filter_error) instead of ERROR; fix INTENTS list (drop removed problem_statement, add out_of_scope so it shows in by_intent); add 7 boundary bagaimana cases; remove 6 stale problem_statement cases; document both. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>0d108e1 -
feat(guardrails): add input guard, out_of_scope intent, and refusal handling
Rifqi Hafizuddin +1: Claude Fable 5Layered jailbreak/prompt-injection defense wired into ChatHandler.handle (covers the live v2 chat path). Closes the gap where the only defense was soft prompt text on one agent plus Azure's inconsistent content filter. - Input guard (src/agents/guard.py + prompts/input_guard.md): a cheap GPT-4o classifier screening injection/secrets/abuse BEFORE the router. Fail-open on guard error, fail-closed on detection; Azure content-filter trip = block. Swappable seam (local classifier now, Prompt Shields later). - out_of_scope router intent: deterministic canned refusal for off-topic / manipulation, no downstream LLM. Fixes the old no-refuse contradiction. - Content-filter error handling: clean refusal instead of leaking the raw Azure 400 blob. - Language-matched refusals (EN/ID), strict-refuse policy (src/agents/refusals.py). - Prompt hardening: instruction-hierarchy rule in guardrails.md. - Rate limit (30/min) on the v2 chat endpoint. - Eval regression cases (out_of_scope_*) in the …0bbc27b
-
/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