Skip to content

Commit f126e45

Browse files
committed
Add PulseRouter outcome-settled AI slice
1 parent 72f4337 commit f126e45

17 files changed

Lines changed: 1232 additions & 9 deletions

‎.github/workflows/ci.yml‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ jobs:
2828
python -m flowmemory_compiler.cli private-compute-demo --pretty
2929
python -m flowmemory_compiler.cli evidence-schema --pretty
3030
python -m flowmemory_compiler.cli release-transcript --pretty
31+
python -m flowmemory_compiler.cli pulserouter-demo --pretty
32+
python -m flowmemory_compiler.cli pulserouter-adversary --pretty
3133
python -m flowmemory_compiler.cli claim-gate --pretty
3234
python -m flowmemory_compiler.cli launch-packet --pretty
3335
python -m flowmemory_compiler.cli production-readiness --pretty

‎CHANGELOG.md‎

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,16 @@
11
# Changelog
22

3+
## 0.3.0
4+
5+
Outcome-settled AI and PulseRouter launch slice.
6+
7+
- Added PulseRouter local router for provider selection by expected successful outcome, not raw token price.
8+
- Added ComputePulse, ToolCallPulse, ActionPulse, FlowPulseLink, OutcomePulse, ProviderQuote, OutcomePolicy, and RouteScore local data model.
9+
- Added `pulserouter-demo` and `pulserouter-adversary` CLI commands.
10+
- Added 22-case adversarial suite for route manipulation, privacy drift, FlowPulse link drift, settlement drift, and cost-accounting drift.
11+
- Added Outcome-Settled AI and PulseRouter architecture docs plus `PulseRouter.v0` spec.
12+
- Added PulseRouter checks to release transcript, launch packet, CI demos, and local tests.
13+
314
## 0.2.1
415

516
Launch packet and adapter conformance hardening.

‎README.md‎

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ Generic agents make claims. FlowMemory agents can leave warranted receipts.
55
FlowMemory Warranted Agents is a local public proof for a new agent primitive:
66

77
```text
8-
AgentManifest -> WorkRequest -> PolicyCard -> AgentProposal -> AgentRegistry -> AgentRuntime -> EvidenceSchema -> FlowBond -> FlowPulse -> PulsePass -> ScopedProof
8+
AgentManifest -> WorkRequest -> PolicyCard -> AgentProposal -> AgentRegistry -> AgentRuntime -> EvidenceSchema -> FlowBond -> FlowPulse -> PulsePass -> PulseRouter -> OutcomePulse -> ScopedProof
99
```
1010

1111
The user defines the promise. The agent bonds the promise. The action emits receipt-backed memory. The user privately carries proof of what happened.
@@ -40,6 +40,8 @@ PulsePass gives the user portable private proof.
4040

4141
PolicyCards let the user's rules travel between agents.
4242

43+
PulseRouter routes providers by successful outcomes, not raw token price.
44+
4345
## Product Stack
4446

4547
### AgentManifest
@@ -138,6 +140,21 @@ It does not expose the raw receipt history.
138140

139141
FlowCompiler is the conformance engine underneath the stack. It turns proposed actions into required evidence envelopes and rejects futures that cannot become legal machine histories.
140142

143+
### PulseRouter
144+
145+
PulseRouter is the launch MVP for outcome-settled AI.
146+
147+
It compares model/provider routes against a PolicyCard-like user policy, emits
148+
`ComputePulse`, `ToolCallPulse`, `ActionPulse`, reader-derived `FlowPulse` link,
149+
and `OutcomePulse`, then proves the selected route is the cheapest successful
150+
route rather than the cheapest raw inference route.
151+
152+
The public claim is:
153+
154+
```text
155+
The cheapest model is not the cheapest successful route.
156+
```
157+
141158
## Demos
142159

143160
Run the warranted-agent stack:
@@ -155,6 +172,8 @@ python -m flowmemory_compiler.cli agent-registry-demo --pretty
155172
python -m flowmemory_compiler.cli agent-runtime-demo --pretty
156173
python -m flowmemory_compiler.cli evidence-schema --pretty
157174
python -m flowmemory_compiler.cli release-transcript --pretty
175+
python -m flowmemory_compiler.cli pulserouter-demo --pretty
176+
python -m flowmemory_compiler.cli pulserouter-adversary --pretty
158177
python -m flowmemory_compiler.cli claim-gate --pretty
159178
python -m flowmemory_compiler.cli launch-packet --pretty
160179
python -m flowmemory_compiler.cli production-readiness --pretty
@@ -198,6 +217,9 @@ BondLedger:
198217
PrivateCompute:
199218
scoped predicates over PulsePass without exposing raw receipts
200219
220+
PulseRouter:
221+
routes three providers by expected successful outcome, emits pulses, links to FlowPulse, and catches 22 adversarial manipulations
222+
201223
ReleaseTranscript:
202224
one canonical offline object that summarizes the full framework
203225
@@ -281,6 +303,9 @@ Start here for review:
281303
- `docs/THREAT_MODEL.md`
282304
- `docs/CLAIM_BOUNDARIES.md`
283305
- `docs/MARKETING_POSITIONING.md`
306+
- `docs/OUTCOME_SETTLED_AI.md`
307+
- `docs/PULSEROUTER_ARCHITECTURE.md`
308+
- `docs/BUILD_TEST_VERIFY_LOOP.md`
284309
- `docs/AGENT_RUNTIME.md`
285310
- `docs/RUNTIME_STATE_MACHINE.md`
286311
- `docs/AGENT_REGISTRY.md`
@@ -297,6 +322,7 @@ Start here for review:
297322
- `specs/RuntimeStateMachine.v0.md`
298323
- `specs/EvidenceSchemas.v0.md`
299324
- `specs/RuntimeTelemetry.v0.md`
325+
- `specs/PulseRouter.v0.md`
300326
- `examples/warranted_agents/README.md`
301327

302328
## Non-Claims
@@ -316,6 +342,9 @@ This v0 does not claim:
316342
- full privacy;
317343
- zero-knowledge privacy;
318344
- production bond adjudication;
345+
- production provider marketplace;
346+
- production wallet settlement;
347+
- production x402 service;
319348
- production verifier readiness.
320349

321350
The local `capture-command` helper records command exit code and output hashes. It still does not prove code correctness, semantic truth, or production provenance.
@@ -337,3 +366,11 @@ The user owns the rule. The agent bonds the promise. The FlowPulse carries the m
337366
```text
338367
Actions can look valid to ordinary rails while the machine history behind them is impossible.
339368
```
369+
370+
```text
371+
UsePod finds cheap compute. FlowMemory finds useful compute.
372+
```
373+
374+
```text
375+
Outcome-settled AI: agents paid by successful work, not tokens.
376+
```

‎docs/BUILD_TEST_VERIFY_LOOP.md‎

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
# Build Test Verify Loop
2+
3+
Use this loop for every FlowMemory warranted-agent and PulseRouter slice.
4+
5+
## Loop
6+
7+
```text
8+
1. Build one narrow primitive.
9+
2. Add the public schema or doc boundary.
10+
3. Add positive tests.
11+
4. Add adversarial tests.
12+
5. Run the local commands.
13+
6. Run the claim gate.
14+
7. Update release transcript and launch packet.
15+
8. Push only after CI-shaped verification passes locally.
16+
```
17+
18+
## Required Commands
19+
20+
```powershell
21+
python -m unittest
22+
python -m flowmemory_compiler.cli pulserouter-demo --pretty
23+
python -m flowmemory_compiler.cli pulserouter-adversary --pretty
24+
python -m flowmemory_compiler.cli release-transcript --pretty
25+
python -m flowmemory_compiler.cli launch-packet --pretty
26+
python -m flowmemory_compiler.cli production-readiness --pretty
27+
python -m flowmemory_compiler.cli claim-gate --pretty
28+
git diff --check
29+
```
30+
31+
## Exit Criteria
32+
33+
A slice is launch-ready when:
34+
35+
- unit tests pass;
36+
- demo command exits zero;
37+
- adversarial suite exits zero;
38+
- release transcript includes the new primitive;
39+
- launch packet readiness is `PASSED`;
40+
- production readiness stays honest about external blockers;
41+
- claim gate reports zero unguarded overclaims;
42+
- no whitespace errors are present.
43+
44+
## PulseRouter-Specific Loop
45+
46+
For the outcome layer:
47+
48+
```text
49+
ProviderQuote -> RouteScore -> ComputePulse -> ToolCallPulse -> ActionPulse -> FlowPulseLink -> OutcomePulse -> adversarial validation
50+
```
51+
52+
Every new provider adapter must prove:
53+
54+
- policy eligibility;
55+
- route score;
56+
- request/response hash;
57+
- privacy tier;
58+
- prompt retention claim;
59+
- canary status;
60+
- output schema status;
61+
- bond coverage;
62+
- x402/payment reference when applicable;
63+
- outcome settlement link.
64+
65+
## Non-Claims
66+
67+
This loop does not claim production custody, wallet enforcement, production
68+
settlement, production provider routing, full privacy, zero-knowledge privacy,
69+
TEE attestation, model correctness, semantic truth, or profit guarantee.

‎docs/DEVELOPER_HANDOFF.md‎

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ This document is for a developer reviewing FlowMemory Warranted Agents as an arc
44

55
## One Sentence
66

7-
FlowMemory Warranted Agents turns an agent promise into a deterministic machine history: manifest, request, policy, proposal, registry match, runtime phases, evidence schema checks, bond settlement, FlowPulse memory, private receipt proof, and conformance checks.
7+
FlowMemory Warranted Agents turns an agent promise into a deterministic machine history: manifest, request, policy, proposal, registry match, runtime phases, evidence schema checks, bond settlement, FlowPulse memory, PulseRouter outcome routing, private receipt proof, and conformance checks.
88

99
## Plain English
1010

@@ -22,6 +22,7 @@ Here is the evidence I must produce.
2222
Here is the bond behind the promise.
2323
Here is the memory receipt after the action.
2424
Here is a private proof the user can carry later.
25+
Here is why the selected provider was useful, not just cheap.
2526
```
2627

2728
That is the framework.
@@ -104,6 +105,7 @@ Code:
104105
- `flowmemory_compiler/flowbond.py`
105106
- `flowmemory_compiler/pulsepass.py`
106107
- `flowmemory_compiler/private_compute.py`
108+
- `flowmemory_compiler/outcome_router.py`
107109
- `flowmemory_compiler/claim_gate.py`
108110
- `flowmemory_compiler/production_readiness.py`
109111

@@ -117,6 +119,8 @@ Docs:
117119
- `docs/EVIDENCE_SCHEMA.md`
118120
- `docs/CLAIM_GATE.md`
119121
- `docs/RELEASE_TRANSCRIPT.md`
122+
- `docs/OUTCOME_SETTLED_AI.md`
123+
- `docs/PULSEROUTER_ARCHITECTURE.md`
120124
- `docs/PRODUCTION_READINESS_ARCHITECTURE.md`
121125
- `docs/PRODUCTION_GATE_CHECKLIST.md`
122126
- `docs/OPERATOR_RUNBOOK.md`
@@ -126,6 +130,7 @@ Docs:
126130
Spec:
127131

128132
- `specs/WarrantedAgentFramework.v0.md`
133+
- `specs/PulseRouter.v0.md`
129134

130135
## Verification Commands
131136

@@ -135,6 +140,8 @@ python -m flowmemory_compiler.cli agent-registry-demo --pretty
135140
python -m flowmemory_compiler.cli agent-runtime-demo --pretty
136141
python -m flowmemory_compiler.cli evidence-schema --pretty
137142
python -m flowmemory_compiler.cli release-transcript --pretty
143+
python -m flowmemory_compiler.cli pulserouter-demo --pretty
144+
python -m flowmemory_compiler.cli pulserouter-adversary --pretty
138145
python -m flowmemory_compiler.cli claim-gate --pretty
139146
python -m flowmemory_compiler.cli production-readiness --pretty
140147
```
@@ -155,6 +162,12 @@ The point is narrower:
155162
Make the agent promise machine-checkable before, during, and after execution.
156163
```
157164

165+
PulseRouter adds the outcome layer:
166+
167+
```text
168+
Route intelligence by receipt-backed successful outcomes, not raw token price.
169+
```
170+
158171
Production status:
159172

160173
```text

‎docs/LAUNCH_CHECKLIST.md‎

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ This checklist keeps the warranted-agent package launchable without overstating
66

77
- `python -m unittest discover -s tests -p "test_*.py"` passes.
88
- `python -m flowmemory_compiler.cli release-transcript --pretty` prints the current stack.
9+
- `python -m flowmemory_compiler.cli pulserouter-demo --pretty` selects the private bonded provider and reports no validation faults.
10+
- `python -m flowmemory_compiler.cli pulserouter-adversary --pretty` catches every bundled adversarial route/outcome manipulation.
911
- `python -m flowmemory_compiler.cli claim-gate --pretty` passes with `unguardedOverclaims: 0`.
1012
- GitHub Actions CI passes on `main`.
1113
- README opening still explains the category in one screen.
@@ -17,6 +19,8 @@ Use this order:
1719

1820
```powershell
1921
python -m flowmemory_compiler.cli release-transcript --pretty
22+
python -m flowmemory_compiler.cli pulserouter-demo --pretty
23+
python -m flowmemory_compiler.cli pulserouter-adversary --pretty
2024
python -m flowmemory_compiler.cli agent-runtime-demo --pretty
2125
python -m flowmemory_compiler.cli agent-registry-demo --pretty
2226
python -m flowmemory_compiler.cli evidence-schema --pretty
@@ -27,10 +31,12 @@ The story is:
2731

2832
```text
2933
1. Here is the full stack.
30-
2. Here is the runtime history.
31-
3. Here is warranty-based discovery.
32-
4. Here are the evidence contracts.
33-
5. Here are impossible histories rejected.
34+
2. Here is outcome routing by successful work, not token price.
35+
3. Here are adversarial route manipulations rejected.
36+
4. Here is the runtime history.
37+
5. Here is warranty-based discovery.
38+
6. Here are the evidence contracts.
39+
7. Here are impossible histories rejected.
3440
```
3541

3642
## Public Positioning
@@ -53,6 +59,12 @@ Then show the framework:
5359
manifest -> quote -> bond -> action -> settlement -> memory -> private proof
5460
```
5561

62+
Then show the outcome layer:
63+
64+
```text
65+
compute -> tool -> action -> FlowPulse -> outcome -> portable user memory
66+
```
67+
5668
## Reviewer-Safe Claims
5769

5870
Safe:
@@ -64,6 +76,8 @@ Safe:
6476
- AgentRuntime records the state machine from quote to private proof;
6577
- EvidenceSchema checks required local fields for evidence envelopes;
6678
- PulsePass exposes scoped proofs without raw receipt history;
79+
- PulseRouter routes providers by expected successful outcome, not raw token price;
80+
- PulseRouter catches bundled route/outcome manipulation cases;
6781
- FlowCompiler rejects impossible machine histories in the bundled cases.
6882

6983
Not safe to claim:
@@ -77,6 +91,8 @@ Not safe to claim:
7791
- semantic truth;
7892
- zero-knowledge privacy in v0;
7993
- guaranteed fraud prevention.
94+
- live provider marketplace;
95+
- production x402 service;
8096

8197
## Final Confidence Gate
8298

‎docs/LAUNCH_PACKET.md‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ It summarizes:
1717
- adapter conformance status;
1818
- runtime success/failure coverage;
1919
- bundled impossible-history rejection status;
20+
- PulseRouter outcome-routing validation;
21+
- PulseRouter adversarial validation;
2022
- reviewer commands.
2123

2224
Expected shape:
@@ -31,6 +33,8 @@ Checks:
3133
adapter_conformance_passed PASS
3234
runtime_has_success_and_failure_paths PASS
3335
flowcompiler_rejects_all_bundled_impossible_histories PASS
36+
pulserouter_demo_has_no_validation_faults PASS
37+
pulserouter_adversary_suite_passed PASS
3438
```
3539

3640
## Why This Matters

0 commit comments

Comments
 (0)