Skip to content

Ecosystem on 0.6: every package and app, in one checklist #101

Open

Description

@hhkaos

@opentechevents/[email protected] is on npm (provenance-signed), spec/v0.6 is published, and spec/v0.5 is tagged and frozen. This is the tracking issue for getting the whole ecosystem onto it — every package and app in one place, so nothing is quietly left on 0.4.

What changed, and what it costs you

0.5.0 → 0.6.0 is a no-op for the schemas. Not one field was added, removed or redefined; 0.6 exists to carry four decisions (D039–D042). So for most packages the work is: bump the dependency, change the specVersion you emit, done.

0.4.x → 0.6.0 is where the real work is, and most of the ecosystem is still on 0.4.x. New since 0.4: speakers (with affiliation), recordings, contributing, feed.alternates, feed.covers, partOf.offers + offers[].scope. One deliberate breaking change: multi-part event pricing (D032).

Three decisions with teeth for implementers:

  • D039 — JSON only. If any tool accepts or emits YAML, stop. YAML 1.1 resolves unquoted no/NO to boolean false, and both collide with fields we define: NO is Norway in country's ISO 3166 enum, no is Norwegian in textLanguage.
  • D040 — an imported event's id is minted under a domain the community controls; <ics-url>#<UID> only when there is none. The fallback is sticky: never re-mint an id later, it duplicates the event for every consumer that stored the old one.
  • D042 — a future 1.0 will freeze validity, not the recommended profiles. The set of warnings is explicitly not a stable interface. Anything building a quality score on it should pin the profile file for the version it tested against.

And one package-level fix worth adopting everywhere: ajvOptions is now exported. The package used to document a bare strict: true, under which no OTE schema in any version has ever compiled. Pass the export, do not assemble options by hand.

Packages

All seven are published at 0.6.0 on npm.

Apps

Outside this repo

  • ote-reader — hard-rejects anything that is not exactly specVersion === '0.3.0'. Worse now than when this was filed: 0.3 left the support window when 0.5.0 and 0.6.0 published on the same day, so it is pinned to a version the kit itself now asks publishers to migrate off.
  • ote-template — needs nothing: its workflows call this repo's reusable workflows at @main.

Where this stands

Everything in this repo is on 0.6 and merged. Every package, every app. #69 (#111), #97 (#112), #104 (#106) and #105 (#113) are closed, and #70 went with them in #110.

One item left, and it is not in this repo:

  1. ote-reader — still hard-pinned to specVersion === '0.3.0', which is now out of the support window. feat(migrate): ote-migrate, for the version bump a sed gets wrong #112 gives it the migration path it did not have when this was filed.

Three things worth knowing that are not anybody's checkbox:

  • The support window is computed, not listed, so publishing two minors in one day slid it to {0.4, 0.5, 0.6} by itself.

    Adopter audit, live feeds, 2026-11-04 — the earlier note here said corunajug.org was the one left out of window. That is no longer true, and the adopter it does apply to is a different one:

    Adopter live specVersion
    CoruñaJUG 0.5.0 valid, in window — migrated 2026-11-03
    eventos.wiki 0.4.0 in window (oldest supported)
    Sarao 0.4.0 in window
    Community Builders 0.3.0 out of window — ote-validate exits 3

    Community Builders' feed (25 events, last updated 2026-08-24) migrates cleanly: ote-migrate takes it to a valid 0.6.0 and raises 25 D032 warnings, because every event is a part of the recurring "Encuentro mensual" set and carries its own offers. Whether those are admission or add-ons is their call, which is exactly what the warnings are for. Still a product decision (reach out, or let the health check flag it), not a code one.

  • pnpm-workspace.yaml carries a minimumReleaseAgeExclude for @opentechevents/[email protected] with TODO(2026-11-10). pnpm re-adds it on every same-day spec pin; remove it once the release is past the age window.

  • @opentechevents/migrate is new, so its first npm release cannot use trusted publishing. npm requires the package to exist before a trusted publisher can be configured: publish it once by hand, then add the trusted publisher in its npm settings. A missing OIDC config fails as a confusing 404. publish.yml documents this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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