@thedecipherist/mdd 1.5.12 → 1.6.0
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/commands/mdd-audit.md +3 -0
- package/commands/mdd-build.md +12 -0
- package/commands/mdd-plan.md +14 -2
- package/package.json +1 -1
package/commands/mdd-audit.md
CHANGED
|
@@ -129,6 +129,9 @@ Manifest: .mdd/jobs/audit-<date>/MANIFEST.md
|
|
|
129
129
|
- Feature has `depends_on` entries with `integration_contracts` but `satisfies_contracts` is empty
|
|
130
130
|
- Security module's `integration_contracts` specifies a caller that has no `satisfies_contracts` entry
|
|
131
131
|
- Missing test cases for documented business rules
|
|
132
|
+
- CLI command missing any of the universal flags (--env, --cwd, --verbose, --strict, --silent) — check all commands against the CLI feature doc's universal flags requirement
|
|
133
|
+
- `file.*` filesystem helpers or path-resolving functions accept arbitrary paths without confinement to a documented jailRoot
|
|
134
|
+
- Silent error swallow: catch block returns empty/undefined without pushing to warnings array
|
|
132
135
|
|
|
133
136
|
### P4 Low
|
|
134
137
|
- Code style inconsistencies
|
package/commands/mdd-build.md
CHANGED
|
@@ -638,6 +638,18 @@ Quality gates passing does not mean the feature works. This phase verifies actua
|
|
|
638
638
|
□ Confirm no unintended side effects on unrelated files or state
|
|
639
639
|
```
|
|
640
640
|
|
|
641
|
+
**Spec invariants — applies when the feature doc references spec language like "cannot be overridden", "always blocked", "immutable", "confinement", or "required":**
|
|
642
|
+
```
|
|
643
|
+
□ Every spec-stated invariant must be verifiably enforced in code:
|
|
644
|
+
"cannot be overridden" → Object.freeze() on arrays/objects + readonly type
|
|
645
|
+
"always blocked" → the block path runs BEFORE any allow logic
|
|
646
|
+
"confinement" → an actual path check exists at every entry point, not just a gate module
|
|
647
|
+
"required" → ParseError or equivalent thrown for missing values (no silent empty string)
|
|
648
|
+
□ Run grep for the invariant keyword in source — verify it appears in a test assertion, not just prose
|
|
649
|
+
□ If the spec says module X enforces Y, verify X is actually CALLED at the relevant call site
|
|
650
|
+
(building a security module is not the same as wiring it)
|
|
651
|
+
```
|
|
652
|
+
|
|
641
653
|
**Ownership Default — applies to ALL feature types:**
|
|
642
654
|
|
|
643
655
|
```
|
package/commands/mdd-plan.md
CHANGED
|
@@ -278,8 +278,20 @@ For each feature in the wave's feature table, in dependency order, skipping `com
|
|
|
278
278
|
4. Update the wave doc's `Doc` column with the feature doc path (once created in MDD Phase 3).
|
|
279
279
|
5. Run full MDD Build Mode (Phases 1–7) for the feature, at the chosen interaction level.
|
|
280
280
|
- Feature doc is auto-numbered from `.mdd/docs/` and gets `initiative`, `wave`, `wave_status` fields added.
|
|
281
|
-
6.
|
|
282
|
-
|
|
281
|
+
6. **PE3 Completion Gate** — run these checks BEFORE marking `[x]`. This is a hard gate, not advisory.
|
|
282
|
+
|
|
283
|
+
**a. source_files existence check** — read `source_files` from the feature doc. For each file listed, verify it exists on disk:
|
|
284
|
+
```bash
|
|
285
|
+
# For each file in source_files:
|
|
286
|
+
test -f <path> && echo "OK: <path>" || echo "MISSING: <path>"
|
|
287
|
+
```
|
|
288
|
+
If any file is missing: mark the feature `[!]` in MANIFEST with the list of missing files. Do NOT proceed to step 7 — implement the missing files or explicitly document them as deferred in `known_issues`.
|
|
289
|
+
|
|
290
|
+
**b. satisfies_contracts verification** — read `satisfies_contracts` from the feature doc. If any entry is still `status: pending`, the security/integration contract was never wired. Find the call site, wire it, update to `verified: <file>:<line>`. A feature cannot be `[x]` with pending contracts.
|
|
291
|
+
|
|
292
|
+
**c. Doc status write** — confirm `status: complete` is in the feature doc frontmatter. Phase 7c should have written this. If it is missing (still `draft` or `in_progress`), write it now along with `last_synced: <today>` and `phase: all`. This is NOT optional — a missing status write means the doc audit will flag the feature as incomplete on the next run.
|
|
293
|
+
|
|
294
|
+
7. Mark the feature `[x]` in `MANIFEST.md`. If the completion gate blocked (step 6a or 6b failed), mark `[!]` with a one-line note listing what was missing.
|
|
283
295
|
8. Ask: *"Feature N done ✓. Start Feature N+1? (yes / pause here)"*
|
|
284
296
|
|
|
285
297
|
**Resume behaviour:** if re-run on a partially complete wave, stale job detection in PE1 handles resume. MANIFEST is the authoritative progress record — it is always written before and after each feature so an interrupted session can pick up at the exact right point.
|