fix(ops): guard tracked live metrics against zero-pipeline clobbering - #159
Conversation
The tracked growth-brain/ops/live-metrics.md surface reported a zero pipeline (0 prospects) because the exporter regenerated it from a root with no outbound prospect pipeline state, silently mistaking an unavailable pipeline for an empty one. - export-growth-metrics.mjs now refuses to regenerate the tracked default when no prospect folder carries pipeline.json, matching the tracked 11/10 proof-run brief contract. Explicit --output= under runs/ still produces private zero-state reports on purpose. - Redirect every internal metrics consumer (parity, mission, doctor, dashboard, benchmark, learning review, proof run, and the previously missed growth cockpit) to a private runs/ output so none of them rewrite the tracked surface or fail in a state-less root. - Extend test-active-operator-surfaces.mjs to assert the refusal, the private zero-state path, and that tracked artifacts stay at the canonical empty-prospect baseline. Co-authored-by: CommandCodeBot <noreply@commandcode.ai>
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
Co-authored-by: CommandCodeBot <noreply@commandcode.ai>
|
Warning Review limit reached
Next review available in: 7 minutes Limit details: You’ve used the included review currently available. 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 within each organization. For paid Pro and Pro+ reviews, CodeRabbit uses a developer's included PR review attempts over the past 7 days to set the current hourly allowance. At typical activity levels, the full plan allowance applies. Higher sustained activity can lower the allowance until earlier attempts leave the 7-day window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Free Run ID: 📒 Files selected for processing (11)
Note 🎁 Summarized by CodeRabbit FreeYour organization is on the Free plan. CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please upgrade your subscription to CodeRabbit Pro by visiting https://app.coderabbit.ai/login. Comment |
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
The export-growth-metrics.mjs hunk was an empty HEAD side against main zero-pipeline guard from PR #159, so main is taken wholesale. What remains unique here is the SERVICE_REPO_ROOT write-lock test plus its evidence note.
Problem
The tracked operator metrics surface
growth-brain/ops/live-metrics.mdreported a zero pipeline (0 prospects) while 50 prospect folders carrypipeline.jsonin the service root. Root cause:export-growth-metrics.mjsregenerated the tracked default from a root with no outbound prospect pipeline state, silently mistaking an unavailable pipeline for an empty one.Fix
export-growth-metrics.mjsnow refuses to regenerate the trackedgrowth-brain/ops/live-metrics.mddefault when no prospect folder carriespipeline.json— the same contract the tracked 11/10 proof-run brief already follows. Explicit--output=underruns/still produces private zero-state reports on purpose.runs/output: parity readiness, daily money mission, growth doctor, internal dashboard, market benchmark, market learning review, market proof run, and growth cockpit (which was previously missed and would fail in a state-less root).test-active-operator-surfaces.mjsextended to assert the refusal path, the private zero-state path, and that tracked artifacts stay byte-identical to the canonical empty-prospect baseline.Verification
node scripts/test-active-operator-surfaces.mjs→ passednode scripts/test-client-readiness-contract.mjs→ passednode scripts/check-product-truth.mjs→ passedSERVICE_REPO_ROOT=/home/nish/workspaces/products/tinystudio-in) reports 50 prospects; running from a state-less root refuses with a clear message and does not touch the tracked file.