diff --git a/packages/mosaic/framework/defaults/AGENTS.md b/packages/mosaic/framework/defaults/AGENTS.md index 260c6c2..beb3285 100755 --- a/packages/mosaic/framework/defaults/AGENTS.md +++ b/packages/mosaic/framework/defaults/AGENTS.md @@ -70,6 +70,9 @@ Skills, hooks, MCP, and plugins are force multipliers you MUST use when applicab ## Missing core file If `CONSTITUTION.md`, `AGENTS.md`, `SOUL.md`, or the runtime contract is missing, stop and report it. +This agent-facing strictness is intentional and stricter than the launcher: the launcher injects +`CONSTITUTION.md` tolerantly (skipping it if absent so pre-upgrade hosts keep working), but once a host +is re-seeded a genuinely missing core file is a stop-and-report condition — not something to proceed past. ## Session Closure diff --git a/packages/mosaic/framework/defaults/CONSTITUTION.md b/packages/mosaic/framework/defaults/CONSTITUTION.md index 1a51fc3..35c6abd 100644 --- a/packages/mosaic/framework/defaults/CONSTITUTION.md +++ b/packages/mosaic/framework/defaults/CONSTITUTION.md @@ -2,8 +2,11 @@ The irreducible, non-negotiable law for every Mosaic agent on every harness. -**Framework-owned.** This file is overwritten verbatim on every upgrade — do not edit it. To change -behavior, add a `.local.md` overlay or a `policy/` file (tighten-only; see `constitution/LAYER-MODEL.md`). +**Framework-owned.** This file is overwritten verbatim on every upgrade — do not edit it. There is +**no `CONSTITUTION.local.md`**: hard gates are not locally overridable. A lower layer may only make +behavior _stricter_, never relax or override a gate (see Precedence). Operator customization lives in +other layers — `SOUL.md` / `USER.md` and the tighten-only overlays `STANDARDS.local.md` / +`SOUL.local.md` / `USER.local.md` / `policy/*.md` (see `constitution/LAYER-MODEL.md`). Authored in **capability verbs**: where a gate names a capability ("structured reasoning", "queue guard"), the runtime adapter binds it to a concrete tool and states whether absence is a hard stop. diff --git a/packages/mosaic/framework/tools/quality/scripts/verify-sanitized.sh b/packages/mosaic/framework/tools/quality/scripts/verify-sanitized.sh index ec2a433..4324f8e 100755 --- a/packages/mosaic/framework/tools/quality/scripts/verify-sanitized.sh +++ b/packages/mosaic/framework/tools/quality/scripts/verify-sanitized.sh @@ -12,7 +12,7 @@ # 2. STRUCTURAL (private $HOME default in *.sh) — scanned everywhere EXCEPT examples/, # because worked example overlays/personas legitimately show placeholder paths. # -# File types: *.md, *.sh, *.ps1, *.json, and the extensionless CLI scripts under +# File types: *.md, *.sh, *.ps1, *.json, *.yml/*.yaml, *.toml, *.env, *.service, and the CLI scripts under # tools/_scripts/. Excludes node_modules/ and this gate file. # # NOTE: '\bPDA\b' intentionally matches "PDA-friendly" (the contamination removed in P2); @@ -39,7 +39,7 @@ cd "$FRAMEWORK_ROOT" || { echo "FRAMEWORK_ROOT not found: $FRAMEWORK_ROOT" >&2; # Identity scope = ALL shipped text files (examples/ INCLUDED). _files_identity() { find . -type f \ - \( -name '*.md' -o -name '*.sh' -o -name '*.ps1' -o -name '*.json' -o -path '*/tools/_scripts/*' \) \ + \( -name '*.md' -o -name '*.sh' -o -name '*.ps1' -o -name '*.json' -o -name '*.yml' -o -name '*.yaml' -o -name '*.toml' -o -name '*.env' -o -name '*.service' -o -path '*/tools/_scripts/*' \) \ -not -path '*/node_modules/*' -not -path "./$SELF_REL" -print0 } # Structural scope = shipped scripts, examples/ EXCLUDED.