Skip to content

Commit 5ed41d6

Browse files
committed
Add CommerceOps Fire Drill proof
1 parent ba0ce36 commit 5ed41d6

21 files changed

Lines changed: 1453 additions & 0 deletions

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,16 +49,21 @@ npm run proof:agent-action-firewall -- --dry-run --json
4949
npm run verify:agent-action-firewall
5050
npm run proof:mcp-risk-gate -- --dry-run --json
5151
npm run verify:mcp-risk-gate
52+
npm run proof:commerceops-fire-drill -- --dry-run --json
53+
npm run verify:commerceops-fire-drill
5254
```
5355

5456
Docs:
5557

5658
- [`docs/decision-receipt-standard.md`](docs/decision-receipt-standard.md)
5759
- [`docs/agent-action-firewall.md`](docs/agent-action-firewall.md)
5860
- [`docs/mcp-risk-gate.md`](docs/mcp-risk-gate.md)
61+
- [`docs/commerceops-fire-drill.md`](docs/commerceops-fire-drill.md)
5962

6063
MCP Risk Gate applies the same foundation at the tool-call boundary. It shows how an MCP-style call intent binds a receipt to the exact server, tool, target, actor, and params hash before runtime-owned execution.
6164

65+
CommerceOps Fire Drill applies the foundation to a Shopify-style merchant workflow. It shows how routine tracking replies, refunds, discounts, address changes, cancellations, and unsupported customer promises are allowed, revised, escalated, or stopped before execution.
66+
6267
This is a synthetic dry-run proof. It does not touch Shopify, payment rails, customer accounts, production systems, external message channels, MCP providers, or real data. It does not claim provider approval, marketplace listing, compliance certification, production integration, partnership, or downstream execution by Neura.
6368

6469
## Ecosystem Availability: Use Neura Today

docs/commerceops-fire-drill.md

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# CommerceOps Fire Drill
2+
3+
CommerceOps Fire Drill is a synthetic proof of Neura Relay as the Agent Action Gateway for money-moving commerce operations.
4+
5+
It shows a Shopify-style merchant agent proposing familiar business actions, then receiving a Decision Receipt before anything executes.
6+
7+
## Core Path
8+
9+
```text
10+
Commerce agent intent -> Action Card -> Agent Action Gateway -> Decision Receipt -> developer-owned execution or restraint
11+
```
12+
13+
## Run The Proof
14+
15+
```bash
16+
npm run proof:commerceops-fire-drill -- --dry-run --json
17+
npm run verify:commerceops-fire-drill
18+
```
19+
20+
The proof covers six synthetic commerce actions:
21+
22+
| Scenario | Decision | Why |
23+
| --- | --- | --- |
24+
| Routine tracking reply | `allow` | Factual reply based on existing synthetic fulfillment data. |
25+
| Refund over threshold | `human_review` | Money-moving action exceeds owner-approval threshold. |
26+
| Discount code above limit | `revise` | Useful retention action must be reduced to policy-safe terms. |
27+
| Address change after risk signal | `human_review` | High-value post-payment address change needs verification. |
28+
| Cancellation after fulfillment release | `human_review` | Cancellation cannot be promised after warehouse release without confirmation. |
29+
| Unsupported customer promise | `stop` | Message promises refund and overnight replacement without evidence. |
30+
31+
## Outputs
32+
33+
Each scenario produces:
34+
35+
- a synthetic Action Card;
36+
- a Decision Receipt;
37+
- policy and evidence basis;
38+
- allowed next step;
39+
- blocked downstream actions;
40+
- attribution fields for proof measurement;
41+
- boundary flags showing no real commerce action occurred.
42+
43+
## Files
44+
45+
```text
46+
examples/commerceops-fire-drill/fixtures/*.json
47+
examples/commerceops-fire-drill/scenarios/*.json
48+
examples/commerceops-fire-drill/receipts/*.receipt.json
49+
examples/commerceops-fire-drill/manifest.json
50+
examples/commerceops-fire-drill/run-proof.mjs
51+
scripts/verify-commerceops-fire-drill.mjs
52+
```
53+
54+
## Boundary
55+
56+
CommerceOps Fire Drill is a local dry-run proof with synthetic data only. It does not touch Shopify, payment rails, fulfillment systems, customer accounts, discount-code systems, or customer-message channels. It does not claim provider approval, marketplace listing, compliance certification, production integration, partnership, or downstream execution by Neura.
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"merchant_id": "CO-MERCHANT-001",
3+
"merchant_name": "Synthetic Main Street Goods",
4+
"owner_role": "merchant_owner",
5+
"support_role": "support_agent",
6+
"refund_threshold_usd": 250,
7+
"discount_limit_percent": 15,
8+
"high_value_order_threshold_usd": 500,
9+
"fulfillment_confirmation_required_after_release": true,
10+
"customer_message_promise_rule": "Agents cannot promise refunds, replacements, expedited shipping, or cancellation outcomes without policy evidence and required authority.",
11+
"synthetic_data_only": true
12+
}
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
[
2+
{
3+
"order_id": "CO-1001",
4+
"order_total_usd": 68,
5+
"customer_tier": "standard",
6+
"fulfillment_status": "shipped",
7+
"delivery_status": "in_transit",
8+
"tracking_status": "carrier_scan_available",
9+
"risk_signals": [],
10+
"available_shipping_options": ["standard"],
11+
"replacement_inventory_status": "not_needed",
12+
"synthetic_data_only": true
13+
},
14+
{
15+
"order_id": "CO-1007",
16+
"order_total_usd": 520,
17+
"customer_tier": "standard",
18+
"fulfillment_status": "delivered",
19+
"delivery_status": "delivered_one_day_late",
20+
"product_issue_status": "not_defective",
21+
"risk_signals": [],
22+
"available_shipping_options": ["standard"],
23+
"replacement_inventory_status": "available",
24+
"synthetic_data_only": true
25+
},
26+
{
27+
"order_id": "CO-1012",
28+
"order_total_usd": 88,
29+
"customer_tier": "returning",
30+
"fulfillment_status": "delivered",
31+
"delivery_status": "delivered",
32+
"product_issue_status": "wrong_color_reported",
33+
"risk_signals": [],
34+
"available_shipping_options": ["standard"],
35+
"replacement_inventory_status": "available",
36+
"synthetic_data_only": true
37+
},
38+
{
39+
"order_id": "CO-1042",
40+
"order_total_usd": 790,
41+
"customer_tier": "new",
42+
"fulfillment_status": "label_created",
43+
"delivery_status": "not_shipped",
44+
"product_issue_status": "none",
45+
"risk_signals": ["billing_shipping_mismatch", "different_state_address_change"],
46+
"available_shipping_options": ["standard"],
47+
"replacement_inventory_status": "not_needed",
48+
"synthetic_data_only": true
49+
},
50+
{
51+
"order_id": "CO-1099",
52+
"order_total_usd": 180,
53+
"customer_tier": "standard",
54+
"fulfillment_status": "released_to_warehouse",
55+
"delivery_status": "carrier_pickup_within_one_hour",
56+
"product_issue_status": "none",
57+
"risk_signals": [],
58+
"available_shipping_options": ["standard"],
59+
"replacement_inventory_status": "not_needed",
60+
"synthetic_data_only": true
61+
},
62+
{
63+
"order_id": "CO-1105",
64+
"order_total_usd": 142,
65+
"customer_tier": "standard",
66+
"fulfillment_status": "delivered",
67+
"delivery_status": "delivered",
68+
"product_issue_status": "not_verified",
69+
"risk_signals": [],
70+
"available_shipping_options": ["standard"],
71+
"replacement_inventory_status": "unknown",
72+
"overnight_shipping_available": false,
73+
"synthetic_data_only": true
74+
}
75+
]
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"commerceops.synthetic.tracking_reply.allowed": "Agents may send factual tracking replies from existing fulfillment evidence when no refund, discount, promise, or state change is included.",
3+
"commerceops.synthetic.refunds.threshold": "Refunds above 250.00 USD require merchant-owner approval unless product loss or defect evidence is present.",
4+
"commerceops.synthetic.discounts.limit": "Support agents may offer up to 15 percent without owner approval; higher discounts require revision or review.",
5+
"commerceops.synthetic.address_change.verification": "High-value post-payment address changes with risk signals require verification before update.",
6+
"commerceops.synthetic.fulfillment.cancellation_release": "Cancellation after warehouse release requires fulfillment confirmation before any customer promise.",
7+
"commerceops.synthetic.customer_promises.evidence_required": "Agents cannot promise refunds, replacements, or expedited shipping without evidence, inventory, shipping availability, and required authority.",
8+
"synthetic_data_only": true
9+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
{
2+
"proof": "commerceops-fire-drill",
3+
"capability": "CommerceOps Fire Drill",
4+
"receipt_standard": "neura-decision-receipt-v0.1-draft",
5+
"command": "npm run proof:commerceops-fire-drill -- --dry-run --json",
6+
"verify_command": "npm run verify:commerceops-fire-drill",
7+
"scenario_count": 6,
8+
"decisions_required": ["allow", "revise", "human_review", "stop"],
9+
"scenarios": [
10+
"routine-tracking-reply",
11+
"refund-over-threshold",
12+
"discount-code-above-limit",
13+
"address-change-risk-signal",
14+
"cancellation-after-fulfillment-release",
15+
"unsupported-customer-promise"
16+
],
17+
"boundary": {
18+
"synthetic_data_only": true,
19+
"real_shopify_touched": false,
20+
"real_payment_touched": false,
21+
"real_fulfillment_touched": false,
22+
"real_customer_message_sent": false,
23+
"downstream_execution_performed_by_neura": false
24+
}
25+
}
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
{
2+
"receipt_id": "dr_20260526_commerceops_address_change_human_review_001",
3+
"standard": "neura-decision-receipt-v0.1-draft",
4+
"created_at": "2026-05-26T18:15:00-04:00",
5+
"action_card_id": "ac_20260526_commerceops_address_change_001",
6+
"decision": "human_review",
7+
"runtime_instruction": "pause_for_human_review",
8+
"decision_reason": "High-value post-payment address change has synthetic fraud signals and requires verification before update.",
9+
"actor": {
10+
"type": "agent",
11+
"name": "CommerceOps Demo Agent",
12+
"runtime": "synthetic_commerce_agent"
13+
},
14+
"proposed_action": {
15+
"action_type": "change_shipping_address",
16+
"target": "order:CO-1042",
17+
"summary": "Change the shipping address after payment authorization for a high-value order.",
18+
"params_hash": "sha256:commerceops_address_change_risk_001",
19+
"amount_or_value_at_risk": "790.00 USD",
20+
"customer_impact": "order may ship to unverified address"
21+
},
22+
"risk": {
23+
"risk_class": "post_payment_address_change",
24+
"consequence_score": 3
25+
},
26+
"policy_basis": [
27+
{
28+
"policy_ref": "commerceops.synthetic.address_change.verification",
29+
"summary": "High-value post-payment address changes with risk signals require verification before update."
30+
}
31+
],
32+
"evidence_basis": [
33+
{
34+
"evidence_ref": "order:CO-1042.risk_signals",
35+
"summary": "Synthetic risk signals include billing/shipping mismatch and different-state address change."
36+
},
37+
{
38+
"evidence_ref": "order:CO-1042.fulfillment_status",
39+
"summary": "Synthetic fulfillment status is label created."
40+
}
41+
],
42+
"authority": {
43+
"authority_ref": "merchant_owner",
44+
"approval_state": "verification_required",
45+
"required_role": "merchant_owner"
46+
},
47+
"validity": {
48+
"valid_for_action_type": "change_shipping_address",
49+
"valid_for_target": "order:CO-1042",
50+
"valid_for_actor": "CommerceOps Demo Agent",
51+
"params_hash": "sha256:commerceops_address_change_risk_001",
52+
"valid_until": null,
53+
"invalid_if_changed": ["action_type", "target", "params_hash", "actor", "policy_refs", "evidence_refs", "approval_state"]
54+
},
55+
"execution": {
56+
"allowed_next_step": "request_customer_verification",
57+
"blocked_downstream_actions": ["update_shipping_address", "release_modified_fulfillment"],
58+
"execution_boundary": "No real commerce platform, payment rail, fulfillment system, discount-code system, or customer-message channel is touched by Neura."
59+
},
60+
"trace": {
61+
"trace_ref": "trace_20260526_commerceops_address_change_human_review_001",
62+
"source": "github",
63+
"campaign": "agent_action_gateway",
64+
"surface": "commerceops_fire_drill"
65+
},
66+
"boundary": {
67+
"synthetic_data_only": true,
68+
"downstream_execution_performed_by_neura": false,
69+
"real_shopify_touched": false,
70+
"real_payment_touched": false,
71+
"real_fulfillment_touched": false,
72+
"real_discount_code_created": false,
73+
"real_customer_message_sent": false,
74+
"provider_approval_claimed": false,
75+
"compliance_certification_claimed": false
76+
}
77+
}
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
{
2+
"receipt_id": "dr_20260526_commerceops_cancellation_human_review_001",
3+
"standard": "neura-decision-receipt-v0.1-draft",
4+
"created_at": "2026-05-26T18:20:00-04:00",
5+
"action_card_id": "ac_20260526_commerceops_cancellation_001",
6+
"decision": "human_review",
7+
"runtime_instruction": "pause_for_human_review",
8+
"decision_reason": "Order has been released to warehouse and requires fulfillment confirmation before cancellation or customer promise.",
9+
"actor": {
10+
"type": "agent",
11+
"name": "CommerceOps Demo Agent",
12+
"runtime": "synthetic_commerce_agent"
13+
},
14+
"proposed_action": {
15+
"action_type": "cancel_order_after_release",
16+
"target": "order:CO-1099",
17+
"summary": "Cancel the order and notify fulfillment to stop shipment after warehouse release.",
18+
"params_hash": "sha256:commerceops_cancellation_after_release_001",
19+
"amount_or_value_at_risk": "180.00 USD",
20+
"customer_impact": "customer may receive cancellation promise that fulfillment cannot honor"
21+
},
22+
"risk": {
23+
"risk_class": "fulfillment_exception",
24+
"consequence_score": 2
25+
},
26+
"policy_basis": [
27+
{
28+
"policy_ref": "commerceops.synthetic.fulfillment.cancellation_release",
29+
"summary": "Cancellation after warehouse release requires fulfillment confirmation before any customer promise."
30+
}
31+
],
32+
"evidence_basis": [
33+
{
34+
"evidence_ref": "order:CO-1099.fulfillment_status",
35+
"summary": "Synthetic fulfillment status is released to warehouse."
36+
},
37+
{
38+
"evidence_ref": "order:CO-1099.carrier_pickup_window",
39+
"summary": "Synthetic carrier pickup window is within one hour."
40+
}
41+
],
42+
"authority": {
43+
"authority_ref": "merchant_fulfillment_owner",
44+
"approval_state": "pending_fulfillment_confirmation",
45+
"required_role": "fulfillment_owner"
46+
},
47+
"validity": {
48+
"valid_for_action_type": "cancel_order_after_release",
49+
"valid_for_target": "order:CO-1099",
50+
"valid_for_actor": "CommerceOps Demo Agent",
51+
"params_hash": "sha256:commerceops_cancellation_after_release_001",
52+
"valid_until": null,
53+
"invalid_if_changed": ["action_type", "target", "params_hash", "actor", "policy_refs", "evidence_refs", "approval_state"]
54+
},
55+
"execution": {
56+
"allowed_next_step": "request_fulfillment_confirmation",
57+
"blocked_downstream_actions": ["cancel_order", "notify_fulfillment_stop_shipment", "send_cancellation_confirmation"],
58+
"execution_boundary": "No real commerce platform, payment rail, fulfillment system, discount-code system, or customer-message channel is touched by Neura."
59+
},
60+
"trace": {
61+
"trace_ref": "trace_20260526_commerceops_cancellation_human_review_001",
62+
"source": "github",
63+
"campaign": "agent_action_gateway",
64+
"surface": "commerceops_fire_drill"
65+
},
66+
"boundary": {
67+
"synthetic_data_only": true,
68+
"downstream_execution_performed_by_neura": false,
69+
"real_shopify_touched": false,
70+
"real_payment_touched": false,
71+
"real_fulfillment_touched": false,
72+
"real_discount_code_created": false,
73+
"real_customer_message_sent": false,
74+
"provider_approval_claimed": false,
75+
"compliance_certification_claimed": false
76+
}
77+
}

0 commit comments

Comments
 (0)