documentation-engine 0.1.2__tar.gz → 0.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/.github/workflows/release.yml +3 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/.gitignore +1 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/CHANGELOG.md +26 -1
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/PKG-INFO +10 -1
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/README.md +9 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/docs/adoption.md +6 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/docs/agent-contract.md +7 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/docs/architecture.md +8 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/docs/mcp-adapter.md +7 -0
- documentation_engine-0.2.0/docs/workspace-sources.md +155 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/src/docsystem/__init__.py +1 -1
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/src/docsystem/cli.py +350 -54
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/src/docsystem/mcp_server.py +156 -38
- documentation_engine-0.2.0/src/docsystem/workspace.py +372 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/tests/test_mcp_adapter.py +76 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/tests/test_release_workflows.py +1 -0
- documentation_engine-0.2.0/tests/test_workspace.py +923 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/.github/ISSUE_TEMPLATE/adoption-finding.yml +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/.github/ISSUE_TEMPLATE/core-bug.yml +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/.github/ISSUE_TEMPLATE/docs-pattern-request.yml +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/.github/ISSUE_TEMPLATE/runtime-report.yml +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/.github/copilot-instructions.md +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/.github/workflows/ci.yml +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/AGENTS.md +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/CLAUDE.md +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/CONTRIBUTING.md +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/LICENSE +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/SECURITY.md +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/docs/adopter-reporting.md +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/docs/assets/context-reduction.svg +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/docs/context-efficiency.md +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/docs/local-state-safety.md +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/docs/paradigmarium-integration.md +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/docs/releasing.md +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/docs/setup-guide.md +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/docs/workstream-branching.md +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/examples/generic-adopter/.docsystem.toml +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/examples/generic-adopter/README.md +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/examples/generic-adopter/plan/README.md +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/examples/generic-adopter/plan/design.md +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/examples/generic-adopter/plan/review.md +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/examples/generic-adopter/plan/templates/document-template.md +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/examples/paradigmarium-profile/.docsystem.toml +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/examples/paradigmarium-profile/README.md +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/examples/paradigmarium-profile/plan/README.md +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/examples/paradigmarium-profile/plan/architecture/README.md +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/examples/paradigmarium-profile/plan/decisions/README.md +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/examples/workstream-branch-template.md +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/pyproject.toml +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/scripts/installed_cli_smoke.sh +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/src/docsystem/__main__.py +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/src/docsystem/catalog.py +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/src/docsystem/config.py +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/src/docsystem/metadata.py +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/src/docsystem/migration.py +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/src/docsystem/projection.py +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/src/docsystem/readiness.py +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/src/docsystem/sections.py +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/tests/test_catalog.py +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/tests/test_cli.py +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/tests/test_config.py +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/tests/test_context_cli.py +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/tests/test_metadata.py +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/tests/test_migration.py +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/tests/test_readiness.py +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/tests/test_sections.py +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/tests/test_vertical.py +0 -0
- {documentation_engine-0.1.2 → documentation_engine-0.2.0}/uv.lock +0 -0
|
@@ -148,6 +148,9 @@ jobs:
|
|
|
148
148
|
uses: astral-sh/setup-uv@v7
|
|
149
149
|
with:
|
|
150
150
|
python-version: "3.12"
|
|
151
|
+
# This deliberately checkout-free consumer job has no uv.lock or
|
|
152
|
+
# pyproject.toml from which setup-uv could derive a cache key.
|
|
153
|
+
enable-cache: false
|
|
151
154
|
|
|
152
155
|
- name: Create the consumer environment on Python 3.12
|
|
153
156
|
run: |
|
|
@@ -2,6 +2,30 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to Documentation Engine are documented in this file.
|
|
4
4
|
|
|
5
|
+
## [0.2.0] - 2026-07-13
|
|
6
|
+
|
|
7
|
+
### Highlights
|
|
8
|
+
|
|
9
|
+
- Local workspace source selection lets one checkout address an independent
|
|
10
|
+
public or private Documentation Engine profile by a stable source name,
|
|
11
|
+
without committing machine-specific absolute paths.
|
|
12
|
+
- A strict `workspace.toml` registry and ignored `.docsystem.local.toml`
|
|
13
|
+
pointer provide deterministic discovery through explicit CLI options, an
|
|
14
|
+
environment variable or local project wiring.
|
|
15
|
+
- New read-only `workspace list` and `workspace doctor` commands report source
|
|
16
|
+
visibility and availability without reading document bodies or exposing
|
|
17
|
+
local paths.
|
|
18
|
+
- Existing project commands and MCP tools can select one registered source;
|
|
19
|
+
explicit selection fails closed and never falls back to the positional
|
|
20
|
+
project.
|
|
21
|
+
- Source roots must be contained, unique and non-overlapping. Writable
|
|
22
|
+
documentation and projection paths cannot escape through symlinks, and
|
|
23
|
+
malformed or looping paths produce bounded diagnostics instead of stack
|
|
24
|
+
traces.
|
|
25
|
+
- Existing single-project CLI and MCP behavior remains unchanged when no
|
|
26
|
+
source is selected. This release deliberately does not claim cross-source
|
|
27
|
+
graph federation, remote storage, synchronization or authorization.
|
|
28
|
+
|
|
5
29
|
## [0.1.2] - 2026-07-13
|
|
6
30
|
|
|
7
31
|
### Fixed
|
|
@@ -52,6 +76,7 @@ documentation-engine` starts working only after the first successful release.
|
|
|
52
76
|
- Measured context-reduction methodology and a reproducible consumer-install
|
|
53
77
|
smoke test.
|
|
54
78
|
|
|
55
|
-
[0.
|
|
79
|
+
[0.2.0]: https://github.com/Jafa7/DocumentationEngine/compare/v0.1.2...v0.2.0
|
|
80
|
+
[0.1.2]: https://github.com/Jafa7/DocumentationEngine/compare/v0.1.1...v0.1.2
|
|
56
81
|
[0.1.1]: https://github.com/Jafa7/DocumentationEngine/compare/v0.1.0...v0.1.1
|
|
57
82
|
[0.1.0]: https://github.com/Jafa7/DocumentationEngine/releases/tag/v0.1.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: documentation-engine
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2.0
|
|
4
4
|
Summary: Provider-neutral structured Markdown documentation engine.
|
|
5
5
|
Project-URL: Repository, https://github.com/Jafa7/DocumentationEngine
|
|
6
6
|
Project-URL: Documentation, https://github.com/Jafa7/DocumentationEngine/tree/main/docs
|
|
@@ -94,6 +94,12 @@ Ask me where local disaster-recovery backups should be stored before touching
|
|
|
94
94
|
ignored/private documentation or local configuration.
|
|
95
95
|
```
|
|
96
96
|
|
|
97
|
+
If public documentation stays in product repositories while private profiles
|
|
98
|
+
live in one local directory, use [workspace source selection](docs/workspace-sources.md)
|
|
99
|
+
to register those independent profiles and address one by name. This removes
|
|
100
|
+
machine-specific paths from routine commands without claiming a federated
|
|
101
|
+
cross-project graph.
|
|
102
|
+
|
|
97
103
|
## Principles
|
|
98
104
|
|
|
99
105
|
- Markdown is the editable source of truth.
|
|
@@ -187,6 +193,9 @@ python -m docsystem changes .
|
|
|
187
193
|
python -m docsystem changes . --json
|
|
188
194
|
python -m docsystem agent-instructions .
|
|
189
195
|
python -m docsystem agent-instructions . --json
|
|
196
|
+
python -m docsystem workspace list . --workspace /path/to/workspace
|
|
197
|
+
python -m docsystem workspace doctor . --workspace /path/to/workspace
|
|
198
|
+
python -m docsystem context DOC-001 . --source example-project
|
|
190
199
|
```
|
|
191
200
|
|
|
192
201
|
`init` creates a project-local `.docsystem.toml` and the configured
|
|
@@ -77,6 +77,12 @@ Ask me where local disaster-recovery backups should be stored before touching
|
|
|
77
77
|
ignored/private documentation or local configuration.
|
|
78
78
|
```
|
|
79
79
|
|
|
80
|
+
If public documentation stays in product repositories while private profiles
|
|
81
|
+
live in one local directory, use [workspace source selection](docs/workspace-sources.md)
|
|
82
|
+
to register those independent profiles and address one by name. This removes
|
|
83
|
+
machine-specific paths from routine commands without claiming a federated
|
|
84
|
+
cross-project graph.
|
|
85
|
+
|
|
80
86
|
## Principles
|
|
81
87
|
|
|
82
88
|
- Markdown is the editable source of truth.
|
|
@@ -170,6 +176,9 @@ python -m docsystem changes .
|
|
|
170
176
|
python -m docsystem changes . --json
|
|
171
177
|
python -m docsystem agent-instructions .
|
|
172
178
|
python -m docsystem agent-instructions . --json
|
|
179
|
+
python -m docsystem workspace list . --workspace /path/to/workspace
|
|
180
|
+
python -m docsystem workspace doctor . --workspace /path/to/workspace
|
|
181
|
+
python -m docsystem context DOC-001 . --source example-project
|
|
173
182
|
```
|
|
174
183
|
|
|
175
184
|
`init` creates a project-local `.docsystem.toml` and the configured
|
|
@@ -146,6 +146,12 @@ delete or migration mistake. Define a local backup command before letting an
|
|
|
146
146
|
agent perform broad or mutating work on ignored documentation. The reusable
|
|
147
147
|
contract is described in [local state safety](local-state-safety.md).
|
|
148
148
|
|
|
149
|
+
When several independent public or private profiles live under one local
|
|
150
|
+
documentation directory, register them with
|
|
151
|
+
[workspace source selection](workspace-sources.md). The registry selects one
|
|
152
|
+
ordinary profile by name; it does not merge catalogs or authorize deleting an
|
|
153
|
+
original `plan/` after a copy-only migration.
|
|
154
|
+
|
|
149
155
|
Project-specific registry synchronization, `finish` orchestration, private
|
|
150
156
|
history/backup, and provider adapters remain outside this adoption profile.
|
|
151
157
|
|
|
@@ -77,6 +77,13 @@ unrelated directories, and an implicit-cwd invocation against the wrong
|
|
|
77
77
|
directory produces a confusing `configuration not found` error at best and
|
|
78
78
|
operates on an unintended project at worst.
|
|
79
79
|
|
|
80
|
+
For a profile registered in a local documentation workspace, an agent must
|
|
81
|
+
instead pass the positional discovery root and `--source NAME`. Workspace
|
|
82
|
+
resolution is fail-closed: an unknown or unavailable source must never be
|
|
83
|
+
replaced with the positional project. The local pointer and absolute workspace
|
|
84
|
+
path are private machine wiring and must not be committed. See
|
|
85
|
+
[workspace source selection](workspace-sources.md).
|
|
86
|
+
|
|
80
87
|
## Prefer `--json` over parsing text
|
|
81
88
|
|
|
82
89
|
`readiness`, `migration-report`, `catalog --explain`, `changes` and
|
|
@@ -62,6 +62,12 @@ Project policy may configure:
|
|
|
62
62
|
- legacy path-relation migration and historical snapshot document types;
|
|
63
63
|
- provider adapters.
|
|
64
64
|
|
|
65
|
+
A local workspace registry is an outer selection layer, not another project
|
|
66
|
+
configuration table. It maps a stable source name to one contained project
|
|
67
|
+
root, after which the existing configuration, catalog, graph and projection
|
|
68
|
+
contracts apply unchanged. It deliberately does not aggregate multiple
|
|
69
|
+
sources; see [workspace source selection](workspace-sources.md).
|
|
70
|
+
|
|
65
71
|
## Scalable projection
|
|
66
72
|
|
|
67
73
|
The target projection is sharded and generation-based:
|
|
@@ -265,3 +271,5 @@ fall back to the default, while a configured non-H2 match is invalid.
|
|
|
265
271
|
6. Thin Codex integration and generated agent instructions.
|
|
266
272
|
7. MCP adapter (an initial read-only stdio adapter ships as
|
|
267
273
|
`docsystem.mcp_server`) and additional client integrations.
|
|
274
|
+
8. Local workspace source selection for independently owned profiles, before
|
|
275
|
+
any atomic cross-source federation design.
|
|
@@ -71,10 +71,17 @@ The adapter is deliberately a wrapper, not a second implementation:
|
|
|
71
71
|
| `impact` | text (Markdown table) | `docsystem impact ID PROJECT` |
|
|
72
72
|
| `impact_packet` | object | `docsystem impact ID PROJECT` |
|
|
73
73
|
| `agent_instructions` | object | `docsystem agent-instructions PROJECT --json` |
|
|
74
|
+
| `workspace_list` | object | `docsystem workspace list PROJECT --json` |
|
|
74
75
|
|
|
75
76
|
Every tool takes the project root explicitly; none relies on the server
|
|
76
77
|
process working directory.
|
|
77
78
|
|
|
79
|
+
Project-oriented tools also accept optional `source` and `workspace`
|
|
80
|
+
parameters for [workspace source selection](workspace-sources.md). They append
|
|
81
|
+
the corresponding CLI flags only when provided, so existing MCP calls remain
|
|
82
|
+
unchanged. `workspace_list` reports registry metadata without reading document
|
|
83
|
+
bodies. The adapter does not federate sources or expose workspace mutations.
|
|
84
|
+
|
|
78
85
|
The packet tools use this envelope:
|
|
79
86
|
|
|
80
87
|
```json
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
# Workspace source selection
|
|
2
|
+
|
|
3
|
+
Documentation Engine normally operates on one project root passed directly to
|
|
4
|
+
each command. A local documentation workspace can register several independent
|
|
5
|
+
project profiles and let a caller select one by a stable source name instead
|
|
6
|
+
of repeating a machine-specific absolute path.
|
|
7
|
+
|
|
8
|
+
This feature is source selection, not federation. One command still sees one
|
|
9
|
+
ordinary catalog, dependency graph and projection. It does not merge IDs,
|
|
10
|
+
relations or context across sources.
|
|
11
|
+
|
|
12
|
+
## Ownership model
|
|
13
|
+
|
|
14
|
+
Keep public product documentation in the repository that owns it. A private
|
|
15
|
+
workspace may hold ignored planning documents, internal reviews and other
|
|
16
|
+
local-only profiles outside public repositories. Each registered source is a
|
|
17
|
+
complete Documentation Engine project root with its own `.docsystem.toml`,
|
|
18
|
+
Markdown root and disposable `.docsystem/` projection.
|
|
19
|
+
|
|
20
|
+
The workspace registry does not copy, move, synchronize or delete documents.
|
|
21
|
+
Markdown ownership remains with the selected source. In particular, moving a
|
|
22
|
+
profile into a workspace is a separate, owner-controlled, copy-only migration:
|
|
23
|
+
the engine never authorizes removal of the original source tree.
|
|
24
|
+
|
|
25
|
+
## Registry
|
|
26
|
+
|
|
27
|
+
Create `workspace.toml` at the root of the local workspace:
|
|
28
|
+
|
|
29
|
+
```toml
|
|
30
|
+
version = 1
|
|
31
|
+
|
|
32
|
+
[[sources]]
|
|
33
|
+
name = "example-project"
|
|
34
|
+
root = "projects/example-project"
|
|
35
|
+
visibility = "private"
|
|
36
|
+
|
|
37
|
+
[[sources]]
|
|
38
|
+
name = "shared-guides"
|
|
39
|
+
root = "projects/shared-guides"
|
|
40
|
+
visibility = "public"
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Every source root is relative to the workspace, must remain inside it after
|
|
44
|
+
symlink resolution, and must name a complete project profile. Its configured
|
|
45
|
+
documentation root and projection cache must also resolve inside that source;
|
|
46
|
+
a writable symlink escape makes the source unavailable. Source names use
|
|
47
|
+
lowercase ASCII letters, digits and hyphens, starting with a letter. Names and
|
|
48
|
+
resolved roots must be unique and non-overlapping. `visibility` is required
|
|
49
|
+
and is either `private` or `public`.
|
|
50
|
+
|
|
51
|
+
Visibility is inspectable metadata in this milestone. It does not implement
|
|
52
|
+
authorization or redaction: selecting a private source explicitly means the
|
|
53
|
+
local caller is allowed to read it. Do not expose a workspace through an
|
|
54
|
+
untrusted service or publish generated output without applying the
|
|
55
|
+
organization's access policy.
|
|
56
|
+
|
|
57
|
+
Inspect the registry without reading document bodies:
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
docsystem workspace list . --workspace /path/to/documentation-workspace
|
|
61
|
+
docsystem workspace list . --workspace /path/to/documentation-workspace --json
|
|
62
|
+
docsystem workspace doctor . --workspace /path/to/documentation-workspace
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
The listing contains only source name, visibility, availability and a fixed
|
|
66
|
+
reason slug. Missing roots, missing or invalid configurations and unsafe local
|
|
67
|
+
paths remain visible; selecting any unavailable source fails closed.
|
|
68
|
+
|
|
69
|
+
## Local project pointer
|
|
70
|
+
|
|
71
|
+
For routine use, place this ignored file in the consuming checkout:
|
|
72
|
+
|
|
73
|
+
```toml
|
|
74
|
+
# .docsystem.local.toml
|
|
75
|
+
workspace = "/path/to/documentation-workspace"
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
The pointer is local machine wiring, not public project policy. It accepts one
|
|
79
|
+
absolute path and is ignored by the Documentation Engine repository template.
|
|
80
|
+
Do not commit it or paste its value into public agent instructions.
|
|
81
|
+
|
|
82
|
+
Workspace discovery uses this precedence:
|
|
83
|
+
|
|
84
|
+
1. `--workspace PATH`;
|
|
85
|
+
2. `DOCSYSTEM_WORKSPACE`;
|
|
86
|
+
3. `.docsystem.local.toml` in the positional project root.
|
|
87
|
+
|
|
88
|
+
An explicit source never falls back to the positional project when discovery,
|
|
89
|
+
manifest validation or source availability fails.
|
|
90
|
+
|
|
91
|
+
## Selecting a source
|
|
92
|
+
|
|
93
|
+
Commands that operate on an existing project profile accept `--source NAME`
|
|
94
|
+
and `--workspace PATH`:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
docsystem readiness . --source example-project --json
|
|
98
|
+
docsystem catalog . --source example-project
|
|
99
|
+
docsystem context DOC-001 . --source example-project --depth 1
|
|
100
|
+
docsystem impact DOC-001 . --source example-project
|
|
101
|
+
docsystem index . --source example-project --write
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
`--workspace` is normally omitted after installing the local pointer. On a
|
|
105
|
+
project command it is valid only together with `--source`. The `report draft`
|
|
106
|
+
command already uses `--source` for the reporting host, so its workspace
|
|
107
|
+
selector is spelled `--workspace-source`:
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
docsystem report draft . \
|
|
111
|
+
--project-name "Example" \
|
|
112
|
+
--type adoption-finding \
|
|
113
|
+
--source codex \
|
|
114
|
+
--workspace-source example-project
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
`init` remains a direct-path bootstrap command. Create a new profile with
|
|
118
|
+
`docsystem init PATH`, then register that valid project root in
|
|
119
|
+
`workspace.toml`; source selection never creates or repairs workspace entries.
|
|
120
|
+
|
|
121
|
+
When no source selector is present, workspace state is not loaded or validated
|
|
122
|
+
and the existing single-project behavior is unchanged. Selected-source
|
|
123
|
+
readiness and agent-instruction output identify the project by the caller's
|
|
124
|
+
positional discovery root plus `--source NAME`, never by the private source
|
|
125
|
+
root. Generated next commands therefore remain directly executable while the
|
|
126
|
+
same local pointer or environment wiring is active.
|
|
127
|
+
|
|
128
|
+
Mutating commands retain their existing authorization boundary. Source
|
|
129
|
+
selection does not make `init`, `migrate --apply` or `index --write` read-only;
|
|
130
|
+
it only changes the one project root they target. Agents must still obtain the
|
|
131
|
+
required approval and backup local-only authored state first.
|
|
132
|
+
|
|
133
|
+
## MCP
|
|
134
|
+
|
|
135
|
+
The read-only MCP tools accept optional `source` and `workspace` parameters.
|
|
136
|
+
They forward the same CLI flags and preserve the old invocation exactly when
|
|
137
|
+
both are omitted. `workspace_list` exposes the body-free registry listing.
|
|
138
|
+
MCP does not expose workspace creation, synchronization, migration or source
|
|
139
|
+
mutation.
|
|
140
|
+
|
|
141
|
+
## Deliberate non-goals
|
|
142
|
+
|
|
143
|
+
This milestone does not provide:
|
|
144
|
+
|
|
145
|
+
- qualified cross-project document IDs;
|
|
146
|
+
- cross-source dependency edges or aggregate context;
|
|
147
|
+
- a workspace-level projection;
|
|
148
|
+
- remote/network sources, authentication or authorization;
|
|
149
|
+
- concurrent-write locking;
|
|
150
|
+
- Git synchronization, import, copy or deletion;
|
|
151
|
+
- a documentation web server or UI.
|
|
152
|
+
|
|
153
|
+
Those capabilities require one atomic federation design. Until then, a caller
|
|
154
|
+
that needs another project selects that source in a separate command and must
|
|
155
|
+
not infer a complete cross-project graph.
|