fix(app): enforce compiled lock before run - #504
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 30408c353c
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| let app = crate::manifest::loader::load_app(&manifest_path)?; | ||
| // Parse and hash one source buffer so the compiled sidecar approves the | ||
| // exact app we execute. Gate every run mode before provenance or dispatch. | ||
| let (app, approved_lock) = crate::app_lock::load_approved_app_with_lock(&manifest_path)?; |
There was a problem hiding this comment.
Add compilation to the documented install-and-run flows
When an app is installed from an uncompiled source, this unconditional gate now rejects every run with E_APP_LOCK_MISSING. That is exactly how the main README, 30-apps/_examples/README.md, and the persona onboarding guides instruct users to proceed—install or edit a raw example and immediately run it—and the repository contains no example .lock files, so the advertised quickstart and scheduled-app flows now fail universally. Update those flows to compile the final installed source before running/scheduling it, or otherwise ensure installation carries an explicitly approved lock.
Useful? React with 👍 / 👎.
Summary
aware app runwhen the compiled lock is missing, invalid, or staleapp validateemit the approval lock and document the run gateTest plan
Refs #501
Review rounds: 6 (self-feeding: 4) — rounds: nested dispatch/runtime snapshot; preview nesting; snapshot/path fencing; exact agent pins/validate lock; fail-closed missing pins; final adversarial pass; outcome: clean after approved rebuild; operator: approved rebuild