feat(scripts): add emit-sub-processors compliance script + tests

Adds scripts/compliance/emit-sub-processors.mjs which walks
docs/library-decisions/*.md, filters is-sub-processor: true entries
via frontmatter parsing, merges compliance/sub-processors.manual.yml
(graceful skip if absent), and emits sorted deterministic YAML to
compliance/sub-processors.yml.

- parseFrontmatter: extracts top-level scalars, skips nested blocks
- parseLibraryTraceSubProcessors: discriminated-union filter on
  is-sub-processor flag
- loadManualEntries / parseSimpleYamlList: flat YAML list parser for
  manual entries; injects source: manual
- buildSubProcessors: merge + sort by package name
- renderSubProcessorsYaml: package-first field order, rest alphabetical
- --check and --print modes via shared unifiedDiff from emit-data-map
- 39 unit tests across all exported functions

Wires compliance:sub-processors root package script.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-18 20:01:06 +00:00
parent d8dbc99bab
commit 33bac95c41
3 changed files with 852 additions and 0 deletions

View File

@@ -23,6 +23,7 @@
"fallow:audit": "fallow audit --base main",
"compliance:data-map": "node scripts/compliance/emit-data-map.mjs",
"compliance:retention-policy": "node scripts/compliance/emit-retention-policy.mjs",
"compliance:sub-processors": "node scripts/compliance/emit-sub-processors.mjs",
"work": "node scripts/work/cli.mjs",
"format": "prettier --write \"**/*.{ts,tsx,js,jsx,json,md}\"",
"format:check": "prettier --check \"**/*.{ts,tsx,js,jsx,json,md}\"",