Skip to content

Commit aa5973f

Browse files
hyperpolymathclaude
andcommitted
refine(hypatia-rules): HYP-S005 empty-metadata handling + S001 scope note
HYP-S005 — extend `grade_ge_c_but_early_stage` to treat absent completion-percentage as equivalent to <50 (a missing number cannot back a C claim). Add `grade_ge_c_but_missing_self_consistency_inputs`: if either version OR completion-percentage is absent on a C/B/A claim, the self-consistency precheck cannot run — treat the claim as a structural overclaim until STATE.a2ml is completed. HYP-S001 — add validation note: S001 stays narrowly scoped to actual backwards transitions in the recorded grade octad. Self-inconsistency belongs in S005 so historical demotions and forward overshoots remain separable in findings. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent ce45b4b commit aa5973f

2 files changed

Lines changed: 29 additions & 5 deletions

File tree

hypatia-rules/crg-demotion-detector.a2ml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,11 @@
55
# Sibling: HYP-S005 crg-overclaim-detector fires on forwards-overshoots
66
# (self-declared grade without v2.0 evidence artefacts). Together the pair
77
# enforces grade-honesty in both directions.
8+
#
9+
# Validation note (2026-04-18): keep S001 narrowly scoped to *actual*
10+
# backwards transitions in recorded grade octads; do not fold self-consistency
11+
# checks here. Self-inconsistent C/B/A claims belong in HYP-S005 so forward
12+
# overshoots and historical demotions stay separable in findings.
813

914
@rule(version="1.0"):
1015
id: HYP-S001

hypatia-rules/crg-overclaim-detector.a2ml

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -172,18 +172,37 @@ grade_ge_c_but_early_stage:
172172
condition: >-
173173
parse_state.crg-grade IN {"C", "B", "A"}
174174
AND parse_state.version < "0.5.0"
175-
AND parse_state.completion-percentage < 50
175+
AND (
176+
parse_state.completion-percentage < 50
177+
OR parse_state.completion-percentage IS empty_or_absent
178+
)
176179
AND parse_state.dogfooding-status IS empty_or_absent
177180
severity: high
178181
finding_kind: self-inconsistent-claim
179182
exempt_if:
180183
- "[dogfooding-status] is populated (explains why C is plausible despite the numbers)"
181184
- "crg-grade-demoted is set to a recent date (repo is already in a correction cycle)"
182185
message: >-
183-
{component} claims {declared} with version={version}, completion={completion}%,
184-
no [dogfooding-status]. Under v2.0 this is an overclaim on the face of
185-
STATE.a2ml — demote to E (or D if structural-policy compliant), or populate
186-
[dogfooding-status] with evidence.
186+
{component} claims {declared} with early-stage metadata
187+
(version={version}, completion={completion}) and no [dogfooding-status].
188+
Under v2.0 this is an overclaim on the face of STATE.a2ml — demote to E
189+
(or D if structural-policy compliant), or populate [dogfooding-status]
190+
with evidence.
191+
192+
grade_ge_c_but_missing_self_consistency_inputs:
193+
condition: >-
194+
parse_state.crg-grade IN {"C", "B", "A"}
195+
AND (
196+
parse_state.version IS empty_or_absent
197+
OR parse_state.completion-percentage IS empty_or_absent
198+
)
199+
severity: high
200+
finding_kind: self-inconsistent-claim
201+
message: >-
202+
{component} claims {declared} but STATE.a2ml is missing version and/or
203+
completion-percentage. The CRG self-consistency precheck cannot run
204+
without these keys — treat this as a structural overclaim until state
205+
metadata is completed.
187206

188207
grade_b_but_no_external_targets:
189208
condition: >-

0 commit comments

Comments
 (0)