documentation-engine 0.2.0__tar.gz → 0.3.1__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.
Files changed (141) hide show
  1. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/.github/ISSUE_TEMPLATE/adoption-finding.yml +1 -1
  2. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/.github/ISSUE_TEMPLATE/core-bug.yml +1 -1
  3. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/.github/ISSUE_TEMPLATE/docs-pattern-request.yml +1 -1
  4. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/.github/ISSUE_TEMPLATE/runtime-report.yml +1 -1
  5. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/.github/PULL_REQUEST_TEMPLATE.md +18 -7
  6. documentation_engine-0.3.1/.github/workflows/ci.yml +142 -0
  7. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/.gitignore +1 -1
  8. documentation_engine-0.3.1/AGENTS.md +116 -0
  9. documentation_engine-0.3.1/CHANGELOG.md +206 -0
  10. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/CLAUDE.md +4 -7
  11. documentation_engine-0.3.1/CONTRIBUTING.md +134 -0
  12. documentation_engine-0.3.1/PKG-INFO +853 -0
  13. documentation_engine-0.3.1/README.md +836 -0
  14. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/SECURITY.md +6 -6
  15. documentation_engine-0.3.1/docs/README.md +69 -0
  16. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/docs/adopter-reporting.md +65 -0
  17. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/docs/adoption.md +66 -31
  18. documentation_engine-0.3.1/docs/agent-contract.md +754 -0
  19. documentation_engine-0.3.1/docs/architecture.md +563 -0
  20. documentation_engine-0.2.0/docs/paradigmarium-integration.md → documentation_engine-0.3.1/docs/client-integration.md +16 -18
  21. documentation_engine-0.3.1/docs/context-delivery.md +52 -0
  22. documentation_engine-0.3.1/docs/delivery-traceability.md +107 -0
  23. documentation_engine-0.3.1/docs/document-profiles.md +76 -0
  24. documentation_engine-0.3.1/docs/execution-admission.md +147 -0
  25. documentation_engine-0.3.1/docs/execution-handoff.md +114 -0
  26. documentation_engine-0.3.1/docs/federation.md +182 -0
  27. documentation_engine-0.3.1/docs/graph-health.md +56 -0
  28. documentation_engine-0.3.1/docs/idea-intake.md +117 -0
  29. documentation_engine-0.3.1/docs/knowledge-promotion.md +72 -0
  30. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/docs/local-state-safety.md +1 -1
  31. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/docs/mcp-adapter.md +60 -6
  32. documentation_engine-0.3.1/docs/metadata-inventory.md +52 -0
  33. documentation_engine-0.3.1/docs/program-plans.md +128 -0
  34. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/docs/setup-guide.md +113 -44
  35. documentation_engine-0.3.1/docs/workspace-sources.md +234 -0
  36. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/docs/workstream-branching.md +16 -0
  37. documentation_engine-0.3.1/docs/workstream-evidence.md +132 -0
  38. documentation_engine-0.3.1/docs/workstream-lifecycle.md +103 -0
  39. documentation_engine-0.3.1/examples/execution-admission-request.json +44 -0
  40. documentation_engine-0.3.1/examples/execution-result.json +11 -0
  41. documentation_engine-0.3.1/examples/idea-intake-request.json +22 -0
  42. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/examples/workstream-branch-template.md +7 -0
  43. documentation_engine-0.3.1/examples/workstream-record.json +96 -0
  44. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/src/docsystem/__init__.py +1 -1
  45. documentation_engine-0.3.1/src/docsystem/admission.py +430 -0
  46. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/src/docsystem/catalog.py +21 -3
  47. documentation_engine-0.3.1/src/docsystem/change_plan.py +292 -0
  48. documentation_engine-0.3.1/src/docsystem/cli.py +9240 -0
  49. documentation_engine-0.3.1/src/docsystem/config.py +1371 -0
  50. documentation_engine-0.3.1/src/docsystem/delivery.py +308 -0
  51. documentation_engine-0.3.1/src/docsystem/execution.py +282 -0
  52. documentation_engine-0.3.1/src/docsystem/federated_projection.py +799 -0
  53. documentation_engine-0.3.1/src/docsystem/federation.py +502 -0
  54. documentation_engine-0.3.1/src/docsystem/graph.py +771 -0
  55. documentation_engine-0.3.1/src/docsystem/health.py +370 -0
  56. documentation_engine-0.3.1/src/docsystem/intake.py +290 -0
  57. documentation_engine-0.3.1/src/docsystem/inventory.py +227 -0
  58. documentation_engine-0.3.1/src/docsystem/journal.py +1661 -0
  59. documentation_engine-0.3.1/src/docsystem/lifecycle.py +252 -0
  60. documentation_engine-0.3.1/src/docsystem/maintenance.py +265 -0
  61. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/src/docsystem/mcp_server.py +503 -4
  62. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/src/docsystem/metadata.py +92 -9
  63. documentation_engine-0.3.1/src/docsystem/profiles.py +216 -0
  64. documentation_engine-0.3.1/src/docsystem/program_plan.py +712 -0
  65. documentation_engine-0.3.1/src/docsystem/projection.py +1132 -0
  66. documentation_engine-0.3.1/src/docsystem/promotion.py +296 -0
  67. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/src/docsystem/readiness.py +1 -1
  68. documentation_engine-0.3.1/src/docsystem/shared_finish.py +138 -0
  69. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/src/docsystem/workspace.py +105 -35
  70. documentation_engine-0.3.1/src/docsystem/workstream.py +490 -0
  71. documentation_engine-0.3.1/tests/test_admission.py +409 -0
  72. documentation_engine-0.3.1/tests/test_change_plan.py +249 -0
  73. documentation_engine-0.3.1/tests/test_change_plan_cli.py +604 -0
  74. documentation_engine-0.3.1/tests/test_cli.py +562 -0
  75. documentation_engine-0.3.1/tests/test_cli_platform.py +122 -0
  76. documentation_engine-0.3.1/tests/test_config.py +1126 -0
  77. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/tests/test_context_cli.py +544 -1
  78. documentation_engine-0.3.1/tests/test_delivery.py +303 -0
  79. documentation_engine-0.3.1/tests/test_execution_handoff.py +577 -0
  80. documentation_engine-0.3.1/tests/test_federated_projection.py +308 -0
  81. documentation_engine-0.3.1/tests/test_federated_write.py +932 -0
  82. documentation_engine-0.3.1/tests/test_federation.py +690 -0
  83. documentation_engine-0.3.1/tests/test_graph.py +580 -0
  84. documentation_engine-0.3.1/tests/test_health.py +150 -0
  85. documentation_engine-0.3.1/tests/test_intake.py +276 -0
  86. documentation_engine-0.3.1/tests/test_inventory.py +176 -0
  87. documentation_engine-0.3.1/tests/test_journal.py +1753 -0
  88. documentation_engine-0.3.1/tests/test_lifecycle.py +438 -0
  89. documentation_engine-0.3.1/tests/test_maintenance.py +1044 -0
  90. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/tests/test_mcp_adapter.py +359 -0
  91. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/tests/test_metadata.py +33 -1
  92. documentation_engine-0.3.1/tests/test_profiles.py +170 -0
  93. documentation_engine-0.3.1/tests/test_program_plan.py +467 -0
  94. documentation_engine-0.3.1/tests/test_promotion.py +261 -0
  95. documentation_engine-0.3.1/tests/test_references_cli.py +275 -0
  96. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/tests/test_release_workflows.py +23 -2
  97. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/tests/test_vertical.py +273 -5
  98. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/tests/test_workspace.py +271 -20
  99. documentation_engine-0.3.1/tests/test_workstream.py +313 -0
  100. documentation_engine-0.2.0/.github/workflows/ci.yml +0 -65
  101. documentation_engine-0.2.0/AGENTS.md +0 -23
  102. documentation_engine-0.2.0/CHANGELOG.md +0 -82
  103. documentation_engine-0.2.0/CONTRIBUTING.md +0 -91
  104. documentation_engine-0.2.0/PKG-INFO +0 -426
  105. documentation_engine-0.2.0/README.md +0 -409
  106. documentation_engine-0.2.0/docs/agent-contract.md +0 -218
  107. documentation_engine-0.2.0/docs/architecture.md +0 -275
  108. documentation_engine-0.2.0/docs/workspace-sources.md +0 -155
  109. documentation_engine-0.2.0/examples/paradigmarium-profile/.docsystem.toml +0 -31
  110. documentation_engine-0.2.0/examples/paradigmarium-profile/README.md +0 -28
  111. documentation_engine-0.2.0/examples/paradigmarium-profile/plan/README.md +0 -14
  112. documentation_engine-0.2.0/examples/paradigmarium-profile/plan/architecture/README.md +0 -10
  113. documentation_engine-0.2.0/examples/paradigmarium-profile/plan/decisions/README.md +0 -9
  114. documentation_engine-0.2.0/src/docsystem/cli.py +0 -2869
  115. documentation_engine-0.2.0/src/docsystem/config.py +0 -216
  116. documentation_engine-0.2.0/src/docsystem/projection.py +0 -609
  117. documentation_engine-0.2.0/tests/test_cli.py +0 -287
  118. documentation_engine-0.2.0/tests/test_config.py +0 -216
  119. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  120. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/.github/copilot-instructions.md +0 -0
  121. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/.github/workflows/release.yml +0 -0
  122. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/LICENSE +0 -0
  123. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/docs/assets/context-reduction.svg +0 -0
  124. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/docs/context-efficiency.md +0 -0
  125. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/docs/releasing.md +0 -0
  126. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/examples/generic-adopter/.docsystem.toml +0 -0
  127. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/examples/generic-adopter/README.md +0 -0
  128. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/examples/generic-adopter/plan/README.md +0 -0
  129. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/examples/generic-adopter/plan/design.md +0 -0
  130. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/examples/generic-adopter/plan/review.md +0 -0
  131. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/examples/generic-adopter/plan/templates/document-template.md +0 -0
  132. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/pyproject.toml +0 -0
  133. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/scripts/installed_cli_smoke.sh +0 -0
  134. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/src/docsystem/__main__.py +0 -0
  135. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/src/docsystem/migration.py +0 -0
  136. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/src/docsystem/sections.py +0 -0
  137. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/tests/test_catalog.py +0 -0
  138. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/tests/test_migration.py +0 -0
  139. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/tests/test_readiness.py +0 -0
  140. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/tests/test_sections.py +0 -0
  141. {documentation_engine-0.2.0 → documentation_engine-0.3.1}/uv.lock +0 -0
@@ -30,7 +30,7 @@ body:
30
30
  id: version
31
31
  attributes:
32
32
  label: DocumentationEngine version or commit
33
- placeholder: "0bf364673c55d76d216a3dfe982b0af746f1ab69"
33
+ placeholder: "X.Y.Z or a full commit SHA"
34
34
  validations:
35
35
  required: true
36
36
  - type: dropdown
@@ -31,7 +31,7 @@ body:
31
31
  id: version
32
32
  attributes:
33
33
  label: DocumentationEngine version or commit
34
- placeholder: "0bf364673c55d76d216a3dfe982b0af746f1ab69"
34
+ placeholder: "X.Y.Z or a full commit SHA"
35
35
  validations:
36
36
  required: true
37
37
  - type: dropdown
@@ -30,7 +30,7 @@ body:
30
30
  id: version
31
31
  attributes:
32
32
  label: DocumentationEngine version or commit
33
- placeholder: "0bf364673c55d76d216a3dfe982b0af746f1ab69"
33
+ placeholder: "X.Y.Z or a full commit SHA"
34
34
  validations:
35
35
  required: true
36
36
  - type: dropdown
@@ -31,7 +31,7 @@ body:
31
31
  id: version
32
32
  attributes:
33
33
  label: DocumentationEngine version or commit
34
- placeholder: "0bf364673c55d76d216a3dfe982b0af746f1ab69"
34
+ placeholder: "X.Y.Z or a full commit SHA"
35
35
  validations:
36
36
  required: true
37
37
  - type: dropdown
@@ -4,19 +4,29 @@
4
4
 
5
5
  ## Testing
6
6
 
7
- <!-- Commands run and their result. Use "N/A: <reason>" for anything skipped. -->
7
+ <!--
8
+ Verification level: structural | focused | full
9
+ Risk reason:
10
+ Commands run and results:
11
+ Checks not run: N/A with a reason; do not mark an unrun check as passing.
12
+ See AGENTS.md and CONTRIBUTING.md for the canonical policy.
13
+ -->
8
14
 
9
15
  ```bash
10
- TMPDIR=/tmp TMP=/tmp TEMP=/tmp uv run pytest
11
- TMPDIR=/tmp TMP=/tmp TEMP=/tmp uv run ruff check .
16
+ # Replace with the checks selected for this change.
17
+ git diff --check
12
18
  ```
13
19
 
14
20
  ## Checklist
15
21
 
16
22
  - [ ] This change stays within a single described scope (no unrelated
17
23
  refactors bundled in).
18
- - [ ] `uv run pytest` passes, and configuration-behavior changes have tests.
19
- - [ ] `uv run ruff check .` passes.
24
+ - [ ] The verification level and risk reason are recorded above.
25
+ - [ ] Relevant structural checks, focused tests or the full gate pass; every
26
+ unrun check is marked N/A with a reason.
27
+ - [ ] Configuration-behavior changes include and run configuration tests, or
28
+ this change does not affect configuration behavior.
29
+ - [ ] `git diff --check` passes.
20
30
  - [ ] `uv lock --check` passes, or this change does not touch dependencies
21
31
  (N/A with reason otherwise).
22
32
  - [ ] `./scripts/installed_cli_smoke.sh` passes, or this change does not
@@ -25,7 +35,8 @@ TMPDIR=/tmp TMP=/tmp TEMP=/tmp uv run ruff check .
25
35
  public-contract impact (N/A with reason otherwise).
26
36
  - [ ] The core package (`src/docsystem/`) remains provider-neutral — no
27
37
  Claude-, Copilot- or other agent-specific behavior added there.
28
- - [ ] No private or local generated state is committed (`.docsystem.toml`,
29
- `.docsystem/`, or other adopter-local artifacts).
38
+ - [ ] No private or local generated state is committed (root-local
39
+ `.docsystem.toml`, `.docsystem/`, or other adopter-local artifacts;
40
+ intentional public example fixtures are reviewed separately).
30
41
  - [ ] Executable bits on any added/modified shell scripts are preserved
31
42
  (`git ls-files --stage <script>` shows `100755`).
@@ -0,0 +1,142 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+
8
+ permissions:
9
+ contents: read
10
+
11
+ env:
12
+ TMPDIR: /tmp
13
+ TMP: /tmp
14
+ TEMP: /tmp
15
+
16
+ jobs:
17
+ check:
18
+ runs-on: ubuntu-latest
19
+ steps:
20
+ - uses: actions/checkout@v7
21
+
22
+ - name: Install uv
23
+ uses: astral-sh/setup-uv@v7
24
+ with:
25
+ python-version: "3.12"
26
+
27
+ - name: Run pytest
28
+ run: uv run pytest
29
+
30
+ - name: Run ruff
31
+ run: uv run ruff check .
32
+
33
+ - name: Verify lockfile is current
34
+ run: uv lock --check
35
+
36
+ - name: Installed CLI smoke test
37
+ run: ./scripts/installed_cli_smoke.sh
38
+
39
+ # The smoke test builds and installs a wheel only. The release workflow
40
+ # uploads a wheel *and* an sdist, and an index rejects a distribution
41
+ # whose metadata or long description does not render. Check both
42
+ # artifacts here rather than during an irreversible upload.
43
+ - name: Build and check both distributions
44
+ run: |
45
+ dist_dir="$(mktemp -d)/dist"
46
+ uv build --out-dir "$dist_dir"
47
+ version="$(uv run python -c 'import docsystem; print(docsystem.__version__)')"
48
+ test -f "$dist_dir/documentation_engine-${version}-py3-none-any.whl"
49
+ test -f "$dist_dir/documentation_engine-${version}.tar.gz"
50
+ uvx --from 'twine>=6,<7' twine check --strict "$dist_dir"/*
51
+
52
+ # Dogfooding: walk the documented adoption sequence end-to-end against
53
+ # the public example profile, on a scratch copy so the fixture stays
54
+ # byte-identical in the repository.
55
+ - name: Example profile adoption walkthrough
56
+ run: |
57
+ profile="$(mktemp -d)/profile"
58
+ cp -r examples/generic-adopter "$profile"
59
+ uv run python -m docsystem readiness "$profile" --json
60
+ uv run python -m docsystem migrate "$profile" --apply
61
+ uv run python -m docsystem index "$profile" --write
62
+ uv run python -m docsystem readiness "$profile" --json
63
+ uv run python -m docsystem context DOC-002 "$profile" --depth 1
64
+ uv run python -m docsystem context DOC-002 "$profile" --depth 1 --json
65
+ uv run python -m docsystem changes "$profile" --json
66
+
67
+ windows:
68
+ runs-on: windows-latest
69
+ env:
70
+ PYTHONUTF8: "0"
71
+ steps:
72
+ - uses: actions/checkout@v7
73
+
74
+ - name: Install uv
75
+ uses: astral-sh/setup-uv@v7
76
+ with:
77
+ python-version: "3.12"
78
+
79
+ - name: Run Windows CLI tests without Python UTF-8 mode
80
+ shell: pwsh
81
+ run: |
82
+ $env:TMPDIR = $env:RUNNER_TEMP
83
+ $env:TMP = $env:RUNNER_TEMP
84
+ $env:TEMP = $env:RUNNER_TEMP
85
+ uv run pytest tests/test_cli.py tests/test_cli_platform.py `
86
+ tests/test_context_cli.py tests/test_mcp_adapter.py tests/test_readiness.py
87
+
88
+ - name: Installed CLI UTF-8 PowerShell smoke
89
+ shell: pwsh
90
+ run: |
91
+ $env:TMPDIR = $env:RUNNER_TEMP
92
+ $env:TMP = $env:RUNNER_TEMP
93
+ $env:TEMP = $env:RUNNER_TEMP
94
+ Remove-Item Env:PYTHONIOENCODING -ErrorAction SilentlyContinue
95
+ $dist = Join-Path $env:RUNNER_TEMP "docsystem-dist"
96
+ $venv = Join-Path $env:RUNNER_TEMP "docsystem-venv"
97
+ $project = Join-Path $env:RUNNER_TEMP "docsystem-unicode-project"
98
+ $output = Join-Path $env:RUNNER_TEMP "context.json"
99
+ $errors = Join-Path $env:RUNNER_TEMP "diagnostics.txt"
100
+
101
+ uv build --wheel --out-dir $dist
102
+ $wheel = Get-ChildItem $dist -Filter "documentation_engine-*.whl" -File
103
+ if ($wheel.Count -ne 1) { throw "expected exactly one wheel" }
104
+ uv venv $venv --python 3.12
105
+ $python = Join-Path $venv "Scripts/python.exe"
106
+ $docsystem = Join-Path $venv "Scripts/docsystem.exe"
107
+ uv pip install --python $python $wheel.FullName
108
+
109
+ $expectedVersion = (& $python -c "import docsystem; print(docsystem.__version__)").Trim()
110
+ $reportedVersion = (& $docsystem --version).Trim()
111
+ if ($reportedVersion -ne "docsystem $expectedVersion") {
112
+ throw "unexpected version output: $reportedVersion"
113
+ }
114
+
115
+ & $docsystem init $project
116
+ $architecture = Join-Path $project "plan/architecture"
117
+ New-Item -ItemType Directory -Path $architecture -Force | Out-Null
118
+ @"
119
+ ---
120
+ id: DOC-001
121
+ revision: 1
122
+ ---
123
+ # Привет
124
+ ## Резюме
125
+ Исходный текст остаётся доступен полностью.
126
+ "@ | Set-Content -Encoding utf8 (Join-Path $architecture "README.md")
127
+
128
+ & $docsystem context DOC-001 $project --json |
129
+ Set-Content -Encoding utf8 $output
130
+ if ($LASTEXITCODE -ne 0) { throw "context failed with $LASTEXITCODE" }
131
+ $payload = Get-Content -Raw -Encoding utf8 $output | ConvertFrom-Json
132
+ if ($payload.documents[0].navigation -notmatch "Привет") {
133
+ throw "context JSON lost Cyrillic source text"
134
+ }
135
+
136
+ & $docsystem read DOC-001 $project --anchor "отсутствует" 2> $errors
137
+ if ($LASTEXITCODE -ne 1) { throw "unknown anchor returned $LASTEXITCODE" }
138
+ $global:LASTEXITCODE = 0
139
+ $diagnostic = Get-Content -Raw -Encoding utf8 $errors
140
+ if ($diagnostic -notmatch "отсутствует") {
141
+ throw "stderr diagnostic was not UTF-8"
142
+ }
@@ -9,6 +9,6 @@ __pycache__/
9
9
  /.docsystem/
10
10
  .docsystem/
11
11
  .docsystem.local.toml
12
+ .docsystem.project.local.toml
12
13
  /.claude/
13
- /.paradigmarium/
14
14
  /.orchestrator/
@@ -0,0 +1,116 @@
1
+ # Agent instructions
2
+
3
+ ## Working rules
4
+
5
+ - Keep product documentation and code comments in English.
6
+ - Keep public product documentation, contracts, fixtures and examples
7
+ adopter-neutral by default. Use synthetic project names, IDs, paths and
8
+ scenarios. Do not publish private adopter prompts, logs, document bodies,
9
+ planning or roadmap material, local runtime state or credentials, and do not
10
+ present one adopter project's policy as a universal product rule. Real
11
+ project names and project-specific behavior are allowed only when the user
12
+ explicitly authorizes publication and the content is clearly labeled as an
13
+ integration guide, case study or compatibility profile; keep the generic
14
+ contract in a separate canonical document.
15
+ - Treat Markdown as source of truth and generated data as disposable.
16
+ - Do not add provider-specific behavior to the core package.
17
+ - Prefer deterministic scripts for mechanical documentation maintenance.
18
+ - Preserve existing project files during bootstrap and migration.
19
+ - Every change to configuration behavior requires tests.
20
+ - Do not modify, move, delete or replace the private `plan/` tree unless the
21
+ user explicitly authorizes that exact operation. Treat it as local source
22
+ material, not generated state.
23
+ - Do not commit, push, merge, rebase or perform destructive Git operations
24
+ unless the user explicitly asks.
25
+ - Run git stage/commit operations from inside WSL for this checkout. Do not
26
+ stage or commit from Windows Git over `\\wsl.localhost`; it can drop
27
+ executable bits such as `scripts/installed_cli_smoke.sh` from `100755` to
28
+ `100644` and break CI with `Permission denied`.
29
+
30
+ ## Risk-based verification
31
+
32
+ Choose the narrowest verification level that covers the change:
33
+
34
+ - **Structural only:** prose documentation, comments, badges or repository
35
+ metadata with no runtime, contract, packaging or generated-output effect.
36
+ Do not run a test suite. Run relevant structural checks such as validating
37
+ links or TOML/JSON when applicable and always run `git diff --check`.
38
+ - **Focused:** an isolated implementation or test change with a clear owning
39
+ module. Run directly affected tests and lint touched code. Configuration
40
+ behavior changes must include and run focused configuration tests.
41
+ - **Full:** shared contracts or schemas, CLI behavior, catalog/graph/section
42
+ semantics, projection or workspace safety, dependencies, build/packaging/CI,
43
+ cross-module behavior, release candidates, an explicit user request, or
44
+ uncertainty remaining after focused checks. During implementation use
45
+ focused checks; run the full gate once on the finished candidate:
46
+
47
+ ```bash
48
+ TMPDIR=/tmp TMP=/tmp TEMP=/tmp uv run pytest
49
+ TMPDIR=/tmp TMP=/tmp TEMP=/tmp uv run ruff check .
50
+ git diff --check
51
+ ```
52
+
53
+ WSL sessions may inherit Windows temp directories; native `/tmp` keeps pytest
54
+ capture deterministic. Packaging and release changes additionally require the
55
+ lock, build, distribution and installed-consumer checks documented in
56
+ `docs/releasing.md`. Do not repeat an already-passing full gate after a later
57
+ structural-only edit unless it changes generated artifacts, packaging inputs
58
+ or test expectations. Report checks deliberately not run as `not run`; never
59
+ imply that an unrun check passed.
60
+
61
+ Before committing, verify executable scripts that CI runs:
62
+
63
+ ```bash
64
+ git ls-files --stage scripts/installed_cli_smoke.sh
65
+ test -x scripts/installed_cli_smoke.sh
66
+ ```
67
+
68
+ Expected git mode for `scripts/installed_cli_smoke.sh` is `100755`.
69
+
70
+ ## Orchestration with OrchestratorEngine
71
+
72
+ - Delegate only concrete, bounded work where an AI worker adds value. Use a
73
+ deterministic script or check runner for mechanical work and test execution.
74
+ - Before dispatch, confirm that the project binding targets the current host
75
+ chat, classify the task as structural, focused or full, select an appropriate
76
+ enabled worker profile, and write both the complete task contract and a
77
+ `WORKER_TASK_INTENT` JSON file below `.orchestrator/prompts/`.
78
+ - Set `intent.verification` before dispatch and pass the intent with
79
+ `worker run --intent-file`. The declared verification level is authoritative:
80
+ generic or copied task prose must not broaden it. If scope changes enough to
81
+ require another level, stop and dispatch corrected intent rather than
82
+ silently changing the gate.
83
+ - Dispatch once with a stable task id. Do not spend model turns polling worker
84
+ state and do not dispatch a duplicate merely because a wait timed out.
85
+ - For a bounded wait that fits the active Codex turn, prefer one direct
86
+ deterministic wait:
87
+
88
+ ```bash
89
+ orchestrator-engine --project-root <project-root> \
90
+ worker wait --task-id TASK-ID --json
91
+ ```
92
+
93
+ - If ending a Codex turn while work remains active, show the user this
94
+ terminal command before handing off:
95
+
96
+ ```bash
97
+ orchestrator-engine --project-root <project-root> \
98
+ worker wait --task-id TASK-ID
99
+ ```
100
+
101
+ It reads local durable state without invoking a model. For parallel workers,
102
+ repeat `--task-id` and use one `--mode all` or `--mode any` wait.
103
+ - Use a low-cost relay subagent only when its native wait is materially more
104
+ reliable than the direct command wait. The parent must remain active in one
105
+ bounded native wait; a relay must not edit, test, review or poll repeatedly.
106
+ - Codex Desktop completion delivery is durable history, not guaranteed live
107
+ refresh of an already-open chat. Use the terminal wait for unknown or long
108
+ work. Claude uses the stream delivery documented by OrchestratorEngine and
109
+ does not need the Codex manual fallback.
110
+ - On completion, inspect compact `result.json` and `evidence.json` first. Open
111
+ only referenced failure logs when necessary. Worker output is evidence; the
112
+ host agent owns final review and acceptance.
113
+ - Preserve `.orchestrator` events, signals, results and evidence as the audit
114
+ trail. For OrchestratorEngine runtime/core problems, start with compact
115
+ `status`, use targeted diagnostics, and create a sanitized structured report
116
+ instead of pasting private documents or unbounded logs.
@@ -0,0 +1,206 @@
1
+ # Changelog
2
+
3
+ All notable changes to Documentation Engine are documented in this file.
4
+
5
+ ## [Unreleased]
6
+
7
+ ## [0.3.1] - 2026-07-19
8
+
9
+ ### Fixed
10
+
11
+ - CLI stdout and stderr now use UTF-8 independently of the host locale, so
12
+ redirected or piped Cyrillic and other Unicode Markdown works on Windows
13
+ without requiring `PYTHONUTF8=1`.
14
+ - Windows CI now runs focused CLI/context/MCP regressions with Python UTF-8
15
+ mode disabled and verifies an installed wheel through a PowerShell JSON pipe
16
+ and a Unicode stderr diagnostic.
17
+
18
+ ### Added
19
+
20
+ - `docsystem --version` reports the installed Documentation Engine version
21
+ without requiring a project or subcommand.
22
+
23
+ ## [0.3.0] - 2026-07-15
24
+
25
+ ### Highlights
26
+
27
+ - Task-sized AI-agent workflows now combine section references, explainable
28
+ change planning, context-gap feedback and proportional evidence without
29
+ making advanced governance mandatory for routine work.
30
+ - Project-authored profiles, delivery mappings, program plans and
31
+ workstream/execution contracts provide deterministic, fail-closed evidence
32
+ for genuinely governed, delegated or risk-bearing delivery.
33
+ - Read-only federation and workspace-owned incremental projections let agents
34
+ inspect multiple independently owned documentation sources while preserving
35
+ source-qualified identities and default-deny write authority.
36
+ - Guarded maintenance adds preview hashes, bounded writes, immutable journals
37
+ and recovery without replacing Markdown as the source of truth.
38
+
39
+ ### Added
40
+
41
+ - Read-only knowledge-promotion planning combines explicit `authority_for`
42
+ ownership, project-authored history modes, exact evidence pins, conflict
43
+ detection and reverse impact without returning bodies or writing Markdown.
44
+
45
+ - An ignored `.docsystem.project.local.toml` pointer can route ordinary
46
+ project commands to one validated external documentation root without
47
+ exposing its absolute path in generated agent instructions. The generated
48
+ contract limits trusted agents to that exact private scope and forbids
49
+ parent/sibling discovery unless separately authorized.
50
+
51
+ - Read-only shared workstream finish packets verify caller-declared outcomes
52
+ across independent source journals, preserve partial/blocked states and
53
+ reject stale source/config/workspace authority without reading document
54
+ bodies or claiming cross-source atomicity.
55
+
56
+ - Source-qualified bounded maintenance for local workspaces: sources default
57
+ to `write = "none"` and may opt into `managed-maintenance`; selected writes
58
+ require a deterministic reviewed preview hash, selected recovery requires
59
+ the immutable journal manifest hash, authority evidence is source-local,
60
+ and a non-blocking journal lock prevents concurrent transactions without
61
+ claiming cross-source atomicity.
62
+
63
+ - Authored `program_plan` sequencing with fail-closed `roadmap status`,
64
+ `roadmap next` and `roadmap explain` CLI/MCP inspection. Recommendations
65
+ derive lifecycle state from bounded roadmap documents, prerequisites and
66
+ explicit priority without reading bodies or granting execution authority;
67
+ deferred ideas remain visible and never produce a false complete state.
68
+ - Workspace-owned federated projection generations reuse unchanged per-source
69
+ objects, verify all registered source/config/Markdown inputs and accelerate
70
+ complete federation queries without writing source caches.
71
+
72
+ - Read-only multi-catalog federation with qualified `source::ID[#anchor]`
73
+ identities, authored cross-source relations, complete catalog/dependency/
74
+ reference/context/impact CLI queries and matching thin MCP tools.
75
+ - Projection schema 4 preserves qualified relation boundaries on the
76
+ single-source direct and projected paths; older generations fall back safely
77
+ and can be rebuilt from Markdown.
78
+
79
+ - Versioned, project-authored workstream completion criteria.
80
+ - Read-only `criteria` and `workstream` commands for deterministic lifecycle,
81
+ correction and bounded evidence validation.
82
+ - Optional `finish --workstream-record` gate and matching read-only MCP tools.
83
+ - Versioned idea-intake placement policy, bounded request validation and the
84
+ read-only `intake` CLI/MCP command with explainable blocked decisions.
85
+ - Versioned A0–A2 execution-admission policy and read-only `admission` CLI/MCP
86
+ evaluation for bounded workstream targets, actions, risk and authorization
87
+ evidence.
88
+ - Read-only `execution-handoff` CLI/MCP packet generation and verification with
89
+ mandate/target hashes, section ranges, graph impact, visible completeness and
90
+ no embedded authored bodies.
91
+ - Generated agent instructions now present configured intake, admission,
92
+ immutable handoff verification and evidence-gated finish in execution order.
93
+ - Optional admission source scopes bind local pre-edit paths/hashes, while the
94
+ read-only `execution-result` CLI/MCP contract validates structured returned
95
+ changed-file evidence without claiming to observe external writes.
96
+ - Read-only `metadata-inventory` CLI/MCP inspection reports observed metadata
97
+ coverage, YAML types and body-free per-document graph facts while hiding
98
+ additional values unless one field is explicitly requested.
99
+ - Optional project-authored document profiles and read-only `profile-check`
100
+ CLI/MCP validation cover metadata, semantic anchor roles, relation/status
101
+ allowlists and history-mode evidence without inferred policy or source writes.
102
+ - Optional delivery traceability metadata and read-only `delivery-map` CLI/MCP
103
+ inspection connect exact source-section contracts to delivery ownership and
104
+ completion evidence without reading or returning authored bodies.
105
+ - Repeatable targeted delivery-contract lookup reports bounded mappings and
106
+ explicit unowned contracts, with matching MCP and generated-agent guidance.
107
+ - Opt-in delivery-aware change plans add owner and completion evidence as a
108
+ separate review-only layer, with default-output compatibility and MCP parity.
109
+ - Read-only `lifecycle` CLI/MCP validation composes an admission request,
110
+ host-persisted execution packet, authoritative changed-file result and
111
+ completed workstream record into one fail-closed, body-free evidence lineage.
112
+
113
+ ### Changed
114
+
115
+ - Generated agent instructions now keep routine corrections on a proportional
116
+ read/implement/verify path and scope optional intake, admission, immutable
117
+ handoff, result and lifecycle evidence to durable ideas or genuinely
118
+ governed, delegated and risk-bearing work.
119
+
120
+ - `workspace list` rows and JSON now expose each source's body-free write
121
+ policy so operators can inspect the default-deny boundary.
122
+
123
+ - Replaced the named adopter integration guide and CI profile with a synthetic
124
+ client-integration contract and generic adopter fixture.
125
+
126
+ ## [0.2.0] - 2026-07-13
127
+
128
+ ### Highlights
129
+
130
+ - Local workspace source selection lets one checkout address an independent
131
+ public or private Documentation Engine profile by a stable source name,
132
+ without committing machine-specific absolute paths.
133
+ - A strict `workspace.toml` registry and ignored `.docsystem.local.toml`
134
+ pointer provide deterministic discovery through explicit CLI options, an
135
+ environment variable or local project wiring.
136
+ - New read-only `workspace list` and `workspace doctor` commands report source
137
+ visibility and availability without reading document bodies or exposing
138
+ local paths.
139
+ - Existing project commands and MCP tools can select one registered source;
140
+ explicit selection fails closed and never falls back to the positional
141
+ project.
142
+ - Source roots must be contained, unique and non-overlapping. Writable
143
+ documentation and projection paths cannot escape through symlinks, and
144
+ malformed or looping paths produce bounded diagnostics instead of stack
145
+ traces.
146
+ - Existing single-project CLI and MCP behavior remains unchanged when no
147
+ source is selected. This release deliberately does not claim cross-source
148
+ graph federation, remote storage, synchronization or authorization.
149
+
150
+ ## [0.1.2] - 2026-07-13
151
+
152
+ ### Fixed
153
+
154
+ - The release gate now removes the `.gitignore` marker generated by `uv build`
155
+ before asserting and uploading the exact wheel-and-sdist artifact set. The
156
+ `v0.1.1` candidate stopped at this gate before any artifact was uploaded to
157
+ TestPyPI or PyPI; version `0.1.2` is the replacement release candidate.
158
+
159
+ ## [0.1.1] - 2026-07-12
160
+
161
+ ### Highlights
162
+
163
+ - Canonical PyPI distribution identity: the distribution to be published is
164
+ named `documentation-engine`. The import package (`docsystem`), console
165
+ commands (`docsystem`, `docsystem-mcp`) and project files
166
+ (`.docsystem.toml`, `.docsystem/`) are unchanged.
167
+ - Single source of truth for the package version: `pyproject.toml` now
168
+ derives `version` dynamically from `src/docsystem/__init__.py` instead of
169
+ duplicating it.
170
+ - Release automation prepared: a tag-triggered Trusted Publishing workflow
171
+ builds the distributions once, verifies that the tag matches the package
172
+ version, publishes to TestPyPI, checks the published SHA-256 digests against
173
+ the built artifact, installs the result, and only then offers the same bytes
174
+ to PyPI behind a manual approval gate. See
175
+ [the release guide](docs/releasing.md).
176
+ - CI runs on Node 24-capable action majors, declares least-privilege
177
+ permissions, and checks the sdist as well as the wheel.
178
+
179
+ This entry documents packaging identity and release automation. Documentation
180
+ Engine has not been published to any package index yet; `pip install
181
+ documentation-engine` starts working only after the first successful release.
182
+
183
+ ## [0.1.0] - 2026-07-11
184
+
185
+ ### Highlights
186
+
187
+ - Structured Markdown catalogs with stable document IDs, revisions, typed
188
+ dependency graphs and deterministic section addressing.
189
+ - Selective `read`, `context` and `impact` workflows that preserve verbatim
190
+ source text and expose omitted context instead of silently truncating it.
191
+ - Deterministic sharded projections with integrity checks, change detection and
192
+ safe direct-Markdown fallback.
193
+ - Adoption support for existing documentation trees, including catalog
194
+ membership policies, legacy relation diagnostics and migration reports.
195
+ - Read-only MCP adapter and structured JSON output for AI-agent integrations.
196
+ - Workstream branching, adopter reporting and project handoff patterns.
197
+ - Measured context-reduction methodology and a reproducible consumer-install
198
+ smoke test.
199
+
200
+ [Unreleased]: https://github.com/Jafa7/DocumentationEngine/compare/v0.3.1...HEAD
201
+ [0.3.1]: https://github.com/Jafa7/DocumentationEngine/compare/v0.3.0...v0.3.1
202
+ [0.3.0]: https://github.com/Jafa7/DocumentationEngine/compare/v0.2.0...v0.3.0
203
+ [0.2.0]: https://github.com/Jafa7/DocumentationEngine/compare/v0.1.2...v0.2.0
204
+ [0.1.2]: https://github.com/Jafa7/DocumentationEngine/compare/v0.1.1...v0.1.2
205
+ [0.1.1]: https://github.com/Jafa7/DocumentationEngine/compare/v0.1.0...v0.1.1
206
+ [0.1.0]: https://github.com/Jafa7/DocumentationEngine/releases/tag/v0.1.0
@@ -16,13 +16,10 @@ Work only in the assigned checkout or detached worktree. Do not commit, push,
16
16
  merge, rebase, or modify another checkout unless the task explicitly requires
17
17
  it. Do not add Claude-specific behavior to `src/docsystem/`.
18
18
 
19
- Before handing work off, run the checks required by the task contract. The
20
- default project checks are:
21
-
22
- ```bash
23
- TMPDIR=/tmp TMP=/tmp TEMP=/tmp uv run pytest
24
- ruff check .
25
- ```
19
+ Before handing work off, use the risk level and checks required by `AGENTS.md`
20
+ and the task contract. Do not default to the full suite for structural-only
21
+ documentation changes, and do not broaden a focused gate without a stated
22
+ risk reason.
26
23
 
27
24
  Report changed files, checks, assumptions and blockers. Your report is not
28
25
  acceptance evidence by itself: an independent reviewer verifies the actual