chore: consolidate ops merge (#80/#82) with cloud-install (#83) - #87
chore: consolidate ops merge (#80/#82) with cloud-install (#83)#87navarrocorbi-prog wants to merge 10 commits into
Conversation
Playbook for PR autopilot, rebase/conflict resolution, draft triage, quality-gate handling and fork hygiene on OnlineChefGroep/herdr. refs #87
Expose /audit report-only thermos + Herdr canvas workflow in the product repo, with project hooks so audit outranks review-means-fix in-workspace. Co-authored-by: Cursor <cursoragent@cursor.com>
Mirror herdr-ops skill guidance: inventory before create, restore onto existing panes, optional herdr worktree open for fix lanes. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: OnlineChef <OnlineChef@users.noreply.github.com>
website/latest.json publishes all four portable targets again since v0.7.6, so the hardcoded single-asset expectation failed. Require linux-x86_64 and validate every listed asset URL instead. Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
The merge left two beforeSubmitPrompt keys in .cursor/hooks.json, so the later one silently replaced the audit-report-only and review-means-fix hooks; merge all three into one array. Regenerate the committed catalogs so the audit agents, /audit command, and herdr-thermos-audit skill are indexed and scripts/check_cursor_artifacts.sh passes. Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
Report-only state was a single global file, so an /audit in one conversation muted review-means-fix in every other one; key the state file by conversation/session/workspace id and pass that scope through both hooks. Anchor the review trigger words so "preview" no longer counts as "review". Make the audit canvas scripts and docs match reality: require --pane plus --dir/--file in the audit-canvas step, fail restore-canvas.sh when no labeled pane was restored, persist the live pane ids to WHERE-LIVE.md, and replace the angle-bracket placeholders in herdr-canvas.md bash fences with shell variables so the snippets are copy-pasteable. Point create-skill and create-subagent inventory at the generated .index.yaml catalogs instead of reading peer artifact bodies, derive the failing run id from the gh pr checks link, wait for the api socket before driving the headless server, and narrow the AGENTS.md SSOT line so it no longer contradicts the tracked .codex/skills mirrors. Also fix generate_cursor_index.py --check to rebase caller-supplied extra roots onto the temp copy; --check --include-root-catalog raised ValueError instead of comparing indexes. Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
safe_osc8_url accepted any file:// target, so file://host/share was activated as a hyperlink and resolved off-machine. Accept only the local authority forms, an empty authority or localhost, and cover both the localhost and remote-authority cases in the resolver test. Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
A stale socket file with no listener fails with ConnectionRefused, not NotFound. Pin that branch of the classifier so the friendly server_not_running response stays covered. Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
5917a9a to
a7ebd2b
Compare
|
ⓘ Qodo reviews are paused because your trial has ended. Ask your workspace admin to add credits to resume reviews. Manage billing |
|
Warning Review limit reached
Next review available in: 49 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (30)
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. Comment |
refs #87 Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
Quality remediation neededCI run PR: #87 Failed jobs
Top extracted errors
Agent commands
Files touched
|
| for p in d: | ||
| if p.get("workspace_id")!=focused: continue | ||
| lab=(p.get("label") or "").strip().lower() | ||
| if lab in want and want[lab] is None: | ||
| want[lab]=p["pane_id"] |
There was a problem hiding this comment.
Restore discovery ignores tab labels
The restore lookup reads labels only from herdr pane list, but the documented bootstrap creates map, findings, and connections with herdr tab create --label. Those panes have no pane label, so restoration resolves only where-live and skips the map, findings, and connections reports. Join panes to their parent tab labels while retaining pane-label support before selecting canvas targets.
Context Used: Focking gretig zijn en niet stoppen tot perfectie.... (source)
Artifacts
Focused canvas restoration integration-check source
- Mocked Herdr CLI script supplies the documented pane/tab bootstrap shape and runs the checked-in and test-corrected discovery paths, demonstrating the label mismatch.
Checked-in restoration against documented tab-labeled bootstrap
- Executed checked-in restoration discovers only the pane-labeled where-live target and leaves map, findings, and connections unresolved, confirming the failure.
Tab-aware restoration against the same documented bootstrap
- Executed test-only tab-label-aware discovery renders all four expected pane targets, showing the required discovery behavior.
Ran code and verified through T-Rex
Prompt To Fix With AI
This is a comment left during a code review.
Path: .cursor/skills/herdr-thermos-audit/scripts/restore-canvas.sh
Line: 29-33
Comment:
**Restore discovery ignores tab labels**
The restore lookup reads labels only from `herdr pane list`, but the documented bootstrap creates `map`, `findings`, and `connections` with `herdr tab create --label`. Those panes have no pane label, so restoration resolves only `where-live` and skips the map, findings, and connections reports. Join panes to their parent tab labels while retaining pane-label support before selecting canvas targets.
**Context Used:** Focking gretig zijn en niet stoppen tot perfectie.... ([source](https://app.greptile.com/review/custom-context?memory=instruction-0))
---
For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.
Summary
Supersedes #85, #80, #82, and #83 (those PRs are closed).
Single merge vehicle for Cursor ops work already reviewed on #85, plus the cloud environment install from #83:
/audit+ report-only hooks (from feat: herdr-thermos-audit skill + report-only canvas hooks #80)server_not_runningstructured reporting + OSC 8 local file links (already on Merge PRs 80 and 82 #85).cursor/scripts/cloud-install.sh→/opt/herdrbinary, websitenpm ci, Cursor catalog refresh.cursor/environment.json(snapshot + one install script; no catalog-vs-cloud conflict)Prior Greptile blockers on #85 (duplicate
beforeSubmitPrompt, stale indexes) were already fixed on the ops-merge tip before this branch.CI: Quality gate green.
Test plan
.cursor/hooks.jsonhas a singlebeforeSubmitPromptarray with audit + review + fetchbash -n .cursor/scripts/cloud-install.shSupersedes
Greptile Summary
This change adds Cursor audit and review orchestration plus a Herdr audit-canvas restoration workflow.
Two confirmed failures need correction before merge:
.cursor/hooks.jsondefinesbeforeSubmitPrompttwice, so JSON parsing leaves only the artifact-fetch hook and omits the audit and review policy hooks..cursor/skills/herdr-thermos-audit/scripts/restore-canvas.shonly discovers pane labels, while the documented bootstrap labels the map, findings, and connections as tabs; those three views are therefore not restored.Merge safety: not safe to merge until both failures are fixed.
Confidence Score: 4/5
What T-Rex did
Comments Outside Diff (3)
.cursor/hooks.json, line 29-34 (link)beforeSubmitPromptis declared twice. JSON parsing retains only the later declaration at lines 29–34, so the effective prompt-hook list contains onlyfetch-cursor-artifacts.sh;audit-report-only.shandreview-means-fix.shfrom lines 15–28 never load. Keep all intended hooks in onebeforeSubmitPromptarray.Context Used: Focking gretig zijn en niet stoppen tot perfectie.... (source)
Artifacts
Executed focused duplicate-key parser check source
Hook configuration source before parsing
Parsed effective beforeSubmitPrompt configuration
Prompt To Fix With AI
General comment
.cursor/hooks.jsondeclareshooks.beforeSubmitPrompttwice. The first declaration at lines 15-28 includesaudit-report-only.sh,review-means-fix.sh, andfetch-cursor-artifacts.sh; the later declaration at lines 29-34 contains onlyfetch-cursor-artifacts.sh. The executed parser check observed a single effective command,.cursor/hooks/fetch-cursor-artifacts.sh.beforeSubmitPromptarray.beforeSubmitPromptarray.General comment
restore-canvas.shreads onlyherdr pane listand selects each target usingp.label. The documented bootstrap assignsmap,findings, andconnectionswithherdr tab create --label, leaving their initial panes unlabeled. In the executed bootstrap-shaped flow, only the explicitly pane-renamedwhere-livepane was rendered; the three tab-backed reports were skipped.herdr tab listor map each pane'stab_idto its parent tab label.tab_idlabel, and use that label when the pane itself has no label. Preserve pane labels forwhere-live.Prompt To Fix All With AI
Reviews (1): Last reviewed commit: "chore(cursor): refresh artifact indexes ..." | Re-trigger Greptile
Context used: