Conversation
adrian-lorenzo
approved these changes
Sep 14, 2026
adrian-lorenzo
left a comment
Member
There was a problem hiding this comment.
Thanks for fixing this.
Verified the shared validation and packaged CLI behavior; no blocking issues.
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.
What changes
Have
facility doctorand the API use the same YAML parser and Zod schema for.facility.yml, so doctor catches manifests the server would reject.The shared parser stays in the published CLI package. The API imports it, derives its types from it, and includes the file in Turbo's cache inputs so parser changes invalidate cached builds. The API keeps its existing error code and manifest hash behavior.
The CLI adds
yamlandzod, which the API already uses and the lockfile already contains. This is a nonbreaking validation fix: invalid manifests fail earlier, with no data migration or changes to permissions or budgets.Why
Closes #354
A successful doctor check should mean the manifest passes the server's validation. The current regular expressions let unsupported fields and malformed structures through, so users only find out later when they try to create a workspace.
Verification
I ran the checks in a local Docker Sandbox microVM, with no host directories mounted.
init, and checked it withdoctor --json. It accepted the generated manifest and rejected it after I added an unknown environment field.pnpm verifypassed.I couldn't complete the Docker workspace checks. The published runner is
linux/amd64, and the local sandbox is ARM64. It exits withexec /usr/local/bin/docker-entrypoint.sh: exec format error; the test then gets HTTP 409 because the container has stopped. Trying emulation inside the sandbox didn't fix it. These checks still need to pass on a compatible runner before merge.pnpm verifypasses locally