Skip to content

Commit 7c18877

Browse files
author
OpenClaude
committed
Restructure journal into validated YAML with generated views
Move from prose-in-markdown to one YAML file per model under models/, validated against a JSON Schema in CI. journal/*.md and INDEX.md are now generated from the YAML by scripts/build.py — single source of truth. Adds 11 new entries covering the April 2026 releases listed in the @RoundtableSpace tweet (Claude Opus 4.7, DeepSeek V4, Xiaomi MiMi V2.5, Qwen3.6 variants, GLM 5.1, Muse Spark, Grok 4.3 Beta, Kimi K2.6) as stubs — enough to make them discoverable, sparse where sources weren't available. Also: CONTRIBUTING.md, PR template, GitHub Actions workflow that fails if generated files drift from the YAML.
1 parent 8b88b4d commit 7c18877

25 files changed

Lines changed: 1173 additions & 31 deletions

.github/pull_request_template.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<!-- Thanks for contributing. Fill in the relevant sections and delete the rest. -->
2+
3+
## What this PR changes
4+
5+
<!-- New model entry? Correction? Schema change? Tooling? -->
6+
7+
## Checklist
8+
9+
- [ ] Added or updated a YAML file under `models/`
10+
- [ ] Filename stem matches `model_id`
11+
- [ ] `release_date` is the actual public-availability date (not announcement if they differ)
12+
- [ ] At least one URL in `sources` (official announcement, docs, or model card)
13+
- [ ] Ran `python scripts/validate.py` locally — passes
14+
- [ ] Ran `python scripts/build.py` and committed the regenerated `journal/` and `INDEX.md`
15+
16+
## Sources
17+
18+
<!-- Paste the primary announcement URLs you used. -->

.github/workflows/validate.yml

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
name: validate
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
8+
jobs:
9+
validate:
10+
runs-on: ubuntu-latest
11+
steps:
12+
- uses: actions/checkout@v4
13+
14+
- uses: actions/setup-python@v5
15+
with:
16+
python-version: "3.12"
17+
cache: pip
18+
19+
- name: Install dependencies
20+
run: pip install pyyaml jsonschema
21+
22+
- name: Validate model YAML against schema
23+
run: python scripts/validate.py
24+
25+
- name: Rebuild generated files
26+
run: python scripts/build.py
27+
28+
- name: Fail if generated files are out of date
29+
run: |
30+
if ! git diff --exit-code journal/ INDEX.md; then
31+
echo "::error::Generated files are out of date."
32+
echo "Run 'python scripts/build.py' locally and commit the result."
33+
exit 1
34+
fi

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
.venv/
2+
__pycache__/
3+
*.pyc

CONTRIBUTING.md

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
# Contributing
2+
3+
Thanks for helping keep the journal accurate.
4+
5+
## Adding a new model
6+
7+
1. Copy `models/TEMPLATE.yaml` to `models/<model_id>.yaml`. The filename
8+
stem must equal the `model_id` field (the validator enforces this).
9+
2. Fill in as much as you know. Fields you're unsure about can stay `null`
10+
— a sparse entry is fine, a wrong entry is not.
11+
3. Add at least one URL in `sources` pointing to a primary source (the
12+
official announcement post, the provider's model card, or the API docs).
13+
4. Run the toolchain locally:
14+
```sh
15+
python -m venv .venv
16+
.venv/bin/pip install pyyaml jsonschema
17+
.venv/bin/python scripts/validate.py
18+
.venv/bin/python scripts/build.py
19+
```
20+
5. Commit the new YAML **and** the regenerated `journal/*.md` and
21+
`INDEX.md`. CI will reject PRs where generated files drift from the
22+
YAML.
23+
6. Open a PR. The template has a checklist.
24+
25+
## Correcting an existing model
26+
27+
Edit the YAML under `models/`. Don't edit `journal/*.md` or `INDEX.md` by
28+
hand — they're regenerated from the YAML.
29+
30+
## Schema changes
31+
32+
Changes to `schema/model.schema.json` are welcome but require:
33+
- Migration of every existing `models/*.yaml` in the same PR.
34+
- A note in the PR description explaining why the change is necessary.
35+
36+
## What belongs here
37+
38+
- New model releases from any provider.
39+
- Material updates to existing entries (pricing change, new modality,
40+
context-window bump, deprecation).
41+
- Corrections.
42+
43+
## What doesn't
44+
45+
- Benchmarks and subjective reviews — this is a release record, not a
46+
leaderboard.
47+
- Rumors or leaks without a primary source.

INDEX.md

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
<!-- generated by scripts/build.py from models/*.yaml — do not edit -->
2+
3+
# Model Release Index
4+
5+
14 entries.
6+
7+
| Date | Model | Provider | Context | Modalities | Status |
8+
|------|-------|----------|---------|------------|--------|
9+
| 2026-04-24 | [GPT-5.5](models/gpt-5.5.yaml) | OpenAI | 256K | text, code | stable |
10+
| 2026-04-24 | [Claude Sonnet 4.6](models/claude-sonnet-4-6.yaml) | Anthropic | 200K | text, image, pdf | stable |
11+
| 2026-04-24 | [Claude Opus 4.7](models/claude-opus-4-7.yaml) | Anthropic | 1M | text, image, pdf | stable |
12+
| 2026-04-24 | [Claude Opus 4.6](models/claude-opus-4-6.yaml) | Anthropic | 200K | text, image, pdf | stable |
13+
| 2026-04-01 | [Xiaomi MiMi V2.5](models/xiaomi-mimi-v2-5.yaml) | Xiaomi || text | stable |
14+
| 2026-04-01 | [Qwen3.6 Plus](models/qwen3.6-plus.yaml) | Alibaba || text | stable |
15+
| 2026-04-01 | [Qwen3.6 Max](models/qwen3.6-max.yaml) | Alibaba || text | stable |
16+
| 2026-04-01 | [Qwen3.6 35B A3B](models/qwen3.6-35b-a3b.yaml) | Alibaba || text | stable |
17+
| 2026-04-01 | [Qwen3.6 27B](models/qwen3.6-27b.yaml) | Alibaba || text | stable |
18+
| 2026-04-01 | [Muse Spark](models/muse-spark.yaml) | Unknown || text | stable |
19+
| 2026-04-01 | [Kimi K2.6](models/kimi-k2-6.yaml) | Moonshot AI || text | stable |
20+
| 2026-04-01 | [Grok 4.3 Beta](models/grok-4-3-beta.yaml) | xAI || text | preview |
21+
| 2026-04-01 | [GLM 5.1](models/glm-5-1.yaml) | Zhipu AI || text | stable |
22+
| 2026-04-01 | [DeepSeek V4](models/deepseek-v4.yaml) | DeepSeek || text, code | stable |
23+
24+
## By provider
25+
26+
### Alibaba
27+
28+
- `qwen3.6-27b` — Qwen3.6 27B (2026-04-01)
29+
- `qwen3.6-35b-a3b` — Qwen3.6 35B A3B (2026-04-01)
30+
- `qwen3.6-max` — Qwen3.6 Max (2026-04-01)
31+
- `qwen3.6-plus` — Qwen3.6 Plus (2026-04-01)
32+
33+
### Anthropic
34+
35+
- `claude-opus-4-6` — Claude Opus 4.6 (2026-04-24)
36+
- `claude-opus-4-7` — Claude Opus 4.7 (2026-04-24)
37+
- `claude-sonnet-4-6` — Claude Sonnet 4.6 (2026-04-24)
38+
39+
### DeepSeek
40+
41+
- `deepseek-v4` — DeepSeek V4 (2026-04-01)
42+
43+
### Moonshot AI
44+
45+
- `kimi-k2-6` — Kimi K2.6 (2026-04-01)
46+
47+
### OpenAI
48+
49+
- `gpt-5.5` — GPT-5.5 (2026-04-24)
50+
51+
### Unknown
52+
53+
- `muse-spark` — Muse Spark (2026-04-01)
54+
55+
### Xiaomi
56+
57+
- `xiaomi-mimi-v2-5` — Xiaomi MiMi V2.5 (2026-04-01)
58+
59+
### Zhipu AI
60+
61+
- `glm-5-1` — GLM 5.1 (2026-04-01)
62+
63+
### xAI
64+
65+
- `grok-4-3-beta` — Grok 4.3 Beta (2026-04-01)
66+

README.md

Lines changed: 49 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,62 @@
11
# Model Release Journal
22

3-
An open, community-curated journal tracking model releases across the AI landscape.
3+
An open, community-curated record of AI model releases.
44

5-
## Why?
5+
- **Structured data**: one YAML file per model under [`models/`](models/).
6+
- **Validated**: every entry is checked against [`schema/model.schema.json`](schema/model.schema.json) in CI.
7+
- **Generated views**: [`INDEX.md`](INDEX.md) (all models, sortable by date or provider) and [`journal/`](journal/) (grouped by month) are rebuilt from the YAML — do not edit them by hand.
68

7-
Model releases happen constantly. Pricing changes, context windows expand, new capabilities drop. This journal exists to create a durable, diffable, community-editable record.
9+
See [`INDEX.md`](INDEX.md) for the current list.
810

9-
## Schema
11+
## Why
12+
13+
Model releases happen constantly. Pricing shifts, context windows expand, naming conventions drift. Storing this as structured data — not prose — makes it diffable, queryable, and durable.
1014

11-
Each entry tracks:
15+
## Schema
1216

13-
| Field | Description |
14-
|-------|-------------|
15-
| `model_id` | The exact model identifier (e.g., `claude-sonnet-4-6`, `gpt-4.5`) |
16-
| `provider` | The serving provider (e.g., `Anthropic`, `OpenAI`, `xAI`) |
17-
| `release_date` | ISO 8601 date (`YYYY-MM-DD`) |
18-
| `context_window` | Context window in tokens (e.g., `200000`) |
19-
| `modalities` | Comma-separated list (e.g., `text, image, audio`) |
20-
| `x_post` | Link to the official X/Twitter announcement post |
21-
| `notes` | What changed, why it matters |
17+
Each `models/<model_id>.yaml` entry has these fields (see [`schema/model.schema.json`](schema/model.schema.json) for the authoritative definition):
18+
19+
| Field | Required | Description |
20+
|-------|----------|-------------|
21+
| `model_id` | yes | Canonical slug, lowercase. Must match the filename stem. |
22+
| `display_name` | no | Human-readable name. |
23+
| `provider` | yes | Organization that serves the model. |
24+
| `release_date` | yes | ISO 8601 date of public availability. |
25+
| `context_window` | no | Input tokens (integer) or null. |
26+
| `output_tokens_max` | no | Max output tokens per response. |
27+
| `modalities` | no | Subset of `text, code, image, audio, video, pdf, embedding`. |
28+
| `status` | no | `preview`, `stable` (default), `deprecated`, `retired`. |
29+
| `supersedes` | no | `model_id` of the predecessor, if tracked here. |
30+
| `pricing` | no | `{ input_per_mtok, output_per_mtok, cached_input_per_mtok }`. |
31+
| `sources` | no | URLs of primary sources. |
32+
| `tags` | no | Free-form labels. |
33+
| `notes` | no | Short prose on what changed. |
2234

2335
## Contributing
2436

25-
1. Add an entry to `journal/YYYY-MM.md`
26-
2. Keep entries in reverse chronological order (newest first)
27-
3. Include the X post link when available — it is the primary source
37+
See [`CONTRIBUTING.md`](CONTRIBUTING.md). Short version:
38+
39+
```sh
40+
cp models/TEMPLATE.yaml models/<model_id>.yaml
41+
# edit fields
42+
python -m venv .venv && .venv/bin/pip install pyyaml jsonschema
43+
.venv/bin/python scripts/validate.py
44+
.venv/bin/python scripts/build.py
45+
git add models/ journal/ INDEX.md
46+
```
47+
48+
## Repository layout
49+
50+
```
51+
schema/model.schema.json # JSON Schema for entries
52+
models/<model_id>.yaml # one file per model (source of truth)
53+
models/TEMPLATE.yaml # copy this to start a new entry
54+
scripts/validate.py # schema + sanity checks (CI enforces)
55+
scripts/build.py # regenerates journal/ and INDEX.md
56+
journal/YYYY-MM.md # generated monthly view
57+
INDEX.md # generated global index
58+
.github/workflows/ # CI
59+
```
2860

2961
## License
3062

0 commit comments

Comments
 (0)