PSM / '2199 vault' bounded forensic review
Chain: PulseChain. Pinned block: 27,824,343 (17 October 2026 23:27:55 UTC).
Method: public read-only JSON-RPC eth_call/eth_getCode; verified source fetched from PulseChain Blockscout and byte-for-byte runtime matched. No transaction signing/broadcast and no state changes. Zero-amount calls below are diagnostic eth_call simulations, not real swaps.

RESULT
The known 2199 address is the original Maker PSM-USDC-A AuthGemJoin5 collateral adapter. It is not a newly discovered private L2 reserve. At the pin it holds 113,692,362.982482 forked USDC units, not the quoted approximately69M units, and those units must not be represented as113.69M US dollars. Both ordinary PSM swap directions are blocked by the caged Vat. A surviving token balance is not usable swap capacity.

EXACT ADDRESS MAP
PSM (DssPsm): 0x89b78cfa322f6c5de0abceecab66aee45393cc5a
2199 (AuthGemJoin5): 0x0a59649758aa4d66e25f08dd01271e891fe52199
Underlying fork USDC: 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
Canonical pDAI: 0x6b175474e89094c44da98b954eedeac495271d0f
Vat: 0x35d1b3f3d7966a1dfe207aa4514c12a259a0492b
DaiJoin: 0x9759a6ac90977b93b58547b4a71c78317f391a28
Chief: 0x0a3f6849f78076aefadf113f5bed87720274ddc0
Pause: 0xbe286431454714f511008713973d3b053a2d38f3
PauseProxy: 0xbe8e3e3618f7474f8cb1d074a26affef007e98fb

GETTER EVIDENCE
PSM.gemJoin() =2199; PSM.vat()=35d1; PSM.daiJoin()=9759; PSM.dai()=6b17.
PSM.ilk() and2199.ilk()=PSM-USDC-A.
2199.gem()=a0b8 fork USDC; dec()=6; vat()=35d1; live()=1.
PSM.tin()=0; PSM.tout()=0.
Vat.live()=0; DaiJoin.live()=1.
Fork USDC.balanceOf(2199) at fork block17,233,000=1,720,243,733.256831.
Fork USDC.balanceOf(2199) at pin27,824,343=113,692,362.982482.
Vat urn for PSM-USDC-A,PSM has ink=113,184,637.972615 and art=113,184,637.972615, normalized18decimals; rate=1e27.
The token balance exceeds PSM urn ink by507,725.009867 USDC units. The reason for that discrepancy was not traced; do not count that excess as automatically redeemable PSM reserve.

ACTUAL READ-ONLY CALL RESULTS
From0x0000000000000000000000000000000000000001, recipient same:
PSM.sellGem(recipient,0) -> error3 'execution reverted: Vat/not-live'.
PSM.buyGem(recipient,0) -> error3 'execution reverted: Vat/not-live'.
Zero amounts avoid a balance/allowance failure concealing the downstream liveness gate. Both original functions call Vat.frob, which unconditionally requires live==1. Thus funded/approved positive ordinary swaps would also encounter this blocking requirement in the unchanged state; an earlier token balance/allowance error might occur first for a particular sender.
PSM/GemJoin/Vat runtime match verified source byte-for-byte (seepsm_source_match.json).

SWAP MECHANICS AND CORRECT AUTHORITY TERMINOLOGY
sellGem: customer approves fork USDC to2199; PSM tells the authorized adapter to transfer collateral from the customer; Vat.frob increases the PSM urn collateral/debt; DaiJoin.exit pays DAI net of tin to recipient. The Vat frob step is currently blocked.
buyGem: customer approves pDAI toPSM; PSM pulls pDAI and joins/burns it via DaiJoin; Vat.frob reduces the PSM urn debt/collateral;2199 exits fork USDC to recipient. The entire call currently reverts at Vat.frob, rolling back previous effects.
Both buyGem and sellGem are external PUBLIC user functions with noauth modifier. Administrative file/rely/deny calls are ward-restricted. The adapter's join function is auth-restricted; the PSM is its authorized caller. Confusing this adapter restriction with a whitelist on all PSM customers is incorrect.
Measured2199.wards(PSM)=1;2199.wards(PauseProxy)=1;PSM.wards(PauseProxy)=1;PSM.wards(Chief)=0;2199.wards(Chief)=0.
The HAT is the address elected by Chief approval voting. It can authorize governance actions only through a connected authority chain; it is not the routine swap caller and it does not make reserve tokens dollar redeemable.
Chief.hat() at pin=0x8cff2e28162329afb5a73105f4a091a5546968ba.
Pause.owner()=0;Pause.authority()=0;Pause.delay()=0 atpin. Do not draw an automatically functioning currentChief->Pause authority arrow. Previously scheduled Pause plans were not enumerated in this bounded review.

NO SIMPLE LIVE SWITCH
The verified Vat sets live=1 in its constructor and live=0 in cage(); it exposes no uncage/resume function. PSM's Vat/GemJoin/DaiJoin references are immutable. Changing tin/tout or replacing the HAT does not revive the existing ordinary PSM path. A future functional architecture requires an actually demonstrated replacement/migration or separate path. This is not a blanket claim that every privileged Maker accounting function, redemption or DAI mint path is impossible while caged.

ECONOMIC INTERPRETATION
A contract can account1pDAI=1forkUSDC, but it cannot enforce1forkUSDC=1US dollar merely by adopting that accounting price. Reserve quantity and economic value are separate. A durable external peg needs a credible executable redemption/arbitrage or price-support mechanism with independently valuable liquid resources. This review does not price the fork USDC reserve or establish issuer dollar redemption for it. No claimed approximately69M valuation, $52K external liquidity number, pMKR emergency collateral or GUSD-vault available value was established here.

PRIMARY SOURCE LINKS
Original Maker/Sky PSM source and README (contains deployment addresses and public swap usage):
https://github.com/sky-ecosystem/dss-psm
PSM verified source API:
https://api.scan.pulsechain.com/api/v2/smart-contracts/0x89b78cfa322f6c5de0abceecab66aee45393cc5a
2199 verified source API:
https://api.scan.pulsechain.com/api/v2/smart-contracts/0x0a59649758aa4d66e25f08dd01271e891fe52199
Vat verified source API:
https://api.scan.pulsechain.com/api/v2/smart-contracts/0x35d1b3f3d7966a1dfe207aa4514c12a259a0492b
Chief design documentation (modern docs explain mechanism, not current Pulse ownership):
https://developers.skyeco.com/protocol/governance/chief/
Vat design documentation:
https://developers.skyeco.com/protocol/core/vat/

RAW ARTIFACTS
psm_raw.json: all pinned getter/call/code responses.
psm_source_match.json: runtime equality and SHA256 hashes.
psm_probe.py: read-only reproducible query script.
psm_verified.json,gemJoin_verified.json,chief_verified.json and extracted.sol: retrieved source metadata (full source copies need not be included in public evidence archive; preserve source URLs/hash evidence).
