nightly: fix tracker stripping, export spawn errors, release version gap - #312
Conversation
- validate: #305 stopped stripping an AI tracker that sits directly before bold markers, an em/en dash, or an ellipsis, reporting url-missing (e.g. **https://x.com/p?utm_source=chatgpt.com** -> **https://x.com/p**). - rewrite-eval-opencode: an `opencode export` spawn failure threw "Cannot read properties of undefined (reading 'trim')" and hid the real error; route it through requireCommand like the other calls. - detector CI: since #306 releases trigger only on package.json changes, so a release PR that forgets package.json merged green and never released. Run verify-release-versions.js on every PR. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
conorbronsdon
left a comment
There was a problem hiding this comment.
ChatGPT/Codex review of ff15a57804d373f04ef1d9e7b75a6ef99c3c5931: ready to land.
I checked the full diff and the surrounding URL normalization, command-error handling, and release guard. All three focused suites pass locally (validator, OpenCode runner with fake clients, release versions), and the release guard confirms package/changelog agreement. All seven CI checks pass on this head. No provider calls were needed.
The tracker change still requires an exact recognized final tracker after separating punctuation; non-tracking query fields remain protected. Export launch failures now use the existing error-preserving command helper. The release-version check runs in the existing PR test job. Generated validator copies agree.
Thanks for the reproduced fixes and for separating the corpus/provenance findings from this patch. Those deferred findings should receive their own measured follow-up; they are not blockers for these fixes.
PR Summary by QodoFix tracker suffix handling, export errors, and release version CI
AI Description
Diagram
High-Level Assessment
Files changed (8)
|
Code Review by Qodo
1.
|
Address nightly review findings with query-separator regressions, independent skill/plugin version drift controls, and the export-error changelog entry.
Nightly review of commits
6663722..aa4da8b(Sep 12–14, 83 non-merge commits).npm testwas 20/20 green onorigin/mainbefore these fixes and is still 20/20 after them.Fixes (each reproduced on origin/main first)
detector/validate.js: a tracker before bold markers, a dash or an ellipsis is reported as an altered URL (regression from fix: preserve query params when stripping trackers #305). The bare-URL extractor keeps trailing**,—it, and…. fix: preserve query params when stripping trackers #305 only peeled off[.,;:!?], soSee **https://ex.com/p?utm_source=chatgpt.com** now→See **https://ex.com/p** nownow fails withurl-missing. Before fix: preserve query params when stripping trackers #305 it passed. The fix also treats emphasis markers as punctuation, and treats a dash or ellipsis plus the text after it as suffix, but only when what remains of the last field is an exact tracker. Controls:?ref=home—it→ removed still errors, and?utm_source=chatgpt.com.au—xstill errors. Three cases added to the fix: preserve query params when stripping trackers #305 test. Generated copies re-synced.scripts/rewrite-eval-opencode.js:577: a failed export launch hides the real error (Add an explicit audited OpenCode evaluation runner #297). Whenopencode exportfails to start,stderrisundefined, so the assert message itself throwsCannot read properties of undefined (reading 'trim').failure.jsonthen records that message withexit_status: 0. The call now goes throughrequireCommand, like the other commands.detector-test.yml: add a release version check to PR CI (gap from ci: harden release and review boundaries #306). Since ci: harden release and review boundaries #306 the release workflow triggers only onpackage.json. No PR check comparedpackage.jsonwith CHANGELOG, so a release PR that bumps SKILL.md, manifests and CHANGELOG but forgetspackage.jsonmerges green and never releases. The fix addsnode scripts/verify-release-versions.jsto the detector job, which runs on every PR. It passes on current main (3.35.0).Needs a maintainer decision (not changed here)
These findings change corpus segmentation, and so the measurement provenance. All three reproduced:
scripts/fp-preprocess.js:15FENCEaccepts backticks in a backtick fence's info string. A line starting with```x``` inlineopens a fence that never closes, and the rest of the row becomes onefenced-codeunit (CommonMark forbids this; Repair corpus preprocessing and make measurement decisions auditable #290).---or===. The earlier lines of a wrapped paragraph become a separate prose unit (Repair corpus preprocessing and make measurement decisions auditable #290).fp-compare: legacy spans keep leading or trailing whitespace-only lines, and current spans don't. The same paragraph then counts as added plus removed instead of modified, which inflatespopulation(Repair corpus preprocessing and make measurement decisions auditable #290).Also noted:
rewrite-eval-opencode.jscan't launch an npmopencode.cmdshim on Windows (spawnSyncEINVAL). It needs the native.exepath, and neither the code nor the README says so.TITLE_CASE_HEADERno longer matches a mid-titleI(## What I Learned And Why It Matters).Automated nightly review of 2026-09-14's commits. Draft for Conor's review.
🤖 Generated with Claude Code