## Summary - Introduce a standalone Python roadmap validator with a CLI entry point, modular validation pipeline, and GitHub Actions wiring so roadmap content can be linted locally and in CI. - Provide reusable validation primitives for path resolution, front-matter parsing, identity checks, task parsing, catalog enforcement, and template adherence. - Document usage, configuration, and workflow behaviour to make the validator approachable for contributors. ## Validator Details - **Core tooling** - Added the `tools/roadmap_validator/` package with `validate.py` (CLI), `validator.py` (orchestration), and helper modules (`tasks.py`, `identity.py`, `paths.py`, `constants.py`, `issues.py`). - CLI supports directory/file targets, skips default filenames, emits GitHub annotations, and integrates optional substring filtering - README explains features, environment variables, and development guidance. - **Catalog and template enforcement** - `catalog.py` verifies each allowed content unit has `index.md` and `preview.md`, confirms roadmap entries appear under the proper quarter/area, and flags stale or missing links. - `templates.py` enforces template basics: front matter completeness, `## Description` ordering/content, template placeholder cleanup, and task section detection. - **Task validation** - `tasks.py` checks required metadata (`owner`, `status`, `start-date`, `end-date`), date formats, populated descriptions/deliverables, TODO markers, tangible deliverable heuristics, and `fully-qualified-name` prefixes. - **Workflow integration** - `.github/workflows/roadmap-validator.yml` runs the validator on pushes and manual dispatch, installs dependencies, scopes validation to changed Markdown, and surfaces findings via GitHub annotations. ## Existing Roadmap Updates - Normalised 2025q4 commitments across Web, DST, QA, SC, and other units by filling in missing descriptions, deliverables, schedule notes, recurring task statuses, and maintenance tasks. - Added tasks where absent, removed remaining template placeholders, aligned fully qualified names, and ensured roadmap files conform to the new validator checks. ## Testing ```bash python tools/roadmap_validator/validate.py *2025q4* ``` CI: `Roadmap Validator` workflow runs automatically on pushes/dispatch. --------- Co-authored-by: kaiserd <1684595+kaiserd@users.noreply.github.com>
3.4 KiB
title, tags, draft, description
| title | tags | draft | description | |||
|---|---|---|---|---|---|---|
| nim-libp2p c-bindings |
|
false | Provide c-bindings for nim-libp2p |
vac:p2p:ift:2025q4-nimlibp2p-cbindings
Expose nim-libp2p functionality via a c static library, enabling external projects (e.g. logoscore) to integrate without depending on nim toolchains. Implementation may leverage nim-ffi and/or nim-library-template as well as previous learnings from building libwaku to simplify binding generation and library packaging.
Description
Deliver a minimal set of c-bindings around nim-libp2p core. The bindings should cover basic node lifecycle, peer connectivity, and stream i/o. This enables downstream projects like logoscore to embed libp2p functionality directly. Stretch goals include exposing Gossipsub and custom protocol support, which may be deferred to 2026q1.
Task List
Core Bindings
- fully qualified name:
vac:p2p:ift:2025q4-nimlibp2p-cbindings:core - owner: rramos
- status: not started
- start-date: 2025/10/01
- end-date: 2025/12/31
description
Implement and test c-bindings for core nim-libp2p functionality. Exported functions must include:
- switch builder
- start/stop node
- access node peer's information (addresses, peerId)
- connect/disconnect peer
- dial peer on protocol
- read/write stream
- close stream
Schedule note: Dates reflect quarter bounds; update when actual timing is known.
Deliverables
- Static c library build artifact
- Header file exposing ffi-safe api
- Integration tests demonstrating basic usage
- Documentation
kademlia
- fully qualified name:
vac:p2p:ift:2025q4-nimlibp2p-cbindings:kademlia - owner: rramos
- status: not started
- start-date: 2025/10/01
- end-date: 2025/12/31
description
Extend c-bindings to expose Kademlia functionality. This task depends on vac:p2p:ift:2025q4-nimlibp2p-kad-dht.
Exported functions must include:
- Bootstrap
- Find Node / Put Value / Get Value / Set Providers / Get Providers
- Discovery
Schedule note: Dates reflect quarter bounds; update when actual timing is known.
deliverables
- Updated c header + library with kademlia api
- Tests verifying kademlia behavior via ffi
- Documentation
gossipsub
- fully qualified name:
vac:p2p:ift:2025q4-nimlibp2p-cbindings:gossipsub - owner: rramos
- status: not started
- start-date: 2025/10/01
- end-date: 2025/12/31
description
Extend c-bindings to expose Gossipsub Functionality. Exported functions must include:
- start/stop gossipsub
- publish/subscribe
- add/remove validators
Schedule note: Dates reflect quarter bounds; update when actual timing is known.
deliverables
- Updated c header + library with gossipsub api
- Tests verifying pub/sub behavior via ffi
- Documentation
Custom Protocols
- fully qualified name:
vac:p2p:ift:2025q4-nimlibp2p-cbindings:custom-protocols - owner: rramos
- status: not started
- start-date: 2025/10/01
- end-date: 2025/12/31
Description
Provide FFI to register and handle custom protocols from c, enabling downstream applications to define custom behaviors.
Schedule note: Dates reflect quarter bounds; update when actual timing is known.
Deliverables
- FFI API for custom protocol registration
- Example implementation + tests
- Documentation