Skip to content

Commit 627800f

Browse files
authored
Merge branch 'develop' into claude/vortexpair-rfc
2 parents 1b141bf + 5cf675e commit 627800f

17 files changed

Lines changed: 388 additions & 2642 deletions

.github/workflows/ci.yml

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,32 +36,44 @@ jobs:
3636
- name: Install dependencies
3737
run: bun install
3838

39-
- name: Check proposal matches PR number
39+
- name: Check RFC number matches PR number
4040
run: |
4141
BASE_SHA="${{ github.event.pull_request.base.sha }}"
4242
HEAD_SHA="${{ github.event.pull_request.head.sha }}"
4343
PR_NUMBER="${{ github.event.pull_request.number }}"
4444
45-
CHANGED_PROPOSALS=$(git diff --name-only "$BASE_SHA" "$HEAD_SHA" -- 'proposals/' \
46-
| grep -v '^proposals/0000-template\.md$' || true)
45+
# Grandfathered RFCs that predate the PR number convention
46+
GRANDFATHERED="5 15 23 24 27 29 33"
4747
48-
COUNT=$(echo "$CHANGED_PROPOSALS" | grep -c . || true)
48+
# Only check newly added RFC files, not moved/renamed ones
49+
CHANGED_RFCS=$(git diff --name-only --diff-filter=A "$BASE_SHA" "$HEAD_SHA" -- 'rfcs/' \
50+
| grep -v '^rfcs/0000-template\.md$' || true)
51+
52+
COUNT=$(echo "$CHANGED_RFCS" | grep -c . || true)
4953
5054
if [ "$COUNT" -gt 1 ]; then
51-
echo "::error::PR touches $COUNT proposals. Only one proposal per PR is allowed."
52-
echo "$CHANGED_PROPOSALS"
55+
echo "::error::PR touches $COUNT RFCs. Only one RFC per PR is allowed."
56+
echo "$CHANGED_RFCS"
5357
exit 1
5458
fi
5559
5660
if [ "$COUNT" -eq 1 ]; then
57-
FILE=$(echo "$CHANGED_PROPOSALS" | head -1)
61+
FILE=$(echo "$CHANGED_RFCS" | head -1)
5862
FILENAME=$(basename "$FILE")
5963
FILE_NUMBER=$(echo "$FILENAME" | grep -oE '^[0-9]+' || true)
6064
# Strip leading zeros for comparison
6165
FILE_NUM=$((10#$FILE_NUMBER))
6266
67+
# Skip check for grandfathered RFCs
68+
for GF in $GRANDFATHERED; do
69+
if [ "$FILE_NUM" -eq "$GF" ]; then
70+
echo "RFC $FILE_NUM is grandfathered, skipping PR number check."
71+
exit 0
72+
fi
73+
done
74+
6375
if [ "$FILE_NUM" -ne "$PR_NUMBER" ]; then
64-
echo "::error::Proposal number ($FILE_NUM from $FILENAME) does not match PR number ($PR_NUMBER)."
76+
echo "::error::RFC number ($FILE_NUM from $FILENAME) does not match PR number ($PR_NUMBER)."
6577
exit 1
6678
fi
6779
fi

.github/workflows/deploy.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ on:
44
push:
55
branches:
66
- develop
7+
pull_request:
8+
types: [opened, closed, reopened]
9+
branches:
10+
- develop
711

812
permissions:
913
contents: read
@@ -23,6 +27,7 @@ jobs:
2327
- name: Checkout
2428
uses: actions/checkout@v4
2529
with:
30+
ref: develop
2631
fetch-depth: 0
2732

2833
- name: Setup Bun

.github/workflows/preview.yml

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
name: RFC Preview
2+
3+
on:
4+
pull_request:
5+
branches:
6+
- develop
7+
8+
permissions:
9+
contents: read
10+
deployments: write
11+
12+
jobs:
13+
preview:
14+
env:
15+
GH_TOKEN: ${{ github.token }}
16+
runs-on: ubuntu-latest
17+
environment:
18+
name: rfc-preview
19+
url: ${{ steps.upload.outputs.artifact-url }}
20+
steps:
21+
- name: Checkout
22+
uses: actions/checkout@v4
23+
with:
24+
fetch-depth: 0
25+
26+
- name: Setup Bun
27+
uses: oven-sh/setup-bun@v2
28+
29+
- name: Install dependencies
30+
run: bun install
31+
32+
- name: Build preview
33+
run: bun run index.ts --preview
34+
35+
- name: Upload RFC preview
36+
id: upload
37+
uses: actions/upload-artifact@v7
38+
with:
39+
name: rfc-preview-pr-${{ github.event.pull_request.number }}
40+
path: ./dist/preview.html
41+
archive: false

CLAUDE.md

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,12 @@ Static site generator for Vortex RFC proposals built with Bun.
77
```
88
index.ts - Main build script and dev server
99
styles.css - Site styling (light/dark themes)
10-
proposed/ - RFC markdown files in proposed state
11-
accepted/ - RFC markdown files in accepted state
12-
completed/ - RFC markdown files in completed state
10+
rfcs/ - RFC markdown files (merged to develop = accepted)
1311
dist/ - Build output (gitignored)
1412
```
1513

16-
RFC filenames follow the format `NNNN-slug.md` (e.g., `0001-galp-patches.md`).
17-
Numbering is global across all states - no duplicates allowed.
14+
RFC filenames follow the format `NNNN-slug.md` (e.g., `0027-patches-format.md`).
15+
The RFC number must match the PR number used to propose it. No duplicate numbers allowed.
1816

1917
## Commands
2018

@@ -26,29 +24,24 @@ bun run clean # Remove dist/
2624

2725
## How the Build Works
2826

29-
1. Scans `proposed/`, `accepted/`, `completed/` for RFC files
27+
1. Scans `rfcs/` for RFC markdown files
3028
2. Parses RFC number from filename (e.g., `0002-foo.md` → RFC 0002)
31-
3. Determines state from containing folder
32-
4. Extracts title from first `# ` heading
33-
5. Converts markdown to HTML using `Bun.markdown.html()`
34-
6. Generates `dist/index.html` (table of contents with filter UI)
35-
7. Generates `dist/rfc/{number}.html` for each RFC
29+
3. Extracts title from first `# ` heading
30+
4. Converts markdown to HTML using `Bun.markdown.html()`
31+
5. Generates `dist/index.html` (table of contents)
32+
6. Generates `dist/rfc/{number}.html` for each RFC
3633

3734
## Dev Server
3835

3936
- Uses `Bun.serve()` to serve static files from `dist/`
40-
- Watches `proposed/`, `accepted/`, `completed/`, and `styles.css` for changes
37+
- Watches `rfcs/` and `styles.css` for changes
4138
- SSE endpoint at `/__reload` for live reload
4239

43-
## RFC States
40+
## RFC Workflow
4441

45-
RFCs progress through three states by moving files between folders:
46-
47-
- **proposed**: New RFCs under discussion
48-
- **accepted**: Approved RFCs ready for implementation
49-
- **completed**: Fully implemented RFCs
50-
51-
The index page shows a state pill for each RFC and supports filtering by state.
42+
1. Open a PR with a new file `rfcs/NNNN-slug.md` where NNNN matches the PR number
43+
2. PR builds a preview artifact for reviewers
44+
3. Merging the PR to `develop` accepts the RFC
5245

5346
## Styling
5447

accepted/.keep

Whitespace-only changes.

completed/.keep

Whitespace-only changes.

0 commit comments

Comments
 (0)