Repository navigation
docs(kiro): make blast radius a first-class review question - #4954
Merged
kddejong merged 1 commit intoOct 28, 2026
Merged
Conversation
Add two questions at the top of the review checklist: what the change reaches, and what it stops reporting. A change to shared validator machinery is a change to the engine, not to a rule. Rank a stack probe above a service API probe, with a recorded IAM Sid example showing the provider surfaces the service's own errors. Document registering a keyword override in self.validators as the way to scope keyword behaviour to one rule, instead of editing the keyword.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #4954 +/- ##
=======================================
Coverage 94.69% 94.69%
=======================================
Files 442 442
Lines 16092 16092
Branches 3121 3121
=======================================
Hits 15238 15238
Misses 470 470
Partials 384 384
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Documentation only — three
.kiroagent-context edits. No rule code, no schema, no test changes.These came out of reviewing #4937, which fixes an IAM
Sidfalse positive by editinguniq_keysinsrc/cfnlint/jsonschema/_utils.py. That helper has one caller, theuniqueKeyskeyword, which governs 13 schema sites includingother/resources/tagging.json— so it reaches every resource type'sTags, and ECSEnvironment, DynamoDBKeySchemaand CodePipelineStagesall lose their duplicate-empty-key check. The review found those regressions and still recommended approval, because nothing in the context said blast radius outranks constraint correctness. These edits say it.1.
.kiro/context/false-positives.md— two questions at the top of the review checklistThe checklist's six questions were all about whether a constraint is correct; none asked what the change reaches. Added "What does this change reach?" and "What does it stop reporting?" as questions 1-2, renumbering the rest to 3-8. Judging a constraint is premature if you do not know what it governs.
Heading retitled "Reviewing someone else's rule" → "change", since question 1 is specifically about changes that are not rules. No other file links to that anchor.
2.
.kiro/context/verification.md— rank a stack probe above a service API probeItem 3 of the evidence ladder read as a caveat on an acceptable choice ("Second-best: the service and the CloudFormation provider do not always agree"). Added a Prefer a stack paragraph after the list: many deployment probes are free because a synchronous rejection creates nothing, so a service API probe is a fallback for when a stack probe would be costly or impossible — not for when it is merely easier.
Plus a recorded example, matching the existing recorded notes in that file.
Evidence — us-east-1, 2026-10-28,
AWS::IAM::Rolewith inlinePoliciesviaCreateStack:Sid: ""CREATE_COMPLETESidROLLBACK_COMPLETE—Statement IDs (SID) in a single policy must be unique. (Service: Iam, Status Code: 400)Sid: "A\n"ROLLBACK_COMPLETE—Statement IDs (SID) must be alpha-numeric. Check that your input satisfies the regular expression [0-9A-Za-z]*SidsCREATE_COMPLETEThe provider surfaces IAM's own errors verbatim, so the service and provider levels agree here. Duplicate empty
Sids are legal, which is the #4937 quirk.3.
.kiro/steering/rule-development.md— how to scope keyword behaviour to one ruleNothing documented this, and it has caused two defects in a week: #4924 broke intrinsic-function validation inside the
Rulessection by changing which schema keyword descended, and #4937 loosensuniqueKeysfor 13 sites to fix one IAM quirk. Both had a scoped option available; neither author knew it existed.Added a short section after the Rule Types list: register the override in
self.validatorsand delegate to the stock keyword, rather than editing the keyword insrc/cfnlint/jsonschema/.Claim verified before writing it — all four cited rules do register a
patternPropertiesoverride inself.validatorspointing at a_pattern_propertiesmethod that delegates to the stockpatternPropertiesimported fromcfnlint.jsonschema._keywords:E1700src/cfnlint/rules/rules/Configuration.py:32src/cfnlint/rules/outputs/Configuration.py:44src/cfnlint/rules/parameters/Configuration.py:43src/cfnlint/rules/resources/Configuration.py:55(also setsmaxPropertiesandpropertyNamestoNone)No correction to the sentence was needed.
Verification
Markdown only, so ruff/isort/bandit/mypy have no files to check. The all-files run reports
end-of-file-fixerfailing on three.kiro/agents/*.jsonfiles — pre-existing local tooling rewrites, deliberately not staged and not part of this PR. Every hook passes on the three files changed here, andtest/andsrc/are untouched rather than assumed untouched.Net: +35 / -7 across three markdown files.