53 lines
1.1 KiB
Markdown
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
|