Skip to content

Commit a86b3df

Browse files
committed
docs: two entries on the not-implemented list had stopped being true
That list is what anyone reads to answer "what is left", so a stale entry on it is worse than a stale comment somewhere in the code - it sends the next person to build something that already exists, or to trust a gap that closed. The graduation router was listed as not implemented. It is built, and V-09 closed on Day 8 against the real HyperSwap position manager. What is actually outstanding is narrower and worth stating precisely: its DEPLOYMENT, blocked on first-party confirmation of three addresses that are immutable in its constructor. Located and mutually verified on-chain is not the same claim as the vendor saying so. `/account` holdings were listed as needing a read that does not exist. They ship, with portfolio value. P&L does not, and the reason is worth keeping: it needs a cost basis, which means folding every trade rather than reading a balance, and the history only exists from the indexer's start block. A P&L that silently began mid-history would be wrong in the direction that flatters.
1 parent 16ad0e0 commit a86b3df

1 file changed

Lines changed: 14 additions & 3 deletions

File tree

docs/REVIEW-NOTES.md

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -362,7 +362,14 @@ These are not placeholders. They are recorded refusals, and each names the
362362
verification item blocking it:
363363

364364
- `XStockAssetAdapter` multiplier semantics — V-03
365-
- The graduation router — V-06, V-09
365+
- The graduation router's **deployment** — V-06. The router, the permanent lock
366+
and `V3Math` are all built, and V-09 closed on Day 8 against the real
367+
HyperSwap `NonfungiblePositionManager`. What is not done is putting an address
368+
in `packages/config`: all three HyperSwap addresses are immutable in the
369+
router's constructor, so a wrong one means redeploying both contracts while
370+
the old lock still holds a real LP position that nothing can move. The
371+
addresses are located and mutually verified on-chain; first-party confirmation
372+
is the missing half, and `Deploy.s.sol` refuses rather than guessing.
366373
- The xStock allowlist, empty — V-02, V-03, V-05
367374
- Platform accounts, unset — C-08
368375
- `Logo.tsx` geometry, pending the official SVG export
@@ -384,8 +391,12 @@ verification item blocking it:
384391
factory's dependency on it are built and tested; which aggregator to point at
385392
is a decision with §253's criteria attached, and manipulation resistance rules
386393
out the easy answer. Every launch is refused until it is made.
387-
- `/account` holdings and P&L — needs a per-account position read that does not
388-
exist. Creator earnings moved to `/creator` rather than waiting for it.
394+
- `/account` **P&L** — holdings and portfolio value now ship; realised and
395+
unrealised P&L do not. They need a cost basis per account per market, which
396+
means folding every trade rather than reading a balance, and the trade history
397+
to fold it from only exists from the indexer's start block. A P&L that
398+
silently began mid-history would be wrong in the direction that flatters,
399+
which is the worst direction for a number a user might act on.
389400

390401
§279 forbids a mock or placeholder standing in for any of them in production,
391402
and `assertProductionConfigReady` enforces that at startup on chain 999.

0 commit comments

Comments
 (0)