@@ -26,7 +26,6 @@ set -euo pipefail
2626
2727SCAN_PATH=" ${INPUT_PATH:- .} "
2828STRICT=" ${INPUT_STRICT:- false} "
29- ENFORCE_DIALECT=" ${INPUT_ENFORCE_CANONICAL_DIALECT:- false} "
3029PATHS_IGNORE_RAW=" ${INPUT_PATHS_IGNORE:- } "
3130GITHUB_OUTPUT_FILE=" ${GITHUB_OUTPUT:-/ dev/ null} "
3231
@@ -279,32 +278,6 @@ validate_a2ml() {
279278 fi
280279 fi
281280 done < " $file "
282-
283- # --- Check 5: Canonical dialect (TOML) ---
284- # Estate canon (2026-07-06): .a2ml is ONE dialect — TOML (`key = value` /
285- # `[section]`). Flag repo-specific files still written as YAML (`key:`) or
286- # S-expression (`(form ...)`). AI manifests are template-sourced (converted
287- # upstream in rsr-template-repo/standards), so they are exempt here to avoid
288- # estate-wide noise before that conversion lands. Warning by default so the
289- # estate can migrate incrementally; set enforce_canonical_dialect=true to
290- # make it a hard error once conversion is complete.
291- if [[ " $is_manifest " == " false" ]]; then
292- local _sexpr _toml _yaml _dialect=" "
293- _sexpr=$( grep -cE ' ^[[:space:]]*\([a-zA-Z]' " $file " 2> /dev/null || true)
294- _toml=$( grep -cE ' ^[[:space:]]*(\[[^]]+\]|[A-Za-z0-9_.-]+[[:space:]]*=)' " $file " 2> /dev/null || true)
295- _yaml=$( grep -cE ' ^[[:space:]]*[A-Za-z0-9_-]+:[[:space:]]' " $file " 2> /dev/null || true)
296- if [[ " ${_sexpr:- 0} " -gt 2 && " ${_toml:- 0} " -eq 0 ]]; then
297- _dialect=" S-expression"
298- elif [[ " ${_yaml:- 0} " -gt 2 && " ${_toml:- 0} " -le 1 ]]; then
299- _dialect=" YAML"
300- fi
301- if [[ -n " $_dialect " ]]; then
302- local _sev=" warning"
303- [[ " $ENFORCE_DIALECT " == " true" ]] && _sev=" error"
304- report_issue " $_sev " " $file " " 1" \
305- " Non-canonical A2ML dialect ($_dialect ). Canonical A2ML dialect is TOML (key = value / [section]); convert this file."
306- fi
307- fi
308281}
309282
310283# ---------------------------------------------------------------------------
0 commit comments