Goal: Every release parses real code correctly, keeps one coherent knowledge/chunk/vector generation under failures and concurrency, and holds its security boundaries against hostile input — not only the MCP contract.
This checklist is the human-facing gate that sits on top of the automated
release gate (tests/e2e/test_release_gate_*.py) and the per-step contracts in
the ADR index.
-
uv run pytest -q— the full suite passes, includingtests/e2e/test_release_gate_pipeline.py,tests/e2e/test_release_gate_security.py,tests/e2e/test_release_gate_soak.py, andtests/e2e/test_release_gate_limitations.pyfor both vector backends. -
uv run ruff check .,uv run mypy src/, anduv run mkdocs build --strictpass. - The seeded soak is stable: run
uv run pytest tests/e2e/test_release_gate_soak.pya few times (a red run prints its seed and op-log — reproduce withKNOWCODE_GATE_SEED=<seed>). - No real embedding or LLM network call runs in the suite (the deterministic
DummyEmbeddingProvideris the test-time default).
-
uv run knowcode doctorpasses on a freshly built repository: Index generation, Knowledge store, and Semantic index arepass. -
uv run knowcode doctor --mcpverifies the MCP server exposesretrieve_context_for_queryand honorsverbosity="minimal",max_tokens=1500,limit_entities=1. - After a watched edit, doctor's Freshness check warns
store_stale_source_changed(expected — see Known limitations) and a fullknowcode buildclears it.
-
uv run knowcode build .publishes one generation underknowcode_index/generations/<id>/selected bycurrent.json; its manifest counts (entities/chunks/vectors) and checksums agree. - Migration: legacy v1/v2 artifacts (
chunks.dbwithout the embedding column;vectors.jsonat an old schema) fail closed with aknowcode buildinstruction rather than being adopted. The committedknowcode_index/is a legacy layout and must be rebuilt. Confirm doctor reports the rebuild need rather than a silent in-memory migration. - A failed rebuild (e.g. no embedding provider) preserves the previous generation and exits non-zero; it never publishes a graph beside a stale or absent index.
- First tool:
retrieve_context_for_queryis the default natural-language entry point. - Defaults: the default payload does not exceed
max_tokens=1500orlimit_entities=1. - Minimal projection:
verbosity="minimal"strips evidence arrays and internal metadata. - Local answer gate:
sufficiency_threshold(default 0.8) is respected andcontext_text/sufficiency_scoreare populated for agent routing.
- Prompt hierarchy: retrieved repository content (including a hostile comment) travels only in the untrusted-data channel; KnowCode's task instructions occupy the provider system channel. Pinned by the security gate.
- Telemetry privacy: raw queries, prompt bodies, entity ids, and
secret-shaped strings are not persisted; telemetry is local,
0600, bounded, and removed byknowcode telemetry clear. Raw capture is opt-in viaKNOWCODE_TELEMETRY_RAW=1. - Rate limiting / proxy trust: the direct server sets
proxy_headers=Falseandforwarded_allow_ips=[]; a spoofedX-Forwarded-For/Forwardedcannot rotate the bucket. Pinned bytests/integration/test_rate_limit_server.py.
- Directory-level watch events are not expanded into their files; a rebuild re-keys the subtree.
- A watched edit refreshes retrieval (chunks/vectors) but not the knowledge graph until a rebuild; doctor warns.
- An empty LanceDB index is never written as a loadable artifact (the caller guard keeps the backend residual unreachable).
These are pinned by tests/e2e/test_release_gate_limitations.py. If a release
fixes one, update that test and this list rather than deleting the assertion.
-
docs/mcp-contract.mdreflects any schema changes. - the ADR index and this checklist match the implemented behavior.
- Configuration examples (
aimodels.yaml) reflect any new environment variables or supported model families. - Docs drift audit:
uv run mkdocs build --strictpasses; any new or renamed command/flag/endpoint/config key is reflected in exactly one canonical page (docs/user/cli-reference.md,docs/user/configuration.md,docs/user/rest-api.md) with other pages linking to it rather than restating it; CLI command count claims matchknowcode --help.