Skip to content

feat(artifact)!: resolve explicitly versioned rows across manifests - #346

Open
lokewate wants to merge 1 commit into
feat/manifest-setfrom
feat/manifest-explicit-versions
Open

lokewate wants to merge 1 commit into
feat/manifest-setfrom
feat/manifest-explicit-versions

Conversation

@lokewate

@lokewate lokewate commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

Summary

A manifest row with a version is static data a form fetches by ID and version, outside any flow. This PR makes such a row mean the same file in every manifest that lists it, and adds GetExplicit to fetch it without a manifest version. Split out of #305.

Stack

Manifest versioning, in five PRs to review and merge in order. Each one builds and passes its tests on its own.

  1. feat(artifact)!: load versioned manifests as a set #305 artifact: load versioned manifests as a set
  2. feat(artifact)!: resolve explicitly versioned rows across manifests #346 artifact: resolve explicitly versioned rows across manifests ← this PR
  3. feat(artifact): load newer manifests on demand #319 artifact: load newer manifests on demand
  4. feat(workflow)!: carry the manifest version through every workflow #322 workflow: carry the manifest version through every workflow
  5. feat(taskflow)!: resolve a task's templates through its manifest version #306 taskflow: resolve a task's templates through its manifest version

#320 (validate every artifact a manifest lists) and #321 (manifestcheck) are parked: pinning doesn't need them, and a release job can bring validation back later.

Type of Change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Documentation update
  • Refactoring (no functional changes)
  • Performance improvement
  • Other (please describe):

Changes Made

  • LoadSet rejects a manifest that points an (id, kind, version) at a different path than an earlier manifest did, so an explicit version always names one file.
  • GetExplicit[T](ctx, set, id, version) fetches such an artifact from whichever manifest lists it.
  • Latest returns a manifest's row without a version when there is one, even when the manifest also lists explicit versions of the same ID.
  • Breaking: workflowdef.LoadVersion is removed. A workflow is resolved through the flow's manifest version with Load, never by a version of its own.

Testing

  • I have tested this change locally
  • I have added tests that prove my fix is effective or that my feature works
  • I have tested edge cases
  • All existing tests pass

go test -race ./artifact/...: explicit-version path changes across manifests, GetExplicit for listed, unlisted and empty versions, and Latest preferring the unversioned row.

Checklist

  • My code follows the project's style guidelines
  • I have performed a self-review of my code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have checked that there are no merge conflicts

Related Issues

Part of OpenNSW/one-trade-artifacts#243. Host: OpenNSW/nsw-srilanka#660.

Screenshots/Demo

N/A

Additional Notes

N/A

🤖 Generated with Claude Code

@coderabbitai

coderabbitai Bot commented Oct 23, 2026 •

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: ca7610ef-8487-40b3-bfa6-ea7feef23528
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

A manifest row with a version (static data a form fetches by ID and
version) is requested outside any flow, so it must mean the same file in
every manifest that lists it.

- LoadSet rejects a manifest that points an (id, kind, version) at a
  different path than an earlier manifest did.
- GetExplicit fetches such an artifact from whichever manifest lists it.
- Within a manifest, Latest returns the row without a version when there
  is one, even if the manifest also lists explicit versions of the ID.
- workflowdef.LoadVersion goes: a workflow is resolved through the
  manifest version, never by an explicit version of its own.

BREAKING CHANGE: workflowdef.LoadVersion is removed; resolve the
workflow through the flow's manifest version with Load.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@lokewate
lokewate force-pushed the feat/manifest-explicit-versions branch from 189d1c2 to e0ed4ea Compare October 25, 2026 05:00

@mushrafmim mushrafmim left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants