Dit is a git-backed engine for repositories of documents. It does not replace Git; it layers repository semantics on top of Git so teams can work with documents, review rounds, assignments, lineage, and actor-aware history through a consistent server and CLI surface.
Dit treats a repository as the primary unit of work:
- Repository: a git-backed workspace for one or more documents
- Document: a file tracked in the repository, with binary content stored in object storage and semantic revision metadata stored by the service
- Actor: an authenticated user whose name/email can be written into commits and joined with service metadata
- Department: a team that participates in review rounds and assignments
- Round: a repository-scoped review cycle
- Assignment: a department-specific unit of work inside a round, including dispatch metadata such as sequence and dependencies
- Lineage: history that combines git commit data with service-level actor, department, round, and storage metadata
Dit is not a contracts product. Contracts are one example use case built on top of the engine.
The current React app in examples/lesscomplex-web/ should be treated as the LessComplex example app: a contracts-management UI that consumes Dit’s repository, document, and round capabilities.
The monorepo is organized around the engine and its consumers:
packages/dit-core— core git/metadata primitives for repositories, rounds, branches, conflicts, and lineagepackages/dit-commandline— command-line surface for the engineservices/dit-service— FastAPI service that manages repository records, authentication, rounds, semantic document revisions, and object-storage joinsskills/dit-skill— repo-local skill for AI coding assistants working with Dit repositories and workflowsexamples/lesscomplex-web— LessComplex example app (contracts-focused example consumer of the engine)
Git remains the source of truth for commits, branches, and merge mechanics. Dit adds:
- repository registration and lookup
- repository-scoped round orchestration
- department assignments and dispatch metadata
- actor-aware commit attribution
- semantic document revision records
- lineage/history queries that combine git data with service metadata
For binary documents, Dit tracks repository state and workflow semantics around the file. It does not attempt generic line-level merge semantics for PDFs or Office binaries.
docs/architecture/dit-engine.md— engine concepts and boundariesdocs/testing/engine-first-verification.md— ordered verification plan for core, command line, service, deployment, and the example app gatedocs/examples/lesscomplex.md— LessComplex example app guidanceAGENTS.md— repository-wide contributor rules
Install dependencies:
uv syncFor the full ordered verification flow across core, command line, service, deployment, and the deferred example-app gate, see docs/testing/engine-first-verification.md.
Run the targeted engine and service verification suite:
uv run --all-packages pytest \
packages/dit-core/tests/test_rounds.py \
packages/dit-core/tests/test_merging.py \
packages/dit-core/tests/test_integration.py \
packages/dit-commandline/tests/test_round_workflow.py \
services/dit-service/tests/api/test_repository_rounds_api.py \
services/dit-service/tests/api/test_contracts_docs.py \
services/dit-service/tests/test_auth.py \
services/dit-service/tests/test_models.py \
services/dit-service/tests/workflow/test_engine.pyRun the local stack:
cd deployment
docker compose up --buildThe stack includes the Dit service, storage/database dependencies, and the LessComplex example UI. The repo-local Dit skill lives under skills/dit-skill/ and is not deployed as a container.