Skip to content

docs: an adoption guide written to be handed to a coding agent - #181

Merged
AminChirazi merged 1 commit into
mainfrom
claude/flowproof-adopting-guide
Jul 27, 2026
Merged

docs: an adoption guide written to be handed to a coding agent#181
AminChirazi merged 1 commit into
mainfrom
claude/flowproof-adopting-guide

Conversation

@AminChirazi

Copy link
Copy Markdown
Contributor

The gap

flowproof says it is written for developers and their agents, and ships nothing that tells an agent how to adopt it:

onboarding surface status
record / run / capture / audit / heal present
init or audit-my-repo absent
AGENTS.md / CLAUDE.md / skill absent
MCP server present (Python SDK)

So every adopter starts from the reference docs and rediscovers the same path.

What two real adoptions showed

Both spent their entire first session on reconnaissance, and both answered the same three questions before a spec was worth writing:

  1. How is the agent started, and does the process that actually calls the model inherit the environment? One stack was three processes deep with the model call in the grandchild - command: only helps if the child inherits.
  2. Where does the model client get its base URL? If it is not one of the injected variables it needs a ${flowproof.*} handle, and which form depends on whether the client appends its own /v1.
  3. Which tools have side effects? The judgement call that decides tools: versus mcp: - and getting it wrong means a recording run mutates real data.

That is the audit step, and it was being rediscovered every time. The guide leads with it and says outright not to write specs until it is answered. Then one smoke flow, then the flows worth having in value order, then CI.

It also says what these tests do not prove

That the model is any good. Its decisions are recorded, not judged. This is the easy overclaim, and an adopter who repeats it to their team will be wrong in a way that costs trust - so it is stated plainly, next to the honest version.

Verification

Every claim checked against the code by symbol before writing: the injected variables, all three ${flowproof.*} handles, the zero-capture guard, the unprotected-tool warning, the /mcp substring match, strict:, and FLOWPROOF_BIN. No unsupported claims. The example YAML parses through the real engine.

Linked from README and getting-started, which is where an adopter or their agent looks first.

Change class

Docs only - self-merge class under the loop's mandate. No spec vocabulary, no behaviour change.

Deliberately not in this PR

A flowproof init command. Most of the audit is judgement (is export_to_endpoint destructive?), which a subcommand cannot do and an agent reading the codebase can. If init is built later it should scaffold and report what it found - never generate specs from guesses. That is new CLI surface, so it wants a design pass rather than being slipped in here.

🤖 Generated with Claude Code

flowproof says it is written for developers and their agents, and ships
nothing that tells an agent how to adopt it. There is no `init`, no
AGENTS.md, no skill - so every adopter starts from the reference docs and
rediscovers the same path.

Two real adoptions now show what that path is, and both spent their entire
first session on the same reconnaissance before a spec was worth writing:

1. How is the agent started, and does the process that actually calls the
   model inherit the environment? One stack was three processes deep with
   the model call in the grandchild.
2. Where does the model client get its base URL? If it is not one of the
   injected variables, it needs a `${flowproof.*}` handle, and which of the
   two forms depends on whether the client appends its own `/v1`.
3. Which tools have side effects? That is the judgement call that decides
   `tools:` versus `mcp:`, and getting it wrong means a RECORDING run
   mutates real data.

So the guide leads with the audit and says outright not to write specs
until it is answered. Then one smoke flow, then the flows worth having in
value order, then CI.

It also states what these tests do NOT prove - that the model is any good -
because that is the easy overclaim, and an adopter who repeats it to their
team will be wrong in a way that costs trust.

Every claim in it was checked against the code by symbol before writing:
the injected variables, the three handles, the zero-capture guard, the
unprotected-tool warning, the `/mcp` substring match, `strict:`, and
`FLOWPROOF_BIN`. The example YAML parses.

Linked from README and getting-started, which is where an adopter or their
agent will look first.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings July 27, 2026 06:28

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@AminChirazi
AminChirazi merged commit 26aae0b into main Jul 27, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants