docs: scope the migration-complete claim to the codebase - mainnet stays custodial until the cutover deploy

Critical truthfulness defect found by review: README.md's security notice claimed, in
unconditional present tense, that "the non-custodial migration is complete... No tool on this
hosted server accepts a mnemonic... this server never holds one" - sitting directly below the
README's own mainnet hosted-URL connect example. Per docs/architecture/non-custodial-split.md's
own rollout section, mainnet stays on its last custodial image until a separate, deliberate
cutover deploy ships - and nothing on this branch (or the two PRs it stacks on) has even merged
yet. A reader who followed the mainnet connect line and trusted the notice as written would be
told something the repo's own architecture doc directly contradicts. The rewrite had also
dropped the prior notice's hedge ("prefer self-hosting until the migration completes") and
replaced it with a strictly stronger, zero-caveat claim - the exact failure mode this migration
exists to prevent, reproduced at the documentation layer.

Fixed by rescoping every claim to the codebase and adding an explicit deployment-status caveat:

- README.md: added a deployment-status note directly beneath the hosted-servers URL table
  (before the connect command), stating plainly that testnet auto-deploys from main but mainnet
  stays on its last custodial image until a separate cutover deploy, and to treat the mainnet
  instance's signing tools as custodial until then. The security notice itself now says "as of
  this release, the non-custodial migration is complete in this codebase" and "no server running
  this release ever holds one," with an explicit closing line that this is a claim about the
  code, not about every deployment of it. The "Local signer" section got the same rescoping
  (it made the identical unscoped claim). The Self-Improvement Module features bullet was also
  adjusted: it had "all keyless" sitting directly next to a pre-existing "(live on Vector
  mainnet)" parenthetical, risking the same conflation between the on-chain module's blockchain
  deployment and this codebase's MCP-server code state - now stated as two separate facts.
- packages/signer/README.md: the "keyless across the board" pairing-status bullet and the
  "keeps your mnemonic off the hosted server" closing line both rescoped to "in this codebase" /
  "off any server running this release," each with an explicit note that the mainnet hosted
  instance is not yet running this release.
- .superpowers/sdd/pr9-body.md (gitignored, not part of this commit): opening paragraph and the
  stacked-PR timing note both updated with the same scoping - merging this PR does not deploy
  it anywhere, and the mainnet cutover is a separate future step.

Grepped the tree afterward for other unscoped "hosted server ... keyless"-class claims: found
none beyond what's fixed above. Pre-existing, unrelated mentions of "hosted server" in
docs/architecture/non-custodial-split.md (the historical problem statement) and README.md (a
self-hosting logistics note) were checked and left alone - correctly scoped by their own
surrounding context already.
This commit is contained in:
FilipBl4gojevic
2026-07-30 18:35:35 +02:00
parent 8d7d68a4d0
commit 0a384f44a9
2 changed files with 47 additions and 28 deletions

View File

@@ -144,10 +144,10 @@ over-counts, which refuses too much rather than too little.
- **Prompt injection is bounded, not eliminated.** Policy refuses out-of-limit
transactions, but an injected agent can still cause any transaction *within* policy.
Recipient allowlisting is the next lever.
- **Pairing this signer with the hosted builder now removes the custody exposure it was
designed to fix, for every family this server exposes.** The signer's own four tools are
- **Pairing this signer with the builder in this codebase now removes the custody exposure it
was designed to fix, for every family the builder exposes.** The signer's own four tools are
complete and independently verified end to end against live chain data
(`test/integration/roundtrip.test.ts`), and the hosted *builder's* tools are keyless across
(`test/integration/roundtrip.test.ts`), and this codebase's *builder* tools are keyless across
the board: every `build_*` tool, across the wallet/transaction, smart-contract, agent-registry,
and self-improvement families, takes a wallet *address* and never a mnemonic, and
`vector_submit_transaction` / `vector_await_transaction` complete the round trip. The
@@ -162,10 +162,13 @@ over-counts, which refuses too much rather than too little.
`vector_signer_sign` directly, not a call to this package's own code), then submit and confirm
on real Vector testnet blocks. This signer's own tool surface, policy engine, and audit log
are exercised separately, by this package's own suite (`test/integration/roundtrip.test.ts`
and the smoke tests above). **Nothing is left open: this was the last custodial family.** The
non-custodial migration described in
and the smoke tests above). **Nothing is left open in the code: this was the last custodial
family.** The non-custodial migration described in
[`docs/architecture/non-custodial-split.md`](../../docs/architecture/non-custodial-split.md)
is complete.
is complete in this codebase. It is not yet complete on every deployment: the mainnet hosted
instance stays on its last custodial image until a deliberate cutover deploy ships (see that
document's rollout section). Until then, pair this signer with a self-hosted or testnet
builder if you want the guarantee above to actually hold - not the mainnet one.
## Running it
@@ -191,9 +194,11 @@ example):
}
```
Register it alongside the hosted builder so an agent has both sets of tools available. This
pairing keeps your mnemonic off the hosted server for every family it exposes: wallet,
transaction, smart-contract, agent-registry, and self-improvement alike. See the last bullet
Register it alongside the builder so an agent has both sets of tools available. This pairing
keeps your mnemonic off any server running this release, for every family it exposes: wallet,
transaction, smart-contract, agent-registry, and self-improvement alike - as long as that
server is actually running this release. The mainnet hosted instance is not, yet: see the
deployment status note in the root README before assuming this covers it. See the last bullet
under Known limitations above for the full evidence.
## Testing