feat(jobnik-openapi): make the specification exist exactly once - #6
Open
CptSchnitz wants to merge 1 commit into
Open
feat(jobnik-openapi): make the specification exist exactly once#6CptSchnitz wants to merge 1 commit into
CptSchnitz wants to merge 1 commit into
Conversation
Introduce jobnik-openapi, a private unscoped workspace package that owns the OpenAPI specification: the versioned source (openapi_v1.yaml), the build that merges it into openapi3.yaml, the specification lint task, and the generated request/response types (openapi.d.ts). The manager takes it as a runtime dependency, imports request/response types from it, and resolves the specification file through the module system (openapiFilePath) instead of a copied asset. Its own generated declaration and generation script are deleted. The SDK takes it as a development-time dependency only, since the SDK is published and this package is not. It keeps its own generation script, which rewrites job/stage/task identifier schemas into branded types, and continues to ship a copy of the specification in its build output because it parses the specification at runtime. A new generate:check turbo task reruns both the package's and the SDK's generators and fails if the result differs from what is committed, wired into the pull-request workflow as "Specification drift". Regenerating the SDK's committed types against the current toolchain incidentally fixed pre-existing comment-formatting drift unrelated to this move.
Coverage Report for apps/jobnik-manager
File Coverage
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CptSchnitz
marked this pull request as ready for review
August 23, 2026 11:24
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Introduce jobnik-openapi, a private unscoped workspace package that owns
the OpenAPI specification: the versioned source (openapi_v1.yaml), the
build that merges it into openapi3.yaml, the specification lint task, and
the generated request/response types (openapi.d.ts).
The manager takes it as a runtime dependency, imports request/response
types from it, and resolves the specification file through the module
system (openapiFilePath) instead of a copied asset. Its own generated
declaration and generation script are deleted.
The SDK takes it as a development-time dependency only, since the SDK is
published and this package is not. It keeps its own generation script,
which rewrites job/stage/task identifier schemas into branded types, and
continues to ship a copy of the specification in its build output because
it parses the specification at runtime.
A new generate:check turbo task reruns both the package's and the SDK's
generators and fails if the result differs from what is committed, wired
into the pull-request workflow as "Specification drift".
Regenerating the SDK's committed types against the current toolchain
incidentally fixed pre-existing comment-formatting drift unrelated to this
move.
Stack created with GitHub Stacks CLI • Give Feedback 💬