feat: add copyable no-progress trace - #88
Merged
SignalLayerLabs merged 2 commits intoSep 11, 2026
Merged
SignalLayerLabs merged 2 commits into
SignalLayerLabs merged 2 commits into
Conversation
Add an illustrative no-progress trace with a copy control and clear Shadow Mode / Earned Enforcement boundary. Closes SignalLayerLabs#38
Owner
|
Please fix the CI / Test failed and than we can push it |
SignalLayerLabs
requested changes
Sep 11, 2026
SignalLayerLabs
left a comment
Owner
There was a problem hiding this comment.
Please fix the failed CI / tests
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.
Add an illustrative no-progress trace with a copy control and clear Shadow Mode / Earned Enforcement boundary.
Closes #38
Problem
The Killer Demo makes the allocation decision watchable, but the mechanism behind it is not
quotable. There is no compact form of the no-progress pattern that can be pasted into an issue, a
blog post or a reproduction report.
demos/killer-demo/RESULTS.mdalready tells the reader that"the no-progress repetition sequence shown in the HTML is an explicitly labeled runtime-pattern
illustration" ,but no such sequence was in the HTML.
Solution
A new
#no-progresssection on the demo page, plus a nav entry, containing a plain-text trace:build_no_progress_trace()replays the shippedNoProgressDetectorover a fixed syntheticobservation sequence. The reason codes are produced by the control, not written by hand, so the
snippet cannot drift from the mechanism it illustrates;
produces new evidence, a verification produces new evidence, the same verification repeats
against unchanged state, and the repetition becomes a no-progress candidate —
NO_PROGRESS_CLEAR,NO_PROGRESS_CLEAR,NO_PROGRESS_OBSERVED,NO_PROGRESS_ENFORCEMENT_ELIGIBLE, with the detector's own reason strings and themax_same_evidence_completionsthreshold printed in the header;an enforcement benchmark", consistent with the existing TRUTH BOUNDARY card;
recommendation and still executes the action; Earned Enforcement is separate and is not granted
by anything on the page.
Copy affordance and accessibility:
COPY TRACEbutton usingnavigator.clipboard.writeTextwith a selection-based fallback andno network call (the existing
"fetch(" not in jsassertion still holds);role="status" aria-live="polite"line rather than only visually,cleared on each attempt so a repeated copy is re-announced;
place;
tabindex="0") with a visible:focus-visiblering;PREadded to the tag list the global key handler ignores, soSpaceand→keep driving therace and do not fire while the trace region has focus;
prefers-reduced-motionblock still covers thesection.
User impact
The demo page gains one section. No behaviour change to the policy, ledger, adapters or CLI.
Validation
ruff format --check .ruff check .mypy src/marginalpytest -qSecurity and compatibility
No new public export, no schema change, no serialization change.
build_no_progress_traceandrender_no_progress_tracelive inmarginal.killer_demoalongside the other renderers and are notre-exported from
marginal/__init__.py, matching the existing surface.Privacy review
evidence digests (
w#4f2a,e#2d77), a generic semantic action, no path, repository, model,customer or run identifier.