M2 Marketplace registry of record — listings, audit snapshots, frozen schemas (spec: m2-market 001-market-first-wedge)
Find a file
m2 (AI Agent) a6737b2a65
Some checks are pending
validate-listings / validate (push) Waiting to run
audit: ledger balance snapshot 2026-07-11.json
2026-07-11 01:10:02 +00:00
.forgejo/workflows registry: initial layout, PR template, CI validation, frozen v1 schema mirror 2026-07-02 02:29:47 +02:00
.gitea registry: initial layout, PR template, CI validation, frozen v1 schema mirror 2026-07-02 02:29:47 +02:00
audit audit: ledger balance snapshot 2026-07-11.json 2026-07-11 01:10:02 +00:00
listings publish: lst_mm-pdf-report + lst_agent-scaffold status draft->published (PRs #1 #2 merged, approved labels) 2026-07-02 04:11:07 +02:00
schemas registry: initial layout, PR template, CI validation, frozen v1 schema mirror 2026-07-02 02:29:47 +02:00
scripts T028: harden CI validation — tenant-scope/visibility coherence, solution_id cross-check 2026-07-02 04:10:01 +02:00
README.md registry: initial layout, PR template, CI validation, frozen v1 schema mirror 2026-07-02 02:29:47 +02:00

m2/market-registry — M2 Marketplace registry of record

Truth for marketplace listings and ledger audit snapshots. Everything downstream (the market:catalog semantic index, the M2 Store, the m2-market CLI) is DERIVED from this repo and rebuildable from it.

Contract: m2-market repo, specs/001-market-first-wedge/contracts/registry-layout.md.

Layout

listings/<listing_id>/     listing.json + solution.json + evidence/
audit/YYYY-MM-DD.json      daily ledger balance snapshots (m2-ledger /snapshot)
schemas/                   MIRROR of the frozen v1 schemas (source of truth: m2-market repo)
scripts/validate.py        validation used by CI and locally

Solution bundles attach as repo releases tagged <listing_id>-v<semver>.

Publish protocol

branch listing/<listing_id> → PR (template enforces evidence/price/permissions/rollback) → CI validation (hard gate) → human review window → label veto = rejected, label approved + merge = published. Delist = PR setting status: "delisted" (licenses stay valid).

Rules

  • No secrets, ever. Evidence is scrubbed before commit.
  • Tenant-derived listings require owner-initiated + double-scrub attestations in the PR body.
  • On index divergence the registry wins: m2-market-indexer reindex rebuilds the catalog.