Skip to content

docs: tnt-core v0.13.0 — quote requester, slashing reshape, BSM hooks, L2 timelock#147

Merged
drewstone merged 5 commits intomainfrom
chore/tnt-core-v0.13.0-doc-updates
May 8, 2026
Merged

docs: tnt-core v0.13.0 — quote requester, slashing reshape, BSM hooks, L2 timelock#147
drewstone merged 5 commits intomainfrom
chore/tnt-core-v0.13.0-doc-updates

Conversation

@drewstone
Copy link
Copy Markdown
Contributor

Summary

Lands the tnt-core v0.13.0 documentation drop covering both the v0.12.0 and v0.13.0 BREAKING change sets and the round-2 hardening fixes. Cites tnt-core PRs #124 and #125; full diff in tnt-core-bindings/CHANGELOG.md under [0.12.0] and [0.13.0].

Five commits, organized by topic:

  1. docs(reference) — regenerate ITangleSlashing, IMBSMRegistry, IBlueprintServiceManager (and their generated/ mirrors).
  2. docs(rfq) — document EIP-712 quote requester binding across pricing pages.
  3. docs(slashing,lifecycle)nonReentrant gates, exit-active gate, admin self-dispute.
  4. docs(infra) — note 2-day timelock + activate step on bridge messenger/slasher rotation.
  5. docs(release-notes) — new /release-notes/0.13.0 page + nav entry.

What landed (REQUIRED)

  • pages/developers/api/reference/ITangleSlashing.mdx (and generated/) — full regen. proposeSlash(uint16 slashBps, …), disputeSlash external payable, 6-arg setSlashConfig, new getSlashConfig view, 8-field SlashProposed, 4-field SlashExecuted, plus SlashDisputed / SlashCancelled / SlashConfigUpdated.
  • pages/developers/api/reference/IMBSMRegistry.mdx (and generated/) — pinBlueprint paragraph on grace-window rejection.
  • pages/developers/api/reference/IBlueprintServiceManager.mdx (and generated/) — added forceRemoveAllowsBelowMin(uint64) -> bool and getNonPaymentTerminationPolicy(uint64) -> (bool, uint64) sections.
  • pages/developers/blueprints/pricing-and-payments.mdxrequester first in both JobQuoteDetails and QuoteDetails field lists, Quote-binding key-property bullet, copyable Solidity struct literal + JSON typed-data example, full new typehash strings.
  • pages/developers/auth-surface.mdxdisputeSlash "(admin cannot self-dispute their own proposal)"; terminateService and forceRemoveOperator marked nonReentrant; pinBlueprint grace-window note; full 7-row L2SlashingReceiver table; "Two-step swap" callout (with example) and "Receiver enforcement (v0.13.0)" callout on canSlash revert.
  • pages/developers/blueprints/service-lifecycle.mdx — new "Exit Gates (v0.13.0)" section after "What Expiry Means".
  • pages/developers/slashing.mdxnonReentrant on proposeSlash and disputeSlash, evidence non-zero bullet, SLASH_ADMIN self-dispute restriction, symmetric 15s buffer on the Disputed branch.

What landed (RECOMMENDED)

  • pages/developers/blueprints/pricing-engine.mdx — Security Notes + Best Practices bullets on populating requester.
  • pages/operators/pricing/overview.mdx — RFQ section gains a quote-requester-binding callout for operator quote servers.
  • pages/developers/blueprints/execution-confidentiality.mdx — customer-request bullet on requester-bound confidential quotes.
  • pages/developers/blueprints/service-lifecycle.mdx — force-remove paragraph mentions forceRemoveAllowsBelowMin opt-in.
  • pages/network/metrics-and-scoring.mdx — slashing bullet now lists all five event names.
  • pages/infrastructure/protocol-deployment.mdx — bridge messenger/slasher rotation runbook updated for the 2-day timelock + activate step.
  • pages/release-notes/0.13.0.mdx (new) + pages/release-notes/_meta.ts + top-level nav entry in pages/_meta.ts.

Verification

  • yarn check:tnt-core-sync passes (interface sync still green).
  • yarn build (Next.js + sitemap + Pagefind) passes; /release-notes/0.13.0 is in the static export.
  • yarn format clean (prettier ran during edits).
  • All generated/*.mdx mirrors are byte-identical to their non-generated counterparts (diff returns empty).

Test plan

  • Open the deployed preview, verify Release Notes → v0.13.0 is reachable from the top-level nav.
  • Spot-check /developers/api/reference/ITangleSlashing — confirm proposeSlash takes slashBps, disputeSlash is payable, setSlashConfig is the 6-arg form, all five events render.
  • Spot-check /developers/blueprints/pricing-and-payments — confirm both the JobQuoteDetails and QuoteDetails field lists put requester first and the new typehash strings are present.
  • Spot-check /developers/auth-surface — confirm the L2SlashingReceiver table has 7 rows with the two-step swap callout below.

drewstone added 5 commits May 8, 2026 15:07
…iceManager (v0.13.0)

- ITangleSlashing: align with the actual SlashingLib events. SlashProposed
  is 8 fields, SlashExecuted is 4. Add SlashDisputed, SlashCancelled,
  SlashConfigUpdated event sections. proposeSlash takes uint16 slashBps
  (was uint256 amount). disputeSlash is external payable. setSlashConfig
  is the 6-arg form. Add getSlashConfig view.
- IMBSMRegistry.pinBlueprint: add a paragraph documenting the deprecation
  grace-window rejection (revisions in the grace window are refused so
  pinning cannot defeat the deprecation flow).
- IBlueprintServiceManager: document forceRemoveAllowsBelowMin (default
  false; custom BSMs not inheriting BlueprintServiceManagerBase MUST
  implement) and getNonPaymentTerminationPolicy (added in v0.11.1, never
  documented).

Mirrored to generated/ copies; tnt-core sync check still passes.
QuoteDetails and JobQuoteDetails now carry address requester as the FIRST
field of the EIP-712 typed data. The contract enforces
requester == msg.sender and rejects wildcard requester == address(0).

- pricing-and-payments: reorder field lists (requester first), add a
  copyable Solidity struct literal and JSON typed-data example, and a
  Quote-binding key-property bullet covering both QuoteDetails and
  JobQuoteDetails (with the new typehash strings).
- pricing-engine: add Security Notes bullet on requester binding and a
  Best Practices entry on always populating requester.
- operators/pricing/overview: RFQ section gains a requester-binding
  callout for operator quote-server implementations.
- execution-confidentiality: append a customer-request bullet noting
  that confidential quotes are bound to a specific consumer via
  requester so they cannot be lifted from the mempool.
… self-dispute (v0.13.0)

- slashing: proposeSlash and disputeSlash now nonReentrant. proposeSlash
  rejects bytes32(0) evidence. executeSlash for a Disputed proposal uses
  disputeDeadline + TIMESTAMP_BUFFER (15s symmetric with the Pending
  branch). SLASH_ADMIN_ROLE that is also the proposer of a slash cannot
  self-dispute their own proposal.
- service-lifecycle: new "Exit Gates (v0.13.0)" section covering the
  Active-status gate on every operator-exit entrypoint, nonReentrant on
  terminateService, approveService rejecting past-grace requests, and
  rejection of duplicate operators. force-remove paragraph now mentions
  the forceRemoveAllowsBelowMin opt-in.
- auth-surface: append "(admin cannot self-dispute their own proposal)"
  to the disputeSlash row. Mark terminateService and forceRemoveOperator
  as nonReentrant. Note that pinBlueprint reverts inside the deprecation
  grace window.
- network/metrics-and-scoring: list the full slashing event names
  (Proposed, Disputed, Executed, Cancelled, ConfigUpdated) so indexers
  know to subscribe to all five.
…slasher rotation

infrastructure/protocol-deployment runbook now reminds operators that
bootstrap setMessenger / setSlasher (current = address(0)) takes effect
immediately on L2SlashingReceiver, but subsequent rotations are
timelocked: queue the new address with setMessenger / setSlasher, then
call activateMessenger() / activateSlasher() after SENDER_ACTIVATION_DELAY
(2 days) elapses. Document the queue/activate pair as two transactions
in the runbook so operators know to schedule the activation tx before
the delay window closes.

(The L2SlashingReceiver auth-surface table was already updated in the
previous commit on this branch.)
New /release-notes/0.13.0 page documenting the v0.12.0/v0.13.0 BREAKING
changes (EIP-712 quote requester binding, ITangleSlashing event reshape,
Types.ServiceRequest.activated reorder, forceRemoveAllowsBelowMin BSM
hook), the round-2 hardening fixes (slashing nonReentrant + admin
self-dispute, service lifecycle gates, MBSM grace-window pinning, L2
slashing receiver timelock + CEI revert, beacon SSZ canonical
endianness, TNTLockFactory beneficiary gate), and a migration checklist
for operator quote servers, indexers, custom BSMs, MBSM operators, L2
receiver operators, beacon proof builders, and SLASH_ADMIN holders.

Cites tnt-core PRs #124 and #125 and links the bindings CHANGELOG.

Adds top-level "Release Notes" entry to pages/_meta.ts so the section
is discoverable from the global navigation.
@netlify
Copy link
Copy Markdown

netlify Bot commented May 8, 2026

Deploy Preview for tangle-docs ready!

Name Link
🔨 Latest commit c3cd030
🔍 Latest deploy log https://app.netlify.com/projects/tangle-docs/deploys/69fe512f41a0d0000882681a
😎 Deploy Preview https://deploy-preview-147--tangle-docs.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

@drewstone drewstone merged commit 47be8cd into main May 8, 2026
8 of 9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant