Skip to content

feat(artifact): add manifestcheck for artifacts repositories' CI - #321

Closed
lokewate wants to merge 1 commit into
feat/manifest-validatefrom
feat/manifestcheck
Closed

lokewate wants to merge 1 commit into
feat/manifest-validatefrom
feat/manifestcheck

Conversation

@lokewate

@lokewate lokewate commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

Summary

manifestcheck checks artifact bundles on disk, for an artifacts repository's CI. OpenNSW/one-trade-artifacts#156 runs it on every bundle on every pull request.

Stack

Manifest versioning, split into six 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): load newer manifests on demand #319 artifact: load newer manifests on demand
  3. feat(artifact): validate every artifact a manifest lists #320 artifact: validate every artifact a manifest lists
  4. feat(artifact): add manifestcheck for artifacts repositories' CI #321 artifact: add manifestcheck for artifacts repositories' CI ← this PR
  5. feat(workflow)!: carry the manifest version through every workflow #322 workflow: carry the manifest version through every workflow
  6. feat(taskflow)!: resolve a task's templates through its manifest version #306 taskflow: resolve a task's templates through its manifest version

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

  • artifact/cmd/manifestcheck <bundle>... checks each bundle directory:
    • manifest versions are contiguous from 1;
    • every manifest loads under LoadSet's rules;
    • Validate passes for every version, with each file read and checked once.
  • -base <dir>, the root of a checkout of the base branch, also fails the run if a manifest published there, or a file such a manifest lists, was changed or deleted.
  • Reads stay inside each bundle.

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

Run with go test -race ./artifact/cmd/.... The tests cover a version gap, a dangling reference, and editing or deleting a published manifest or file. manifestcheck passes on all 11 bundles of one-trade-artifacts main (each manifest.json copied to manifest_v1.json), including with -base.

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

Related to OpenNSW/one-trade-artifacts#156, which pins MANIFESTCHECK_VERSION to this stack.

Screenshots/Demo

N/A

🤖 Generated with Claude Code

manifestcheck checks bundles on disk, one directory each: manifest
versions are contiguous from 1, every manifest loads under LoadSet's
rules, and Validate passes for every version, reading and checking each
file once. With -base, the root of a checkout of the base branch, it
also fails if a manifest published there, or a file one lists, was
changed or deleted. Reads stay inside each bundle.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 20, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true
  • 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.

@lokewate

Copy link
Copy Markdown
Contributor Author

Parked: pinning flows to a manifest version doesn't need this, so it's out of the manifest versioning stack (#305 → #346 → #319 → #322 → #306) to keep each PR small. Validation can come back with the release job (OpenNSW/one-trade-artifacts#243); the branch is kept.

@lokewate lokewate closed this Oct 23, 2026
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.

1 participant