From fce8d360f5f527cd219243130916a6d1a7088298 Mon Sep 17 00:00:00 2001 From: mart1n <20109376+mart1n-xyz@users.noreply.github.com> Date: Thu, 28 May 2026 13:23:25 +0200 Subject: [PATCH 01/10] Add LP-0018 draft: OpenStreetMap decentralized map data distribution. Restates success criteria in the appendix alongside technical design so builders and evaluators have a single combined specification. Co-authored-by: Cursor --- README.md | 1 + prizes/LP-0018.md | 263 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 264 insertions(+) create mode 100644 prizes/LP-0018.md diff --git a/README.md b/README.md index 39f9913f..6349ca63 100644 --- a/README.md +++ b/README.md @@ -41,6 +41,7 @@ All prizes live in the `[prizes/](prizes/)` directory. Each prize is a markdown | [LP-0015](prizes/LP-0015.md) | General cross-program calls via tail calls | Large | Closed | | [LP-0016](prizes/LP-0016.md) | Anonymous Forum with Threshold Moderation | Large | Open | | [LP-0017](prizes/LP-0017.md) | Whistleblower: document upload and indexing Basecamp app | Medium | Open | +| [LP-0018](prizes/LP-0018.md) | OpenStreetMap integration: decentralized map data distribution | Medium | Draft | ### Proposing a New Prize diff --git a/prizes/LP-0018.md b/prizes/LP-0018.md new file mode 100644 index 00000000..b8a4e5ec --- /dev/null +++ b/prizes/LP-0018.md @@ -0,0 +1,263 @@ +--- +dependencies: [] +--- + +# LP-0018: OpenStreetMap Integration — Decentralized Map Data Distribution [DRAFT] + +**`Status: Draft`** +**`Logos Circle: N/A`** + +## Overview + +This prize funds an **OpenStreetMap (OSM) data distribution system** for the Logos ecosystem. Users can browse available map regions, host map data in Logos Storage, and download verified map files with checksum guarantees. + +The deliverable has two required parts: a **Logos Basecamp app** (region discovery, host/download workflows, checksum verification, and bulk operations) and a standalone **OSM registry module/SDK** for programmatic interaction with the on-chain registry. + +**Requires:** +- Logos Storage module (for storing PBF files) +- Logos Blockchain module (for Zone SDK inscriptions — registry) + +These may connect to an external Logos node until built-in modules are available. + +The **Success Criteria**, **Scope**, and **Submission Requirements** below are the authoritative checklist for evaluators. The same requirements are **restated in the [Appendix](#appendix-technical-design-and-requirements)** alongside architecture diagrams, registry schema, verification flow, and the predefined region list — use both sections together when building or reviewing a submission. + +## Motivation + +OpenStreetMap extracts are widely used for offline navigation, GIS tooling, and privacy-preserving map apps — but distribution today depends on central hosts such as Geofabrik. A Logos-native distribution layer lets communities mirror verified map snapshots in decentralized storage and register them on-chain, so users can discover and download authentic data without trusting a single operator. + +This prize complements existing Logos sample apps (notably [LP-0017](LP-0017.md)) by demonstrating a full **fetch → store → register → verify → download** pipeline for large binary assets, with checksum guarantees anchored to Geofabrik as the canonical source. + +## Success Criteria + +### Functionality + +- [ ] **Region discovery**: fetch the Geofabrik index and display available regions with version info. +- [ ] **Host workflow**: download PBF from Geofabrik → store to Logos Storage → register on-chain via Zone SDK. +- [ ] **Download workflow**: fetch from Logos Storage (if hosted) or Geofabrik (direct fallback). +- [ ] **Checksum verification**: verify a downloaded file against Geofabrik's published MD5 checksum. +- [ ] **Bulk host**: allow selecting multiple regions to host at once, with opt-out per region. +- [ ] **Local import**: user provides a local PBF → verify checksum → store → register. +- [ ] **Update check**: compare central versions vs registry and notify the user of available updates. +- [ ] **OSM registry module**: extract registry interaction logic into a self-contained module with a documented API, reusable by other Logos apps without depending on the Basecamp app itself. + +### Usability + +- [ ] Provide a Logos Basecamp app GUI with local build instructions, downloadable assets, and loadable in Logos app (Basecamp). +- [ ] Provide the OSM registry module as a library/SDK with a README covering its API and integration steps. +- [ ] Clear UX: show hosted/not-hosted status, version numbers, and verification results. + +### Reliability + +- [ ] Storage upload retries on transient failures with exponential back-off and surfaces a clear error after exhausting retries. +- [ ] Checksum verification fails gracefully with clear error messages. +- [ ] Registry entries are ordered by timestamp for version sorting. + +### Performance + +- [ ] Document a sample file size (e.g., Berlin ~93 MB) and measured download/verify times. +- [ ] Document time to verify checksum (fetching `.md5` file only, not full download). + +### Supportability + +- [ ] The system is deployed and functional on Logos testnet/development environment. +- [ ] End-to-end integration tests covering host → verify → query → download are included in CI. +- [ ] CI is green on the default branch. +- [ ] A README documents: build steps, usage instructions, region list, and troubleshooting. +- [ ] A reproducible demo script works against a local Logos environment. +- [ ] A recorded video demo of the end-to-end flow is included in the submission. + +## Scope + +### In Scope + +- Region discovery from Geofabrik index. +- Host workflow (fetch + store + register). +- Download from Logos Storage or Geofabrik central source. +- Verification against Geofabrik checksums. +- Zone SDK on-chain registry. +- Basecamp UI with bulk host/download. +- OSM registry module extracted from the app, with documented API. + +### Out of Scope + +- Map rendering or tile server. +- Real-time OSM synchronization (snapshots only). +- Geocoding, routing, or navigation features. +- Custom regions outside the predefined list (see [Appendix A.4](#a4-predefined-regions)). + +## Prize Structure + +- **Total Prize:** $X +- **Effort:** Medium + +> Leave prize pool blank — this will be determined by the Logos team. + +## Eligibility + +Open to any individual or team. Submissions must be original work. Teams must hold the rights to all submitted code and agree to license it under MIT or Apache-2.0. + +## Submission Requirements + +- Public repository (MIT or Apache-2.0) containing: + - Basecamp app source with build instructions, + - OSM registry module/SDK with API documentation, + - integration tests runnable in CI. +- README with: build steps, region list, workflow, and troubleshooting. +- A narrated video walkthrough in which the builder explains what they built and why, walks through the architecture and key implementation decisions, and demonstrates (see [demo requirements](../README.md#evaluation-policies)): + - hosting a region (fetch from Geofabrik → store → register), + - verifying checksum from the app, + - downloading and verifying a hosted region. +- Submissions must include a FURPS self-assessment as part of the solution (see [solution template](../solutions/LP-0000.md)). + +## Evaluation Process + +By default, submissions are evaluated first-come-first-served against the success criteria. The first submission that meets **all** criteria wins. + +Evaluators will independently clone the repository and run the demo script from a clean environment; the script must succeed without modification. Evaluators may also ask technical follow-up questions to verify authorship and understanding of the implementation. + +The following policies apply to all prizes (see [evaluation policies](../README.md#evaluation-policies)): + +- **Submissions:** each builder (or team) is allowed a maximum of **3 submissions** per prize, with at most **one submission/review per week**. +- **Feedback:** initial evaluation feedback is limited to a pass/fail indication against the success criteria. + +## Resources + +- [Geofabrik Downloads](https://download.geofabrik.de/) +- [Geofabrik JSON Index](https://download.geofabrik.de/index-v1-nogeom.json) +- [Geofabrik Checksum Example](https://download.geofabrik.de/europe/germany/berlin-latest.osm.pbf.md5) +- [Logos Basecamp](https://github.com/logos-co/logos-basecamp) +- [Logos Storage Module](https://logos-storage-docs.netlify.app/tutorials/storage-module/) +- [LP-0017](LP-0017.md) — Whistleblower (reference implementation for storage + registry patterns) + +## Potential for Subsequent λPrizes + +This prize targets snapshot-based distribution from Geofabrik. A follow-up prize may cover incremental updates, additional region sources, or deeper integration once built-in Logos Storage and Blockchain modules ship in Basecamp. + +--- + +## Appendix: Technical Design and Requirements + +This appendix **restates the prize requirements** from the sections above in technical context. Evaluators and builders should treat the **Success Criteria**, **Scope**, and **Submission Requirements** in the main body and the checklist below as a single combined specification — the appendix adds architecture, schemas, and implementation detail; it does not relax or replace any main-body requirement. + +### A.0 Requirements checklist + +The items below mirror the main-body success criteria and scope. A submission must satisfy **both** this checklist and the corresponding sections above. + +**Functionality** + +- [ ] Region discovery from Geofabrik JSON index with version info displayed per region. +- [ ] Host workflow: Geofabrik PBF download → Logos Storage upload → Zone SDK on-chain registration. +- [ ] Download workflow: Logos Storage when hosted; Geofabrik direct when not. +- [ ] MD5 checksum verification against Geofabrik-published checksums. +- [ ] Bulk host with per-region opt-out. +- [ ] Local PBF import with checksum verification before store and register. +- [ ] Update check comparing Geofabrik central versions against on-chain registry entries. +- [ ] Standalone OSM registry module/SDK with documented API. + +**Usability** + +- [ ] Logos Basecamp app with build instructions and loadable assets. +- [ ] Registry module README with API and integration steps. +- [ ] UI shows hosted/not-hosted status, versions, and verification outcomes. + +**Reliability** + +- [ ] Storage upload retries with exponential back-off; clear errors on failure. +- [ ] Checksum mismatch reported clearly; file rejected. +- [ ] Registry entries sortable by timestamp for version ordering. + +**Performance** + +- [ ] Documented sample size and measured download/verify times (e.g., Berlin ~93 MB). +- [ ] Documented checksum-only verification time (`.md5` fetch, no full PBF download). + +**Supportability** + +- [ ] Deployed and working on Logos testnet/development environment. +- [ ] CI green; integration tests cover host → verify → query → download. +- [ ] README, reproducible demo script, and recorded end-to-end video demo. + +**In scope (technical)** + +- Geofabrik index integration; PBF storage in Logos Storage; Zone SDK registry; Basecamp UI for bulk host/download; extracted registry module. + +**Out of scope (technical)** + +- Tile servers, map rendering, live OSM sync, geocoding/routing/navigation, custom regions outside [A.4](#a4-predefined-regions). + +### A.1 Architecture + +``` + Geofabrik (central source) + │ + ┌───────────────┼───────────────┐ + │ │ │ + PBF file .md5 checksum JSON index + │ │ │ + ▼ ▼ ▼ + ┌─────────────────────────────────────────┐ + │ User (Basecamp app) │ + │ - Host: fetch → store → register │ + │ - Verify: fetch .md5 → compare hash │ + │ - Download: from Storage or central │ + └─────────────────────────────────────────┘ + │ + ┌────────────────┼────────────────┐ + │ │ │ + ▼ ▼ ▼ + Logos Storage Zone SDK Geofabrik + (PBF by CID) (inscriptions) Index API +``` + +### A.2 Registry schema (Zone SDK inscription) + +```json +{ + "region": "berlin", + "cid": "Qm...", + "source_url": "https://download.geofabrik.de/europe/germany/berlin-latest.osm.pbf", + "checksum": "md5:6485e3b66007593f36574c2bbb51c24f", + "version": "2026-05-27", + "hosted": true, + "timestamp": "2026-05-28T12:00:00Z" +} +``` + +### A.3 Checksum verification flow + +1. Registry entry contains: `source_url` + `checksum`. +2. User downloads file (from Logos Storage or Geofabrik). +3. Compute hash of downloaded file. +4. Fetch `.md5` from Geofabrik. +5. Compare: + +``` +✅ MATCH → file is authentic (matches Geofabrik) +❌ MISMATCH → file rejected (spoofed or corrupted) +``` + +This blocks spoofing: an attacker cannot produce a file matching Geofabrik's published checksum without control of Geofabrik's servers. + +### A.4 Predefined regions + +Closed set from Geofabrik (~55 regions): + +**Europe:** Germany, France, UK, Italy, Spain, Poland, Netherlands, Belgium, Switzerland, Austria, Czech Republic, Sweden, Norway, Denmark, Finland, Portugal, Greece, Ireland, Hungary, Romania, Bulgaria, Ukraine, Belarus, Russia, Turkey + +**North America:** USA, Canada, Mexico, California, Texas, New York, Florida, Ontario, Québec + +**Asia:** Japan, China, India, South Korea, Indonesia, Thailand, Vietnam, Malaysia, Philippines, Australia + +**South America:** Brazil, Argentina, Colombia, Peru, Chile + +**Africa:** South Africa, Egypt, Nigeria, Kenya, Morocco + +### A.5 Third-party app compatibility + +PBF files produced by this system are identical to Geofabrik downloads. Compatible apps include: + +- **OsmAnd**: import via OsmAndMapCreator (PBF → OBF). +- **Organic Maps**: import via built-in tools (PBF → `.mwm`). +- **Others**: most GIS tools accept PBF directly. + +The Basecamp app serves as a download manager; map rendering and navigation happen in third-party apps. From d96975e27f2b777ce4ae6607997e7bfec15abae2 Mon Sep 17 00:00:00 2001 From: mart1n <20109376+mart1n-xyz@users.noreply.github.com> Date: Thu, 28 May 2026 13:30:07 +0200 Subject: [PATCH 02/10] Align LP-0018 draft with template and live Basecamp prize conventions. Mirror LP-0017 registry, supportability, submission, and usability patterns; expand appendix checklist to match updated criteria. Co-authored-by: Cursor --- prizes/LP-0018.md | 63 ++++++++++++++++++++++++++++++++++++----------- 1 file changed, 48 insertions(+), 15 deletions(-) diff --git a/prizes/LP-0018.md b/prizes/LP-0018.md index b8a4e5ec..de768b96 100644 --- a/prizes/LP-0018.md +++ b/prizes/LP-0018.md @@ -1,3 +1,5 @@ + + --- dependencies: [] --- @@ -38,12 +40,17 @@ This prize complements existing Logos sample apps (notably [LP-0017](LP-0017.md) - [ ] **Bulk host**: allow selecting multiple regions to host at once, with opt-out per region. - [ ] **Local import**: user provides a local PBF → verify checksum → store → register. - [ ] **Update check**: compare central versions vs registry and notify the user of available updates. +- [ ] **On-chain registry**: the submitter chooses the anchoring approach — either (a) a LEZ program or (b) a direct submission to the consensus layer via the Zone SDK — and provides a brief justification for the choice. Note that decentralised sequencers for zones are not yet shipped: the Zone SDK approach requires a single designated actor to perform consensus inscription, which affects the trust model. The registry must: + - store per-region entries with at minimum: `region`, `cid`, `source_url`, `checksum`, `version`, `hosted`, and `timestamp` (see [Appendix A.2](#a2-registry-schema-zone-sdk-inscription)), + - be queryable by region and by CID, + - support registering multiple regions in a single batch transaction when bulk hosting. - [ ] **OSM registry module**: extract registry interaction logic into a self-contained module with a documented API, reusable by other Logos apps without depending on the Basecamp app itself. ### Usability - [ ] Provide a Logos Basecamp app GUI with local build instructions, downloadable assets, and loadable in Logos app (Basecamp). -- [ ] Provide the OSM registry module as a library/SDK with a README covering its API and integration steps. +- [ ] Provide a module/SDK that can be used to build Logos modules for interacting with the OSM registry. +- [ ] Provide an IDL for the LEZ program (if the LEZ program approach is chosen), using the [SPEL framework](https://github.com/logos-co/spel). - [ ] Clear UX: show hosted/not-hosted status, version numbers, and verification results. ### Reliability @@ -56,15 +63,16 @@ This prize complements existing Logos sample apps (notably [LP-0017](LP-0017.md) - [ ] Document a sample file size (e.g., Berlin ~93 MB) and measured download/verify times. - [ ] Document time to verify checksum (fetching `.md5` file only, not full download). +- [ ] Document and measure the compute unit (CU) cost of a single-region registration and a multi-region batch registration on LEZ devnet/testnet (if the LEZ program approach is chosen). Note: LEZ's per-transaction compute budget may change during testnet. ### Supportability -- [ ] The system is deployed and functional on Logos testnet/development environment. -- [ ] End-to-end integration tests covering host → verify → query → download are included in CI. +- [ ] The on-chain registry is deployed and tested on LEZ devnet/testnet. +- [ ] End-to-end integration tests covering host → verify → query → download run against a LEZ sequencer in standalone mode (if the LEZ program approach is chosen) or against a local Logos environment with Storage and Blockchain modules connected, and are included in CI. - [ ] CI is green on the default branch. -- [ ] A README documents: build steps, usage instructions, region list, and troubleshooting. -- [ ] A reproducible demo script works against a local Logos environment. -- [ ] A recorded video demo of the end-to-end flow is included in the submission. +- [ ] A README covers: build steps, deployment or inscription configuration, running the Basecamp app, querying the registry, region list, and troubleshooting. +- [ ] A reproducible end-to-end demo script is provided and works against a real local sequencer with `RISC0_DEV_MODE=0` (LEZ program path) or a local Logos environment with Storage and Blockchain modules connected (Zone SDK path). +- [ ] A recorded video demo of the end-to-end flow is included in the submission; the recording must show terminal output to confirm the demo ran against the claimed environment. If the LEZ program approach is chosen, the recording must also show proof-generation output to confirm `RISC0_DEV_MODE=0` was active. ## Scope @@ -74,9 +82,12 @@ This prize complements existing Logos sample apps (notably [LP-0017](LP-0017.md) - Host workflow (fetch + store + register). - Download from Logos Storage or Geofabrik central source. - Verification against Geofabrik checksums. -- Zone SDK on-chain registry. +- On-chain OSM registry: LEZ program or Zone SDK (submitter chooses and justifies). - Basecamp UI with bulk host/download. - OSM registry module extracted from the app, with documented API. +- Integration tests and CI. + +Geofabrik is the **canonical source of truth** for snapshot bytes and MD5 checksums. Hosted copies in Logos Storage are verified against Geofabrik; Geofabrik is not a runtime backend for the app beyond index lookup, checksum fetch, and direct-download fallback. ### Out of Scope @@ -84,6 +95,7 @@ This prize complements existing Logos sample apps (notably [LP-0017](LP-0017.md) - Real-time OSM synchronization (snapshots only). - Geocoding, routing, or navigation features. - Custom regions outside the predefined list (see [Appendix A.4](#a4-predefined-regions)). +- A hosted relay or backend service — registry, storage, and app logic run on the Logos stack; Geofabrik is used only as an external canonical snapshot source. ## Prize Structure @@ -99,14 +111,22 @@ Open to any individual or team. Submissions must be original work. Teams must ho ## Submission Requirements - Public repository (MIT or Apache-2.0) containing: - - Basecamp app source with build instructions, - - OSM registry module/SDK with API documentation, + - the OSM Basecamp app, + - the OSM registry module with API documentation, + - the on-chain registry program or Zone SDK integration, - integration tests runnable in CI. +- Deployed registry on LEZ devnet/testnet with documented program address or Zone SDK inscription configuration. - README with: build steps, region list, workflow, and troubleshooting. - A narrated video walkthrough in which the builder explains what they built and why, walks through the architecture and key implementation decisions, and demonstrates (see [demo requirements](../README.md#evaluation-policies)): + - end-to-end setup and deployment (or local environment configuration), - hosting a region (fetch from Geofabrik → store → register), - verifying checksum from the app, - - downloading and verifying a hosted region. + - downloading and verifying a hosted region, + - integration with the Logos stack (Logos Storage and on-chain registry), + - error handling for checksum mismatch and transient storage failures. + A silent screencast without explanation is not sufficient. +- Compute unit benchmarks for single and batch registry operations (if the LEZ program approach is chosen). +- GitHub issues filed for any problems encountered with Logos technology. - Submissions must include a FURPS self-assessment as part of the solution (see [solution template](../solutions/LP-0000.md)). ## Evaluation Process @@ -127,7 +147,10 @@ The following policies apply to all prizes (see [evaluation policies](../README. - [Geofabrik Checksum Example](https://download.geofabrik.de/europe/germany/berlin-latest.osm.pbf.md5) - [Logos Basecamp](https://github.com/logos-co/logos-basecamp) - [Logos Storage Module](https://logos-storage-docs.netlify.app/tutorials/storage-module/) +- [LEZ GitHub repository](https://github.com/logos-blockchain/logos-execution-zone) +- [SPEL framework](https://github.com/logos-co/spel) - [LP-0017](LP-0017.md) — Whistleblower (reference implementation for storage + registry patterns) +- [LP-0008](LP-0008.md) — Autonomous AI Module (reference for Logos Core module architecture and storage patterns) ## Potential for Subsequent λPrizes @@ -152,12 +175,14 @@ The items below mirror the main-body success criteria and scope. A submission mu - [ ] Bulk host with per-region opt-out. - [ ] Local PBF import with checksum verification before store and register. - [ ] Update check comparing Geofabrik central versions against on-chain registry entries. +- [ ] On-chain registry (LEZ program or Zone SDK): stores schema fields from [A.2](#a2-registry-schema-zone-sdk-inscription); queryable by region and CID; supports batch registration; submitter documents approach and trust model. - [ ] Standalone OSM registry module/SDK with documented API. **Usability** - [ ] Logos Basecamp app with build instructions and loadable assets. -- [ ] Registry module README with API and integration steps. +- [ ] Module/SDK for building Logos modules that interact with the OSM registry. +- [ ] IDL for LEZ program if that approach is chosen (SPEL). - [ ] UI shows hosted/not-hosted status, versions, and verification outcomes. **Reliability** @@ -170,20 +195,28 @@ The items below mirror the main-body success criteria and scope. A submission mu - [ ] Documented sample size and measured download/verify times (e.g., Berlin ~93 MB). - [ ] Documented checksum-only verification time (`.md5` fetch, no full PBF download). +- [ ] CU benchmarks for single and batch registry operations (LEZ program path). **Supportability** -- [ ] Deployed and working on Logos testnet/development environment. +- [ ] Registry deployed and tested on LEZ devnet/testnet. - [ ] CI green; integration tests cover host → verify → query → download. -- [ ] README, reproducible demo script, and recorded end-to-end video demo. +- [ ] README with deployment/inscription config, app usage, registry queries, region list, troubleshooting. +- [ ] Reproducible demo script (LEZ sequencer with `RISC0_DEV_MODE=0` or local Logos environment with Storage + Blockchain modules). +- [ ] Narrated video demo with terminal output; RISC0 proof output if LEZ program path. + +**Submission (technical)** + +- [ ] Public MIT/Apache-2.0 repo with app, module, registry integration, and CI tests. +- [ ] FURPS self-assessment; GitHub issues for Logos technology problems filed where applicable. **In scope (technical)** -- Geofabrik index integration; PBF storage in Logos Storage; Zone SDK registry; Basecamp UI for bulk host/download; extracted registry module. +- Geofabrik index integration; PBF storage in Logos Storage; LEZ program or Zone SDK registry; Basecamp UI for bulk host/download; extracted registry module; Geofabrik as canonical checksum source only. **Out of scope (technical)** -- Tile servers, map rendering, live OSM sync, geocoding/routing/navigation, custom regions outside [A.4](#a4-predefined-regions). +- Tile servers, map rendering, live OSM sync, geocoding/routing/navigation, custom regions outside [A.4](#a4-predefined-regions), hosted relay/backend beyond Logos stack + Geofabrik canonical source. ### A.1 Architecture From 7ef7104ff3fe5d3c4d582f48c95818fcdd33b0c5 Mon Sep 17 00:00:00 2001 From: mart1n <20109376+mart1n-xyz@users.noreply.github.com> Date: Thu, 28 May 2026 13:39:41 +0200 Subject: [PATCH 03/10] Require LEZ program for OSM registry instead of Zone SDK. Aligns LP-0018 with standard on-chain prize patterns: mandatory LEZ deployment, SPEL IDL, sequencer tests, and RISC0 demo requirements. Co-authored-by: Cursor --- prizes/LP-0018.md | 66 +++++++++++++++++++++++------------------------ 1 file changed, 32 insertions(+), 34 deletions(-) diff --git a/prizes/LP-0018.md b/prizes/LP-0018.md index de768b96..e48430ae 100644 --- a/prizes/LP-0018.md +++ b/prizes/LP-0018.md @@ -1,5 +1,3 @@ - - --- dependencies: [] --- @@ -17,9 +15,9 @@ The deliverable has two required parts: a **Logos Basecamp app** (region discove **Requires:** - Logos Storage module (for storing PBF files) -- Logos Blockchain module (for Zone SDK inscriptions — registry) +- LEZ (Logos Execution Zone) program for the on-chain OSM registry -These may connect to an external Logos node until built-in modules are available. +Logos Storage may connect to an external Logos node until the built-in module is available. The **Success Criteria**, **Scope**, and **Submission Requirements** below are the authoritative checklist for evaluators. The same requirements are **restated in the [Appendix](#appendix-technical-design-and-requirements)** alongside architecture diagrams, registry schema, verification flow, and the predefined region list — use both sections together when building or reviewing a submission. @@ -34,23 +32,23 @@ This prize complements existing Logos sample apps (notably [LP-0017](LP-0017.md) ### Functionality - [ ] **Region discovery**: fetch the Geofabrik index and display available regions with version info. -- [ ] **Host workflow**: download PBF from Geofabrik → store to Logos Storage → register on-chain via Zone SDK. +- [ ] **Host workflow**: download PBF from Geofabrik → store to Logos Storage → register on-chain via the OSM registry LEZ program. - [ ] **Download workflow**: fetch from Logos Storage (if hosted) or Geofabrik (direct fallback). - [ ] **Checksum verification**: verify a downloaded file against Geofabrik's published MD5 checksum. - [ ] **Bulk host**: allow selecting multiple regions to host at once, with opt-out per region. - [ ] **Local import**: user provides a local PBF → verify checksum → store → register. - [ ] **Update check**: compare central versions vs registry and notify the user of available updates. -- [ ] **On-chain registry**: the submitter chooses the anchoring approach — either (a) a LEZ program or (b) a direct submission to the consensus layer via the Zone SDK — and provides a brief justification for the choice. Note that decentralised sequencers for zones are not yet shipped: the Zone SDK approach requires a single designated actor to perform consensus inscription, which affects the trust model. The registry must: - - store per-region entries with at minimum: `region`, `cid`, `source_url`, `checksum`, `version`, `hosted`, and `timestamp` (see [Appendix A.2](#a2-registry-schema-zone-sdk-inscription)), - - be queryable by region and by CID, - - support registering multiple regions in a single batch transaction when bulk hosting. +- [ ] **On-chain registry**: an OSM registry LEZ program that: + - stores per-region entries with at minimum: `region`, `cid`, `source_url`, `checksum`, `version`, `hosted`, and `timestamp` (see [Appendix A.2](#a2-registry-schema-lez-program-account)), + - is queryable by region and by CID, + - supports registering multiple regions in a single batch transaction when bulk hosting. - [ ] **OSM registry module**: extract registry interaction logic into a self-contained module with a documented API, reusable by other Logos apps without depending on the Basecamp app itself. ### Usability - [ ] Provide a Logos Basecamp app GUI with local build instructions, downloadable assets, and loadable in Logos app (Basecamp). - [ ] Provide a module/SDK that can be used to build Logos modules for interacting with the OSM registry. -- [ ] Provide an IDL for the LEZ program (if the LEZ program approach is chosen), using the [SPEL framework](https://github.com/logos-co/spel). +- [ ] Provide an IDL for the OSM registry LEZ program, using the [SPEL framework](https://github.com/logos-co/spel). - [ ] Clear UX: show hosted/not-hosted status, version numbers, and verification results. ### Reliability @@ -63,16 +61,16 @@ This prize complements existing Logos sample apps (notably [LP-0017](LP-0017.md) - [ ] Document a sample file size (e.g., Berlin ~93 MB) and measured download/verify times. - [ ] Document time to verify checksum (fetching `.md5` file only, not full download). -- [ ] Document and measure the compute unit (CU) cost of a single-region registration and a multi-region batch registration on LEZ devnet/testnet (if the LEZ program approach is chosen). Note: LEZ's per-transaction compute budget may change during testnet. +- [ ] Document and measure the compute unit (CU) cost of a single-region registration and a multi-region batch registration on LEZ devnet/testnet. Note: LEZ's per-transaction compute budget may change during testnet. ### Supportability -- [ ] The on-chain registry is deployed and tested on LEZ devnet/testnet. -- [ ] End-to-end integration tests covering host → verify → query → download run against a LEZ sequencer in standalone mode (if the LEZ program approach is chosen) or against a local Logos environment with Storage and Blockchain modules connected, and are included in CI. +- [ ] The OSM registry LEZ program is deployed and tested on LEZ devnet/testnet. +- [ ] End-to-end integration tests covering host → verify → query → download run against a LEZ sequencer in standalone mode and are included in CI. - [ ] CI is green on the default branch. -- [ ] A README covers: build steps, deployment or inscription configuration, running the Basecamp app, querying the registry, region list, and troubleshooting. -- [ ] A reproducible end-to-end demo script is provided and works against a real local sequencer with `RISC0_DEV_MODE=0` (LEZ program path) or a local Logos environment with Storage and Blockchain modules connected (Zone SDK path). -- [ ] A recorded video demo of the end-to-end flow is included in the submission; the recording must show terminal output to confirm the demo ran against the claimed environment. If the LEZ program approach is chosen, the recording must also show proof-generation output to confirm `RISC0_DEV_MODE=0` was active. +- [ ] A README covers: build steps, program addresses, running the Basecamp app, querying the registry, region list, and troubleshooting. +- [ ] A reproducible end-to-end demo script is provided and works against a real local sequencer with `RISC0_DEV_MODE=0`. +- [ ] A recorded video demo of the end-to-end flow is included in the submission; the recording must show terminal output (including proof generation) to confirm `RISC0_DEV_MODE=0` was active. ## Scope @@ -82,7 +80,7 @@ This prize complements existing Logos sample apps (notably [LP-0017](LP-0017.md) - Host workflow (fetch + store + register). - Download from Logos Storage or Geofabrik central source. - Verification against Geofabrik checksums. -- On-chain OSM registry: LEZ program or Zone SDK (submitter chooses and justifies). +- On-chain OSM registry LEZ program. - Basecamp UI with bulk host/download. - OSM registry module extracted from the app, with documented API. - Integration tests and CI. @@ -113,9 +111,9 @@ Open to any individual or team. Submissions must be original work. Teams must ho - Public repository (MIT or Apache-2.0) containing: - the OSM Basecamp app, - the OSM registry module with API documentation, - - the on-chain registry program or Zone SDK integration, + - the OSM registry LEZ program, - integration tests runnable in CI. -- Deployed registry on LEZ devnet/testnet with documented program address or Zone SDK inscription configuration. +- Deployed OSM registry LEZ program on LEZ devnet/testnet with documented program address. - README with: build steps, region list, workflow, and troubleshooting. - A narrated video walkthrough in which the builder explains what they built and why, walks through the architecture and key implementation decisions, and demonstrates (see [demo requirements](../README.md#evaluation-policies)): - end-to-end setup and deployment (or local environment configuration), @@ -125,7 +123,7 @@ Open to any individual or team. Submissions must be original work. Teams must ho - integration with the Logos stack (Logos Storage and on-chain registry), - error handling for checksum mismatch and transient storage failures. A silent screencast without explanation is not sufficient. -- Compute unit benchmarks for single and batch registry operations (if the LEZ program approach is chosen). +- Compute unit benchmarks for single and batch registry operations. - GitHub issues filed for any problems encountered with Logos technology. - Submissions must include a FURPS self-assessment as part of the solution (see [solution template](../solutions/LP-0000.md)). @@ -169,20 +167,20 @@ The items below mirror the main-body success criteria and scope. A submission mu **Functionality** - [ ] Region discovery from Geofabrik JSON index with version info displayed per region. -- [ ] Host workflow: Geofabrik PBF download → Logos Storage upload → Zone SDK on-chain registration. +- [ ] Host workflow: Geofabrik PBF download → Logos Storage upload → OSM registry LEZ program registration. - [ ] Download workflow: Logos Storage when hosted; Geofabrik direct when not. - [ ] MD5 checksum verification against Geofabrik-published checksums. - [ ] Bulk host with per-region opt-out. - [ ] Local PBF import with checksum verification before store and register. - [ ] Update check comparing Geofabrik central versions against on-chain registry entries. -- [ ] On-chain registry (LEZ program or Zone SDK): stores schema fields from [A.2](#a2-registry-schema-zone-sdk-inscription); queryable by region and CID; supports batch registration; submitter documents approach and trust model. +- [ ] OSM registry LEZ program: stores schema fields from [A.2](#a2-registry-schema-lez-program-account); queryable by region and CID; supports batch registration. - [ ] Standalone OSM registry module/SDK with documented API. **Usability** - [ ] Logos Basecamp app with build instructions and loadable assets. - [ ] Module/SDK for building Logos modules that interact with the OSM registry. -- [ ] IDL for LEZ program if that approach is chosen (SPEL). +- [ ] IDL for OSM registry LEZ program (SPEL). - [ ] UI shows hosted/not-hosted status, versions, and verification outcomes. **Reliability** @@ -195,24 +193,24 @@ The items below mirror the main-body success criteria and scope. A submission mu - [ ] Documented sample size and measured download/verify times (e.g., Berlin ~93 MB). - [ ] Documented checksum-only verification time (`.md5` fetch, no full PBF download). -- [ ] CU benchmarks for single and batch registry operations (LEZ program path). +- [ ] CU benchmarks for single and batch registry operations on LEZ devnet/testnet. **Supportability** -- [ ] Registry deployed and tested on LEZ devnet/testnet. -- [ ] CI green; integration tests cover host → verify → query → download. -- [ ] README with deployment/inscription config, app usage, registry queries, region list, troubleshooting. -- [ ] Reproducible demo script (LEZ sequencer with `RISC0_DEV_MODE=0` or local Logos environment with Storage + Blockchain modules). -- [ ] Narrated video demo with terminal output; RISC0 proof output if LEZ program path. +- [ ] OSM registry LEZ program deployed and tested on LEZ devnet/testnet. +- [ ] CI green; integration tests cover host → verify → query → download against a LEZ sequencer in standalone mode. +- [ ] README with program addresses, app usage, registry queries, region list, troubleshooting. +- [ ] Reproducible demo script against a local LEZ sequencer with `RISC0_DEV_MODE=0`. +- [ ] Narrated video demo with terminal output including proof generation (`RISC0_DEV_MODE=0`). **Submission (technical)** -- [ ] Public MIT/Apache-2.0 repo with app, module, registry integration, and CI tests. +- [ ] Public MIT/Apache-2.0 repo with app, OSM registry LEZ program, module, and CI tests. - [ ] FURPS self-assessment; GitHub issues for Logos technology problems filed where applicable. **In scope (technical)** -- Geofabrik index integration; PBF storage in Logos Storage; LEZ program or Zone SDK registry; Basecamp UI for bulk host/download; extracted registry module; Geofabrik as canonical checksum source only. +- Geofabrik index integration; PBF storage in Logos Storage; OSM registry LEZ program; Basecamp UI for bulk host/download; extracted registry module; Geofabrik as canonical checksum source only. **Out of scope (technical)** @@ -238,11 +236,11 @@ The items below mirror the main-body success criteria and scope. A submission mu ┌────────────────┼────────────────┐ │ │ │ ▼ ▼ ▼ - Logos Storage Zone SDK Geofabrik - (PBF by CID) (inscriptions) Index API + Logos Storage OSM registry Geofabrik + (PBF by CID) LEZ program Index API ``` -### A.2 Registry schema (Zone SDK inscription) +### A.2 Registry schema (LEZ program account) ```json { From 394dfd650c666a8ebe88bfbe9c6bc93c03a02e29 Mon Sep 17 00:00:00 2001 From: mart1n <20109376+mart1n-xyz@users.noreply.github.com> Date: Fri, 21 Aug 2026 11:22:28 +0200 Subject: [PATCH 04/10] Rework LP-0018 region model, add adoption criteria, freeze region set. Introduce a country/subregion region model with a non-overlap invariant and Geofabrik-path keys, add parent/level to the registry schema, and thread the model through success criteria, scope, and the appendix. Add an Adoption section with independently verifiable coverage, redundant mirroring, freshness, and sustained-activity criteria plus a testnet-reset contingency. Freeze the decomposed-country leaf ids (US, China, Russia; India already fixed) so the closed set is reconstructable from the document, and add a 25 verified-entry floor alongside the 15-country bar so coverage cannot be met by tiny single subregions. Reference LP-0020 (OSM Map Viewer) as the complementary usage layer. Co-authored-by: Cursor --- prizes/LP-0018.md | 105 +++++++++++++++++++++++++++++++++++++++------- 1 file changed, 90 insertions(+), 15 deletions(-) diff --git a/prizes/LP-0018.md b/prizes/LP-0018.md index e48430ae..a0dbb0a9 100644 --- a/prizes/LP-0018.md +++ b/prizes/LP-0018.md @@ -11,6 +11,8 @@ dependencies: [] This prize funds an **OpenStreetMap (OSM) data distribution system** for the Logos ecosystem. Users can browse available map regions, host map data in Logos Storage, and download verified map files with checksum guarantees. +Geofabrik publishes regions as a tree: a country extract is the union of its subregions (for example the India country file contains all six India zones; the same bytes appear again in each zone file under a different CID and checksum). Regions in this system are therefore identified at a specific level (country or subregion) and the predefined set is **non-overlapping** (no region contains another) so the same geography is never hosted or counted twice. See [Appendix A.4](#a4-predefined-regions) for the region model and the closed set. + The deliverable has two required parts: a **Logos Basecamp app** (region discovery, host/download workflows, checksum verification, and bulk operations) and a standalone **OSM registry module/SDK** for programmatic interaction with the on-chain registry. **Requires:** @@ -31,16 +33,17 @@ This prize complements existing Logos sample apps (notably [LP-0017](LP-0017.md) ### Functionality -- [ ] **Region discovery**: fetch the Geofabrik index and display available regions with version info. +- [ ] **Region discovery**: fetch the Geofabrik index and display available regions with version info and their level in the region tree (country / subregion), restricted to the predefined set. - [ ] **Host workflow**: download PBF from Geofabrik → store to Logos Storage → register on-chain via the OSM registry LEZ program. - [ ] **Download workflow**: fetch from Logos Storage (if hosted) or Geofabrik (direct fallback). - [ ] **Checksum verification**: verify a downloaded file against Geofabrik's published MD5 checksum. -- [ ] **Bulk host**: allow selecting multiple regions to host at once, with opt-out per region. +- [ ] **Bulk host**: allow selecting multiple regions to host at once, with opt-out per region. Because the predefined set is a non-overlapping partition, bulk selection stays within that set; if a submission chooses to also expose non-partition regions, it must warn when a selection would host a region already contained in another selected or hosted region (parent/child overlap). - [ ] **Local import**: user provides a local PBF → verify checksum → store → register. -- [ ] **Update check**: compare central versions vs registry and notify the user of available updates. +- [ ] **Update check**: compare central versions vs registry and notify the user of available updates. Version comparison is per region entry (matched on the region path), so updating a country file and its subregions are tracked independently. - [ ] **On-chain registry**: an OSM registry LEZ program that: - - stores per-region entries with at minimum: `region`, `cid`, `source_url`, `checksum`, `version`, `hosted`, and `timestamp` (see [Appendix A.2](#a2-registry-schema-lez-program-account)), - - is queryable by region and by CID, + - stores per-region entries with at minimum: `region`, `parent`, `level`, `cid`, `source_url`, `checksum`, `version`, `hosted`, and `timestamp` (see [Appendix A.2](#a2-registry-schema-lez-program-account)), + - identifies each region by its Geofabrik path so that `region` is unique and its position in the tree (`parent`, `level`) is explicit, + - is queryable by region, by parent, and by CID, - supports registering multiple regions in a single batch transaction when bulk hosting. - [ ] **OSM registry module**: extract registry interaction logic into a self-contained module with a documented API, reusable by other Logos apps without depending on the Basecamp app itself. @@ -72,6 +75,36 @@ This prize complements existing Logos sample apps (notably [LP-0017](LP-0017.md) - [ ] A reproducible end-to-end demo script is provided and works against a real local sequencer with `RISC0_DEV_MODE=0`. - [ ] A recorded video demo of the end-to-end flow is included in the submission; the recording must show terminal output (including proof generation) to confirm `RISC0_DEV_MODE=0` was active. +## Adoption + +> These criteria measure traction attributable to a given submission for this prize: not that the system was built (that is FURPS, above), but that it is actually serving as a **decentralized distribution layer** with real, independently mirrored map data. +> +> The **Required** criteria below are all mandatory in addition to the FURPS criteria, and are written so that an evaluator can confirm each one directly from on-chain registry data and Geofabrik, without trusting the submitter. The **Discretionary signals** are considered in addition, per the evaluation policy that applies to all prizes (see [Terms & Conditions](../TERMS.md)); evaluators inspect account and commit histories, and volume that is clearly manufactured (fresh accounts, purchased engagement) does not count regardless of the headline number. + +**Required (independently verifiable):** + +- **Coverage.** At least **15 countries** from the predefined set (see [Appendix A.4](#a4-predefined-regions)) are covered on-chain and hosted in Logos Storage, and at least **25 total verified region entries** are covered across the set. A country counts as covered when it is a country-level entry that is registered, or a decomposed country (US, India, China, Russia) for which **at least one of its subregions** is registered. Each contributing entry must verify: the evaluator fetches the CID from Logos Storage, hashes the bytes, and confirms the hash matches Geofabrik's published MD5 for that snapshot. Entries whose stored bytes do not match Geofabrik do not count, and an unverified subregion does not make its country count. The 25-entry floor is above the 15-country minimum and forces some depth in the decomposed countries, so coverage cannot be met by decomposed countries each satisfied with a single small subregion. +- **Redundant mirroring.** Each **covered region entry** (a country-level region, or a registered subregion of a decomposed country) is registered by **at least 3 distinct accounts**, so no single operator is the sole source for any region. This is verifiable directly from registry entries. (The *count* of distinct accounts is objective; whether those accounts are genuinely independent operators is assessed under Discretionary signals below.) +- **Freshness.** At least **5** registered region entries have had their version advanced to a newer Geofabrik snapshot after initial registration, via the update-check flow. This is confirmable from on-chain version/timestamp history checked against Geofabrik, and demonstrates the mirrors are maintained rather than a one-time dump. +- **Sustained activity.** Registration and re-hosting activity is spread over **at least 2 months**, verifiable from on-chain timestamps. A single burst of registrations does not qualify, however large. + +**Discretionary signals (considered in addition, per Terms & Conditions):** + +- **Operator independence.** The accounts behind the mirror counts are genuinely independent hosts with real account history, not one team spinning up accounts to satisfy the redundancy bar. Evaluators inspect on-chain and account histories. +- **Ecosystem reuse.** At least a few independent applications or modules consume the OSM registry module/SDK to discover or fetch regions. Use of the SDK is confirmable by code inspection; whether the consuming projects are genuine and independent of the submitting team is discretionary. +- **Community vouching.** Testimonials from people who have actually hosted or used a region (for example, on Discord and on Twitter/X), with account histories inspected. + +**Testnet reset / chain data loss contingency:** + +This prize targets a live Logos testnet. Testnets may be reset, redeployed, or replaced by a newer version, and on-chain registry data (entries, versions, timestamps) may be lost in the process. The adoption criteria above are cumulative and time-windowed, so a reset can break them through no fault of the builder. If a testnet reset or data loss occurs during an active submission, the following applies: + +- **The prize continues.** A reset does not disqualify in-progress work or reset a builder's eligibility to submit. +- **All criteria are measured only on the current live chain.** Adoption is always evaluated against the testnet that is live at evaluation time. Data that existed only on a wiped chain does not count toward any criterion and will not be credited from off-chain records (explorer exports, screenshots, CI logs, or the builder's own claims): none of those are independently verifiable, which is the whole point of these criteria. A submission cannot qualify on the strength of a chain that no longer exists. +- **The adoption clock restarts at the reset.** The 2-month sustained-activity window is measured from the later of the builder's first registration on the current chain or the most recent testnet reset. A builder is never asked to show on-chain history spanning a reset, and equally cannot carry forward history from before one. In practice this means a reset restarts the sustained-activity window from zero on the new chain. +- **Re-hosting after a reset is expected.** Builders re-register and re-host coverage on the new chain. Because the underlying bytes are still verifiable against Geofabrik, re-establishing coverage is fast; but the sustained-activity and freshness windows genuinely begin again, since the on-chain evidence for them begins again. + +> **Note on usage/download metrics.** This prize deliberately does **not** set a download or retrieval count. Logos Storage is a peer-to-peer filesharing layer with no verifiable retrieval accounting, and its roadmap adds provider and downloader anonymity; a download count could only ever be a self-reported number that no third party can audit. Adoption is therefore measured by *verified, redundantly mirrored, maintained coverage* — what can be objectively confirmed — rather than by unverifiable retrieval figures. + ## Scope ### In Scope @@ -92,7 +125,7 @@ Geofabrik is the **canonical source of truth** for snapshot bytes and MD5 checks - Map rendering or tile server. - Real-time OSM synchronization (snapshots only). - Geocoding, routing, or navigation features. -- Custom regions outside the predefined list (see [Appendix A.4](#a4-predefined-regions)). +- Custom regions or arbitrary levels outside the predefined partition (see [Appendix A.4](#a4-predefined-regions)). - A hosted relay or backend service — registry, storage, and app logic run on the Logos stack; Geofabrik is used only as an external canonical snapshot source. ## Prize Structure @@ -154,6 +187,8 @@ The following policies apply to all prizes (see [evaluation policies](../README. This prize targets snapshot-based distribution from Geofabrik. A follow-up prize may cover incremental updates, additional region sources, or deeper integration once built-in Logos Storage and Blockchain modules ship in Basecamp. +[LP-0020: OSM Map Viewer](https://github.com/logos-co/lambda-prize/pull/82) is a complementary prize expected to land shortly after this one. It consumes the PBF snapshots distributed here (from Logos Storage and the on-chain LEZ registry) to provide offline map rendering, search, and POI discovery, turning the distributed data into an end-user experience. LP-0018 delivers verified, decentralized distribution of the map data; LP-0020 delivers usage of that data. The two are designed to fit together, with LP-0020 depending on the registry and storage layer built here. + --- ## Appendix: Technical Design and Requirements @@ -166,14 +201,14 @@ The items below mirror the main-body success criteria and scope. A submission mu **Functionality** -- [ ] Region discovery from Geofabrik JSON index with version info displayed per region. +- [ ] Region discovery from Geofabrik JSON index with version info and region level (country / subregion) displayed per region, restricted to the predefined set. - [ ] Host workflow: Geofabrik PBF download → Logos Storage upload → OSM registry LEZ program registration. - [ ] Download workflow: Logos Storage when hosted; Geofabrik direct when not. - [ ] MD5 checksum verification against Geofabrik-published checksums. - [ ] Bulk host with per-region opt-out. - [ ] Local PBF import with checksum verification before store and register. - [ ] Update check comparing Geofabrik central versions against on-chain registry entries. -- [ ] OSM registry LEZ program: stores schema fields from [A.2](#a2-registry-schema-lez-program-account); queryable by region and CID; supports batch registration. +- [ ] OSM registry LEZ program: stores schema fields from [A.2](#a2-registry-schema-lez-program-account) including `region` (Geofabrik path), `parent`, and `level`; queryable by region, parent, and CID; supports batch registration. - [ ] Standalone OSM registry module/SDK with documented API. **Usability** @@ -244,9 +279,11 @@ The items below mirror the main-body success criteria and scope. A submission mu ```json { - "region": "berlin", + "region": "us/california", + "parent": "us", + "level": "subregion", "cid": "Qm...", - "source_url": "https://download.geofabrik.de/europe/germany/berlin-latest.osm.pbf", + "source_url": "https://download.geofabrik.de/north-america/us/california-latest.osm.pbf", "checksum": "md5:6485e3b66007593f36574c2bbb51c24f", "version": "2026-05-27", "hosted": true, @@ -254,6 +291,13 @@ The items below mirror the main-body success criteria and scope. A submission mu } ``` +Field notes: + +- `region` is the region's Geofabrik path (for example `germany`, `germany/berlin`, `us/california`). It is the unique key for an entry and disambiguates a subregion from a same-named entity elsewhere in the tree. +- `parent` is the `region` path of the containing region, or `null`/empty for a top-level (continent-level country) entry. It lets the registry and evaluators reconstruct the tree and detect parent/child overlap. +- `level` is one of `country` (top-level national extract) or `subregion` (any Geofabrik subdivision of a country: zone, province, federal district, or state). Coverage and mirror counts are computed per entry; a country entry and a subregion entry that geographically overlap are distinct entries and must not both appear in the predefined set. +- `source_url`, `checksum`, and `version` are taken from Geofabrik for that exact region path, so verification stays a direct comparison against the canonical source at the same level. + ### A.3 Checksum verification flow 1. Registry entry contains: `source_url` + `checksum`. @@ -271,17 +315,48 @@ This blocks spoofing: an attacker cannot produce a file matching Geofabrik's pub ### A.4 Predefined regions -Closed set from Geofabrik (~55 regions): +#### A.4.1 Region model -**Europe:** Germany, France, UK, Italy, Spain, Poland, Netherlands, Belgium, Switzerland, Austria, Czech Republic, Sweden, Norway, Denmark, Finland, Portugal, Greece, Ireland, Hungary, Romania, Bulgaria, Ukraine, Belarus, Russia, Turkey +Geofabrik is a tree. Every extract exists at a level, and a parent extract is the byte-for-byte union of its children: -**North America:** USA, Canada, Mexico, California, Texas, New York, Florida, Ontario, Québec +- `country` — a national extract, e.g. `germany`, `india`, `us`. +- `subregion` — any Geofabrik subdivision of a country (zone, province, federal district, or US state), e.g. `india/southern-zone`, `china/guangdong`, `russia/volga-fed-district`, `us/california`. +- Some countries have no subregions in Geofabrik and exist only at `country` level, e.g. `bangladesh`, `kenya`, `nigeria`. -**Asia:** Japan, China, India, South Korea, Indonesia, Thailand, Vietnam, Malaysia, Philippines, Australia +Each region is identified by its **Geofabrik path** (the `region` field), carries its `parent` path and `level`, and resolves to one `source_url` (`https://download.geofabrik.de/-latest.osm.pbf`) with a matching `.md5` checksum. + +**Non-overlap invariant.** No region in the predefined set is an ancestor or descendant of another region in the set. In practice this means: if a country is represented by any of its subregions, its country file is not in the set, and vice versa. This guarantees each piece of geography is hosted and counted at most once, so coverage and mirror counts in the adoption criteria are well defined and a submission cannot inflate coverage by registering a country plus its children. + +Partial coverage of a decomposed country is allowed: representing the United States by a chosen subset of high-demand state extracts (and not `us`) is valid; the states outside the subset are simply out of scope, not double-counted. What is not allowed is holding both a region and something it contains. + +A country is listed as **decomposed** (represented by subregions) when its country file is large enough that a single extract is impractical to mirror; otherwise it is listed at country level. The choice is fixed per country below so the set stays non-overlapping. + +#### A.4.2 Closed set + +Countries represented **at country level** (`level: country`, `parent: null`): + +**Europe:** Germany, France, United Kingdom (`great-britain`), Italy, Spain, Poland, Netherlands, Belgium, Switzerland, Austria, Czech Republic, Sweden, Norway, Denmark, Finland, Portugal, Greece, Ireland, Hungary, Romania, Bulgaria, Ukraine, Belarus, Turkey + +**North America:** Canada, Mexico + +**Asia:** Japan, South Korea, Indonesia, Thailand, Vietnam, Malaysia, Philippines, Pakistan, Bangladesh, Iran + +**Oceania:** Australia **South America:** Brazil, Argentina, Colombia, Peru, Chile -**Africa:** South Africa, Egypt, Nigeria, Kenya, Morocco +**Africa:** South Africa, Egypt, Nigeria, Kenya, Morocco, Ethiopia + +Countries represented **by subregions** (decomposed; the country file itself is **not** in the set). These are the largest extracts, where subregion granularity is more mirror-friendly and closer to how users pull data: + +- **United States** (`us`) -> 8 state extracts: `us/california`, `us/texas`, `us/florida`, `us/new-york`, `us/washington`, `us/illinois`, `us/georgia`, `us/pennsylvania`. `us` as a whole is never in the set. +- **India** (`india`) -> its 6 zones: `india/central-zone`, `india/eastern-zone`, `india/north-eastern-zone`, `india/northern-zone`, `india/southern-zone`, `india/western-zone`. +- **China** (`china`) -> 6 province extracts: `china/guangdong`, `china/jiangsu`, `china/shandong`, `china/zhejiang`, `china/sichuan`, `china/henan`. +- **Russia** (`russia`) -> 4 federal-district extracts: `russia/central-fed-district`, `russia/northwestern-fed-district`, `russia/volga-fed-district`, `russia/siberian-fed-district`. + +These leaf ids are frozen: the closed set is exactly the entries listed above, so a third party can reconstruct it directly from this document. The registry stores each leaf as its own entry with `parent` set to the decomposed country (`us`, `india`, `china`, `russia`). Coverage counts hosted leaf entries, not the decomposed country as a single unit. If Geofabrik renames a leaf, this document is patched to match; the set does not drift with the index. + +> Rationale: the original flat list mixed `USA` with individual states (California / Texas / New York / Florida), double-counting those states' geography. Under the non-overlap rule the United States is represented by state extracts only, removing the overlap; the same rule decomposes India, China, and Russia, whose country files are too large to mirror as a single blob. ### A.5 Third-party app compatibility From 006e53271f389a5247b51758231c8c6e9825defe Mon Sep 17 00:00:00 2001 From: mart1n <20109376+mart1n-xyz@users.noreply.github.com> Date: Fri, 28 Aug 2026 11:29:14 +0200 Subject: [PATCH 05/10] Address PR review: CID integrity, first-class SDK, LP-0023-style adoption. Downloads now trust the content-addressed CID; Geofabrik MD5 is import-time only. Drop freshness and sustained-activity bars, promote ecosystem reuse of the SDK to a required criterion, and treat redundant mirroring as a discretionary signal. Elevate the OSM registry SDK to a primary deliverable, remove the technical appendix while keeping the frozen region list, drop the LP-0020 viewer-prize reference, set the prize to $1500, and omit the external-node implementation note. Co-authored-by: Cursor --- prizes/LP-0018.md | 233 ++++++++-------------------------------------- 1 file changed, 37 insertions(+), 196 deletions(-) diff --git a/prizes/LP-0018.md b/prizes/LP-0018.md index a0dbb0a9..7217445a 100644 --- a/prizes/LP-0018.md +++ b/prizes/LP-0018.md @@ -9,25 +9,23 @@ dependencies: [] ## Overview -This prize funds an **OpenStreetMap (OSM) data distribution system** for the Logos ecosystem. Users can browse available map regions, host map data in Logos Storage, and download verified map files with checksum guarantees. +This prize funds an **OpenStreetMap (OSM) data distribution system** for the Logos ecosystem. Users can browse available map regions, host map data in Logos Storage, and download map files whose integrity is guaranteed by content-addressing (CID), with import-time checksum verification against Geofabrik. -Geofabrik publishes regions as a tree: a country extract is the union of its subregions (for example the India country file contains all six India zones; the same bytes appear again in each zone file under a different CID and checksum). Regions in this system are therefore identified at a specific level (country or subregion) and the predefined set is **non-overlapping** (no region contains another) so the same geography is never hosted or counted twice. See [Appendix A.4](#a4-predefined-regions) for the region model and the closed set. +Geofabrik publishes regions as a tree: a country extract is the union of its subregions (for example the India country file contains all six India zones; the same bytes appear again in each zone file under a different CID and checksum). Regions in this system are therefore identified at a specific level (country or subregion) and the predefined set is **non-overlapping** (no region contains another) so the same geography is never hosted or counted twice. See [Predefined Regions](#predefined-regions-closed-set) for the closed set. -The deliverable has two required parts: a **Logos Basecamp app** (region discovery, host/download workflows, checksum verification, and bulk operations) and a standalone **OSM registry module/SDK** for programmatic interaction with the on-chain registry. +The deliverable has two required parts: a **Logos Basecamp app** (region discovery, host/download workflows, import-time checksum verification, and bulk operations) and a standalone, first-class **OSM registry SDK/module** for programmatic interaction with the on-chain registry. The SDK is not a by-product of the app: it is a primary deliverable with a stable, documented API, publishable and consumable on its own. There is deliberately **no follow-up λPrize for a map viewer or downstream consumer app** — those are expected to be built on top of, or integrated with, this SDK by ecosystem apps and integrated products, out of scope of this prize. The SDK is therefore the load-bearing integration surface the whole ecosystem builds on. **Requires:** - Logos Storage module (for storing PBF files) - LEZ (Logos Execution Zone) program for the on-chain OSM registry -Logos Storage may connect to an external Logos node until the built-in module is available. - -The **Success Criteria**, **Scope**, and **Submission Requirements** below are the authoritative checklist for evaluators. The same requirements are **restated in the [Appendix](#appendix-technical-design-and-requirements)** alongside architecture diagrams, registry schema, verification flow, and the predefined region list — use both sections together when building or reviewing a submission. +The **Success Criteria**, **Scope**, and **Submission Requirements** below are the authoritative checklist for evaluators. ## Motivation OpenStreetMap extracts are widely used for offline navigation, GIS tooling, and privacy-preserving map apps — but distribution today depends on central hosts such as Geofabrik. A Logos-native distribution layer lets communities mirror verified map snapshots in decentralized storage and register them on-chain, so users can discover and download authentic data without trusting a single operator. -This prize complements existing Logos sample apps (notably [LP-0017](LP-0017.md)) by demonstrating a full **fetch → store → register → verify → download** pipeline for large binary assets, with checksum guarantees anchored to Geofabrik as the canonical source. +This prize complements existing Logos sample apps (notably [LP-0017](LP-0017.md)) by demonstrating a full **fetch → store → register → verify → download** pipeline for large binary assets, with content-addressed integrity anchored to Geofabrik as the canonical source. Just as importantly, it ships the reusable SDK that lets other teams build viewers, routers, and integrated map products on top without a further prize. ## Success Criteria @@ -35,41 +33,39 @@ This prize complements existing Logos sample apps (notably [LP-0017](LP-0017.md) - [ ] **Region discovery**: fetch the Geofabrik index and display available regions with version info and their level in the region tree (country / subregion), restricted to the predefined set. - [ ] **Host workflow**: download PBF from Geofabrik → store to Logos Storage → register on-chain via the OSM registry LEZ program. -- [ ] **Download workflow**: fetch from Logos Storage (if hosted) or Geofabrik (direct fallback). -- [ ] **Checksum verification**: verify a downloaded file against Geofabrik's published MD5 checksum. +- [ ] **Download workflow**: fetch from Logos Storage (if hosted) or Geofabrik (direct fallback). Integrity is guaranteed by the content-addressed CID; no round-trip to Geofabrik is required to trust a downloaded file. - [ ] **Bulk host**: allow selecting multiple regions to host at once, with opt-out per region. Because the predefined set is a non-overlapping partition, bulk selection stays within that set; if a submission chooses to also expose non-partition regions, it must warn when a selection would host a region already contained in another selected or hosted region (parent/child overlap). -- [ ] **Local import**: user provides a local PBF → verify checksum → store → register. +- [ ] **Local import**: user provides a local PBF → verify against Geofabrik's published MD5 (import-time only) → store → register by CID. - [ ] **Update check**: compare central versions vs registry and notify the user of available updates. Version comparison is per region entry (matched on the region path), so updating a country file and its subregions are tracked independently. - [ ] **On-chain registry**: an OSM registry LEZ program that: - - stores per-region entries with at minimum: `region`, `parent`, `level`, `cid`, `source_url`, `checksum`, `version`, `hosted`, and `timestamp` (see [Appendix A.2](#a2-registry-schema-lez-program-account)), + - stores per-region entries with at minimum: `region`, `parent`, `level`, `cid`, `source_url`, `checksum`, `version`, `hosted`, and `timestamp`, - identifies each region by its Geofabrik path so that `region` is unique and its position in the tree (`parent`, `level`) is explicit, - is queryable by region, by parent, and by CID, - supports registering multiple regions in a single batch transaction when bulk hosting. -- [ ] **OSM registry module**: extract registry interaction logic into a self-contained module with a documented API, reusable by other Logos apps without depending on the Basecamp app itself. +- [ ] **OSM registry SDK (primary deliverable)**: a self-contained SDK/module exposing the full registry surface — discover regions, resolve a region to its CID/metadata, host (store + register), batch-register, query by region/parent/CID, and check for updates — with a stable, documented API and a minimal standalone embedding example. It must be usable by a third-party app that does **not** depend on the Basecamp app itself. Because there is no follow-up viewer prize, this SDK is what downstream viewers and integrated products consume. ### Usability - [ ] Provide a Logos Basecamp app GUI with local build instructions, downloadable assets, and loadable in Logos app (Basecamp). -- [ ] Provide a module/SDK that can be used to build Logos modules for interacting with the OSM registry. +- [ ] Provide an SDK/module that can be used to build Logos modules **and third-party applications** for interacting with the OSM registry, with published API documentation and a minimal embedding example that runs without the Basecamp app. - [ ] Provide an IDL for the OSM registry LEZ program, using the [SPEL framework](https://github.com/logos-co/spel). - [ ] Clear UX: show hosted/not-hosted status, version numbers, and verification results. ### Reliability - [ ] Storage upload retries on transient failures with exponential back-off and surfaces a clear error after exhausting retries. -- [ ] Checksum verification fails gracefully with clear error messages. +- [ ] Import-time checksum verification fails gracefully with clear error messages. - [ ] Registry entries are ordered by timestamp for version sorting. ### Performance -- [ ] Document a sample file size (e.g., Berlin ~93 MB) and measured download/verify times. -- [ ] Document time to verify checksum (fetching `.md5` file only, not full download). +- [ ] Document a sample file size (e.g., Berlin ~93 MB) and measured download times. - [ ] Document and measure the compute unit (CU) cost of a single-region registration and a multi-region batch registration on LEZ devnet/testnet. Note: LEZ's per-transaction compute budget may change during testnet. ### Supportability - [ ] The OSM registry LEZ program is deployed and tested on LEZ devnet/testnet. -- [ ] End-to-end integration tests covering host → verify → query → download run against a LEZ sequencer in standalone mode and are included in CI. +- [ ] End-to-end integration tests covering host (fetch → store → register) → query → download run against a LEZ sequencer in standalone mode and are included in CI. - [ ] CI is green on the default branch. - [ ] A README covers: build steps, program addresses, running the Basecamp app, querying the registry, region list, and troubleshooting. - [ ] A reproducible end-to-end demo script is provided and works against a real local sequencer with `RISC0_DEV_MODE=0`. @@ -77,33 +73,30 @@ This prize complements existing Logos sample apps (notably [LP-0017](LP-0017.md) ## Adoption -> These criteria measure traction attributable to a given submission for this prize: not that the system was built (that is FURPS, above), but that it is actually serving as a **decentralized distribution layer** with real, independently mirrored map data. +> These criteria measure traction attributable to a given submission for this prize: not that the system was built (that is FURPS, above), but that it is actually serving as a **decentralized distribution layer** — real map data verifiably hosted on-chain, and a registry SDK that other teams actually build on. > -> The **Required** criteria below are all mandatory in addition to the FURPS criteria, and are written so that an evaluator can confirm each one directly from on-chain registry data and Geofabrik, without trusting the submitter. The **Discretionary signals** are considered in addition, per the evaluation policy that applies to all prizes (see [Terms & Conditions](../TERMS.md)); evaluators inspect account and commit histories, and volume that is clearly manufactured (fresh accounts, purchased engagement) does not count regardless of the headline number. +> The **Required** criteria below are all mandatory in addition to the FURPS criteria, and are written so that an evaluator can confirm each one without trusting the submitter: Coverage from on-chain registry data checked against Geofabrik, and Ecosystem reuse from public forge repositories and code inspection. The **Discretionary signals** are considered in addition, per the evaluation policy that applies to all prizes (see [Terms & Conditions](../TERMS.md)); evaluators inspect account and commit histories, and volume that is clearly manufactured (fresh accounts, purchased engagement) does not count regardless of the headline number. -**Required (independently verifiable):** +**Required:** -- **Coverage.** At least **15 countries** from the predefined set (see [Appendix A.4](#a4-predefined-regions)) are covered on-chain and hosted in Logos Storage, and at least **25 total verified region entries** are covered across the set. A country counts as covered when it is a country-level entry that is registered, or a decomposed country (US, India, China, Russia) for which **at least one of its subregions** is registered. Each contributing entry must verify: the evaluator fetches the CID from Logos Storage, hashes the bytes, and confirms the hash matches Geofabrik's published MD5 for that snapshot. Entries whose stored bytes do not match Geofabrik do not count, and an unverified subregion does not make its country count. The 25-entry floor is above the 15-country minimum and forces some depth in the decomposed countries, so coverage cannot be met by decomposed countries each satisfied with a single small subregion. -- **Redundant mirroring.** Each **covered region entry** (a country-level region, or a registered subregion of a decomposed country) is registered by **at least 3 distinct accounts**, so no single operator is the sole source for any region. This is verifiable directly from registry entries. (The *count* of distinct accounts is objective; whether those accounts are genuinely independent operators is assessed under Discretionary signals below.) -- **Freshness.** At least **5** registered region entries have had their version advanced to a newer Geofabrik snapshot after initial registration, via the update-check flow. This is confirmable from on-chain version/timestamp history checked against Geofabrik, and demonstrates the mirrors are maintained rather than a one-time dump. -- **Sustained activity.** Registration and re-hosting activity is spread over **at least 2 months**, verifiable from on-chain timestamps. A single burst of registrations does not qualify, however large. +- **Coverage.** At least **15 countries** from the predefined set (see the region list) are covered on-chain and hosted in Logos Storage, and at least **25 total verified region entries** are covered across the set. A country counts as covered when it is a country-level entry that is registered, or a decomposed country (US, India, China, Russia) for which **at least one of its subregions** is registered. Each contributing entry must verify: the evaluator fetches the CID from Logos Storage, hashes the bytes, and confirms the hash matches Geofabrik's published MD5 for that snapshot. Entries whose stored bytes do not match Geofabrik do not count, and an unverified subregion does not make its country count. The 25-entry floor is above the 15-country minimum and forces some depth in the decomposed countries, so coverage cannot be met by decomposed countries each satisfied with a single small subregion. +- **Ecosystem reuse via the SDK.** At least **5 modules total, including at least 3 Logos Basecamp apps (UI modules)**, consume the OSM registry SDK/module to discover or fetch regions. Each must be publicly hosted on a mainstream forge (GitHub, GitLab, Codeberg, etc.) with a clear, genuine commit history: development spread over time by a real contributor, not a single bulk import. The 5 must be independent of each other and of the submitting team; the owning developer or organisation's history on the forge will be inspected, and fresh accounts, among other red flags, will not count. Use of the SDK is confirmable by code inspection. This criterion is the primary evidence that the SDK is a real, reusable integration surface — which matters because no follow-up viewer prize will exist to prove it. (Approach mirrors the LEZ Program Registry prize, LP-0023.) **Discretionary signals (considered in addition, per Terms & Conditions):** -- **Operator independence.** The accounts behind the mirror counts are genuinely independent hosts with real account history, not one team spinning up accounts to satisfy the redundancy bar. Evaluators inspect on-chain and account histories. -- **Ecosystem reuse.** At least a few independent applications or modules consume the OSM registry module/SDK to discover or fetch regions. Use of the SDK is confirmable by code inspection; whether the consuming projects are genuine and independent of the submitting team is discretionary. +- **Operator independence.** The accounts behind the coverage are genuinely independent hosts with real account history, not one team spinning up accounts to pad the numbers. Evaluators inspect on-chain and account histories. +- **Redundant mirroring.** Covered region entries mirrored by more than one independent operator, so no single operator is the sole source for a region. Assessed qualitatively from registry entries and account histories rather than as an objective account count (raw counts are cheap to forge with randomly-generated Logos accounts). - **Community vouching.** Testimonials from people who have actually hosted or used a region (for example, on Discord and on Twitter/X), with account histories inspected. **Testnet reset / chain data loss contingency:** -This prize targets a live Logos testnet. Testnets may be reset, redeployed, or replaced by a newer version, and on-chain registry data (entries, versions, timestamps) may be lost in the process. The adoption criteria above are cumulative and time-windowed, so a reset can break them through no fault of the builder. If a testnet reset or data loss occurs during an active submission, the following applies: +This prize targets a live Logos testnet. Testnets may be reset, redeployed, or replaced by a newer version, and on-chain registry data (entries, versions, timestamps) may be lost in the process. The coverage criterion is cumulative, so a reset can break it through no fault of the builder. If a testnet reset or data loss occurs during an active submission, the following applies: - **The prize continues.** A reset does not disqualify in-progress work or reset a builder's eligibility to submit. - **All criteria are measured only on the current live chain.** Adoption is always evaluated against the testnet that is live at evaluation time. Data that existed only on a wiped chain does not count toward any criterion and will not be credited from off-chain records (explorer exports, screenshots, CI logs, or the builder's own claims): none of those are independently verifiable, which is the whole point of these criteria. A submission cannot qualify on the strength of a chain that no longer exists. -- **The adoption clock restarts at the reset.** The 2-month sustained-activity window is measured from the later of the builder's first registration on the current chain or the most recent testnet reset. A builder is never asked to show on-chain history spanning a reset, and equally cannot carry forward history from before one. In practice this means a reset restarts the sustained-activity window from zero on the new chain. -- **Re-hosting after a reset is expected.** Builders re-register and re-host coverage on the new chain. Because the underlying bytes are still verifiable against Geofabrik, re-establishing coverage is fast; but the sustained-activity and freshness windows genuinely begin again, since the on-chain evidence for them begins again. +- **Re-hosting after a reset is expected.** Builders re-register and re-host coverage on the new chain. Because the underlying bytes are still verifiable against Geofabrik, re-establishing coverage is fast. -> **Note on usage/download metrics.** This prize deliberately does **not** set a download or retrieval count. Logos Storage is a peer-to-peer filesharing layer with no verifiable retrieval accounting, and its roadmap adds provider and downloader anonymity; a download count could only ever be a self-reported number that no third party can audit. Adoption is therefore measured by *verified, redundantly mirrored, maintained coverage* — what can be objectively confirmed — rather than by unverifiable retrieval figures. +> **Note on usage/download metrics.** This prize deliberately does **not** set a download or retrieval count. Logos Storage is a peer-to-peer filesharing layer with no verifiable retrieval accounting, and its roadmap adds provider and downloader anonymity; a download count could only ever be a self-reported number that no third party can audit. Adoption is therefore measured by *verified on-chain coverage* and *genuine ecosystem reuse of the SDK* — what can be objectively confirmed — rather than by unverifiable retrieval figures. ## Scope @@ -112,29 +105,27 @@ This prize targets a live Logos testnet. Testnets may be reset, redeployed, or r - Region discovery from Geofabrik index. - Host workflow (fetch + store + register). - Download from Logos Storage or Geofabrik central source. -- Verification against Geofabrik checksums. +- Import-time verification against Geofabrik checksums. - On-chain OSM registry LEZ program. - Basecamp UI with bulk host/download. -- OSM registry module extracted from the app, with documented API. +- OSM registry SDK/module (first-class deliverable) with documented API and a standalone embedding example. - Integration tests and CI. Geofabrik is the **canonical source of truth** for snapshot bytes and MD5 checksums. Hosted copies in Logos Storage are verified against Geofabrik; Geofabrik is not a runtime backend for the app beyond index lookup, checksum fetch, and direct-download fallback. ### Out of Scope -- Map rendering or tile server. -- Real-time OSM synchronization (snapshots only). +- Map rendering, tile server, or any end-user viewer. A viewer and other downstream consumer apps are expected to be built **on top of the SDK** by ecosystem apps and integrated products, out of scope of this prize — there is no separate λPrize for them. - Geocoding, routing, or navigation features. -- Custom regions or arbitrary levels outside the predefined partition (see [Appendix A.4](#a4-predefined-regions)). +- Real-time OSM synchronization (snapshots only). +- Custom regions or arbitrary levels outside the predefined partition (see the region list). - A hosted relay or backend service — registry, storage, and app logic run on the Logos stack; Geofabrik is used only as an external canonical snapshot source. ## Prize Structure -- **Total Prize:** $X +- **Total Prize:** $1500 - **Effort:** Medium -> Leave prize pool blank — this will be determined by the Logos team. - ## Eligibility Open to any individual or team. Submissions must be original work. Teams must hold the rights to all submitted code and agree to license it under MIT or Apache-2.0. @@ -143,18 +134,19 @@ Open to any individual or team. Submissions must be original work. Teams must ho - Public repository (MIT or Apache-2.0) containing: - the OSM Basecamp app, - - the OSM registry module with API documentation, - the OSM registry LEZ program, + - the OSM registry SDK/module (first-class deliverable) with API documentation and a standalone embedding example, - integration tests runnable in CI. - Deployed OSM registry LEZ program on LEZ devnet/testnet with documented program address. - README with: build steps, region list, workflow, and troubleshooting. - A narrated video walkthrough in which the builder explains what they built and why, walks through the architecture and key implementation decisions, and demonstrates (see [demo requirements](../README.md#evaluation-policies)): - end-to-end setup and deployment (or local environment configuration), - hosting a region (fetch from Geofabrik → store → register), - - verifying checksum from the app, - - downloading and verifying a hosted region, + - importing a local PBF with import-time checksum verification, + - downloading a hosted region by CID (content-addressed integrity), + - a third-party module/app consuming the SDK without the Basecamp app, - integration with the Logos stack (Logos Storage and on-chain registry), - - error handling for checksum mismatch and transient storage failures. + - error handling for a bad import and transient storage failures. A silent screencast without explanation is not sufficient. - Compute unit benchmarks for single and batch registry operations. - GitHub issues filed for any problems encountered with Logos technology. @@ -187,151 +179,11 @@ The following policies apply to all prizes (see [evaluation policies](../README. This prize targets snapshot-based distribution from Geofabrik. A follow-up prize may cover incremental updates, additional region sources, or deeper integration once built-in Logos Storage and Blockchain modules ship in Basecamp. -[LP-0020: OSM Map Viewer](https://github.com/logos-co/lambda-prize/pull/82) is a complementary prize expected to land shortly after this one. It consumes the PBF snapshots distributed here (from Logos Storage and the on-chain LEZ registry) to provide offline map rendering, search, and POI discovery, turning the distributed data into an end-user experience. LP-0018 delivers verified, decentralized distribution of the map data; LP-0020 delivers usage of that data. The two are designed to fit together, with LP-0020 depending on the registry and storage layer built here. - ---- - -## Appendix: Technical Design and Requirements - -This appendix **restates the prize requirements** from the sections above in technical context. Evaluators and builders should treat the **Success Criteria**, **Scope**, and **Submission Requirements** in the main body and the checklist below as a single combined specification — the appendix adds architecture, schemas, and implementation detail; it does not relax or replace any main-body requirement. - -### A.0 Requirements checklist - -The items below mirror the main-body success criteria and scope. A submission must satisfy **both** this checklist and the corresponding sections above. - -**Functionality** - -- [ ] Region discovery from Geofabrik JSON index with version info and region level (country / subregion) displayed per region, restricted to the predefined set. -- [ ] Host workflow: Geofabrik PBF download → Logos Storage upload → OSM registry LEZ program registration. -- [ ] Download workflow: Logos Storage when hosted; Geofabrik direct when not. -- [ ] MD5 checksum verification against Geofabrik-published checksums. -- [ ] Bulk host with per-region opt-out. -- [ ] Local PBF import with checksum verification before store and register. -- [ ] Update check comparing Geofabrik central versions against on-chain registry entries. -- [ ] OSM registry LEZ program: stores schema fields from [A.2](#a2-registry-schema-lez-program-account) including `region` (Geofabrik path), `parent`, and `level`; queryable by region, parent, and CID; supports batch registration. -- [ ] Standalone OSM registry module/SDK with documented API. - -**Usability** - -- [ ] Logos Basecamp app with build instructions and loadable assets. -- [ ] Module/SDK for building Logos modules that interact with the OSM registry. -- [ ] IDL for OSM registry LEZ program (SPEL). -- [ ] UI shows hosted/not-hosted status, versions, and verification outcomes. - -**Reliability** - -- [ ] Storage upload retries with exponential back-off; clear errors on failure. -- [ ] Checksum mismatch reported clearly; file rejected. -- [ ] Registry entries sortable by timestamp for version ordering. - -**Performance** - -- [ ] Documented sample size and measured download/verify times (e.g., Berlin ~93 MB). -- [ ] Documented checksum-only verification time (`.md5` fetch, no full PBF download). -- [ ] CU benchmarks for single and batch registry operations on LEZ devnet/testnet. - -**Supportability** - -- [ ] OSM registry LEZ program deployed and tested on LEZ devnet/testnet. -- [ ] CI green; integration tests cover host → verify → query → download against a LEZ sequencer in standalone mode. -- [ ] README with program addresses, app usage, registry queries, region list, troubleshooting. -- [ ] Reproducible demo script against a local LEZ sequencer with `RISC0_DEV_MODE=0`. -- [ ] Narrated video demo with terminal output including proof generation (`RISC0_DEV_MODE=0`). - -**Submission (technical)** - -- [ ] Public MIT/Apache-2.0 repo with app, OSM registry LEZ program, module, and CI tests. -- [ ] FURPS self-assessment; GitHub issues for Logos technology problems filed where applicable. - -**In scope (technical)** - -- Geofabrik index integration; PBF storage in Logos Storage; OSM registry LEZ program; Basecamp UI for bulk host/download; extracted registry module; Geofabrik as canonical checksum source only. +Note that consumer-facing products built on this data — an offline map viewer, search/POI discovery, routing, or integrated map products — are **deliberately not funded as separate λPrizes**. This prize ships a first-class SDK precisely so those products can be built on top of, or integrated with, it by ecosystem apps and integrated products, out of scope of the prize. -**Out of scope (technical)** +### Predefined Regions (closed set) -- Tile servers, map rendering, live OSM sync, geocoding/routing/navigation, custom regions outside [A.4](#a4-predefined-regions), hosted relay/backend beyond Logos stack + Geofabrik canonical source. - -### A.1 Architecture - -``` - Geofabrik (central source) - │ - ┌───────────────┼───────────────┐ - │ │ │ - PBF file .md5 checksum JSON index - │ │ │ - ▼ ▼ ▼ - ┌─────────────────────────────────────────┐ - │ User (Basecamp app) │ - │ - Host: fetch → store → register │ - │ - Verify: fetch .md5 → compare hash │ - │ - Download: from Storage or central │ - └─────────────────────────────────────────┘ - │ - ┌────────────────┼────────────────┐ - │ │ │ - ▼ ▼ ▼ - Logos Storage OSM registry Geofabrik - (PBF by CID) LEZ program Index API -``` - -### A.2 Registry schema (LEZ program account) - -```json -{ - "region": "us/california", - "parent": "us", - "level": "subregion", - "cid": "Qm...", - "source_url": "https://download.geofabrik.de/north-america/us/california-latest.osm.pbf", - "checksum": "md5:6485e3b66007593f36574c2bbb51c24f", - "version": "2026-05-27", - "hosted": true, - "timestamp": "2026-05-28T12:00:00Z" -} -``` - -Field notes: - -- `region` is the region's Geofabrik path (for example `germany`, `germany/berlin`, `us/california`). It is the unique key for an entry and disambiguates a subregion from a same-named entity elsewhere in the tree. -- `parent` is the `region` path of the containing region, or `null`/empty for a top-level (continent-level country) entry. It lets the registry and evaluators reconstruct the tree and detect parent/child overlap. -- `level` is one of `country` (top-level national extract) or `subregion` (any Geofabrik subdivision of a country: zone, province, federal district, or state). Coverage and mirror counts are computed per entry; a country entry and a subregion entry that geographically overlap are distinct entries and must not both appear in the predefined set. -- `source_url`, `checksum`, and `version` are taken from Geofabrik for that exact region path, so verification stays a direct comparison against the canonical source at the same level. - -### A.3 Checksum verification flow - -1. Registry entry contains: `source_url` + `checksum`. -2. User downloads file (from Logos Storage or Geofabrik). -3. Compute hash of downloaded file. -4. Fetch `.md5` from Geofabrik. -5. Compare: - -``` -✅ MATCH → file is authentic (matches Geofabrik) -❌ MISMATCH → file rejected (spoofed or corrupted) -``` - -This blocks spoofing: an attacker cannot produce a file matching Geofabrik's published checksum without control of Geofabrik's servers. - -### A.4 Predefined regions - -#### A.4.1 Region model - -Geofabrik is a tree. Every extract exists at a level, and a parent extract is the byte-for-byte union of its children: - -- `country` — a national extract, e.g. `germany`, `india`, `us`. -- `subregion` — any Geofabrik subdivision of a country (zone, province, federal district, or US state), e.g. `india/southern-zone`, `china/guangdong`, `russia/volga-fed-district`, `us/california`. -- Some countries have no subregions in Geofabrik and exist only at `country` level, e.g. `bangladesh`, `kenya`, `nigeria`. - -Each region is identified by its **Geofabrik path** (the `region` field), carries its `parent` path and `level`, and resolves to one `source_url` (`https://download.geofabrik.de/-latest.osm.pbf`) with a matching `.md5` checksum. - -**Non-overlap invariant.** No region in the predefined set is an ancestor or descendant of another region in the set. In practice this means: if a country is represented by any of its subregions, its country file is not in the set, and vice versa. This guarantees each piece of geography is hosted and counted at most once, so coverage and mirror counts in the adoption criteria are well defined and a submission cannot inflate coverage by registering a country plus its children. - -Partial coverage of a decomposed country is allowed: representing the United States by a chosen subset of high-demand state extracts (and not `us`) is valid; the states outside the subset are simply out of scope, not double-counted. What is not allowed is holding both a region and something it contains. - -A country is listed as **decomposed** (represented by subregions) when its country file is large enough that a single extract is impractical to mirror; otherwise it is listed at country level. The choice is fixed per country below so the set stays non-overlapping. - -#### A.4.2 Closed set +> The coverage criterion is measured against this closed, non-overlapping set. No region here is an ancestor or descendant of another, so each piece of geography is hosted and counted at most once. Full technical design (architecture, registry schema, verification flow) is left to the challenger. Countries represented **at country level** (`level: country`, `parent: null`): @@ -356,14 +208,3 @@ Countries represented **by subregions** (decomposed; the country file itself is These leaf ids are frozen: the closed set is exactly the entries listed above, so a third party can reconstruct it directly from this document. The registry stores each leaf as its own entry with `parent` set to the decomposed country (`us`, `india`, `china`, `russia`). Coverage counts hosted leaf entries, not the decomposed country as a single unit. If Geofabrik renames a leaf, this document is patched to match; the set does not drift with the index. -> Rationale: the original flat list mixed `USA` with individual states (California / Texas / New York / Florida), double-counting those states' geography. Under the non-overlap rule the United States is represented by state extracts only, removing the overlap; the same rule decomposes India, China, and Russia, whose country files are too large to mirror as a single blob. - -### A.5 Third-party app compatibility - -PBF files produced by this system are identical to Geofabrik downloads. Compatible apps include: - -- **OsmAnd**: import via OsmAndMapCreator (PBF → OBF). -- **Organic Maps**: import via built-in tools (PBF → `.mwm`). -- **Others**: most GIS tools accept PBF directly. - -The Basecamp app serves as a download manager; map rendering and navigation happen in third-party apps. From f23a485c01c968197457146083eeb37939bc83b2 Mon Sep 17 00:00:00 2001 From: mart1n <20109376+mart1n-xyz@users.noreply.github.com> Date: Fri, 28 Aug 2026 11:33:14 +0200 Subject: [PATCH 06/10] Plain down SDK wording: drop load-bearing and similar phrasing. Co-authored-by: Cursor --- prizes/LP-0018.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/prizes/LP-0018.md b/prizes/LP-0018.md index 7217445a..4807f9d9 100644 --- a/prizes/LP-0018.md +++ b/prizes/LP-0018.md @@ -13,7 +13,7 @@ This prize funds an **OpenStreetMap (OSM) data distribution system** for the Log Geofabrik publishes regions as a tree: a country extract is the union of its subregions (for example the India country file contains all six India zones; the same bytes appear again in each zone file under a different CID and checksum). Regions in this system are therefore identified at a specific level (country or subregion) and the predefined set is **non-overlapping** (no region contains another) so the same geography is never hosted or counted twice. See [Predefined Regions](#predefined-regions-closed-set) for the closed set. -The deliverable has two required parts: a **Logos Basecamp app** (region discovery, host/download workflows, import-time checksum verification, and bulk operations) and a standalone, first-class **OSM registry SDK/module** for programmatic interaction with the on-chain registry. The SDK is not a by-product of the app: it is a primary deliverable with a stable, documented API, publishable and consumable on its own. There is deliberately **no follow-up λPrize for a map viewer or downstream consumer app** — those are expected to be built on top of, or integrated with, this SDK by ecosystem apps and integrated products, out of scope of this prize. The SDK is therefore the load-bearing integration surface the whole ecosystem builds on. +The deliverable has two required parts: a **Logos Basecamp app** (region discovery, host/download workflows, import-time checksum verification, and bulk operations) and a standalone **OSM registry SDK/module** for programmatic interaction with the on-chain registry. The SDK is a required deliverable with a stable, documented API, usable independently of the Basecamp app. There is **no follow-up λPrize for a map viewer or downstream consumer app**. Those are expected to be built on top of this SDK by other apps, out of scope of this prize. **Requires:** - Logos Storage module (for storing PBF files) @@ -25,7 +25,7 @@ The **Success Criteria**, **Scope**, and **Submission Requirements** below are t OpenStreetMap extracts are widely used for offline navigation, GIS tooling, and privacy-preserving map apps — but distribution today depends on central hosts such as Geofabrik. A Logos-native distribution layer lets communities mirror verified map snapshots in decentralized storage and register them on-chain, so users can discover and download authentic data without trusting a single operator. -This prize complements existing Logos sample apps (notably [LP-0017](LP-0017.md)) by demonstrating a full **fetch → store → register → verify → download** pipeline for large binary assets, with content-addressed integrity anchored to Geofabrik as the canonical source. Just as importantly, it ships the reusable SDK that lets other teams build viewers, routers, and integrated map products on top without a further prize. +This prize complements existing Logos sample apps (notably [LP-0017](LP-0017.md)) by demonstrating a full **fetch → store → register → verify → download** pipeline for large binary assets, with content-addressed integrity anchored to Geofabrik as the canonical source. It also ships a reusable SDK so other teams can build viewers, routers, and map products on top without a further prize. ## Success Criteria @@ -42,7 +42,7 @@ This prize complements existing Logos sample apps (notably [LP-0017](LP-0017.md) - identifies each region by its Geofabrik path so that `region` is unique and its position in the tree (`parent`, `level`) is explicit, - is queryable by region, by parent, and by CID, - supports registering multiple regions in a single batch transaction when bulk hosting. -- [ ] **OSM registry SDK (primary deliverable)**: a self-contained SDK/module exposing the full registry surface — discover regions, resolve a region to its CID/metadata, host (store + register), batch-register, query by region/parent/CID, and check for updates — with a stable, documented API and a minimal standalone embedding example. It must be usable by a third-party app that does **not** depend on the Basecamp app itself. Because there is no follow-up viewer prize, this SDK is what downstream viewers and integrated products consume. +- [ ] **OSM registry SDK (required)**: a self-contained SDK/module covering the registry API — discover regions, resolve a region to its CID/metadata, host (store + register), batch-register, query by region/parent/CID, and check for updates — with a stable, documented API and a minimal standalone embedding example. It must be usable by a third-party app that does **not** depend on the Basecamp app itself. Downstream viewers and map products use this SDK; there is no follow-up viewer prize. ### Usability @@ -80,7 +80,7 @@ This prize complements existing Logos sample apps (notably [LP-0017](LP-0017.md) **Required:** - **Coverage.** At least **15 countries** from the predefined set (see the region list) are covered on-chain and hosted in Logos Storage, and at least **25 total verified region entries** are covered across the set. A country counts as covered when it is a country-level entry that is registered, or a decomposed country (US, India, China, Russia) for which **at least one of its subregions** is registered. Each contributing entry must verify: the evaluator fetches the CID from Logos Storage, hashes the bytes, and confirms the hash matches Geofabrik's published MD5 for that snapshot. Entries whose stored bytes do not match Geofabrik do not count, and an unverified subregion does not make its country count. The 25-entry floor is above the 15-country minimum and forces some depth in the decomposed countries, so coverage cannot be met by decomposed countries each satisfied with a single small subregion. -- **Ecosystem reuse via the SDK.** At least **5 modules total, including at least 3 Logos Basecamp apps (UI modules)**, consume the OSM registry SDK/module to discover or fetch regions. Each must be publicly hosted on a mainstream forge (GitHub, GitLab, Codeberg, etc.) with a clear, genuine commit history: development spread over time by a real contributor, not a single bulk import. The 5 must be independent of each other and of the submitting team; the owning developer or organisation's history on the forge will be inspected, and fresh accounts, among other red flags, will not count. Use of the SDK is confirmable by code inspection. This criterion is the primary evidence that the SDK is a real, reusable integration surface — which matters because no follow-up viewer prize will exist to prove it. (Approach mirrors the LEZ Program Registry prize, LP-0023.) +- **Ecosystem reuse via the SDK.** At least **5 modules total, including at least 3 Logos Basecamp apps (UI modules)**, consume the OSM registry SDK/module to discover or fetch regions. Each must be publicly hosted on a mainstream forge (GitHub, GitLab, Codeberg, etc.) with a clear, genuine commit history: development spread over time by a real contributor, not a single bulk import. The 5 must be independent of each other and of the submitting team; the owning developer or organisation's history on the forge will be inspected, and fresh accounts, among other red flags, will not count. Use of the SDK is confirmable by code inspection. There is no follow-up viewer prize, so this is how independent use of the SDK is shown. (Approach mirrors the LEZ Program Registry prize, LP-0023.) **Discretionary signals (considered in addition, per Terms & Conditions):** @@ -108,7 +108,7 @@ This prize targets a live Logos testnet. Testnets may be reset, redeployed, or r - Import-time verification against Geofabrik checksums. - On-chain OSM registry LEZ program. - Basecamp UI with bulk host/download. -- OSM registry SDK/module (first-class deliverable) with documented API and a standalone embedding example. +- OSM registry SDK/module (required) with documented API and a standalone embedding example. - Integration tests and CI. Geofabrik is the **canonical source of truth** for snapshot bytes and MD5 checksums. Hosted copies in Logos Storage are verified against Geofabrik; Geofabrik is not a runtime backend for the app beyond index lookup, checksum fetch, and direct-download fallback. @@ -135,7 +135,7 @@ Open to any individual or team. Submissions must be original work. Teams must ho - Public repository (MIT or Apache-2.0) containing: - the OSM Basecamp app, - the OSM registry LEZ program, - - the OSM registry SDK/module (first-class deliverable) with API documentation and a standalone embedding example, + - the OSM registry SDK/module (required) with API documentation and a standalone embedding example, - integration tests runnable in CI. - Deployed OSM registry LEZ program on LEZ devnet/testnet with documented program address. - README with: build steps, region list, workflow, and troubleshooting. @@ -179,7 +179,7 @@ The following policies apply to all prizes (see [evaluation policies](../README. This prize targets snapshot-based distribution from Geofabrik. A follow-up prize may cover incremental updates, additional region sources, or deeper integration once built-in Logos Storage and Blockchain modules ship in Basecamp. -Note that consumer-facing products built on this data — an offline map viewer, search/POI discovery, routing, or integrated map products — are **deliberately not funded as separate λPrizes**. This prize ships a first-class SDK precisely so those products can be built on top of, or integrated with, it by ecosystem apps and integrated products, out of scope of the prize. +Note that consumer-facing products built on this data — an offline map viewer, search/POI discovery, routing, or integrated map products — are **not funded as separate λPrizes**. This prize includes an SDK so those products can be built on top of it, out of scope of the prize. ### Predefined Regions (closed set) From 6037d3c8e141c67b3f89d257a4c05d1dcce6ac3e Mon Sep 17 00:00:00 2001 From: mart1n <20109376+mart1n-xyz@users.noreply.github.com> Date: Fri, 28 Aug 2026 12:47:17 +0200 Subject: [PATCH 07/10] Align LP-0018 with LP-0023 patterns and review follow-ups. Pin to Logos testnet 0.3, drop the reset contingency, and treat a later testnet as a follow-up prize. Add CLI, cycle counts, module-builder, catalog publishing, and a Geofabrik exception on centralised services. Fit Scope, Submission, and Evaluation to the LP-0023 shape. Keep the SDK as a Basecamp module: full API for the distribution app, limited subset for other Basecamp consumers. Co-authored-by: Cursor --- prizes/LP-0018.md | 111 ++++++++++++++++++---------------------------- 1 file changed, 44 insertions(+), 67 deletions(-) diff --git a/prizes/LP-0018.md b/prizes/LP-0018.md index 4807f9d9..ef1df7d7 100644 --- a/prizes/LP-0018.md +++ b/prizes/LP-0018.md @@ -13,7 +13,7 @@ This prize funds an **OpenStreetMap (OSM) data distribution system** for the Log Geofabrik publishes regions as a tree: a country extract is the union of its subregions (for example the India country file contains all six India zones; the same bytes appear again in each zone file under a different CID and checksum). Regions in this system are therefore identified at a specific level (country or subregion) and the predefined set is **non-overlapping** (no region contains another) so the same geography is never hosted or counted twice. See [Predefined Regions](#predefined-regions-closed-set) for the closed set. -The deliverable has two required parts: a **Logos Basecamp app** (region discovery, host/download workflows, import-time checksum verification, and bulk operations) and a standalone **OSM registry SDK/module** for programmatic interaction with the on-chain registry. The SDK is a required deliverable with a stable, documented API, usable independently of the Basecamp app. There is **no follow-up λPrize for a map viewer or downstream consumer app**. Those are expected to be built on top of this SDK by other apps, out of scope of this prize. +The deliverable has two required parts: an **OSM distribution Logos Basecamp app** that hosts and downloads map files (region discovery, host/download workflows, import-time checksum verification, and bulk operations), and an **OSM registry SDK/module** for other Basecamp apps and modules to talk to the on-chain registry. A Basecamp consumer only needs the PBF files available locally and this SDK to discover them and use them in another module, or hosted locally; it does not need the distribution app. For that use, the SDK can be a limited subset: it does not need the host, register, or retrieval functions the distribution app uses. That is why the SDK is independent of the distribution app. Viewers and other apps that actually use the map data are out of scope of this prize and are expected to be built by the community independently. The distribution app uses the full SDK (the UI is packaged with it); the SDK is also published as a separate Basecamp module so other Basecamp apps and modules can depend on it without the distribution app. **Requires:** - Logos Storage module (for storing PBF files) @@ -25,7 +25,7 @@ The **Success Criteria**, **Scope**, and **Submission Requirements** below are t OpenStreetMap extracts are widely used for offline navigation, GIS tooling, and privacy-preserving map apps — but distribution today depends on central hosts such as Geofabrik. A Logos-native distribution layer lets communities mirror verified map snapshots in decentralized storage and register them on-chain, so users can discover and download authentic data without trusting a single operator. -This prize complements existing Logos sample apps (notably [LP-0017](LP-0017.md)) by demonstrating a full **fetch → store → register → verify → download** pipeline for large binary assets, with content-addressed integrity anchored to Geofabrik as the canonical source. It also ships a reusable SDK so other teams can build viewers, routers, and map products on top without a further prize. +This prize complements existing Logos sample apps (notably [LP-0017](LP-0017.md)) by demonstrating a full **fetch → store → register → download** pipeline for large binary assets, with content-addressed integrity anchored to Geofabrik as the canonical source. It also ships a reusable Basecamp SDK/module so other Basecamp apps and modules can discover and use those files locally. ## Success Criteria @@ -42,13 +42,14 @@ This prize complements existing Logos sample apps (notably [LP-0017](LP-0017.md) - identifies each region by its Geofabrik path so that `region` is unique and its position in the tree (`parent`, `level`) is explicit, - is queryable by region, by parent, and by CID, - supports registering multiple regions in a single batch transaction when bulk hosting. -- [ ] **OSM registry SDK (required)**: a self-contained SDK/module covering the registry API — discover regions, resolve a region to its CID/metadata, host (store + register), batch-register, query by region/parent/CID, and check for updates — with a stable, documented API and a minimal standalone embedding example. It must be usable by a third-party app that does **not** depend on the Basecamp app itself. Downstream viewers and map products use this SDK; there is no follow-up viewer prize. +- [ ] **Testnet 0.3**: the OSM registry operates end-to-end against the Logos LEZ zone on Logos testnet 0.3. +- [ ] **OSM registry SDK**: a self-contained Basecamp SDK/module with a stable, documented API and a minimal embedding example in another Basecamp module. The distribution app uses the full registry API — discover regions, resolve a region to its CID/metadata, host (store + register), batch-register, query by region/parent/CID, and check for updates — rather than a separate registry client. The SDK is also published as a separate Basecamp module so other Basecamp apps and modules can depend on it without the distribution app. For that consumer use (discover and use map files in another module, or hosted locally), the exposed API can be a limited subset: it does not need host, register, batch-register, or retrieval. ### Usability - [ ] Provide a Logos Basecamp app GUI with local build instructions, downloadable assets, and loadable in Logos app (Basecamp). -- [ ] Provide an SDK/module that can be used to build Logos modules **and third-party applications** for interacting with the OSM registry, with published API documentation and a minimal embedding example that runs without the Basecamp app. -- [ ] Provide an IDL for the OSM registry LEZ program, using the [SPEL framework](https://github.com/logos-co/spel). +- [ ] Provide an SDK/module that can be used to build Logos Basecamp modules and apps for interacting with the OSM registry, with published API documentation and a minimal embedding example that runs as a Basecamp module without the distribution app. +- [ ] Provide a CLI covering host (store + register), batch-register, lookup by region/parent/CID, update check, download, and local import. - [ ] Clear UX: show hosted/not-hosted status, version numbers, and verification results. ### Reliability @@ -56,70 +57,55 @@ This prize complements existing Logos sample apps (notably [LP-0017](LP-0017.md) - [ ] Storage upload retries on transient failures with exponential back-off and surfaces a clear error after exhausting retries. - [ ] Import-time checksum verification fails gracefully with clear error messages. - [ ] Registry entries are ordered by timestamp for version sorting. +- [ ] **No mandatory centralised external services.** Beyond the user's configured sequencer, Logos LEZ node, Logos Storage (or other Logos protocols), and Geofabrik as the canonical snapshot source (index lookup, import-time checksum, and direct-download fallback when a region is not hosted), the registry and its tooling must not depend on any third-party web service to function. If one is used, it is disclosed, the user can disable it, and the registry remains fully functional with it disabled. Hosted regions must remain discoverable and downloadable without Geofabrik. Any analytics must be strictly opt-in. ### Performance -- [ ] Document a sample file size (e.g., Berlin ~93 MB) and measured download times. -- [ ] Document and measure the compute unit (CU) cost of a single-region registration and a multi-region batch registration on LEZ devnet/testnet. Note: LEZ's per-transaction compute budget may change during testnet. +- [ ] Document [cycle count](https://github.com/logos-blockchain/logos-execution-zone/tree/dev/tools/cycle_bench) usage for each on-chain operation (register, batch-register). ### Supportability -- [ ] The OSM registry LEZ program is deployed and tested on LEZ devnet/testnet. -- [ ] End-to-end integration tests covering host (fetch → store → register) → query → download run against a LEZ sequencer in standalone mode and are included in CI. -- [ ] CI is green on the default branch. -- [ ] A README covers: build steps, program addresses, running the Basecamp app, querying the registry, region list, and troubleshooting. -- [ ] A reproducible end-to-end demo script is provided and works against a real local sequencer with `RISC0_DEV_MODE=0`. -- [ ] A recorded video demo of the end-to-end flow is included in the submission; the recording must show terminal output (including proof generation) to confirm `RISC0_DEV_MODE=0` was active. +- [ ] Deployed and tested against Logos testnet 0.3 (the canonical Logos LEZ zone). +- [ ] The submission builds and runs end-to-end on both **macOS (Apple Silicon)** and **Linux (x86_64)**. +- [ ] The Logos Basecamp modules (distribution app and SDK/module) are built with [`logos-module-builder`](https://github.com/logos-co/logos-module-builder) (`mkLogosModule`). +- [ ] Provide an IDL for the OSM registry LEZ program, generated via the [SPEL framework](https://github.com/logos-co/spel). +- [ ] End-to-end integration tests covering host (fetch → store → register) → query → download run against a real sequencer (standalone mode) and are included in CI; CI is green on the default branch. +- [ ] README documents setup, the deployed program ID, the region list, and step-by-step usage via CLI and Basecamp app. +- [ ] SDK documentation covers resolving a region to its CID and metadata as a worked example, since that is the integration path most Basecamp consumers will take. ## Adoption -> These criteria measure traction attributable to a given submission for this prize: not that the system was built (that is FURPS, above), but that it is actually serving as a **decentralized distribution layer** — real map data verifiably hosted on-chain, and a registry SDK that other teams actually build on. +> These metrics measure traction attributable to a given submission for this prize. > -> The **Required** criteria below are all mandatory in addition to the FURPS criteria, and are written so that an evaluator can confirm each one without trusting the submitter: Coverage from on-chain registry data checked against Geofabrik, and Ecosystem reuse from public forge repositories and code inspection. The **Discretionary signals** are considered in addition, per the evaluation policy that applies to all prizes (see [Terms & Conditions](../TERMS.md)); evaluators inspect account and commit histories, and volume that is clearly manufactured (fresh accounts, purchased engagement) does not count regardless of the headline number. +> **The Required criteria below are mandatory in addition to the FURPS criteria above.** We publish the dimensions we look at, but hitting a raw number is not by itself sufficient (see [Terms & Conditions](../TERMS.md) for the evaluation policy that applies to all prizes). Coverage is confirmed from on-chain registry data checked against Geofabrik; ecosystem reuse is confirmed from public forge repositories and code inspection. Evaluators inspect account and commit histories, and the posting history of vouching accounts. Volume that is clearly manufactured (fresh accounts, purchased engagement) does not count, regardless of the headline number. **Discretionary signals** are considered in addition, per the same policy. **Required:** -- **Coverage.** At least **15 countries** from the predefined set (see the region list) are covered on-chain and hosted in Logos Storage, and at least **25 total verified region entries** are covered across the set. A country counts as covered when it is a country-level entry that is registered, or a decomposed country (US, India, China, Russia) for which **at least one of its subregions** is registered. Each contributing entry must verify: the evaluator fetches the CID from Logos Storage, hashes the bytes, and confirms the hash matches Geofabrik's published MD5 for that snapshot. Entries whose stored bytes do not match Geofabrik do not count, and an unverified subregion does not make its country count. The 25-entry floor is above the 15-country minimum and forces some depth in the decomposed countries, so coverage cannot be met by decomposed countries each satisfied with a single small subregion. -- **Ecosystem reuse via the SDK.** At least **5 modules total, including at least 3 Logos Basecamp apps (UI modules)**, consume the OSM registry SDK/module to discover or fetch regions. Each must be publicly hosted on a mainstream forge (GitHub, GitLab, Codeberg, etc.) with a clear, genuine commit history: development spread over time by a real contributor, not a single bulk import. The 5 must be independent of each other and of the submitting team; the owning developer or organisation's history on the forge will be inspected, and fresh accounts, among other red flags, will not count. Use of the SDK is confirmable by code inspection. There is no follow-up viewer prize, so this is how independent use of the SDK is shown. (Approach mirrors the LEZ Program Registry prize, LP-0023.) +- **Coverage.** At least **15 countries** from the predefined set (see the region list) are covered on the official Logos zone (Logos testnet 0.3) and hosted in Logos Storage, and at least **25 total verified region entries** are covered across the set. A country counts as covered when it is a country-level entry that is registered, or a decomposed country (US, India, China, Russia) for which **at least one of its subregions** is registered. Each contributing entry must verify: the evaluator fetches the CID from Logos Storage, hashes the bytes, and confirms the hash matches Geofabrik's published MD5 for that snapshot. Entries whose stored bytes do not match Geofabrik do not count, and an unverified subregion does not make its country count. The 25-entry floor is above the 15-country minimum and forces some depth in the decomposed countries, so coverage cannot be met by decomposed countries each satisfied with a single small subregion. +- **Ecosystem reuse via the SDK.** At least **5 independent modules**, including at least **3 Logos Basecamp apps (UI modules)**, consume the OSM distribution module to discover or fetch regions. One of the 5 may use only the standalone SDK module, without the distribution one. Each must be publicly hosted on a mainstream forge (GitHub, GitLab, Codeberg, etc.) with a clear, genuine commit history: development spread over time by a real contributor, not a single bulk import. The 5 must be independent of each other and of the submitting team; the owning developer or organisation's history on the forge will be inspected, and fresh accounts, among other red flags, will not count. Use of the SDK is confirmable by code inspection. **Discretionary signals (considered in addition, per Terms & Conditions):** -- **Operator independence.** The accounts behind the coverage are genuinely independent hosts with real account history, not one team spinning up accounts to pad the numbers. Evaluators inspect on-chain and account histories. -- **Redundant mirroring.** Covered region entries mirrored by more than one independent operator, so no single operator is the sole source for a region. Assessed qualitatively from registry entries and account histories rather than as an objective account count (raw counts are cheap to forge with randomly-generated Logos accounts). +- **Redundant mirroring.** A covered region is hosted by more than 5 operators (same CID, distinct hosting accounts). Assessed qualitatively: signaling that these are distinct individuals will be reflected favourably where evident. - **Community vouching.** Testimonials from people who have actually hosted or used a region (for example, on Discord and on Twitter/X), with account histories inspected. -**Testnet reset / chain data loss contingency:** - -This prize targets a live Logos testnet. Testnets may be reset, redeployed, or replaced by a newer version, and on-chain registry data (entries, versions, timestamps) may be lost in the process. The coverage criterion is cumulative, so a reset can break it through no fault of the builder. If a testnet reset or data loss occurs during an active submission, the following applies: - -- **The prize continues.** A reset does not disqualify in-progress work or reset a builder's eligibility to submit. -- **All criteria are measured only on the current live chain.** Adoption is always evaluated against the testnet that is live at evaluation time. Data that existed only on a wiped chain does not count toward any criterion and will not be credited from off-chain records (explorer exports, screenshots, CI logs, or the builder's own claims): none of those are independently verifiable, which is the whole point of these criteria. A submission cannot qualify on the strength of a chain that no longer exists. -- **Re-hosting after a reset is expected.** Builders re-register and re-host coverage on the new chain. Because the underlying bytes are still verifiable against Geofabrik, re-establishing coverage is fast. - -> **Note on usage/download metrics.** This prize deliberately does **not** set a download or retrieval count. Logos Storage is a peer-to-peer filesharing layer with no verifiable retrieval accounting, and its roadmap adds provider and downloader anonymity; a download count could only ever be a self-reported number that no third party can audit. Adoption is therefore measured by *verified on-chain coverage* and *genuine ecosystem reuse of the SDK* — what can be objectively confirmed — rather than by unverifiable retrieval figures. - ## Scope ### In Scope -- Region discovery from Geofabrik index. -- Host workflow (fetch + store + register). -- Download from Logos Storage or Geofabrik central source. -- Import-time verification against Geofabrik checksums. -- On-chain OSM registry LEZ program. -- Basecamp UI with bulk host/download. -- OSM registry SDK/module (required) with documented API and a standalone embedding example. -- Integration tests and CI. - -Geofabrik is the **canonical source of truth** for snapshot bytes and MD5 checksums. Hosted copies in Logos Storage are verified against Geofabrik; Geofabrik is not a runtime backend for the app beyond index lookup, checksum fetch, and direct-download fallback. +- The on-chain OSM registry (register, batch-register, lookup by region / parent / CID), built with SPEL. +- PBF snapshots in Logos Storage. Geofabrik is the canonical source for the index, import-time checksums, and direct-download fallback when a region is not hosted. +- Host workflow (fetch → store → register), including bulk host and local import. +- Download of hosted regions by CID. +- Region discovery and update check, restricted to the predefined non-overlapping set. +- Distribution Basecamp app, SDK/module, and CLI. ### Out of Scope -- Map rendering, tile server, or any end-user viewer. A viewer and other downstream consumer apps are expected to be built **on top of the SDK** by ecosystem apps and integrated products, out of scope of this prize — there is no separate λPrize for them. -- Geocoding, routing, or navigation features. -- Real-time OSM synchronization (snapshots only). -- Custom regions or arbitrary levels outside the predefined partition (see the region list). -- A hosted relay or backend service — registry, storage, and app logic run on the Logos stack; Geofabrik is used only as an external canonical snapshot source. +- **Viewers and other apps that use the map data.** Map rendering, tile servers, geocoding, routing, and navigation are expected to be built by the community independently. This prize distributes verified snapshots; it does not consume them. +- **Live OSM sync.** Snapshots only. Incremental or real-time updates are not part of the deliverable. +- **Custom regions or extra tree levels.** Coverage is measured against the predefined non-overlapping set (see the region list). +- **A hosted relay or backend.** Registry, storage, and app logic run on the Logos stack. Geofabrik is used only as an external canonical snapshot source (index, checksums, unhosted fallback), not as a runtime backend. ## Prize Structure @@ -132,31 +118,19 @@ Open to any individual or team. Submissions must be original work. Teams must ho ## Submission Requirements -- Public repository (MIT or Apache-2.0) containing: - - the OSM Basecamp app, - - the OSM registry LEZ program, - - the OSM registry SDK/module (required) with API documentation and a standalone embedding example, - - integration tests runnable in CI. -- Deployed OSM registry LEZ program on LEZ devnet/testnet with documented program address. -- README with: build steps, region list, workflow, and troubleshooting. -- A narrated video walkthrough in which the builder explains what they built and why, walks through the architecture and key implementation decisions, and demonstrates (see [demo requirements](../README.md#evaluation-policies)): - - end-to-end setup and deployment (or local environment configuration), - - hosting a region (fetch from Geofabrik → store → register), - - importing a local PBF with import-time checksum verification, - - downloading a hosted region by CID (content-addressed integrity), - - a third-party module/app consuming the SDK without the Basecamp app, - - integration with the Logos stack (Logos Storage and on-chain registry), - - error handling for a bad import and transient storage failures. - A silent screencast without explanation is not sufficient. -- Compute unit benchmarks for single and batch registry operations. -- GitHub issues filed for any problems encountered with Logos technology. -- Submissions must include a FURPS self-assessment as part of the solution (see [solution template](../solutions/LP-0000.md)). +- Public repository with the OSM registry program, SDK/module, CLI, and distribution Basecamp app under MIT or Apache-2.0. +- The registry IDL, and the deployed program ID on Logos testnet 0.3. +- The Logos Basecamp modules published to a module catalog: a fork of [`logos-modules-release-base`](https://github.com/logos-co/logos-modules-release-base), publishing releases via [`logos-modules-release-action`](https://github.com/logos-co/logos-modules-release-action). The catalog's `logos-repo.json` URL must be included so evaluators can install the modules through the package-manager UI / `lgpd`. +- Evidence for each required adoption criterion: links to the 5 independent modules and their repositories, and the on-chain coverage (region entries and CIDs so an evaluator can fetch from Logos Storage and check hashes against Geofabrik). +- FURPS self-assessment as part of the solution (see [solution template](../solutions/LP-0000.md)). ## Evaluation Process -By default, submissions are evaluated first-come-first-served against the success criteria. The first submission that meets **all** criteria wins. +Submissions are evaluated first-come-first-served against the success criteria. The first submission that meets all criteria wins. + +Builders are encouraged to ship early and start accruing coverage and ecosystem reuse while continuing to develop, rather than treating the build and the adoption push as sequential. -Evaluators will independently clone the repository and run the demo script from a clean environment; the script must succeed without modification. Evaluators may also ask technical follow-up questions to verify authorship and understanding of the implementation. +Evaluators will independently clone the repository and follow the README from a clean environment. Evaluators will also independently fetch a sample of covered region CIDs from Logos Storage and confirm the hashes match Geofabrik's published MD5, and inspect the 5 independent modules for genuine SDK use. Evaluators may ask technical follow-up questions to verify authorship and understanding of the implementation. The following policies apply to all prizes (see [evaluation policies](../README.md#evaluation-policies)): @@ -172,14 +146,17 @@ The following policies apply to all prizes (see [evaluation policies](../README. - [Logos Storage Module](https://logos-storage-docs.netlify.app/tutorials/storage-module/) - [LEZ GitHub repository](https://github.com/logos-blockchain/logos-execution-zone) - [SPEL framework](https://github.com/logos-co/spel) +- [`logos-module-builder`](https://github.com/logos-co/logos-module-builder) — `mkLogosModule` +- [`logos-modules-release-base`](https://github.com/logos-co/logos-modules-release-base) and [`logos-modules-release-action`](https://github.com/logos-co/logos-modules-release-action) — module catalog publishing +- [`cycle_bench`](https://github.com/logos-blockchain/logos-execution-zone/tree/dev/tools/cycle_bench) — LEZ cycle-count benchmarking - [LP-0017](LP-0017.md) — Whistleblower (reference implementation for storage + registry patterns) - [LP-0008](LP-0008.md) — Autonomous AI Module (reference for Logos Core module architecture and storage patterns) ## Potential for Subsequent λPrizes -This prize targets snapshot-based distribution from Geofabrik. A follow-up prize may cover incremental updates, additional region sources, or deeper integration once built-in Logos Storage and Blockchain modules ship in Basecamp. +This prize also targets Logos testnet 0.3. Should a future testnet version (e.g., V0.4) introduce breaking changes to program IDs, PDA derivation, or the SPEL IDL format, a subsequent λPrize may be opened to cover adaptation. -Note that consumer-facing products built on this data — an offline map viewer, search/POI discovery, routing, or integrated map products — are **not funded as separate λPrizes**. This prize includes an SDK so those products can be built on top of it, out of scope of the prize. +Viewers and other apps that actually use the map data — an offline map viewer, search/POI discovery, routing, or similar — are out of scope of this prize and are expected to be built by the community independently. ### Predefined Regions (closed set) From fdc3c2d5ffc9b15ce016e2b87f5f654e583aa2f1 Mon Sep 17 00:00:00 2001 From: mart1n <20109376+mart1n-xyz@users.noreply.github.com> Date: Mon, 31 Aug 2026 08:59:28 +0200 Subject: [PATCH 08/10] Require Basecamp modules in a published catalog (Supportability). Co-authored-by: Cursor --- prizes/LP-0018.md | 1 + 1 file changed, 1 insertion(+) diff --git a/prizes/LP-0018.md b/prizes/LP-0018.md index ef1df7d7..0dccdd62 100644 --- a/prizes/LP-0018.md +++ b/prizes/LP-0018.md @@ -68,6 +68,7 @@ This prize complements existing Logos sample apps (notably [LP-0017](LP-0017.md) - [ ] Deployed and tested against Logos testnet 0.3 (the canonical Logos LEZ zone). - [ ] The submission builds and runs end-to-end on both **macOS (Apple Silicon)** and **Linux (x86_64)**. - [ ] The Logos Basecamp modules (distribution app and SDK/module) are built with [`logos-module-builder`](https://github.com/logos-co/logos-module-builder) (`mkLogosModule`). +- [ ] The Logos Basecamp modules are published to a module catalog: a fork of [`logos-modules-release-base`](https://github.com/logos-co/logos-modules-release-base), publishing releases via [`logos-modules-release-action`](https://github.com/logos-co/logos-modules-release-action). The catalog's `logos-repo.json` URL must be included so evaluators can install the modules through the package-manager UI / `lgpd`. - [ ] Provide an IDL for the OSM registry LEZ program, generated via the [SPEL framework](https://github.com/logos-co/spel). - [ ] End-to-end integration tests covering host (fetch → store → register) → query → download run against a real sequencer (standalone mode) and are included in CI; CI is green on the default branch. - [ ] README documents setup, the deployed program ID, the region list, and step-by-step usage via CLI and Basecamp app. From d22fb63a7f5eb614019969b0e3fd65b6ec8fcfa7 Mon Sep 17 00:00:00 2001 From: mart1n <20109376+mart1n-xyz@users.noreply.github.com> Date: Tue, 1 Sep 2026 12:57:19 +0200 Subject: [PATCH 09/10] Add specification disclaimer note to LP-0018. Clarify that the prize spec is outcome criteria, not direction of a participant's approach, and point back to the program Terms & Conditions. Co-authored-by: Cursor --- prizes/LP-0018.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/prizes/LP-0018.md b/prizes/LP-0018.md index 0dccdd62..d8793b48 100644 --- a/prizes/LP-0018.md +++ b/prizes/LP-0018.md @@ -186,3 +186,21 @@ Countries represented **by subregions** (decomposed; the country file itself is These leaf ids are frozen: the closed set is exactly the entries listed above, so a third party can reconstruct it directly from this document. The registry stores each leaf as its own entry with `parent` set to the decomposed country (`us`, `india`, `china`, `russia`). Coverage counts hosted leaf entries, not the decomposed country as a single unit. If Geofabrik renames a leaf, this document is patched to match; the set does not drift with the index. +--- + +**Note:** The Specification in this Prize describes an outcome that Logos intends to benefit the Logos ecosystem. It sets out criteria and certain requirements a Participant should fulfill in order to potentially be eligible to be awarded a Prize amount, and is not intended to be an instruction or to direct a Participant’s initiative or approach. They are guided by existing approaches and implementations in other mature blockchain systems and their ecosystems, as well as by functional requirements particular to the Logos technology stack or perceived usefulness to such stack or the wider community building on it. + +Logos makes no representation as to the legal or regulatory treatment of this Specification or any implementation of it in any jurisdiction. + +Participants act independently, voluntarily and at their own initiative in connection with their Submissions and are solely responsible for: + +1. assessing the risks and implications of their Participation in the Program and of any Artefacts that form part of their Submission; +2. determining whether to obtain independent professional advice; +3. complying with all applicable laws to them and in connection with the Program, including, where relevant, any licensing, registration, sanctions or anti-money laundering obligations that may arise from operating any software-as-a-service or business. + +Artefacts developed by Participants in connection with the Program are published and maintained by Participants and not by Logos or its Affiliates. Logos and its Affiliates do not build, host, maintain, deploy, operate, use or control any Artefacts arising out of any Submission. + +Participants or other persons who choose to build upon, host, maintain, deploy, operate, use or publicly promote any Artefacts, do so at their own risk and as a principal and in their own name. Any such persons are further solely responsible for complying with any legal or regulatory requirements that apply to them with such use. Logos does not make any representation, provide any advice or assume any responsibility regarding the use of such Artefacts, or any determination of compliance with applicable law or regulation. + +For further details of the above and what terms and conditions apply to a Participant, please refer to the [λPrize Program – Terms & Conditions](../TERMS.md). + From 77555e8bdc07d0144b39f9b2ddfb077bb26c4a7a Mon Sep 17 00:00:00 2001 From: mart1n <20109376+mart1n-xyz@users.noreply.github.com> Date: Sat, 5 Sep 2026 14:26:38 +0200 Subject: [PATCH 10/10] Align LP-0018 with the current README and mark it Open. List it under adoption-first, require dual MIT and Apache-2.0, and evaluate against Adoption plus a solution PR. Co-authored-by: Cursor --- README.md | 2 +- prizes/LP-0018.md | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 41cbb3d5..a5905693 100644 --- a/README.md +++ b/README.md @@ -35,6 +35,7 @@ Prizes are typically defined through an analysis of gaps in the Logos technology | File | Description | Size | Status | |------|-------------|------|--------| | [LP-0000](prizes/LP-0000.md) | Template — use this as the starting point for new prizes | — | — | +| [LP-0018](prizes/LP-0018.md) | OpenStreetMap integration: decentralized map data distribution | Medium | Open | ### Legacy prizes (original scheme) @@ -56,7 +57,6 @@ Prizes are typically defined through an analysis of gaps in the Logos technology | [LP-0015](prizes/LP-0015.md) | General cross-program calls via tail calls | Large | Closed | | [LP-0016](prizes/LP-0016.md) | Anonymous Forum with Threshold Moderation | Large | Closed ([Solution](solutions/LP-0016.md)) | | [LP-0017](prizes/LP-0017.md) | Whistleblower: document upload and indexing Basecamp app | Medium | Closed ([Solution](solutions/LP-0017.md)) | -| [LP-0018](prizes/LP-0018.md) | OpenStreetMap integration: decentralized map data distribution | Medium | Draft | > [!IMPORTANT] > **Legacy scheme wind-down.** To make room for adoption-first prizes, **LP-0002**, **LP-0003**, and **LP-0008** close on **11 September 2026 at 23:59 CEST**. No new submissions will be accepted after that time. If you have already submitted a solution, yours will be reviewed first. In-flight submissions received before the deadline will still be evaluated. Prizes already marked *Closed* are unaffected. diff --git a/prizes/LP-0018.md b/prizes/LP-0018.md index d8793b48..185f38bf 100644 --- a/prizes/LP-0018.md +++ b/prizes/LP-0018.md @@ -2,9 +2,9 @@ dependencies: [] --- -# LP-0018: OpenStreetMap Integration — Decentralized Map Data Distribution [DRAFT] +# LP-0018: OpenStreetMap Integration — Decentralized Map Data Distribution [OPEN] -**`Status: Draft`** +**`Status: Open`** **`Logos Circle: N/A`** ## Overview @@ -115,11 +115,11 @@ This prize complements existing Logos sample apps (notably [LP-0017](LP-0017.md) ## Eligibility -Open to any individual or team. Submissions must be original work. Teams must hold the rights to all submitted code and agree to license it under MIT or Apache-2.0. +Open to any individual or team. Submissions must be original work. Teams must hold the rights to all submitted code and agree to dual-license it under the MIT License and Apache License 2.0. ## Submission Requirements -- Public repository with the OSM registry program, SDK/module, CLI, and distribution Basecamp app under MIT or Apache-2.0. +- Public repository with the OSM registry program, SDK/module, CLI, and distribution Basecamp app, dual licensed under the MIT License and Apache License 2.0. - The registry IDL, and the deployed program ID on Logos testnet 0.3. - The Logos Basecamp modules published to a module catalog: a fork of [`logos-modules-release-base`](https://github.com/logos-co/logos-modules-release-base), publishing releases via [`logos-modules-release-action`](https://github.com/logos-co/logos-modules-release-action). The catalog's `logos-repo.json` URL must be included so evaluators can install the modules through the package-manager UI / `lgpd`. - Evidence for each required adoption criterion: links to the 5 independent modules and their repositories, and the on-chain coverage (region entries and CIDs so an evaluator can fetch from Logos Storage and check hashes against Geofabrik). @@ -127,7 +127,7 @@ Open to any individual or team. Submissions must be original work. Teams must ho ## Evaluation Process -Submissions are evaluated first-come-first-served against the success criteria. The first submission that meets all criteria wins. +A solution PR in this repository is required to claim this prize. Submissions are evaluated first-come-first-served against the success criteria and the required **Adoption** criteria. The first solution PR that meets all of them wins. Meeting the criteria without a solution PR does not establish priority. A solution PR is timestamped by its opening date. Builders are encouraged to ship early and start accruing coverage and ecosystem reuse while continuing to develop, rather than treating the build and the adoption push as sequential. @@ -135,8 +135,8 @@ Evaluators will independently clone the repository and follow the README from a The following policies apply to all prizes (see [evaluation policies](../README.md#evaluation-policies)): -- **Submissions:** each builder (or team) is allowed a maximum of **3 submissions** per prize, with at most **one submission/review per week**. -- **Feedback:** initial evaluation feedback is limited to a pass/fail indication against the success criteria. +- **Submissions:** a solution PR in this repository is required. Each builder (or team) is allowed a maximum of **3 submissions** per prize, with at most **one submission/review per week**. +- **Feedback:** initial evaluation feedback is limited to a pass/fail indication against the success criteria and the **Adoption** section. ## Resources