Add ailang publish --validate-only flag --body Problem
The registry validator (Cloud Run) can lag behind the local ailang version. We hit this on the v0.13 string-interpolation migration: local ailang check passed (dev branch), the local ailang publish --dry-run passed (just builds tarball), but the actual upload failed because the Cloud Run validator was still pinned to v0.12.0 and couldn't parse the new ${...} interpolation syntax.
We only discovered the drift at tag time, after committing version bumps and pushing the tag. Rolling back is awkward.
Proposed fix
A new flag ailang publish --validate-only:
- Builds the tarball (same as
--dry-run)
- Uploads it to $AILANG_REGISTRY_VALIDATOR
- Server runs
ailang check (and verify if applicable)
- Server returns success/failure WITHOUT storing the package in the registry
- Local exits 0/1 based on validator response
This lets CI run on every PR/main push to catch validator drift before tagging. Equivalent to a "dry-run that actually exercises the validator."
Why not just use ailang publish in CI?
It would publish duplicate versions on every push.
Why not match the validator's ailang version locally?
The validator's version isn't published anywhere we can pin against, and it can change without notice.
Reproduction
ailang-parse v0.12.1 release on 2026-04-19 / 20: local check + dry-run both clean, registry upload failed with "PAR_UNEXPECTED_TOKEN" because validator was on v0.12.0. Required deploying validator v0.13.0 in the ailang repo and waiting before retrying.
Reported by: ailang-parse maintainer (Mark)
Reported by: cli via ailang messages
Add
ailang publish --validate-onlyflag --body ProblemThe registry validator (Cloud Run) can lag behind the local ailang version. We hit this on the v0.13 string-interpolation migration: local
ailang checkpassed (dev branch), the localailang publish --dry-runpassed (just builds tarball), but the actual upload failed because the Cloud Run validator was still pinned to v0.12.0 and couldn't parse the new ${...} interpolation syntax.We only discovered the drift at tag time, after committing version bumps and pushing the tag. Rolling back is awkward.
Proposed fix
A new flag
ailang publish --validate-only:--dry-run)ailang check(andverifyif applicable)This lets CI run on every PR/main push to catch validator drift before tagging. Equivalent to a "dry-run that actually exercises the validator."
Why not just use
ailang publishin CI?It would publish duplicate versions on every push.
Why not match the validator's ailang version locally?
The validator's version isn't published anywhere we can pin against, and it can change without notice.
Reproduction
ailang-parse v0.12.1 release on 2026-04-19 / 20: local check + dry-run both clean, registry upload failed with "PAR_UNEXPECTED_TOKEN" because validator was on v0.12.0. Required deploying validator v0.13.0 in the ailang repo and waiting before retrying.
Reported by: ailang-parse maintainer (Mark)
Reported by: cli via ailang messages