Skip to content

fix(parser): remove 16 dead precedence declarations [#215 family F]#217

Merged
hyperpolymath merged 1 commit into
mainfrom
stage-c/pc-family-b
May 18, 2026
Merged

fix(parser): remove 16 dead precedence declarations [#215 family F]#217
hyperpolymath merged 1 commit into
mainfrom
stage-c/pc-family-b

Conversation

@hyperpolymath
Copy link
Copy Markdown
Owner

fix(parser): remove dead precedence declarations [#215 family F]

Menhir emitted 16 "precedence level / %prec ... never useful"
warnings — declarations that never resolve any conflict because the
expression cascade disambiguates structurally. They are pure noise
that, alongside the conflict warnings, make a healthy build look
broken.

Removed (all certified "never useful" by Menhir itself):

  • precedence level: %right EQ PLUSEQ MINUSEQ STAREQ SLASHEQ
    (assignment ops — handled at statement level, never in the
    expr operator cascade)
  • precedence level: %right BANG TILDE UMINUS UREF UDEREF
    (unary level — expr_unary is right-recursive and already
    unambiguous)
  • precedence level: %left DOT LBRACKET LPAREN
    (postfix level — expr_postfix disambiguates structurally)
  • the three now-orphaned %prec UMINUS/UREF/UDEREF on the unary
    rules (UMINUS/UREF/UDEREF were pseudo-tokens used only there)

Provably parse-behaviour-neutral — removing a declaration Menhir
certifies resolves nothing cannot change any resolution. Verified:

  • 16 "never useful" warnings: gone (0 remain)
  • conflict counts UNCHANGED: 72 S/R, 10 R/R, 23 S/R states,
    4 R/R states (identical resolution profile)
  • dune test --force green at 257/257

The retained LOWEST_TYPE_ARROW/ARROW levels (#216, family A) are
not flagged — they do real work.

Refs #215

Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com

Menhir emitted 16 "precedence level / %prec ... never useful"
warnings — declarations that never resolve any conflict because the
expression cascade disambiguates structurally. They are pure noise
that, alongside the conflict warnings, make a healthy build look
broken.

Removed (all certified "never useful" by Menhir itself):

  - precedence level: `%right EQ PLUSEQ MINUSEQ STAREQ SLASHEQ`
    (assignment ops — handled at statement level, never in the
    expr operator cascade)
  - precedence level: `%right BANG TILDE UMINUS UREF UDEREF`
    (unary level — `expr_unary` is right-recursive and already
    unambiguous)
  - precedence level: `%left DOT LBRACKET LPAREN`
    (postfix level — `expr_postfix` disambiguates structurally)
  - the three now-orphaned `%prec UMINUS/UREF/UDEREF` on the unary
    rules (UMINUS/UREF/UDEREF were pseudo-tokens used only there)

Provably parse-behaviour-neutral — removing a declaration Menhir
certifies resolves nothing cannot change any resolution. Verified:

  - 16 "never useful" warnings: gone (0 remain)
  - conflict counts UNCHANGED: 72 S/R, 10 R/R, 23 S/R states,
    4 R/R states (identical resolution profile)
  - `dune test --force` green at 257/257

The retained `LOWEST_TYPE_ARROW`/`ARROW` levels (#216, family A) are
*not* flagged — they do real work.

Refs #215

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@hyperpolymath hyperpolymath merged commit a45b021 into main May 18, 2026
11 of 12 checks passed
@hyperpolymath hyperpolymath deleted the stage-c/pc-family-b branch May 18, 2026 11:43
@github-actions
Copy link
Copy Markdown

🔍 Hypatia Security Scan

Findings: 44 issues detected

Severity Count
🔴 Critical 12
🟠 High 21
🟡 Medium 11

⚠️ Action Required: Critical security issues found!

View findings
[
  {
    "reason": "Stray AI.a2ml in root -- use 0-AI-MANIFEST.a2ml only",
    "type": "banned",
    "file": "AI.a2ml",
    "action": "delete",
    "rule_module": "root_hygiene",
    "severity": "high"
  },
  {
    "reason": "Superseded by 0-AI-MANIFEST.a2ml",
    "type": "banned",
    "file": "AI.djot",
    "action": "delete",
    "rule_module": "root_hygiene",
    "severity": "high"
  },
  {
    "reason": "Issue in quality.yml",
    "type": "missing_workflow",
    "file": "quality.yml",
    "action": "create",
    "rule_module": "workflow_audit",
    "severity": "high"
  },
  {
    "reason": "Issue in security-policy.yml",
    "type": "missing_workflow",
    "file": "security-policy.yml",
    "action": "create",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Action hyperpolymath/standards/.github/workflows/governance-reusable.yml@main needs attention",
    "type": "unpinned_action",
    "file": "governance.yml",
    "action": "pin_sha",
    "rule_module": "workflow_audit",
    "severity": "high"
  },
  {
    "reason": "TypeScript file detected -- banned language",
    "type": "banned_language_file",
    "file": "/home/runner/work/affinescript/affinescript/affinescript-deno-test/example/smoke_driver.ts",
    "action": "flag",
    "rule_module": "cicd_rules",
    "severity": "critical"
  },
  {
    "reason": "TypeScript file detected -- banned language",
    "type": "banned_language_file",
    "file": "/home/runner/work/affinescript/affinescript/affinescript-deno-test/cli.ts",
    "action": "flag",
    "rule_module": "cicd_rules",
    "severity": "critical"
  },
  {
    "reason": "TypeScript file detected -- banned language",
    "type": "banned_language_file",
    "file": "/home/runner/work/affinescript/affinescript/affinescript-deno-test/mod.ts",
    "action": "flag",
    "rule_module": "cicd_rules",
    "severity": "critical"
  },
  {
    "reason": "TypeScript file detected -- banned language",
    "type": "banned_language_file",
    "file": "/home/runner/work/affinescript/affinescript/affinescript-deno-test/lib/compile.ts",
    "action": "flag",
    "rule_module": "cicd_rules",
    "severity": "critical"
  },
  {
    "reason": "TypeScript file detected -- banned language",
    "type": "banned_language_file",
    "file": "/home/runner/work/affinescript/affinescript/affinescript-deno-test/lib/runner.ts",
    "action": "flag",
    "rule_module": "cicd_rules",
    "severity": "critical"
  }
]

Powered by Hypatia Neurosymbolic CI/CD Intelligence

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant