From abefcf9d4f9c9e9c32ec5bcaf0140ee4a3699282 Mon Sep 17 00:00:00 2001 From: Renato Date: Tue, 18 Aug 2026 08:25:54 +0200 Subject: [PATCH 1/3] marketing: align Killer Demo with no-progress positioning --- demos/killer-demo/RESULTS.md | 47 +- demos/killer-demo/comparison.svg | 39 +- demos/killer-demo/index.html | 1682 +-------------- plugins/marginal/runtime/marginal_runtime.pyz | Bin 624326 -> 603542 bytes plugins/marginal/runtime/provenance.json | 2 +- src/marginal/killer_demo.py | 1833 +---------------- 6 files changed, 185 insertions(+), 3418 deletions(-) diff --git a/demos/killer-demo/RESULTS.md b/demos/killer-demo/RESULTS.md index 808b851..61246d7 100644 --- a/demos/killer-demo/RESULTS.md +++ b/demos/killer-demo/RESULTS.md @@ -1,14 +1,18 @@ -# MARGINAL Killer Demo +# MARGINAL Demo 001 -**Fund only the next action worth taking.** +**AI agents repeat work that changed nothing. MARGINAL catches it.** + +Observe first. Prove waste. Earn enforcement. > Deterministic functional demonstration using declared action-cost estimates; not provider telemetry, not a production benchmark, and not a claim about every agent workload. +This deterministic artifact demonstrates MARGINAL's compute-selection discipline. The no-progress repetition sequence shown in the HTML is an explicitly labeled runtime-pattern illustration, not provider telemetry and not an enforcement benchmark. + Scenario: **Fix a percentage-discount bug in a deterministic Python repository** -![Baseline versus MARGINAL](comparison.svg) +![Without MARGINAL versus MARGINAL](comparison.svg) -## The defect +## Deterministic allocation proof ```diff - return total - rate @@ -19,7 +23,7 @@ Verifier: `apply_discount(100.0, 0.20) == 80.0` Initial verifier: **FAIL** -| Metric | Baseline: run everything | MARGINAL | Savings | +| Metric | Without MARGINAL | MARGINAL | Observed demo delta | |---|---:|---:|---:| | Declared tokens | 72,800 | 4,300 | **94.09%** | | Calls | 9 | 3 | **66.67%** | @@ -31,38 +35,31 @@ Initial verifier: **FAIL** ### Diagnose -Funded: **inspect the failing assertion** — approved: marginal ROI 7.166 +Selected: **inspect the failing assertion** — approved: marginal ROI 7.166 -| Candidate | Declared tokens | Expected gain | Score | Decision | -|---|---:|---:|---:|---| -| inspect the failing assertion | 1,200 | 0.220 | 0.189 | FUNDED: approved: marginal ROI 7.166 | -| scan the entire repository | 9,000 | 0.050 | -0.179 | SKIPPED: rejected: marginal ROI 0.218 below 1.000 | -| ask two parallel reviewers | 14,000 | 0.040 | -0.369 | SKIPPED: rejected: marginal ROI 0.098 below 1.000 | +Declared cost: **1,200 tokens · $0.006**. Alternatives rejected: **2**. ### Fix -Funded: **apply the targeted one-line patch** — approved: marginal ROI 7.418 +Selected: **apply the targeted one-line patch** — approved: marginal ROI 7.418 -| Candidate | Declared tokens | Expected gain | Score | Decision | -|---|---:|---:|---:|---| -| apply the targeted one-line patch | 2,400 | 0.500 | 0.433 | FUNDED: approved: marginal ROI 7.418 | -| rewrite the complete pricing module | 12,000 | 0.200 | -0.156 | SKIPPED: rejected: marginal ROI 0.561 below 1.000 | -| ask a frontier model for an alternative patch | 18,000 | 0.150 | -0.501 | SKIPPED: rejected: marginal ROI 0.230 below 1.000 | +Declared cost: **2,400 tokens · $0.018**. Alternatives rejected: **2**. ### Verify -Funded: **run the targeted verifier** — approved: marginal ROI 21.394 +Selected: **run the targeted verifier** — approved: marginal ROI 21.394 + +Declared cost: **700 tokens · $0.002**. Alternatives rejected: **2**. -| Candidate | Declared tokens | Expected gain | Score | Decision | -|---|---:|---:|---:|---| -| run the targeted verifier | 700 | 0.350 | 0.334 | FUNDED: approved: marginal ROI 21.394 | -| run the full test suite | 4,500 | 0.080 | -0.025 | SKIPPED: rejected: marginal ROI 0.763 below 1.000 | -| request a premium model audit | 11,000 | 0.050 | -0.348 | SKIPPED: rejected: marginal ROI 0.126 below 1.000 | +## What this demo proves + +- The deterministic task starts in FAIL and both workflows finish in PASS. +- The allocator can reject higher-cost actions while preserving the verifier outcome. +- Costs are declared demo estimates, not provider billing or production telemetry. +- The artifact is a mechanism demonstration, not a production benchmark. ## Reproduce ```bash marginal killer-demo --output killer-demo-output ``` - -The command writes this report, a standalone HTML report, an SVG comparison, the JSON result, and the provider-neutral decision trace. diff --git a/demos/killer-demo/comparison.svg b/demos/killer-demo/comparison.svg index f069068..1b60c69 100644 --- a/demos/killer-demo/comparison.svg +++ b/demos/killer-demo/comparison.svg @@ -1,25 +1,16 @@ - - - -Declared token cost for the same verified fix - Baseline - - -72,800 - MARGINAL - - -4,300 - -94.09% fewer declared tokens · outcome preserved + + + + +MARGINAL DEMO 001 +Same verified fix. Less declared demo compute. +Deterministic action-cost illustration — not provider telemetry. +Without MARGINAL · Baseline + +72,800 +With MARGINAL + +4,300 +94.09% fewer declared tokens +PASS → PASS · deterministic mechanism demonstration diff --git a/demos/killer-demo/index.html b/demos/killer-demo/index.html index 08e6b15..f060aec 100644 --- a/demos/killer-demo/index.html +++ b/demos/killer-demo/index.html @@ -2,1652 +2,52 @@ - - + + - MARGINAL Killer Demo - - - + MARGINAL Demo 001 — Stop AI Agent No-Progress Loops + + + + + + + + + + + + + + - -
-
- - - - -
-
-
-
Deterministic evaluation
-

Killer Demo

-

- Fund only the next action worth taking. - Same verified outcome. Far fewer tokens, lower cost, lower latency. -

- -
- - - - - Deterministic functional demonstration using declared action-cost estimates; not provider telemetry, not a production benchmark, and not a claim about every agent workload. -
-
- -
-
- Dante, the SignalLayer Labs mascot, representing MARGINAL compute allocation -
- - VERIFIED · PASS -
-
-
-
- -
-
-
-
- - - - - Token reduction -
- 94.09% - - 72,800 → 4,300 declared tokens - - -
- -
-
- - - - Actions executed -
- 9 → 3 - -
- -
-
- - - - Estimated cost -
- $0.763 → $0.026 - -
- -
-
- - - - - Estimated latency -
- 22.03s → 1.23s - -
- -
-
- - - - - Verified result -
- PASS → PASS - -
-
-
- -
-
-
-

Same fix. Different capital discipline.

-

- A like-for-like execution of diagnose, fix, and verification against the - same deterministic defect. -

-
-
- -
-
-
-
-
-

Baseline

- 9 actions -
-
  1. 1inspect the failing assertionDiagnose · 1,200 tokens$0.006Justified✓
  2. 2scan the entire repositoryDiagnose · 9,000 tokens$0.045Executedx
  3. 3ask two parallel reviewersDiagnose · 14,000 tokens$0.120Executedx
  4. 4apply the targeted one-line patchFix · 2,400 tokens$0.018Justified✓
  5. 5rewrite the complete pricing moduleFix · 12,000 tokens$0.110Executedx
  6. 6ask a frontier model for an alternative patchFix · 18,000 tokens$0.280Executedx
  7. 7run the targeted verifierVerify · 700 tokens$0.002Justified✓
  8. 8run the full test suiteVerify · 4,500 tokens$0.012Executedx
  9. 9request a premium model auditVerify · 11,000 tokens$0.170Executedx
-
- Total estimated cost - $0.763 -
-
- -
-
-

MARGINAL

- 3 actions -
-
  1. 1inspect the failing assertionDiagnose · 1,200 tokens$0.006Funded✓
  2. 2apply the targeted one-line patchFix · 2,400 tokens$0.018Funded✓
  3. 3run the targeted verifierVerify · 700 tokens$0.002Funded✓
-
- Total estimated cost - $0.026 -
-
-
-

- The baseline executes every available action. MARGINAL finances only the - economically justified sequence. -

-
- -
-
-

Allocation decisions

-

Every candidate is priced against expected marginal gain before execution.

-
-
- - - - - - - - - - -
ActionCostExpected gainDecision
inspect the failing assertionDiagnose$0.0061,200 tokens0.220score 0.189FUNDEDapproved: marginal ROI 7.166
scan the entire repositoryDiagnose$0.0459,000 tokens0.050score -0.179REJECTEDrejected: marginal ROI 0.218 below 1.000
ask two parallel reviewersDiagnose$0.12014,000 tokens0.040score -0.369REJECTEDrejected: marginal ROI 0.098 below 1.000
apply the targeted one-line patchFix$0.0182,400 tokens0.500score 0.433FUNDEDapproved: marginal ROI 7.418
rewrite the complete pricing moduleFix$0.11012,000 tokens0.200score -0.156REJECTEDrejected: marginal ROI 0.561 below 1.000
ask a frontier model for an alternative patchFix$0.28018,000 tokens0.150score -0.501REJECTEDrejected: marginal ROI 0.230 below 1.000
run the targeted verifierVerify$0.002700 tokens0.350score 0.334FUNDEDapproved: marginal ROI 21.394
run the full test suiteVerify$0.0124,500 tokens0.080score -0.025REJECTEDrejected: marginal ROI 0.763 below 1.000
request a premium model auditVerify$0.17011,000 tokens0.050score -0.348REJECTEDrejected: marginal ROI 0.126 below 1.000
-
-
-
-
- -
-
-
- -
-

What this demo proves

-
    -
  • The task starts in FAIL.
  • -
  • Both workflows finish in PASS.
  • -
  • Costs are declared action budgets used by the allocator.
  • -
  • This is a deterministic demonstration of economic action selection.
  • -
-
-
- -
-

The deterministic defect

-

Fix a percentage-discount bug in a deterministic Python repository

-
- - return total - rate - + return total * (1 - rate) -
-
- Verifier - apply_discount(100.0, 0.20) == 80.0 -
-
-
-
- -
- -
-

Build agents that spend compute deliberately.

-

- Explore the open-source project and run the same deterministic evaluation - locally. -

-
- -
- -
-
-

Reproduce the result

- -
- marginal killer-demo --output killer-demo-output -
- - -
-
+ +
+ +
+ +
+
+
MARGINAL · DEMO 001 · RUNTIME GOVERNOR

AI agents repeat work that changed nothing.

MARGINAL catches it. It observes no-progress repetition first, asks whether evidence actually changed, and only earns narrow authority to stop eligible repeats after the proof is strong enough.

Observe first. Prove waste. Earn enforcement.

+
Illustrative runtime pattern● LIVE TRACE
01
Read README.mdnew evidence acquired
RUN
02
Read README.mdverification pass
RUN
03
Read README.mdsame observable state
OBSERVE
04
Read README.mdsame action · same state · no new evidence
STOP CANDIDATE

Illustrative product mechanism — not provider telemetry and not this deterministic allocation benchmark.

+
+
The problem in five seconds

Activity is not progress.

A repeat is not automatically waste. MARGINAL looks for the stronger pattern: the same semantic action, unchanged observable state, and no new evidence.

WITHOUT MARGINALACTIVITY CONTINUES
01 · Read README.mdRUN
02 · Read README.mdRUN
03 · Read README.mdRUN AGAIN
04 · Read README.mdRUN AGAIN
05 · Read README.mdRUN AGAIN
WITH MARGINALEVIDENCE CHANGES THE DECISION
01 · New evidenceRUN
02 · VerificationRUN
03 · Same stateOBSERVE
04 · No-progress repeatSTOP CANDIDATE
+
Why it is different

Installing MARGINAL does not give it permission to block your agent.

Authority is evidence-backed and contextual. Shadow Mode can recommend a stop before MARGINAL is allowed to enforce one.

Shadow Mode · default

Recommendation without control.

MARGINAL can identify a stop candidate while the actual tool action still proceeds.

RecommendedSTOP
Actual behaviorALLOW
Earned Enforcement

Control has to be earned.

Only compatible, reviewed evidence can promote narrow enforcement. Drift, ambiguity, unknown outcomes, or safety failures demote authority and fail open.

AuthorityEARNED
ScopeNARROW
+
Decision path

Same action. Same state. No new evidence.

01Semantic repeat?Is the agent effectively attempting the same action again?
02State unchanged?Did the observable workspace stay the same?
03No new evidence?Did the previous pass fail to add useful evidence?
04Authority earned?If yes, an eligible repeat can become a stop candidate.
+
Deterministic mechanism proof

The real numbers in this artifact start here.

This section is generated from MARGINAL's deterministic allocator. It demonstrates action-selection economics, not Codex telemetry and not a no-progress enforcement benchmark.

Scope:Deterministic functional demonstration using declared action-cost estimates; not provider telemetry, not a production benchmark, and not a claim about every agent workload.
Token reduction94.09%
Declared tokens72,800 → 4,300
Actions9 → 3
Estimated USD$0.763 → $0.026
Verified resultPASS → PASS

Allocation decisions

Diagnoseinspect the failing assertion2 higher-cost alternatives rejected
Fixapply the targeted one-line patch2 higher-cost alternatives rejected
Verifyrun the targeted verifier2 higher-cost alternatives rejected

What this demo proves

Both deterministic workflows start from the same failing defect and end at the same verifier result. MARGINAL selects the targeted diagnose, fix, and verification actions using declared cost estimates. This does not establish production savings.

+
Fail-open by design

The governor should disappear when evidence is weak.

Changed stateRepeat pressure resets.
New evidenceThe next action is allowed.
Failure or unknownEnforcement fails open.
User requests repeatExplicit intent is respected.
+

See the code. Break the claim. Star it if it survives.

Open source, local first, provider neutral. The deterministic demo is reproducible with one command.

marginal killer-demo --output killer-demo-output
+
MARGINAL Killer Demo · Same verified outcome. Far fewer tokens, lower cost, lower latency. · Build agents that spend compute deliberately. · marginal-project-mark.png
+
+
- - +
+ - + \ No newline at end of file diff --git a/plugins/marginal/runtime/marginal_runtime.pyz b/plugins/marginal/runtime/marginal_runtime.pyz index c93eb5f84c37e01f1576f05136652d3b19819884..69b1eac347f3a551cbfe194fa9c922d193f0ce54 100644 GIT binary patch delta 23365 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.10","schema_version":1,"sha256":"30c3268e4d1c051917f74f4b92ca60e1edd27f762096affcbb8b06fa7846271a","source_hash":"129c4898ab0da07d88b941adcb3c57d38ce69eb8a648ba5f4878266036855fba"} +{"builder":"scripts/build_codex_plugin.py","python_requires":">=3.10","schema_version":1,"sha256":"33180127880ab18d744084be5befeac416b97b2c8db3158f24501e448467af9d","source_hash":"5e1ab3fb959783ac9655f4b29f27cceb264ce9959bdc3fc985e37b133097c08e"} diff --git a/src/marginal/killer_demo.py b/src/marginal/killer_demo.py index d67fd1b..05c0fc4 100644 --- a/src/marginal/killer_demo.py +++ b/src/marginal/killer_demo.py @@ -424,17 +424,23 @@ def render_killer_demo_markdown(result: dict[str, Any]) -> str: marginal = result["marginal"] savings = result["savings"] lines = [ - "# MARGINAL Killer Demo", + "# MARGINAL Demo 001", "", - "**Fund only the next action worth taking.**", + "**AI agents repeat work that changed nothing. MARGINAL catches it.**", + "", + "Observe first. Prove waste. Earn enforcement.", "", f"> {result['disclaimer']}", "", + "This deterministic artifact demonstrates MARGINAL's compute-selection discipline. " + "The no-progress repetition sequence shown in the HTML is an explicitly labeled " + "runtime-pattern illustration, not provider telemetry and not an enforcement benchmark.", + "", f"Scenario: **{result['scenario']}**", "", - "![Baseline versus MARGINAL](comparison.svg)", + "![Without MARGINAL versus MARGINAL](comparison.svg)", "", - "## The defect", + "## Deterministic allocation proof", "", "```diff", f"- {result['defect']['before']}", @@ -445,7 +451,7 @@ def render_killer_demo_markdown(result: dict[str, Any]) -> str: "", "Initial verifier: **FAIL**", "", - "| Metric | Baseline: run everything | MARGINAL | Savings |", + "| Metric | Without MARGINAL | MARGINAL | Observed demo delta |", "|---|---:|---:|---:|", ( f"| Declared tokens | {baseline['tokens']:,} | {marginal['tokens']:,} | " @@ -469,78 +475,68 @@ def render_killer_demo_markdown(result: dict[str, Any]) -> str: "", ] for stage in result["stages"]: + funded = next( + candidate for candidate in stage["candidates"] if candidate["name"] == stage["selected"] + ) + rejected = len(stage["candidates"]) - 1 lines.extend( [ f"### {stage['stage']}", "", - f"Funded: **{stage['selected']}** — {stage['decision']}", + f"Selected: **{stage['selected']}** — {stage['decision']}", + "", + f"Declared cost: **{funded['tokens']:,} tokens · ${funded['usd']:.3f}**. " + f"Alternatives rejected: **{rejected}**.", "", - "| Candidate | Declared tokens | Expected gain | Score | Decision |", - "|---|---:|---:|---:|---|", ] ) - for candidate in stage["candidates"]: - status = "FUNDED" if candidate["name"] == stage["selected"] else "SKIPPED" - lines.append( - f"| {candidate['name']} | {candidate['tokens']:,} | " - f"{candidate['expected_gain']:.3f} | {candidate['score']:.3f} | " - f"{status}: {candidate['reason']} |" - ) - lines.append("") lines.extend( [ + "## What this demo proves", + "", + "- The deterministic task starts in FAIL and both workflows finish in PASS.", + "- The allocator can reject higher-cost actions while preserving the verifier outcome.", + "- Costs are declared demo estimates, not provider billing or production telemetry.", + "- The artifact is a mechanism demonstration, not a production benchmark.", + "", "## Reproduce", "", "```bash", "marginal killer-demo --output killer-demo-output", "```", "", - "The command writes this report, a standalone HTML report, an SVG comparison, " - "the JSON result, and the provider-neutral decision trace.", - "", ] ) return "\n".join(lines) - def render_killer_demo_svg(result: dict[str, Any]) -> str: baseline_tokens = int(result["baseline"]["tokens"]) marginal_tokens = int(result["marginal"]["tokens"]) - chart_width = 520 - marginal_bar = max(4, round(chart_width * marginal_tokens / baseline_tokens)) savings = float(result["savings"]["tokens_percent"]) + max_width = 760 + marginal_width = max(8, round(max_width * marginal_tokens / baseline_tokens)) return "\n".join( [ - '', - ' ', - ' ', - "Declared token cost for the same verified fix", - ' Baseline', - f' ', - ' ', - f"{baseline_tokens:,}", - ' MARGINAL', - f' ', - f' ', - f"{marginal_tokens:,}", - ' ', - f"{savings:.2f}% fewer declared tokens · outcome preserved", - "", - "", + '', + '', + '', + '', + 'MARGINAL DEMO 001', + 'Same verified fix. Less declared demo compute.', + 'Deterministic action-cost illustration — not provider telemetry.', + 'Without MARGINAL · Baseline', + f'', + f'{baseline_tokens:,}', + 'With MARGINAL', + f'', + f'{marginal_tokens:,}', + f'{savings:.2f}% fewer declared tokens', + 'PASS → PASS · deterministic mechanism demonstration', + '', + '', ] ) - def _candidate_lookup(result: dict[str, Any]) -> dict[str, dict[str, Any]]: return { candidate["name"]: candidate @@ -632,1703 +628,86 @@ def render_killer_demo_html(result: dict[str, Any]) -> str: baseline = result["baseline"] marginal = result["marginal"] savings = result["savings"] - candidates = _candidate_lookup(result) - selected_names = {stage["selected"] for stage in result["stages"]} - baseline_steps = _render_flow_steps( - result["baseline_actions"], - candidates, - selected_names, - marginal=False, - ) - marginal_steps = _render_flow_steps( - result["marginal_actions"], - candidates, - selected_names, - marginal=True, + stage_cards = "".join( + "".join( + [ + '
', + f'{html.escape(stage["stage"])}', + f'{html.escape(stage["selected"])}', + f'{len(stage["candidates"]) - 1} higher-cost alternatives rejected', + '
', + ] + ) + for stage in result["stages"] ) - allocation_rows = _render_allocation_rows(result) page = """ - - + + - MARGINAL Killer Demo - - - + MARGINAL Demo 001 — Stop AI Agent No-Progress Loops + + + + + + + + + + + + + + - -
-
- - - - -
-
-
-
Deterministic evaluation
-

Killer Demo

-

- Fund only the next action worth taking. - Same verified outcome. Far fewer tokens, lower cost, lower latency. -

- -
- - - - - {{DISCLAIMER}} -
-
- -
-
- Dante, the SignalLayer Labs mascot, representing MARGINAL compute allocation -
- - VERIFIED · PASS -
-
-
-
- -
-
-
-
- - - - - Token reduction -
- {{TOKEN_SAVINGS}}% - - {{BASELINE_TOKENS}} → {{MARGINAL_TOKENS}} declared tokens - - -
- -
-
- - - - Actions executed -
- {{BASELINE_CALLS}} → {{MARGINAL_CALLS}} - -
- -
-
- - - - Estimated cost -
- ${{BASELINE_USD}} → ${{MARGINAL_USD}} - -
- -
-
- - - - - Estimated latency -
- {{BASELINE_LATENCY}}s → {{MARGINAL_LATENCY}}s - -
- -
-
- - - - - Verified result -
- PASS → PASS - -
-
-
- -
-
-
-

Same fix. Different capital discipline.

-

- A like-for-like execution of diagnose, fix, and verification against the - same deterministic defect. -

-
-
- -
-
-
-
-
-

Baseline

- {{BASELINE_CALLS}} actions -
-
    {{BASELINE_STEPS}}
-
- Total estimated cost - ${{BASELINE_USD}} -
-
- -
-
-

MARGINAL

- {{MARGINAL_CALLS}} actions -
-
    {{MARGINAL_STEPS}}
-
- Total estimated cost - ${{MARGINAL_USD}} -
-
-
-

- The baseline executes every available action. MARGINAL finances only the - economically justified sequence. -

-
- -
-
-

Allocation decisions

-

Every candidate is priced against expected marginal gain before execution.

-
-
- - - - - - - - - - {{ALLOCATION_ROWS}} -
ActionCostExpected gainDecision
-
-
-
-
- -
-
-
- -
-

What this demo proves

-
    -
  • The task starts in FAIL.
  • -
  • Both workflows finish in PASS.
  • -
  • Costs are declared action budgets used by the allocator.
  • -
  • This is a deterministic demonstration of economic action selection.
  • -
-
-
- -
-

The deterministic defect

-

{{SCENARIO}}

-
- - {{DEFECT_BEFORE}} - + {{DEFECT_AFTER}} -
-
- Verifier - {{VERIFIER}} -
-
-
-
- -
- -
-

Build agents that spend compute deliberately.

-

- Explore the open-source project and run the same deterministic evaluation - locally. -

-
- -
- -
-
-

Reproduce the result

- -
- marginal killer-demo --output killer-demo-output -
- - -
-
+ +
+ +
+ +
+
+
MARGINAL · DEMO 001 · RUNTIME GOVERNOR

AI agents repeat work that changed nothing.

MARGINAL catches it. It observes no-progress repetition first, asks whether evidence actually changed, and only earns narrow authority to stop eligible repeats after the proof is strong enough.

Observe first. Prove waste. Earn enforcement.

+
Illustrative runtime pattern● LIVE TRACE
01
Read README.mdnew evidence acquired
RUN
02
Read README.mdverification pass
RUN
03
Read README.mdsame observable state
OBSERVE
04
Read README.mdsame action · same state · no new evidence
STOP CANDIDATE

Illustrative product mechanism — not provider telemetry and not this deterministic allocation benchmark.

+
+
The problem in five seconds

Activity is not progress.

A repeat is not automatically waste. MARGINAL looks for the stronger pattern: the same semantic action, unchanged observable state, and no new evidence.

WITHOUT MARGINALACTIVITY CONTINUES
01 · Read README.mdRUN
02 · Read README.mdRUN
03 · Read README.mdRUN AGAIN
04 · Read README.mdRUN AGAIN
05 · Read README.mdRUN AGAIN
WITH MARGINALEVIDENCE CHANGES THE DECISION
01 · New evidenceRUN
02 · VerificationRUN
03 · Same stateOBSERVE
04 · No-progress repeatSTOP CANDIDATE
+
Why it is different

Installing MARGINAL does not give it permission to block your agent.

Authority is evidence-backed and contextual. Shadow Mode can recommend a stop before MARGINAL is allowed to enforce one.

Shadow Mode · default

Recommendation without control.

MARGINAL can identify a stop candidate while the actual tool action still proceeds.

RecommendedSTOP
Actual behaviorALLOW
Earned Enforcement

Control has to be earned.

Only compatible, reviewed evidence can promote narrow enforcement. Drift, ambiguity, unknown outcomes, or safety failures demote authority and fail open.

AuthorityEARNED
ScopeNARROW
+
Decision path

Same action. Same state. No new evidence.

01Semantic repeat?Is the agent effectively attempting the same action again?
02State unchanged?Did the observable workspace stay the same?
03No new evidence?Did the previous pass fail to add useful evidence?
04Authority earned?If yes, an eligible repeat can become a stop candidate.
+
Deterministic mechanism proof

The real numbers in this artifact start here.

This section is generated from MARGINAL's deterministic allocator. It demonstrates action-selection economics, not Codex telemetry and not a no-progress enforcement benchmark.

Scope:%%DISCLAIMER%%
Token reduction%%TOKEN_SAVINGS%%%
Declared tokens%%BASELINE_TOKENS%% → %%MARGINAL_TOKENS%%
Actions%%BASELINE_CALLS%% → %%MARGINAL_CALLS%%
Estimated USD$%%BASELINE_USD%% → $%%MARGINAL_USD%%
Verified resultPASS → PASS

Allocation decisions

%%STAGE_CARDS%%

What this demo proves

Both deterministic workflows start from the same failing defect and end at the same verifier result. MARGINAL selects the targeted diagnose, fix, and verification actions using declared cost estimates. This does not establish production savings.

+
Fail-open by design

The governor should disappear when evidence is weak.

Changed stateRepeat pressure resets.
New evidenceThe next action is allowed.
Failure or unknownEnforcement fails open.
User requests repeatExplicit intent is respected.
+

See the code. Break the claim. Star it if it survives.

Open source, local first, provider neutral. The deterministic demo is reproducible with one command.

marginal killer-demo --output killer-demo-output
+
MARGINAL Killer Demo · Same verified outcome. Far fewer tokens, lower cost, lower latency. · Build agents that spend compute deliberately. · marginal-project-mark.png
+
+
- - +
+ - -""" +""" replacements = { - "{{MASCOT_URL}}": ( - "https://raw.githubusercontent.com/SignalLayerLabs/Marginal/main/assets/" - "marginal-project-mark.png" - ), - "{{DISCLAIMER}}": html.escape(result["disclaimer"]), - "{{TOKEN_SAVINGS}}": f"{savings['tokens_percent']:.2f}", - "{{BASELINE_TOKENS}}": f"{baseline['tokens']:,}", - "{{MARGINAL_TOKENS}}": f"{marginal['tokens']:,}", - "{{BASELINE_CALLS}}": str(baseline["calls"]), - "{{MARGINAL_CALLS}}": str(marginal["calls"]), - "{{BASELINE_USD}}": f"{baseline['usd']:.3f}", - "{{MARGINAL_USD}}": f"{marginal['usd']:.3f}", - "{{BASELINE_LATENCY}}": f"{baseline['latency_ms'] / 1000:.2f}", - "{{MARGINAL_LATENCY}}": f"{marginal['latency_ms'] / 1000:.2f}", - "{{BASELINE_STEPS}}": baseline_steps, - "{{MARGINAL_STEPS}}": marginal_steps, - "{{ALLOCATION_ROWS}}": allocation_rows, - "{{SCENARIO}}": html.escape(result["scenario"]), - "{{DEFECT_BEFORE}}": html.escape(result["defect"]["before"]), - "{{DEFECT_AFTER}}": html.escape(result["defect"]["after"]), - "{{VERIFIER}}": html.escape(result["defect"]["verifier"]), + "%%DISCLAIMER%%": html.escape(result["disclaimer"]), + "%%TOKEN_SAVINGS%%": f"{savings['tokens_percent']:.2f}", + "%%BASELINE_TOKENS%%": f"{baseline['tokens']:,}", + "%%MARGINAL_TOKENS%%": f"{marginal['tokens']:,}", + "%%BASELINE_CALLS%%": str(baseline["calls"]), + "%%MARGINAL_CALLS%%": str(marginal["calls"]), + "%%BASELINE_USD%%": f"{baseline['usd']:.3f}", + "%%MARGINAL_USD%%": f"{marginal['usd']:.3f}", + "%%STAGE_CARDS%%": stage_cards, } for placeholder, value in replacements.items(): page = page.replace(placeholder, value) return page - def _write_artifacts( output_dir: Path, result: dict[str, Any], From 3dfc165da586282f9acfd2801aa7137cb4207a7b Mon Sep 17 00:00:00 2001 From: Renato Date: Tue, 18 Aug 2026 08:29:54 +0200 Subject: [PATCH 2/3] fix: format Killer Demo source --- plugins/marginal/runtime/marginal_runtime.pyz | Bin 603542 -> 603545 bytes plugins/marginal/runtime/provenance.json | 2 +- src/marginal/killer_demo.py | 13 ++++++++----- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/plugins/marginal/runtime/marginal_runtime.pyz b/plugins/marginal/runtime/marginal_runtime.pyz index 69b1eac347f3a551cbfe194fa9c922d193f0ce54..49b6fb99758804b23b6d01bd6cb336c06b7dad9a 100644 GIT binary patch delta 574 zcmYk2OK1~O6ozvrxyc+EVkIS0TY@nZ6Z4#jX(^)dfr14sQj@w6l`$DhOQ_leH$~e( zuo_f!p}&unP*hx15e9KnH@XmMsi4tKs0%^55`3Wu-Y`YIa5((mfBwVeTwm_Kx!gTf zV>PMfthpZZe1tw8|M_|GiNmpI9f@$gAG!0q!@7HlH^>v(k}97b&LVh%cOmh?BU|?- zc*u*vDegz}0(UFnvRN_<6|)#Vyb;xNJb>96cj3x3cl%4`SfpGrhRs9af-zPcDH;{C z97eLvbv&WY&;(b_3iTGE9G@&MNOrw71@9!QgdF6JT)X9a^4^KPZYZP_%{`#M<(`mCb z!|*UoJ}fZVhlWmVxT;g9^ulZ7Ih}S&y{awd12Q3)ras9V_)9wM)U`BqvOH$fbWl>G zD{fR?jo2oNN>Af9Ig^mr+ViR=w<(U5H&azKd*G!e`_X7cRt?%j&CpiqOU@R-ys#%T g6lHZh$cWRt!>5cm#(l(kgnEt99@^jzc9B^82e=coXaE2J delta 612 zcmY*VUr1A76u+O>Z}*-p)?%~8mMNm$&GvuuO{PXZgb6z4>cI&%#|W;obVOv4gOzD7 z`B1-APk|9V#0Y}bLqgDFFkg)5MT2|@d#GNlr0ClWn&;zi`2EiLo%5Y@Z>#<8R{LCm z6&eb1q47B%anbe8TbC;@C8<&#bMfFwEKP8G`SAt*p4?iuf97H)s(Fm9b*9zfWG&+^ zKbhriW~Slo0(UmG&7}2oDwm#UOS-R$7P;xEYzD)5Zo|ek-e{a0*Y)VEp3b`PQRh|! z7kL1&Jh$!>1IMRx=Tdq)s+H#!`Th93bDaw}2v^F^b#?93{}1EmF-ouj40))B9l`Bt zSi!1?qO6GhUg~3G81@Qs3QJzVPx&988^a0+7}`R zGhsAD2_8GDN|P{Zsv8?2v5XC-Fb(n-o+^FbE9lxZM_^BD!m}{NWhJKKz=&#vGeX_+ zw|EV?b`{0ZJ&Jiejfk_n!=3.10","schema_version":1,"sha256":"33180127880ab18d744084be5befeac416b97b2c8db3158f24501e448467af9d","source_hash":"5e1ab3fb959783ac9655f4b29f27cceb264ce9959bdc3fc985e37b133097c08e"} +{"builder":"scripts/build_codex_plugin.py","python_requires":">=3.10","schema_version":1,"sha256":"fca44c66cd52b7b79111f87288a84967d04cb0417fa2b7e55f6b22bfb41b3ce4","source_hash":"128c8e47bf46cb418e36a336d7a5754babec75c87704e577ec68a90acac450f3"} diff --git a/src/marginal/killer_demo.py b/src/marginal/killer_demo.py index 05c0fc4..e5641b2 100644 --- a/src/marginal/killer_demo.py +++ b/src/marginal/killer_demo.py @@ -509,6 +509,7 @@ def render_killer_demo_markdown(result: dict[str, Any]) -> str: ) return "\n".join(lines) + def render_killer_demo_svg(result: dict[str, Any]) -> str: baseline_tokens = int(result["baseline"]["tokens"]) marginal_tokens = int(result["marginal"]["tokens"]) @@ -532,11 +533,12 @@ def render_killer_demo_svg(result: dict[str, Any]) -> str: f'{marginal_tokens:,}', f'{savings:.2f}% fewer declared tokens', 'PASS → PASS · deterministic mechanism demonstration', - '', - '', + "", + "", ] ) + def _candidate_lookup(result: dict[str, Any]) -> dict[str, dict[str, Any]]: return { candidate["name"]: candidate @@ -633,9 +635,9 @@ def render_killer_demo_html(result: dict[str, Any]) -> str: [ '
', f'{html.escape(stage["stage"])}', - f'{html.escape(stage["selected"])}', - f'{len(stage["candidates"]) - 1} higher-cost alternatives rejected', - '
', + f"{html.escape(stage['selected'])}", + f"{len(stage['candidates']) - 1} higher-cost alternatives rejected", + "", ] ) for stage in result["stages"] @@ -708,6 +710,7 @@ def render_killer_demo_html(result: dict[str, Any]) -> str: page = page.replace(placeholder, value) return page + def _write_artifacts( output_dir: Path, result: dict[str, Any], From f3668cec47bc4c487e0085e83f9b59cc0065683f Mon Sep 17 00:00:00 2001 From: Renato Date: Tue, 18 Aug 2026 08:33:34 +0200 Subject: [PATCH 3/3] ci: allow long embedded markup in Killer Demo --- pyproject.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 17e9257..4235086 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -98,6 +98,9 @@ src = ["src", "tests", "examples"] [tool.ruff.lint] select = ["E", "F", "I", "UP", "B", "SIM", "RUF"] +[tool.ruff.lint.per-file-ignores] +"src/marginal/killer_demo.py" = ["E501"] + [tool.ruff.format] quote-style = "double" indent-style = "space"