Skip to content

fix(typecheck): generalize parametric enum ctor schemes (import path) (#128)#188

Merged
hyperpolymath merged 1 commit into
mainfrom
fix/128-import-ctor-generalize
May 18, 2026
Merged

fix(typecheck): generalize parametric enum ctor schemes (import path) (#128)#188
hyperpolymath merged 1 commit into
mainfrom
fix/128-import-ctor-generalize

Conversation

@hyperpolymath
Copy link
Copy Markdown
Owner

Root cause of the result.affine import-path Unify ((_->_), T): register_type_decl's TyEnum branch built result_ty tyvars with anonymous fresh_tyvar 0 and never bound the declared param names. So field types and the result type used disconnected tyvars, and generalize was a no-op at level 0 — leaving imported parametric ctor schemes (prelude Ok/Err/Some) monomorphic with shared vars, collapsing payload types across use-sites.

Fix: bind param names to fresh tyvars one level deeper so result+field types share them; generalize at the outer level; scope param names so they don't leak into sibling type decls.

Refs #128

…ram tyvars (#128)

register_type_decl's TyEnum branch built result_ty tyvars with an
anonymous fresh_tyvar 0 and never bound the declared param names, so
(a) field types and the result type used disconnected vars and
(b) generalize was a no-op at level 0 -> imported parametric ctor
schemes (prelude Ok/Err/Some) were monomorphic with shared vars,
collapsing payload types across use-sites on the import path.

Bind param names to fresh tyvars one level deeper so result and field
types share them, generalize at the outer level, and scope the param
names so they don't leak into sibling type decls.

Fixes stdlib/result.affine; stdlib 14->15/19; 233/233 dune test, zero regression.

Refs #128

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@hyperpolymath hyperpolymath merged commit a3b1cae into main May 18, 2026
11 of 12 checks passed
@hyperpolymath hyperpolymath deleted the fix/128-import-ctor-generalize branch May 18, 2026 03:00
@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