p1-4: scaffold kb-normalize crate

Add the workspace member, `Cargo.toml` with the §8-allowed dep set
(kb-core, kb-parse-types, kb-config, serde, serde_json_canonicalizer,
blake3, unicode-normalization, time, anyhow, tracing) and a stubbed
`build_canonical_document` that pins the public signature plus
`doc_id` derivation. `kb-parse-md` is permitted only as a *dev*-dep so
the integration snapshot test (added later in this series) can drive
a fixture through the real parser without violating the production
boundary — `cargo tree -p kb-normalize --depth 1 --edges normal`
confirms no parser implementation appears in the regular dep tree.

`id_for_doc` and `id_for_block` are re-exported from kb-core (which
holds the canonical recipe per §4.2); kb-normalize is the canonical
*entry point* per design §8.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-30 15:16:53 +00:00
parent cfccb3687d
commit c0096ce44b
4 changed files with 110 additions and 0 deletions

18
Cargo.lock generated
View File

@@ -577,6 +577,24 @@ dependencies = [
"unicode-normalization",
]
[[package]]
name = "kb-normalize"
version = "0.1.0"
dependencies = [
"anyhow",
"blake3",
"kb-config",
"kb-core",
"kb-parse-md",
"kb-parse-types",
"serde",
"serde_json",
"serde_json_canonicalizer",
"time",
"tracing",
"unicode-normalization",
]
[[package]]
name = "kb-parse-md"
version = "0.1.0"