Skip to content

Commit 845d6b8

Browse files
fbarbu15kaiserd
andauthored
Chore/roadmap validator (#318)
## 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 <[email protected]>
1 parent 60f436e commit 845d6b8

File tree

68 files changed

+2432
-808
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+2432
-808
lines changed
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
name: Roadmap Validator
2+
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
paths:
7+
description: 'Space-separated paths or directories to validate, ex *2025q4* '
8+
required: false
9+
default: ''
10+
push:
11+
branches:
12+
- master
13+
paths:
14+
- 'content/dst/**'
15+
- 'content/qa/**'
16+
- 'content/nim/**'
17+
- 'content/p2p/**'
18+
- 'content/rfc/**'
19+
- 'content/sc/**'
20+
- 'content/sec/**'
21+
- 'content/web/**'
22+
- 'tools/roadmap_validator/**'
23+
- '.github/workflows/roadmap-validator.yml'
24+
25+
jobs:
26+
validate:
27+
runs-on: ubuntu-latest
28+
steps:
29+
- name: Checkout
30+
uses: actions/checkout@v4
31+
with:
32+
fetch-depth: 0
33+
34+
- name: Set up Python
35+
uses: actions/setup-python@v5
36+
with:
37+
python-version: '3.x'
38+
39+
- name: Install dependencies
40+
run: pip install --disable-pip-version-check --no-cache-dir pyyaml
41+
42+
- name: Detect changed markdown files
43+
if: ${{ github.event_name != 'workflow_dispatch' }}
44+
id: changed-files
45+
uses: tj-actions/changed-files@v42
46+
with:
47+
files: |
48+
**/*.md
49+
50+
- name: Run roadmap validator
51+
run: |
52+
set -eo pipefail
53+
54+
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
55+
TARGETS="${{ github.event.inputs.paths }}"
56+
else
57+
TARGETS="${{ steps.changed-files.outputs.all_changed_files }}"
58+
if [ -z "$TARGETS" ]; then
59+
echo "No roadmap markdown changes detected."
60+
exit 0
61+
fi
62+
fi
63+
64+
echo "Validating targets:"
65+
printf '%s\n' $TARGETS
66+
python tools/roadmap_validator/validate.py $TARGETS

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,6 @@ private/
88
.replit
99
replit.nix
1010
node_modules
11-
.ipynb_checkpoints/
11+
.ipynb_checkpoints/
12+
.cache
13+
__pycache__
Lines changed: 95 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -1,96 +1,96 @@
1-
---
2-
title: de-MLS testnet
3-
tags:
4-
- "2025q4"
5-
- "acz"
6-
- "ift"
7-
draft: false
8-
description: "Releasing de-MLS with the multi-steward support and Ethereum authentication mechanism."
9-
10-
---
11-
12-
`vac:acz:ift:2025q4-de-mls-tesnet`
13-
14-
## Description
15-
This commitment involves releasing the de-MLS poc with the multi-steward configurations.
16-
The process includes presenting the findings, such as MLS over Waku and benchmarking,
17-
and then achieving better iteration for the EF grant.
18-
19-
### Background
20-
de-MLS is a decentralized, scalable, end-to-end encrypted (E2EE)
21-
group messaging application with Ethereum-based authentication.
22-
The primary goal of this project is to develop a comprehensive
23-
and a mature RFC that outlines decentralized, secure, and scalable group key generation,
24-
designed to accommodate large numbers of users within a single group.
25-
26-
During 2025q3, we released the multi-steward de-MLS RFC, including consensus implementation.
27-
The implementation plan for this quarter is to release multi-steward with a single consensus
28-
version with Ethereum authentication factor by operating across the Waku network.
29-
30-
### Narratives
31-
We will reinforce the Conduit of Expertise narrative by:
32-
* Develop the foundational framework for a decentralized, scalable messaging application
33-
* Research and implement the scalable and decentralized consensus mechanism.
34-
35-
We will also strengthen the Premier Research Destination narrative by:
36-
* Develop a standardized decentralized messaging application over the Waku network,
37-
by providing a well-structured RFC and a proof of concept (PoC) that demonstrates
38-
It's a base functionality within the ecosystem.
39-
This will allow teams and organizations to build their own messaging applications
40-
while benefiting from these features.
41-
* Maintain the proposal by having the next iteration for the Ethereum Foundation (EF)
42-
to apply for EF grants to promote the project and gain support from the Ethereum ecosystem.
43-
44-
## Task List
45-
46-
### Maintain de-MLS RFC with multi stewards
47-
48-
* fully qualified name: `vac:acz:ift:2025q4-de-mls-tesnet:multi-steward-rfc`
49-
* owner: Ugur
50-
* status: in progress (15%)
51-
* start-date: 2025/10/25
52-
* end-date: 2025/11/25
53-
54-
#### Description
55-
56-
Maintain and develop the decentralized MLS RFC by addressing feedback.
57-
The RFC needs to contain a concrete flow and explanation.
58-
59-
#### Deliverables
60-
61-
* A PR to vacp2p/rfc-index repo with related updates.
62-
63-
### Multi-steward integration
64-
65-
* fully qualified name: `vac:acz:ift:2025q4-de-mls-tesnet:multi-steward-integration`
66-
* owner: Ekaterina
67-
* status: in progress (5%)
68-
* start-date: 2025/10/01
69-
* end-date: 2025/11/01
70-
71-
#### Description
72-
73-
The multi-steward settings allow de-MLS that multiple stewards to manage the group
74-
changes to protect a single point of failure, better availability, and decentralization.
75-
76-
#### Deliverables
77-
78-
* A PR to the [de-MLS repository](https://github.com/vacp2p/de-mls)
79-
containing an update of message processing
80-
81-
### de-mls maintenance
82-
83-
* fully qualified name: `vac:acz:ift:2025q4-de-mls-tesnet:de-mls-maintaining`
84-
* owner: Ekaterina
85-
* status: not started
86-
* start-date: 2025/06/30
87-
* end-date: 2025/09/30
88-
89-
#### Description
90-
91-
This task encompasses all maintenance updates for de-mls, including CI updates,
92-
testing, small issues, and the creation of future issues.
93-
94-
#### Deliverables
95-
1+
---
2+
title: de-MLS testnet
3+
tags:
4+
- "2025q4"
5+
- "acz"
6+
- "ift"
7+
draft: false
8+
description: "Releasing de-MLS with the multi-steward support and Ethereum authentication mechanism."
9+
10+
---
11+
12+
`vac:acz:ift:2025q4-de-mls-tesnet`
13+
14+
## Description
15+
This commitment involves releasing the de-MLS poc with the multi-steward configurations.
16+
The process includes presenting the findings, such as MLS over Waku and benchmarking,
17+
and then achieving better iteration for the EF grant.
18+
19+
### Background
20+
de-MLS is a decentralized, scalable, end-to-end encrypted (E2EE)
21+
group messaging application with Ethereum-based authentication.
22+
The primary goal of this project is to develop a comprehensive
23+
and a mature RFC that outlines decentralized, secure, and scalable group key generation,
24+
designed to accommodate large numbers of users within a single group.
25+
26+
During 2025q3, we released the multi-steward de-MLS RFC, including consensus implementation.
27+
The implementation plan for this quarter is to release multi-steward with a single consensus
28+
version with Ethereum authentication factor by operating across the Waku network.
29+
30+
### Narratives
31+
We will reinforce the Conduit of Expertise narrative by:
32+
* Develop the foundational framework for a decentralized, scalable messaging application
33+
* Research and implement the scalable and decentralized consensus mechanism.
34+
35+
We will also strengthen the Premier Research Destination narrative by:
36+
* Develop a standardized decentralized messaging application over the Waku network,
37+
by providing a well-structured RFC and a proof of concept (PoC) that demonstrates
38+
It's a base functionality within the ecosystem.
39+
This will allow teams and organizations to build their own messaging applications
40+
while benefiting from these features.
41+
* Maintain the proposal by having the next iteration for the Ethereum Foundation (EF)
42+
to apply for EF grants to promote the project and gain support from the Ethereum ecosystem.
43+
44+
## Task List
45+
46+
### Maintain de-MLS RFC with multi stewards
47+
48+
* fully qualified name: `vac:acz:ift:2025q4-de-mls-tesnet:multi-steward-rfc`
49+
* owner: Ugur
50+
* status: in progress (15%)
51+
* start-date: 2025/10/25
52+
* end-date: 2025/11/25
53+
54+
#### Description
55+
56+
Maintain and develop the decentralized MLS RFC by addressing feedback.
57+
The RFC needs to contain a concrete flow and explanation.
58+
59+
#### Deliverables
60+
61+
* A PR to vacp2p/rfc-index repo with related updates.
62+
63+
### Multi-steward integration
64+
65+
* fully qualified name: `vac:acz:ift:2025q4-de-mls-tesnet:multi-steward-integration`
66+
* owner: Ekaterina
67+
* status: in progress (5%)
68+
* start-date: 2025/10/01
69+
* end-date: 2025/11/01
70+
71+
#### Description
72+
73+
The multi-steward settings allow de-MLS that multiple stewards to manage the group
74+
changes to protect a single point of failure, better availability, and decentralization.
75+
76+
#### Deliverables
77+
78+
* A PR to the [de-MLS repository](https://github.com/vacp2p/de-mls)
79+
containing an update of message processing
80+
81+
### de-mls maintenance
82+
83+
* fully qualified name: `vac:acz:ift:2025q4-de-mls-tesnet:de-mls-maintaining`
84+
* owner: Ekaterina
85+
* status: not started
86+
* start-date: 2025/06/30
87+
* end-date: 2025/09/30
88+
89+
#### Description
90+
91+
This task encompasses all maintenance updates for de-mls, including CI updates,
92+
testing, small issues, and the creation of future issues.
93+
94+
#### Deliverables
95+
9696
A set of PRs and issues to [de-MLS repository](https://github.com/vacp2p/de-mls)

0 commit comments

Comments
 (0)