Skip to content

97 on Bud Agent Flow: six rules narrowed, the-call, and turns lowered for Pydantic AI - #10

Merged
dittops merged 1 commit into
masterfrom
primitives-on-budflow
Nov 11, 2026
Merged

dittops merged 1 commit into
masterfrom
primitives-on-budflow

Conversation

@dittops

@dittops dittops commented Nov 11, 2026

Copy link
Copy Markdown
Member

What bringing PACT 97 onto Bud Agent Flow found in the checker. Each rule below is narrowed so that a safe tree loads and an unsafe one still fails.

  • Exactly-once: a together branch is held to its own calls, and memory tools are exempt. A key that changes between attempts is now a warning. A claim wider than the request is allowed only under an explicit durability: none.
  • same-request-key: the-call: one call made at most once, keyed by the call itself. It is for an action that has no business field to name.
  • Origins: a value with no hidden-from-the-ai is now a warning, not an error.
  • Workflows: a circle metered by asks-itself-at-most is no longer reported.
  • Adapters:
    • Ceiling.default.
    • step_ceiling now says when a ceiling is the default.
    • at_most_once.by_the_call.
    • A detector's placeholder is named after its detector.
    • pydantic_ai_turns.messages_of, which lowers turns: to Pydantic AI messages (docs/96 §D).

Gate green: 1561 Rust and 3134 adapter tests, clippy and fmt clean. Bud Agent Flow pins this commit (2ac5439).

🤖 Generated with Claude Code

…`the-call`, and turns lowered for Pydantic AI

What bringing PACT 97 onto Bud Agent Flow found in the checker, each
narrowed so a tree that is safe loads and one that is not still fails:

- exactly-once: a `together` branch is held to its own calls; memory
  tools are exempt; a key that changes between attempts is a warning; a
  claim wider than the request only under an explicit `durability: none`.
- `same-request-key: the-call`: one call made at most once, keyed by the
  call itself, for an action with no business field to name (exactly-once,
  money and snapshots read it).
- origins: a value with no `hidden-from-the-ai` is a warning, not an error.
- workflows: a circle metered by `asks-itself-at-most` is not reported.

Adapters: `limits.Ceiling.default` and the default's wording; the
harness's `step_ceiling` says when the ceiling is the default;
`at_most_once.by_the_call`; a workspace detector's placeholder named by
the detector (`interceptors._thing_of` reads `DECLARED`); and
`pydantic_ai_turns.messages_of`, the one lowering of `turns:` to
Pydantic AI messages (docs/96 §D), with its registry row.

Gate green: 1561 Rust and 3134 adapter tests; clippy and fmt clean.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@dittops

dittops commented Nov 11, 2026

Copy link
Copy Markdown
Member Author

The everything gate passes. newest-pydantic-ai fails here exactly as it does on master (33b9800): the newest Pydantic AI release adds 17 capabilities, 3 settings, 3 parts, 2 events, unless_tool_kind and FunctionEvaluator that pydantic_ai_registry.yaml does not list yet, and O7's behaviour changed. This PR did not cause it; it is planned as its own package (Bud Agent Flow BACKLOG WP-62).

@dittops
dittops merged commit bcd4e63 into master Nov 11, 2026
4 of 5 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