Commit History
-
[NOTICKET] feat(knowledge-domain): the declared half — domain TBox + review (V4-9, V4-10)
Rifqi Hafizuddin +1: Claude Opus 5The half that could not be derived: what a domain IS, and what it deliberately is NOT. `measures`, `policies` and `units` fall out of entries; identity and boundary do not, and that is what the review loop exists for. **`boundary` IS DERIVED, and that is the design decision worth keeping.** v3's real lesson was not the rename - it was changing the question so the answer is checkable, `purpose` (composed, unverifiable) becoming `purpose_verbatim` (located, span-checked). A boundary sentence is inherently unquotable, being a statement about ABSENCE, so asking a model to write one reproduces exactly the unfalsifiable claim v3 removed. Instead it is the complement of the covered subdomains over a closed 11-member enum. On the BUMA corpus: covers production, equipment, planning, hauling, loading -> "no approved knowledge about maintenance, drilling_blasting, safety, quality, cost, geology". Deterministic, checkable, and it turns an honest refusal into a fact about the corpus rat…601937c
-
[NOTICKET] feat(knowledge): read + review routes, closing the loop (N10b, N12b)
Rifqi Hafizuddin +1: Claude Opus 5Five routes, taking the surface from "ingest and poll" to the full cycle: extract, read, review, and feed approvals back into the next extraction. GET /api/v1/knowledge/documents stored artifacts POST /api/v1/knowledge/documents/{id}/extract re-extract (no re-parse) GET /api/v1/knowledge/entries candidates + decisions GET /api/v1/knowledge/queue the review queue POST /api/v1/knowledge/entries/{entity_id}/reviews record a decision THE LOOP NOW CLOSES. `approved_glossary()` reads the latest decision per entity and hands the approved set to the next extraction as `active_glossary`, which is what the diff classifies new candidates against - so an expert working the queue makes the following run better rather than merely annotating this one. An `edited` decision contributes the expert's corrected payload, not the model's original claim. Passed explicitly rather than read from wherever the las…f118878 -
[NOTICKET] feat(knowledge): seam version gate (N6b) + ingest auth posture (N11)
Rifqi Hafizuddin +1: Claude Opus 5N6b - SEAM VERSION GATE. `parsed_doc_from_artifact` read the artifact envelope and ignored `schema_version` entirely, so a shape this build cannot read would be parsed anyway on a best-effort basis. That is the one failure worth being loud about: a shape we do not understand is not a smaller version of the right input, it is a different input, and reading it produces entries that look fine and are wrong. Rules: major mismatch rejects; a NEWER minor rejects (structure this code has never seen); an older minor or any patch is accepted, because minor bumps have been additive by convention (0.3.0 -> 0.3.3 added source_title, normaliser_version, page_no) and the committed eval fixture is deliberately an older minor than the current parser - rejecting it would break the baseline measurement for no safety gain. An absent version warns and proceeds, so pre-envelope fixtures and bare chunk lists stay loadable. SUPPORTED_SCHEMA is a literal, not an import from knowledge_parsing…67af818 -
[NOTICKET] feat(knowledge-ingest): job lifecycle + ingestion routes (N10)
Rifqi Hafizuddin +1: Claude Opus 5First slice of the ingestion endpoint: batch admission, document selection, tenant scope, job lifecycle and the three job routes. The pipeline itself is NOT wired yet - see the blockers below - so every document currently fails with a legible reason rather than silently doing nothing. POST /api/v1/knowledge/ingest -> 202 {job_id} GET /api/v1/knowledge/jobs/{job_id} -> state + per-document results GET /api/v1/knowledge/jobs -> recent jobs for a user Async by necessity: parse (~80s) plus extract (~170s) for nine pages is far past any HTTP timeout. Polling, not SSE (decided 2026-09-07) - a job row survives a refresh and a dropped connection, a stream does not, and a 4-minute stream holds a worker for its duration. 404 on an unknown job_id follows GET /traceability rather than the tri-state 200 of GET /charts: a polled id was handed to the caller, so its absence is genuinely exceptional, unlike a chartless turn. New package src/knowledge_ingest/ - orchestra…b14034b
-
feat/Catalog Retrieval System (#1)
- initial commit (8557a2045ca2c0873e07efdf6227064b83e4a1e5) - initial structure (efc0c0a8b2444014cbe74f04617c3c974d9915be) - [KM-553] initialize shared contract (f31f6731692b0199d8cb5c5d29dffa466d6d4ca0) - [KM-553] migrate retrieval layer and remove obsolete rag/tools modules (df220ea47c96eb8a1efa07c6eebef4604fc308d6) - [NOTICKET] catalog enricher + structured pipeline + on_db_registered (77ea82d29d86400c5ed30ac154be8df6a7e897eb) - Merge commit 'refs/pr/1' of https://huggingface.co/spaces/DataEyond/Agentic-Service-Data-Eyond-Catalog into pr/1 (0ae8717c7efce2cda14fe4b8caecd774459b1f6e) - [NOTICKET] SqlCompiler (Postgres) + DbExecutor (212dad360714508c1aa607995039e6818fa40f78) - Merge commit 'refs/pr/1' of https://huggingface.co/spaces/DataEyond/Agentic-Service-Data-Eyond-Catalog into pr/1 (faf8a4f6d7e06ccf1ce84c2e7f4990c79f27f843) - TabularIntrospector + on_tabular_uploaded trigger + 31 tests (ca425208969b72a20ed76f86ef0faa1a0e912339) - [KM 556] add columns field to QueryResult + update…6bff5d9
-
[KM-467] [DED][AI] Orchestration Agent - Init
- https://bukittechnology.atlassian.net/browse/KM-467027123c