Skip to content

release: prepare v0.1.0 — steps, dependencies, and blockers (#4 and dependents) #68

Description

@maehr

Tracking issue for cutting v0.1.0, the first citable baseline. Everything below is the current state as of today, not a plan in the abstract — PR #4 has been open and green for a while, and the work that has accumulated on staging since then is what actually decides when it can go.

v0.1.0 means: the first git tag in this repo, the first GitHub Release with an attached data dump, and the first version of the standard anyone can cite. There are no tags yet in either textrefs/textrefs.org or textrefs/registry, so nothing here is a migration — it is all first-time setup.


1. The dependency graph

                textrefs.org                          textrefs/registry
                ------------                          -----------------
  #63  ADR-0005 preferred citation system  ──┐    #11  docs: preferred/additional systems
        └─ #67  ADR-0006 relation vocabulary ─┤    #13  ADR-0006 data reclassification
                                              │           └─ based on #11
  #71  resolver `vars` mapping ──► #72  ──────┤    #15–#19 resolver review
                                              │           └─ #20  (on #13, blocked on #72)
                    staging ◄─────────────────┘
                       │
                      #4  Release v0.1.0: staging → main
                       │
                     tag v0.1.0 → release.yml → GitHub Release + dump

#67 is stacked on #63; #13 is stacked on #11. The two repos are coupled: #67 (schema) and #13 (data) are one breaking change split across repositories.

The resolver review (#72 + #20, closing #71 and textrefs/registry#15#19) is a second, later cross-repo pair with the same shape: #72 adds the vars resolver field to the compiler, #20 is the data that uses it. #20 is stacked on #13 and stays red until #72 reaches staging. Neither is a v0.1.0 blocker — see §4.

2. Decided: ADR-0005/0006 are in v0.1.0

This was the only real branch point, and everything else follows from it.

Rationale, as recommended and now adopted. Both are breaking changes to identifier-bearing structures, and both re-mint IRIs. Before the first tag that costs nothing — every record is draft under ADR-0004 and no identifier has ever been published. After the tag, the same change costs a documented migration against a baseline people may already cite. This is the same timing argument ADR-0006 makes for itself, applied one level up. The counter-argument — that it delays a release which is already green — was weighed and not taken.

Two consequences follow immediately: #60 (ADR-0005), #58 and #59 (ADR-0006) are now v0.1.0 issues, closed by #63 and #67 respectively; and the merge sequence in §3 is the actual plan rather than one of two options.

3. Merge sequence

The two repos guard each other, so the order is not free. There are now two coupled schema+data pairs (#67/registry#13, then #72/registry#20), and the second cannot start until the first is through:

  • textrefs.org CI requires the data/ submodule pointer to be an ancestor of registry/main (.github/workflows/validate.yml).
  • registry CI validates its records against textrefs.org@staging (registry/.github/workflows/validate.yml).

For a coordinated schema+data change neither side can go green first. Sequence:

All nine steps apply — going straight to #4 is off the table per §2, and steps 6–8 per §4.

4. Before tagging

5. Tagging and release mechanics

  • Merge chore(release): v0.1.0 — first citable baseline #4 into main.
  • Tag main as v0.1.0 and push the tag. This triggers .github/workflows/release.yml.
  • Verify the workflow: it checks out with submodules: recursive, runs npm run build:data, and attaches dist/dump/*.jsonl + dist/dump/datapackage.json with fail_on_unmatched_files: true. This has never run. If the dump paths are wrong the release fails after the tag is already public — consider a workflow_dispatch dry run first, which the workflow already supports. With the resolver review in, that dry run matters more: npm run build:data now emits a 54 MB references.jsonl (well inside GitHub's 2 GB asset limit, but no longer a trivial upload), and the full npm run build takes ~8 minutes for 204,347 pages. Check the workflow's timeout headroom rather than assuming the previous ~3-minute build is representative.
  • Confirm the pinned data/ commit at tag time is the one you want frozen into the release — main "consumes pinned SHAs at release time" per the registry workflow's comment.
  • Check the generated release notes (generate_release_notes: true) against the git-cliff CHANGELOG.md; two sources of truth, decide which one leads.

6. Registry side

  • The registry uses calendar tags vYYYY.MM.N and has none yet. Decide whether v0.1.0 of the standard is accompanied by a first registry export tag, or whether the dump attached to this release is sufficient for now.
  • datapackage.json's SemVer-without-v version needs to be set deliberately for the first export.
  • The first export ships 67,959 references across 12 works, per the §4 decision — not the ~39,200 that were in staging when this issue was opened. Set the datapackage.json version knowing that, and say the figure in the release notes: it is the most visible difference between this baseline and anything cited from an earlier snapshot.

7. Housekeeping


Both open decisions are settled (2026-08-12): ADR-0005 and ADR-0006 ship in v0.1.0 (§2), and so does the resolver review (§4). Everything above is mechanical from here — the merge sequence in §3 is the critical path, and it is now nine steps across two repositories.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions