# AI Editor RSP Hero Optimization — Compliance Recheck Pre-Implementation

- task_id: t_6f23f881
- role: modun / Compliance Recheck
- project: /root/projects/aieditorrsp
- production_url: https://aieditorrsp.net/
- product_contract: /root/.hermes/reports/aieditorrsp-hero-optimization-20260603/product-scope-acceptance-t_b3582c36.md
- design_contract: /root/.hermes/reports/aieditorrsp-hero-optimization-20260603/design-acceptance.md
- generated_at_utc: 2026-06-03T07:59:46Z

## Verdict

`COMPLIANCE_CONTRACT_GO_FOR_FRONTEND_IMPLEMENTATION`

Current production remains `COMPLIANCE_NO_GO_FOR_FINAL_PASS` for the hero initial state, because production still exposes account/credits/paid/provider/HD claims in the first-screen experience.

Frontend may proceed only under this compliance contract:

1. Initial hero must use generic quota language, not a specific remaining-credit count.
2. Account, Google login inside editor, Pro monthly/yearly, Credit pack, checkout, receipts, and paid billing CTAs must stay out of the initial hero.
3. Provider wording in the hero must be neutral/conditional; provider implementation details belong outside marketing copy or in post-action states.
4. Pricing/legal pages may disclose Google login, Stripe, credits, refunds, and provider processing, but stronger “live billing / paid checkout live” wording needs authenticated checkout + webhook + credit grant + account-state evidence before it is promoted in user-facing hero or launch claims.

No block is required for this pre-implementation gate because the safe path is to avoid specific claims in the hero. Block only if the frontend/product owner insists on specific quota, paid, provider, HD, or live-checkout claims without QA artifacts.

## Answers to required checks

### Quota

Required boundary: generic or dynamic only.

Allowed in initial hero:
- `Credits checked at generation`
- `Free previews are capped daily`
- `Preview generation checks available credits before running`

Not allowed in initial hero:
- `2 free generations left today` unless it is loaded from verified runtime credit state and has a fallback.
- Any claim that anonymous/user-specific credits are guaranteed before `/api/credits` is checked.

Evidence:
- Product contract lines 71-85 require generic quota wording.
- Design contract lines 89-98 require removing hard-coded `2 free generations left today`.
- Production `/api/credits` currently returns anonymous `daily_limit: 2`, `free_remaining: 2`, `paid_enabled: true`, but that does not justify hard-coding the hero copy.

### Credits

Required boundary: credits can be mentioned as capped and checked at generation, but the initial hero must not look like a credit ledger or account dashboard.

Allowed:
- A short helper line.
- Post-generate or post-limit contextual state.
- Full credit/account display on `/pricing`, full editor, account/billing surfaces.

Not allowed:
- `Account Credits` panel in the home hero initial state.
- Remaining paid/free credit ledger before auth state is known.
- Receipt or paid-credit retention claims inside the initial hero.

### Login

Header `Sign In` may remain if OAuth path is real and tested. Login inside the hero editor must be removed from the initial state.

Evidence:
- Production anonymous checkout routes redirect through login.
- Prior compliance smoke found Google login redirect starts and sets OAuth state cookie.
- This task did not run authenticated E2E login, so login should not be used as hero/editor conversion copy beyond top-nav `Sign In`.

### Checkout / billing

Initial hero must not include checkout or billing CTAs.

Allowed placement:
- `/pricing`
- authenticated account/billing surface
- quota-exhausted or post-limit state

Not allowed in initial hero:
- `Pro monthly`
- `Pro yearly`
- `Credit pack`
- `Use free previews, or sign in for checkout`
- `Live billing`, `checkout live`, `paid checkout live`

Production facts:
- `/api/credits` returns checkout links for monthly/yearly/credit_pack.
- Anonymous checkout routes redirect rather than directly complete payment.
- No authenticated Stripe Checkout completion, webhook credit grant, receipt/account-state, cancellation, or refund flow was verified in this task.

Compliance result: keep paid CTAs out of initial hero. Outside the hero, use safer phrasing unless paid-launch QA exists: `Paid plans are handled through Google login and Stripe Checkout. Tax and total are shown before payment.`

### Provider

Initial hero must avoid implementation/provider internals and absolute readiness claims.

Allowed:
- `Editor ready`
- `Provider checked on generate`
- `Generation runs server-side when available`
- post-action errors such as provider unavailable / no site credits charged before usable result

Not allowed in initial hero marketing copy:
- `server-side provider flow`
- `/api/generate-image`
- `/api/credits`
- `fal processing`
- always-ready claims if provider can be unavailable

### Privacy / Terms / Refund / Cookie wording boundaries

Legal pages should remain consistent with the actual product architecture, but final launch claims must not exceed verified facts.

Privacy must cover:
- Google login account data
- uploaded images and prompt text
- provider processing
- credit/usage records
- Stripe order identifiers
- support messages
- Cloudflare/Plausible and any actually configured GA4/Clarity
- deletion/access request path and legal/tax/security retention carve-out

Terms must cover:
- upload rights and acceptable use
- non-consensual, celebrity/political impersonation, illegal, harassment, and rights-infringing content restrictions
- capped credits/subscriptions
- provider/safety dependency
- no guarantee every prompt produces a usable result

Refund must cover:
- subscriptions and credit packs separately
- consumed credits generally not refundable except confirmed platform error
- failed provider generation before usable result should not consume paid credits
- cancellation stops future renewals but does not automatically refund prior successful usage
- support path

Cookie policy must cover:
- OAuth/session/checkout cookies as essential
- Stripe cookies during checkout
- analytics only if actually configured

Boundary: these pages may disclose flows; the hero should not advertise or sell those flows before the user has acted.

## Current source/workspace observation

The shared workspace already contains uncommitted changes:

- `M src/app/globals.css`
- `M src/components/ProductPreviewEditor.tsx`

The current `ProductPreviewEditor.tsx` working tree appears to be moving the home surface toward the right direction: it uses `surface === "home"`, removes `CreditAccountPanel` from the home branch, replaces hard-coded quota with `Credits checked at generation`, and uses a compact result placeholder. This compliance task did not implement code and does not take ownership of those diffs. Frontend must own, test, commit, push, and deploy them.

Production is still not updated: production `/` still contains `Account Credits`, `Login with Google`, `Pro monthly`, `Pro yearly`, `Credit pack`, `2 free generations left today`, `server-side provider flow`, `HD_MODE`, `TOKENS`, `high-resolution`, `unlimited`, and `guaranteed` strings.

## Checks run

- `kanban_show(t_6f23f881)`.
- Loaded `kanban-worker` skill.
- Loaded `compliance-docs-pipeline` skill.
- Sent Telegram `[START]` to `telegram:孟健一人公司`, message_id 7959.
- Read product contract: `/root/.hermes/reports/aieditorrsp-hero-optimization-20260603/product-scope-acceptance-t_b3582c36.md`.
- Read design contract: `/root/.hermes/reports/aieditorrsp-hero-optimization-20260603/design-acceptance.md`.
- Read prior compliance artifact: `/root/.hermes/reports/aieditorrsp-hero-optimization-20260603/compliance-recheck-pre.md`.
- Inspected source:
  - `/root/projects/aieditorrsp/src/components/ProductPreviewEditor.tsx`
  - `/root/projects/aieditorrsp/src/app/page.tsx`
- Searched source for account/payment/quota/provider/privacy/terms/refund risk strings.
- Ran `git rev-parse HEAD`: `ce2f1837c58e968d9ed84788f15dada803346ce4`.
- Ran `git status --short`: `M src/app/globals.css`, `M src/components/ProductPreviewEditor.tsx`.
- Production HTTP checks returned 200 for `/`, `/pricing`, `/privacy`, `/terms`, `/refund`, `/cookie-policy`, `/contact`, `/api/credits`, `/api/health`.
- Production `/api/credits` smoke returned anonymous free plan, `daily_limit: 2`, `free_remaining: 2`, `paid_enabled: true`, checkout links.
- Anonymous checkout redirect smoke for monthly/yearly/credit_pack.
- Production homepage string scan for hero-risk terms.

## Residual risk

- Authenticated paid checkout, webhook credit grant, account state, cancellation, and refund handling were not E2E tested.
- Provider successful generation and output/download quality were not E2E tested.
- Current production still contains non-compliant initial-hero strings; the compliant working-tree direction is not yet committed/deployed by frontend.
- Lower-page claims such as `high-resolution`, `unlimited`, and `guaranteed` require final post-implementation scan to separate acceptable disclaimers from overclaims.
- If pricing/legal continue using strong live-payment language, provide paid-launch QA evidence or soften copy.

## Next inputs

For `mojie` frontend implementation:
- Use this report plus product/design contracts as hard constraints.
- Implement hero-only simplification; do not add new auth, billing, credits, provider, or refund behavior.
- Remove initial hero account/paid CTAs, hard-coded quota, provider internals, and HD/spec claims.
- Preserve legal page routes and SEO helpers.
- Commit, push, deploy, then report production URL and commit SHA.

For final compliance recheck:
- Deployed production URL.
- Implementation commit SHA.
- Production screenshots or DOM/text scan after deployment.
- Paid-launch QA artifact if any `live billing` / paid checkout claims remain outside hero.
- Provider-generation QA artifact if HD/high-resolution/export claims remain.

## Structured JSON

```json
{
  "verdict": "COMPLIANCE_CONTRACT_GO_FOR_FRONTEND_IMPLEMENTATION",
  "current_production_verdict": "COMPLIANCE_NO_GO_FOR_FINAL_PASS",
  "generic_quota_language_required": true,
  "account_paid_ctas_must_stay_out_initial_hero": true,
  "hero_allowed_claims": [
    "upload source image",
    "choose/edit reusable prompt template",
    "generate preview edit",
    "credits checked at generation",
    "result preview appears after generation",
    "provider checked on generate"
  ],
  "hero_disallowed_claims": [
    "hard-coded remaining quota",
    "Account Credits panel",
    "Login with Google inside editor",
    "Pro monthly",
    "Pro yearly",
    "Credit pack",
    "live billing",
    "checkout live",
    "paid checkout live",
    "server-side provider flow",
    "/api/credits",
    "/api/generate-image",
    "fal processing",
    "HD_MODE or high-resolution promise"
  ],
  "block_required": false,
  "requires_paid_launch_qa_for_strong_billing_claims": true,
  "requires_provider_qa_for_hd_export_claims": true
}
```
