lcc

Roadmap

This roadmap is aspirational. Only Phase 1, the deterministic benchmark harness (Phase 1.5), the deterministic inspection command (Phase 1.6), deterministic Phase 1.7 prepare / recommendation / chunk-inventory / lexical-selection / benchmark-coverage / boundary-ADR slices, and the Phase 2 disabled semantic retrieval boundary scaffold are implemented today. No semantic retrieval execution, embedding generation, vector search, or model-assisted retrieval phase is present in the code, and the documentation never describes a later phase as if it were.

Phase 1 — Deterministic MVP (implemented)

Phase 1.5 — Deterministic benchmark harness (implemented)

Phase 1.6 — Deterministic inspection command (implemented)

Phase 1.7 — Low-friction prepare workflow (deterministic slices implemented)

The implemented deterministic slices keep lcc useful without requiring a local LLM, while leaving room for an optional model-assisted layer later. The user-facing goal is one low-friction command that answers: “Should I optimize this context, and, if useful, what deterministic prompt package should I send next?”

Implemented so far:

Execution roadmap

  1. Record the boundary. Implemented in ADR 0010. Optional model assistance is not implemented and must live outside the deterministic core and outside the inspection boundary. No LLM, embedding model, network client, runtime download, local-model call, or remote model call may enter cleaning, token_budget, prompt_builder, reporting, pipeline, inspection, or benchmarking.
  2. Add lcc prepare as orchestration only. Implemented. The command reads the same core inputs as inspect and optimize, runs inspection first, and then either skips prompt generation or runs safe optimization based on deterministic recommendation fields. It introduces no new dependency and makes no model or network call.
  3. Improve deterministic recommendations. Implemented. Recommendation reports now include explicit scores for duplication, projected savings, budget pressure, missing pricing, approximate token counting, and manual-review risk. The output stays auditable through reason codes, thresholds, evidence values, and suggested commands when optimization is useful.
  4. Add stable section/chunk inventory. Implemented. Inspection reports now include a deterministic chunk inventory that assigns stable IDs, character spans, line spans, paragraph counts, token counts, simple structural labels, literal heading text when present, and exact duplicate markers. This is diagnostic data, not semantic summarization.
  5. Add question-aware lexical selection. Implemented. Without adding embeddings or a local LLM, prepare now selects chunks with transparent lexical signals such as keyword overlap, heading matches, rare-term matches, and proximity to matched headings. The selector preserves first-copy evidence, avoids exact duplicate copies when applied, and reports why each selected chunk was kept.
  6. Extend benchmarks before increasing intelligence. Implemented. Fixture cases now cover prepare and lexical selection, including required evidence markers, forbidden irrelevant and duplicate markers, selected-chunk thresholds, skipped-duplicate expectations, and selection-applied / selection-not-applied paths. These still measure mechanical behavior only.
  7. Add semantic evaluation as an opt-in harness. Only after deterministic selection exists, add an evaluation workflow that can compare raw context, optimized context, and selected context with a downstream model controlled by the user. This remains outside the default deterministic workflow.
  8. Consider optional local model advice last. A small local model may be useful as an optional advisor for ambiguous intent, template choice, or claim extraction. It should read deterministic reports and return structured JSON advice; it should not rewrite or delete source evidence by default.

First implementation slice

The first landed prepare slice was lcc prepare without chunk selection or model assistance. It is historical context for the execution roadmap; the current implemented prepare workflow also includes the deterministic lexical-selection slice described below.

Acceptance criteria:

Recommendation scoring slice

The next implemented slice keeps recommendations deterministic and explainable without adding semantic selection. It adds machine-readable scoring signals under the inspection report’s recommendation field. These signals are diagnostic: lcc prepare still uses only recommendation.action to decide whether to skip or run the existing safe optimization path.

Acceptance criteria:

Stable chunk inventory slice

The current implemented slice adds deterministic, machine-readable chunk_inventory data to inspection reports. It inventories non-empty paragraph-like blocks separated by blank lines, labels Markdown heading blocks as heading, labels other non-empty blocks as paragraph_block, records 0-based character offsets and 1-based line spans, and marks exact duplicate chunks by pointing later copies at the first matching chunk ID.

Acceptance criteria:

Question-aware lexical selection slice

The current implemented slice adds a separate, deterministic selection path to lcc prepare after inspection has already recommended optimize_safe or optimize_with_flags. Selection uses the chunk inventory’s stable offsets, labels, literal heading text, token counts, and exact duplicate markers to evaluate literal source chunks against the question. It does not change how prepare decides whether to skip or optimize: that decision still comes only from recommendation.action.

Acceptance criteria:

Prepare benchmark coverage slice

The current implemented slice extends the deterministic benchmark harness so fixtures can exercise either the original optimize workflow or the prepare workflow. Prepare fixtures mirror the command’s deterministic orchestration: run inspection, branch only on recommendation.action, apply lexical selection only for optimize recommendations, and then run the safe optimization path.

Acceptance criteria:

Phase 2 — Local semantic retrieval (planned)

Phase 2 remains planned for retrieval itself. The first accepted boundary artifact is ADR 0011, which defines the disabled-by-default opt-in scaffold for optional local semantic retrieval. The scaffold lives outside the deterministic core, inspection boundary, and deterministic benchmark harness. The retrieval execution contract is recorded in ADR 0012: the first future adapter must be a separate opt-in local-index adapter that returns provenance-rich literal source spans. No retrieval execution adapter is implemented today.

Implemented boundary scaffold:

Still planned:

Next real implementation step: implement ADR 0012’s separate local_index_v1 execution adapter behind explicit opt-in, starting with fail-closed tests. Do not add embedding generation, index building, vector search in deterministic commands, or prompt integration in that first implementation.

Phase 3 — Local intent classifier (planned)

Phase 4 — Evidence extraction (planned)

Phase 5 — Model routing (planned)

Phase 6 — Response verification (planned)

Phase 7 — Benchmark suite and integrations (planned)

Other planned surfaces (not implemented)

These are explicitly not implemented and are listed here so the docs never imply they exist:

Each, if pursued, lands behind a new, clearly separated boundary; none touches the deterministic core.

Guiding constraints for every phase