container-superposition 0.1.8 → 0.1.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/dist/tool/cli/args.d.ts.map +1 -1
- package/dist/tool/cli/args.js +1 -1
- package/dist/tool/cli/args.js.map +1 -1
- package/dist/tool/commands/adopt.d.ts.map +1 -1
- package/dist/tool/commands/adopt.js +15 -21
- package/dist/tool/commands/adopt.js.map +1 -1
- package/dist/tool/commands/doctor.d.ts +1 -0
- package/dist/tool/commands/doctor.d.ts.map +1 -1
- package/dist/tool/commands/doctor.js +1370 -73
- package/dist/tool/commands/doctor.js.map +1 -1
- package/dist/tool/questionnaire/composer.d.ts +3 -1
- package/dist/tool/questionnaire/composer.d.ts.map +1 -1
- package/dist/tool/questionnaire/composer.js +273 -20
- package/dist/tool/questionnaire/composer.js.map +1 -1
- package/dist/tool/questionnaire/presets.d.ts.map +1 -1
- package/dist/tool/questionnaire/presets.js +1 -0
- package/dist/tool/questionnaire/presets.js.map +1 -1
- package/dist/tool/questionnaire/questionnaire.d.ts.map +1 -1
- package/dist/tool/questionnaire/questionnaire.js +3 -1
- package/dist/tool/questionnaire/questionnaire.js.map +1 -1
- package/dist/tool/schema/project-config.d.ts.map +1 -1
- package/dist/tool/schema/project-config.js +174 -1
- package/dist/tool/schema/project-config.js.map +1 -1
- package/dist/tool/schema/types.d.ts +53 -2
- package/dist/tool/schema/types.d.ts.map +1 -1
- package/docs/README.md +1 -0
- package/docs/overlays.md +188 -147
- package/docs/specs/001-verbose-plan-graph/spec.md +5 -12
- package/docs/specs/002-superposition-config-file/spec.md +5 -12
- package/docs/specs/003-mkdocs2-overlay/spec.md +2 -9
- package/docs/specs/004-doctor-fix/spec.md +1 -8
- package/docs/specs/005-cuda-overlay/spec.md +2 -9
- package/docs/specs/006-rocm-overlay/spec.md +3 -10
- package/docs/specs/007-target-aware-generation/spec.md +4 -11
- package/docs/specs/008-project-file-canonical/spec.md +7 -8
- package/docs/specs/009-project-env/spec.md +3 -10
- package/docs/specs/010-compose-env-materialization/spec.md +3 -10
- package/docs/specs/011-overlay-parameters/spec.md +2 -9
- package/docs/specs/012-ollama-cli-overlay/spec.md +47 -0
- package/docs/specs/013-doctor-dependency-check/spec.md +250 -0
- package/docs/specs/014-doctor-compose-port-cross-validation/spec.md +276 -0
- package/docs/specs/015-doctor-env-example-drift/spec.md +248 -0
- package/docs/specs/016-doctor-reproducibility-check/spec.md +276 -0
- package/docs/specs/017-doctor-dry-run/spec.md +276 -0
- package/docs/specs/{007-init-project-file → 018-init-project-file}/spec.md +2 -9
- package/docs/specs/019-project-mounts/spec.md +176 -0
- package/docs/specs/taxonomy.md +186 -0
- package/docs/superposition-yml.md +467 -0
- package/overlays/.presets/full-observability.yml +113 -0
- package/overlays/.presets/k8s-dev.yml +174 -0
- package/overlays/.presets/local-llm.yml +105 -0
- package/overlays/.presets/vector-ai.yml +150 -0
- package/overlays/.shared/vscode/js-ts-settings.json +19 -0
- package/overlays/.shared/vscode/markdown-extensions.json +8 -0
- package/overlays/alertmanager/devcontainer.patch.json +0 -1
- package/overlays/alertmanager/docker-compose.yml +8 -0
- package/overlays/alertmanager/overlay.yml +1 -0
- package/overlays/amp/devcontainer.patch.json +4 -1
- package/overlays/ansible/README.md +163 -0
- package/overlays/ansible/devcontainer.patch.json +14 -0
- package/overlays/ansible/overlay.yml +18 -0
- package/overlays/argocd/README.md +158 -0
- package/overlays/argocd/devcontainer.patch.json +9 -0
- package/overlays/argocd/overlay.yml +17 -0
- package/overlays/argocd/setup.sh +29 -0
- package/overlays/argocd/verify.sh +14 -0
- package/overlays/bun/devcontainer.patch.json +1 -10
- package/overlays/bun/overlay.yml +8 -1
- package/overlays/claude-code/devcontainer.patch.json +6 -1
- package/overlays/codex/devcontainer.patch.json +5 -0
- package/overlays/comfyui/docker-compose.yml +1 -0
- package/overlays/comfyui/overlay.yml +4 -0
- package/overlays/commitlint/devcontainer.patch.json +1 -6
- package/overlays/docker-sock/overlay.yml +1 -0
- package/overlays/dotnet/overlay.yml +4 -1
- package/overlays/fuseki/.env.example +5 -0
- package/overlays/fuseki/README.md +173 -0
- package/overlays/fuseki/devcontainer.patch.json +18 -0
- package/overlays/fuseki/docker-compose.yml +29 -0
- package/overlays/fuseki/overlay.yml +42 -0
- package/overlays/fuseki/verify.sh +58 -0
- package/overlays/gemini-cli/devcontainer.patch.json +4 -1
- package/overlays/go/overlay.yml +6 -1
- package/overlays/grafana/devcontainer.patch.json +0 -1
- package/overlays/grafana/docker-compose.yml +8 -2
- package/overlays/grafana/overlay.yml +6 -1
- package/overlays/jaeger/.env.example +11 -0
- package/overlays/jaeger/README.md +33 -4
- package/overlays/jaeger/devcontainer.patch.json +9 -1
- package/overlays/jaeger/docker-compose.yml +17 -0
- package/overlays/jaeger/overlay.yml +1 -12
- package/overlays/java/overlay.yml +6 -1
- package/overlays/jupyter/docker-compose.yml +1 -0
- package/overlays/jupyter/overlay.yml +1 -0
- package/overlays/keycloak/devcontainer.patch.json +0 -1
- package/overlays/keycloak/docker-compose.yml +1 -0
- package/overlays/keycloak/overlay.yml +15 -0
- package/overlays/localstack/docker-compose.yml +1 -0
- package/overlays/localstack/overlay.yml +19 -1
- package/overlays/loki/devcontainer.patch.json +0 -1
- package/overlays/loki/docker-compose.yml +8 -0
- package/overlays/loki/overlay.yml +1 -0
- package/overlays/mailpit/docker-compose.yml +1 -0
- package/overlays/mailpit/overlay.yml +1 -0
- package/overlays/minio/devcontainer.patch.json +1 -1
- package/overlays/minio/docker-compose.yml +1 -0
- package/overlays/minio/overlay.yml +23 -2
- package/overlays/mkdocs/devcontainer.patch.json +1 -5
- package/overlays/mkdocs/overlay.yml +3 -1
- package/overlays/mkdocs2/devcontainer.patch.json +1 -5
- package/overlays/mkdocs2/overlay.yml +2 -0
- package/overlays/mongodb/docker-compose.yml +2 -0
- package/overlays/mongodb/overlay.yml +26 -2
- package/overlays/mysql/docker-compose.yml +2 -0
- package/overlays/mysql/overlay.yml +36 -2
- package/overlays/nats/docker-compose.yml +1 -0
- package/overlays/nats/overlay.yml +18 -2
- package/overlays/nodejs/devcontainer.patch.json +1 -12
- package/overlays/nodejs/overlay.yml +8 -1
- package/overlays/ollama/README.md +4 -3
- package/overlays/ollama/docker-compose.yml +1 -0
- package/overlays/ollama/overlay.yml +6 -1
- package/overlays/ollama/verify.sh +5 -28
- package/overlays/ollama-cli/README.md +90 -0
- package/overlays/ollama-cli/devcontainer.patch.json +3 -0
- package/overlays/ollama-cli/overlay.yml +19 -0
- package/overlays/{ollama → ollama-cli}/setup.sh +7 -10
- package/overlays/ollama-cli/verify.sh +49 -0
- package/overlays/open-webui/docker-compose.yml +1 -0
- package/overlays/open-webui/overlay.yml +8 -1
- package/overlays/opencode/devcontainer.patch.json +4 -1
- package/overlays/otel-collector/README.md +4 -0
- package/overlays/otel-collector/devcontainer.patch.json +4 -1
- package/overlays/otel-collector/docker-compose.yml +8 -4
- package/overlays/otel-collector/overlay.yml +1 -0
- package/overlays/otel-demo-nodejs/devcontainer.patch.json +0 -1
- package/overlays/otel-demo-nodejs/docker-compose.yml +1 -0
- package/overlays/otel-demo-nodejs/overlay.yml +9 -1
- package/overlays/otel-demo-python/devcontainer.patch.json +0 -1
- package/overlays/otel-demo-python/docker-compose.yml +1 -0
- package/overlays/otel-demo-python/overlay.yml +6 -1
- package/overlays/pandoc/README.md +10 -0
- package/overlays/pandoc/devcontainer.patch.json +0 -5
- package/overlays/pandoc/overlay.yml +2 -0
- package/overlays/pandoc/setup.sh +10 -0
- package/overlays/pgvector/devcontainer.patch.json +11 -5
- package/overlays/pgvector/docker-compose.yml +1 -0
- package/overlays/pgvector/overlay.yml +3 -0
- package/overlays/playwright/devcontainer.patch.json +0 -5
- package/overlays/playwright/overlay.yml +2 -1
- package/overlays/postgres/docker-compose.yml +1 -0
- package/overlays/postgres/overlay.yml +4 -1
- package/overlays/pre-commit/devcontainer.patch.json +1 -7
- package/overlays/prometheus/devcontainer.patch.json +0 -1
- package/overlays/prometheus/docker-compose.yml +8 -0
- package/overlays/prometheus/overlay.yml +1 -0
- package/overlays/promtail/devcontainer.patch.json +1 -2
- package/overlays/promtail/docker-compose.yml +8 -0
- package/overlays/promtail/overlay.yml +1 -0
- package/overlays/qdrant/docker-compose.yml +1 -0
- package/overlays/qdrant/overlay.yml +5 -1
- package/overlays/rabbitmq/docker-compose.yml +1 -0
- package/overlays/rabbitmq/overlay.yml +25 -2
- package/overlays/redis/docker-compose.yml +7 -0
- package/overlays/redis/overlay.yml +15 -1
- package/overlays/redpanda/docker-compose.yml +1 -0
- package/overlays/redpanda/overlay.yml +15 -3
- package/overlays/rocm/overlay.yml +2 -1
- package/overlays/rust/overlay.yml +3 -1
- package/overlays/sqlserver/docker-compose.yml +1 -0
- package/overlays/sqlserver/overlay.yml +17 -0
- package/overlays/task/README.md +47 -0
- package/overlays/task/devcontainer.patch.json +9 -0
- package/overlays/task/overlay.yml +16 -0
- package/overlays/task/setup.sh +29 -0
- package/overlays/task/verify.sh +14 -0
- package/overlays/tempo/devcontainer.patch.json +0 -1
- package/overlays/tempo/docker-compose.yml +8 -0
- package/overlays/tempo/overlay.yml +1 -0
- package/overlays/windsurf-cli/devcontainer.patch.json +4 -1
- package/package.json +1 -1
- package/tool/schema/config.schema.json +74 -1
- package/overlays/.shared/otel/otel-base-config.yaml +0 -30
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
# Feature Specification: First-Class Mounts Support
|
|
2
|
+
|
|
3
|
+
**Spec ID**: `019-project-mounts`
|
|
4
|
+
**Created**: 2026-05-03
|
|
5
|
+
**Status**: Approved
|
|
6
|
+
**Input**: User request
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
Add a top-level `mounts` field to `superposition.yml` that lets users declare filesystem mounts
|
|
11
|
+
once and have the generation pipeline route them to the correct devcontainer artifact based on
|
|
12
|
+
the active stack.
|
|
13
|
+
|
|
14
|
+
This feature is modeled after the existing first-class `env` behavior.
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## User Scenarios & Testing
|
|
19
|
+
|
|
20
|
+
### User Story 1 — Declare a mount on a plain stack (Priority: P1)
|
|
21
|
+
|
|
22
|
+
A developer adds a `mounts:` list to `superposition.yml` on a `plain` stack and expects each
|
|
23
|
+
entry to appear in `devcontainer.json → mounts[]` after regeneration.
|
|
24
|
+
|
|
25
|
+
**Why this priority**: Plain-stack users who need bind mounts (e.g. a shared workspace folder)
|
|
26
|
+
currently must write custom `devcontainerPatch` JSON, which is difficult to discover and
|
|
27
|
+
error-prone.
|
|
28
|
+
|
|
29
|
+
**Independent Test**: Create a `superposition.yml` with `stack: plain` and a `mounts:` entry.
|
|
30
|
+
Run `regen` and confirm the raw string appears in `devcontainer.json mounts`.
|
|
31
|
+
|
|
32
|
+
**Acceptance Scenarios**:
|
|
33
|
+
|
|
34
|
+
1. **Given** `mounts: ["source=${localWorkspaceFolder}/../libs,target=/workspace/libs,type=bind"]`
|
|
35
|
+
with `stack: plain`, **When** generation runs, **Then** the string is present in
|
|
36
|
+
`devcontainer.json mounts[]`.
|
|
37
|
+
2. **Given** a long-form entry `{value: "...", target: devcontainerMount}` with `stack: plain`,
|
|
38
|
+
**When** generation runs, **Then** the mount value is present in `devcontainer.json mounts[]`.
|
|
39
|
+
3. **Given** a long-form entry with `target: auto` on `stack: plain`, **When** generation runs,
|
|
40
|
+
**Then** the mount routes to `devcontainer.json mounts[]` (same as default).
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
### User Story 2 — Declare a mount on a compose stack (Priority: P1)
|
|
45
|
+
|
|
46
|
+
A developer adds a `mounts:` list to `superposition.yml` on a `compose` stack and expects each
|
|
47
|
+
entry (with `target: auto` or string shorthand) to appear in `devcontainer.json mounts[]` —
|
|
48
|
+
the same as it would on a plain stack — so the project file is **stack-agnostic**.
|
|
49
|
+
|
|
50
|
+
**Why this priority**: Users should be able to swap `stack: plain` ↔ `stack: compose` without
|
|
51
|
+
needing to touch the `mounts:` block.
|
|
52
|
+
|
|
53
|
+
**Independent Test**: Create a `superposition.yml` with `stack: compose` and a `mounts:` entry.
|
|
54
|
+
Run `regen` and confirm the entry appears in `devcontainer.json mounts[]` (not in compose
|
|
55
|
+
volumes, unless `composeVolume` is explicitly requested).
|
|
56
|
+
|
|
57
|
+
**Acceptance Scenarios**:
|
|
58
|
+
|
|
59
|
+
1. **Given** `mounts: ["./data:/workspace/data"]` with `stack: compose`, **When** generation runs,
|
|
60
|
+
**Then** `./data:/workspace/data` appears in `devcontainer.json mounts[]`.
|
|
61
|
+
2. **Given** `target: auto` on `stack: compose`, **When** generation runs, **Then** the mount
|
|
62
|
+
routes to `devcontainer.json mounts[]` (same as plain — stack-agnostic).
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
### User Story 3 — Explicit `composeVolume` target for Docker Compose volumes (Priority: P2)
|
|
67
|
+
|
|
68
|
+
A developer who specifically wants a mount wired as a Docker Compose service volume (e.g. to
|
|
69
|
+
leverage named volumes or compose-specific semantics) sets `target: composeVolume`.
|
|
70
|
+
|
|
71
|
+
**Acceptance Scenarios**:
|
|
72
|
+
|
|
73
|
+
1. **Given** `{value: "...", target: composeVolume}` on `stack: compose`, **When** generation
|
|
74
|
+
runs, **Then** the value appears in `docker-compose.yml services.devcontainer.volumes[]`.
|
|
75
|
+
2. **Given** `{value: "...", target: composeVolume}` on `stack: plain`, **When** generation runs,
|
|
76
|
+
**Then** generation errors with a clear message about compose-only targets.
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
### User Story 4 — Mounts coexist with customizations patches (Priority: P1)
|
|
81
|
+
|
|
82
|
+
Mounts declared in the top-level `mounts:` field are applied before
|
|
83
|
+
`customizations.devcontainerPatch` and `customizations.dockerComposePatch`, so patch overrides
|
|
84
|
+
are still respected.
|
|
85
|
+
|
|
86
|
+
**Acceptance Scenarios**:
|
|
87
|
+
|
|
88
|
+
1. **Given** a `mounts:` entry and a `customizations.devcontainerPatch` that adds an additional
|
|
89
|
+
mount, **When** generation runs, **Then** both mounts appear in `devcontainer.json` (union merge).
|
|
90
|
+
2. **Given** a compose-stack `mounts:` entry and a `customizations.dockerComposePatch` that adds
|
|
91
|
+
extra volumes, **When** generation runs, **Then** both sets appear in
|
|
92
|
+
`services.devcontainer.volumes`.
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
### User Story 5 — Validation (Priority: P1)
|
|
97
|
+
|
|
98
|
+
The parser rejects clearly invalid mount declarations.
|
|
99
|
+
|
|
100
|
+
**Acceptance Scenarios**:
|
|
101
|
+
|
|
102
|
+
1. `target: composeVolume` on `stack: plain` → error at compose/devcontainer generation time.
|
|
103
|
+
2. An entry with an empty `value` string → `ProjectConfigError` at parse time.
|
|
104
|
+
3. An entry that is neither a string nor an object with `value` → `ProjectConfigError`.
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## Schema Design
|
|
109
|
+
|
|
110
|
+
### `superposition.yml`
|
|
111
|
+
|
|
112
|
+
```yaml
|
|
113
|
+
mounts:
|
|
114
|
+
# string shorthand — raw mount spec
|
|
115
|
+
- 'source=${localWorkspaceFolder}/../libs,target=/workspace/libs,type=bind'
|
|
116
|
+
# long form — explicit target routing
|
|
117
|
+
- value: './data:/workspace/data'
|
|
118
|
+
target: auto # default; always devcontainer.json mounts[] regardless of stack
|
|
119
|
+
- value: 'source=certs,target=/certs,type=volume'
|
|
120
|
+
target: devcontainerMount # always devcontainer.json
|
|
121
|
+
- value: './logs:/workspace/logs'
|
|
122
|
+
target: composeVolume # always docker-compose volumes (compose only)
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### Routing table
|
|
126
|
+
|
|
127
|
+
| `target` | `stack: plain` | `stack: compose` |
|
|
128
|
+
| ------------------- | -------------------------- | -------------------------------------------------- |
|
|
129
|
+
| `auto` (default) | `devcontainer.json mounts` | `devcontainer.json mounts` |
|
|
130
|
+
| `devcontainerMount` | `devcontainer.json mounts` | `devcontainer.json mounts` |
|
|
131
|
+
| `composeVolume` | ❌ Error | `docker-compose.yml services.devcontainer.volumes` |
|
|
132
|
+
|
|
133
|
+
`auto` and `devcontainerMount` are stack-agnostic: they always route to `devcontainer.json
|
|
134
|
+
mounts[]` so that the same `superposition.yml` works without modification when swapping
|
|
135
|
+
`stack: plain` ↔ `stack: compose`.
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## Implementation Plan
|
|
140
|
+
|
|
141
|
+
### Types (`tool/schema/types.ts`)
|
|
142
|
+
|
|
143
|
+
- `ProjectMountTarget = 'auto' | 'devcontainerMount' | 'composeVolume'`
|
|
144
|
+
- `ProjectMount = { value: string; target?: ProjectMountTarget }`
|
|
145
|
+
- `QuestionnaireAnswers.projectMounts?: ProjectMount[]`
|
|
146
|
+
- `ProjectConfigSelection.mounts?: Array<string | ProjectMount>`
|
|
147
|
+
|
|
148
|
+
### Schema (`tool/schema/config.schema.json`)
|
|
149
|
+
|
|
150
|
+
Add `mounts` as an array of `string | {value, target?}` (oneOf), matching the `env` pattern.
|
|
151
|
+
|
|
152
|
+
### Parser (`tool/schema/project-config.ts`)
|
|
153
|
+
|
|
154
|
+
- `parseMounts(value): ProjectMount[] | undefined` — normalize strings to `{value}` objects
|
|
155
|
+
- Add `'mounts'` to the supported-keys set
|
|
156
|
+
- Thread `mounts` through `loadProjectConfig`, `buildAnswersFromProjectConfig`,
|
|
157
|
+
`buildProjectConfigSelectionFromAnswers`, and `buildProjectConfigDocument`
|
|
158
|
+
|
|
159
|
+
### Composer (`tool/questionnaire/composer.ts`)
|
|
160
|
+
|
|
161
|
+
- `resolveProjectMountTarget(mount, stack)` — maps `ProjectMountTarget` to resolved destination
|
|
162
|
+
- `applyProjectMountsToDevcontainer(config, mounts, stack)` — deepMerge devcontainerMount entries
|
|
163
|
+
into `config.mounts`
|
|
164
|
+
- Thread compose-volume mounts into `mergeDockerComposeFiles` (analogous to `projectEnv`)
|
|
165
|
+
- Apply before custom patches
|
|
166
|
+
|
|
167
|
+
### Application order
|
|
168
|
+
|
|
169
|
+
1. Base template loaded
|
|
170
|
+
2. Overlays applied
|
|
171
|
+
3. Port offsets applied
|
|
172
|
+
4. Project env applied to devcontainer + compose
|
|
173
|
+
5. **Project mounts applied to devcontainer + compose** ← new
|
|
174
|
+
6. Custom patches applied (devcontainerPatch, dockerComposePatch)
|
|
175
|
+
7. Target patches applied
|
|
176
|
+
8. Files written
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
# Feature Taxonomy
|
|
2
|
+
|
|
3
|
+
This index maps all specs to their feature categories. Maintained by the `tool-pm` agent — update whenever a new spec is added.
|
|
4
|
+
|
|
5
|
+
## Taxonomy categories
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
OVERLAY — Adding or modifying individual overlays
|
|
9
|
+
OVERLAY-NEW — New overlay
|
|
10
|
+
OVERLAY-ENRICH — Enriching an existing overlay
|
|
11
|
+
OVERLAY-FIX — Correctness fix to an overlay
|
|
12
|
+
|
|
13
|
+
PRESET — Preset bundles
|
|
14
|
+
PRESET-NEW — New preset
|
|
15
|
+
PRESET-ENRICH — Enriching an existing preset
|
|
16
|
+
|
|
17
|
+
COMPOSER — Core composition pipeline (composer.ts, merge logic, imports)
|
|
18
|
+
COMPOSER-FEAT — New composition behaviour
|
|
19
|
+
COMPOSER-FIX — Bug fix
|
|
20
|
+
|
|
21
|
+
SCHEMA — Overlay manifest schema, types, validation
|
|
22
|
+
SCHEMA-FIELD — New field in overlay.yml or related types
|
|
23
|
+
SCHEMA-VALID — New validation rule
|
|
24
|
+
|
|
25
|
+
CLI — Command-line interface (init, regen, adopt, doctor)
|
|
26
|
+
CLI-COMMAND — New command or subcommand
|
|
27
|
+
CLI-FLAG — New flag on existing command
|
|
28
|
+
CLI-UX — Interactive prompt or output improvement
|
|
29
|
+
|
|
30
|
+
QUESTIONNAIRE — Overlay selection logic
|
|
31
|
+
QUEST-SECTION — New questionnaire section
|
|
32
|
+
QUEST-LOGIC — Selection / dependency resolution logic
|
|
33
|
+
|
|
34
|
+
DOCS — Documentation
|
|
35
|
+
DOCS-SPEC — Spec meta
|
|
36
|
+
DOCS-GUIDE — Developer or user guide
|
|
37
|
+
DOCS-API — Generated reference
|
|
38
|
+
|
|
39
|
+
INFRA — Project infrastructure (tests, CI, tooling)
|
|
40
|
+
INFRA-TEST — Test coverage
|
|
41
|
+
INFRA-LINT — Lint / formatter
|
|
42
|
+
INFRA-BUILD — Build system
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## OVERLAY — Individual overlays
|
|
48
|
+
|
|
49
|
+
### OVERLAY-NEW
|
|
50
|
+
|
|
51
|
+
| Spec | Title | Status |
|
|
52
|
+
| -------------------------------------------------------- | ------------------------------------- | ------ |
|
|
53
|
+
| [003-mkdocs2-overlay](003-mkdocs2-overlay/spec.md) | MkDocs 2.x Overlay | Final |
|
|
54
|
+
| [005-cuda-overlay](005-cuda-overlay/spec.md) | CUDA (NVIDIA GPU) Overlay | Final |
|
|
55
|
+
| [006-rocm-overlay](006-rocm-overlay/spec.md) | ROCm (AMD GPU) Overlay | Final |
|
|
56
|
+
| [012-ollama-cli-overlay](012-ollama-cli-overlay/spec.md) | Split Ollama Service and CLI Overlays | Final |
|
|
57
|
+
|
|
58
|
+
### OVERLAY-ENRICH
|
|
59
|
+
|
|
60
|
+
_No specs yet._
|
|
61
|
+
|
|
62
|
+
### OVERLAY-FIX
|
|
63
|
+
|
|
64
|
+
_No specs yet._
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## PRESET — Preset bundles
|
|
69
|
+
|
|
70
|
+
### PRESET-NEW
|
|
71
|
+
|
|
72
|
+
_No specs yet._
|
|
73
|
+
|
|
74
|
+
### PRESET-ENRICH
|
|
75
|
+
|
|
76
|
+
_No specs yet._
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## COMPOSER — Composition pipeline
|
|
81
|
+
|
|
82
|
+
### COMPOSER-FEAT
|
|
83
|
+
|
|
84
|
+
| Spec | Title | Status |
|
|
85
|
+
| -------------------------------------------------------------------------- | --------------------------------------------------- | -------- |
|
|
86
|
+
| [010-compose-env-materialization](010-compose-env-materialization/spec.md) | Compose Env Materialization and Env Template Naming | Approved |
|
|
87
|
+
|
|
88
|
+
### COMPOSER-FIX
|
|
89
|
+
|
|
90
|
+
_No specs yet._
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## SCHEMA — Overlay manifest schema
|
|
95
|
+
|
|
96
|
+
### SCHEMA-FIELD
|
|
97
|
+
|
|
98
|
+
| Spec | Title | Status |
|
|
99
|
+
| -------------------------------------------------------- | ----------------------------------------- | ------ |
|
|
100
|
+
| [011-overlay-parameters](011-overlay-parameters/spec.md) | Overlay Parameters with Safe Substitution | Final |
|
|
101
|
+
|
|
102
|
+
### SCHEMA-VALID
|
|
103
|
+
|
|
104
|
+
_No specs yet._
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## CLI — Command-line interface
|
|
109
|
+
|
|
110
|
+
### CLI-COMMAND
|
|
111
|
+
|
|
112
|
+
| Spec | Title | Status |
|
|
113
|
+
| ---------------------------------------- | ---------------------------------------- | ------ |
|
|
114
|
+
| [004-doctor-fix](004-doctor-fix/spec.md) | `doctor --fix` — Interactive Auto-Repair | Final |
|
|
115
|
+
|
|
116
|
+
### CLI-FLAG
|
|
117
|
+
|
|
118
|
+
| Spec | Title | Status |
|
|
119
|
+
| ------------------------------------------------------------------ | ----------------------------- | ------ |
|
|
120
|
+
| [007-target-aware-generation](007-target-aware-generation/spec.md) | Target-Aware Generation | Final |
|
|
121
|
+
| [017-doctor-dry-run](017-doctor-dry-run/spec.md) | Doctor `--fix --dry-run` Flag | Draft |
|
|
122
|
+
|
|
123
|
+
### CLI-UX
|
|
124
|
+
|
|
125
|
+
| Spec | Title | Status |
|
|
126
|
+
| -------------------------------------------------------------------------------------------- | ------------------------------------------ | ------ |
|
|
127
|
+
| [001-verbose-plan-graph](001-verbose-plan-graph/spec.md) | Verbose Plan Graph | Final |
|
|
128
|
+
| [013-doctor-dependency-check](013-doctor-dependency-check/spec.md) | Doctor Overlay Dependency Resolution Check | Draft |
|
|
129
|
+
| [014-doctor-compose-port-cross-validation](014-doctor-compose-port-cross-validation/spec.md) | Doctor Compose / Port Cross-Validation | Draft |
|
|
130
|
+
| [015-doctor-env-example-drift](015-doctor-env-example-drift/spec.md) | Doctor `.env.example` Drift Detection | Draft |
|
|
131
|
+
| [016-doctor-reproducibility-check](016-doctor-reproducibility-check/spec.md) | Doctor Reproducibility Check | Draft |
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## QUESTIONNAIRE — Overlay selection
|
|
136
|
+
|
|
137
|
+
### QUEST-SECTION
|
|
138
|
+
|
|
139
|
+
_No specs yet._
|
|
140
|
+
|
|
141
|
+
### QUEST-LOGIC
|
|
142
|
+
|
|
143
|
+
_No specs yet._
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## DOCS — Documentation
|
|
148
|
+
|
|
149
|
+
### DOCS-SPEC
|
|
150
|
+
|
|
151
|
+
_No specs yet._
|
|
152
|
+
|
|
153
|
+
### DOCS-GUIDE
|
|
154
|
+
|
|
155
|
+
_No specs yet._
|
|
156
|
+
|
|
157
|
+
### DOCS-API
|
|
158
|
+
|
|
159
|
+
_No specs yet._
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## INFRA — Project infrastructure
|
|
164
|
+
|
|
165
|
+
### INFRA-TEST
|
|
166
|
+
|
|
167
|
+
_No specs yet._
|
|
168
|
+
|
|
169
|
+
### INFRA-LINT
|
|
170
|
+
|
|
171
|
+
_No specs yet._
|
|
172
|
+
|
|
173
|
+
### INFRA-BUILD
|
|
174
|
+
|
|
175
|
+
_No specs yet._
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## PROJECT — Project-level configuration
|
|
180
|
+
|
|
181
|
+
| Spec | Title | Status |
|
|
182
|
+
| ---------------------------------------------------------------------- | ------------------------------------------- | -------- |
|
|
183
|
+
| [002-superposition-config-file](002-superposition-config-file/spec.md) | Project Configuration File | Final |
|
|
184
|
+
| [008-project-file-canonical](008-project-file-canonical/spec.md) | Project File Canonical Form | Approved |
|
|
185
|
+
| [009-project-env](009-project-env/spec.md) | Unified Project-Level Environment Variables | Approved |
|
|
186
|
+
| [018-init-project-file](018-init-project-file/spec.md) | `init --project-file` | Final |
|