Final verdict
This desk’s tree: https://github.com/STP-KAS/kaspa-x402
Fork of Luke’s binding. Issue #11 / PR #12 merged as 216ad77. Luke tightened disk-sync (file fsync stays fail-closed; directory sync skipped on Windows) and added a windows-latest CI job. This machine retested merged main: npm test green, proof:offline 24/24.
kaspa-x402 is a real x402 v2 binding for native KAS. Bind this envelope. Do not invent a fourth. It is not v1, not mainnet, not in the upstream x402 registry, not a registered CAIP namespace.
Ishum is a coffee till, not x402. Zero PAYMENT-* headers. Quotes EUR/USD. Settles native KAS. Do not weld the names. Combo till: Till tab — original :8090/pos vs battle-tested KAS-only keypad.
Both problems — solved this pass
| # | Break | Status |
|---|---|---|
| 1 | Windows npm test: .sil CRLF vs launch-identity SHA-256 pinned to LF (ab88ec5d… vs 065dff5d…) |
Reproduced. Merged. Retested on 216ad77: .sil is LF under core.autocrlf=true. Covenant 27/27. |
| 2 | Unix 0o600 (384 vs 438) and proof:offline fsync EPERM after 22/22 protocol checks |
Reproduced. Merged. Luke’s narrower patch is the one that landed: skip directory fsync on win32, keep file fsync fail-closed. npm test green. proof:offline 24/24 ok: true. |
Issue: elldeeone/kaspa-x402#11 · PR: #12 (merged) · Fork: STP-KAS/kaspa-x402 · Long form: STP-KAS/grok-heavy-test
What landed: *.sil text eol=lf (enough — no CRLF hash canonicalization), skip Unix modes on win32, skip directory fsync on Windows, file fsync still fail-closed, windows-latest CI job. Swallowing file fsync EPERM was too broad; Luke was right to reject that.
What we ran
git clone --branch v1.0.0-rc.1 https://github.com/elldeeone/kaspa-x402.git npm ci npm --workspace @kaspa-x402/covenant test # FAIL: ab88ec5d vs 065dff5d # apply patch npm --workspace @kaspa-x402/covenant test # 27 pass npm run build && npm test # green npm run proof:offline # 24/24 ok: true # after merge 216ad77 — fresh clone of main, core.autocrlf=true git clone https://github.com/elldeeone/kaspa-x402.git # .sil: 0 CRLF / 151 LF npm ci && npm test # green npm run proof:offline # 24/24 ok: true
| Probe | Result |
|---|---|
| demo.kaspa-x402.org/health | ok, 1.0.0-rc.1, testnet hosted exact on |
| /supported | x402Version: 2, exact + batch, kaspa:testnet-10 only, asset KAS |
TN10 tx b46de1e1… | is_accepted: true |
Did not run a funded live harness. Did not pay the Worker.
Steps to take
Luke
- Read this page. Long form: 00-for-luke.md.
- Done: issue #11 / PR #12 merged as
216ad77. Windows CI is in-tree. Real Windows retest passed. - Align
pragma silverscript ^0.1.0with the v1.0.03ed9733compile. - Do not drop the
rcuntil the gates indocs/mainnet-readiness.mdclose. Do not take “Kaspa is in x402” until upstream lists you or rejects you in writing.
This desk
- Bind this envelope on TN10. One URL → 402 → pay → 200 + txid. No fourth dialect. No kUSD as this
asset. - Keep Ishum a till. Default kUSD/USDT off.
- Keep the master-file pin on
v1.0.0-rc.1, TN10 only, mainnet blocked. - Steal k402’s lock if a channel is needed. Credit Kali. Never “adopted KCC-0402.”
Anyone else
HTTP 402 ≠ x402. Native KAS ≠ USDC. accepted ≠ irreversible. A till that quotes EUR is allowed. Calling it x402 is not.
What to do next
| When | Do |
|---|---|
| Today | Windows clone-and-test is closed. Point Luke at this page + merged #12. |
| This week | Bind exact standard-native on TN10. Do not pre-sign batch ceiling T beyond delivered work. |
| Before any “v1” sentence | Independent covenant + replay audit. Fresh funded TN10 run and a paid Worker canary. Durable store. Confirmation policy written down. |
| Before mainnet KAS | Every gate in mainnet-readiness.md. CAIP namespaces#193 merged or every public sentence says unregistered. |
| Never | allowMainnet: true early. Foreign readInputState / State[].split(). USDC/USDT/“kaspa dollar” as this asset. A fourth 402 envelope. |
STP-KAS/kaspa-x402
Include this repo: https://github.com/STP-KAS/kaspa-x402
| URL | github.com/STP-KAS/kaspa-x402 |
| Upstream | elldeeone/kaspa-x402 tag v1.0.0-rc.1 |
| Patch branch | windows-clone-and-test (merged upstream) |
| PR into Luke | elldeeone/kaspa-x402#12 → 216ad77 |
| Clone | git clone https://github.com/elldeeone/kaspa-x402.git (merged main) |
| Schemes | exact / kaspa-exact-v2; batch-settlement / kaspa-escrow-v3 + kaspa-x402-escrow-v4 |
| Asset / network | KAS only. kaspa:testnet-10 only. Not mainnet. |
What held / what is not v1
Held: x402 v2 headers; native KAS; claim successor locks value; no readInputState / State[].split(); exact replay 409; facilitator optional; mainnet gates written down.
Not v1: CAIP #193 open; not in upstream SDKs; spec still draft; batch claim/refund race; replay lives in the store; one RPC; accepted is not irreversible; 500 sompi vouchers lock ~10M sompi-class capital; compute budget guessed.
STP-KAS repositories
Live list from github.com/STP-KAS. This desk’s x402 row is kaspa-x402. The report to send is grok-heavy-test.
- kaspa-x402This desk’s fork of Luke’s binding. Merged Windows patch is upstream
216ad77. - grok-heavy-testSend this GitHub. Long form of this page.
- sixpack.wtfThis page’s source.
- 402-is-not-x402HTTP 402 is not x402.
- x402-vs-grokAdversarial pass of v1.0.0-rc.1.
- x402-ishumIshum is a till, not x402.
- ishumSelf-hosted Kaspa till. Quotes EUR. Settles KAS.
- kaspa-master-filePins. RC.1, TN10 only, mainnet blocked.
Links
| This page | https://sixpack.wtf/ |
| This desk’s kaspa-x402 | STP-KAS/kaspa-x402 |
| Till (Ishum) | STP-KAS/ishum · till tab · :8090/pos |
| Report (send this GitHub) | STP-KAS/grok-heavy-test |
| For Luke | docs/00-for-luke.md |
| Final verdict md | FINAL-VERDICT.md |
| Windows issue / PR | #11 closed · #12 merged 216ad77 |
| Subject / fork | elldeeone/kaspa-x402 · STP-KAS/kaspa-x402 |
| Luke’s ask | x.com/elldeeone |