Skip to content

[Tracker] 2026-06-02 issue triage — 7 open #155

@jakebromberg

Description

@jakebromberg

End-of-day triage of all 7 open issues in this repo. Intended as the entry point for any contributor or agent picking up after 2026-06-02: where to start, what blocks what, which issues are obsolete, and which proposals overlap.

This repo is the API-contract source of truth for the org: api.yaml drives TS codegen (consumed by Backend-Service + dj-site via @wxyc/shared on GitHub Packages), Python codegen (consumed by request-o-matic + library-metadata-lookup), and Swift/Kotlin codegen (locally scripted; consumer migrations pending). It also publishes the reusable check-charset-corpus-drift.yml workflow on the moving gha/v1 tag.

P0 sequencing — recommended order

  1. Close setup-dev-environment.sh assigns same port to backend and auth #66. Already fixed in commit e6ac42a (2026-05-19); PR fix: setup-dev-environment.sh assigns same port to backend + auth when defaults are taken (subshell loses RESOLVED_PORTS) #136 closed but setup-dev-environment.sh assigns same port to backend and auth #66 stayed open. No work needed beyond the close.
  2. One nullability sweep PR covering AlbumSearchResult declares label (and others) as required but the wire emits nulls #140 + Mark AlbumSearchResult.on_streaming (and peers) as nullable to match documented behavior #127. Add nullable: true to every AlbumSearchResult / LibraryAlbumResponse field whose description says "Null if unknown" or whose backing column is nullable. oasdiff will flag breaking; coordinate a major-version bump and fan out to consumers (Backend-Service AlbumSearchResultRow type fix in apps/backend/services/library-search.service.ts, dj-site selectors, Python decoders in rom + LML, iOS already lenient via decodeIfPresent).
  3. Enforce release tag PR for every api.yaml schema change #105 re-scope, then implement. Drop the publish-tag complaints (already implemented via publish.yml + recent inline version-bump commits) and re-scope to the three real gaps: (a) CI gate failing api.yaml change without package.json bump, (b) CI gate enforcing the dist/ + generated-artifact policy (decide whether dist/ is committed or generated-on-tag), (c) tag automation on merge.
  4. Add Python codegen script alongside TS / Swift / Kotlin #107 finish + downstream migration. generate:python already exists in package.json; commit the output, pin datamodel-code-generator in this repo's tooling, then file the two consumer PRs against LML and rom to delete their local scripts.
  5. Add Swift and Kotlin codegen for mobile consumers #106 re-scope. Title misleads — generate:swift + generate:kotlin already exist in package.json. The real gaps are CI parity (currently only generate:typescript runs in CI), consumer migration of wxyc-ios-64 / library-scanner / WXYC-Android off hand-rolled DTOs, and a real publish channel (Swift package / Maven artifact) since the codegen targets local-only paths like ../wxyc-ios-64-copy/.
  6. Audit and fix naming inconsistencies in api.yaml #27 — long tail. Big naming-audit refactor with no traction in 2.5 months. Pick up only when bandwidth allows; could be a good first-issue split if scoped per-naming-class.

Critical / high severity

Cross-cluster conflicts (decide once before starting)

dist/ in-repo vs publish-on-tag

#105 calls for committing regenerated dist/ artifacts in every api.yaml PR. Current practice is: dist/ is committed (last touched 2026-05-28) but the source of truth for downstream consumers is the GitHub-Packages publish triggered by v* tag (publish.yml). Decide once whether dist/ stays committed (and gets a CI gate that diffs it against fresh codegen) or is gitignored and produced only by publish.yml. Either is defensible; the duplication today is the smell.

Major-version bump policy

#140 + #127 widen TS types from non-null to nullable. oasdiff will flag breaking. The repo is currently on 1.x. Two options: (a) cut v2.0.0 and coordinate consumer migrations, or (b) treat the spec as the truth and the prior non-null types as the bug, ship as v1.x with a Notes section documenting the consumer-side fix. (b) is faster but trains consumers to expect silent widening on patch versions. Pick once before opening the PR.

Obsolete / needs-revision (recommend close)

Cross-repo dependencies

Issue Blocked by Method
#127 #140 native (addBlockedBy) + body ## Blocked by section
Issue Downstream work (filed in this repo, lands in others)
#107 LML — delete scripts/generate_api_models.sh, invoke this repo's codegen; rom — same
#106 wxyc-ios-64 / library-scanner / WXYC-Android — adopt generated DTOs, retire hand-rolled
#140 / #127 Backend-Service — fix AlbumSearchResultRow in apps/backend/services/library-search.service.ts to match wire (`label?: string
#105 Org-wide — every consumer relies on tag-based publish working; this issue's CI gates reduce the chance of a silent contract regression

Cross-repo runtime risks

Cluster map (7 open)

Active org projects this repo touches

How to find work

Notes for the next session

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions