Skip to content

proof(SafeUrl): DISCHARGE appendAssociative via Data.List.Equalities (proven#90 #107 #119)#128

Merged
hyperpolymath merged 1 commit into
mainfrom
proof/safeurl-append-associative
May 30, 2026
Merged

proof(SafeUrl): DISCHARGE appendAssociative via Data.List.Equalities (proven#90 #107 #119)#128
hyperpolymath merged 1 commit into
mainfrom
proof/safeurl-append-associative

Conversation

@hyperpolymath
Copy link
Copy Markdown
Owner

```idris
appendAssociative qs1 qs2 qs3 = Data.List.Equalities.appendAssociative qs1 qs2 qs3
```

`appendQueryStrings = (++)` (Query.idr L205-206), so the goal reduces to standard list append-associativity. Discharged via contrib's `Data.List.Equalities.appendAssociative` (already imported here via #97).

The OWED comment said this was "stdlib-plumbing, not a fundamental gap" — confirmed.

Refs #90 #107 #119

`appendQueryStrings = (++)` (Query.idr L205-206), so the goal reduces
to standard list append-associativity. Discharged via contrib's
`Data.List.Equalities.appendAssociative`.

One-line proof:
- appendAssociative qs1 qs2 qs3 = Data.List.Equalities.appendAssociative qs1 qs2 qs3

The OWED comment correctly noted this was a "stdlib-plumbing OWED, not
a fundamental gap" — just hadn't been wired up. Contrib's
`appendAssociative` is already used (imported) by this file via
`Data.List.Equalities` (added in #97 for lengthSnoc).

Refs #90 #107 #119

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@hyperpolymath hyperpolymath enabled auto-merge (squash) May 30, 2026 18:52
@sonarqubecloud
Copy link
Copy Markdown

@hyperpolymath hyperpolymath merged commit 477172b into main May 30, 2026
11 of 24 checks passed
@hyperpolymath hyperpolymath deleted the proof/safeurl-append-associative branch May 30, 2026 18:56
@github-actions
Copy link
Copy Markdown

🔍 Hypatia Security Scan

Findings: 321 issues detected

Severity Count
🔴 Critical 130
🟠 High 31
🟡 Medium 160

⚠️ Action Required: Critical security issues found!

View findings
[
  {
    "reason": "Action perpolymath/standards/.github/workflows/governance-reusable.yml@main\n needs attention",
    "type": "unpinned_action",
    "file": "governance.yml",
    "action": "pin_sha",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in casket-pages.yml",
    "type": "missing_timeout_minutes",
    "file": "casket-pages.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in casket-pages.yml",
    "type": "missing_timeout_minutes",
    "file": "casket-pages.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in cflite_batch.yml",
    "type": "missing_timeout_minutes",
    "file": "cflite_batch.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in cflite_pr.yml",
    "type": "missing_timeout_minutes",
    "file": "cflite_pr.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in codeql.yml",
    "type": "missing_timeout_minutes",
    "file": "codeql.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in dogfood-gate.yml",
    "type": "missing_timeout_minutes",
    "file": "dogfood-gate.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in dogfood-gate.yml",
    "type": "missing_timeout_minutes",
    "file": "dogfood-gate.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in dogfood-gate.yml",
    "type": "missing_timeout_minutes",
    "file": "dogfood-gate.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in dogfood-gate.yml",
    "type": "missing_timeout_minutes",
    "file": "dogfood-gate.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  }
]

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