Architecture
Harbour's Artisan commands adapt input and output around an injectable WorkspaceManager. Orchestration remains outside the console layer.
Lifecycle
Setup records preparing before external mutation and persists every acquired allocation or resource. Failures retain the recorded subset. Teardown walks resources in reverse order and converges safely on absent.
Domain boundaries
- Identity turns Git and path context into an immutable workspace identity.
- Context-specific identifier transformers produce safe database, Redis, cookie, Docker, Compose, and filesystem values.
- The port registry coordinates reservations across processes and workspaces.
- Variable resolution records value provenance and secret metadata.
- Database, Docker, and Compose adapters create and destroy owned resources.
- Environment management preserves and restores the checkout's original
.env.
Architectural decisions
The repository contains the complete rationale and invariants:
- Workspace identity
- Resource ownership
- Port allocation
- Environment restoration
- Shared, Docker, and Compose resources
- Variable precedence
Read the full architecture document for state schemas, lock ordering, identifier rules, and teardown invariants.