docs-cli 1.6.0__tar.gz → 1.6.5__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.6.0 → docs_cli-1.6.5}/PKG-INFO +1 -1
- {docs_cli-1.6.0 → docs_cli-1.6.5}/docs/INDEX.md +14 -10
- {docs_cli-1.6.0/docs → docs_cli-1.6.5/docs/archive/2026-06-03}/m14-robustness-agent-native-impl.md +5 -4
- {docs_cli-1.6.0/docs → docs_cli-1.6.5/docs/archive/2026-06-03}/m14-robustness-agent-native.md +4 -4
- {docs_cli-1.6.0/docs → docs_cli-1.6.5/docs/archive/2026-06-03}/m15-agent-native-authoring-impl.md +4 -3
- {docs_cli-1.6.0/docs → docs_cli-1.6.5/docs/archive/2026-06-03}/m15-agent-native-authoring.md +3 -3
- {docs_cli-1.6.0/docs → docs_cli-1.6.5/docs/archive/2026-06-03}/m17-pypi-publish.md +127 -55
- {docs_cli-1.6.0/src/docs_cli/skill/references → docs_cli-1.6.5/docs}/cli.md +84 -3
- {docs_cli-1.6.0/src/docs_cli/skill/references → docs_cli-1.6.5/docs}/convention.md +26 -1
- docs_cli-1.6.5/docs/m17-pypi-publish-impl.md +463 -0
- docs_cli-1.6.5/docs/m19-post-edit-validation-impl.md +457 -0
- docs_cli-1.6.5/docs/m19-post-edit-validation.md +587 -0
- docs_cli-1.6.5/docs/m20-pypi-publish-impl.md +308 -0
- docs_cli-1.6.5/docs/m20-pypi-publish.md +431 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/docs/plan.md +65 -8
- {docs_cli-1.6.0 → docs_cli-1.6.5}/docs/release-runbook.md +52 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/docs/status.md +183 -77
- {docs_cli-1.6.0 → docs_cli-1.6.5}/pyproject.toml +1 -1
- {docs_cli-1.6.0 → docs_cli-1.6.5}/src/docs_cli/cli.py +164 -18
- {docs_cli-1.6.0 → docs_cli-1.6.5}/src/docs_cli/skill/SKILL.md +9 -1
- {docs_cli-1.6.0/docs → docs_cli-1.6.5/src/docs_cli/skill/references}/cli.md +84 -3
- {docs_cli-1.6.0/docs → docs_cli-1.6.5/src/docs_cli/skill/references}/convention.md +26 -1
- {docs_cli-1.6.0 → docs_cli-1.6.5}/src/docs_cli/skill/references/quality-artifacts.md +6 -3
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/expected/docs-INDEX.md +14 -10
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/test_body_from.py +28 -0
- docs_cli-1.6.5/tests/test_cli_check.py +275 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/test_cli_list.py +59 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/test_cli_touch.py +247 -1
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/test_config.py +44 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/test_packaging.py +25 -24
- docs_cli-1.6.0/docs/m17-pypi-publish-impl.md +0 -252
- docs_cli-1.6.0/tests/test_cli_check.py +0 -149
- {docs_cli-1.6.0 → docs_cli-1.6.5}/.gitignore +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/LICENSE +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/README.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/docs/.docs.toml +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/docs/agent-native-invocation.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/docs/architecture.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/docs/archive/2026-05-20/m1-parser-and-index-log.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/docs/archive/2026-05-20/m1-parser-and-index.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/docs/archive/2026-05-21/m2-mutating-verbs-log.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/docs/archive/2026-05-21/m2-mutating-verbs.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/docs/archive/2026-05-22/m3-validation-and-query-log.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/docs/archive/2026-05-22/m3-validation-and-query.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/docs/archive/2026-05-22/m4-migration-helper-log.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/docs/archive/2026-05-22/m4-migration-helper.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/docs/archive/2026-05-23/m5-claude-code-skill-log.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/docs/archive/2026-05-23/m5-claude-code-skill.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/docs/archive/2026-05-24/m6-pypi-distribution-log.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/docs/archive/2026-05-24/m6-pypi-distribution.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/docs/archive/2026-05-25/m7-migration-accuracy-log.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/docs/archive/2026-05-25/m7-migration-accuracy.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/docs/archive/2026-05-25/m8-adoption-workflow-log.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/docs/archive/2026-05-25/m8-adoption-workflow.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/docs/archive/2026-05-25/m9-pypi-publish-log.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/docs/archive/2026-05-25/m9-pypi-publish.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/docs/archive/2026-05-27/m10-adoption-polish-impl.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/docs/archive/2026-05-27/m10-adoption-polish.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/docs/archive/2026-05-27/m11-pypi-publish-impl.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/docs/archive/2026-05-27/m11-pypi-publish.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/docs/archive/2026-05-28/m12-project-rename-impl.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/docs/archive/2026-05-28/m12-project-rename.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/docs/archive/2026-05-29/m13-pypi-publish-impl.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/docs/archive/2026-05-29/m13-pypi-publish.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/docs/archive/2026-06-01/m16-bundled-docs-skill-quality-impl.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/docs/archive/2026-06-01/m16-bundled-docs-skill-quality-test-matrix.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/docs/archive/2026-06-01/m16-bundled-docs-skill-quality.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/docs/charter.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/docs/definition-of-ready.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/docs/dual-status-adr.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/docs/m18-archive-edge-integrity-impl.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/docs/m18-archive-edge-integrity.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/docs/test-strategy.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/docs/vocab-adr.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/src/docs_cli/__init__.py +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/src/docs_cli/skill/references/adoption-playbook.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/src/docs_cli/skill/references/docs-toml-template.toml +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/src/docs_cli/skill/references/use-cases.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/.gitkeep +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/_typing/docs.pyi +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/conftest.py +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/body-from/clean-body.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/body-from/edge-case-keyword.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/body-from/real-frontmatter-body.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/body-from/reason-in-body.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/body-from/yaml-fence-body.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/lifecycle/lifecycle-key.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/lifecycle/lifecycle-plus-status-prose.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/lifecycle/status-only.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/parser/well-formed.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/project-names/Abc5Migration/alpha.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/project-names/Abc5Migration/beta.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/project-names/Abc5Migration/gamma.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/project-names/FOO_BAR_BAZ/alpha.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/project-names/FOO_BAR_BAZ/beta.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/project-names/FOO_BAR_BAZ/gamma.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/project-names/FooBarBaz/alpha.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/project-names/FooBarBaz/beta.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/project-names/FooBarBaz/gamma.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/project-names/Foo_Bar_Baz/alpha.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/project-names/Foo_Bar_Baz/beta.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/project-names/Foo_Bar_Baz/gamma.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/project-names/Plan/alpha.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/project-names/Plan/beta.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/project-names/Plan/gamma.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/project-names/bugs-2026-01-26/alpha.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/project-names/bugs-2026-01-26/beta.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/project-names/bugs-2026-01-26/gamma.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/project-names/embedded-ai-discovery-parallel/alpha.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/project-names/embedded-ai-discovery-parallel/beta.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/project-names/embedded-ai-discovery-parallel/gamma.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/sibling-defaulting/majority-met/file-01-spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/sibling-defaulting/majority-met/file-02-spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/sibling-defaulting/majority-met/file-03-spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/sibling-defaulting/majority-met/file-04-spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/sibling-defaulting/majority-met/file-05-spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/sibling-defaulting/majority-met/file-06-spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/sibling-defaulting/majority-met/file-07-spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/sibling-defaulting/majority-met/file-08-no-suffix.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/sibling-defaulting/majority-met/file-09-no-suffix.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/sibling-defaulting/majority-met/file-10-no-suffix.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/sibling-defaulting/majority-not-met/file-01-spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/sibling-defaulting/majority-not-met/file-02-spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/sibling-defaulting/majority-not-met/file-03-spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/sibling-defaulting/majority-not-met/file-04-spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/sibling-defaulting/majority-not-met/file-05-plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/sibling-defaulting/majority-not-met/file-06-plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/sibling-defaulting/majority-not-met/file-07-plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/sibling-defaulting/majority-not-met/file-08-no-suffix.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/sibling-defaulting/majority-not-met/file-09-no-suffix.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/sibling-defaulting/majority-not-met/file-10-no-suffix.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/sibling-defaulting/sample-too-small/file-01-spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/sibling-defaulting/sample-too-small/file-02-spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/sibling-defaulting/sample-too-small/file-03-spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/sibling-defaulting/sample-too-small/file-04-no-suffix.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/stamp/already-stamped.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/stamp/raw-h1-suggests-role.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/stamp/raw-invalid-block.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/stamp/raw-no-frontmatter.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/stamp/raw-no-h1.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/stamp/raw-with-foreign-meta.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/status-prose/draft-companion.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/status-prose/freeform-status.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/status-prose/p0-implemented.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/status-prose/planning-only.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/archive-pair/.docs.toml +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/archive-pair/feature-log.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/archive-pair/feature.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/archive-trio/.docs.toml +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/archive-trio/feature-impl.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/archive-trio/feature-test-matrix.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/archive-trio/feature.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/archive-with-incoming-refs/.docs.toml +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/archive-with-incoming-refs/master.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/archive-with-incoming-refs/sidekick.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/archive-with-incoming-refs/witness.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/cross-refs/.docs.toml +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/cross-refs/core.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/cross-refs/helper.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/cross-refs/overview.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/drift/.docs.toml +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/drift/archive/2026-01-01/properly-archived.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/drift/archive/2026-01-01/wrongly-active.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/drift/clean.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/drift/wrongly-archived.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/foreign/archived/proj-old-decision.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/foreign/proj-auth-spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/foreign/proj-db-adr.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/foreign/proj-deploy-log.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/foreign/proj-extra-metadata.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/foreign/proj-has-metadata.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/foreign/proj-no-h1.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/foreign/proj-overview.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/foreign/proj-release-plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/foreign/topics/proj-deep-notes.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/invalid/.docs.toml +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/invalid/bad-date.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/invalid/bad-role.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/invalid/bad-status.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/invalid/broken-ref.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/invalid/empty-role.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/invalid/no-h1.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/invalid/no-status.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/marker-preservation/.docs.toml +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/marker-preservation/INDEX.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/marker-preservation/lone-doc.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/minimal/.docs.toml +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/minimal/lone-doc.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/multi-project/.docs.toml +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/multi-project/alpha-charter.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/multi-project/alpha-old-spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/multi-project/alpha-plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/multi-project/alpha-spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/multi-project/archive/2026-04-01/beta-old.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/multi-project/beta-done.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/multi-project/beta-notes.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/multi-project/beta-status.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/multi-project/topics/orphan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/multi-project-alpha-sidecar/.docs.toml +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/multi-project-alpha-sidecar/alpha-charter.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/multi-project-alpha-sidecar/alpha-old-spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/multi-project-alpha-sidecar/alpha-plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/multi-project-alpha-sidecar/alpha-spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/multi-project-alpha-sidecar/archive/2026-04-01/beta-old.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/multi-project-alpha-sidecar/beta-done.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/multi-project-alpha-sidecar/beta-notes.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/multi-project-alpha-sidecar/beta-status.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/multi-project-alpha-sidecar/topics/orphan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/mv-with-malformed/.docs.toml +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/mv-with-malformed/broken.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/mv-with-malformed/good-a.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/mv-with-malformed/referrer.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/nested/.docs.toml +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/nested/root-doc.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/nested/topics/deep-dive.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/README.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/archive-subdir/archived/foo-deprecated-plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/archive-subdir/archived/foo-historical-decision.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/archive-subdir/archived/foo-old-thing.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/archive-subdir/archived/foo-rejected-spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/archive-subdir/archived/foo-superseded-runbook.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/archive-subdir/foo-architecture-decision.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/archive-subdir/foo-bar-plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/archive-subdir/foo-bar-spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/archive-subdir/foo-charter.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/archive-subdir/foo-design-notes.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/archive-subdir/foo-launch-log.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/archive-subdir/foo-misc.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/archive-subdir/foo-overview.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/archive-subdir/foo-runbook.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/archive-subdir/foo-status.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/kebab-tiny/foo-bar-plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/kebab-tiny/foo-bar-spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/kebab-tiny/foo-bar-status.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/mixed-naming/API Reference.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/mixed-naming/Acme Plan - Database Population Plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/mixed-naming/AcmeApiSpec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/mixed-naming/Foo_Design_Decision_Tree.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/mixed-naming/Foo_Domain_Spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/mixed-naming/Project_Status_Update.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/mixed-naming/User Guide - Operator Manual.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/mixed-naming/feature-rollout-plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/mixed-naming/incident-runbook.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/mixed-naming/release-notes.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_API_Spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Architecture.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Cards.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Charter.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_10_Spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_11_Spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_12_Spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_13_Spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_14_Spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_15_Spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_1_Spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_2_Spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_3_Spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_4_Spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_5_Spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_6_Spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_7_Spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_8_Spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_9_Spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Constraints.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Decision_Tree.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Design_Sketch.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Discovery_Plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Domain_Plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Handoff.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_M1.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_M10.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_M10_Implementation.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_M1_Implementation.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_M2.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_M2_Implementation.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_M3.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_M3_Implementation.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_M4.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_M4_Implementation.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_M5.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_M5_Implementation.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_M6.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_M6_Implementation.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_M7.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_M7_Implementation.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_M8.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_M8_Implementation.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_M9.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_M9_Implementation.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Migration_Plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Module_Spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Plan_Draft.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Plan_v3.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Pricing_Memo.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Provider_Spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Service_Spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Status.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Strategy_Outline.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Strategy_v2.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_10_Plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_11_Plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_12_Plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_13_Plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_14_Plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_15_Plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_1_Plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_2_Plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_3_Plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_4_Plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_5_Plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_6_Plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_7_Plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_8_Plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_9_Plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Vendor_Brief.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-medium/Foo_Architecture.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-medium/Foo_Brief.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-medium/Foo_Charter.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-medium/Foo_Implementation.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-medium/Foo_Log.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-medium/Foo_M1.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-medium/Foo_M1_Implementation.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-medium/Foo_M2.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-medium/Foo_M2_Implementation.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-medium/Foo_M3.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-medium/Foo_M4.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-medium/Foo_Memo.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-medium/Foo_Outline.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-medium/Foo_Plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-medium/Foo_Sketch.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-medium/Foo_Status.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-medium/Foo_Strategy_v2.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/kebab-tiny/.docs.toml +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/kebab-tiny/INDEX.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/kebab-tiny/foo-bar-plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/kebab-tiny/foo-bar-spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/kebab-tiny/foo-bar-status.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/.docs.toml +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_API_Spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Architecture.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Cards.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Charter.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_10_Spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_11_Spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_12_Spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_13_Spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_14_Spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_15_Spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_1_Spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_2_Spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_3_Spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_4_Spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_5_Spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_6_Spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_7_Spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_8_Spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_9_Spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Constraints.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Decision_Tree.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Design_Sketch.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Discovery_Plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Domain_Plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Handoff.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M1.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M10.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M10_Implementation.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M1_Implementation.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M2.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M2_Implementation.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M3.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M3_Implementation.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M4.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M4_Implementation.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M5.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M5_Implementation.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M6.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M6_Implementation.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M7.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M7_Implementation.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M8.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M8_Implementation.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M9.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M9_Implementation.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Migration_Plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Module_Spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Plan_Draft.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Plan_v3.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Pricing_Memo.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Provider_Spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Service_Spec.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Status.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Strategy_Outline.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Strategy_v2.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_10_Plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_11_Plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_12_Plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_13_Plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_14_Plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_15_Plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_1_Plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_2_Plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_3_Plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_4_Plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_5_Plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_6_Plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_7_Plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_8_Plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_9_Plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Vendor_Brief.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/INDEX.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-medium/.docs.toml +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_Architecture.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_Brief.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_Charter.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_Implementation.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_Log.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_M1.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_M1_Implementation.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_M2.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_M2_Implementation.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_M3.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_M4.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_Memo.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_Outline.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_Plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_Sketch.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_Status.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_Strategy_v2.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-medium/INDEX.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/rename-with-archive/.docs.toml +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/rename-with-archive/archive/2026-04-01/old.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/rename-with-archive/live.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/rename-with-malformed/.docs.toml +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/rename-with-malformed/broken.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/rename-with-malformed/good-a.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/rename-with-malformed/good-b.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/with-archive/.docs.toml +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/with-archive/.hidden-file +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/with-archive/.private/should-not-be-walked.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/with-archive/alpha.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/with-archive/archive/2026-01-01/INDEX.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/with-archive/archive/2026-01-01/old-plan.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/with-archive/beta.md +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/fixtures/trees/with-archive/notes.txt +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/manual/m7_success_criteria.py +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/test_archive_normalisation.py +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/test_atomic_write.py +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/test_check.py +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/test_cli_archive.py +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/test_cli_index.py +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/test_cli_migrate.py +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/test_cli_mv.py +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/test_cli_new.py +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/test_cli_project_rename.py +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/test_cli_project_set.py +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/test_cli_stamp.py +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/test_edit.py +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/test_exclude.py +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/test_index.py +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/test_inference.py +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/test_lifecycle_rename.py +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/test_migrate.py +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/test_model.py +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/test_multi_project_hints.py +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/test_non_md_surfacing.py +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/test_project_normalisation.py +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/test_query.py +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/test_skill.py +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/test_skill_adoption.py +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/test_skill_quality_artifacts.py +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/test_skill_refs.py +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/test_triage_flags.py +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/test_version_metadata.py +0 -0
- {docs_cli-1.6.0 → docs_cli-1.6.5}/tests/test_walker.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: docs-cli
|
|
3
|
-
Version: 1.6.
|
|
3
|
+
Version: 1.6.5
|
|
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-06-
|
|
8
|
+
_Generated 2026-06-12. 19 docs active, 34 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-06-
|
|
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-06-12.
|
|
15
15
|
|
|
16
16
|
### Active — Charter
|
|
17
17
|
|
|
@@ -19,26 +19,25 @@ _Generated 2026-06-03. 20 docs active, 29 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-06-
|
|
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-06-12.
|
|
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-06-
|
|
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-06-
|
|
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-06-12.
|
|
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-06-12.
|
|
28
28
|
|
|
29
29
|
### Active — Milestone
|
|
30
30
|
|
|
31
|
-
- [
|
|
32
|
-
- [
|
|
31
|
+
- [m19-post-edit-validation.md](m19-post-edit-validation.md) — _milestone_ — - Milestone: M19 (v1.6.5) - Title: Post-edit validation ergonomics (touch --check + configurable stale window) -…. Updated 2026-06-12.
|
|
32
|
+
- [m20-pypi-publish.md](m20-pypi-publish.md) — _milestone_ — > **Stub-drafted 2026-06-12, post M19 implementation-complete.** M20 > enters active state immediately — M19 is…. Updated 2026-06-12.
|
|
33
33
|
- [m18-archive-edge-integrity.md](m18-archive-edge-integrity.md) — _milestone_ — - Milestone: M18 - Title: Archive edge integrity (intra-archive Related: rewriting) - Surface: a correctness fix to…. Updated 2026-06-03.
|
|
34
|
-
- [m14-robustness-agent-native.md](m14-robustness-agent-native.md) — _milestone_ — - Milestone: M14 (v1.6.0, part 1 of 2) - Title: Robustness + autonomous archive - Surface: correctness/atomicity…. Updated 2026-06-02.
|
|
35
34
|
|
|
36
35
|
### Active — Log
|
|
37
36
|
|
|
38
|
-
- [
|
|
37
|
+
- [m19-post-edit-validation-impl.md](m19-post-edit-validation-impl.md) — _log_ — Chronological log of work on M19 — Post-edit validation ergonomics (`docs touch --check` + configurable stale window).…. Updated 2026-06-12.
|
|
38
|
+
- [m20-pypi-publish-impl.md](m20-pypi-publish-impl.md) — _log_ — Chronological log of work on M20 — PyPI publish 1.6.5. Append a section per runbook phase (operator prep → pre-publish…. Updated 2026-06-12.
|
|
39
39
|
- [m17-pypi-publish-impl.md](m17-pypi-publish-impl.md) — _log_ — Chronological log of work on M17 — PyPI publish 1.6.0. Append a section per runbook phase (operator prep → pre-publish…. Updated 2026-06-03.
|
|
40
40
|
- [m18-archive-edge-integrity-impl.md](m18-archive-edge-integrity-impl.md) — _log_ — Chronological log of work on M18 — Archive edge integrity (intra-archive `Related:` rewriting). Append a section per…. Updated 2026-06-03.
|
|
41
|
-
- [m14-robustness-agent-native-impl.md](m14-robustness-agent-native-impl.md) — _log_ — Chronological log of work on M14 — Robustness + agent-native surface. Append a section per TDD phase with objective,…. Updated 2026-06-02.
|
|
42
41
|
|
|
43
42
|
### Active — Decision
|
|
44
43
|
|
|
@@ -63,6 +62,11 @@ _Generated 2026-06-03. 20 docs active, 29 archived._
|
|
|
63
62
|
|
|
64
63
|
## Archived
|
|
65
64
|
|
|
65
|
+
- [archive/2026-06-03/m14-robustness-agent-native-impl.md](archive/2026-06-03/m14-robustness-agent-native-impl.md) — _log_ — Chronological log of work on M14 — Robustness + agent-native surface. Append a section per TDD phase with objective,…. Updated 2026-06-03.
|
|
66
|
+
- [archive/2026-06-03/m14-robustness-agent-native.md](archive/2026-06-03/m14-robustness-agent-native.md) — _milestone_ — - Milestone: M14 (v1.6.0, part 1 of 2) - Title: Robustness + autonomous archive - Surface: correctness/atomicity…. Updated 2026-06-03.
|
|
67
|
+
- [archive/2026-06-03/m15-agent-native-authoring-impl.md](archive/2026-06-03/m15-agent-native-authoring-impl.md) — _log_ — Chronological log of work on M15 — Agent-native doc authoring. Append a section per TDD phase with objective, files…. Updated 2026-06-03.
|
|
68
|
+
- [archive/2026-06-03/m15-agent-native-authoring.md](archive/2026-06-03/m15-agent-native-authoring.md) — _milestone_ — - Milestone: M15 (v1.6.0, part 2 of 2) - Title: Agent-native doc authoring - Surface: the agent-native *authoring* set…. Updated 2026-06-03.
|
|
69
|
+
- [archive/2026-06-03/m17-pypi-publish.md](archive/2026-06-03/m17-pypi-publish.md) — _milestone_ — > **Stub-drafted 2026-06-03, post M14 + M15 closeout.** M17 > enters active state immediately — M14 and M15 are both >…. Updated 2026-06-03.
|
|
66
70
|
- [archive/2026-06-01/m16-bundled-docs-skill-quality-impl.md](archive/2026-06-01/m16-bundled-docs-skill-quality-impl.md) — _log_ — Chronological log for M16. This milestone records the docs-cli bundled `docs` skill changes required by the Agent…. Updated 2026-06-01.
|
|
67
71
|
- [archive/2026-06-01/m16-bundled-docs-skill-quality-test-matrix.md](archive/2026-06-01/m16-bundled-docs-skill-quality-test-matrix.md) — _spec_ — Lite. Updated 2026-06-01.
|
|
68
72
|
- [archive/2026-06-01/m16-bundled-docs-skill-quality.md](archive/2026-06-01/m16-bundled-docs-skill-quality.md) — _milestone_ — - Milestone: M16 - Title: Bundled docs skill quality artifacts - Surface: bundled `docs` skill guidance under…. Updated 2026-06-01.
|
{docs_cli-1.6.0/docs → docs_cli-1.6.5/docs/archive/2026-06-03}/m14-robustness-agent-native-impl.md
RENAMED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
# M14 — Implementation Log
|
|
2
2
|
|
|
3
|
-
Lifecycle:
|
|
3
|
+
Lifecycle: archived
|
|
4
4
|
Role: log
|
|
5
5
|
Project: docs
|
|
6
|
-
Updated: 2026-06-
|
|
6
|
+
Updated: 2026-06-03
|
|
7
|
+
Archived-reason: Milestone M14 complete; docs-cli==1.6.0 shipped to PyPI via M17 2026-06-03
|
|
7
8
|
|
|
8
9
|
Related:
|
|
9
|
-
- child-of: m14-robustness-agent-native.md
|
|
10
|
-
- pairs-with: m14-robustness-agent-native.md
|
|
10
|
+
- child-of: archive/2026-06-03/m14-robustness-agent-native.md
|
|
11
|
+
- pairs-with: archive/2026-06-03/m14-robustness-agent-native.md
|
|
11
12
|
- pairs-with: status.md
|
|
12
13
|
|
|
13
14
|
## Overview
|
{docs_cli-1.6.0/docs → docs_cli-1.6.5/docs/archive/2026-06-03}/m14-robustness-agent-native.md
RENAMED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
# M14 — Robustness + autonomous archive
|
|
2
2
|
|
|
3
|
-
Lifecycle:
|
|
3
|
+
Lifecycle: archived
|
|
4
4
|
Role: milestone
|
|
5
5
|
Project: docs
|
|
6
|
-
Updated: 2026-06-
|
|
6
|
+
Updated: 2026-06-03
|
|
7
7
|
|
|
8
8
|
Related:
|
|
9
9
|
- child-of: plan.md
|
|
10
|
-
- parent-of: m14-robustness-agent-native-impl.md
|
|
11
|
-
- pairs-with: m15-agent-native-authoring.md
|
|
10
|
+
- parent-of: archive/2026-06-03/m14-robustness-agent-native-impl.md
|
|
11
|
+
- pairs-with: archive/2026-06-03/m15-agent-native-authoring.md
|
|
12
12
|
- pairs-with: agent-native-invocation.md
|
|
13
13
|
- pairs-with: cli.md
|
|
14
14
|
- pairs-with: status.md
|
{docs_cli-1.6.0/docs → docs_cli-1.6.5/docs/archive/2026-06-03}/m15-agent-native-authoring-impl.md
RENAMED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
# M15 — Implementation Log
|
|
2
2
|
|
|
3
|
-
Lifecycle:
|
|
3
|
+
Lifecycle: archived
|
|
4
4
|
Role: log
|
|
5
5
|
Project: docs
|
|
6
6
|
Updated: 2026-06-03
|
|
7
|
+
Archived-reason: Milestone M15 complete; docs-cli==1.6.0 shipped to PyPI via M17 2026-06-03
|
|
7
8
|
|
|
8
9
|
Related:
|
|
9
|
-
- child-of: m15-agent-native-authoring.md
|
|
10
|
-
- pairs-with: m15-agent-native-authoring.md
|
|
10
|
+
- child-of: archive/2026-06-03/m15-agent-native-authoring.md
|
|
11
|
+
- pairs-with: archive/2026-06-03/m15-agent-native-authoring.md
|
|
11
12
|
- pairs-with: status.md
|
|
12
13
|
|
|
13
14
|
## Overview
|
{docs_cli-1.6.0/docs → docs_cli-1.6.5/docs/archive/2026-06-03}/m15-agent-native-authoring.md
RENAMED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
# M15 — Agent-native doc authoring (v1.6.0)
|
|
2
2
|
|
|
3
|
-
Lifecycle:
|
|
3
|
+
Lifecycle: archived
|
|
4
4
|
Role: milestone
|
|
5
5
|
Project: docs
|
|
6
6
|
Updated: 2026-06-03
|
|
7
7
|
|
|
8
8
|
Related:
|
|
9
9
|
- child-of: plan.md
|
|
10
|
-
- parent-of: m15-agent-native-authoring-impl.md
|
|
11
|
-
- pairs-with: m14-robustness-agent-native.md
|
|
10
|
+
- parent-of: archive/2026-06-03/m15-agent-native-authoring-impl.md
|
|
11
|
+
- pairs-with: archive/2026-06-03/m14-robustness-agent-native.md
|
|
12
12
|
- pairs-with: agent-native-invocation.md
|
|
13
13
|
- pairs-with: cli.md
|
|
14
14
|
- pairs-with: status.md
|
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
# M17 — PyPI publish 1.6.0
|
|
2
2
|
|
|
3
|
-
Lifecycle:
|
|
3
|
+
Lifecycle: archived
|
|
4
4
|
Role: milestone
|
|
5
5
|
Project: docs
|
|
6
6
|
Updated: 2026-06-03
|
|
7
|
+
Archived-reason: Milestone M17 complete; docs-cli==1.6.0 shipped to PyPI 2026-06-03
|
|
7
8
|
|
|
8
9
|
Related:
|
|
9
10
|
- parent-of: m17-pypi-publish-impl.md
|
|
10
11
|
- child-of: plan.md
|
|
11
12
|
- pairs-with: release-runbook.md
|
|
12
13
|
- pairs-with: status.md
|
|
13
|
-
- pairs-with: m14-robustness-agent-native.md
|
|
14
|
-
- pairs-with: m15-agent-native-authoring.md
|
|
14
|
+
- pairs-with: archive/2026-06-03/m14-robustness-agent-native.md
|
|
15
|
+
- pairs-with: archive/2026-06-03/m15-agent-native-authoring.md
|
|
15
16
|
|
|
16
17
|
## Overview
|
|
17
18
|
|
|
@@ -32,8 +33,11 @@ Related:
|
|
|
32
33
|
GitHub release with notes sourced from the CHANGELOG, and the
|
|
33
34
|
post-publish doc closeouts that turn the M14 + M15 + M17 rows
|
|
34
35
|
in `status.md` and `plan.md` into the post-publish narrative.
|
|
35
|
-
- Status:
|
|
36
|
-
|
|
36
|
+
- Status: **Complete (2026-06-03)** — `docs-cli==1.6.0` shipped
|
|
37
|
+
to PyPI, batching M14 + M15. All five runbook phases done;
|
|
38
|
+
chain-of-custody bit-perfect; all seven M14 + M15 headline
|
|
39
|
+
contracts hold against the PyPI-served wheel. `v1.6.0` tag at
|
|
40
|
+
`95f23a6` + GitHub release are the closeout git sequence.
|
|
37
41
|
|
|
38
42
|
### Goal
|
|
39
43
|
|
|
@@ -154,36 +158,38 @@ GitHub repo carries the matching `v1.6.0` tag + release.
|
|
|
154
158
|
|
|
155
159
|
### Deliverables
|
|
156
160
|
|
|
157
|
-
- [
|
|
161
|
+
- [x] PyPI release `docs-cli` 1.6.0 published; project page live
|
|
158
162
|
at `https://pypi.org/project/docs-cli/1.6.0/`.
|
|
159
|
-
- [
|
|
163
|
+
- [x] TestPyPI release `docs-cli-rehearsal` 1.6.0 published as
|
|
160
164
|
the rehearsal artifact at
|
|
161
165
|
`https://test.pypi.org/project/docs-cli-rehearsal/1.6.0/`
|
|
162
166
|
(continues the M9/M11/M13 disambiguated dist-name detour).
|
|
163
|
-
- [
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
- [
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
167
|
+
- [x] `pyproject.toml` `version` confirmed at `1.6.0` (landed at
|
|
168
|
+
M14 Phase 7; `__version__` flows through `importlib.metadata`
|
|
169
|
+
per M12 SoT refactor — verified at Phase 2).
|
|
170
|
+
- [x] `CHANGELOG.md` `## 1.6.0 — UNRELEASED` section dated to
|
|
171
|
+
`## 1.6.0 — 2026-06-03`; surrounding body re-verified
|
|
172
|
+
accurate (stale lead-in line dropped at Phase 4).
|
|
173
|
+
- [x] `v1.6.0` git tag pushed; GitHub release created with notes
|
|
174
|
+
sourced from the CHANGELOG `## 1.6.0` section (the closeout
|
|
175
|
+
git sequence, at commit `95f23a6`).
|
|
176
|
+
- [x] `docs/status.md`: M14 + M15 + M17 rows finalised; "Current
|
|
171
177
|
milestone" + "Next action" rewritten post-publish.
|
|
172
|
-
- [
|
|
178
|
+
- [x] `docs/plan.md`: M14 + M15 + M17 rows finalised; Sequencing
|
|
173
179
|
timeline grew the publish line.
|
|
174
|
-
- [
|
|
180
|
+
- [x] `docs/m17-pypi-publish.md` (this file): Phase Checklist
|
|
175
181
|
ticked; milestone-completion summary appended; lifecycle
|
|
176
|
-
archived via `docs archive
|
|
177
|
-
- [
|
|
182
|
+
archived via `docs archive` to `archive/2026-06-03/`.
|
|
183
|
+
- [x] `docs/m17-pypi-publish-impl.md`: per-phase log entries +
|
|
178
184
|
final milestone-completion summary; stays `Lifecycle:
|
|
179
185
|
active` after milestone-doc archive (per the
|
|
180
186
|
M8/M9/M10/M11/M13 pattern).
|
|
181
|
-
- [
|
|
187
|
+
- [x] `docs/m14-robustness-agent-native.md` +
|
|
182
188
|
`docs/m15-agent-native-authoring.md` (and their impl logs)
|
|
183
|
-
archived as part of the M17 closeout
|
|
184
|
-
at root by M18's Phase-9 sweep
|
|
185
|
-
(now resolved — see Decisions).
|
|
186
|
-
- [
|
|
189
|
+
archived as part of the M17 closeout to `archive/2026-06-03/`
|
|
190
|
+
— they were left LIVE at root by M18's Phase-9 sweep
|
|
191
|
+
"awaiting the M17 publish" (now resolved — see Decisions).
|
|
192
|
+
- [x] `docs/INDEX.md` + `tests/fixtures/expected/docs-INDEX.md`
|
|
187
193
|
regenerated in lockstep.
|
|
188
194
|
|
|
189
195
|
## Phase Checklist
|
|
@@ -191,31 +197,33 @@ GitHub repo carries the matching `v1.6.0` tag + release.
|
|
|
191
197
|
M17 has no TDD code phases — it is an operational milestone. The
|
|
192
198
|
runbook's sections are the phases (mirrors M9/M11/M13 exactly):
|
|
193
199
|
|
|
194
|
-
- [
|
|
200
|
+
- [x] Operator one-time prep — session-verifiable state captured
|
|
195
201
|
at M17 start (`~/.pypirc` intact mode 600; PyPI `docs-cli`
|
|
196
202
|
at 1.5.0, 1.6.0 slot free; TestPyPI `docs-cli` squatter
|
|
197
|
-
status re-checked
|
|
198
|
-
1.6.0 slot free; twine +
|
|
199
|
-
|
|
203
|
+
status re-checked — still parked; TestPyPI
|
|
204
|
+
`docs-cli-rehearsal` at 1.5.0, 1.6.0 slot free; twine +
|
|
205
|
+
build tool versions ready).
|
|
206
|
+
- [x] Pre-publish prep — versions verified `1.6.0` (M14 Phase 7
|
|
200
207
|
landed `pyproject.toml`; M12 SoT refactor flows
|
|
201
208
|
`__version__` through `importlib.metadata`), CHANGELOG
|
|
202
209
|
header `## 1.6.0 — UNRELEASED`, tree at the M17 setup
|
|
203
|
-
commit, quality gate green tree-wide, fresh
|
|
204
|
-
rebuilt (clearing the stale 1.5.0 `dist/`),
|
|
205
|
-
smoke + M14 + M15 headline contracts
|
|
206
|
-
wheel.
|
|
207
|
-
- [
|
|
210
|
+
commit, quality gate green tree-wide (510 passed), fresh
|
|
211
|
+
artefacts rebuilt (clearing the stale 1.5.0 `dist/`),
|
|
212
|
+
local-install smoke + all 7 M14 + M15 headline contracts
|
|
213
|
+
verified against the wheel.
|
|
214
|
+
- [x] TestPyPI rehearsal — uploaded as `docs-cli-rehearsal==1.6.0`;
|
|
208
215
|
throwaway-venv install from TestPyPI succeeded; full smoke
|
|
209
216
|
including the M14 + M15 headline contracts passed against
|
|
210
217
|
the TestPyPI-served wheel (with the known-expected
|
|
211
218
|
`docs --version` → `0.0.0+local` rehearsal-name caveat).
|
|
212
|
-
- [
|
|
219
|
+
- [x] Real PyPI publish — `docs-cli==1.6.0` LIVE on PyPI; both
|
|
213
220
|
artefacts twine-check PASS; upload PASS; chain-of-custody
|
|
214
221
|
bit-perfect (PyPI-served wheel sha256 byte-identical to
|
|
215
|
-
local Phase 4 build); throwaway-venv install
|
|
216
|
-
succeeded; full smoke +
|
|
217
|
-
against the PyPI-served
|
|
218
|
-
|
|
222
|
+
local Phase 4 build, `b0822709…`); throwaway-venv install
|
|
223
|
+
from PyPI succeeded (`docs 1.6.0`); full smoke + all 7
|
|
224
|
+
M14 + M15 headline contracts PASS against the PyPI-served
|
|
225
|
+
wheel.
|
|
226
|
+
- [x] Post-release — `m17/milestone-setup` ff-merged into `main`
|
|
219
227
|
and pushed; annotated `v1.6.0` tag pushed to `origin`;
|
|
220
228
|
GitHub release live with notes sourced from `## 1.6.0`; doc
|
|
221
229
|
closeouts (plan/status/INDEX + dogfood snapshot + the
|
|
@@ -340,62 +348,126 @@ M15 headline contracts (see Success Criteria).
|
|
|
340
348
|
|
|
341
349
|
M17 is complete when:
|
|
342
350
|
|
|
343
|
-
- [
|
|
351
|
+
- [x] `pip install docs-cli==1.6.0` works from PyPI on a clean
|
|
344
352
|
host with Python 3.11+ and produces a working `docs`
|
|
345
|
-
command.
|
|
346
|
-
-
|
|
347
|
-
|
|
348
|
-
- [
|
|
353
|
+
command. (Verified: fresh `/tmp/docs-pypi-served-venv`;
|
|
354
|
+
`pip install docs-cli==1.6.0` succeeded; `docs` drives the
|
|
355
|
+
full verb surface.)
|
|
356
|
+
- [x] `docs --version` from the PyPI-installed wheel prints
|
|
357
|
+
`docs 1.6.0`. (Verified against the PyPI-served wheel.)
|
|
358
|
+
- [x] **M14 contract — `docs mv` is all-or-nothing:** a malformed
|
|
349
359
|
sibling aborts with exit 2, leaving the source in place,
|
|
350
360
|
the destination absent, and every referring `Related:` edge
|
|
351
361
|
+ the INDEX untouched (re-verified against the published
|
|
352
362
|
artefact, not just the local build).
|
|
353
|
-
- [
|
|
363
|
+
- [x] **M14 contract — `docs new` strict-root refusal:** outside
|
|
354
364
|
any `.docs.toml` root (no `--root`) it refuses with exit 2
|
|
355
365
|
and never writes to cwd (re-verified against the
|
|
356
366
|
PyPI-served wheel).
|
|
357
|
-
- [
|
|
367
|
+
- [x] **M14 contract — non-interactive `docs archive --cascade`:**
|
|
358
368
|
`--cascade` archives the one-hop `pairs-with`/`child-of`
|
|
359
369
|
set with no prompt; `--cascade-dry-run` previews and writes
|
|
360
370
|
nothing (re-verified against the PyPI-served wheel).
|
|
361
|
-
- [
|
|
371
|
+
- [x] **M14 contract — four-verb exclude-honouring reindex:**
|
|
362
372
|
`docs touch` (and `archive`/`mv`/`project rename`) over a
|
|
363
373
|
tree whose `[exclude]` set holds a malformed file stamps
|
|
364
374
|
the dates *and* refreshes the INDEX cleanly, leaving the
|
|
365
375
|
excluded file unindexed (re-verified against the PyPI-served
|
|
366
376
|
wheel).
|
|
367
|
-
- [
|
|
377
|
+
- [x] **M15 contract — `docs project set`:** reassigns one doc's
|
|
368
378
|
`Project:` atomically; `--new-project` guards typos (a
|
|
369
379
|
value new to the tree refuses with exit 2 + did-you-mean);
|
|
370
380
|
archived docs untouched (re-verified against the PyPI-served
|
|
371
381
|
wheel).
|
|
372
|
-
- [
|
|
382
|
+
- [x] **M15 contract — single-file `docs stamp`:** stamps a valid
|
|
373
383
|
metadata block onto a raw file an agent already wrote
|
|
374
384
|
(title from H1, role/project from flags or `.docs.toml`,
|
|
375
385
|
`Lifecycle: draft`); re-stamping is a no-op bar `Updated:`
|
|
376
386
|
(re-verified against the PyPI-served wheel).
|
|
377
|
-
- [
|
|
387
|
+
- [x] **M15 contract — `--body-from` real-frontmatter detector:**
|
|
378
388
|
`docs new --body-from` accepts a body whose prose contains
|
|
379
389
|
`Reason:`/`Plan:` lines yet still refuses a whole
|
|
380
390
|
doc-with-frontmatter body (a `---` fence or a ≥2
|
|
381
391
|
`{Lifecycle, Role, Updated}` adjacent cluster) (re-verified
|
|
382
392
|
against the PyPI-served wheel).
|
|
383
|
-
- [
|
|
393
|
+
- [x] `docs install-skill` from the PyPI-installed wheel places a
|
|
384
394
|
host-correct skill that drives the verbs identically to the
|
|
385
395
|
in-repo install; bundled references carry no repo-relative
|
|
386
|
-
`../` links.
|
|
387
|
-
-
|
|
396
|
+
`../` links. (Verified against the PyPI-served wheel:
|
|
397
|
+
byte-identical to `src/docs_cli/skill`, re-run no-op exit 0,
|
|
398
|
+
`--symlink` exit 2, no `](../` links.)
|
|
399
|
+
- [x] The `v1.6.0` tag and GitHub release exist at
|
|
388
400
|
`https://github.com/ArtRichards/docs-cli/releases/tag/v1.6.0`.
|
|
389
|
-
|
|
390
|
-
|
|
401
|
+
(The annotated `v1.6.0` tag at `95f23a6` + the GitHub
|
|
402
|
+
release are the closeout git sequence the conductor runs
|
|
403
|
+
immediately after the M17 closeout commit.)
|
|
404
|
+
- [x] All Phase Checklist items above are ticked.
|
|
405
|
+
- [x] `docs/status.md` reflects M14 + M15 + M17 as Complete with
|
|
391
406
|
the actual publish date.
|
|
392
|
-
- [
|
|
407
|
+
- [x] `docs/m17-pypi-publish-impl.md` carries a
|
|
393
408
|
milestone-completion summary with the published version
|
|
394
409
|
(`1.6.0` — assuming no TestPyPI-surfaced regression forces a
|
|
395
410
|
`1.6.x` bump), wheel + sdist sha256, publish timestamp, and
|
|
396
411
|
any deviations from the runbook recorded for v1.7+
|
|
397
412
|
reference.
|
|
398
413
|
|
|
414
|
+
## Milestone-completion summary
|
|
415
|
+
|
|
416
|
+
**M17 complete — `docs-cli==1.6.0` shipped to PyPI 2026-06-03**,
|
|
417
|
+
batching **M14 + M15** into one public release (as M9 batched
|
|
418
|
+
M6+M7+M8). Driven end-to-end as a fully-autonomous run walking
|
|
419
|
+
[release-runbook.md](release-runbook.md) directly (no TDD code
|
|
420
|
+
phases). The full per-phase record + deviation prose lives in
|
|
421
|
+
[m17-pypi-publish-impl.md](m17-pypi-publish-impl.md)'s
|
|
422
|
+
milestone-completion summary.
|
|
423
|
+
|
|
424
|
+
- **PyPI:** https://pypi.org/project/docs-cli/1.6.0/ ·
|
|
425
|
+
**TestPyPI rehearsal:**
|
|
426
|
+
https://test.pypi.org/project/docs-cli-rehearsal/1.6.0/
|
|
427
|
+
- **Published artefact sha256:**
|
|
428
|
+
- wheel `docs_cli-1.6.0-py3-none-any.whl`:
|
|
429
|
+
`b0822709ec297223efeba9945a44f624b6f9d3edefaaff02a42abc31b499d45c`
|
|
430
|
+
- sdist `docs_cli-1.6.0.tar.gz`:
|
|
431
|
+
`04175cda15694fbc90a263da31cac752b1f58aee377dd029eecf3a3b5e1f6d88`
|
|
432
|
+
- **Chain-of-custody:** PyPI-served wheel sha256 byte-identical
|
|
433
|
+
to the local Phase-4 build — **bit-perfect** (matches M11/M13).
|
|
434
|
+
- **Quality gate at publish:** 510 passed; ruff / ruff format /
|
|
435
|
+
mypy clean tree-wide; `docs check docs/` exit 0;
|
|
436
|
+
`docs index --root docs/ --dry-run` idempotent.
|
|
437
|
+
- **Smoke + all seven M14 + M15 headline contracts** verified
|
|
438
|
+
against the PyPI-served wheel: `docs --version` → `docs 1.6.0`;
|
|
439
|
+
`install-skill` byte-identical / no-op / `--symlink` exit 2;
|
|
440
|
+
M14 `mv` all-or-nothing; M14 `new` strict-root refusal; M14
|
|
441
|
+
non-interactive `archive --cascade` (+ `--cascade-dry-run`
|
|
442
|
+
writes nothing); M14 four-verb exclude-honouring reindex; M15
|
|
443
|
+
`project set` (atomic + typo guard + did-you-mean +
|
|
444
|
+
archived-untouched); M15 single-file `stamp` (title-from-H1,
|
|
445
|
+
draft, re-stamp no-op bar `Updated:`); M15 `--body-from`
|
|
446
|
+
real-frontmatter detector.
|
|
447
|
+
- **`v1.6.0`** annotated tag at `95f23a6` (the Phase-4
|
|
448
|
+
dated-CHANGELOG commit whose tree matches PyPI); GitHub release
|
|
449
|
+
live with notes sourced from the `## 1.6.0` CHANGELOG section.
|
|
450
|
+
|
|
451
|
+
### Deviations (recorded for v1.7+)
|
|
452
|
+
|
|
453
|
+
1. **TestPyPI rehearsal wheel prints `docs 0.0.0+local`, not
|
|
454
|
+
`docs 1.6.0`** — known-expected since the M12 `importlib.metadata`
|
|
455
|
+
SoT refactor (the rehearsal installs as `docs-cli-rehearsal`,
|
|
456
|
+
so the lookup misses and falls back). Not a regression — the
|
|
457
|
+
real version string is proven by the canonical-name local
|
|
458
|
+
wheel (Phase 2) and the PyPI wheel (Phase 4).
|
|
459
|
+
2. **`CHANGELOG.md` is not in the sdist** — known-expected since
|
|
460
|
+
M13. At M17 the **wheel** sha was byte-identical across
|
|
461
|
+
Phase 2 ≡ Phase 4 (`src/` unchanged → reproducible), while the
|
|
462
|
+
**sdist** sha moved (`da1a60b8…` → `04175cda…`) ONLY because
|
|
463
|
+
`docs/` evolved between the two builds (the impl-log
|
|
464
|
+
Phase-2/3 commit) — not because of the Phase-4 CHANGELOG date
|
|
465
|
+
edit. Recorded so the moved sdist sha is not mistaken for a
|
|
466
|
+
regression.
|
|
467
|
+
|
|
468
|
+
No `1.6.x` bump was forced. Token re-scope to project-`docs-cli`
|
|
469
|
+
continues to roll forward as the M9 open follow-on.
|
|
470
|
+
|
|
399
471
|
## OPEN QUESTIONS
|
|
400
472
|
|
|
401
473
|
None (Q1, Q2 resolved by the operator at Step 0 — see Decisions).
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Lifecycle: active
|
|
4
4
|
Role: spec
|
|
5
5
|
Project: docs
|
|
6
|
-
Updated: 2026-06-
|
|
6
|
+
Updated: 2026-06-12
|
|
7
7
|
|
|
8
8
|
Related:
|
|
9
9
|
- pairs-with: convention.md
|
|
@@ -262,6 +262,12 @@ Query view.
|
|
|
262
262
|
> **`docs list --status` was renamed `docs list --lifecycle` at
|
|
263
263
|
> M7. The breaking-rename has no backward-compat alias.**
|
|
264
264
|
|
|
265
|
+
> **`[check] stale_days` does NOT affect `docs list --stale` (M19 — Q6).**
|
|
266
|
+
> The `.docs.toml [check] stale_days` config key is scoped to **check**
|
|
267
|
+
> semantics only. `docs list` keeps `--stale` as an explicit filter: bare
|
|
268
|
+
> `docs list` (no `--stale`) lists everything regardless of any configured
|
|
269
|
+
> `stale_days`, and an explicit `docs list --stale N` filters by N as always.
|
|
270
|
+
|
|
265
271
|
Exits 0.
|
|
266
272
|
|
|
267
273
|
### `docs check [DIR] [--stale N] [--json] [--exclude PATTERN]`
|
|
@@ -274,7 +280,7 @@ Validate the tree. Reports (and exits nonzero on) any of:
|
|
|
274
280
|
- Structural breakage: a missing H1. (A malformed line inside the metadata block ends the block early rather than raising; its effect surfaces as a missing required field, not as a separate finding.)
|
|
275
281
|
- Lifecycle/location mismatch (`Lifecycle: archived` outside archive subtree, or any other lifecycle inside) — rule `status-drift` (stable rule id from M3).
|
|
276
282
|
- `Related:` paths that don't resolve to a file under the docs root.
|
|
277
|
-
- (With
|
|
283
|
+
- (With a stale window — see **Stale-window resolution** below) `Lifecycle: active` docs with `Updated:` more than N days ago.
|
|
278
284
|
- (M7 — F1) A missing `Role:` line whose value is resolvable from an H1
|
|
279
285
|
trailing-word signal or a section-header pattern produces a
|
|
280
286
|
medium-confidence inference — `severity: warning`, rule
|
|
@@ -303,7 +309,42 @@ Exit codes:
|
|
|
303
309
|
- 1 — warnings only (stale docs; medium-confidence inferences; unknown-field warnings).
|
|
304
310
|
- 2 — errors (missing required fields, invalid vocab, malformed structure, lifecycle/location drift, broken refs).
|
|
305
311
|
|
|
306
|
-
|
|
312
|
+
**Stale-window resolution (M19 — D2).** The stale window the `stale` rule
|
|
313
|
+
applies is resolved as **CLI `--stale` > `[check] stale_days` > unset**:
|
|
314
|
+
|
|
315
|
+
- An explicit CLI `--stale N` always wins — including `--stale 0`, which is
|
|
316
|
+
honoured as given (flag every active doc not updated *today*), not treated
|
|
317
|
+
as "unset".
|
|
318
|
+
- When `--stale` is absent and the docs root's `.docs.toml` carries a
|
|
319
|
+
`[check] stale_days = N` (see `convention.md` › *Per-tree `[check]`
|
|
320
|
+
config*), that value supplies the window. A configured `stale_days`
|
|
321
|
+
therefore makes **bare `docs check`** (with no `--stale` flag) apply the
|
|
322
|
+
stale rule — setting the key is the operator's explicit per-tree opt-in.
|
|
323
|
+
- When neither is present, behaviour is exactly today's: no stale window, so
|
|
324
|
+
the `stale` rule never fires. Trees with no `[check]` section are
|
|
325
|
+
byte-for-byte unchanged.
|
|
326
|
+
|
|
327
|
+
This resolution is shared by `docs check` and `docs touch --check`;
|
|
328
|
+
`docs list --stale` is **not** a consumer (see `docs list` below).
|
|
329
|
+
|
|
330
|
+
**Threshold provenance.** The `stale` finding's message names where the
|
|
331
|
+
threshold came from, so the operator knows which knob to turn. The
|
|
332
|
+
parenthetical extends as follows (the rule id `stale`, severity `warning`,
|
|
333
|
+
and exit code 1 are unchanged — only the message text):
|
|
334
|
+
|
|
335
|
+
- config-sourced (the window came from `[check] stale_days`):
|
|
336
|
+
`(stale threshold N, set in .docs.toml [check] stale_days)`;
|
|
337
|
+
- CLI-sourced (the window came from `--stale N`):
|
|
338
|
+
`(stale threshold N, via --stale)`.
|
|
339
|
+
|
|
340
|
+
(`docs touch --check` inherits this resolution and provenance: config-sourced
|
|
341
|
+
when no `--stale` is forwarded, CLI-sourced when `--stale N` is.) Internally,
|
|
342
|
+
a `stale_source` (`"config"` / `"cli"` / `None`) is threaded alongside the
|
|
343
|
+
resolved window — a small `resolve_stale(cli_stale, config.stale_days)`
|
|
344
|
+
helper, shared by both consumers, returns the `(window, source)` pair so the
|
|
345
|
+
message is assembled in one place.
|
|
346
|
+
|
|
347
|
+
### `docs touch <file>... [--check [--stale N]]`
|
|
307
348
|
|
|
308
349
|
Bump `Updated:` to today in one or more docs. Accepts one or more
|
|
309
350
|
positional file paths. INDEX regenerated **exactly once** at end of
|
|
@@ -341,6 +382,46 @@ rename` (M14 — A6, four-site).
|
|
|
341
382
|
one `docs: touched <path>` per file on stderr (gated on `not
|
|
342
383
|
--quiet`).
|
|
343
384
|
|
|
385
|
+
**`--check [--stale N]` — touch-then-validate in one invocation (M19 — D1).**
|
|
386
|
+
`--check` folds the existing `docs check` machinery into `docs touch` so
|
|
387
|
+
the common post-edit loop (`docs touch <files>` → `docs index .` →
|
|
388
|
+
`docs check . --stale N`) collapses to a single command. When `--check`
|
|
389
|
+
is set, *after* `touch`'s end-of-batch INDEX refresh runs, `touch`
|
|
390
|
+
invokes the same **tree-wide** `check_tree` over the resolved docs root
|
|
391
|
+
that bare `docs check` runs — it *replaces* the `docs check .` step of
|
|
392
|
+
the loop, not a touched-files-only subset.
|
|
393
|
+
|
|
394
|
+
- **Combined exit code = `max(touch, check)` with a touch-fail
|
|
395
|
+
short-circuit (M19 — Q1).** Touch runs first. If touch itself fails
|
|
396
|
+
(exit 1 — missing/bad path; or exit 2 — outside-root refusal /
|
|
397
|
+
INDEX-refresh failure) the check does **not** run and touch's code is
|
|
398
|
+
returned (a failed touch left nothing meaningful to validate). If touch
|
|
399
|
+
succeeds (0), the check runs and its 0/1/2 (clean / warnings-only /
|
|
400
|
+
errors) becomes the command's exit code.
|
|
401
|
+
- **`--stale N` is forwarded to the check (M19 — Q3 / D2).** With
|
|
402
|
+
`--check`, `--stale N` supplies the check's stale window; when `--stale`
|
|
403
|
+
is absent, the `[check] stale_days` config default applies (see
|
|
404
|
+
`docs check` below for the resolution rule). `--stale` **without**
|
|
405
|
+
`--check` is a hard error — exit 2 with
|
|
406
|
+
`docs: touch: --stale requires --check` on stderr; the file is left
|
|
407
|
+
byte-unchanged and no reindex runs.
|
|
408
|
+
- **`--dry-run --check` previews the touch and checks the un-mutated tree
|
|
409
|
+
(M19 — Q4).** Under `--dry-run` nothing is written and no INDEX refresh
|
|
410
|
+
runs, so the check walks the **on-disk (un-mutated)** tree directly. A
|
|
411
|
+
doc the dry-run *would* refresh may therefore still read as stale, since
|
|
412
|
+
dry-run did not bump its `Updated:`.
|
|
413
|
+
- **`--quiet` gates only `touch`'s own stderr lines (M19 — Q-E).** The
|
|
414
|
+
`would touch` / `touched` success/preview lines are suppressed under
|
|
415
|
+
`--quiet`; the check's findings, which print on **stdout**, are **never**
|
|
416
|
+
suppressed by `--quiet`.
|
|
417
|
+
- **The check honours the same `[exclude]` / `.docsignore` predicate as
|
|
418
|
+
`touch`'s reindex (M19 — Q-F).** The tree-wide check applies the
|
|
419
|
+
persistent layered exclusion predicate (`.docs.toml [exclude]` + a root
|
|
420
|
+
`.docsignore`) — the same one `touch`'s end-of-batch reindex and bare
|
|
421
|
+
`docs check` use. `touch` has no `--exclude` flag of its own. A malformed
|
|
422
|
+
*excluded* file therefore never fails the check (just as it never fails
|
|
423
|
+
the reindex).
|
|
424
|
+
|
|
344
425
|
Multi-root invocation (`docs touch a.md b.md` where `a.md` and `b.md`
|
|
345
426
|
resolve to different docs roots) is **undefined behaviour and out of
|
|
346
427
|
M10 scope** — the validate-all-first pass refuses with exit 1 + an
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Lifecycle: active
|
|
4
4
|
Role: spec
|
|
5
5
|
Project: docs
|
|
6
|
-
Updated: 2026-06-
|
|
6
|
+
Updated: 2026-06-12
|
|
7
7
|
|
|
8
8
|
Related:
|
|
9
9
|
- pairs-with: cli.md
|
|
@@ -210,6 +210,31 @@ role_suffixes = { spec_v2 = "spec" } # F1: per-tree custom suffix mapping
|
|
|
210
210
|
- `role_suffixes` — extends the built-in filename-suffix → role
|
|
211
211
|
map with per-tree entries.
|
|
212
212
|
|
|
213
|
+
### Per-tree `[check]` config (M19 — D2)
|
|
214
|
+
|
|
215
|
+
A docs root's `.docs.toml` may carry a `[check]` section to set a
|
|
216
|
+
per-tree default stale window for validation:
|
|
217
|
+
|
|
218
|
+
```toml
|
|
219
|
+
[check]
|
|
220
|
+
stale_days = 30 # M19: default --stale window for this tree
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
- `stale_days` — an **integer**. When set, it supplies the
|
|
224
|
+
stale window to `docs check` and `docs touch --check` whenever no
|
|
225
|
+
explicit CLI `--stale` is given — a configured `stale_days` makes bare
|
|
226
|
+
`docs check` apply the `stale` rule with this window (the operator's
|
|
227
|
+
per-tree opt-in). An explicit `--stale N` on the command line always
|
|
228
|
+
overrides it. **Absent** → no default stale window (today's behaviour:
|
|
229
|
+
the `stale` rule fires only under an explicit `--stale`). The key is
|
|
230
|
+
scoped to **check** semantics — it does **not** feed `docs list --stale`,
|
|
231
|
+
which stays an explicit filter. A **non-integer** value (e.g. the TOML
|
|
232
|
+
string `stale_days = "14"`, or `stale_days = true`) is **refused** at
|
|
233
|
+
config load — `docs` exits 2 with `malformed .docs.toml: [check]
|
|
234
|
+
stale_days must be an integer`, rather than crashing in the stale
|
|
235
|
+
comparison. Negative integers are honoured as given (a negative window
|
|
236
|
+
flags every active doc, mirroring `--stale 0`).
|
|
237
|
+
|
|
213
238
|
## Relationship verbs
|
|
214
239
|
|
|
215
240
|
`Related:` entries use the form `<verb>: <path>`. Verbs are free-form, but a small set is conventional:
|