# September 21 deployment integration

Integrated the deployment from source `e4c87fc`, rather than later backend HEAD:

| Component | Base address / block |
|---|---|
| Factory | 0x985b605ad55f76c2acaa672861866a8a77208a2e · 51,589,857 |
| Implementation | 0x73ea5e2ffa03f5eeb935bbaed10335723bafa3c7 |
| Lens | 0x0b8bd3c34c5cecee448471a833d360f0bfa7d742 |
| Short S | 0xc9cdd2b1617aa842860053de24505636dff6a56f · 51,589,898 |
| Long L | 0xfbda2401980b89f61ec41515f9be968f961b787f · 51,589,904 |

The raw deployment witness includes clone code, original creation calldata and lens responses. The frontend verifies factory events, receipts, implementation and predicted address before presenting a position. The new 27-word clone, 13-field Config and expanded lens use their own interfaces. Earlier 26-word clones retain their old interfaces and exit-fee model. No deployed contract or real wallet transaction was changed.

New creation defaults to a weekly calendar, next Friday 08:00 UTC first boundary, 53% IV, 0.5% short grid/slippage, 50 USDC minimum trade, and 1% annual fee to the configured protocol recipient. A dated option remains available. The connected wallet remains owner. Live model expiry comes from the lens, not the immutable first-boundary word. The model changes to the next period one hour before the calendar boundary.

Fee estimates use actual `feeBase` and `lastSkim` read at the same block as holdings. Quote pays first, then base at the strike, capped by balances. Missing fee reads remain unavailable. The deployed code has no HEAD-only notional-zero guard, so the client does not invent one. Fees leave as Aave receipt tokens; withdrawal shows only net underlying assets, with fee receipt tokens separate even when the owner is the recipient.

Both generations share one read block and have separate index checkpoints. A partial generation read never produces a complete wallet cache. The cache version and release fingerprint changed, and repeating terms are retained in historical display. Verified same-owner, same-pool, same-assets rolls can cross the supported generations.

Independent evaluator `/root/deployment_compat_review` reviewed source and implementation: no ABI, fee, calendar, authentication or cache blockers. Its final check required zero Aave collateral as well as zero pair balances/debt before labelling a closed position fully withdrawn; applied. Index throughput changes preserve both witnesses, prefix/hash checks and atomic lease/cursor fences.

Validation:
- 130 Node tests pass, including real deployed ABI witnesses, weekly rollover boundaries, quote/base fee payment, >1-year accrual, legacy compatibility, missing reads, cross-generation cache and partial/reorganized reads.
- Five Base fork tests pass against deployed contracts at block 51,593,171: create/fund/borrow/repay/close; short debt roll and activation; protocol fee receipt-token payout; old-generation debt roll into a new perpetual; one-hour-early weekly rollover. The fork uses fake balances and broadcasts nothing. Source snapshot is exactly e4c87fc; fixture is `tests/FrontendPeriod.t.sol`.
- Browser verifies all four thetadeployer positions and the new weekly/53% creation flow. The short's withdrawal review separates net underlying from protocol fee receipt tokens. Read-only provider fixture has no key or send implementation.

Index rollout:
- New Worker `cattle-index-period`, D1 `6d39a597-fda3-477e-a7ad-f7d7362f65db`, route `/dev/cattle/api/v2/*`; old Worker/database remain on `/api/*`.
- Initial backfill met BlockPI rate limiting. Ordinary reads now start with PublicNode, leaving BlockPI/BLXR for independent witnesses; intervals are at most 1,000 blocks, up to three per minute. The new index reached ready state. Registry endpoints each return their own factory and two deployment records; the browser fills the cron gap directly.
- Latest deployed Worker version: `56419a44-725e-452a-92aa-8b445e250f16`.

Final browser pass at `app.html?v=31`: four verified positions, index+tail source, two clean closed-position summaries, no horizontal overflow, no console warnings/errors. Weekly-to-dated selection changes the field to Expiry and clears the old review. Both index status endpoints were ready with no last error at block 51,593,792; the final page read advanced to block 51,593,902. No wallet sends were requested.
