Product Limits and Boundaries
To use Rapid OS successfully you need to understand its technical boundaries. Rapid OS is a layer of governance, specification, auditing, and quality control. It is not a model runner or an autonomous agent.
Strict separation of concepts
One of the most common sources of error in AI tooling is confusing human statements with physical facts or logical conclusions. Rapid OS draws rigorous distinctions:
Declaration != Capability != Evidence != Evaluation
- Gate Acknowledged: A human operator or script declares that a control was satisfied (
ACKNOWLEDGED). This is a declaration, not evidence that the code works. - Harness Compatible: A harness declares that it supports
tests.execute. This means the tool says it can run tests; it does not prove that it ran them. - Run Evidence: The output file with the test runner's exit code
0and its SHA-256 hash is stored. This is physical evidence. - Evaluation PASS: The evaluator analyzes the recorded evidence under deterministic rules and issues a verdict. This is a formal evaluation.
What Rapid OS does NOT do
Explicit boundaries
Rapid OS keeps a strict scope of deterministic engineering. The following operations are outside its design:
- It does not automatically invoke LLMs or model APIs: Rapid OS does not call OpenAI, Anthropic, Google, or other providers in the background. Interaction with the language model happens in the coding harness the developer chooses to use (Codex, Claude, Cursor, Antigravity, etc.).
- It does not orchestrate background autonomous agents: It is not a continuously running daemon or a recursive-agent runtime.
- It does not use LLM-as-a-judge: Behavioral evaluations (
rapid eval) are 100% deterministic, executed by standard-library Python code against logical rules. - Plumbing executes nothing from the repository; porcelain executes only what it is asked to:
rapid scan,rapid context,rapid spec,rapid policy,rapid run,rapid harness,rapid evidence,rapid eval, andrapid validateoperate statically on files and records. The porcelain runs only thetest_commandfrom.rapid-os/config.json(in therapid startbaseline and inrapid task done) or the argv passed torapid check -- <command>, without a shell, plus read-onlygitcommands (rev-parse,diff,ls-files,config user.name) to record the run's changes; withrapid start --worktreeit addsgit worktree add. It runs no other project command. - It never approves human gates:
rapid approveis run by a person in their terminal. Rapid OS never approves, waives, or rejects a human gate on its own, and neither does a shortcut, a hook, or evidence produced by a harness. - It does not automatically create Git branches or worktrees: When a policy requires
workspace.isolated, Rapid OS declares the need in the contract andrapid startstops atblocked. Onlyrapid start --worktree, run by the operator or their harness, creates the isolated worktree (../<repo>-<run-id>, branchrapid/<run-id>);rapid abortnever removes it. In every other case, actually creating the isolated environment or branch is up to the operator or the harness. - All its git commands go through a single gate:
rapid_os/orchestration/git.pyruns git with-c safe.directory=<project root>(only that folder, never*) and-c core.fsmonitor=false, so it does not depend on who owns the folder (Codex sandbox on Windows) and so a foreign repository cannot run programs just by being read. The exception for the person's own git, which only they can grant, is handed to them asperson_actions; Rapid OS never modifies the person's git configuration. - It only creates a git repository so it can observe runs:
rapid setup finishandrapid initrungit init(and set the initial branch withgit symbolic-ref HEAD, alwaysmain) only when the folder is not inside a repository. It never nests repositories, never makes commits, and without git installed it only warns.rapid startin a folder with no repository fails withRAPID1416without writing anything. - Architecture is verified by reading imports, not by running code:
rapid arch checkreads the text of the files undermodules_rootandshared_root(Python withast; TypeScript, JavaScript, and the script blocks of.vue,.svelte, and.astro, Go, Java, Kotlin, C#, Rust, and PHP with regular expressions; Ruby on Rails delegates tobin/packwerk check) and only reports; it never edits code or migrates an existing project. Rapid OS writes the rule (architecture.mdandarchitecture.json) for the backend and frontend stacks in the catalog (using the idiomatic names of their language), and it does not overwrite an existing file. See Reference architecture. - It writes the local services environment, but does not start it or deploy:
rapid setup finishwritescompose.yamland.env.examplefor the services decided@now(and adds.envto.gitignore); ifcompose.yamlalready exists it only adds the missing services and does not modify what is there. It does not run Docker: the person runsdocker compose up -d.rapid deploy --target <platform>prints a template and writes nothing; the person does the deployment. See Infrastructure services and the deployment guide. - It writes the security baseline and its CI, but does not run the scans:
rapid setup finishwritesstandards/security.mdand, only in an empty repository, one workflow per language.github/workflows/rapid-security-<language>.yml(gitleaks, semgrep, bandit orpip-audit/npm audit, and SBOM and provenance in Corporate, all pinned by full SHA). It never overwrites an existing workflow or a hand-writtensecurity.md. The scans are run by your CI, not by Rapid OS. See Security baseline. - Hooks deny tools to the agent, but Rapid OS does not invoke agents:
rapid hook stop|pre-toolare run by Claude Code when the agent tries to stop or to use a tool; they only return a stop block or a denial (they reserverapid approve,rapid abort, and writes to.rapid-os/for the person) and never launch the agent. Onlyrapid shortcuts install --hooksorrapid init --hookswrite them to.claude/settings.json, without touching the user's hooks, and command detection is best-effort. - It does not install harness shortcuts on its own:
rapid shortcuts install(orrapid init --shortcuts) is the only way to write the/rapid-<mode>commands (and/rapid-init) into.claude/skills,.agents/skills,.cursor/skills, or.github/prompts, andrapid shortcuts install --globalis the only way to write them outside the project, in your user's skills folder (only for harnesses with a documented folder;install.shandinstall.ps1offer it as an option and never by default);rapid shortcuts removedeletes only the files that carry thegenerated by rapid shortcutsmarker. Shortcuts never approve human gates. - It does not confirm on the person's behalf or create documentation on its own:
rapid setup docandrapid initare the only commands that writedocs/PRODUCT_BRIEF.md,docs/BUSINESS_RULES.md,docs/DATA_MODEL.md, anddocs/ARCHITECTURE.md(withrapid-doc,source,status, andsha256frontmatter, and a.bakof the previous file);rapid setup finishandrapid initare the only ones that copy stack, topology, archetype, and security into.rapid-os/standards/. A document drafted by the agent is saved assource: draftedandstatus: draft, enters the context as an assumption, and onlyrapid setup doc <id> --confirmconfirms it.rapid initno longer creates theTODOscaffolding indocs/. - It only ticks the story the run closed, and does not fill the root with backups: when
rapid finishends in PASS and the spec carries thestory:<ID>tag, it changes that single- [ ] <ID>:line to- [x] <ID>:indocs/PRODUCT_BRIEF.md(previous copy in.rapid-os/backups/,sourceandstatusunchanged: a draft stays a draft); if the verdict is not PASS, if you pass--no-tick, or if the brief is not a Rapid OS document, it only suggests the story. A run covers one story. The agent files that Rapid OS regenerates keep their previous copy in.rapid-os/backups/(only if the content changed, 5 per file), not in the project root. - It is not an operating-system sandbox: "Capabilities" in Rapid OS are declarations of software capabilities, not kernel security cages or enforced containers.
- It does not mathematically guarantee the absence of defects: A
PASSverdict certifies that the contract rules and the recorded evidence were satisfied. It is not a formal proof of mathematical correctness of all the software, and it does not replace the judgment of engineers.
What Rapid OS DOES do
- Drives a governed run from start to finish with the porcelain (
rapid start,rapid next,rapid check,rapid task,rapid attach,rapid finish) and generates each harness's/rapid-<mode>shortcuts (rapid shortcuts). - Analyzes repositories deterministically and extracts facts with provenance (
rapid scan). - Maintains software specifications with immutable revisions (
rapid spec). - Compiles structured context within strict character budgets (
rapid context). - Models risk policies and control gates (
rapid policy). - Issues immutable execution contracts bound by SHA-256 digests (
rapid run). - Models and validates the capabilities declared by coding tools (
rapid harness). - Records and safeguards execution evidence artifacts (
rapid evidence). - Evaluates physical evidence offline using reproducible rules (
rapid eval). - Audits the full cross-integrity of the project (
rapid validate).
Boundaries on human gates and defense in depth
A core governance principle in Rapid OS is that human review gates are never acknowledged automatically.
To prevent agents or subprocesses from self-approving human gates:
rapid approverequires an interactive terminal (TTY), asks for explicit textual confirmation (aprobar <gate-id>), and refuses to run if it detects child-agent session markers (CLAUDE_CODE_CHILD_SESSION == "1").- It also walks the parent process chain and refuses to run (
RAPID1310) if any ancestor is an agent harness. Today only Claude Code is recognized (theclaude/claude.exebinary, the@anthropic-ai/claude-codenpm package, and the native installer's~/.local/share/claude/versions/directory), because those are the only names confirmed in its official documentation or in a real installation; Codex and Cursor are not recognized because their process name is not confirmed. Ancestry detection is best-effort: a process that detaches from its parent (double fork,setsid,nohup … &) ends up hanging frominitand no longer hasclaudeas an ancestor. Along with a renamedclaude.exeand the reused pid of a dead parent, this is a known limit. The rule remains that a person approves in their own terminal. If ancestry cannot be read (Linux:/proc; macOS:ps; Windows:CreateToolhelp32Snapshot),rapid approvedoes not refuse because of it andrapid doctorrecords the reason (RAPID1319). A person using their own terminal, even an IDE's integrated one, has noclaudeprocess among their ancestors; they also cannot approve from Claude Code's!mode, because thereclaudeis the ancestor. - It is important to note that TTY confirmation can be emulated externally (with commands such as
scriptorptyemulators), so it acts as defense in depth and deliberate friction, not as a cryptographic or foolproof guarantee. Rapid OS does not cryptographically attest who approves: the reviewer's identity is the one declared (--reviewerorgit config user.name).