Mechanics confirmed: the short's grid target is n·(1 − call delta), so it is the covered-call side and the current "sells as price rises, buys as it falls" descriptions are directionally correct. The long tracks call delta and does sell on the way down. Report follows.

## 1. Most consequential misunderstandings

Ordered by how badly a newcomer could misread the product. Repeated phrases are grouped.

**1. "Covered short" reads as a bearish short position.** Sources: index.html hero "take the covered-short side", og:description "Long or short", principles strip, segmented button, step 01 "A covered short sells into them"; model.js short.name and short.note; portfolio.js pill; guide dialog.
- Reader may infer: this side profits when WETH falls, like a leveraged short.
- Why it is wrong: the contract's short branch targets n·(1 − call delta) and at expiry holds all WETH below strike and all USDC above it. The README calls it the covered-call side. It holds WETH throughout.
- The current copy fights this with three separate negations ("not a bearish leveraged short", "not a directional leveraged short", "not a bearish leveraged short" again in the guide). Renaming removes the need for them. See section 2 for the proposal.

**2. The short's intent is never stated, only its mechanics and what it is not.** Sources: index.html FAQ "Does 'covered short' mean I am betting on a price fall?", landing.js short.text, model.js short.note, app.html radio "Sells into strength. Buys as price falls.", summary title "Trade the other side."
- Reader may infer: there is no reason to choose it unless you are bearish.
- Replace short.description with: "For when you expect WETH to stay in a range. It sells a little WETH as price rises and buys it back as price falls, aiming to collect a small spread on each round trip. That spread is how it earns its option premium over time, not as an upfront payment."
- Replace the FAQ answer with: "No. It is the covered-call side: the position keeps holding WETH and sells slices of it as price rises, buying them back on dips. It suits a range-bound or income view. You still carry the price risk of the assets you hold."
- Why: per the product brief, the short targets a spread intended to cover option premium and expresses range/yield intent. FRONTEND_NOTES §1 confirms "a short leg earns its grid g per fill". The long has no spread target, so this sentence must appear only on the short.

**3. "Not just an option premium" and "not a premium-only call purchase" imply a premium is paid.** Sources: landing.js long.text; model.js long.note; app.html guide dialog "not a premium-only option purchase" and summary-note.
- Reader may infer: I pay a premium at entry and also post collateral.
- Replace with: "No option premium is paid or received at entry. You supply both assets as collateral and the strategy trades between them. The outcome depends on those trades, interest and costs, not on a fixed option payoff."
- Why: the brief states there is no entry premium payment or receipt. The README fee shape is "no upfront fee, pro-rated tariff at close."

**4. Strike and expiry are absent from the landing page entirely.** Sources: index.html steps 01 to 03 and both FAQ sections mention neither; "Both adjust holdings as the market moves" and "stays available to borrow against" read open-ended.
- Reader may infer: a perpetual, rolling position.
- Replace step 01 body with: "Pick a strike and an expiry date. Until expiry the position trades between WETH and USDC to follow its strategy. After expiry it stops trading and holds what it ended with until the owner closes it."
- Why: `expiry` is a required config field, `_preview` returns no order after expiry plus the five-minute terminal window, and FRONTEND_NOTES says `closed()` means quoting stopped, not paid out. The brief explicitly forbids a perpetuals mapping, so the fix is to state the expiry, not to add an analogy.

**5. Borrowing is presented as a standing feature of the collateral.** Sources: index.html hero "stays available to borrow against", ticket "With the option to borrow", og:description "Optional borrowing"; app.html borrow card "It frees up capital".
- Reader may infer: connecting or creating a position gives me a borrow button, and borrowing capacity is guaranteed.
- Replace hero sentence with: "Your collateral works in the strategy, earns Aave supply interest, and can be borrowed against at Aave, subject to its limits." Replace the ticket small line with "Borrowing possible, at Aave's limits."
- Why: the README says the pair exposes no borrow or repay function. The owner borrows at Aave through credit delegation, and headroom depends on LTV, reserve state and the pending-order gate. The app currently enables none of this.

**6. "Collateral − debt" reads as position value or profit.** Source: portfolio.js account grid line "Collateral − debt". The correcting sentence sits inside a collapsed "What this view covers" details block.
- Reader may infer: this is what I would get back, or what I have made.
- Replace the label with "Net Aave value" and add one muted line under the account grid: "Aave account value at one block. Not a withdrawal quote or lifetime result."
- Why: the brief states collateral minus debt is neither lifetime P&L nor a verified exit quote. Exits pay a pro-rated tariff first and are best-effort per leg.

**7. Order previews sound actionable and use unexplained order jargon.** Sources: portfolio.js summary "2 trade previews available"; per-order line "Fill or kill"; empty text "below the order floor"; borrow dialog and cards use "hedge" without definition.
- Reader may infer: there are two live orders I can take, or that the contract has posted them.
- Replace summary with: "2 orders the contract would sign right now". Replace "Fill or kill" with "Fills whole or not at all". Replace "below the order floor" with "below the minimum order size". Use "strategy trade" everywhere the UI says "hedge", or define hedge once in the guide.
- Why: FRONTEND_NOTES §4 says `previewOrder` is validation truth, not orderbook truth. The existing closing line "A contract preview is not a posted or filled order" is correct and should stay.

**8. Debt-limited trades: the copy omits that this can happen above health factor 1.** Sources: portfolio.js hfRefused text; borrow dialog verdict.
- Reader may infer: if my health factor is above 1, my trades cannot be blocked.
- Replace hfRefused text with: "The next trade would move collateral out before its proceeds arrive, and that step alone would leave too little collateral for the debt. This can happen while the account's health factor is still above 1."
- Why: `_postTransferHealthy` subtracts the outgoing slice before counting proceeds, and the lens's `hfAfter*` is computed the same way. FRONTEND_NOTES §5 documents pair E's refusal at a healthy account.

**9. Builder hints use contract jargon at the decision point.** Sources: app.html "A live quote must check the starting mix", "Set the strategy's terms", strike error "Enter a positive USDC amount with up to 18 decimal places", index.html "Deposit both assets in the pair".
- Reader may infer: nothing useful, or that a strike is a USDC balance.
- Replace the funding hint with: "A real deposit needs both assets, in a mix sized to the strike. This example does not check that mix." Replace the strike error with: "Enter a positive strike price in USDC per WETH." Replace "in the pair" with "of the pair, here WETH and USDC."
- Why: FRONTEND_NOTES §2 requires both legs and sizes the mix at the strike. The 18-decimal rule is the contract's strike scale, not a USDC amount.

**10. Repeated disclaimers within one surface.** The borrow dialog says the strategy does not manage leverage twice, and defines health factor twice. The guide dialog, landing FAQ and builder note each repeat the "not bearish" and "not premium" negations. Keep one definition of health factor in the dialog and one in the portfolio scope block. Once the names carry intent, drop all three negations except the FAQ answer.

Lower-priority items worth folding in: "Borrowing: Not included" in the summary should read "None in this example"; "Factory verified" should read "Verified Cattle contract"; "Trades settled through CoW" should read "CoW Protocol" once; the empty-state button "Connect wallet" should read "Connect wallet to view" so connection is clearly read-only; the segmented borrow scenario "Large hedge" should read "Large trade"; "HF after outgoing transfer" should spell out health factor. "Buys into strength" is trader idiom and should become "buys as price rises" wherever it appears.

## 2. Naming and explanation proposal

Use the same two names, the same one-line intent, and the same one-line mechanics on every surface. Intent first, then mechanics.

| Surface | Long | Short |
|---|---|---|
| Name (pill, radio, card) | Long call | Covered call |
| Sublabel under name | Bullish · long side | Range or income · short side |
| One-line intent | For when you expect WETH to rise. | For when you expect WETH to stay in a range. |
| One-line mechanics | Holds more WETH as price rises and less as it falls, aiming to track a long call. | Sells slices of WETH as price rises and buys them back as it falls, aiming to collect a small spread each round trip. |
| Builder title | Follow the upside. | Earn from the swings. |
| Live card intent line | Buys WETH as price rises; sells as it falls. | Sells WETH as price rises; buys as it falls. |

Rules that go with the table:
- The word "short" stays visible as the sublabel so the contract's `gridBps != 0` side, the README and the journal still map cleanly. "Covered" gets one gloss in the guide: "covered means the position holds the WETH it may sell."
- The spread sentence appears only on the short. The long gets "aiming to track a long call" and nothing about spread or premium.
- "Aiming to" is the only hedge word used. Drop "replicate" from user copy and use "track" or "behave like"; the FAQ keeps one sentence saying neither side is an exact copy of an option payoff.
- Strike and expiry get one shared explainer, in the guide dialog and the landing FAQ, not on the radio labels: "The strike is the strategy's reference price. Near expiry the position aims to end up mostly in WETH on one side of the strike and mostly in USDC on the other. After expiry it stops trading and holds what it has until closed."
- Optional detail for the guide and FAQ only: the terminal window, the minimum order size, the difference between a contract preview and a posted order, the collateral-bit note, and the outgoing-transfer health-factor rule with its "can bind above 1" clause. None of these belong on the radio labels or the live card header.
- Ghost-cow lines stay where they are now: hero eyebrow, section headings, empty states and loading state. They should not appear in the strategy names, the health factor lines or the order summaries.

## 3. Points the implementing agent must adjudicate

- **Rename or keep "Covered short".** My recommendation is "Covered call" because it is the standard name, matches the README's "covered-call cow side" and removes three disclaimers. The contract NatSpec and the design journal say "covered short". If the user wants to keep that term, every instance needs the intent gloss from section 2 next to it, and the negations must stay.
- **Terminal behaviour wording.** The strike explainer above rests on the terminal target in `_preview` and on the contract's note that expiry reconciles "at the oracle band, not an exercise at strike". I did not read DESIGN_NOTES §6, so the phrase "mostly in WETH on one side and mostly in USDC on the other" should be confirmed against it before shipping. If uncertain, keep the explainer to "stops trading at expiry and holds what it has until closed."
- **Whether "spread ... earns its option premium over time" is precise enough.** The brief and FRONTEND_NOTES support it, but it is an aim, not a guarantee, and execution shortfall can exceed the grid on small fills. The proposed wording says "aiming to". If the user prefers no premium language at all, use "aiming to collect a small spread each round trip" and stop there.
- **"Hedge" versus "trade".** The docs use hedge throughout; the UI mixes both. I recommend "strategy trade" in user copy. If the user prefers "hedge", define it once in the guide.
- **Where the net-value caveat lives.** I put a one-line caveat on the card. If that feels like a repeated warning, the alternative is renaming the row to "Net Aave value" and leaving the explanation in the scope block only.
- **Sample data pair.** The sample cards show wstETH/USDC while the builder is WETH/USDC. That is accurate to the live trials but may confuse a newcomer. Either label the sample "wstETH example" or align it. Not a wording error, so I did not list it above.

Verified against `src/ThetaCattlePair.sol`, `src/lens/ThetaCattleLens.sol`, the README and both frontend docs. I did not run a comprehension study. No files were edited and no other reviewer was started.
