Didactopus/docs/dependency-resolution.md

53 lines
1.1 KiB
Markdown

# Dependency Resolution Plan
## Goals
Didactopus should support a pack ecosystem in which contributors can publish reusable foundations and specialized overlays.
Examples:
- a general statistics foundations pack
- a Bayesian statistics extension pack
- an electronics foundations pack
- a marine bioacoustics specialization pack
## Manifest fields
Each `pack.yaml` should include:
- `name`
- `version`
- `didactopus_min_version`
- `didactopus_max_version`
- `dependencies`
Dependencies use a compact form:
```yaml
dependencies:
- name: statistics-foundations
min_version: 1.0.0
max_version: 2.0.0
```
## Validation stages
### Stage 1
- manifest fields exist
- content files exist
- required top-level keys exist
### Stage 2
- internal references are valid
- duplicate IDs are rejected
### Stage 3
- each dependency names an installed pack
- dependency versions satisfy declared ranges
- pack compatibility includes current core version
## Future work
- full semantic version parsing
- cycle detection in dependency graphs
- topological load ordering
- trust and signature policies