You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
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.
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.
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/.
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.
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.
check-charset-corpus-drift.yml is consumed by every downstream npm-packing repo via @gha/v1. Any change to it (or to its caller-permissions contract) is high-blast-radius. See CLAUDE.md "Tag Stability Policy" — applies to anything in .github/workflows/.
Post-launch service hardening (#32) — none of the open issues are on this board; if a consumer-side AlbumSearchResult nullability fix lands during the hardening project, it'll be a sub-issue of the BS epic, not this repo.
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.yamldrives TS codegen (consumed by Backend-Service + dj-site via@wxyc/sharedon 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 reusablecheck-charset-corpus-drift.ymlworkflow on the movinggha/v1tag.P0 sequencing — recommended order
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.nullable: trueto everyAlbumSearchResult/LibraryAlbumResponsefield whose description says "Null if unknown" or whose backing column is nullable.oasdiffwill flag breaking; coordinate a major-version bump and fan out to consumers (Backend-ServiceAlbumSearchResultRowtype fix inapps/backend/services/library-search.service.ts, dj-site selectors, Python decoders in rom + LML, iOS already lenient viadecodeIfPresent).publish.yml+ recent inline version-bump commits) and re-scope to the three real gaps: (a) CI gate failing api.yaml change withoutpackage.jsonbump, (b) CI gate enforcing the dist/ + generated-artifact policy (decide whether dist/ is committed or generated-on-tag), (c) tag automation on merge.generate:pythonalready exists inpackage.json; commit the output, pindatamodel-code-generatorin this repo's tooling, then file the two consumer PRs against LML and rom to delete their local scripts.generate:swift+generate:kotlinalready exist inpackage.json. The real gaps are CI parity (currently onlygenerate:typescriptruns 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/.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 byv*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 bypublish.yml. Either is defensible; the duplication today is the smell.Major-version bump policy
#140 + #127 widen TS types from non-null to nullable.
oasdiffwill flag breaking. The repo is currently on1.x. Two options: (a) cutv2.0.0and coordinate consumer migrations, or (b) treat the spec as the truth and the prior non-null types as the bug, ship asv1.xwith 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)
e6ac42a(2026-05-19) matching the proposed approach line-for-line. See per-issue comment #66 (2026-06-02).Cross-repo dependencies
addBlockedBy) + body## Blocked bysectionscripts/generate_api_models.sh, invoke this repo's codegen; rom — sameAlbumSearchResultRowinapps/backend/services/library-search.service.tsto match wire (`label?: stringCross-repo runtime risks
check-charset-corpus-drift.ymlis consumed by every downstream npm-packing repo via@gha/v1. Any change to it (or to its caller-permissions contract) is high-blast-radius. See CLAUDE.md "Tag Stability Policy" — applies to anything in.github/workflows/.Cluster map (7 open)
Active org projects this repo touches
.github/workflows/are adjacent.How to find work
## Blocked bybody section. Only Mark AlbumSearchResult.on_streaming (and peers) as nullable to match documented behavior #127 is currently blocked (by AlbumSearchResult declares label (and others) as required but the wire emits nulls #140).Notes for the next session