generated from coulomb/repo-seed
extension for ref resolve, explode, implode, weave, tangle
This commit is contained in:
79
docs/content-classes.md
Normal file
79
docs/content-classes.md
Normal file
@@ -0,0 +1,79 @@
|
||||
# Content Classes
|
||||
|
||||
Date: 2026-05-04
|
||||
|
||||
## Purpose
|
||||
|
||||
Content classes are data-defined composition rules for reusable document
|
||||
structures, overlays, and variants. They are not Python inheritance. They are a
|
||||
deterministic way to combine slots such as sections, assertions, snippets,
|
||||
processors, and style guidance.
|
||||
|
||||
This is the P10.7 resolver spike for future class/object-style workflows.
|
||||
|
||||
## Model
|
||||
|
||||
A class can declare:
|
||||
|
||||
- `extends`: parent classes
|
||||
- `slots`: structured values to contribute
|
||||
- `merge_policies`: per-slot merge behavior
|
||||
|
||||
Example:
|
||||
|
||||
```yaml
|
||||
classes:
|
||||
base-prd:
|
||||
slots:
|
||||
sections:
|
||||
- Problem
|
||||
- Decision
|
||||
enterprise:
|
||||
extends:
|
||||
- base-prd
|
||||
slots:
|
||||
sections:
|
||||
- Compliance
|
||||
merge_policies:
|
||||
sections: append
|
||||
```
|
||||
|
||||
## Linearization
|
||||
|
||||
Multiple inheritance uses a C3-style linearization. That gives us:
|
||||
|
||||
- deterministic parent ordering
|
||||
- monotonic inheritance behavior
|
||||
- explicit diagnostics for cycles, unknown parents, and inconsistent precedence
|
||||
|
||||
The resolved class is merged from base to leaf according to the computed
|
||||
linearization.
|
||||
|
||||
## Merge Policies
|
||||
|
||||
Initial policies:
|
||||
|
||||
- `replace`
|
||||
- `append`
|
||||
- `prepend`
|
||||
- `deep_merge`
|
||||
- `error_on_conflict`
|
||||
|
||||
Unknown policies and invalid value shapes produce diagnostics.
|
||||
|
||||
## CLI
|
||||
|
||||
Resolve a class:
|
||||
|
||||
```bash
|
||||
mkt class resolve examples/classes/prd-classes.yaml enterprise-prd
|
||||
```
|
||||
|
||||
JSON/YAML output includes the linearization, merged slots, and diagnostics.
|
||||
|
||||
## Extension Boundary
|
||||
|
||||
The current resolver does not yet instantiate Markdown documents or inject
|
||||
snippets. It establishes the deterministic inheritance and merge floor. Later
|
||||
work can connect resolved slots to contracts, references, processors, and
|
||||
generation plans.
|
||||
Reference in New Issue
Block a user