Skip to main content
Glama
README.md
# Eclipse Warranty

Warranty registration witness for agent purchases — binds serial, buyer mandate, and retailer receipt into one transferable claim pack.

**Status: v0.1.1 — CERTIFIED (local, fixture)** (Verity re-bench 1, 2026-10-26: 95 asserted PASS / 0 FAIL; D1 full-content seal + D2 schema enforcement closed; prior v0.1.0 verdict CONDITIONAL). Spec: `SPEC.md` (see its Bench Fix addendum — v0.1.0-sealed packs verify INVALID under v0.1.1; fixture packs are re-registered, no migration). Scope: **LOCAL / fixture**.

## Novel mechanism

The claim pack is transferable on resale because it is bound to the product serial + sealed purchase proof, not to a retailer account login. Transfer appends a chained record and re-seals; verification recomputes the seal from the serial, bindings, and transfer chain alone — no account credential, no original holder. Incumbents (Extend / Mulberry) attach plans to retailer accounts with no agent mandate proof; here `buyer_mandate_ref` is a sealed binding.

## Honest scope

Registrations operate on fixture purchase records supplied by the caller. Seals are local HMAC-SHA256 hash seals using a demo key generated at runtime in `keys/` (gitignored). The pack is a **witness record, not a warranty contract** — no legal warranty adjudication, coverage, or enforceability is claimed, and no retailer or manufacturer is contacted.

## Tools (exactly five)

| Tool | What it does |
|---|---|
| `register_warranty` | Seal serial + product ref + buyer mandate ref + retailer receipt ref + purchase ts into a claim pack (chain genesis). One pack per serial. |
| `get_pack` | Retrieve a pack with all bindings, current holder, and transfer chain. |
| `verify_pack` | Recompute seal + chain linkage by `pack_id` or supplied pack object. Tamper with any bound field → `INVALID`. |
| `transfer_pack` | Re-bind to a new holder with a chained transfer record; pack verifies afterwards without the original holder. |
| `claim_check` | Given a serial (+ optional pack_id), answer whether a valid transferable claim pack exists. Unregistered serial → plain negative. |

## Pricing

FREE + funnel role — free registration drives Eclipse Procure order volume and Till receipts. No payment anything.

## Run

```
python3 server.py                          # MCP over stdio
python3 -m unittest discover -s tests -v
```

State: `data/packs.json` (gitignored; override `ECLIPSE_WARRANTY_DATA_DIR`). Demo key: `keys/demo.key` (gitignored, generated on first use; override `ECLIPSE_WARRANTY_KEY_FILE`). Fixture seeds: `fixtures/`.

MIT License · Copyright © 2026 Cyan Eclipse Technologies LLC · cetech.ai