|
1 | 1 | # IETF WIMSE Deep Dive |
2 | 2 |
|
3 | | -Automated monitoring and deep-dive workspace for the IETF WIMSE working group. |
| 3 | +Continuous monitoring and deep-dive workspace for the IETF WIMSE working group (Workload Identity in Multi-System Environments). |
4 | 4 |
|
5 | | -## Goals |
| 5 | +## Purpose |
6 | 6 |
|
7 | | -- Continuously collect the latest WIMSE signals from primary sources. |
8 | | -- Detect meaningful changes (draft revisions, new related drafts, meeting artifacts, mailing-list trends). |
9 | | -- Prioritize deep-dive candidates with reproducible scoring. |
10 | | -- Maintain a hands-on lab backlog tied to real WG movement. |
| 7 | +- Track WIMSE drafts, related specifications, and working-group activity. |
| 8 | +- Surface deep-dive candidates ranked by lifecycle state, recency, and mailing-list signal. |
| 9 | +- Generate daily and weekly Markdown reports for review. |
11 | 10 |
|
12 | | -## Data Sources |
| 11 | +## Sources |
13 | 12 |
|
14 | | -- Datatracker WG pages: documents, meetings, history. |
15 | | -- IETF mail archive (`wimse` list). |
16 | | -- GitHub repositories under `ietf-wg-wimse`. |
| 13 | +Configured in `config/sources.yaml`: |
17 | 14 |
|
18 | | -All source endpoints and tracked repositories are configured in `config/sources.yaml`. |
| 15 | +- IETF Datatracker (WG documents, meetings, history) — HTML scrape |
| 16 | +- IETF Mail Archive (`mailarchive.ietf.org/arch/browse/wimse/`) — HTML scrape |
| 17 | +- GitHub repos under `ietf-wg-wimse/` — REST API |
19 | 18 |
|
20 | | -## Repository Layout |
| 19 | +## Layout |
21 | 20 |
|
22 | | -- `config/`: source and scoring configuration. |
23 | | -- `data/raw/`: raw fetch artifacts by date. |
24 | | -- `data/normalized/`: latest normalized source outputs and merged state. |
25 | | -- `data/snapshots/`: daily state snapshots. |
26 | | -- `reports/daily/`: generated daily markdown reports. |
27 | | -- `reports/weekly/`: generated weekly markdown reports. |
28 | | -- `backlog/candidate-queue.md`: scored deep-dive candidate queue. |
29 | | -- `deep-dives/`: manually curated deep-dive notes (scaffold from `../../templates/deep-dive/`). |
30 | | -- `scripts/`: data collection, normalization, scoring, and report generation. |
| 21 | +```text |
| 22 | +config/ sources.yaml + scoring.yaml |
| 23 | +data/raw/<YYYY-MM-DD>/ Per-source audit JSON (latest only — pruned) |
| 24 | +data/normalized/ datatracker.json / mailarchive.json / github.json / |
| 25 | + wimse_state.json / candidates.json |
| 26 | +data/snapshots/<YYYY-MM-DD>/ Snapshot of normalized state |
| 27 | +reports/daily/<YYYY-MM-DD>.md Latest daily report |
| 28 | +reports/weekly/<YYYY>-W<NN>.md Latest weekly digest |
| 29 | +deep-dives/_backlog.md Scored deep-dive candidate queue |
| 30 | +deep-dives/<topic>/ Investigation notes |
| 31 | +scripts/ _common.py + collect_*.py / normalize.py / score.py / report.py |
| 32 | +``` |
31 | 33 |
|
32 | | -## Local Usage |
| 34 | +## Usage |
33 | 35 |
|
34 | 36 | ```bash |
35 | 37 | python3 -m venv .venv |
36 | 38 | source .venv/bin/activate |
37 | 39 | make install |
38 | | -make update |
| 40 | +make update # collect + normalize + score + report-daily + prune |
| 41 | +make weekly # collect + normalize + score + report-weekly + prune |
39 | 42 | ``` |
40 | 43 |
|
41 | | -`make update` runs: |
42 | | - |
43 | | -1. Source collectors |
44 | | -2. State normalization |
45 | | -3. Candidate scoring |
46 | | -4. Daily report rendering |
47 | | - |
48 | | -Useful targets: |
49 | | - |
50 | | -- `make collect` |
51 | | -- `make normalize` |
52 | | -- `make score` |
53 | | -- `make report-daily` |
54 | | -- `make report-weekly` |
55 | | -- `make weekly` |
| 44 | +Set `GITHUB_TOKEN` (or `GH_TOKEN`) to avoid GitHub API rate limits. |
56 | 45 |
|
57 | 46 | ## Automation |
58 | 47 |
|
59 | | -Driven from the repo-root `.github/workflows/{daily-update,weekly-digest}.yml`. Both workflows commit generated outputs when changed. |
| 48 | +Driven by repo-root `.github/workflows/{daily-update,weekly-digest}.yml` (matrix over all tracks). |
60 | 49 |
|
61 | 50 | ## Notes |
62 | 51 |
|
63 | | -- Generated files are intentionally committed for historical traceability. |
64 | | -- Scoring logic is intentionally simple and transparent; tune weights in `config/scoring.yaml`. |
| 52 | +- Scoring weights live in `config/scoring.yaml` (`recency_days`, `weights`, `priority_keywords`). |
| 53 | +- Retention: `make prune` keeps only the latest report and snapshot. For older state use git history. |
0 commit comments