"""Door C's own outcome is a bundle the reading direction can open. vegnormal-okf, 2026-09-08 (FUNN 1): `import_bundle` wrote the root index with no frontmatter and took no `root_frontmatter_values`, so it could not declare `bundle_id`. `okf consume` then refused the result with exit 1, `bundle_id_missing` -- section 3.1's identity tuple is `(bundle_id, concept_id)` and half of it was absent. The consumer's workaround was to use Door C as a GATE and write the consumable tree themselves. The fix is the mechanism Door B already has and Door C did not: a profile names a key, the CALLER owns its value (decision E1). It is keyword-only with a default of `None`, so every existing call site emits the bytes it always did -- a consumer with branch bases built through this door is not asked to rebuild them, which is the boundary this repository states for its own consumers. """ from __future__ import annotations import json import subprocess import sys from pathlib import Path from llm_ingestion_okf.importer import import_bundle from llm_ingestion_okf.materialize import parse_frontmatter from llm_ingestion_okf.profiles import DEFAULT, SEGMENTED_V1 from test_import_flow import CONCEPT, StubImportGate, place PROJECT_ROOT = Path(__file__).resolve().parents[1] TOOL = PROJECT_ROOT / "tools" / "okf_consume.py" KNOWN_POSITIVE = PROJECT_ROOT / "examples" / "ingest-golden-segmented-okf-v0-2" / "expected-bundle" def _consume(bundle: Path) -> subprocess.CompletedProcess[str]: return subprocess.run( [sys.executable, str(TOOL), str(bundle), "--question", "users"], capture_output=True, text=True, check=False, ) def test_the_known_positive_is_readable_first() -> None: """Before an exit 1 counts as a finding, the chain must be shown able to pass.""" assert _consume(KNOWN_POSITIVE).returncode == 0 def test_door_c_without_a_bundle_id_is_still_refused(tmp_path: Path) -> None: """The defect, kept as a test: silence is not the fix, a named value is.""" place(tmp_path / "source", "tables/users.md", CONCEPT) bundle = tmp_path / "bundle" import_bundle( tmp_path / "source", bundle, "1970-01-01T00:00:00Z", origin="external", channel="manual", gate=StubImportGate(), ) assert (bundle / "index.md").is_file() assert "bundle_id" not in parse_frontmatter(bundle / "index.md") assert _consume(bundle).returncode == 1 def test_door_c_with_a_bundle_id_produces_a_consumable_bundle(tmp_path: Path) -> None: place(tmp_path / "source", "tables/users.md", CONCEPT) bundle = tmp_path / "bundle" import_bundle( tmp_path / "source", bundle, "1970-01-01T00:00:00Z", origin="external", channel="manual", gate=StubImportGate(), profile=SEGMENTED_V1, root_frontmatter_values={"bundle_id": "imported-2026-09-09"}, ) declared = parse_frontmatter(bundle / "index.md") assert declared["bundle_id"] == "imported-2026-09-09" done = _consume(bundle) assert done.returncode == 0, done.stderr payload = json.loads(done.stdout) assert payload["bundle"]["bundle_id"] == "imported-2026-09-09" def test_a_second_run_does_not_duplicate_the_declaration(tmp_path: Path) -> None: """The index is APPENDED to across runs; the frontmatter must not be.""" place(tmp_path / "source", "tables/users.md", CONCEPT) bundle = tmp_path / "bundle" for _ in range(2): import_bundle( tmp_path / "source", bundle, "1970-01-01T00:00:00Z", origin="external", channel="manual", gate=StubImportGate(), profile=SEGMENTED_V1, root_frontmatter_values={"bundle_id": "imported-2026-09-09"}, ) text = (bundle / "index.md").read_text(encoding="utf-8") assert text.count("bundle_id:") == 1 assert parse_frontmatter(bundle / "index.md")["bundle_id"] == "imported-2026-09-09" def test_the_default_profile_names_no_root_key_and_says_so(tmp_path: Path) -> None: """Naming a key the profile does not carry is refused BEFORE any write.""" place(tmp_path / "source", "tables/users.md", CONCEPT) bundle = tmp_path / "bundle" assert DEFAULT.index.root_frontmatter == () try: import_bundle( tmp_path / "source", bundle, "1970-01-01T00:00:00Z", origin="external", channel="manual", gate=StubImportGate(), root_frontmatter_values={"bundle_id": "x"}, ) except Exception as exc: # noqa: BLE001 - the code is the assertion assert getattr(exc, "code", "") == "index_root_frontmatter_unexpected" else: # pragma: no cover - a pass here is the defect raise AssertionError("an unnamed root key was written") assert not bundle.exists(), "a refused call left a partially written bundle"