fix(portability): 0.34.2 — jq object-value pipeline broke the Linux CI lane - #85
Conversation
…jq object-value grammar broke Linux CI
test-merge-persona-signals went red on the Linux lane: the score expression was
a bare pipeline as an object value ({score: a | b / c}), which newer jq parses
but the CI runner's older jq rejects ('unexpected /, expecting }'). The whole
value now sits in one enclosing group — the conservative grammar every jq
accepts. Repo-wide sweep found no other multiline object-value pipeline sites.
Local suite green; the Linux lane is the real verdict on this PR.
Pushed-after-Windows-green-only is the exact cross-platform class this repo
documents; the release CI failure was caught in post-push review, not before —
recorded for the failure chronicle.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
C:/Program Files/Git/ecc-tools analyze |
There was a problem hiding this comment.
Pull request overview
This PR fixes a cross-platform jq parsing incompatibility that broke the Linux CI lane by ensuring the score object-value expression in merge-persona-signals.sh is wrapped in an enclosing group, and bumps plugin versions to ship the fix.
Changes:
- Wrap the
score:jq object value in an enclosing parenthesized expression to avoid “bare pipeline as object value” parsing failures on olderjq. - Add an inline comment documenting the jq grammar constraint to prevent regressions.
- Bump plugin/marketplace versions from
0.34.1→0.34.2.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| scripts/merge-persona-signals.sh | Wraps the jq score value pipeline in an enclosing group for compatibility with older jq on Linux CI. |
| .claude-plugin/plugin.json | Bumps plugin version to 0.34.2 to ship the portability fix. |
| .claude-plugin/marketplace.json | Bumps marketplace plugin version to 0.34.2 to keep versions in lockstep. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
/ecc-tools audit |
🔒 AgentShield Security Scan⏳ Scanning Cain-Ish/claude-code-plugin for security issues... Discovering config files, running rules (secrets, permissions, hooks, MCP, agents) |
🔒 AgentShield Security ScanRepository: Score: 95/100 (Grade A) Findings
Summary
Next Steps
|
|
/ecc-tools analyze |
Analysis QueuedAnalyzing Cain-Ish/claude-code-plugin on pull request head Analysis Pipeline
Estimated time: 2-5 minutes depending on repository size. 8/10 analyses remaining this month (free tier) | ECC Tools |
|
Analysis CompleteGenerated ECC bundle from 1 commits | Confidence: 50% View Pull Request #86Repository Profile
Changed Files (3)
Top hotspots
Top directories
Analysis Depth Readiness (commit-history, 7%)ECC Tools uses this to decide whether recommendations should stay at commit-history/setup guidance or expand into CI, security, harness, reference-set, AI-routing, and team backlog work.
Reference Set Readiness (0/7, 0%)
Likely Future Issues (2)
Suggested Follow-up Work (2)
Copy-ready bodies harness: add config quality evidence for .claude-plugin/marketplace.json + .claude-plugin/plugin.json ## Summary
- Add harness compatibility evidence for the recently changed config surface.
## Why
- Backfill harness audit, adapter matrix, or cross-harness compatibility evidence before another config change lands on the touched surface.
## Touched paths
- `.claude-plugin/marketplace.json`
- `.claude-plugin/plugin.json`
## Validation
- Run or update the harness audit, adapter compliance matrix, or cross-harness compatibility check for the changed config.
- Add or update a regression, fixture, or doc evidence path that covers the affected harness, MCP, plugin, or agent loading behavior.docs: sync install/operator guidance for .claude-plugin/marketplace.json ## Summary
- Update the install or operator-facing docs that should reflect the changed surface.
## Why
- Track the docs sync explicitly if the current PR is not going to update the install-facing guidance.
## Touched paths
- `.claude-plugin/marketplace.json`
## Validation
- Update the relevant README / docs / operator guidance pages.
- Verify the documented commands, config paths, and setup steps still match the shipped behavior.Review Activity (1 reviews, 0 inline comments, 0 unresolved threads)
Latest reviewer states
Review Follow-up Signals (1)
Recommended next actions
Generated Instincts (16)
After merging, import with: Files
|
Audit-adopted subset: least-agency denies for catastrophic shell shapes in the repo dev environment. Deliberately NOT adopted: a blanket rm -rf deny (scratch cleanup is routine; the persona-tool-guard's PreToolUse rules own risky-bash detection with warn/ask verdicts — a stronger mechanism than settings globs) and redirect-pattern denies (mid-command glob matching is unreliable; the flow-guard scans egress content at PreToolUse instead). The scanner's hooks.json findings were wrong-surface: deny lists do not live in a hooks manifest, and the PreToolUse guard coverage it reported missing is exactly what hooks/hooks.json wires (symlink/persona/wiki-write/flow guards, liveness-probed by tests). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Summary
The 0.34.1 release push went RED on the Linux CI lane:
test-merge-persona-signalsfailed with a jq compile error (syntax error, unexpected '/', expecting '}'). Root cause: the new score-decay expression used a bare pipeline as a jq object value ({score: a | b / c}) — parses on the newer jq Windows dev boxes ship, rejected by the older jq on the CI runner. Windows-green-only is this repo's documented cross-platform trap; it fired again and was caught in post-push review.Fix
scripts/merge-persona-signals.sh: the whole score value expression sits in one enclosing group — the conservative object-value grammar every jq version accepts. Comment states the constraint.Verification
test-merge-persona-signalsALL PASS;bash -nclean; full pre-push suite re-attested green on push.Do not merge yet — analyzer pass requested in comments.
🤖 Generated with Claude Code