[Security] Make runtime job types semantically safe#241
Open
fettpl wants to merge 4 commits into
Open
Conversation
fettpl
force-pushed
the
p1/issue-223-runtime-job-types
branch
from
July 17, 2026 22:28
d6609bd to
1639cc6
Compare
Author
|
@0xSero This ready/non-draft fork PR now points to independently reviewed exact head e4ec7a8. Local focused, controller, full-repository, pre-push, production desktop, strict installed-signature, and live desktop-health validation passed. Its current-head workflows are waiting at GitHub’s fork approval gate: CI run 29731190757 and Security run 29731190634. Please approve these runs when convenient. |
fettpl
marked this pull request as ready for review
July 18, 2026 04:59
fettpl
force-pushed
the
p1/issue-223-runtime-job-types
branch
from
July 20, 2026 09:22
b1caabd to
e4ec7a8
Compare
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
Makes runtime job types match the operations the controller actually implements. Unsupported
inspectanddownloadrequests now fail before queue creation instead of falling through to mutation-producing install or update behavior.Closes #223
Dependency
Depends on #244. The branch is stacked on its release-gating repair so the repository's current quality gate remains green. The issue-specific runtime-job delta is six files on top of that prerequisite.
Root cause
The public
EngineJobcontract advertisedinstall,update,download, andinspect, while the executor only implemented install and update. Its fallback paths could therefore turn an unsupported, apparently read-only operation into a mutation.Solution design
RUNTIME_JOB_TYPEStuple and derivedRuntimeJobTypecontract containing onlyinstallandupdate.commandandargsforbidden.update.Acceptance criteria
inspectanddownloadreturn HTTP 400 for engine and platform runtimes without queueing work.Validation
e4ec7a83498309c7ede8d23c02fc9094034f86fb.npm --prefix frontend run check:quality: passed.npm run check: passed, including contracts, structure, frontend production build, and controller gates.npm --prefix frontend run desktop:dist: passed./Applications/Local Studio.appreinstall: strict deep code-signature verification passed, bundle ID isorg.local.studio.desktop, andGET /api/desktop-healthreturned HTTP 200.Current
maindoes not definenpm run test:integrationor a genericnpm --prefix frontend run testscript, so those unavailable commands are not represented as passing.UI changes
None. The shared frontend client type is narrowed, but there are no visual or interaction changes.
Risks and rollout
inspectordownloadnow receive an intentional 400 response instead of triggering an unintended mutation.mainif GitHub does not remove the stacked prerequisite automatically.