docs-cli 1.4.0__tar.gz → 1.5.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {docs_cli-1.4.0 → docs_cli-1.5.0}/PKG-INFO +1 -1
- {docs_cli-1.4.0 → docs_cli-1.5.0}/docs/INDEX.md +12 -8
- {docs_cli-1.4.0 → docs_cli-1.5.0}/docs/architecture.md +13 -4
- {docs_cli-1.4.0/docs → docs_cli-1.5.0/docs/archive/2026-05-27}/m11-pypi-publish.md +102 -24
- {docs_cli-1.4.0/src/docs_cli/skill/references → docs_cli-1.5.0/docs}/cli.md +148 -1
- {docs_cli-1.4.0 → docs_cli-1.5.0}/docs/convention.md +2 -2
- {docs_cli-1.4.0 → docs_cli-1.5.0}/docs/m11-pypi-publish-impl.md +320 -6
- docs_cli-1.5.0/docs/m12-project-rename-impl.md +842 -0
- docs_cli-1.5.0/docs/m12-project-rename.md +474 -0
- docs_cli-1.5.0/docs/m13-pypi-publish-impl.md +111 -0
- docs_cli-1.5.0/docs/m13-pypi-publish.md +296 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/docs/plan.md +64 -13
- docs_cli-1.5.0/docs/release-runbook.md +567 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/docs/status.md +136 -36
- {docs_cli-1.4.0 → docs_cli-1.5.0}/pyproject.toml +1 -1
- {docs_cli-1.4.0 → docs_cli-1.5.0}/src/docs_cli/cli.py +389 -12
- {docs_cli-1.4.0 → docs_cli-1.5.0}/src/docs_cli/skill/SKILL.md +1 -0
- {docs_cli-1.4.0/docs → docs_cli-1.5.0/src/docs_cli/skill/references}/cli.md +148 -1
- {docs_cli-1.4.0 → docs_cli-1.5.0}/src/docs_cli/skill/references/convention.md +2 -2
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/expected/docs-INDEX.md +12 -8
- docs_cli-1.5.0/tests/fixtures/trees/archive-with-incoming-refs/.docs.toml +6 -0
- docs_cli-1.5.0/tests/fixtures/trees/archive-with-incoming-refs/master.md +15 -0
- docs_cli-1.5.0/tests/fixtures/trees/archive-with-incoming-refs/sidekick.md +14 -0
- docs_cli-1.5.0/tests/fixtures/trees/archive-with-incoming-refs/witness.md +16 -0
- docs_cli-1.5.0/tests/fixtures/trees/multi-project/alpha-charter.md +8 -0
- docs_cli-1.5.0/tests/fixtures/trees/multi-project/alpha-old-spec.md +8 -0
- docs_cli-1.5.0/tests/fixtures/trees/multi-project/alpha-plan.md +11 -0
- docs_cli-1.5.0/tests/fixtures/trees/multi-project/alpha-spec.md +9 -0
- docs_cli-1.5.0/tests/fixtures/trees/multi-project/archive/2026-04-01/beta-old.md +8 -0
- docs_cli-1.5.0/tests/fixtures/trees/multi-project/beta-done.md +8 -0
- docs_cli-1.5.0/tests/fixtures/trees/multi-project/beta-notes.md +8 -0
- docs_cli-1.5.0/tests/fixtures/trees/multi-project/beta-status.md +9 -0
- docs_cli-1.5.0/tests/fixtures/trees/multi-project/topics/orphan.md +7 -0
- docs_cli-1.5.0/tests/fixtures/trees/multi-project-alpha-sidecar/.docs.toml +10 -0
- docs_cli-1.5.0/tests/fixtures/trees/rename-with-archive/.docs.toml +6 -0
- docs_cli-1.5.0/tests/fixtures/trees/rename-with-archive/archive/2026-04-01/old.md +12 -0
- docs_cli-1.5.0/tests/fixtures/trees/rename-with-archive/live.md +11 -0
- docs_cli-1.5.0/tests/fixtures/trees/rename-with-malformed/.docs.toml +6 -0
- docs_cli-1.5.0/tests/fixtures/trees/rename-with-malformed/broken.md +5 -0
- docs_cli-1.5.0/tests/fixtures/trees/rename-with-malformed/good-a.md +11 -0
- docs_cli-1.5.0/tests/fixtures/trees/rename-with-malformed/good-b.md +11 -0
- docs_cli-1.5.0/tests/test_cli_archive.py +316 -0
- docs_cli-1.5.0/tests/test_cli_project_rename.py +356 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/test_cli_touch.py +70 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/test_packaging.py +24 -23
- docs_cli-1.5.0/tests/test_version_metadata.py +75 -0
- docs_cli-1.4.0/docs/release-runbook.md +0 -344
- docs_cli-1.4.0/tests/test_cli_archive.py +0 -141
- {docs_cli-1.4.0 → docs_cli-1.5.0}/.gitignore +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/LICENSE +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/README.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/docs/.docs.toml +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/docs/archive/2026-05-27/m10-adoption-polish.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/docs/charter.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/docs/definition-of-ready.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/docs/dual-status-adr.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/docs/m1-parser-and-index-log.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/docs/m1-parser-and-index.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/docs/m10-adoption-polish-impl.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/docs/m2-mutating-verbs-log.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/docs/m2-mutating-verbs.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/docs/m3-validation-and-query-log.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/docs/m3-validation-and-query.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/docs/m4-migration-helper-log.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/docs/m4-migration-helper.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/docs/m5-claude-code-skill-log.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/docs/m5-claude-code-skill.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/docs/m6-pypi-distribution-log.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/docs/m6-pypi-distribution.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/docs/m7-migration-accuracy-log.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/docs/m7-migration-accuracy.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/docs/m8-adoption-workflow-log.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/docs/m8-adoption-workflow.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/docs/m9-pypi-publish-log.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/docs/m9-pypi-publish.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/docs/test-strategy.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/docs/vocab-adr.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/src/docs_cli/__init__.py +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/src/docs_cli/skill/references/adoption-playbook.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/src/docs_cli/skill/references/docs-toml-template.toml +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/src/docs_cli/skill/references/use-cases.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/.gitkeep +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/_typing/docs.pyi +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/conftest.py +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/body-from/clean-body.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/body-from/edge-case-keyword.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/body-from/with-frontmatter.txt +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/lifecycle/lifecycle-key.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/lifecycle/lifecycle-plus-status-prose.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/lifecycle/status-only.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/parser/well-formed.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/project-names/Abc5Migration/alpha.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/project-names/Abc5Migration/beta.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/project-names/Abc5Migration/gamma.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/project-names/FOO_BAR_BAZ/alpha.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/project-names/FOO_BAR_BAZ/beta.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/project-names/FOO_BAR_BAZ/gamma.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/project-names/FooBarBaz/alpha.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/project-names/FooBarBaz/beta.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/project-names/FooBarBaz/gamma.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/project-names/Foo_Bar_Baz/alpha.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/project-names/Foo_Bar_Baz/beta.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/project-names/Foo_Bar_Baz/gamma.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/project-names/Plan/alpha.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/project-names/Plan/beta.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/project-names/Plan/gamma.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/project-names/bugs-2026-01-26/alpha.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/project-names/bugs-2026-01-26/beta.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/project-names/bugs-2026-01-26/gamma.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/project-names/embedded-ai-discovery-parallel/alpha.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/project-names/embedded-ai-discovery-parallel/beta.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/project-names/embedded-ai-discovery-parallel/gamma.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/sibling-defaulting/majority-met/file-01-spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/sibling-defaulting/majority-met/file-02-spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/sibling-defaulting/majority-met/file-03-spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/sibling-defaulting/majority-met/file-04-spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/sibling-defaulting/majority-met/file-05-spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/sibling-defaulting/majority-met/file-06-spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/sibling-defaulting/majority-met/file-07-spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/sibling-defaulting/majority-met/file-08-no-suffix.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/sibling-defaulting/majority-met/file-09-no-suffix.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/sibling-defaulting/majority-met/file-10-no-suffix.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/sibling-defaulting/majority-not-met/file-01-spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/sibling-defaulting/majority-not-met/file-02-spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/sibling-defaulting/majority-not-met/file-03-spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/sibling-defaulting/majority-not-met/file-04-spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/sibling-defaulting/majority-not-met/file-05-plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/sibling-defaulting/majority-not-met/file-06-plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/sibling-defaulting/majority-not-met/file-07-plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/sibling-defaulting/majority-not-met/file-08-no-suffix.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/sibling-defaulting/majority-not-met/file-09-no-suffix.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/sibling-defaulting/majority-not-met/file-10-no-suffix.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/sibling-defaulting/sample-too-small/file-01-spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/sibling-defaulting/sample-too-small/file-02-spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/sibling-defaulting/sample-too-small/file-03-spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/sibling-defaulting/sample-too-small/file-04-no-suffix.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/status-prose/draft-companion.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/status-prose/freeform-status.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/status-prose/p0-implemented.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/status-prose/planning-only.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/cross-refs/.docs.toml +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/cross-refs/core.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/cross-refs/helper.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/cross-refs/overview.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/drift/.docs.toml +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/drift/archive/2026-01-01/properly-archived.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/drift/archive/2026-01-01/wrongly-active.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/drift/clean.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/drift/wrongly-archived.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/foreign/archived/proj-old-decision.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/foreign/proj-auth-spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/foreign/proj-db-adr.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/foreign/proj-deploy-log.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/foreign/proj-extra-metadata.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/foreign/proj-has-metadata.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/foreign/proj-no-h1.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/foreign/proj-overview.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/foreign/proj-release-plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/foreign/topics/proj-deep-notes.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/invalid/.docs.toml +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/invalid/bad-date.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/invalid/bad-role.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/invalid/bad-status.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/invalid/broken-ref.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/invalid/empty-role.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/invalid/no-h1.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/invalid/no-status.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/marker-preservation/.docs.toml +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/marker-preservation/INDEX.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/marker-preservation/lone-doc.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/minimal/.docs.toml +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/minimal/lone-doc.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/multi-project/.docs.toml +0 -0
- {docs_cli-1.4.0/tests/fixtures/trees/multi-project → docs_cli-1.5.0/tests/fixtures/trees/multi-project-alpha-sidecar}/alpha-charter.md +0 -0
- {docs_cli-1.4.0/tests/fixtures/trees/multi-project → docs_cli-1.5.0/tests/fixtures/trees/multi-project-alpha-sidecar}/alpha-old-spec.md +0 -0
- {docs_cli-1.4.0/tests/fixtures/trees/multi-project → docs_cli-1.5.0/tests/fixtures/trees/multi-project-alpha-sidecar}/alpha-plan.md +0 -0
- {docs_cli-1.4.0/tests/fixtures/trees/multi-project → docs_cli-1.5.0/tests/fixtures/trees/multi-project-alpha-sidecar}/alpha-spec.md +0 -0
- {docs_cli-1.4.0/tests/fixtures/trees/multi-project → docs_cli-1.5.0/tests/fixtures/trees/multi-project-alpha-sidecar}/archive/2026-04-01/beta-old.md +0 -0
- {docs_cli-1.4.0/tests/fixtures/trees/multi-project → docs_cli-1.5.0/tests/fixtures/trees/multi-project-alpha-sidecar}/beta-done.md +0 -0
- {docs_cli-1.4.0/tests/fixtures/trees/multi-project → docs_cli-1.5.0/tests/fixtures/trees/multi-project-alpha-sidecar}/beta-notes.md +0 -0
- {docs_cli-1.4.0/tests/fixtures/trees/multi-project → docs_cli-1.5.0/tests/fixtures/trees/multi-project-alpha-sidecar}/beta-status.md +0 -0
- {docs_cli-1.4.0/tests/fixtures/trees/multi-project → docs_cli-1.5.0/tests/fixtures/trees/multi-project-alpha-sidecar}/topics/orphan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/nested/.docs.toml +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/nested/root-doc.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/nested/topics/deep-dive.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/README.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/archive-subdir/archived/foo-deprecated-plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/archive-subdir/archived/foo-historical-decision.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/archive-subdir/archived/foo-old-thing.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/archive-subdir/archived/foo-rejected-spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/archive-subdir/archived/foo-superseded-runbook.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/archive-subdir/foo-architecture-decision.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/archive-subdir/foo-bar-plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/archive-subdir/foo-bar-spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/archive-subdir/foo-charter.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/archive-subdir/foo-design-notes.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/archive-subdir/foo-launch-log.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/archive-subdir/foo-misc.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/archive-subdir/foo-overview.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/archive-subdir/foo-runbook.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/archive-subdir/foo-status.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/kebab-tiny/foo-bar-plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/kebab-tiny/foo-bar-spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/kebab-tiny/foo-bar-status.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/mixed-naming/API Reference.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/mixed-naming/Acme Plan - Database Population Plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/mixed-naming/AcmeApiSpec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/mixed-naming/Foo_Design_Decision_Tree.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/mixed-naming/Foo_Domain_Spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/mixed-naming/Project_Status_Update.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/mixed-naming/User Guide - Operator Manual.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/mixed-naming/feature-rollout-plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/mixed-naming/incident-runbook.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/mixed-naming/release-notes.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_API_Spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Architecture.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Cards.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Charter.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_10_Spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_11_Spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_12_Spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_13_Spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_14_Spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_15_Spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_1_Spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_2_Spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_3_Spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_4_Spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_5_Spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_6_Spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_7_Spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_8_Spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_9_Spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Constraints.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Decision_Tree.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Design_Sketch.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Discovery_Plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Domain_Plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Handoff.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_M1.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_M10.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_M10_Implementation.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_M1_Implementation.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_M2.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_M2_Implementation.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_M3.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_M3_Implementation.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_M4.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_M4_Implementation.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_M5.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_M5_Implementation.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_M6.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_M6_Implementation.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_M7.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_M7_Implementation.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_M8.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_M8_Implementation.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_M9.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_M9_Implementation.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Migration_Plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Module_Spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Plan_Draft.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Plan_v3.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Pricing_Memo.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Provider_Spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Service_Spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Status.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Strategy_Outline.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Strategy_v2.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_10_Plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_11_Plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_12_Plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_13_Plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_14_Plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_15_Plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_1_Plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_2_Plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_3_Plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_4_Plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_5_Plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_6_Plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_7_Plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_8_Plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_9_Plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Vendor_Brief.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-medium/Foo_Architecture.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-medium/Foo_Brief.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-medium/Foo_Charter.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-medium/Foo_Implementation.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-medium/Foo_Log.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-medium/Foo_M1.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-medium/Foo_M1_Implementation.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-medium/Foo_M2.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-medium/Foo_M2_Implementation.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-medium/Foo_M3.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-medium/Foo_M4.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-medium/Foo_Memo.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-medium/Foo_Outline.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-medium/Foo_Plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-medium/Foo_Sketch.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-medium/Foo_Status.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees/snake-medium/Foo_Strategy_v2.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/kebab-tiny/.docs.toml +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/kebab-tiny/INDEX.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/kebab-tiny/foo-bar-plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/kebab-tiny/foo-bar-spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/kebab-tiny/foo-bar-status.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/.docs.toml +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_API_Spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Architecture.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Cards.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Charter.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_10_Spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_11_Spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_12_Spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_13_Spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_14_Spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_15_Spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_1_Spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_2_Spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_3_Spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_4_Spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_5_Spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_6_Spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_7_Spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_8_Spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_9_Spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Constraints.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Decision_Tree.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Design_Sketch.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Discovery_Plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Domain_Plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Handoff.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M1.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M10.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M10_Implementation.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M1_Implementation.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M2.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M2_Implementation.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M3.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M3_Implementation.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M4.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M4_Implementation.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M5.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M5_Implementation.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M6.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M6_Implementation.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M7.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M7_Implementation.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M8.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M8_Implementation.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M9.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M9_Implementation.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Migration_Plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Module_Spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Plan_Draft.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Plan_v3.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Pricing_Memo.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Provider_Spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Service_Spec.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Status.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Strategy_Outline.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Strategy_v2.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_10_Plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_11_Plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_12_Plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_13_Plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_14_Plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_15_Plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_1_Plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_2_Plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_3_Plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_4_Plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_5_Plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_6_Plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_7_Plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_8_Plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_9_Plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Vendor_Brief.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-large/INDEX.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-medium/.docs.toml +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_Architecture.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_Brief.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_Charter.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_Implementation.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_Log.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_M1.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_M1_Implementation.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_M2.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_M2_Implementation.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_M3.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_M4.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_Memo.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_Outline.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_Plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_Sketch.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_Status.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_Strategy_v2.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/real-trees-adopted/snake-medium/INDEX.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/with-archive/.docs.toml +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/with-archive/.hidden-file +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/with-archive/.private/should-not-be-walked.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/with-archive/alpha.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/with-archive/archive/2026-01-01/INDEX.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/with-archive/archive/2026-01-01/old-plan.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/with-archive/beta.md +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/fixtures/trees/with-archive/notes.txt +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/manual/m7_success_criteria.py +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/test_archive_normalisation.py +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/test_body_from.py +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/test_check.py +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/test_cli_check.py +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/test_cli_index.py +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/test_cli_list.py +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/test_cli_migrate.py +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/test_cli_mv.py +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/test_cli_new.py +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/test_config.py +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/test_edit.py +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/test_exclude.py +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/test_index.py +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/test_inference.py +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/test_lifecycle_rename.py +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/test_migrate.py +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/test_model.py +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/test_multi_project_hints.py +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/test_non_md_surfacing.py +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/test_project_normalisation.py +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/test_query.py +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/test_skill.py +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/test_skill_adoption.py +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/test_skill_refs.py +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/test_triage_flags.py +0 -0
- {docs_cli-1.4.0 → docs_cli-1.5.0}/tests/test_walker.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: docs-cli
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.5.0
|
|
4
4
|
Summary: Prescriptive CLI for managing trees of structured Markdown docs.
|
|
5
5
|
Project-URL: Homepage, https://github.com/ArtRichards/docs-cli
|
|
6
6
|
Project-URL: Repository, https://github.com/ArtRichards/docs-cli
|
|
@@ -5,13 +5,13 @@ This directory is the docs root for the `docs` CLI itself. We eat our own dog fo
|
|
|
5
5
|
The hand-written preamble (this paragraph, and anything outside the marker block) is preserved by the tool. Only content between `<!-- docs:generated start -->` and `<!-- docs:generated end -->` is rewritten.
|
|
6
6
|
|
|
7
7
|
<!-- docs:generated start -->
|
|
8
|
-
_Generated 2026-05-
|
|
8
|
+
_Generated 2026-05-29. 35 docs active, 2 archived._
|
|
9
9
|
|
|
10
10
|
## Project — docs
|
|
11
11
|
|
|
12
12
|
### Active — Status
|
|
13
13
|
|
|
14
|
-
- [status.md](status.md) — _status_ — **This is the single source of truth for project progress. Update only this file when milestones complete or phases…. Updated 2026-05-
|
|
14
|
+
- [status.md](status.md) — _status_ — **This is the single source of truth for project progress. Update only this file when milestones complete or phases…. Updated 2026-05-29.
|
|
15
15
|
|
|
16
16
|
### Active — Charter
|
|
17
17
|
|
|
@@ -19,16 +19,17 @@ _Generated 2026-05-27. 32 docs active, 1 archived._
|
|
|
19
19
|
|
|
20
20
|
### Active — Plan
|
|
21
21
|
|
|
22
|
-
- [plan.md](plan.md) — _plan_ — Three milestones to v1, then a migration helper, then a Claude Code skill wrapper. v1.1 picks up with packaging, then…. Updated 2026-05-
|
|
22
|
+
- [plan.md](plan.md) — _plan_ — Three milestones to v1, then a migration helper, then a Claude Code skill wrapper. v1.1 picks up with packaging, then…. Updated 2026-05-29.
|
|
23
23
|
|
|
24
24
|
### Active — Spec
|
|
25
25
|
|
|
26
|
-
- [cli.md](cli.md) — _spec_ — This spec defines the `docs` command-line surface: subcommands, flags, output formats, and exit codes. The on-disk…. Updated 2026-05-
|
|
27
|
-
- [convention.md](convention.md) — _spec_ — This spec defines the on-disk convention that `docs` reads and writes. It is the portable, tool-independent part: any…. Updated 2026-05-
|
|
26
|
+
- [cli.md](cli.md) — _spec_ — This spec defines the `docs` command-line surface: subcommands, flags, output formats, and exit codes. The on-disk…. Updated 2026-05-28.
|
|
27
|
+
- [convention.md](convention.md) — _spec_ — This spec defines the on-disk convention that `docs` reads and writes. It is the portable, tool-independent part: any…. Updated 2026-05-28.
|
|
28
28
|
|
|
29
29
|
### Active — Milestone
|
|
30
30
|
|
|
31
|
-
- [
|
|
31
|
+
- [m13-pypi-publish.md](m13-pypi-publish.md) — _milestone_ — > **Stub-drafted 2026-05-29, post M12 closeout.** M13 enters > active state immediately — the M12 wheel + sdist already…. Updated 2026-05-29.
|
|
32
|
+
- [m12-project-rename.md](m12-project-rename.md) — _milestone_ — > **Stub-drafted 2026-05-28** following M11 closeout. M12 bundles > one operator-facing headline feature (`docs project…. Updated 2026-05-28.
|
|
32
33
|
- [m7-migration-accuracy.md](m7-migration-accuracy.md) — _milestone_ — - Milestone: M7 (v1.1) - Title: Migration plan accuracy - Surface: extensions to `docs migrate`'s inference…. Updated 2026-05-25.
|
|
33
34
|
- [m8-adoption-workflow.md](m8-adoption-workflow.md) — _milestone_ — - Milestone: M8 (v1.1) - Title: Adoption workflow — agent-driveable - Surface: new CLI flags + verbs (`--exclude`,…. Updated 2026-05-25.
|
|
34
35
|
- [m9-pypi-publish.md](m9-pypi-publish.md) — _milestone_ — > **Stub-drafted 2026-05-24, post M6 scope reframe.** M9 enters > active state once M8 ships. The operative checklist…. Updated 2026-05-25.
|
|
@@ -41,6 +42,8 @@ _Generated 2026-05-27. 32 docs active, 1 archived._
|
|
|
41
42
|
|
|
42
43
|
### Active — Log
|
|
43
44
|
|
|
45
|
+
- [m13-pypi-publish-impl.md](m13-pypi-publish-impl.md) — _log_ — Chronological log of work on M13 — PyPI publish 1.5.0. Append a section per runbook phase (operator prep → pre-publish…. Updated 2026-05-29.
|
|
46
|
+
- [m12-project-rename-impl.md](m12-project-rename-impl.md) — _log_ — Chronological log of work on M12 — Project rename verb + M11 wart fixes + version SoT (v1.5.0). Append a section per…. Updated 2026-05-28.
|
|
44
47
|
- [m10-adoption-polish-impl.md](m10-adoption-polish-impl.md) — _log_ — Chronological log of work on M10 — Adoption-flow polish + 1.3.0 carry-overs. Append a section per phase with objective,…. Updated 2026-05-27.
|
|
45
48
|
- [m11-pypi-publish-impl.md](m11-pypi-publish-impl.md) — _log_ — Chronological log of work on M11 — PyPI publish `docs-cli` 1.4.0. Append a section per phase (Operator prep →…. Updated 2026-05-27.
|
|
46
49
|
- [m7-migration-accuracy-log.md](m7-migration-accuracy-log.md) — _log_ — - Project: docs - Milestone: M7 — Migration plan accuracy - Started: 2026-05-24 - Progress: **Phase 1 complete; Phase 2…. Updated 2026-05-25.
|
|
@@ -60,15 +63,16 @@ _Generated 2026-05-27. 32 docs active, 1 archived._
|
|
|
60
63
|
|
|
61
64
|
### Active — Runbook
|
|
62
65
|
|
|
63
|
-
- [release-runbook.md](release-runbook.md) — _runbook_ — The operator-driven checklist for shipping `docs-cli` to PyPI. This runbook drove **M9 — `docs-cli==1.3.0`** (shipped…. Updated 2026-05-
|
|
66
|
+
- [release-runbook.md](release-runbook.md) — _runbook_ — The operator-driven checklist for shipping `docs-cli` to PyPI. This runbook drove **M9 — `docs-cli==1.3.0`** (shipped…. Updated 2026-05-27.
|
|
64
67
|
|
|
65
68
|
### Active — Reference
|
|
66
69
|
|
|
67
|
-
- [architecture.md](architecture.md) — _reference_ — Single Python module at `src/docs_cli/cli.py`, exposed as the `docs` console-script via the `docs_cli.cli:main` entry…. Updated 2026-05-
|
|
70
|
+
- [architecture.md](architecture.md) — _reference_ — Single Python module at `src/docs_cli/cli.py`, exposed as the `docs` console-script via the `docs_cli.cli:main` entry…. Updated 2026-05-28.
|
|
68
71
|
- [definition-of-ready.md](definition-of-ready.md) — _reference_ — Gate-check before implementation begins. Implementation does not start until every item is green.. Updated 2026-05-22.
|
|
69
72
|
- [test-strategy.md](test-strategy.md) — _reference_ — | Layer | Tool | Scope | |---|---|---| | Unit | pytest | Parser, walker, render, vocab loading. Pure-function focus. |…. Updated 2026-05-20.
|
|
70
73
|
|
|
71
74
|
## Archived
|
|
72
75
|
|
|
73
76
|
- [archive/2026-05-27/m10-adoption-polish.md](archive/2026-05-27/m10-adoption-polish.md) — _milestone_ — - Milestone: M10 (v1.4.0) - Title: Adoption-flow polish + 1.3.0 carry-overs - Surface: two new CLI features (`docs…. Updated 2026-05-27.
|
|
77
|
+
- [archive/2026-05-27/m11-pypi-publish.md](archive/2026-05-27/m11-pypi-publish.md) — _milestone_ — > **Stub-drafted 2026-05-27, post M10 closeout.** M11 enters > active state immediately — the M10 wheel + sdist already…. Updated 2026-05-27.
|
|
74
78
|
<!-- docs:generated end -->
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Lifecycle: active
|
|
4
4
|
Role: reference
|
|
5
5
|
Project: docs
|
|
6
|
-
Updated: 2026-05-
|
|
6
|
+
Updated: 2026-05-28
|
|
7
7
|
|
|
8
8
|
Related:
|
|
9
9
|
- implements: charter.md
|
|
@@ -24,20 +24,22 @@ inside the same wheel as package data.
|
|
|
24
24
|
src/docs_cli/ (Python 3.11+, stdlib only)
|
|
25
25
|
├── __init__.py ─ lazy re-export of `main`
|
|
26
26
|
├── cli.py ─ the CLI module (~3.8k lines)
|
|
27
|
-
│ ├── dunder version (__version__ =
|
|
27
|
+
│ ├── dunder version (__version__ = importlib.metadata.version("docs-cli"))
|
|
28
28
|
│ ├── config — TOML load, Vocab merging, archive-dir resolution,
|
|
29
29
|
│ │ `[migrate]` per-tree overrides (M7),
|
|
30
30
|
│ │ `[exclude]` + `.docsignore` (M8)
|
|
31
31
|
│ ├── model — Doc dataclass; metadata block parser + editors
|
|
32
32
|
│ ├── walker — directory traversal, filter, archive detection
|
|
33
33
|
│ ├── index — INDEX.md render with marker-block preservation
|
|
34
|
-
│ ├── archive — atomic move + lifecycle edit (M2; M7 rename
|
|
34
|
+
│ ├── archive — atomic move + lifecycle edit (M2; M7 rename;
|
|
35
|
+
│ │ M12 referring-edge rewrite)
|
|
35
36
|
│ ├── mv — rename + Related: rewrite across tree (M2)
|
|
36
37
|
│ ├── new — scaffolded doc creation (M2)
|
|
37
|
-
│ ├── touch — Updated: bump (M2)
|
|
38
|
+
│ ├── touch — Updated: bump (M2; M12 outside-root refusal)
|
|
38
39
|
│ ├── check — validation rules + exit-code matrix (M3)
|
|
39
40
|
│ ├── list — query view, human + --json (M3)
|
|
40
41
|
│ ├── migrate — foreign-tree inference + plan/apply (M4)
|
|
42
|
+
│ ├── project — rename verb (M12)
|
|
41
43
|
│ ├── install-skill — materialise the bundled skill onto a host (M6)
|
|
42
44
|
│ └── cli — argparse dispatch, exit codes, --root resolution
|
|
43
45
|
└── skill/ ─ bundled Claude Code skill (M5)
|
|
@@ -50,6 +52,13 @@ src/docs_cli/ (Python 3.11+, stdlib only)
|
|
|
50
52
|
└── docs-toml-template.toml (M8 F8; bundle-only starter)
|
|
51
53
|
```
|
|
52
54
|
|
|
55
|
+
> Pinned by `tests/test_packaging.py` A3 to the bumping-target literal;
|
|
56
|
+
> runtime read goes through stdlib `importlib.metadata` so a single
|
|
57
|
+
> `pyproject.toml` version bump propagates to `docs --version`
|
|
58
|
+
> automatically (M12). Fallback to `0.0.0+local` (M12 — OQ-4) if
|
|
59
|
+
> `importlib.metadata.PackageNotFoundError` is raised — protects
|
|
60
|
+
> fresh-clone runs without `pip install -e .`.
|
|
61
|
+
|
|
53
62
|
**Sibling artifact: the Claude Code skill.** The Claude Code skill at
|
|
54
63
|
`src/docs_cli/skill/` (M5) is **not** a `cli.py` module and adds no
|
|
55
64
|
Python — it is a standalone Markdown artifact that *drives* the verbs
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
# M11 — PyPI publish 1.4.0
|
|
2
2
|
|
|
3
|
-
Lifecycle:
|
|
3
|
+
Lifecycle: archived
|
|
4
4
|
Role: milestone
|
|
5
5
|
Project: docs
|
|
6
6
|
Updated: 2026-05-27
|
|
7
|
+
Archived-reason: Milestone M11 complete; docs-cli==1.4.0 shipped to PyPI 2026-05-27
|
|
7
8
|
|
|
8
9
|
Related:
|
|
9
10
|
- parent-of: m11-pypi-publish-impl.md
|
|
@@ -161,12 +162,28 @@ runbook's sections are the phases (mirrors M9 exactly):
|
|
|
161
162
|
stderr 0 bytes / `.docs.toml` auto-emitted) passed against
|
|
162
163
|
TestPyPI-served wheel. Temporary `pyproject.toml` rename
|
|
163
164
|
reverted cleanly. Rehearsal whl sha256 `3693b9f7…`.
|
|
164
|
-
- [
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
-
|
|
168
|
-
|
|
169
|
-
|
|
165
|
+
- [x] Real PyPI publish — `docs-cli==1.4.0` LIVE on PyPI at
|
|
166
|
+
`https://pypi.org/project/docs-cli/1.4.0/`. Fresh Phase 4
|
|
167
|
+
build under canonical `name = "docs-cli"`; both artefacts
|
|
168
|
+
twine-check PASS; upload PASS (PyPI token validated).
|
|
169
|
+
Chain-of-custody **bit-perfect** — PyPI-served whl sha256
|
|
170
|
+
`7af7eb5c…` byte-identical to local Phase 4 build.
|
|
171
|
+
Throwaway-venv install from PyPI succeeded; full smoke +
|
|
172
|
+
M10 headline contract (`migrate --apply --quiet` → exit 0
|
|
173
|
+
/ stdout 0 bytes / stderr 0 bytes / `.docs.toml`
|
|
174
|
+
auto-emitted) PASS against PyPI-served wheel.
|
|
175
|
+
- [x] Post-release — `m11/milestone-setup` ff-merged into `main`
|
|
176
|
+
and pushed (`8998747..b8d8af3`); annotated `v1.4.0` tag
|
|
177
|
+
(tag-object `4de329b9…` → commit `b8d8af3`) pushed to
|
|
178
|
+
`origin`; GitHub release live at
|
|
179
|
+
`https://github.com/ArtRichards/docs-cli/releases/tag/v1.4.0`;
|
|
180
|
+
release notes amended post-create to drop stale "deferred
|
|
181
|
+
to M11" wording; doc closeouts (plan/status/INDEX +
|
|
182
|
+
dogfood snapshot) landed; `docs archive --cascade` ran
|
|
183
|
+
(milestone doc archived, impl log stays
|
|
184
|
+
`Lifecycle: active` per M8/M9/M10 pattern, release-runbook
|
|
185
|
+
+ status declined). Token re-scope rolls forward as M9
|
|
186
|
+
open follow-on.
|
|
170
187
|
|
|
171
188
|
Each ticks as the runbook's corresponding section completes.
|
|
172
189
|
|
|
@@ -223,28 +240,34 @@ truly silent; `.docs.toml` auto-emitted; `docs check` exit 0).
|
|
|
223
240
|
|
|
224
241
|
M11 is complete when:
|
|
225
242
|
|
|
226
|
-
- [
|
|
243
|
+
- [x] `pip install docs-cli==1.4.0` works from PyPI on a clean
|
|
227
244
|
host with Python 3.11+ and produces a working `docs` command.
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
- [
|
|
245
|
+
(Phase 4: throwaway venv `/tmp/docs-real-venv` install
|
|
246
|
+
succeeded first attempt.)
|
|
247
|
+
- [x] `docs --version` from the PyPI-installed wheel prints
|
|
248
|
+
`docs 1.4.0`. (Phase 4 smoke.)
|
|
249
|
+
- [x] `docs migrate --apply --quiet <foreign-tree>` from the
|
|
231
250
|
PyPI-installed wheel produces empty stdout + empty stderr
|
|
232
251
|
(the headline M10 contract — re-verified against the
|
|
233
|
-
published artefact, not just the local build).
|
|
234
|
-
|
|
252
|
+
published artefact, not just the local build). (Phase 4
|
|
253
|
+
against synthetic `/tmp/m11-pypi-foreign/`: exit 0 / stdout
|
|
254
|
+
0 bytes / stderr 0 bytes.)
|
|
255
|
+
- [x] `docs install-skill` from the PyPI-installed wheel places a
|
|
235
256
|
host-correct skill that drives the verbs identically to the
|
|
236
|
-
in-repo install.
|
|
237
|
-
|
|
257
|
+
in-repo install. (Phase 4: fresh / no-op / `--symlink`-
|
|
258
|
+
rejected cycle all behaved correctly.)
|
|
259
|
+
- [x] The `v1.4.0` tag and GitHub release exist at
|
|
238
260
|
`https://github.com/ArtRichards/docs-cli/releases/tag/v1.4.0`.
|
|
239
|
-
- [
|
|
240
|
-
- [
|
|
241
|
-
actual publish date.
|
|
242
|
-
- [
|
|
243
|
-
milestone-completion summary
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
261
|
+
- [x] All Phase Checklist items above are ticked.
|
|
262
|
+
- [x] `docs/status.md` reflects M10 + M11 as Complete with the
|
|
263
|
+
actual publish date 2026-05-27.
|
|
264
|
+
- [x] `docs/m11-pypi-publish-impl.md` carries a
|
|
265
|
+
milestone-completion summary with the published version
|
|
266
|
+
(`1.4.0` — no TestPyPI-surfaced regression forced a
|
|
267
|
+
`1.4.x` bump), wheel + sdist sha256, publish timestamp, and
|
|
268
|
+
deviations (CHANGELOG amend at Phase 5; JSON metadata
|
|
269
|
+
cache lag at both registries; TestPyPI squatter detour
|
|
270
|
+
rolled forward).
|
|
248
271
|
|
|
249
272
|
## OPEN QUESTIONS
|
|
250
273
|
|
|
@@ -253,3 +276,58 @@ walk (TestPyPI ownership status; token re-scope status; any
|
|
|
253
276
|
runbook-deviation needed for v1.4 specifically) will be recorded
|
|
254
277
|
in the Milestone-completion summary as they surface, mirroring
|
|
255
278
|
the M9 pattern._
|
|
279
|
+
|
|
280
|
+
_At milestone close (2026-05-27): no plan-level open questions
|
|
281
|
+
emerged. TestPyPI ownership status was re-confirmed
|
|
282
|
+
(squatter unchanged; detour rolls forward). Token re-scope
|
|
283
|
+
status was passively confirmed (M9-era tokens still drove M11
|
|
284
|
+
unchanged; re-scope remains the M9 async follow-on). One
|
|
285
|
+
runbook-deviation surfaced (CHANGELOG amend at Phase 5 to
|
|
286
|
+
update the M10-authored "deferred" wording) — see the impl
|
|
287
|
+
log's milestone-completion summary for the full deviation
|
|
288
|
+
list, deduplicated for future-release reference._
|
|
289
|
+
|
|
290
|
+
## Milestone-completion summary
|
|
291
|
+
|
|
292
|
+
**Complete 2026-05-27.** `docs-cli==1.4.0` is live on PyPI at
|
|
293
|
+
`https://pypi.org/project/docs-cli/1.4.0/`. Annotated tag
|
|
294
|
+
`v1.4.0` at commit `b8d8af3` pushed to `origin`. GitHub release
|
|
295
|
+
at `https://github.com/ArtRichards/docs-cli/releases/tag/v1.4.0`.
|
|
296
|
+
|
|
297
|
+
| | sha256 |
|
|
298
|
+
|---|---|
|
|
299
|
+
| `docs_cli-1.4.0-py3-none-any.whl` | `7af7eb5cb67a860e16d34fb6e8084207e4d3abf2d81fb013fef3b1721c4ec050` |
|
|
300
|
+
| `docs_cli-1.4.0.tar.gz` | `0b0dd2ce1302b59cc862549a0d55fadf7210e27cfcd2e38b5f5f9ad31350c05b` |
|
|
301
|
+
|
|
302
|
+
Chain-of-custody bit-perfect: the PyPI-served wheel sha256
|
|
303
|
+
matches the local Phase 4 build byte-for-byte (verified via
|
|
304
|
+
`pip download --no-deps`). Headline M10 contract verified
|
|
305
|
+
against the PyPI-served wheel: `docs migrate --apply --quiet`
|
|
306
|
+
against a synthetic foreign tree produced exit 0 / stdout 0
|
|
307
|
+
bytes / stderr 0 bytes / `.docs.toml` auto-emitted / adopted
|
|
308
|
+
tree passes `docs check`.
|
|
309
|
+
|
|
310
|
+
Deviations recorded for v1.5+ releases:
|
|
311
|
+
|
|
312
|
+
1. **CHANGELOG amend at Phase 5.** The M10-authored 1.4.0
|
|
313
|
+
entry said "deferred to M11"; M11 Phase 5 amended to
|
|
314
|
+
"Published to PyPI 2026-05-27 via M11" and `gh release edit`
|
|
315
|
+
pushed the corrected text into the public release notes
|
|
316
|
+
(the PyPI-served sdist's CHANGELOG carries the original
|
|
317
|
+
wording — immutable).
|
|
318
|
+
2. **JSON metadata cache lag at TestPyPI + PyPI.** Both
|
|
319
|
+
`/pypi/<pkg>/json` endpoints lagged the simple index by
|
|
320
|
+
60-120s post-upload. Don't gate post-upload verification
|
|
321
|
+
on JSON refresh — `pip install` is the authoritative signal.
|
|
322
|
+
3. **TestPyPI squatter detour rolls forward.** Bare `docs-cli`
|
|
323
|
+
on TestPyPI still parked at `0.1.0` (no author). M11
|
|
324
|
+
continued M9's `docs-cli-rehearsal` rehearsal-name detour.
|
|
325
|
+
4. **Repo visibility flip N/A.** Already public from M9.
|
|
326
|
+
5. **Token re-scope rolls forward.** M9 follow-on; bootstrap
|
|
327
|
+
"Entire account" tokens drove M11 unchanged.
|
|
328
|
+
|
|
329
|
+
The release-runbook.md remains the operative reference for
|
|
330
|
+
v1.5+ — augmented in spirit by these five deviations
|
|
331
|
+
(deviation 1 in particular suggests authoring future
|
|
332
|
+
implementation-milestone CHANGELOG entries with wording
|
|
333
|
+
that survives the eventual publish event unchanged).
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Lifecycle: active
|
|
4
4
|
Role: spec
|
|
5
5
|
Project: docs
|
|
6
|
-
Updated: 2026-05-
|
|
6
|
+
Updated: 2026-05-28
|
|
7
7
|
|
|
8
8
|
Related:
|
|
9
9
|
- pairs-with: convention.md
|
|
@@ -71,6 +71,22 @@ Atomically archive a doc.
|
|
|
71
71
|
|
|
72
72
|
Atomicity: the metadata edit happens in a tmp file, fsync'd, renamed; the move happens only after the edit succeeds; the index regen runs last. A failure leaves the original file untouched.
|
|
73
73
|
|
|
74
|
+
**Referring-edge rewrite (M12).** After the move, `docs archive`
|
|
75
|
+
rewrites every `Related: <verb>: <old-rel>` bullet across the active
|
|
76
|
+
tree to point at `archive/<YYYY-MM-DD>/<basename>`. Mirrors `docs mv`'s
|
|
77
|
+
walker (`rewrite_related_refs`) — only the `Related:` field is
|
|
78
|
+
considered; prose markdown references are deliberately left alone.
|
|
79
|
+
Archive-subtree docs are read-only and are NOT updated. The rewrite
|
|
80
|
+
is part of the same atomic batch as the move + lifecycle edit: a
|
|
81
|
+
single end-of-batch INDEX refresh covers everything.
|
|
82
|
+
|
|
83
|
+
`--cascade` (M12 — OQ-D) extends this — when the cascade archives
|
|
84
|
+
related docs B, C, …, the referring-edge rewrites for every moved doc
|
|
85
|
+
run as a single atomic batch with one INDEX refresh at the end.
|
|
86
|
+
Per-doc cascade-archive failures still surface but only docs that
|
|
87
|
+
actually moved get their referring edges rewritten. Cascade remains
|
|
88
|
+
one-hop only (M2 decision unchanged).
|
|
89
|
+
|
|
74
90
|
Exits 1 on metadata-edit failure; 2 on archive-dir creation failure.
|
|
75
91
|
|
|
76
92
|
### `docs mv <old> <new>`
|
|
@@ -171,6 +187,129 @@ resolve to different docs roots) is **undefined behaviour and out of
|
|
|
171
187
|
M10 scope** — the validate-all-first pass refuses with exit 1 + an
|
|
172
188
|
"outside the resolved docs root" message.
|
|
173
189
|
|
|
190
|
+
**Outside-docs-root refusal (M12 — OQ-C).** If `--root` is not given
|
|
191
|
+
and no `.docs.toml` exists in the cwd's ancestor chain, `docs touch`
|
|
192
|
+
refuses with exit 2 + stderr message
|
|
193
|
+
`docs: touch: <path> is not under a docs root with .docs.toml; refusing`.
|
|
194
|
+
The file is left unchanged and no INDEX refresh runs (avoiding the M11
|
|
195
|
+
cascade-crash where a downstream walk failed on the first non-managed
|
|
196
|
+
sibling). An explicit `--root <dir>` bypasses the refusal **only when**
|
|
197
|
+
`<dir>/.docs.toml` exists; if `--root` is set but its `.docs.toml` is
|
|
198
|
+
missing, `touch` refuses with
|
|
199
|
+
`docs: touch: --root <root> does not contain .docs.toml; refusing`
|
|
200
|
+
(exit 2) (M12 — OQ-11).
|
|
201
|
+
|
|
202
|
+
### `docs project rename <new-name>`
|
|
203
|
+
|
|
204
|
+
Rename the docs root's project (M12). Rewrites `.docs.toml`'s
|
|
205
|
+
`[project] name = "<old>"` to `name = "<new>"` **and** every
|
|
206
|
+
conformant `Project: <old>` line in every active doc, atomically, with
|
|
207
|
+
a single end-of-batch INDEX refresh.
|
|
208
|
+
|
|
209
|
+
```
|
|
210
|
+
docs project rename <new-name> [--dry-run] [--quiet] [--root DIR]
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
`<new-name>` is required. A missing positional triggers argparse's
|
|
214
|
+
default exit 2.
|
|
215
|
+
|
|
216
|
+
**Resolution.** Operates on the docs root resolved from cwd via the
|
|
217
|
+
standard upward `.docs.toml` walk, unless `--root` overrides it
|
|
218
|
+
(M12 — OQ-1). If the resolved root has no `.docs.toml`, exits 2 with
|
|
219
|
+
stderr `docs: project rename: <cwd> is not under a docs root with .docs.toml; refusing`.
|
|
220
|
+
|
|
221
|
+
**Auto-normalisation (M12 — OQ-A).** The operator-supplied `<new-name>`
|
|
222
|
+
is run through M7's `normalise_project_name()` (the same machinery
|
|
223
|
+
`docs migrate` already uses). When the normalised form differs from
|
|
224
|
+
the input, stderr carries one line (gated on `not --quiet`):
|
|
225
|
+
|
|
226
|
+
```
|
|
227
|
+
docs: project rename: normalised "<input>" to "<normalised>"
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
before the rewrite proceeds with the normalised value. The current
|
|
231
|
+
`.docs.toml` `[project] name` value is read **as written** for the
|
|
232
|
+
no-op comparison — no double-normalisation (M12 — OQ-3).
|
|
233
|
+
|
|
234
|
+
**Empty-name rejection (M12 — OQ-9).** If post-normalisation
|
|
235
|
+
`<new-name>` is empty or whitespace-only, refuses with exit 2 + stderr
|
|
236
|
+
`docs: project rename: <input> normalises to empty string; project name must be non-empty`.
|
|
237
|
+
|
|
238
|
+
**What gets rewritten** (success path):
|
|
239
|
+
|
|
240
|
+
- `.docs.toml`'s `[project] name = "<old>"` line → `name = "<new>"`.
|
|
241
|
+
- Every conformant `Project: <old>` line in every **active-tree** doc
|
|
242
|
+
→ `Project: <new>`.
|
|
243
|
+
- Docs that have no explicit `Project:` line implicitly resolve to the
|
|
244
|
+
docs-root project; on rename, a `Project: <new>` line is inserted
|
|
245
|
+
into those docs (consistent with M2's `set_metadata_field` behaviour
|
|
246
|
+
for missing-field cases).
|
|
247
|
+
- `INDEX.md` regenerated once at end of batch.
|
|
248
|
+
|
|
249
|
+
**Multi-project tolerance (M12 — OQ-B).** A tree whose active docs
|
|
250
|
+
carry mixed `Project:` values (the M7-tolerated multi-project shape)
|
|
251
|
+
is walked completely: docs whose `Project:` matches `<old>` are
|
|
252
|
+
rewritten; docs with a non-matching `Project:` are reported in the
|
|
253
|
+
success footer but never mutated.
|
|
254
|
+
|
|
255
|
+
**Archive-subtree skip.** Docs under the configured `archive_dir` are
|
|
256
|
+
read-only by convention (M3); `project rename` skips them and reports
|
|
257
|
+
the count in the footer.
|
|
258
|
+
|
|
259
|
+
**Atomic semantics.** Validate-all-first: parse every active doc,
|
|
260
|
+
build the rewrite tuple + the sidecar plan; if any step in
|
|
261
|
+
validate-and-prepare raises, exits 1 (or 2 for a malformed
|
|
262
|
+
`.docs.toml`) with the offending path named on stderr and no on-disk
|
|
263
|
+
mutation. After validation passes, every rewrite is committed via
|
|
264
|
+
`atomic_write`, then `.docs.toml` is rewritten, then `INDEX.md` is
|
|
265
|
+
refreshed exactly once.
|
|
266
|
+
|
|
267
|
+
**`--dry-run`.** Prints one `docs: would rewrite Project: in <rel-path>`
|
|
268
|
+
line per matching doc, plus
|
|
269
|
+
`docs: would rewrite [project] name in .docs.toml: "<old>" -> "<new>"`,
|
|
270
|
+
plus the footer. Exits 0; writes nothing.
|
|
271
|
+
|
|
272
|
+
**No-op.** When the normalised `<new-name>` equals the sidecar's
|
|
273
|
+
current `[project] name`, the verb is a no-op regardless of whether
|
|
274
|
+
the active tree carries non-matching `Project:` docs (the rename has
|
|
275
|
+
nothing to rewrite — non-matching docs hold a different project name
|
|
276
|
+
and remain untouched). Prints (gated on `not --quiet`):
|
|
277
|
+
|
|
278
|
+
```
|
|
279
|
+
docs: project rename: <new> already current — no rewrites needed
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
to stderr; exits 0; no disk mutation; no INDEX refresh.
|
|
283
|
+
|
|
284
|
+
**Success output (M12 — OQ-2).** A single human-readable stderr line
|
|
285
|
+
(gated on `not --quiet`):
|
|
286
|
+
|
|
287
|
+
```
|
|
288
|
+
docs: project rename: <old> -> <new> (rewrote .docs.toml + <N> doc(s); <M> archived skipped; <K> non-matching project(s) untouched: <list>)
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
When `K == 0` **and** `M == 0`, the empty clauses are dropped to:
|
|
292
|
+
|
|
293
|
+
```
|
|
294
|
+
docs: project rename: <old> -> <new> (rewrote .docs.toml + <N> doc(s))
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
No `--json` mode in M12 (M12 — OQ-7).
|
|
298
|
+
|
|
299
|
+
**What does NOT change.**
|
|
300
|
+
|
|
301
|
+
- Prose markdown text mentioning the old name. Only the metadata
|
|
302
|
+
`Project:` field is rewritten — never `Related:` edges (which carry
|
|
303
|
+
no project signal) and never body prose. (Consistent with M2's
|
|
304
|
+
`docs mv` "Related: only, not prose" stance.)
|
|
305
|
+
- Files outside the docs root.
|
|
306
|
+
- Archive-subtree docs.
|
|
307
|
+
|
|
308
|
+
**Exit codes.** 0 success / no-op / dry-run; 1 recoverable error
|
|
309
|
+
(e.g. a doc with no editable metadata block); 2 hard error (malformed
|
|
310
|
+
`.docs.toml`, no `.docs.toml` ancestor, empty post-normalised
|
|
311
|
+
`<new-name>`).
|
|
312
|
+
|
|
174
313
|
### `docs install-skill [--dest DIR] [--copy|--symlink] [--force] [--quiet]`
|
|
175
314
|
|
|
176
315
|
Materialise the bundled Claude Code skill onto the host.
|
|
@@ -524,4 +663,12 @@ total excluded count per top-level dir prefix
|
|
|
524
663
|
| 1 | Recoverable error (file conflict, validation warning, missing input) |
|
|
525
664
|
| 2 | Hard error (invalid vocab, atomic operation failure, validation errors) |
|
|
526
665
|
|
|
666
|
+
M12-specific exit-code shape:
|
|
667
|
+
|
|
668
|
+
| Verb | 0 | 1 | 2 |
|
|
669
|
+
|---|---|---|---|
|
|
670
|
+
| `project rename` | success / no-op / dry-run | doc lacks editable metadata block | malformed `.docs.toml`; no `.docs.toml` ancestor; empty post-normalised `<new-name>` |
|
|
671
|
+
| `touch` (outside-root refusal) | — | — | no `.docs.toml` ancestor (cwd-resolved) or `--root` without `.docs.toml` |
|
|
672
|
+
| `archive` (referring-edge) | success | referring doc has malformed metadata (move aborts) | archive-dir creation failure |
|
|
673
|
+
|
|
527
674
|
CI integration: `docs check` returning 2 should fail the build.
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Lifecycle: active
|
|
4
4
|
Role: spec
|
|
5
5
|
Project: docs
|
|
6
|
-
Updated: 2026-05-
|
|
6
|
+
Updated: 2026-05-28
|
|
7
7
|
|
|
8
8
|
Related:
|
|
9
9
|
- pairs-with: cli.md
|
|
@@ -84,7 +84,7 @@ The block terminates at the first blank line whose next non-empty line is *not*
|
|
|
84
84
|
|
|
85
85
|
| Field | Type | Meaning |
|
|
86
86
|
|---|---|---|
|
|
87
|
-
| `Project` | kebab-case slug | project this doc belongs to; defaults to `project.name` in `.docs.toml` if absent |
|
|
87
|
+
| `Project` | kebab-case slug | project this doc belongs to; defaults to `project.name` in `.docs.toml` if absent. The CLI surface `docs project rename` rewrites this slug in lockstep across the sidecar and every doc that names it (M12). |
|
|
88
88
|
| `Related` | list of `<verb>: <path>` | typed cross-references to other docs |
|
|
89
89
|
| `Owner` | free-form | the human or team accountable for this doc |
|
|
90
90
|
| `Tags` | comma-separated | free-form tags for filtering |
|