feat(run): pass quote.transactabilityTrace through to --dry-run --json - #176
Merged
Conversation
A dry run with --live-probe already spawns selat-pay --probe-only once for the one-line Transactability Score; that probe's stdout IS selat-pay's --probe-only JSON, whose quote.transactabilityTrace carries the full attribution-typed decision trace. Harvest both halves from the single spawn and, under --json, include the trace as a transactabilityTrace field in the dry-run object — so machine consumers (and the docs decision-trace / first-party pages) can use `selat run` instead of the internal selat-pay CLI. Human (non-json) output is unchanged: the score line only. The trace is passed through opaquely (shape owned by selat-pay); absent, non-JSON, or trace-less probe output omits the field rather than failing the dry run. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
SELAT-DEV
added a commit
that referenced
this pull request
Aug 26, 2026
The --dry-run --live-probe --json dry run now carries the machine-readable decision trace (transactabilityTrace, #176) alongside the human score line, so agents get the attribution-typed reading from the selat CLI without shelling out to selat-pay. Also includes selat setup-policy --quarantine-days (#174) and the search probe-hint wording fix (#175).
SELAT-DEV
added a commit
that referenced
this pull request
Aug 29, 2026
…-json (#177) Companion to selat-pay's challenge-schema harvest: the probe-only JSON now carries quote.inputSchema (bazaar / MPP-opaque / probe-confirmed, merged), and the dry run passes it through as challengeInputSchema so an agent gets the endpoint's param table before any payment exists. Same seam and null-on-anything contract as the transactabilityTrace passthrough (#176). Co-authored-by: Karen Sheng <ksherlocked@gmail.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
selat run "<intent>" --dry-run --live-probe --jsonnow includes the full machine-readable decision trace as atransactabilityTracefield, alongside the existing humantransactabilityline.Previously the dry-run probe ran selat-pay's
--probe-onlyand kept only the one-line score string from stderr, discarding the stdout JSON that carriesquote.transactabilityTrace. Machine consumers who wanted the attribution-typed trace (network vs first-party, never blended;primarySource;divergence; advisories) had to shell out to the internalselat-payengine CLI directly — which is also what forced the docs (selat.ai/docs/transactability/decision-trace and /first-party) to documentselat-paycommands.How
quote.transactabilityTracefrom the--probe-onlyJSON (pure, exported parser; absent/non-JSON/trace-less output degrades to "no trace field", never an error).--jsonoutput gainstransactabilityTracewhen the probe surfaced one; the human (non-json) rendering is unchanged.Verification
test/run-transactability.test.mjscovering the passthrough (parse, absence, degradation).selat run "token prices by symbol" --dry-run --live-probe --json --endpoint https://x402.alchemy.com/prices/v1/tokens/by-symbol --param symbols=ETHreturns one JSON object with the plan, the score line, and atransactabilityTraceidentical to the selat-pay probe's (dataStatus: measured,primarySource: first-party, windows 24h/7d/all = 6/15/96). $0 spent.Follow-up
Once released, the two docs pages can replace their
selat-pay … --probe-only --live-probesnippets with this command, removing the last references to the internal engine CLI.🤖 Generated with Claude Code