fix(honesty): estimate-recovery shows 'Approved' not 'Recovered' at proof=0 (pre-First-Light blocker)#661
Open
Victor "David" Medina (Victor-David-Medina) wants to merge 2 commits into
Conversation
…Recovered' (proof=0) Pre-First-Light adversarial gate (rank-1 blocker): EstimateRecoveryClient rendered items.filter(status==='approved') as a green success 'Recovered' SummaryCard. At proof_events=0, the instant the owner approves the single First-Light estimate send the card would show 'Recovered: 1' - a fabricated recovered-outcome claim on the exact surface the recovered-revenue wedge depends on. Not covered by #656 (that hedged the separate ProofLedger only). Fix: relabel the tally + filter tab 'Recovered' -> 'Approved' (honest intent word), drop the green success variant -> neutral card, rename the count var recovered->approved. An approval is not a recovered dollar; a real recovered figure only comes from a provider-observed proof_event (Pulse-owned). The 'Recover' action button (imperative product CTA) is unchanged. Source-guard honesty test added so it cannot regress. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
🛡️ Cascade Quality Score: 100/100
Threshold: 85/100 | Result: PASS ✅ |
… tab label The existing test clicked the old 'Recovered' filter-tab button; the honesty fix renamed it to 'Approved' (an approval is not a recovered dollar at proof=0). Update the test to match the corrected label. No behavior change beyond the honest relabel. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Estimate Recovery: approval is not recovery (proof=0 honesty)
Rank-1 blocker from the pre-First-Light adversarial gate.
EstimateRecoveryClientcounteditems.filter(status === "approved")and rendered it as a green success "Recovered"SummaryCard. Atproof_events=0, the instant the owner approves the single First-Light estimate send, that card would display "Recovered: 1" - a fabricated recovered-outcome claim on the exact buyer surface the recovered-revenue wedge depends on. PR #656 hedged only the separateProofLedgercomponent, not this one.Fix (honest, minimal)
status==='approved'exactly).variant="success"→ neutral stone card (approval is not a success/outcome).recovered→approved; added a proof=0 honesty rationale comment.proof_event(Pulse-owned).Guard
__tests__/estimate-recovery-honesty.test.ts- source-level assertion (mirrors the repo's existingoutreach-consumer-safetyguard): nolabel="Recovered"success card, the tally islabel="Approved", and the honesty rationale must persist. Cannot silently regress.Verified: no em-dash;
CheckCircle2import still used; all "recovered-as-fact" card/status labels removed (the page-purpose copy "Recover them into booked work" is aspirational intent, left as-is).Generated with Claude Code by RelayLaunch