Scrutable — the questions you have not asked yet.
A decision and assurance framework for software products. It surfaces the consequential questions your project actually warrants, requires each answer to carry cited evidence, and ends in a single defensible gate decision — instead of a vague sense of readiness before something expensive to reverse.
What it does
Scrutable is a reusable question system for the whole software lifecycle. Its aim is not a product with the most features; it is to make consequential decisions explicit, expose unknowns early, and produce something a reviewer can disagree with on the record. A run has four moves:
- Scope it — ten profile questions describe what the subject actually is. A small internal tool is never asked the same questions as a medical device.
- Traverse the graph — the profile activates only the domains your subject warrants, out of 199 typed questions with stable IDs and declared relationships.
- Answer with evidence — each answer cites a source. The framework's cardinal rule is that an invented answer voids the run.
- Gate it — the run ends with exactly one decision — proceed, proceed with conditions, pause, or stop — and a versioned evidence package written into your repository, not into the framework's.
You read Markdown and YAML. There is no CLI to install, no service to run and no database, which is also what makes an AI agent a first-class operator of it rather than a bolted-on integration.
- Version0.8.0
- LicenceApache-2.0
- Questions199, typed activation graph
- Scoping10 profile questions
- FormatMarkdown · YAML · JSON Schema
- InstallNone — read the repo
- OperatorsHumans and AI agents
- SourceGitHub
A launch checklist tells you what you did. An activation graph tells you what you skipped.
Most readiness reviews fail the same way: the checklist is generic, so half of it is irrelevant and the half that matters is missing, and everyone in the room can feel that the exercise is theatre. The output is a green tick with no argument behind it, which is exactly the kind of unfalsifiable assurance this lab exists to avoid.
Scrutable makes the scoping itself a recorded decision. Ten profile questions determine which domains activate, so the set you are asked is derived from what your subject is, and the questions you were not asked are visible and attributable rather than quietly absent. The evidence rule does the rest: an answer without a citation is not an answer, and a run built on invented answers is void by the framework's own terms.
Written for agents on purpose
The framework ships a machine-operation and output contract alongside the prose, so an AI coding agent can execute a run and write the evidence package into a repository. That is deliberate. Agents are increasingly the thing making — or laundering — engineering decisions; a decision framework that only humans can run is a framework that will simply be bypassed.
What Scrutable deliberately is not.
These limits are the project's own, stated in its README. Scrutable is not:
- A project-management tool. It does not track tasks, own a backlog, or replace whatever you plan work in.
- A compliance certification. Running it produces an argument and an evidence package. It does not produce an approval, and nothing that calls itself a framework can.
- A substitute for qualified legal, security or regulatory review. It helps you find out which of those you need and what to bring to them. It is not one of them.
- A guarantee of success. The framework can improve decision quality and expose failure risk. It cannot make a product succeed, and it says so in its own first paragraph.
It is also, at v0.8.0, pre-1.0: question IDs are stable and versioned, but the framework is still being extended and governed in the open. The whole of it is readable in the repository, so the state it is in is something you can assess yourself rather than infer from this page.
Use it, or argue with it.
Scrutable is free and open source under Apache-2.0. A question that should exist and does not, a domain pack worth governing, or a case where the graph activates the wrong set — all of it is useful, and all of it belongs in the open.
Open the repository