diff --git a/AGENTS.md b/AGENTS.md index 2191c4c..c97a3f3 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -132,7 +132,7 @@ make check # lint + mypy + cov (run before push) ``` ## Build / generate -The committed payloads under `docs/integrated/` are produced by the +The committed payloads under `integrated/` are produced by the pipeline. To regenerate them from `sources/`: ```bash @@ -147,7 +147,7 @@ hasn't drifted from the committed integrated payloads. These are the `verification_commands` declared in `dist/repo.meta.json`: ```bash -make integrated # regenerates docs/integrated/ deterministically +make integrated # regenerates integrated/ deterministically make test # full test suite ``` @@ -155,7 +155,7 @@ A green `make check-manifest` proves the committed integrated payloads still match what the pipeline produces. ## Guardrails -- **Do not hand-edit `docs/integrated/*` files.** They are pipeline +- **Do not hand-edit `integrated/*` files.** They are pipeline outputs; edit `sources/` + the extract/reconcile/emit stages instead. - **Do not hand-edit `dist/repo.meta.json` `verified_on` to a future date.** The Phase 0 smoke test rejects manifests older than 90 days; diff --git a/dist/repo.meta.json b/dist/repo.meta.json index caf2cdf..5d19a4c 100644 --- a/dist/repo.meta.json +++ b/dist/repo.meta.json @@ -8,15 +8,15 @@ "agent_instructions": "AGENTS.md", "verified_on": "2026-05-10", "exposes": { - "grammar_surface": "docs/integrated/grammar-surface.json", - "commands": "docs/integrated/commands.tsv", - "intrinsic_functions": "docs/integrated/intrinsic-functions.tsv", - "intrinsic_special_variables": "docs/integrated/intrinsic-special-variables.tsv", - "operators": "docs/integrated/operators.tsv", - "errors": "docs/integrated/errors.tsv", - "pragmatic_standard": "docs/integrated/pragmatic-m-standard.json", - "operational_standard": "docs/integrated/operational-m-standard.json", - "va_sac_rules": "docs/integrated/va-sac-rules.tsv" + "grammar_surface": "integrated/grammar-surface.json", + "commands": "integrated/commands.tsv", + "intrinsic_functions": "integrated/intrinsic-functions.tsv", + "intrinsic_special_variables": "integrated/intrinsic-special-variables.tsv", + "operators": "integrated/operators.tsv", + "errors": "integrated/errors.tsv", + "pragmatic_standard": "integrated/pragmatic-m-standard.json", + "operational_standard": "integrated/operational-m-standard.json", + "va_sac_rules": "integrated/va-sac-rules.tsv" }, "verification_commands": ["make integrated", "make test"] } diff --git a/docs/integrated/commands.json b/integrated/commands.json similarity index 100% rename from docs/integrated/commands.json rename to integrated/commands.json diff --git a/docs/integrated/commands.tsv b/integrated/commands.tsv similarity index 100% rename from docs/integrated/commands.tsv rename to integrated/commands.tsv diff --git a/docs/integrated/conflicts.json b/integrated/conflicts.json similarity index 100% rename from docs/integrated/conflicts.json rename to integrated/conflicts.json diff --git a/docs/integrated/conflicts.tsv b/integrated/conflicts.tsv similarity index 100% rename from docs/integrated/conflicts.tsv rename to integrated/conflicts.tsv diff --git a/docs/integrated/environment.json b/integrated/environment.json similarity index 100% rename from docs/integrated/environment.json rename to integrated/environment.json diff --git a/docs/integrated/environment.tsv b/integrated/environment.tsv similarity index 100% rename from docs/integrated/environment.tsv rename to integrated/environment.tsv diff --git a/docs/integrated/errors.json b/integrated/errors.json similarity index 100% rename from docs/integrated/errors.json rename to integrated/errors.json diff --git a/docs/integrated/errors.tsv b/integrated/errors.tsv similarity index 100% rename from docs/integrated/errors.tsv rename to integrated/errors.tsv diff --git a/docs/integrated/grammar-surface.json b/integrated/grammar-surface.json similarity index 100% rename from docs/integrated/grammar-surface.json rename to integrated/grammar-surface.json diff --git a/docs/integrated/intrinsic-functions.json b/integrated/intrinsic-functions.json similarity index 100% rename from docs/integrated/intrinsic-functions.json rename to integrated/intrinsic-functions.json diff --git a/docs/integrated/intrinsic-functions.tsv b/integrated/intrinsic-functions.tsv similarity index 100% rename from docs/integrated/intrinsic-functions.tsv rename to integrated/intrinsic-functions.tsv diff --git a/docs/integrated/intrinsic-special-variables.json b/integrated/intrinsic-special-variables.json similarity index 100% rename from docs/integrated/intrinsic-special-variables.json rename to integrated/intrinsic-special-variables.json diff --git a/docs/integrated/intrinsic-special-variables.tsv b/integrated/intrinsic-special-variables.tsv similarity index 100% rename from docs/integrated/intrinsic-special-variables.tsv rename to integrated/intrinsic-special-variables.tsv diff --git a/docs/integrated/multi-vendor-extensions.tsv b/integrated/multi-vendor-extensions.tsv similarity index 100% rename from docs/integrated/multi-vendor-extensions.tsv rename to integrated/multi-vendor-extensions.tsv diff --git a/docs/integrated/operational-m-standard.json b/integrated/operational-m-standard.json similarity index 100% rename from docs/integrated/operational-m-standard.json rename to integrated/operational-m-standard.json diff --git a/docs/integrated/operational-m-standard.tsv b/integrated/operational-m-standard.tsv similarity index 100% rename from docs/integrated/operational-m-standard.tsv rename to integrated/operational-m-standard.tsv diff --git a/docs/integrated/operators.json b/integrated/operators.json similarity index 100% rename from docs/integrated/operators.json rename to integrated/operators.json diff --git a/docs/integrated/operators.tsv b/integrated/operators.tsv similarity index 100% rename from docs/integrated/operators.tsv rename to integrated/operators.tsv diff --git a/docs/integrated/pattern-codes.json b/integrated/pattern-codes.json similarity index 100% rename from docs/integrated/pattern-codes.json rename to integrated/pattern-codes.json diff --git a/docs/integrated/pattern-codes.tsv b/integrated/pattern-codes.tsv similarity index 100% rename from docs/integrated/pattern-codes.tsv rename to integrated/pattern-codes.tsv diff --git a/docs/integrated/pragmatic-m-standard.json b/integrated/pragmatic-m-standard.json similarity index 100% rename from docs/integrated/pragmatic-m-standard.json rename to integrated/pragmatic-m-standard.json diff --git a/docs/integrated/pragmatic-m-standard.tsv b/integrated/pragmatic-m-standard.tsv similarity index 100% rename from docs/integrated/pragmatic-m-standard.tsv rename to integrated/pragmatic-m-standard.tsv diff --git a/docs/integrated/va-sac-compliance.json b/integrated/va-sac-compliance.json similarity index 100% rename from docs/integrated/va-sac-compliance.json rename to integrated/va-sac-compliance.json diff --git a/docs/integrated/va-sac-compliance.tsv b/integrated/va-sac-compliance.tsv similarity index 100% rename from docs/integrated/va-sac-compliance.tsv rename to integrated/va-sac-compliance.tsv diff --git a/docs/integrated/va-sac-rules.tsv b/integrated/va-sac-rules.tsv similarity index 100% rename from docs/integrated/va-sac-rules.tsv rename to integrated/va-sac-rules.tsv diff --git a/src/m_standard/tools/validate.py b/src/m_standard/tools/validate.py index 6b2319b..4752428 100644 --- a/src/m_standard/tools/validate.py +++ b/src/m_standard/tools/validate.py @@ -34,25 +34,19 @@ def _integrated_dir(project_root: Path) -> Path: """Resolve the integrated/ directory location. - The repo layout was restructured in commit 3bfb947 (2026-04-30) to - move `integrated/` under `docs/integrated/`. Every gate in this - module reads from there. Accept either layout so a mid-migration - or older checkout still works: - - 1. `/docs/integrated/` (current layout, preferred) - 2. `/integrated/` (pre-3bfb947 fallback) - - Returns the first that exists; falls back to the new path even if - neither exists, so callers that probe ``.exists()`` get a path - rooted in the current layout. + The canonical layout has `integrated/` at the repo root, alongside + `per-source/`, `schemas/`, `sources/`, and `src/`. The repo briefly + held it at `docs/integrated/` (3bfb947 .. its reversion); the + fallback is kept for one release cycle so a stale checkout still + validates. """ - new = project_root / "docs" / "integrated" - if new.is_dir(): - return new - legacy = project_root / "integrated" + canonical = project_root / "integrated" + if canonical.is_dir(): + return canonical + legacy = project_root / "docs" / "integrated" if legacy.is_dir(): return legacy - return new + return canonical # Names that are ALWAYS tracked under sources// regardless of