feat(schema): add input can be optional on model configuration#114
Merged
Conversation
- Add is_optional?: boolean to ModelIO interface in mint-types.ts - Add is_optional field at junction level in model-info.graphql inputs block - Add is_optional field at junction level in get-modelcatalog-configuration.graphql inputs block
…behavior - Import modelIOFromCatalogGQL in test file - Test case: junction row with is_optional=true returns true - Test case: junction row without is_optional defaults to false
…nction row - Change signature from modelIOFromCatalogGQL(io) to modelIOFromCatalogGQL(junctionRow, entityKey?) - Read is_optional from junctionRow (defaults false when absent) - Update input_files caller to pass full row instead of row.input - Update output_files caller to pass entityKey='output' - Regenerate types.ts with is_optional in modelcatalog_configuration_input fragment types
- appWithOptionalInput: app with one OPTIONAL fileInput named optional_file - appWithUnknownRequiredInput: app with REQUIRED fileInput not in model.input_files - modelWithOptionalInput: model with one optional input (is_optional=true) - Three new test cases: optional+no-dataset skipped, unknown-name throws, optional+dataset included
- When modelInput.is_optional=true and no datasets bound, return [] with info log - Existing throw for unknown input name (name not found in model.input_files) unchanged - Optional inputs with datasets bound continue to be included normally
Branch trigger '*' does not match slashed names like gsd/phase-12-is-optional, so feature branch pushes never produced a docker image. Mirrors fix already applied in ui (e0547dd) and model-catalog-api (7109442). docker/metadata-action type=ref,event=branch already sanitizes slashes in the produced tag, and the SHA tag is already emitted, so trigger widening alone is sufficient here.
Phase 12-03 codegen (0e765b1) removed the model_io: Model_Io field from Thread_Model_Io and replaced it with modelcatalog_dataset_specification. The thread/get.graphql query still aliases that relation as model_io, so the runtime payload is correct, but the codegen schema type no longer carries the alias. Casts the iterated binding to a local shape with model_io and dataslice_id so the file compiles. Surfaced once CI started actually running on slashed feature branches (2e57edd).
This was referenced Apr 29, 2026
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.
Summary
branches: '*'tobranches: '**'so slashed branch names (e.g.gsd/phase-12-is-optional) actually publish images. Mirrors fixes already applied in ui e0547dd and model-catalog-api 7109442.thread_model.data_bindingsto a local shape withmodel_iosoexecutions/index.tscompiles. Phase 12-03 codegen removed themodel_io: Model_Iofield fromThread_Model_Ioand replaced it withmodelcatalog_dataset_specification. The query inthread/get.graphqlstill aliases that relationship asmodel_io, so runtime payload is correct, but the codegen schema type no longer carries the alias.This bug only surfaced once branch trigger was widened (since the build never ran on slashed feature branches before). docker/metadata-action
type=ref,event=branchalready sanitizes slashes, and the SHA tag is also emitted, so trigger widening alone is sufficient on this repo (no SAFE_BRANCH step needed).Verification
npx jest src/classes/tapis/adapters/tests/jobs.test.ts -t optional→ bothoptional input ... is skippedandoptional input ... is includedpass.NODE_OPTIONS=--openssl-legacy-provider npm run buildcompiles clean.mintproject/ensemble-manager:ef84ba3a7d0d7fbb05bd84a1c29636d4cabd5e4edeployed to dev cluster (helm rev 58, pod healthy on new tag, deployed phase 12-04 TapisJobService skip-when-optional logic).Test plan