Repository navigation
fix(parser): replace a Rust doc comment in the Parser module header - #107
Conversation
Line 6 of src/Sanctify/Parser.hs was "//! verified alternatives.", a Rust-style doc comment in the middle of the Haskell header comment. GHC reads it as code, so the module header never parses: Sanctify/Parser.hs:6:1: error: [GHC-58481] parse error on input '//!' Under cabal this surfaces as "File name does not match module name: Saw 'Main', Expected 'Sanctify.Parser'" (GHC-28623), which is how it failed when hyperpolymath/standards built its vendored copy (#1185). The line becomes "-- verified alternatives.", so it continues the sentence of the comment above it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012kgrMQRhSmZMBbF9Ui1zBw
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configuration
📒 Files selected for processing (1)
Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review. 📜 Recent review details⏰ Context from checks skipped due to timeout. (6)
|
| Layer / File(s) | Summary |
|---|---|
Update parser comment prefix src/Sanctify/Parser.hs |
The documentation line now uses -- instead of //!. |
Priority: ➖ Normal
Estimated code review effort: 1 (Trivial) | ~2 minutes
Change: Bug fix
Suggested reviewers: metadatastician
Merge Risk: ⚪ Minimal · up to 43170
This corrects the parser comment syntax without changing parser behavior, and no additional merge risk is apparent.
Architecture Summary
Architecture risk: 🔵 Low · up to 43170
The change affects 1 system.
Changed systems: src
Architecture concerns
No architecture-level concerns identified.
Review details
Systems and components
- observed — src (service) was modified; 1 changed file maps to changed impact.
Before / after behavior
- observed — Modified behavior in src/Sanctify/Parser.hs: The documentation line’s
//!prefix was replaced with--.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
| Check name | Status | Explanation |
|---|---|---|
| Docstring Coverage | ✅ Passed | No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0… |
| Linked Issues check | ✅ Passed | Check skipped because no linked issues were found for this pull request. |
| Out of Scope Changes check | ✅ Passed | Check skipped because no linked issues were found for this pull request. |
| Title check | ✅ Passed | The title clearly describes the change: replacing a Rust-style comment with a Haskell comment in the Parser module header. |
| Description check | ✅ Passed | The description explains the parser error, the one-line fix, and the limits of the reported verification. It is directly related to the changeset. |
✨ Finishing Touches
🛠️ Fix failing CI checks
- Commit to this branch
- Create a new PR
- Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
A rabbit checks the parser line,
And swaps the prefix, neat and fine.
Two dashes mark the comment clear,
The old slash marks disappear.
The code rests quiet in its burrow.
Comment @coderabbitai help to get the list of available commands.
|
Add Carrot credits or activate Agent usage billing to use Autopilot |
|
The CI failures may require manual intervention. View agent analysis |
…dabot ecosystems (#111) ## Summary Dependabot moved three `uses:` lines to new commits, but `.github/workflows/actions.lock` still named the old ones. GitHub matches lock entries against the **literal** ref string, so it refused to start the affected workflows. `Haskell CI` has ended in `startup_failure` on every run since 2026-10-03, and `governance / Actions lockfile verify` is red on `main`. | Action | Old lock entry | Now (matches the workflow) | Workflows | |---|---|---|---| | `haskell-actions/setup` | `6037f336` (v2.12.0) | `0f8e8c99` (v2.12.1) | `haskell.yml`, `casket-pages.yml` | | `github/codeql-action` | `1c5b6756` (v4.38.1) | `2892aa5e` (v4.38.2) | `codeql.yml` | This also corrects the stale version comments beside those pins: the codeql pins said `# v3` beside a v4.38.2 commit. A second commit trims `.github/dependabot.yml` to `github-actions` only. This is a Haskell (cabal) project with no `package.json`, Python requirements or `Cargo.toml`, so the npm, pip and cargo update jobs failed on every run (`/package.json not found`). Dependabot has no Haskell ecosystem. Closes #108 ## Type of change - [x] 🐛 Bug fix (non-breaking change that fixes an issue) - [ ] ✨ New feature: none. - [ ] 💥 Breaking change: no. - [ ] 🕳️ Soundness fix: not a checker false-negative. - [ ] 📖 Documentation: no. - [ ] 🧹 Refactor: no. - [ ] ⚡ Performance: no. - [x] 🔧 Build / CI / tooling: `actions.lock`, plus comment-only edits in two workflows. ## 📌 New pins Head SHA: **`33dd482f28f3de4f80952615716350d83dcee60c`** `actions.lock` entries changed. The workflow `uses:` lines are unchanged; only the lock catches up to them: - **`haskell-actions/setup@0f8e8c99d88aeb3fbfd523f1ef2c6f762d10d64d`** → tag `v2.12.1` (also `v2.12`, `v2`), resolved via the GitHub tags API. - **`github/codeql-action@2892aa5e19bbd11bc0cff5427e3b750a04d9e3c2`** → tag `v4.38.2` (also `v4`). ## How has this been verified? - **The lock is hand-edited, deliberately.** `gh actions-lock` in fix mode was tried first. It rewrote all 19 workflows, turning SHA pins into tags (e.g. `haskell-actions/setup@v2.12.1`) and re-keying the lock to match. This repo has `sha_pinning_required: true` (`gh api repos/hyperpolymath/sanctify-php/actions/permissions`), so that output would itself stop the workflows from starting. It was discarded. - **Matched pair** on the unchanged workflow bytes, with `gh actions-lock --no-fix`: - old lock: `3 of 19 workflows failed verification` (3 `Unused lockfile entry` findings), rc 1. - new lock: rc 0. - Every new lock key is the literal `owner/repo@sha` string that the workflow's `uses:` names. - `dependabot.yml`: the last runs of `npm_and_yarn` and `pip` both failed (2026-08-13; npm again on 2026-10-01: `Error during file fetching; aborting: /package.json not found`). `git ls-files` shows `sanctify-php.cabal` and no npm, pip or cargo manifest. - Both actions are on the repo's `selected-actions` allow-list, so the allow-list is not the cause of the startup failure. **Horizon of this check:** `gh actions-lock` resolves refs, so its rc 0 alone does not prove GitHub will start the workflows. The literal-string match does, and this PR's own `Haskell CI` and `CodeQL` runs are the real proof. If `Haskell CI` now starts and fails, that is a real compile result, the first since the fix in #107. ## Checklist - [x] My commits are **signed** (`git commit -S`). `git log --format=%G?` → `G`. - [x] I ran the project's own checks locally: `gh actions-lock --no-fix`, rc 0. - [ ] New files carry the correct `SPDX-License-Identifier`: no new files. - [ ] Docs are updated: no docs are affected. - [x] I have not introduced a soundness hole: no pin is loosened, and every `uses:` stays SHA-pinned. ## Notes for reviewers The owner approved hand-writing this lock delta on 2026-10-07, because the generator cannot produce a SHA-keyed lock without de-pinning the workflows. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_012kgrMQRhSmZMBbF9Ui1zBw --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Summary
Fixes a one-line defect that stops
sanctify-phpfrom compiling at all. Line 6 ofsrc/Sanctify/Parser.hswas//! verified alternatives., a Rust-style doc comment inside the Haskell header comment. GHC reads it as code, so the module header never parses:Under cabal this shows up as
File name does not match module name: Saw ‘Main’, Expected ‘Sanctify.Parser’(GHC-28623). That is how it failed when hyperpolymath/standards built its vendored copy of this repo (hyperpolymath/standards#1185, run 37531109754). The line becomes-- verified alternatives., which continues the comment's sentence.Closes # (no issue filed. Found while building the standards vendored copy.)
Type of change
📌 New pins
Head SHA:
4317025d5b0a01924ad0457ff3498ddffa8d0844. No pins are added or changed.How has this been verified?
These checks used local GHC 9.6.6 with the library stanza's flags:
-XGHC2021 -XOverloadedStrings -XLambdaCase -XDerivingStrategies -XDeriveGeneric -XDeriveAnyClass.mainfa9bd38):ghc -fno-code Sanctify/Parser.hs→Sanctify/Parser.hs:6:1: error: [GHC-58481] parse error on input ‘//!’.Sanctify.ASTtypechecks.Sanctify.Parserparses and stops only atCould not find module ‘Text.Megaparsec’. That package is not installed on the machine that ran the check.git grep -nE '^\s*(//|/\*)' -- '*.hs'onmainfinds this line and no other.Horizon of this check: it shows that the header and the whole of
Parser.hsparse. It does not show that the package builds. No fullcabal buildran locally, because neither cabal nor the dependencies were available. This repo's CI has no Haskell build job either: its checks on this PR are governance, scanning and lint only. So nothing has compiled the package end to end yet.Checklist
git commit -S).git log --format=%G?→G.SPDX-License-Identifier: no new files. The file keeps itsMPL-2.0header.Deferred red checks
Both reds already fail on
main(fa9bd38). This PR does not touch either one:governance / Actions lockfile verify: deferred to Actions lockfile verify red on main: 3 stale actions.lock entries #108 (3 staleactions.lockentries).governance / Licence consistency: deferred to Licence consistency red on main: LICENSE is MPL-2.0, .cabal says PMPL-1.0-or-later #109 (LICENSEMPL-2.0 vs.cabalPMPL). This needs an owner decision.Notes for reviewers
When this lands, hyperpolymath/standards can re-sync its vendored copy under
rhodium-standard-repositories/satellites/cccp/satellites/sanctify-php/. Since standards#1184, standards' own CI does not build that copy, because nested-only Haskell is reported as unsupported. So nothing there is red in the meantime.🤖 Generated with Claude Code
https://claude.ai/code/session_012kgrMQRhSmZMBbF9Ui1zBw