Skip to content

test(rules): recover the 36 rule fixtures from the deleted fork - #218

Merged
sairenchristianbuerano merged 36 commits into
mainfrom
recover/rule-fixtures
Sep 21, 2026
Merged

sairenchristianbuerano merged 36 commits into
mainfrom
recover/rule-fixtures

Conversation

@sairenchristianbuerano

@sairenchristianbuerano sairenchristianbuerano commented Sep 21, 2026

Copy link
Copy Markdown
Collaborator

Restores the 36 rule-fixture pull requests that were closed and can no longer be reopened.

Why this is one pull request

@bradAGI deleted the bradAGI/trustabl fork, which disables GitHub's Reopen button on all 36 engine pull requests. The commits survive in this repository's own refs/pull/<n>/head, so every one was recovered unchanged and is still authored by @bradAGI — nothing was rewritten or re-done.

They are consolidated into a single branch rather than 36 because rules-sync fails in both directions — a rule with no fixture and a fixture with no rule — so 36 separate pairs means 36 chances to leave main red. Two pull requests merged back to back means one short window.

Verified

  • 36 commits, all authored by @bradAGI
  • no duplicate rule ids
  • trustabl rules validate: 275 rules valid under schema 16, up from 228
  • go build ./... clean, gofmt clean
  • go test ./internal/rules/: 681 policy cases pass, 0 fail
  • check-rules-sync.sh clean between the two branches

Merge order

Merge trustabl/agent-reliability-rules#151 and this one back to back. Either half alone turns rules-sync red.

Merge #217 first — it clears conflict markers this branch inherits from main.

The 36 pairs

rules PR engine PR rules
#53 #128 add CREW-007, tool network call has no timeout
#55 #132 add LC-008, tool raises without a structured error c
#56 #133 add CREW-008, tool raises without a structured error
#57 #134 add AG2-013, tool raises without a structured error
#58 #136 add PYD-009, path parameter used in I/O without vali
#60 #139 add CREW-009, path parameter used in I/O without val
#61 #140 add AG2-014, path parameter used in I/O without vali
#62 #141 add LC-017, mutating tool has no idempotency key
#64 #143 add PYD-010, PYD-011 tool description quality rules
#66 #145 add LC-018, LC-019 tool description quality rules
#67 #146 add CREW-010, CREW-011 tool description quality rule
#68 #147 add AG2-016, AG2-017 tool description quality rules
#70 #149 add VAI-015, tool writes to the filesystem
#71 #150 add PYD-012, tool prints to stdout for diagnostics
#72 #151 add LC-020, tool prints to stdout for diagnostics
#73 #152 add CREW-012, tool prints to stdout for diagnostics
#74 #153 add AG2-018, tool prints to stdout for diagnostics
#82 #156 add MCP-023, tool prints to stdout, corrupting a std
#83 #157 add CSDK-019, tool prints to stdout for diagnostics
#84 #158 add CSDK-020, TypeScript tool HTTP call has no timeo
#85 #159 add MCP-024, TypeScript tool HTTP call has no timeou
#86 #160 add ADK-114, TypeScript FunctionTool HTTP call has n
#87 #164 add OAI-025, OAI-026 tool description quality rules
#88 #165 add MCP-025, MCP-026 tool description quality rules
#89 #166 add ADK-115, ADK-116 tool description quality rules
#90 #167 add CSDK-021, CSDK-022 TypeScript description qualit
#91 #168 add MCP-027, MCP-028 TypeScript description quality
#92 #170 add OAI-027, OAI-028 TypeScript description quality
#93 #171 add LC-021, LC-022 TypeScript description quality ru
#94 #172 add MCP-029, TypeScript tool writes to the filesyste
#95 #173 add OAI-029, TypeScript tool writes to the filesyste
#96 #174 add ADK-117, TypeScript FunctionTool writes to the f
#104 #176 add LC-024, ambiguous tool name
#105 #177 add CREW-013, ambiguous tool name
#106 #178 add AG2-019, ambiguous tool name
#107 #179 add PYD-013, ambiguous tool name

Engine half of a coordinated pair with trustabl/agent-reliability-rules#53, on a
branch of the same name so the rules-sync job resolves the matching pack
rather than main. Neither half should merge alone — check-rules-sync.sh
fails if they do.

Mirrors crewai/network.yaml into testdata/rules-fixture and adds a fire
and a silent case to policyRuleCases, as TestPolicyRules_AllRulesCovered
requires.

The silent case applies the remediation the rule's fix text prescribes
(timeout=10) rather than deleting the call, so it demonstrates the
prescribed fix actually clears the finding.
Engine half of a coordinated pair with trustabl/agent-reliability-rules#55, on a
branch of the same name so the rules-sync job resolves the matching pack
rather than main. Neither half should merge alone — check-rules-sync.sh
fails if they do.

Mirrors langchain/error_handling.yaml into testdata/rules-fixture and adds
a fire and a silent case to policyRuleCases, as
TestPolicyRules_AllRulesCovered requires.

The silent case returns the {"error": ..., "retryable": ...} shape the
rule's fix text prescribes rather than deleting the raise, so it
demonstrates the prescribed remediation clears the finding.

Python only. A LangChain.js counterpart is not shippable yet: PredHasRaise
matches the Python grammar node "raise_statement", so has_raise is
structurally always false for a TypeScript tool, whose throws parse as
"throw_statement". Noted in the rules PR; closing that gap would let this
pack and others cover TS error contracts.
Engine half of a coordinated pair with trustabl/agent-reliability-rules#56, on a
branch of the same name so the rules-sync job resolves the matching pack
rather than main. Neither half should merge alone — check-rules-sync.sh
fails if they do.

Mirrors crewai/error_handling.yaml into testdata/rules-fixture and adds a
fire and a silent case to policyRuleCases, as
TestPolicyRules_AllRulesCovered requires.

The silent case returns the actionable error string CREW-008's fix text
prescribes — CrewAI hands the agent a string observation rather than a
dict, so the remediation shape differs from the {"error": ...} payload the
other packs' rules ask for, and the case reflects that rather than copying
the Claude SDK shape.
Engine half of a coordinated pair with trustabl/agent-reliability-rules#57, on a
branch of the same name so the rules-sync job resolves the matching pack
rather than main. Neither half should merge alone — check-rules-sync.sh
fails if they do.

Mirrors autogen/error_handling.yaml into testdata/rules-fixture and adds a
fire and a silent case to policyRuleCases, as
TestPolicyRules_AllRulesCovered requires.

The silent case returns the actionable string AG2-013's fix text
prescribes: AutoGen posts the tool result back as the executor agent's
reply, so what the assistant reasons over is a message rather than a
structured payload.
Engine half of a coordinated pair with trustabl/agent-reliability-rules#58, on a
branch of the same name so the rules-sync job resolves the matching pack
rather than main. Neither half should merge alone — check-rules-sync.sh
fails if they do.

Mirrors pydantic_ai/path_safety.yaml into testdata/rules-fixture and adds
cases to policyRuleCases, as TestPolicyRules_AllRulesCovered requires.

Three cases, following CSDK-004's own table: the raw path reaching open(),
the .resolve() remediation the fix text prescribes, and a non-pathish
param that must not drag the rule in. The third guards the per-param
behavior of call_uses_unnormalized_path_param.
Engine half of a coordinated pair with trustabl/agent-reliability-rules#60, on a
branch of the same name so the rules-sync job resolves the matching pack
rather than main. Neither half should merge alone — check-rules-sync.sh
fails if they do.

Mirrors crewai/path_safety.yaml into testdata/rules-fixture and adds cases
to policyRuleCases, as TestPolicyRules_AllRulesCovered requires.

Three cases following CSDK-004's table: the raw path reaching open(), the
.resolve() remediation the fix text prescribes, and a non-pathish param
that must not drag the rule in, which guards the per-param behavior of
call_uses_unnormalized_path_param.
Engine half of a coordinated pair with trustabl/agent-reliability-rules#61, on a
branch of the same name so the rules-sync job resolves the matching pack
rather than main. Neither half should merge alone — check-rules-sync.sh
fails if they do.

Mirrors autogen/path_safety.yaml into testdata/rules-fixture and adds
cases to policyRuleCases, as TestPolicyRules_AllRulesCovered requires.

Three cases following CSDK-004's table: the raw path reaching open(), the
.resolve() remediation, and a non-pathish param that must not drag the
rule in, which guards the per-param behavior of
call_uses_unnormalized_path_param.
Engine half of a coordinated pair with trustabl/agent-reliability-rules#62, on a
branch of the same name so the rules-sync job resolves the matching pack
rather than main. Neither half should merge alone — check-rules-sync.sh
fails if they do.

Mirrors langchain/idempotency.yaml into testdata/rules-fixture and adds
cases to policyRuleCases, as TestPolicyRules_AllRulesCovered requires.

Three cases: the mutating tool with no key, the idempotency_key
remediation, and a read-only tool name that must stay silent. The third
pins both halves of the match — a missing key alone is not enough, the
name has to signal a side effect — so the rule cannot quietly broaden into
every tool without a key.
Engine half of a coordinated pair with trustabl/agent-reliability-rules#64, on a
branch of the same name so the rules-sync job resolves the matching pack
rather than main. Neither half should merge alone — check-rules-sync.sh
fails if they do.

Mirrors pydantic_ai/tool_definition.yaml into testdata/rules-fixture and
adds cases to policyRuleCases, as TestPolicyRules_AllRulesCovered
requires.

Five cases rather than four. PYD-011 pairs description_length_lt with
has_docstring so an absent docstring stays PYD-001's finding instead of
double-reporting, and the fifth case pins that: an empty description is
length 0, which is also under the threshold, so without the guard the two
rules would both fire on the same tool.
Engine half of a coordinated pair with trustabl/agent-reliability-rules#66, on a
branch of the same name so the rules-sync job resolves the matching pack
rather than main. Neither half should merge alone — check-rules-sync.sh
fails if they do.

Mirrors langchain/tool_definition.yaml into testdata/rules-fixture and
adds cases to policyRuleCases, as TestPolicyRules_AllRulesCovered
requires.

Five cases rather than four. LC-019 pairs description_length_lt with
has_docstring so an absent docstring stays LC-001's finding instead of
double-reporting, and the fifth case pins that guard.
Engine half of a coordinated pair with trustabl/agent-reliability-rules#67, on a
branch of the same name so the rules-sync job resolves the matching pack
rather than main. Neither half should merge alone — check-rules-sync.sh
fails if they do.

Mirrors crewai/tool_definition.yaml into testdata/rules-fixture and adds
cases to policyRuleCases, as TestPolicyRules_AllRulesCovered requires.

Five cases rather than four. CREW-011 pairs description_length_lt with
has_docstring so an absent docstring stays CREW-001's finding instead of
double-reporting, and the fifth case pins that guard.
Engine half of a coordinated pair with trustabl/agent-reliability-rules#68, on a
branch of the same name so the rules-sync job resolves the matching pack
rather than main. Neither half should merge alone — check-rules-sync.sh
fails if they do.

Mirrors autogen/tool_definition.yaml into testdata/rules-fixture and adds
cases to policyRuleCases, as TestPolicyRules_AllRulesCovered requires.

Five cases rather than four. AG2-017 pairs description_length_lt with
has_docstring so an absent docstring stays AG2-007's finding instead of
double-reporting, and the fifth case pins that guard.
Engine half of a coordinated pair with trustabl/agent-reliability-rules#70, on a
branch of the same name so the rules-sync job resolves the matching pack
rather than main. Neither half should merge alone — check-rules-sync.sh
fails if they do.

Mirrors vercel_ai/path_safety.yaml into testdata/rules-fixture and adds a
fire and a silent case to policyRuleCases, as
TestPolicyRules_AllRulesCovered requires.

The silent case applies the remediation VAI-015's fix text prescribes for
the common shape — derive the name server-side rather than accepting a
path from the model — instead of merely removing the write.
Engine half of a coordinated pair with trustabl/agent-reliability-rules#71, on a
branch of the same name so the rules-sync job resolves the matching pack
rather than main. Neither half should merge alone — check-rules-sync.sh
fails if they do.

Mirrors pydantic_ai/observability.yaml into testdata/rules-fixture and adds
cases to policyRuleCases, as TestPolicyRules_AllRulesCovered requires.

Three cases: the print, the module-logger remediation the fix text
prescribes, and a pprint call that must stay silent. The third pins
has_print_call's bare-callee behavior, so the rule cannot regress into
substring matching that sweeps in pprint and every other callee whose
name contains "print".
Engine half of a coordinated pair with trustabl/agent-reliability-rules#72, on a
branch of the same name so the rules-sync job resolves the matching pack
rather than main. Neither half should merge alone — check-rules-sync.sh
fails if they do.

Mirrors langchain/observability.yaml into testdata/rules-fixture and adds
cases to policyRuleCases, as TestPolicyRules_AllRulesCovered requires.

Three cases: the print, the module-logger remediation the fix text
prescribes, and a pprint call that must stay silent. The third pins
has_print_call's bare-callee behavior, so the rule cannot regress into
substring matching that sweeps in pprint and every other callee whose
name contains "print".
Engine half of a coordinated pair with trustabl/agent-reliability-rules#73, on a
branch of the same name so the rules-sync job resolves the matching pack
rather than main. Neither half should merge alone — check-rules-sync.sh
fails if they do.

Mirrors crewai/observability.yaml into testdata/rules-fixture and adds
cases to policyRuleCases, as TestPolicyRules_AllRulesCovered requires.

Three cases: the print, the module-logger remediation the fix text
prescribes, and a pprint call that must stay silent. The third pins
has_print_call's bare-callee behavior, so the rule cannot regress into
substring matching that sweeps in pprint and every other callee whose
name contains "print".
Engine half of a coordinated pair with trustabl/agent-reliability-rules#74, on a
branch of the same name so the rules-sync job resolves the matching pack
rather than main. Neither half should merge alone — check-rules-sync.sh
fails if they do.

Mirrors autogen/observability.yaml into testdata/rules-fixture and adds
cases to policyRuleCases, as TestPolicyRules_AllRulesCovered requires.

Three cases: the print, the module-logger remediation the fix text
prescribes, and a pprint call that must stay silent. The third pins
has_print_call's bare-callee behavior, so the rule cannot regress into
substring matching that sweeps in pprint and every other callee whose
name contains "print".
Engine half of a coordinated pair with trustabl/agent-reliability-rules#82, on a
branch of the same name so the rules-sync job resolves the matching pack
rather than main. Neither half should merge alone — check-rules-sync.sh
fails if they do.

Mirrors mcp/observability.yaml into testdata/rules-fixture and adds
cases to policyRuleCases, as TestPolicyRules_AllRulesCovered requires.

Three cases: the print, the module-logger remediation, and a pprint call
that must stay silent. The third pins has_print_call's bare-callee
behavior, so the rule cannot regress into substring matching that sweeps
in pprint and every other callee whose name contains "print".
Engine half of a coordinated pair with trustabl/agent-reliability-rules#83, on a
branch of the same name so the rules-sync job resolves the matching pack
rather than main. Neither half should merge alone — check-rules-sync.sh
fails if they do.

Mirrors claude_sdk/observability.yaml into testdata/rules-fixture and adds
cases to policyRuleCases, as TestPolicyRules_AllRulesCovered requires.

Three cases: the print, the module-logger remediation, and a pprint call
that must stay silent. The third pins has_print_call's bare-callee
behavior, so the rule cannot regress into substring matching that sweeps
in pprint and every other callee whose name contains "print".
Engine half of a coordinated pair with trustabl/agent-reliability-rules#84, on a
branch of the same name so the rules-sync job resolves the matching pack
rather than main. Neither half should merge alone — check-rules-sync.sh
fails if they do.

Mirrors claude_sdk/network.yaml into testdata/rules-fixture and adds cases
to policyRuleCases, as TestPolicyRules_AllRulesCovered requires.

CSDK-003 covers Python; the TypeScript half was missing even though this
pack ships TS rules throughout.

Three cases, following OAI-016's own table: the bare fetch, the
AbortSignal remediation, and a fetch whose options object is present but
carries no timeout — the last pinning that the predicate checks for a
deadline rather than merely for an options argument.
Engine half of a coordinated pair with trustabl/agent-reliability-rules#85, on a
branch of the same name so the rules-sync job resolves the matching pack
rather than main. Neither half should merge alone — check-rules-sync.sh
fails if they do.

Mirrors mcp/network.yaml into testdata/rules-fixture and adds cases to
policyRuleCases, as TestPolicyRules_AllRulesCovered requires.

MCP-004 covers Python; the TypeScript half was missing even though the
pack ships TS rules (MCP-011, MCP-013).

Three cases, following OAI-016's table: the bare fetch, the AbortSignal
remediation, and a fetch whose options object is present but carries no
timeout — the last pinning that the predicate checks for a deadline
rather than merely for an options argument.
Engine half of a coordinated pair with trustabl/agent-reliability-rules#86, on a
branch of the same name so the rules-sync job resolves the matching pack
rather than main. Neither half should merge alone — check-rules-sync.sh
fails if they do.

Mirrors google_adk/network.yaml into testdata/rules-fixture and adds cases
to policyRuleCases, as TestPolicyRules_AllRulesCovered requires.

ADK-003 covers Python; the TypeScript half was missing even though the
pack ships TS rules (ADK-013, ADK-015, ADK-016, ADK-109).

Three cases, following OAI-016's table: the bare fetch, the AbortSignal
remediation, and a fetch whose options object is present but carries no
timeout. The snippets use adk-js's options-object form
(new FunctionTool({ ..., execute })) rather than the Python
FunctionTool(fn) wrapper shape, which does not discover in TS — worth
noting since the Python form reads as the obvious analogue.
Engine half of a coordinated pair with trustabl/agent-reliability-rules#87, on a
branch of the same name so the rules-sync job resolves the matching pack
rather than main. Neither half should merge alone — check-rules-sync.sh
fails if they do.

Mirrors openai_sdk/tool_definition.yaml into testdata/rules-fixture and adds
cases to policyRuleCases, as TestPolicyRules_AllRulesCovered requires.

Five cases rather than four. OAI-026 pairs description_length_lt with
has_docstring so an absent docstring stays OAI-001's finding instead of
double-reporting — an empty description is length 0, which is also under
the threshold — and the fifth case is what pins that guard.
Engine half of a coordinated pair with trustabl/agent-reliability-rules#88, on a
branch of the same name so the rules-sync job resolves the matching pack
rather than main. Neither half should merge alone — check-rules-sync.sh
fails if they do.

Mirrors mcp/tool_definition.yaml into testdata/rules-fixture and adds
cases to policyRuleCases, as TestPolicyRules_AllRulesCovered requires.

Five cases rather than four. MCP-026 pairs description_length_lt with
has_docstring so an absent docstring stays MCP-001's finding instead of
double-reporting — an empty description is length 0, which is also under
the threshold — and the fifth case is what pins that guard.
Engine half of a coordinated pair with trustabl/agent-reliability-rules#89, on a
branch of the same name so the rules-sync job resolves the matching pack
rather than main. Neither half should merge alone — check-rules-sync.sh
fails if they do.

Mirrors google_adk/tool_definition.yaml into testdata/rules-fixture and adds
cases to policyRuleCases, as TestPolicyRules_AllRulesCovered requires.

Five cases rather than four. ADK-116 pairs description_length_lt with
has_docstring so an absent docstring stays ADK-001's finding instead of
double-reporting — an empty description is length 0, which is also under
the threshold — and the fifth case is what pins that guard.
Engine half of a coordinated pair with trustabl/agent-reliability-rules#90, on a
branch of the same name so the rules-sync job resolves the matching pack
rather than main. Neither half should merge alone — check-rules-sync.sh
fails if they do.

Mirrors claude_sdk/tool_definition.yaml into testdata/rules-fixture and
adds cases to policyRuleCases, as TestPolicyRules_AllRulesCovered
requires.

CSDK-017/018 cover Python; the TypeScript half was missing.

Five cases rather than four. CSDK-022 pairs description_length_lt with
has_docstring so an empty description stays CSDK-014's finding instead of
double-reporting, and the fifth case pins that guard.
Engine half of a coordinated pair with trustabl/agent-reliability-rules#91, on a
branch of the same name so the rules-sync job resolves the matching pack
rather than main. Neither half should merge alone — check-rules-sync.sh
fails if they do.

Mirrors mcp/tool_definition.yaml into testdata/rules-fixture and adds
cases to policyRuleCases, as TestPolicyRules_AllRulesCovered requires.

Five cases rather than four. MCP-028 pairs description_length_lt with
has_docstring so an empty description stays MCP-011's finding instead of
double-reporting, and the fifth case pins that guard.

Note for sequencing: rules#88 (MCP-025/026, the Python pair) appends to
the same file, so whichever of the two pairs lands second needs a trivial
rebase in both repos — the rule blocks and the test cases are independent
and the resolution is "keep both".
Engine half of a coordinated pair with trustabl/agent-reliability-rules#92, on a
branch of the same name so the rules-sync job resolves the matching pack
rather than main. Neither half should merge alone — check-rules-sync.sh
fails if they do.

Mirrors openai_sdk/tool_definition.yaml into testdata/rules-fixture and
adds cases to policyRuleCases, as TestPolicyRules_AllRulesCovered
requires.

Five cases rather than four. OAI-028 pairs description_length_lt with
has_docstring so an absent description stays OAI-022's finding instead of
double-reporting, and the fifth case pins that guard.

Note for sequencing: rules#87 (OAI-025/026, the Python pair) appends to
the same file, so whichever of the two pairs lands second needs a trivial
rebase in both repos — the rule blocks and the test cases are independent
and the resolution is "keep both".
Engine half of a coordinated pair with trustabl/agent-reliability-rules#93, on a
branch of the same name so the rules-sync job resolves the matching pack
rather than main. Neither half should merge alone — check-rules-sync.sh
fails if they do.

Mirrors langchain/tool_definition.yaml into testdata/rules-fixture and
adds cases to policyRuleCases, as TestPolicyRules_AllRulesCovered
requires.

Five cases rather than four. LC-022 pairs description_length_lt with
has_docstring so an absent description stays LC-010's finding instead of
double-reporting, and the fifth case pins that guard.

Note for sequencing: rules#66 (LC-018/019, the Python pair) appends to the
same file, so whichever of the two pairs lands second needs a trivial
rebase in both repos — the rule blocks and the test cases are independent
and the resolution is "keep both".
Engine half of a coordinated pair with trustabl/agent-reliability-rules#94, on a
branch of the same name so the rules-sync job resolves the matching pack
rather than main. Neither half should merge alone — check-rules-sync.sh
fails if they do.

Mirrors mcp/path_safety.yaml into testdata/rules-fixture and adds a fire
and a silent case to policyRuleCases, as TestPolicyRules_AllRulesCovered
requires.

MCP-005 covers the Python path-safety case; the TypeScript half was
missing. The silent case applies the remediation the fix text prescribes
for the common shape — derive the name server-side rather than accepting a
path over the protocol — instead of merely removing the write.
Engine half of a coordinated pair with trustabl/agent-reliability-rules#95, on a
branch of the same name so the rules-sync job resolves the matching pack
rather than main. Neither half should merge alone — check-rules-sync.sh
fails if they do.

Mirrors openai_sdk/path_safety.yaml into testdata/rules-fixture and adds a
fire and a silent case to policyRuleCases, as
TestPolicyRules_AllRulesCovered requires.

OAI-006 covers the Python path-safety case; the TypeScript half was
missing. The silent case applies the remediation the fix text prescribes
for the common shape — derive the name server-side rather than accepting a
path from the model — instead of merely removing the write.
Engine half of a coordinated pair with trustabl/agent-reliability-rules#96, on a
branch of the same name so the rules-sync job resolves the matching pack
rather than main. Neither half should merge alone — check-rules-sync.sh
fails if they do.

Mirrors google_adk/path_safety.yaml into testdata/rules-fixture and adds a
fire and a silent case to policyRuleCases, as
TestPolicyRules_AllRulesCovered requires.

ADK-004 covers the Python path-safety case; the TypeScript half was
missing. Snippets use adk-js's options-object form
(new FunctionTool({ ..., execute })) rather than the Python
FunctionTool(fn) wrapper shape, which does not discover in TS.
Engine half of a coordinated pair with trustabl/agent-reliability-rules#104, on a
branch of the same name so the rules-sync job resolves the matching pack
rather than main. Neither half should merge alone — check-rules-sync.sh
fails if they do.

Mirrors langchain/tool_definition.yaml into testdata/rules-fixture and adds
cases to policyRuleCases, as TestPolicyRules_AllRulesCovered requires.

Three cases: the generic name, the verb-object remediation, and
process_invoice_batch — a name that merely contains a listed word and must
stay silent. The third pins that name_in matches the whole name rather
than a substring, which is the plausible regression and the one that would
otherwise flood well-named tools with findings.
Engine half of a coordinated pair with trustabl/agent-reliability-rules#105, on a
branch of the same name so the rules-sync job resolves the matching pack
rather than main. Neither half should merge alone — check-rules-sync.sh
fails if they do.

Mirrors crewai/tool_definition.yaml into testdata/rules-fixture and adds
cases to policyRuleCases, as TestPolicyRules_AllRulesCovered requires.

Three cases: the generic name, the verb-object remediation, and
process_invoice_batch — a name that merely contains a listed word and must
stay silent. The third pins that name_in matches the whole name rather
than a substring, which is the plausible regression and the one that would
otherwise flood well-named tools with findings.
Engine half of a coordinated pair with trustabl/agent-reliability-rules#106, on a
branch of the same name so the rules-sync job resolves the matching pack
rather than main. Neither half should merge alone — check-rules-sync.sh
fails if they do.

Mirrors autogen/tool_definition.yaml into testdata/rules-fixture and adds
cases to policyRuleCases, as TestPolicyRules_AllRulesCovered requires.

Three cases: the generic name, the verb-object remediation, and
process_invoice_batch — a name that merely contains a listed word and must
stay silent. The third pins that name_in matches the whole name rather
than a substring, which is the plausible regression and the one that would
otherwise flood well-named tools with findings.
Engine half of a coordinated pair with trustabl/agent-reliability-rules#107, on a
branch of the same name so the rules-sync job resolves the matching pack
rather than main. Neither half should merge alone — check-rules-sync.sh
fails if they do.

Mirrors pydantic_ai/tool_definition.yaml into testdata/rules-fixture and adds
cases to policyRuleCases, as TestPolicyRules_AllRulesCovered requires.

Three cases: the generic name, the verb-object remediation, and
process_invoice_batch — a name that merely contains a listed word and must
stay silent. The third pins that name_in matches the whole name rather
than a substring, which is the plausible regression and the one that would
otherwise flood well-named tools with findings.
@sairenchristianbuerano
sairenchristianbuerano merged commit 2bb3b5a into main Sep 21, 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.

3 participants