Spec §10 P4 on branch feat/t8-concept-definition-app. The LLM is a UX affordance over the existing facilitation API (eBike doctrine): it translates natural language into whitelisted tool calls and renders results back; it gains NO affordance the API lacks.
Traceability:
- K1: only registry tools are offered/executable; unknown tool requests refused + audited → tests/unit/test_aicc.py
- K5/LLM.1:
cds_queue_add is a MECHANICAL dead-end — after queuing unsecured canon, further write tools that turn are refused → test_unsecured_canon_escalates
- K2: cds_commit is never offered to the model — committing stays human
- ADR-8 BYO-LLM: OpenAI-compatible triplet (CDS_LLM_BASE_URL / CDS_LLM_MODEL / CDS_LLM_API_KEY), operator config; stdlib HTTP client, no new deps; ScriptedBackend seam keeps the suite green without credentials
- T8a: llm-ergonomics eval (skip-if-no-creds): scored no-fabrication + construction-order adherence
Closes only when feat/t8-concept-definition-app merges to main.
Spec §10 P4 on branch feat/t8-concept-definition-app. The LLM is a UX affordance over the existing facilitation API (eBike doctrine): it translates natural language into whitelisted tool calls and renders results back; it gains NO affordance the API lacks.
Traceability:
cds_queue_addis a MECHANICAL dead-end — after queuing unsecured canon, further write tools that turn are refused →test_unsecured_canon_escalatesCloses only when feat/t8-concept-definition-app merges to main.