# Contract feature examples — published SDK 0.3.8 This is an audit of **contract operations**, not an HTTP API integration guide. Each command below has its own TypeScript file with an explicit published SDK call, like the Meteora operation-file pattern. Shared helpers handle transport and signing. The operation files default to read-only previews. Explicitly authorized GIWA-only qualification deployments and receipts are recorded separately from source compilation; these test instances do not change the published SDK deployment catalog. Current public package checks are recorded in the [0.3.7 release report (GitHub access may be required)](https://github.com/AmmoraLabs/ammora-examples/blob/a9b3fd798fa51495e8defec99a25de59e4d70672/docs/sdk-upgrade/SDK037-RELEASE-20261027.md). The versioned GIWA transaction records below keep their original SDK scope and are reused. ## Select an operation For an issuer deploying its own native GIWA stablecoin, use the separate [stablecoin partner flow](https://docs.ammora.org/guides/stablecoin-partner) and [18 operation commands](https://docs.ammora.org/guides/src-stablecoin-readme). This consumes the issuer's existing ERC-20 through independent ARL/ALMM pools. It does not mint an issuer asset through Launch/Graduation. Planning is always unsigned; the separate execute command binds the review hash, durable journal, current policy and receipt proof. Unresolved FDUSD/cUSD profiles remain blocked; synthetic qualification is not official issuer support. Install with `npm ci`. Select the reviewed GIWA generation and an actual caller: ```bash export AMMORA_CHAIN_ID=91342 export AMMORA_GIWA_GENERATION=auto-route export AMMORA_ACCOUNT=0xYOUR_OWN_ADDRESS export AMMORA_SEND=0 npm run quickstart:verify npm run arl:remove-position-liquidity -- npm run dfs:claim -- [payoutAddress] ``` Replace placeholders. Amounts ending in `Raw`, shares and liquidity are **integers in contract units**, not human token amounts. `AMMORA_ACCOUNT` is the transaction caller; it must match the signing wallet in send mode. The new action files default to `UNSIGNED_PREVIEW`: RPC reads/planning, no key, approval or submission. Existing action files retain their documented send gates. An unsigned plan is not proof of authority, positive claimable fees, a successful transaction or a received payment. For an intentional transaction, review calldata, amounts, destination and permissions, then set `AMMORA_SEND=1` using your own wallet setup. The existing transport simulates the exact call and checks nonce/receipt/canonical block; it never automatically resends an unknown hash. Confirmed execution still reports `payoutVerified: false`: establish actual payment with events and receiver balances at the receipt block, accounting for all same-block transfers. A zero-fee call does not count as payment. ### Deployment and authority boundaries - ALMM/ARL use the explicit reviewed deployment source and factory provenance checks. ARL manager NFT IDs and raw compounding-pool IDs are different namespaces. Locked principal stays locked; an SDK liquidity plan does not grant withdrawal rights. - ALMM `position-delegate` accepts `revoke`, `add`, `remove` or `remove-to-owner`. These can grant **principal** rights. They are not the ARL fee-only `claim-fee` / `claim-fee-to-owner` bits. The existing ARL delegation and alternate-payout examples remain the route for fee-only delegation. - DFS verifies the vault against the selected reviewed factory. `claim` requires the connected caller to be the indexed recipient; its optional payout address does not change entitlement. Recipient-fee tokens have unknown net output until receipt. `fund-fee-vault` refuses incomplete setup; delegated-funding preflight prints owner setup requirements and never sends those permission changes. `create` creates a new vault with two explicit, distinct recipients; it does not edit existing ones. A DFS vault accounts for one fixed token. Match the source fee asset to that token; routing both assets of a two-token pool to a WETH-only vault can strand base-token debt. A successful WETH funding/claim does not prove that other-token debt is collectible. Use token-specific or quote-only routing where supported. - Yield/genesis vault, staking, Merkle and presale files use `AMMORA_FEATURE_CONTRACT` or the first positional address, plus **AMMORA_FEATURE_RUNTIME_HASH**. Obtain that keccak256 pin from an independently reviewed deployment artifact. Do not derive the expected hash from the RPC response you are checking. A matching runtime is only a code identity check, not factory provenance, economic suitability, proxy implementation approval or proof that a product is deployed on GIWA. For a proxy, independently review its implementation/upgrade authority before use. These raw SDK builders do not perform a complete product preflight; the send path simulates phase/ownership/lock conditions. Staking/presale funding reads the actual stake/ quote token and plans exact approvals; no unlimited approval is requested. - V5/partner/portable read examples require deployment-team-reviewed raw manifests. The SDK verifies dependency pins and on-chain provenance. JSON is never treated as a pre-verified planning context. There is no invented built-in V5 profile, no `trustPoolAddress` bypass and no promotion to aggregation eligibility. JSON `startBlock` coordinates may be non-negative decimal strings or safe integers; the example converts only those coordinates to `bigint`, then leaves runtime, registry binding, chain and source-review validation to the installed SDK 0.3.7. A `reference-only` test source stays reference-only after parsing. - New creator surplus/leftover/partner creation-fee calls use the V4 client's caller, factory, policy and lifecycle checks. Recovery eligibility differs before/after Graduation; these operations are separate from ordinary FeeVault trading fees. ## Added operation files Prefix each command with `npm run` and append ` -- ` before its inputs. `READ_ONLY_RPC` never sends; `PREVIEW / explicit send` uses the gate above. An unsupported deployment, missing pin, wrong caller, lock or contract phase is a refusal, not an invitation to substitute a different address. | Command | File / direct SDK call | Inputs | Mode | | --- | --- | --- | --- | | `almm:remove-liquidity` | [remove-liquidity.ts](https://docs.ammora.org/examples/source/src/almm/remove-liquidity.ts.txt) · `ALMMClient.planRemovePositionLiquidity` | ` ` | preview / explicit send | | `almm:close-empty-position` | [close-empty-position.ts](https://docs.ammora.org/examples/source/src/almm/close-empty-position.ts.txt) · `ALMMClient.planCloseEmptyPosition` | ` ` | preview / explicit send | | `almm:claim-position-fees` | [claim-position-fees.ts](https://docs.ammora.org/examples/source/src/almm/claim-position-fees.ts.txt) · `ALMMClient.planClaimPositionFees` | ` ` | preview / explicit send | | `almm:position-delegate` | [position-delegate.ts](https://docs.ammora.org/examples/source/src/almm/position-delegate.ts.txt) · `ALMMClient.planUpdatePositionDelegatePermission` | ` ` | preview / explicit send | | `arl:add-compounding-liquidity` | [add-compounding-liquidity.ts](https://docs.ammora.org/examples/source/src/arl/add-compounding-liquidity.ts.txt) · `DammV2Client.planAddLiquidity` | ` ` | preview / explicit send | | `arl:remove-compounding-liquidity` | [remove-compounding-liquidity.ts](https://docs.ammora.org/examples/source/src/arl/remove-compounding-liquidity.ts.txt) · `DammV2Client.planRemoveLiquidity` | ` ` | preview / explicit send | | `arl:claim-compounding-fees` | [claim-compounding-fees.ts](https://docs.ammora.org/examples/source/src/arl/claim-compounding-fees.ts.txt) · `DammV2Client.planClaimCompoundingFees` | ` ` | preview / explicit send | | `arl:merge-positions` | [merge-positions.ts](https://docs.ammora.org/examples/source/src/arl/merge-positions.ts.txt) · `DammV2Client.planMergeManagedConcentratedPositionsQuoted` | ` ` | preview / explicit send | | `arl:refresh-vesting` | [refresh-vesting.ts](https://docs.ammora.org/examples/source/src/arl/refresh-vesting.ts.txt) · `DammV2Client.planRefreshManagedConcentratedVesting` | ` ` | preview / explicit send | | `arl:claim-position-reward` | [claim-position-reward.ts](https://docs.ammora.org/examples/source/src/arl/claim-position-reward.ts.txt) · `DammV2Client.planClaimManagedConcentratedReward` | ` ` | preview / explicit send | | `vault:redeem` | [redeem.ts](https://docs.ammora.org/examples/source/src/vault/redeem.ts.txt) · `buildRedeemAYVault` | ` ` | preview / explicit send | | `vault:request-redeem` | [request-redeem.ts](https://docs.ammora.org/examples/source/src/vault/request-redeem.ts.txt) · `buildRequestAYVaultRedeem` | ` ` | preview / explicit send | | `vault:cancel-withdrawal` | [cancel-withdrawal.ts](https://docs.ammora.org/examples/source/src/vault/cancel-withdrawal.ts.txt) · `buildCancelAYVaultWithdrawal` | ` ` | preview / explicit send | | `vault:process-withdrawal` | [process-withdrawal.ts](https://docs.ammora.org/examples/source/src/vault/process-withdrawal.ts.txt) · `buildProcessAYVaultWithdrawal` | ` ` | preview / explicit send | | `vault:lower-withdrawal-minimum` | [lower-withdrawal-minimum.ts](https://docs.ammora.org/examples/source/src/vault/lower-withdrawal-minimum.ts.txt) · `buildLowerAYVaultWithdrawalMinimum` | ` ` | preview / explicit send | | `vault:genesis-withdraw` | [genesis-withdraw.ts](https://docs.ammora.org/examples/source/src/vault/genesis-withdraw.ts.txt) · `buildWithdrawAGVault` | ` ` | preview / explicit send | | `vault:genesis-claim-base` | [genesis-claim-base.ts](https://docs.ammora.org/examples/source/src/vault/genesis-claim-base.ts.txt) · `buildClaimAGVaultBase` | `` | preview / explicit send | | `vault:genesis-refund` | [genesis-refund.ts](https://docs.ammora.org/examples/source/src/vault/genesis-refund.ts.txt) · `buildClaimAGVaultRefund` | `` | preview / explicit send | | `vault:genesis-early-refund` | [genesis-early-refund.ts](https://docs.ammora.org/examples/source/src/vault/genesis-early-refund.ts.txt) · `buildClaimAGVaultEarlyRefund` | `` | preview / explicit send | | `vault:genesis-close-escrow` | [genesis-close-escrow.ts](https://docs.ammora.org/examples/source/src/vault/genesis-close-escrow.ts.txt) · `buildCloseAGVaultEscrow` | `` | preview / explicit send | | `staking:stake` | [stake.ts](https://docs.ammora.org/examples/source/src/staking/stake.ts.txt) · `buildStakeAStake` | ` ` | preview / explicit send | | `staking:claim` | [claim.ts](https://docs.ammora.org/examples/source/src/staking/claim.ts.txt) · `buildClaimAStake` | `` | preview / explicit send | | `staking:request-unstake` | [request-unstake.ts](https://docs.ammora.org/examples/source/src/staking/request-unstake.ts.txt) · `buildRequestAStakeUnstake` | ` ` | preview / explicit send | | `staking:cancel-unstake` | [cancel-unstake.ts](https://docs.ammora.org/examples/source/src/staking/cancel-unstake.ts.txt) · `buildCancelAStakeUnstake` | ` ` | preview / explicit send | | `staking:withdraw-unstake` | [withdraw-unstake.ts](https://docs.ammora.org/examples/source/src/staking/withdraw-unstake.ts.txt) · `buildWithdrawAStakeUnstake` | ` ` | preview / explicit send | | `staking:stake-v2` | [stake-v2.ts](https://docs.ammora.org/examples/source/src/staking/stake-v2.ts.txt) · `buildStakeAStakeV2` | ` ` | preview / explicit send | | `staking:claim-v2` | [claim-v2.ts](https://docs.ammora.org/examples/source/src/staking/claim-v2.ts.txt) · `buildClaimAStakeV2` | ` ` | preview / explicit send | | `token-lock:claim` | [claim.ts](https://docs.ammora.org/examples/source/src/token-lock/claim.ts.txt) · `buildClaimAmmoraTokenLock` | ` ` | preview / explicit send | | `merkle:claim-locked` | [claim-locked.ts](https://docs.ammora.org/examples/source/src/merkle/claim-locked.ts.txt) · `buildClaimAmmoraMerkleDistributorLocked` | `` | preview / explicit send | | `presale:create-escrow` | [create-escrow.ts](https://docs.ammora.org/examples/source/src/presale/create-escrow.ts.txt) · `buildCreatePermissionlessAmmoraPresaleEscrow` | `` | preview / explicit send | | `presale:deposit` | [deposit.ts](https://docs.ammora.org/examples/source/src/presale/deposit.ts.txt) · `buildDepositToAmmoraPresale` | ` ` | preview / explicit send | | `presale:withdraw` | [withdraw.ts](https://docs.ammora.org/examples/source/src/presale/withdraw.ts.txt) · `buildWithdrawFromAmmoraPresale` | ` ` | preview / explicit send | | `presale:claim` | [claim.ts](https://docs.ammora.org/examples/source/src/presale/claim.ts.txt) · `buildClaimAmmoraPresale` | `` | preview / explicit send | | `arl:add-to-position` | [add-to-position.ts](https://docs.ammora.org/examples/source/src/arl/add-to-position.ts.txt) · `DammV2Client.planAddLiquidityToManagedConcentratedPosition` | ` ` | preview / explicit send | | `arl:remove-position-liquidity` | [remove-position-liquidity.ts](https://docs.ammora.org/examples/source/src/arl/remove-position-liquidity.ts.txt) · `DammV2Client.planRemoveManagedConcentratedLiquidity` | ` ` | preview / explicit send | | `arl:remove-all-position-liquidity` | [remove-all-position-liquidity.ts](https://docs.ammora.org/examples/source/src/arl/remove-all-position-liquidity.ts.txt) · `DammV2Client.planRemoveAllManagedConcentratedLiquidityQuoted` | ` ` | preview / explicit send | | `almm:swap-exact-output` | [swap-exact-output.ts](https://docs.ammora.org/examples/source/src/almm/swap-exact-output.ts.txt) · `ALMMClient.planSwapExactOutput` | ` ` | preview / explicit send | | `arl:swap-exact-output` | [swap-exact-output.ts](https://docs.ammora.org/examples/source/src/arl/swap-exact-output.ts.txt) · `DammV2Client.planSwapExactOutput` | ` ` | preview / explicit send | | `almm:claim-referral` | [claim-referral.ts](https://docs.ammora.org/examples/source/src/almm/claim-referral.ts.txt) · `ALMMClient.planClaimReferralFee` | ` ` | preview / explicit send | | `staking:request-unstake-v2` | [request-unstake-v2.ts](https://docs.ammora.org/examples/source/src/staking/request-unstake-v2.ts.txt) · `buildRequestAStakeV2Unstake` | ` ` | preview / explicit send | | `staking:cancel-unstake-v2` | [cancel-unstake-v2.ts](https://docs.ammora.org/examples/source/src/staking/cancel-unstake-v2.ts.txt) · `buildCancelAStakeV2Unstake` | ` ` | preview / explicit send | | `staking:withdraw-unstake-v2` | [withdraw-unstake-v2.ts](https://docs.ammora.org/examples/source/src/staking/withdraw-unstake-v2.ts.txt) · `buildWithdrawAStakeV2Unstake` | ` ` | preview / explicit send | | `dfs:state` | [state.ts](https://docs.ammora.org/examples/source/src/dfs/state.ts.txt) · `DFSClient.getState` | `` | read only | | `dfs:fund` | [fund.ts](https://docs.ammora.org/examples/source/src/dfs/fund.ts.txt) · `DFSClient.planCappedDirectFundingWithApproval` | ` ` | preview / explicit send | | `dfs:claim` | [claim.ts](https://docs.ammora.org/examples/source/src/dfs/claim.ts.txt) · `DFSClient.getState`, `DFSClient.getClaimPreview`, `DFSClient.planClaim` | ` [payoutAddress]` | preview / explicit send | | `dfs:fund-fee-vault` | [fund-fee-vault.ts](https://docs.ammora.org/examples/source/src/dfs/fund-fee-vault.ts.txt) · `DFSClient.planAtomicFundingWithPreflight` | ` ` | preview / explicit send | | `dfs:delegated-funding-preflight` | [delegated-funding-preflight.ts](https://docs.ammora.org/examples/source/src/dfs/delegated-funding-preflight.ts.txt) · `DFSClient.preflightDelegatedFeeVaultFunding` | ` ` | read only | | `dfs:create` | [create.ts](https://docs.ammora.org/examples/source/src/dfs/create.ts.txt) · `DFSFactoryClient.planCreateVault` | ` ` | preview / explicit send | | `revenue:almm-referral` | [almm-referral.ts](https://docs.ammora.org/examples/source/src/revenue/almm-referral.ts.txt) · `RevenueCenterClient.planClaimALMMReferral` | ` ` | preview / explicit send | | `revenue:arl-revenue` | [arl-revenue.ts](https://docs.ammora.org/examples/source/src/revenue/arl-revenue.ts.txt) · `RevenueCenterClient.planClaimARLRevenue` | ` ` | preview / explicit send | | `arl-v5:inspect` | [inspect.ts](https://docs.ammora.org/examples/source/src/arl-v5/inspect.ts.txt) · `ArlV5FactoryClient.verifyDeploymentAtBlock`, `ArlV5FactoryClient.verifyPoolAtBlock`, `ArlV5PoolClient.getFees` | ` ` | read only | | `partner:graduation-state` | [graduation-state.ts](https://docs.ammora.org/examples/source/src/partner/graduation-state.ts.txt) · `PartnerGraduationClient.verifyDependencies`, `PartnerGraduationClient.previewPartnerGraduation` | ` ` | read only | | `partner:pool-state` | [pool-state.ts](https://docs.ammora.org/examples/source/src/partner/pool-state.ts.txt) · `PartnerArlPoolClient.getPoolState` | ` ` | read only | | `portable:discover-pool` | [discover-pool.ts](https://docs.ammora.org/examples/source/src/portable/discover-pool.ts.txt) · `verifyAmmoraPortableDeploymentAtBlock`, `AmmoraPortableLifecyclePlanner.discoverGraduatedPool`, `AmmoraPortableLifecyclePlanner.discoverFeeVaultSources` | ` ` | read only | | `merkle:claim` | [claim.ts](https://docs.ammora.org/examples/source/src/merkle/claim.ts.txt) · `buildNewAmmoraMerkleDistributorClaim` | ` ` | preview / explicit send | | `launch:claim-surplus` | [claim-surplus.ts](https://docs.ammora.org/examples/source/src/launch/claim-surplus.ts.txt) · `AmmoraV4LaunchCurveClient.planClaimSurplus` | `` | preview / explicit send | | `launch:withdraw-leftover` | [withdraw-leftover.ts](https://docs.ammora.org/examples/source/src/launch/withdraw-leftover.ts.txt) · `AmmoraV4LaunchCurveClient.planWithdrawLeftover` | `` | preview / explicit send | | `launch:claim-partner-creation-fee` | [claim-partner-creation-fee.ts](https://docs.ammora.org/examples/source/src/launch/claim-partner-creation-fee.ts.txt) · `AmmoraV4LaunchCurveClient.planClaimPartnerPoolCreationFee` | `` | preview / explicit send | ## Atomic Config, launch and first buy SDK 0.3.7 includes the reviewed GIWA helper and runtime pins. [The convenience example](https://docs.ammora.org/examples/source/src/launch/team/create-config-and-pool-with-first-buy.ts.txt) calls `createConfigAndPoolWithFirstBuy` with the team policy and no deployment/targets JSON. Follow [the integrated guide](https://docs.ammora.org/guides/launchpad#atomic-first-buy) for approval and execution. [Public-package validation (GitHub access may be required)](https://github.com/AmmoraLabs/ammora-examples/blob/a9b3fd798fa51495e8defec99a25de59e4d70672/docs/sdk-upgrade/SDK037-RELEASE-20261027.md) distinguishes the new read-only CLI check from reused actual atomic transaction and payout evidence. ## Audit scope and remaining specialized surfaces The audit reads the **installed npm 0.3.7 declarations and implementation**, rather than an unpublished SDK source branch. It inventories 23 non-API client classes and 472 exported `build*` symbols. These are not 495 distinct user tasks: many are ABI encoders, legacy generation variants, low-level alternatives to authenticated planners, or operator/governance methods. `npm run audit:contracts` emits every method and builder with its actual explicit call sites to `.validation/contract-surface.json`. Empty call-site lists remain visible; this is not a claim that every export has a standalone CLI or a new testnet transaction. | Functional family | Operation coverage / decision | | --- | --- | | V4 Launch / FeeVault | Existing Config, launch, quotes, swaps, first buy, Graduation, receipt identity, funding and alternate-payout claims; added lifecycle recovery calls. Creator transfer has a [dedicated example](https://docs.ammora.org/guides/src-launch-creator-transfer); protocol withdrawals remain operator work. | | ALMM | Existing factory/pool, active bin, swap, strategy/extended position, limits, zaps and rewards; added exact-output swaps, liquidity removal, empty-position close, position fee and referral claims and explicit delegation. [ALMM rebalance](https://docs.ammora.org/guides/src-almm-readme) uses a checked planner and explicit shares/input/refund; [LP batch claims](https://docs.ammora.org/guides/src-fees-readme) execute sequentially. | | ARL concentrated / compounding | Existing pool creation, quote/swap/permit/native, seed, lock/split and verified fee/delegation flow; added position top-up/removal/all-removal, compounding add/remove/fee claim, managed merge/vesting/reward and exact-output swap. Operator rewards/fee-policy configuration are outside wallet examples. | | DFS / AFS | New creation, state, capped funding with approval, atomic FeeVault funding, delegated setup preflight and recipient-scoped alternate-payout claim. AFS is the SDK alias of DFS. [Position/reward source funding](https://docs.ammora.org/guides/src-dfs-readme#connect-revenue-sources-directly) has explicit source allow/revoke and fee/reward permission examples; setup is never auto-granted. | | Yield / genesis vault | Existing create/deposit; new immediate/queued redeem, cancellation/processing/minimum adjustment, genesis withdrawal/base/refund/early-refund/escrow close. Strategy/operator configuration is excluded. | | Staking V1 / V2 | New stake, claim and request/cancel/withdraw queue actions, including V2 claim-fee cap. Vault creation/reward/operator changes are excluded. | | Token lock / Merkle / presale | New lock release, first/locked Merkle claims, presale escrow/deposit/withdraw/claim. Issuer creation, allowlist roots and allocation administration require a separate issuer guide; no fixture claim proof or allocation is invented. | | Routing / integrations / venue math | Existing reviewed route quote/status, guarded swaps, integrate calldata, aggregation readiness and offline venue/risk-policy math. Individual venue provider classes and low-level execution builders are internal alternatives under these workflows; enabling an unreviewed venue is outside this change. | | Portable custom deployment | Existing offline curve economics; added SDK-verified custom deployment discovery and fee-source reads. Custom-chain transaction lifecycles need that deployment's manifest/qualification; no production profile or verified context is fabricated. | | ARL V5 / partner Graduation | New manifest-verified deployment/pool fee inspection, partner Graduation preview and pool-state reads; V5 mutation and timelocked governance are specialized deployment/operator work. Existing 0.3.1 partner subpath catalog/onboarding/quotes/claim/reconciliation examples remain available offline. | | Legacy V3 `ALCClient` | Not mapped to current V4 deployment addresses. Historical V3 mutation wrappers are intentionally not presented as current GIWA examples. | | Data API clients / feeds | Excluded. No `getLaunchFeed`, history API, HTTP service dependency, DB or Fly work is required. | ## Current validation classification The [public SDK 0.3.7 validation (GitHub access may be required)](https://github.com/AmmoraLabs/ammora-examples/blob/a9b3fd798fa51495e8defec99a25de59e4d70672/docs/sdk-upgrade/SDK037-RELEASE-20261027.md) is the package reference. The [public034 audit (GitHub access may be required)](https://github.com/AmmoraLabs/ammora-examples/blob/a9b3fd798fa51495e8defec99a25de59e4d70672/docs/sdk-upgrade/SDK034-FINAL-CONTRACT-AUDIT-20261025.md) preserves a historical subset: **58 REUSED operation paths / 0 unresolved blockers in that subset**, with its original 147 TypeScript files and 121 commands. It preserves original execution versions and excludes API integration. The special surfaces above still retain their deployment/authority limits; zero historical blockers does not claim live coverage of every SDK method or low-level encoder. ### Historical sequence (superseded counts, preserved failures) The initial addition was qualified by package integrity, strict typechecking, registered-file/import checks and offline regressions. The subsequent [2026-10-25 GIWA matrix (GitHub access may be required)](https://github.com/AmmoraLabs/ammora-examples/blob/a9b3fd798fa51495e8defec99a25de59e4d70672/docs/sdk-upgrade/SDK031-58-GIWA-20261025.md) tests the 58 files from a fresh public SDK 0.3.1 installation: **29 PASSED_THIS_RUN / 29 BLOCKED**. It records 58 successful transactions including setup/approvals/cleanup, plus read-only and refusal proofs. This does not mean all 58 features have executable GIWA targets. The [29-blocker follow-up (GitHub access may be required)](https://github.com/AmmoraLabs/ammora-examples/blob/a9b3fd798fa51495e8defec99a25de59e4d70672/docs/sdk-upgrade/SDK031-BLOCKED-RESOLUTION-20261025.md) adds actual Token Lock and managed reward payments. That historical classification was: **2 PASSED_THIS_RUN / 29 REUSED / 27 BLOCKED**. It separates reviewed deployment references, real authority, positive funding and lifecycle prerequisites for every remaining row. The reward slot persists and its bounded program/residual balance are recorded; this is not a fully reclaimed reward-program claim. The live test fixes V5 JSON block parsing, the omitted RevenueCenter creator view, stable snapshot code-pin reads and explicit leftover payout display. Installed SDK artifacts are unchanged. Full ALMM/compounding removals automatically burn their positions; a separate close needs a still-live empty NFT. The dedicated close test uses another newly created empty position. No strategy profit or unreviewed target is inferred from cash-vault withdrawal or an unsigned plan. The existing [SDK 0.3.1 fee/LP proof (GitHub access may be required)](https://github.com/AmmoraLabs/ammora-examples/blob/a9b3fd798fa51495e8defec99a25de59e4d70672/docs/sdk-upgrade/SDK031-FEE-LP-VALIDATION.md) and its original receipts remain **REUSED** for their original fee/LP paths. At that historical stage, all 94 pre-existing source/lock inputs matched their retained hashes. Original claims, fee-only delegation and nonce/receipt helpers are reused within that scope. The current dependency lock pins public037; the final audit records the exact unchanged claim closure and scoped env/swap differences. New operations keep their own hashes. Reuse is invalidated by changes to a qualified claim/delegation path, artifact, beneficiary/payout, authority, chain/generation or exact-block receipt evidence. A changed balance today does not retroactively invalidate a canonical historical receipt; a new claim must obtain its own evidence. See the accompanying [implementation validation record (GitHub access may be required)](https://github.com/AmmoraLabs/ammora-examples/blob/a9b3fd798fa51495e8defec99a25de59e4d70672/docs/sdk-upgrade/CONTRACT-FEATURE-VALIDATION.md). ## Historical SDK 0.3.4 launchpad completion The [unified guide](https://docs.ammora.org/guides/launchpad#12-full-config-authoring-and-optional-features) adds `launch:author-config`, `launch:config-json`, `launch:migrate`, `launch:config-enabled`, `launch:creator-metadata`, `arl:create-position` and `arl:vest-position`. These seven commands and two supporting TypeScript modules are qualified in the [full GIWA report (GitHub access may be required)](https://github.com/AmmoraLabs/ammora-examples/blob/a9b3fd798fa51495e8defec99a25de59e4d70672/docs/sdk-upgrade/LAUNCHPAD-FULL-GIWA-20261026.md). Historical rows above retain their original SDK/deployment/evidence scope. ### Initial optional-action qualification (historical SDK 0.3.4) The [optional examples](https://docs.ammora.org/guides/src-arl-optional-positions) close the 18 method-level source gaps from the builder handbook with 13 focused commands. The [initial qualification report (GitHub access may be required)](https://github.com/AmmoraLabs/ammora-examples/blob/a9b3fd798fa51495e8defec99a25de59e4d70672/docs/sdk-upgrade/OPTIONAL-ACTIONS-20261027.md) preserves its unsigned reads, expected refusals, then-existing uint40 issue and helper prerequisites. The uint40 fix shipped in 0.3.6 and the default GIWA first-buy helper in 0.3.7; follow [the public release (GitHub access may be required)](https://github.com/AmmoraLabs/ammora-examples/blob/a9b3fd798fa51495e8defec99a25de59e4d70672/docs/sdk-upgrade/SDK037-RELEASE-20261027.md) and [current optional usage](https://docs.ammora.org/guides/src-arl-optional-positions). Historical live payment proofs remain unchanged; source coverage is not a fresh transaction PASS. ## Fee sharing setup (public SDK 0.3.7) [Recipient/ratio setup and role-based claims](https://docs.ammora.org/guides/fee-sharing) connects `launch:fee-config` (preview/document → existing Config creation), before/after-Graduation distribution, and `dfs:create-json` (2–5 recipients, relative weights, reviewed exact calldata). Existing Creator/Partner/LP/delegate/DFS claim paths retain their historical GIWA validation scope. See [changed-boundary validation (GitHub access may be required)](https://github.com/AmmoraLabs/ammora-examples/blob/a9b3fd798fa51495e8defec99a25de59e4d70672/docs/sdk-upgrade/FEE-SHARING-037.md); no SDK publication or GitHub CI. ## FeeVault, DFS sources and sequential LP batches [FeeVault delegation and batch claims](https://docs.ammora.org/guides/src-fees-readme), [DFS source setup and funding](https://docs.ammora.org/guides/src-dfs-readme#connect-revenue-sources-directly), and [ALMM rebalance](https://docs.ammora.org/guides/src-almm-readme) cover the new explicit SDK 0.3.7 calls. FeeVault `batchClaim` is owner/operator-only; the ordinary wallet example uses separate `claimFor` transactions. Source previews and zero-credit receipts are not positive payment proof. The [2026-10-28 FeeVault/DFS/batch/ALMM GIWA report (GitHub access may be required)](https://github.com/AmmoraLabs/ammora-examples/blob/a9b3fd798fa51495e8defec99a25de59e4d70672/docs/sdk-upgrade/FEE-SOURCES-BATCH-REBALANCE-037.md) covers payments, rebalancing, permission denials, new-LP exits, and remaining reward/rounding state.