m2-market/contracts/telemetry.md

2 KiB

Marketplace telemetry contract v1

All shown/opened/installed/dismissed marketplace telemetry uses one envelope: m2.market.telemetry.v1.

m2.market.evidence.v1 is reserved for S6 job evidence records only. Do not write install, proposal, Store, Scout, or CLI telemetry with the evidence schema.

Envelope

{
  "schema_version": "m2.market.telemetry.v1",
  "event_id": "evt_01j2telemetry",
  "event_type": "market.install.succeeded",
  "occurred_at": "2026-07-02T00:00:00Z",
  "tenant_id": "m2",
  "operator_id": "op_chris",
  "agent_id": "chris-m2o",
  "listing_id": "lst_mm-pdf-report",
  "solution_id": "sol_mm-pdf-report",
  "solution_version": "1.0.0",
  "proposal_id": "prop_01j2abc",
  "source": "cli",
  "content_hash": "sha256:0000000000000000000000000000000000000000000000000000000000000000",
  "payload": {}
}

Required fields: schema_version, event_id, event_type, occurred_at, tenant_id, source, and at least one of listing_id, solution_id, or proposal_id.

Telemetry must contain summaries and IDs only. No raw client data, secrets, transcript bodies, or private job artifacts.

Event type registry

  • market.listing.shown
  • market.listing.opened
  • market.proposal.generated
  • market.proposal.shown
  • market.proposal.opened
  • market.proposal.accepted
  • market.proposal.dismissed
  • market.install.started
  • market.install.succeeded
  • market.install.failed
  • market.install.refunded
  • market.uninstall.succeeded
  • market.upgrade.succeeded
  • market.invoke.succeeded
  • market.invoke.failed

Indexers may fold telemetry into listing.stats.installs, listing.stats.proposals_shown, and listing.stats.proposals_accepted. Self-purchases and self-generated proposal loops are excluded from quality statistics.

Job evidence reservation

m2.market.evidence.v1 records are S6 job evidence records and carry evidence_id, job_id, wanted, tools, contributors, metering, resources, outcome, reusable_verdict, scrub_status, and content_hash. They are not a general event envelope.