From a2698a80cfe528496beef794f9b207635253cd5f Mon Sep 17 00:00:00 2001 From: Brummel Date: Fri, 29 May 2026 15:14:00 +0200 Subject: [PATCH] config: opt profile into spec_validation parse gates MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Skills Issue #1 (compound-hallucination hardening) shipped a new optional profile slot, `spec_validation.parsers`, that maps markdown fence labels to validation commands. Three new gates consume it: brainstorm Step 7 parse-every-block, planner Step 5 parse-the-bytes-you-inline, and the grounding-check code-block parse pass. A profile written before the slot existed has all three running as silent no-ops — exactly the failure mode the raw-buf.2 spec slipped through. Register three fence labels: - `ail` → `ail check {file}` — Form-A surface modules. `check` is strictly broader than `parse` (catches the parser-novel head class AND the type-level rejects an MVP-only construct triggers, e.g. polymorphic fn-type without explicit forall), so it would have BLOCKED the storage-tag / RawBuf-shorthand / implicit-forall chain at Step 7 of brainstorm. - `ail-json` → `ail check {file}` — JSON AST form; `check` auto-detects extension. - `ll` → `llvm-as {file} -o /dev/null` — LLVM IR snippets in codegen specs. Verified `ail check` works on a standalone Form-A file (no workspace setup needed; the loader injects prelude + kernel). --- .claude/dev-cycle-profile.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.claude/dev-cycle-profile.yml b/.claude/dev-cycle-profile.yml index e31df5c..60472d1 100644 --- a/.claude/dev-cycle-profile.yml +++ b/.claude/dev-cycle-profile.yml @@ -68,6 +68,18 @@ git: notifications: command: "~/.claude/notify.sh" +spec_validation: + parsers: + ail: + ext: ".ail" + cmd: "ail check {file}" + ail-json: + ext: ".ail.json" + cmd: "ail check {file}" + ll: + ext: ".ll" + cmd: "llvm-as {file} -o /dev/null" + pipeline: brainstorm: { gates: [planner] } planner: { gates: [implement] }