From 30bdb792176418d43d80c32c504e313e09681612 Mon Sep 17 00:00:00 2001 From: Raghu Betina Date: Mon, 12 Oct 2026 05:28:43 -0500 Subject: [PATCH] Name a stubbed Policy rule in the first run The next First Draft deploy keeps a Policy the Compiler cannot lower as a stub. Its rule returns false, so the pages it guards deny every account, and its relation scope raises NotImplementedError. The README's Behavior to write lists each stub, and the generated AGENTS.md now names a denying rule beside a raising scope. A Policy used only as a gate has no scope, so its stub makes no generated spec fail. The workshop notes sent the agent to write only what a failing spec named, so it would leave such a rule unwritten and preview pages that deny every account. The Setup and specs bullet now names a stubbed Policy rule and says to write every item Behavior to write lists, including a denying rule no failing spec names, as the app's AGENTS.md does. Before the deploy no README lists a Policy, so the rule holds on both sides of it. --- .devcontainer/workshop/app-instructions.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.devcontainer/workshop/app-instructions.md b/.devcontainer/workshop/app-instructions.md index 646b11f..2fb6b2d 100644 --- a/.devcontainer/workshop/app-instructions.md +++ b/.devcontainer/workshop/app-instructions.md @@ -12,10 +12,12 @@ Never print secrets, show a file that holds one, or ask the user to paste one in ## Setup and specs - After Compile, set up the app, build its assets and run its specs as its README says, before the first preview. In that first run, a spec that fails through behavior the README's - **Behavior to write** lists is work to do: write that behavior until its specs pass. A stub - raises `NotImplementedError`, and a deletion outcome First Draft left out fails its spec with - `RecordNotDestroyed`. Any other failure in that run is a First Draft defect: tell the user which - spec failed and its error. Never edit or delete a generated spec to make it pass. + **Behavior to write** lists is work to do: write that behavior until its specs pass. A stubbed + scope raises `NotImplementedError`, a stubbed Policy rule returns `false`, and a deletion outcome + First Draft left out fails its spec with `RecordNotDestroyed`. Write every item that section + lists, including a denying rule no failing spec names. Any other failure in that run is a First + Draft defect: tell the user which spec failed and its error. Never edit or delete a generated + spec to make it pass. - System specs need a Selenium browser that this Codespace does not start by itself. From the app's root, start it before every spec run (all specs, one spec file, or `bin/ci`) and stop it afterward, even when specs fail. Run these lines as one command, with your spec command in place