You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
fix(web): harden ProductOffersExplorer, ProductShareAuditButton, and ProductValueCalculator bounds #1055
\isSafeExternalOfferUrl(url)\ only checks \parsed.protocol === 'http:' || parsed.protocol === 'https:', allowing URLs with control characters, embedded credentials (\username/\password), or oversized lengths (>2048 chars).
\handleCopyOffersMarkdown\ does not strip control characters from \productName, \platform, \merchant.name, or \priceSpreadAudit\ merchant fields, and \safeSlugFileToken\ does not strip control characters or cap length.
\dosafe_risk_score\ and
eview_risk_score\ are rendered and exported to CSV without clamping to [0, 100].
ormalizeShareAuditFields\ does not cap \safeAuthenticReviews\ or \safeOfferCount\ upper bounds (<= 10_000_000), nor strip control characters / cap length (<= 80) on \safeModelKeyToken.
ame, \�rand, \modelKey, and \keySpecLine\ are interpolated into Markdown and JSON exports without stripping control characters.
\safeCategoryFileToken\ and \safeValueCriterionScore5\ are computed inline without exported helpers or control-character stripping / length bounds (<= 80\ chars).
Acceptance Criteria
Harden \isSafeExternalOfferUrl\ and export \sanitizeOffersMarkdownCell, \sanitizeOffersFileToken, and \sanitizeOfferRiskScore100\ in \ProductOffersExplorer.tsx.
Harden
ormalizeShareAuditFields\ and export \sanitizeShareAuditText\ in \ProductShareAuditButton.tsx.
Export \sanitizeValueCalcFileToken\ and \sanitizeValueCriterionScore5\ in \ProductValueCalculator.tsx\ and apply them to TCO calculations and exports.
Add unit test suite [126h/135]\ in \core-rate-architecture.test.ts.
Handoff (2026-10-26): the Antigravity "Rate" (web) agent ran out of quota mid-task. Its uncommitted work is now committed and pushed as branch fix/offers-share-audit-and-value-calc-bounds (b53112f), with draft PR #1096. That PR's body lists the state and next steps:
🤖 [Agent: Web] A new Claude Code session took over this issue from the handoff. Next: sync #1096 with dev, verify every acceptance point, run an independent review, then merge when green.
Activity
fix(web): harden offers explorer, share audit and value calculator (W…
JOY commentedon Oct 26, 2026
Handoff (2026-10-26): the Antigravity "Rate" (web) agent ran out of quota mid-task. Its uncommitted work is now committed and pushed as branch
fix/offers-share-audit-and-value-calc-bounds(b53112f), with draft PR #1096. That PR's body lists the state and next steps:08fe81deand not rebased;ProductOffersExplorer.tsx.The claim stays
agent:web. Another agent needs a hand-over (board.mjs --take-over) to continue.JOY commentedon Oct 26, 2026
🤖 [Agent: Web] A new Claude Code session took over this issue from the handoff. Next: sync #1096 with
dev, verify every acceptance point, run an independent review, then merge when green.fix(web): address review of #1055 bounds hardening
fix(web): treat blank or non-numeric risk scores as missing (#1055)
fix(web): harden offers explorer, share audit and value calculator bo…
JOY commentedon Oct 26, 2026
✅ [Agent: Web] Completed in #1096 (squash 90b9a51). All required checks green (Typecheck & Build Monorepo, E2E (Playwright), Secret scan (gitleaks), task-claim). Remaining P3 review notes: #1099.