diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..925e260 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,28 @@ +# Svrnty Vision Child Workspace Rules + +This workspace is child-local under the Cortex OS umbrella. + +It is not Cortex OS Core authority. Promotion into Core requires a governed Core route. + +## Authority Order + +1. `/home/svrnty/workspaces/cortex-os/core` active SOT. +2. `/home/svrnty/workspaces/cortex-os/core/AGENTS.md`. +3. This file. +4. `README.md`, `WORKBOARD.yaml`, and local tools. + +## Editing Rule + +Keep work inside this workspace unless Core explicitly routes promotion. + +After editing, run: + +```bash +python3 tools/validate_svrnty_vision_child.py +``` + +## Protected Boundaries + +- Do not mutate `../core/` from this workspace. +- Do not mutate sibling repositories. +- Do not import this workspace into Core source. diff --git a/WORKBOARD.yaml b/WORKBOARD.yaml new file mode 100644 index 0000000..a2cb073 --- /dev/null +++ b/WORKBOARD.yaml @@ -0,0 +1,6 @@ +items: + - id: SVRNTY-VISION-WORK-001 + title: Svrnty Vision Child Workspace Governance + status: candidate + source: README.md + owner: jp diff --git a/tools/validate_svrnty_vision_child.py b/tools/validate_svrnty_vision_child.py new file mode 100755 index 0000000..4804e54 --- /dev/null +++ b/tools/validate_svrnty_vision_child.py @@ -0,0 +1,34 @@ +#!/usr/bin/env python3 +"""Validate Svrnty Vision child workspace governance shell.""" +from __future__ import annotations + +import json +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[1] +REQUIRED = ["AGENTS.md", "README.md", "WORKBOARD.yaml"] + + +def main() -> int: + errors: list[str] = [] + for rel in REQUIRED: + if not (ROOT / rel).exists(): + errors.append(f"missing:{rel}") + checks = { + "AGENTS.md": ["child-local", "not Cortex OS Core authority", "python3 tools/validate_svrnty_vision_child.py"], + "WORKBOARD.yaml": ["SVRNTY-VISION-WORK-001", "status: candidate", "owner: jp"], + } + for rel, snippets in checks.items(): + path = ROOT / rel + if path.exists(): + text = path.read_text(encoding="utf-8") + for snippet in snippets: + if snippet not in text: + errors.append(f"{rel}:missing:{snippet}") + result = {"ok": not errors, "validator": "svrnty-vision-child-v1", "checked": REQUIRED, "errors": errors, "warnings": []} + print(json.dumps(result, indent=2, sort_keys=True)) + return 0 if result["ok"] else 1 + + +if __name__ == "__main__": + raise SystemExit(main())