2026-07-22 01:29:32 -04:00
|
|
|
# DocForge
|
|
|
|
|
|
|
|
|
|
DocForge is a project-scoped documentation service for people and AI agents. It loads canonical
|
|
|
|
|
Markdown and TOML from one repository, validates stable nodes and relationships, builds a disposable
|
|
|
|
|
search index, and returns bounded context with source provenance.
|
|
|
|
|
|
2026-07-22 03:32:05 -04:00
|
|
|
DocForge does not own project facts. It does not select project work, apply proposals, run project
|
|
|
|
|
commands, or perform Git and deployment operations. It may write only configured derived output and
|
|
|
|
|
isolated previews through the explicit render boundary.
|
2026-07-22 01:29:32 -04:00
|
|
|
|
|
|
|
|
## Current gate
|
|
|
|
|
|
2026-07-22 05:59:20 -04:00
|
|
|
DFG-1 through DFG-7 are complete. Worldforge now uses two explicit read-only sessions for its main
|
|
|
|
|
documentation and AssetForge documentation. Real-task retrieval, bounded context, cross-session
|
|
|
|
|
isolation, stale-state rejection, and rollback to the existing manual index are measured. DFG-8 is
|
|
|
|
|
the active gate: allow AssetForge-only proposals through a separate reviewed changeset workflow.
|
|
|
|
|
Canonical application remains external and closed to MCP.
|
2026-07-22 01:29:32 -04:00
|
|
|
|
|
|
|
|
## Development
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
uv sync
|
|
|
|
|
uv run python -m unittest discover -s tests -v
|
|
|
|
|
uv run docforge --project-root tests/fixtures/alpha validate
|
2026-07-22 03:32:05 -04:00
|
|
|
uv run docforge --project-root tests/fixtures/alpha render-status manual
|
|
|
|
|
uv run docforge --project-root tests/fixtures/alpha render manual
|
2026-07-22 02:58:51 -04:00
|
|
|
uv run docforge-mcp --project-root tests/fixtures/alpha --proposal-writer alpha-editor
|
2026-07-22 01:29:32 -04:00
|
|
|
```
|
|
|
|
|
|
|
|
|
|
The command prints deterministic JSON. Derived indexes live under each project's configured cache
|
|
|
|
|
directory and are never canonical input.
|
2026-07-22 02:58:51 -04:00
|
|
|
|
|
|
|
|
Proposal writers are declared by ID in `.docforge/project.toml`. Each writer receives explicit node
|
|
|
|
|
families and operation types. The MCP process binds to one writer at startup; tools cannot select or
|
|
|
|
|
impersonate another writer. Create, update, move, and delete tools write only isolated JSON
|
|
|
|
|
changesets below the configured changeset root.
|
2026-07-22 03:32:05 -04:00
|
|
|
|
|
|
|
|
Projects may also declare render views with confined template, preview, and output paths. The first
|
|
|
|
|
built-in renderer converts CommonMark to escaped HTML through strict template tokens. MCP may render
|
|
|
|
|
validated changesets only into isolated preview paths. Declared project output is generated through
|
|
|
|
|
the explicit local CLI command and is never an MCP operation.
|
2026-07-22 04:17:05 -04:00
|
|
|
|
|
|
|
|
Project adapters implement `AdapterLoader` and return one ordered, immutable `AdapterProjection`.
|
|
|
|
|
`AdapterProject` validates the projection and exposes it through the same disposable index used by
|
|
|
|
|
generic projects. Project-specific context, query ordering, and render-model policy remain in the
|
|
|
|
|
adapter. Shadow adapters are local integration tools; the normal MCP server does not discover or
|
2026-07-22 05:59:20 -04:00
|
|
|
execute them. An explicit integration may bind a validated adapter project to DocForge's read-only
|
|
|
|
|
MCP surface without enabling proposal tools.
|