{"name": "Compaction-loss audit", "provider": "TextForAgents LLC", "support": "support@textforagents.com", "slug": "compaction-loss-audit", "what": "A compaction witness for agent harnesses: pin your goal, acceptance criteria, and safety rules verbatim before the harness compacts; after compaction, get a per-span survival verdict (PRESERVED / DEGRADED / LOST, with the dropped text named), verbatim re-injection of what was lost, or a HALT verdict when a critical span cannot be restored \u2014 every audit under an Ed25519-signed compaction receipt you can verify later against the published key.", "features": ["invariant pinning verbatim before compaction (snapshot-time marker/heuristic classification, no model pass, plus write-time pinning via POST /pin)", "span-by-span post-compaction diff: PRESERVED / DEGRADED / LOST with the dropped text named", "verbatim re-injection of degraded/lost spans, or HALT when a critical span is lost and re-injection is disallowed", "Ed25519-signed compaction receipts (published verification key, 30-day validity window, rotation-safe)", "real MCP surface (initialize / tools/list / tools/call: snapshot / pin / audit / reinject) plus a REST mirror", "per-event API ($0.01/event, x402) and Solo/Fleet subscription rails; first compaction audit free, one-time trial"], "limits": ["V1 SURFACE: the hosted API/MCP service called by the operator/harness at the compaction boundary. Harness hook integrations (automatic snapshot/audit/reinject inside Claude Code / LangGraph-class harnesses) are NOT built in v1 and are not claimed \u2014 you call the service at the boundary.", "Snapshot-time classification is marker/heuristic-based (explicit [invariant]/[fact]/[episodic] markers plus conservative prefix heuristics; no model pass). COVERAGE LIMIT: a goal or rule stated with no marker and no heuristic shape can escape snapshot-time classification and will not be pinned by a snapshot. Write-time pinning (POST /pin, MCP pin tool) closes this for spans you pin when they are written; spans that are neither pinned at write time nor marker/heuristic-shaped at snapshot time are outside coverage, stated plainly.", "DEGRADED policy, carried as built and NOT silently retuned: a pinned span is PRESERVED when its normalized text (case/punctuation-insensitive) appears verbatim in the post-compaction context; DEGRADED when token containment is >= 0.6 but not verbatim; otherwise LOST. A paraphrase of a safety rule is therefore DEGRADED by design \u2014 the consequence is cheap verbatim re-injection, not a halt, unless the span is critical and re-injection is disallowed, which returns HALT.", "The service only ever restores the operator's OWN pre-compaction text verbatim. It never selects, restricts, or replaces context content based on any content-quality or safety score, never substitutes curated context, and performs no host file-change scanning (LEGAL-081 keep-clear conditions).", "Persistence: snapshots, pins and receipts are stored per-operator in the product's own store with strict account isolation and are retained for 12 months, then purged; deletion on request via support@textforagents.com. No customer's snapshots, audits, receipts or event counters are ever visible to another account.", "Trial terms: the FIRST compaction audit is free, one time only \u2014 enforced server-side per operator account AND per payer wallet (both keys checked on every POST /trial/claim). After the free audit, the per-event price or a subscription applies to every event. Snapshot, pin and reinject calls around an audit are included in that audit's event and are not separately metered; reinject requires the signed receipt issued by the audit it belongs to.", "Request bodies over 2000000 bytes are refused (HTTP 413). One snapshot holds at most 5000 spans.", "Lost-token recovery is a manual support@ step."], "prices": {"per_event_usd": 0.01, "solo_monthly_usd": 9.0, "fleet_monthly_usd": 19.0, "solo_events_per_month": 200, "fleet_events_per_month": 2000, "terms": "Per-event API $0.01 per event (x402; one event = one audit, with its snapshot/pin/reinject calls included). Solo $9/mo per operator (up to 200 events/mo). Fleet $19/mo per operator (up to 2,000 events/mo, team receipt archive, HALT policy). Trial: first compaction audit free, one-time per operator account AND per payer wallet, both enforced server-side."}, "how_to_start": "POST /register {account_name, payer_wallet} -> per-customer token (shown once, SHA-256 at rest). Then POST /snapshot (Bearer) to pin a context, POST /audit (Bearer, or X-PAYMENT $0.01 per event) after compaction, POST /reinject with the audit's signed receipt to restore or HALT. Or speak MCP at POST /mcp (initialize / tools/list / tools/call). Claim the one-time free first audit via POST /trial/claim (Bearer); subscribe via POST /subscribe {tier} (Bearer + verified X-PAYMENT).", "receipt_signing": {"alg": "Ed25519", "key_id": "ed25519-6ac7992bad1f", "public_key": "6ac7992bad1f18c85d48223c57e044218bb466de866170418e54a30d74420e84", "keys": [{"key_id": "ed25519-6ac7992bad1f", "public_key": "6ac7992bad1f18c85d48223c57e044218bb466de866170418e54a30d74420e84", "current": true}], "receipt_validity_seconds": 2592000, "note": "Verify any receipt at POST /receipts/verify. Rotation retires the old key into the published key list, so receipts keep verifying throughout their validity windows."}}