From a5364f8a3b800040b1801a3ad94a162af67d0b39 Mon Sep 17 00:00:00 2001 From: Dan Mordechay Date: Wed, 14 Oct 2026 13:06:09 +0300 Subject: [PATCH] pre-commit-review: cluster title line carries its rule ids MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The reference showed the cluster header as `🔗 CLUSTER: ` with the rules on the lines below, while SKILL.md shows ` — `. Agents followed the reference, and the report-contract graders read the rules on the title line, so a correct cluster failed its grader. The reference examples and the rendering sentence now carry the ` — ` tail. Co-Authored-By: Claude Opus 5.5 --- core/skills/pre-commit-review/reference.md | 14 ++++++++------ .../skills/pre-commit-review/reference.md | 14 ++++++++------ .../skills/pre-commit-review/reference.md | 14 ++++++++------ .../skills/pre-commit-review/reference.md | 14 ++++++++------ .../skills/pre-commit-review/reference.md | 14 ++++++++------ 5 files changed, 40 insertions(+), 30 deletions(-) diff --git a/core/skills/pre-commit-review/reference.md b/core/skills/pre-commit-review/reference.md index 6dc0565b..f527f35e 100644 --- a/core/skills/pre-commit-review/reference.md +++ b/core/skills/pre-commit-review/reference.md @@ -148,7 +148,7 @@ primitive, R11's the duplicated switch, R2's the ownerless validation: one disea four jurisdictions). Render each cluster as a first-class entry above the categories: ``` -🔗 CLUSTER: Alert.Channel +🔗 CLUSTER: Alert.Channel — R1, R11, R2, R7 Convergence: 4 findings — R1, R11, R2, R7 Hypothesis: missing domain concept — a Channel type wants to exist Skeptic: CONFIRMED (score 6: switched in 3 files, +2 unrepresentable — the @@ -157,12 +157,14 @@ four jurisdictions). Render each cluster as a first-class entry above the catego implements; do NOT fix members independently (partial fixes undo each other) ``` -Render *every* cluster the pass finds, one `🔗 CLUSTER: ` line per converged -anchor: two findings or twenty, the largest and the smallest alike. The title is the +Render *every* cluster the pass finds, one `🔗 CLUSTER: — ` line per converged +anchor: two findings or twenty, the largest and the smallest alike. The title names the anchor itself — the type, field, function or package name the findings share -(`🔗 CLUSTER: ProcessHeartbeat`, `🔗 CLUSTER: Catalog.Find`, -`🔗 CLUSTER: internal/common, internal/utils`), never a description of the problem; -the description is the Hypothesis line beneath it. When the skeptic +(`🔗 CLUSTER: ProcessHeartbeat — R3, R11, R12`, `🔗 CLUSTER: Catalog.Find — R1, R2`, +`🔗 CLUSTER: internal/common, internal/utils — R4, R5`), never a description of the problem; +the description is the Hypothesis line beneath it. The rules after the dash are the ids +of the rules that converged on the anchor, on the title line itself, never on the +lines below. When the skeptic reviewed an extraction at that anchor, the entry carries its verdict — a CONFIRMED type routes design-first as above; a REFUTED one keeps the cluster (the convergence is still real) and routes to the cheaper alternative, which ships as 🟢 Polish. When no diff --git a/go-linter-driven-development/skills/pre-commit-review/reference.md b/go-linter-driven-development/skills/pre-commit-review/reference.md index 6cec48a4..05c52b75 100644 --- a/go-linter-driven-development/skills/pre-commit-review/reference.md +++ b/go-linter-driven-development/skills/pre-commit-review/reference.md @@ -148,7 +148,7 @@ primitive, R11's the duplicated switch, R2's the ownerless validation: one disea four jurisdictions). Render each cluster as a first-class entry above the categories: ``` -🔗 CLUSTER: Alert.Channel +🔗 CLUSTER: Alert.Channel — R1, R11, R2, R7 Convergence: 4 findings — R1, R11, R2, R7 Hypothesis: missing domain concept — a Channel type wants to exist Skeptic: CONFIRMED (score 6: switched in 3 files, +2 unrepresentable — the @@ -157,12 +157,14 @@ four jurisdictions). Render each cluster as a first-class entry above the catego implements; do NOT fix members independently (partial fixes undo each other) ``` -Render *every* cluster the pass finds, one `🔗 CLUSTER: ` line per converged -anchor: two findings or twenty, the largest and the smallest alike. The title is the +Render *every* cluster the pass finds, one `🔗 CLUSTER: — ` line per converged +anchor: two findings or twenty, the largest and the smallest alike. The title names the anchor itself — the type, field, function or package name the findings share -(`🔗 CLUSTER: ProcessHeartbeat`, `🔗 CLUSTER: Catalog.Find`, -`🔗 CLUSTER: internal/common, internal/utils`), never a description of the problem; -the description is the Hypothesis line beneath it. When the skeptic +(`🔗 CLUSTER: ProcessHeartbeat — R3, R11, R12`, `🔗 CLUSTER: Catalog.Find — R1, R2`, +`🔗 CLUSTER: internal/common, internal/utils — R4, R5`), never a description of the problem; +the description is the Hypothesis line beneath it. The rules after the dash are the ids +of the rules that converged on the anchor, on the title line itself, never on the +lines below. When the skeptic reviewed an extraction at that anchor, the entry carries its verdict — a CONFIRMED type routes design-first as above; a REFUTED one keeps the cluster (the convergence is still real) and routes to the cheaper alternative, which ships as 🟢 Polish. When no diff --git a/linter-driven-development/skills/pre-commit-review/reference.md b/linter-driven-development/skills/pre-commit-review/reference.md index ef0d3461..22dfed40 100644 --- a/linter-driven-development/skills/pre-commit-review/reference.md +++ b/linter-driven-development/skills/pre-commit-review/reference.md @@ -148,7 +148,7 @@ primitive, R11's the duplicated switch, R2's the ownerless validation: one disea four jurisdictions). Render each cluster as a first-class entry above the categories: ``` -🔗 CLUSTER: Alert.Channel +🔗 CLUSTER: Alert.Channel — R1, R11, R2, R7 Convergence: 4 findings — R1, R11, R2, R7 Hypothesis: missing domain concept — a Channel type wants to exist Skeptic: CONFIRMED (score 6: switched in 3 files, +2 unrepresentable — the @@ -157,12 +157,14 @@ four jurisdictions). Render each cluster as a first-class entry above the catego implements; do NOT fix members independently (partial fixes undo each other) ``` -Render *every* cluster the pass finds, one `🔗 CLUSTER: ` line per converged -anchor: two findings or twenty, the largest and the smallest alike. The title is the +Render *every* cluster the pass finds, one `🔗 CLUSTER: — ` line per converged +anchor: two findings or twenty, the largest and the smallest alike. The title names the anchor itself — the type, field, function or package name the findings share -(`🔗 CLUSTER: ProcessHeartbeat`, `🔗 CLUSTER: Catalog.Find`, -`🔗 CLUSTER: internal/common, internal/utils`), never a description of the problem; -the description is the Hypothesis line beneath it. When the skeptic +(`🔗 CLUSTER: ProcessHeartbeat — R3, R11, R12`, `🔗 CLUSTER: Catalog.Find — R1, R2`, +`🔗 CLUSTER: internal/common, internal/utils — R4, R5`), never a description of the problem; +the description is the Hypothesis line beneath it. The rules after the dash are the ids +of the rules that converged on the anchor, on the title line itself, never on the +lines below. When the skeptic reviewed an extraction at that anchor, the entry carries its verdict — a CONFIRMED type routes design-first as above; a REFUTED one keeps the cluster (the convergence is still real) and routes to the cheaper alternative, which ships as 🟢 Polish. When no diff --git a/python-linter-driven-development/skills/pre-commit-review/reference.md b/python-linter-driven-development/skills/pre-commit-review/reference.md index bb6b58c9..1b0b3386 100644 --- a/python-linter-driven-development/skills/pre-commit-review/reference.md +++ b/python-linter-driven-development/skills/pre-commit-review/reference.md @@ -148,7 +148,7 @@ primitive, R11's the duplicated switch, R2's the ownerless validation: one disea four jurisdictions). Render each cluster as a first-class entry above the categories: ``` -🔗 CLUSTER: Alert.Channel +🔗 CLUSTER: Alert.Channel — R1, R11, R2, R7 Convergence: 4 findings — R1, R11, R2, R7 Hypothesis: missing domain concept — a Channel type wants to exist Skeptic: CONFIRMED (score 6: switched in 3 files, +2 unrepresentable — the @@ -157,12 +157,14 @@ four jurisdictions). Render each cluster as a first-class entry above the catego implements; do NOT fix members independently (partial fixes undo each other) ``` -Render *every* cluster the pass finds, one `🔗 CLUSTER: ` line per converged -anchor: two findings or twenty, the largest and the smallest alike. The title is the +Render *every* cluster the pass finds, one `🔗 CLUSTER: — ` line per converged +anchor: two findings or twenty, the largest and the smallest alike. The title names the anchor itself — the type, field, function or package name the findings share -(`🔗 CLUSTER: ProcessHeartbeat`, `🔗 CLUSTER: Catalog.Find`, -`🔗 CLUSTER: internal/common, internal/utils`), never a description of the problem; -the description is the Hypothesis line beneath it. When the skeptic +(`🔗 CLUSTER: ProcessHeartbeat — R3, R11, R12`, `🔗 CLUSTER: Catalog.Find — R1, R2`, +`🔗 CLUSTER: internal/common, internal/utils — R4, R5`), never a description of the problem; +the description is the Hypothesis line beneath it. The rules after the dash are the ids +of the rules that converged on the anchor, on the title line itself, never on the +lines below. When the skeptic reviewed an extraction at that anchor, the entry carries its verdict — a CONFIRMED type routes design-first as above; a REFUTED one keeps the cluster (the convergence is still real) and routes to the cheaper alternative, which ships as 🟢 Polish. When no diff --git a/ts-react-linter-driven-development/skills/pre-commit-review/reference.md b/ts-react-linter-driven-development/skills/pre-commit-review/reference.md index b1d61b49..7faaed18 100644 --- a/ts-react-linter-driven-development/skills/pre-commit-review/reference.md +++ b/ts-react-linter-driven-development/skills/pre-commit-review/reference.md @@ -148,7 +148,7 @@ primitive, R11's the duplicated switch, R2's the ownerless validation: one disea four jurisdictions). Render each cluster as a first-class entry above the categories: ``` -🔗 CLUSTER: Alert.Channel +🔗 CLUSTER: Alert.Channel — R1, R11, R2, R7 Convergence: 4 findings — R1, R11, R2, R7 Hypothesis: missing domain concept — a Channel type wants to exist Skeptic: CONFIRMED (score 6: switched in 3 files, +2 unrepresentable — the @@ -157,12 +157,14 @@ four jurisdictions). Render each cluster as a first-class entry above the catego implements; do NOT fix members independently (partial fixes undo each other) ``` -Render *every* cluster the pass finds, one `🔗 CLUSTER: ` line per converged -anchor: two findings or twenty, the largest and the smallest alike. The title is the +Render *every* cluster the pass finds, one `🔗 CLUSTER: — ` line per converged +anchor: two findings or twenty, the largest and the smallest alike. The title names the anchor itself — the type, field, function or package name the findings share -(`🔗 CLUSTER: ProcessHeartbeat`, `🔗 CLUSTER: Catalog.Find`, -`🔗 CLUSTER: internal/common, internal/utils`), never a description of the problem; -the description is the Hypothesis line beneath it. When the skeptic +(`🔗 CLUSTER: ProcessHeartbeat — R3, R11, R12`, `🔗 CLUSTER: Catalog.Find — R1, R2`, +`🔗 CLUSTER: internal/common, internal/utils — R4, R5`), never a description of the problem; +the description is the Hypothesis line beneath it. The rules after the dash are the ids +of the rules that converged on the anchor, on the title line itself, never on the +lines below. When the skeptic reviewed an extraction at that anchor, the entry carries its verdict — a CONFIRMED type routes design-first as above; a REFUTED one keeps the cluster (the convergence is still real) and routes to the cheaper alternative, which ships as 🟢 Polish. When no