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.
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/.github/ISSUE_TEMPLATE/adoption-finding.yml +1 -1
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/.github/ISSUE_TEMPLATE/core-bug.yml +1 -1
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/.github/ISSUE_TEMPLATE/docs-pattern-request.yml +1 -1
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/.github/ISSUE_TEMPLATE/runtime-report.yml +1 -1
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/.github/PULL_REQUEST_TEMPLATE.md +18 -7
- documentation_engine-0.3.1/.github/workflows/ci.yml +142 -0
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/.gitignore +1 -1
- documentation_engine-0.3.1/AGENTS.md +116 -0
- documentation_engine-0.3.1/CHANGELOG.md +206 -0
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/CLAUDE.md +4 -7
- documentation_engine-0.3.1/CONTRIBUTING.md +134 -0
- documentation_engine-0.3.1/PKG-INFO +853 -0
- documentation_engine-0.3.1/README.md +836 -0
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/SECURITY.md +6 -6
- documentation_engine-0.3.1/docs/README.md +69 -0
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/docs/adopter-reporting.md +65 -0
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/docs/adoption.md +66 -31
- documentation_engine-0.3.1/docs/agent-contract.md +754 -0
- documentation_engine-0.3.1/docs/architecture.md +563 -0
- documentation_engine-0.2.0/docs/paradigmarium-integration.md → documentation_engine-0.3.1/docs/client-integration.md +16 -18
- documentation_engine-0.3.1/docs/context-delivery.md +52 -0
- documentation_engine-0.3.1/docs/delivery-traceability.md +107 -0
- documentation_engine-0.3.1/docs/document-profiles.md +76 -0
- documentation_engine-0.3.1/docs/execution-admission.md +147 -0
- documentation_engine-0.3.1/docs/execution-handoff.md +114 -0
- documentation_engine-0.3.1/docs/federation.md +182 -0
- documentation_engine-0.3.1/docs/graph-health.md +56 -0
- documentation_engine-0.3.1/docs/idea-intake.md +117 -0
- documentation_engine-0.3.1/docs/knowledge-promotion.md +72 -0
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/docs/local-state-safety.md +1 -1
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/docs/mcp-adapter.md +60 -6
- documentation_engine-0.3.1/docs/metadata-inventory.md +52 -0
- documentation_engine-0.3.1/docs/program-plans.md +128 -0
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/docs/setup-guide.md +113 -44
- documentation_engine-0.3.1/docs/workspace-sources.md +234 -0
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/docs/workstream-branching.md +16 -0
- documentation_engine-0.3.1/docs/workstream-evidence.md +132 -0
- documentation_engine-0.3.1/docs/workstream-lifecycle.md +103 -0
- documentation_engine-0.3.1/examples/execution-admission-request.json +44 -0
- documentation_engine-0.3.1/examples/execution-result.json +11 -0
- documentation_engine-0.3.1/examples/idea-intake-request.json +22 -0
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/examples/workstream-branch-template.md +7 -0
- documentation_engine-0.3.1/examples/workstream-record.json +96 -0
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/src/docsystem/__init__.py +1 -1
- documentation_engine-0.3.1/src/docsystem/admission.py +430 -0
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/src/docsystem/catalog.py +21 -3
- documentation_engine-0.3.1/src/docsystem/change_plan.py +292 -0
- documentation_engine-0.3.1/src/docsystem/cli.py +9240 -0
- documentation_engine-0.3.1/src/docsystem/config.py +1371 -0
- documentation_engine-0.3.1/src/docsystem/delivery.py +308 -0
- documentation_engine-0.3.1/src/docsystem/execution.py +282 -0
- documentation_engine-0.3.1/src/docsystem/federated_projection.py +799 -0
- documentation_engine-0.3.1/src/docsystem/federation.py +502 -0
- documentation_engine-0.3.1/src/docsystem/graph.py +771 -0
- documentation_engine-0.3.1/src/docsystem/health.py +370 -0
- documentation_engine-0.3.1/src/docsystem/intake.py +290 -0
- documentation_engine-0.3.1/src/docsystem/inventory.py +227 -0
- documentation_engine-0.3.1/src/docsystem/journal.py +1661 -0
- documentation_engine-0.3.1/src/docsystem/lifecycle.py +252 -0
- documentation_engine-0.3.1/src/docsystem/maintenance.py +265 -0
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/src/docsystem/mcp_server.py +503 -4
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/src/docsystem/metadata.py +92 -9
- documentation_engine-0.3.1/src/docsystem/profiles.py +216 -0
- documentation_engine-0.3.1/src/docsystem/program_plan.py +712 -0
- documentation_engine-0.3.1/src/docsystem/projection.py +1132 -0
- documentation_engine-0.3.1/src/docsystem/promotion.py +296 -0
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/src/docsystem/readiness.py +1 -1
- documentation_engine-0.3.1/src/docsystem/shared_finish.py +138 -0
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/src/docsystem/workspace.py +105 -35
- documentation_engine-0.3.1/src/docsystem/workstream.py +490 -0
- documentation_engine-0.3.1/tests/test_admission.py +409 -0
- documentation_engine-0.3.1/tests/test_change_plan.py +249 -0
- documentation_engine-0.3.1/tests/test_change_plan_cli.py +604 -0
- documentation_engine-0.3.1/tests/test_cli.py +562 -0
- documentation_engine-0.3.1/tests/test_cli_platform.py +122 -0
- documentation_engine-0.3.1/tests/test_config.py +1126 -0
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/tests/test_context_cli.py +544 -1
- documentation_engine-0.3.1/tests/test_delivery.py +303 -0
- documentation_engine-0.3.1/tests/test_execution_handoff.py +577 -0
- documentation_engine-0.3.1/tests/test_federated_projection.py +308 -0
- documentation_engine-0.3.1/tests/test_federated_write.py +932 -0
- documentation_engine-0.3.1/tests/test_federation.py +690 -0
- documentation_engine-0.3.1/tests/test_graph.py +580 -0
- documentation_engine-0.3.1/tests/test_health.py +150 -0
- documentation_engine-0.3.1/tests/test_intake.py +276 -0
- documentation_engine-0.3.1/tests/test_inventory.py +176 -0
- documentation_engine-0.3.1/tests/test_journal.py +1753 -0
- documentation_engine-0.3.1/tests/test_lifecycle.py +438 -0
- documentation_engine-0.3.1/tests/test_maintenance.py +1044 -0
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/tests/test_mcp_adapter.py +359 -0
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/tests/test_metadata.py +33 -1
- documentation_engine-0.3.1/tests/test_profiles.py +170 -0
- documentation_engine-0.3.1/tests/test_program_plan.py +467 -0
- documentation_engine-0.3.1/tests/test_promotion.py +261 -0
- documentation_engine-0.3.1/tests/test_references_cli.py +275 -0
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/tests/test_release_workflows.py +23 -2
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/tests/test_vertical.py +273 -5
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/tests/test_workspace.py +271 -20
- documentation_engine-0.3.1/tests/test_workstream.py +313 -0
- documentation_engine-0.2.0/.github/workflows/ci.yml +0 -65
- documentation_engine-0.2.0/AGENTS.md +0 -23
- documentation_engine-0.2.0/CHANGELOG.md +0 -82
- documentation_engine-0.2.0/CONTRIBUTING.md +0 -91
- documentation_engine-0.2.0/PKG-INFO +0 -426
- documentation_engine-0.2.0/README.md +0 -409
- documentation_engine-0.2.0/docs/agent-contract.md +0 -218
- documentation_engine-0.2.0/docs/architecture.md +0 -275
- documentation_engine-0.2.0/docs/workspace-sources.md +0 -155
- documentation_engine-0.2.0/examples/paradigmarium-profile/.docsystem.toml +0 -31
- documentation_engine-0.2.0/examples/paradigmarium-profile/README.md +0 -28
- documentation_engine-0.2.0/examples/paradigmarium-profile/plan/README.md +0 -14
- documentation_engine-0.2.0/examples/paradigmarium-profile/plan/architecture/README.md +0 -10
- documentation_engine-0.2.0/examples/paradigmarium-profile/plan/decisions/README.md +0 -9
- documentation_engine-0.2.0/src/docsystem/cli.py +0 -2869
- documentation_engine-0.2.0/src/docsystem/config.py +0 -216
- documentation_engine-0.2.0/src/docsystem/projection.py +0 -609
- documentation_engine-0.2.0/tests/test_cli.py +0 -287
- documentation_engine-0.2.0/tests/test_config.py +0 -216
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/.github/copilot-instructions.md +0 -0
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/.github/workflows/release.yml +0 -0
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/LICENSE +0 -0
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/docs/assets/context-reduction.svg +0 -0
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/docs/context-efficiency.md +0 -0
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/docs/releasing.md +0 -0
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/examples/generic-adopter/.docsystem.toml +0 -0
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/examples/generic-adopter/README.md +0 -0
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/examples/generic-adopter/plan/README.md +0 -0
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/examples/generic-adopter/plan/design.md +0 -0
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/examples/generic-adopter/plan/review.md +0 -0
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/examples/generic-adopter/plan/templates/document-template.md +0 -0
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/pyproject.toml +0 -0
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/scripts/installed_cli_smoke.sh +0 -0
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/src/docsystem/__main__.py +0 -0
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/src/docsystem/migration.py +0 -0
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/src/docsystem/sections.py +0 -0
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/tests/test_catalog.py +0 -0
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/tests/test_migration.py +0 -0
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/tests/test_readiness.py +0 -0
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/tests/test_sections.py +0 -0
- {documentation_engine-0.2.0 → documentation_engine-0.3.1}/uv.lock +0 -0
|
@@ -4,19 +4,29 @@
|
|
|
4
4
|
|
|
5
5
|
## Testing
|
|
6
6
|
|
|
7
|
-
<!--
|
|
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
|
-
|
|
11
|
-
|
|
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
|
-
- [ ]
|
|
19
|
-
- [ ]
|
|
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 (
|
|
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
|
+
}
|
|
@@ -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,
|
|
20
|
-
default
|
|
21
|
-
|
|
22
|
-
|
|
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
|