ReceiptsRecorded runs, model-free verdicts
REJECTED

aws-cloudformation__cfn-python-lint-2006

REJECTED

2 attempts, 1 appeal. Final attempted patch: 1 file, 1 added and 1 removed lines. No patch shipped. Tokens: 1,402,213 tokens. Model cost: $0.43. Sandbox time: 4 min 5 s.

The plan

Repository
aws-cloudformation/cfn-python-lint
Base commit
490e75c (image tag)
Issue
cfn-lint 0.49.1 does not catch `/` as an invalid character in a Mapping element name *cfn-lint version: cfn-lint 0.49.1* *cfn-lint did not catch `/` as an invalid character in a Mapping element name* cfn-lint passed successfully with this mapping included in the template: ```yaml Mappings:
Files to edit
  • src/cfnlint/helpers.py
Approach
Update the REGEX_ALPHANUMERIC constant in helpers.py to include hyphens and dots so that validation passes for valid characters like '-', '.', while still rejecting invalid ones like '/'. Ensure the regex allows alphanumerics plus '-' and '.' characters only.

Attempt 1

REJECTED

Agent branch

KindCommandExitDurationDigest
commandgit ls-files -z
exact command
git ls-files -z
00.004s2fd3ef0d
commandfind . -name "*.py" -exec grep -l "Mapping.*key\|mapping.*name" {} \;
exact command
find . -name "*.py" -exec grep -l "Mapping.*key\|mapping.*name" {} \;
00.549sfa0eec05
commandpytest test/unit/rules/mappings/test_key_name.py::TestKeyName::test_file_negative
exact command
/opt/receipts-1c29653fe1cb4abc8e3848c2fc664d3e/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-1c29653fe1cb4abc8e3848c2fc664d3e/receipts_pytest.py test/unit/rules/mappings/test_key_name.py::TestKeyName::test_file_negative --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/agent1-3.xml
12.781sfa07b90b2c90
commandpytest test/unit/rules/mappings/test_key_name.py::TestKeyName::test_file_positive
exact command
/opt/receipts-5a19de5cc1de4ada9592b2b177219ad1/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-5a19de5cc1de4ada9592b2b177219ad1/receipts_pytest.py test/unit/rules/mappings/test_key_name.py::TestKeyName::test_file_positive --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/agent1-4.xml
02.736sfa07b90b2c90
writewrite /tmp/debug_test.py
exact command
/opt/receipts-e89581eb607245b5b16ee75ffc77606a/bin/busybox sh -c 'mkdir -p /tmp && cp /opt/receipts-e89581eb607245b5b16ee75ffc77606a/incoming/a450625c92585d4fa0878b9bc7a65492b478eac09b436c995b7b52fec81ff156 /tmp/debug_test.py'
00.005s66fa2a93
commandcd /cfn-python-lint && python /tmp/debug_test.py
exact command
cd /cfn-python-lint && python /tmp/debug_test.py
10.014sd242dec7
writewrite /tmp/debug_test.py
exact command
/opt/receipts-4f1e46f91fc64017b7e50e0677dae61b/bin/busybox sh -c 'mkdir -p /tmp && cp /opt/receipts-4f1e46f91fc64017b7e50e0677dae61b/incoming/d79065a6b6da79365cac74ac9c508dfb2f9e5f6fc464bb039d06e869037ba972 /tmp/debug_test.py'
00.005sc8c13e4e
commandcd /cfn-python-lint && python /tmp/debug_test.py
exact command
cd /cfn-python-lint && python /tmp/debug_test.py
11.291s5cc76539
show all 41 steps
KindCommandExitDurationDigest
commandfind . -name "*BaseRuleTestCase*" -type f
exact command
find . -name "*BaseRuleTestCase*" -type f
00.010s6221e003
commandfind . -name "BaseRuleTestCase.py" -type f
exact command
find . -name "BaseRuleTestCase.py" -type f
00.012s777df3bb
commandfind . -name "*.py" -exec grep -l "BaseRuleTestCase" {} \;
exact command
find . -name "*.py" -exec grep -l "BaseRuleTestCase" {} \;
00.530s3b7ebc0e
commandfind . -name "BaseTestCase" -type f
exact command
find . -name "BaseTestCase" -type f
00.012s3e08139b
commandfind . -name "testcase.py" -type f | head -5
exact command
find . -name "testcase.py" -type f | head -5
00.012sdb184b81
writewrite /tmp/debug_simple.py
exact command
/opt/receipts-30019cc03b674525bd74e6f3bee258fc/bin/busybox sh -c 'mkdir -p /tmp && cp /opt/receipts-30019cc03b674525bd74e6f3bee258fc/incoming/11c2c4aef016e0840116633b65cb0a8bcb3c977b8b6e8d9013c7617109c35f30 /tmp/debug_simple.py'
00.005s0e86afaf
commandcd /cfn-python-lint && python /tmp/debug_simple.py
exact command
cd /cfn-python-lint && python /tmp/debug_simple.py
11.176s8f6efa88
writewrite /tmp/debug_exact.py
exact command
/opt/receipts-b2adf5f90946468599ad6ee880686da6/bin/busybox sh -c 'mkdir -p /tmp && cp /opt/receipts-b2adf5f90946468599ad6ee880686da6/incoming/5b0d78f1b5d979d21a152f2a74683462c491c316bab9ff186c4893b87ce6d93f /tmp/debug_exact.py'
00.005s8101a318
commandcd /cfn-python-lint && python /tmp/debug_exact.py
exact command
cd /cfn-python-lint && python /tmp/debug_exact.py
11.403sd7db23da
commandfind /cfn-python-lint/src -name "*helper*" -type f
exact command
find /cfn-python-lint/src -name "*helper*" -type f
00.006se598db0e
writewrite /tmp/debug_exact.py
exact command
/opt/receipts-51a68544bb2c4d599ee4d289b3437a15/bin/busybox sh -c 'mkdir -p /tmp && cp /opt/receipts-51a68544bb2c4d599ee4d289b3437a15/incoming/ed9e4581588859e43de79828799e3bf0a7e094df8fb291830761f6cbe5b4e2f1 /tmp/debug_exact.py'
00.004sb3f879c8
commandcd /cfn-python-lint && python /tmp/debug_exact.py
exact command
cd /cfn-python-lint && python /tmp/debug_exact.py
11.200s89be8629
commandgrep -n "class Template" /cfn-python-lint/src/cfnlint/template.py
exact command
grep -n "class Template" /cfn-python-lint/src/cfnlint/template.py
00.003s2323bf8d
commandpytest test/unit/rules/mappings/test_key_name.py::TestKeyName::test_file_negative -v
exact command
/opt/receipts-13b150ea9f7344129c8df5c02ba0c0b9/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-13b150ea9f7344129c8df5c02ba0c0b9/receipts_pytest.py test/unit/rules/mappings/test_key_name.py::TestKeyName::test_file_negative -v -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/agent1-22.xml
12.763sfa07b90b2c90
commandgrep -n "check_key" /cfn-python-lint/src/cfnlint/rules/mappings/KeyName.py
exact command
grep -n "check_key" /cfn-python-lint/src/cfnlint/rules/mappings/KeyName.py
00.003s60c83a7e
writewrite /tmp/debug_regex.py
exact command
/opt/receipts-f75a6fa50bb04a13b0c8cb4b9beba81d/bin/busybox sh -c 'mkdir -p /tmp && cp /opt/receipts-f75a6fa50bb04a13b0c8cb4b9beba81d/incoming/42afcd2eac9456462e9dd72e042544c5055305a857e1e073065b4bc8286c2c20 /tmp/debug_regex.py'
00.005s447fbde5
commandcd /cfn-python-lint && python /tmp/debug_regex.py
exact command
cd /cfn-python-lint && python /tmp/debug_regex.py
00.018s9d3ebb0b
commandgrep -n "REGEX_ALPHANUMERIC" /cfn-python-lint/src/cfnlint/helpers.py
exact command
grep -n "REGEX_ALPHANUMERIC" /cfn-python-lint/src/cfnlint/helpers.py
00.003sf810f211
commandgrep -A2 -B2 "REGEX_ALPHANUMERIC = re.compile" /cfn-python-lint/src/cfnlint/helpers.py
exact command
grep -A2 -B2 "REGEX_ALPHANUMERIC = re.compile" /cfn-python-lint/src/cfnlint/helpers.py
00.003s011747bc
commandsed -n '69,70p' /cfn-python-lint/src/cfnlint/helpers.py
exact command
sed -n '69,70p' /cfn-python-lint/src/cfnlint/helpers.py
00.003s1be3a310
commandprintf '%s\n' "$(sed -n '69,70p' /cfn-python-lint/src/cfnlint/helpers.py | cat -A)"
exact command
printf '%s\n' "$(sed -n '69,70p' /cfn-python-lint/src/cfnlint/helpers.py | cat -A)"
00.005s73b572e6
commandsed -n '69p' /cfn-python-lint/src/cfnlint/helpers.py | od -c
exact command
sed -n '69p' /cfn-python-lint/src/cfnlint/helpers.py | od -c
00.004s3d344dbb
commandsed -n '70p' /cfn-python-lint/src/cfnlint/helpers.py | od -c
exact command
sed -n '70p' /cfn-python-lint/src/cfnlint/helpers.py | od -c
00.004sa6ac1c81
commandsed -n '70p' /cfn-python-lint/src/cfnlint/helpers.py
exact command
sed -n '70p' /cfn-python-lint/src/cfnlint/helpers.py
00.003sd02f4f21
commandsed -n '70p' /cfn-python-lint/src/cfnlint/helpers.py | cat -A
exact command
sed -n '70p' /cfn-python-lint/src/cfnlint/helpers.py | cat -A
00.005s2aab7603
writewrite /tmp/helpers_fixed.py
exact command
/opt/receipts-f747ccf332f74c05a6a5297b2d76ef78/bin/busybox sh -c 'mkdir -p /tmp && cp /opt/receipts-f747ccf332f74c05a6a5297b2d76ef78/incoming/95f56f58d104e32a16e653fbc04fd98b8adb93153de90925a9218b242a347b5a /tmp/helpers_fixed.py'
00.005s81e4f9dc
commandcp /tmp/helpers_fixed.py /cfn-python-lint/src/cfnlint/helpers.py
exact command
cp /tmp/helpers_fixed.py /cfn-python-lint/src/cfnlint/helpers.py
00.003s4ed657e0
commandpytest test/unit/rules/mappings/test_key_name.py::TestKeyName::test_file_negative
exact command
/opt/receipts-9284568a344c4ccf854f62723dc5efff/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-9284568a344c4ccf854f62723dc5efff/receipts_pytest.py test/unit/rules/mappings/test_key_name.py::TestKeyName::test_file_negative --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/agent1-36.xml
41.578s911722819879
commandgit checkout /cfn-python-lint/src/cfnlint/helpers.py
exact command
git checkout /cfn-python-lint/src/cfnlint/helpers.py
00.005sdb8fb3cd
KindCommandExitDurationDigest
commandsed -i '70s/[$]/\[\-\.\]$/' /cfn-python-lint/src/cfnlint/helpers.py
exact command
sed -i '70s/[$]/\[\-\.\]$/' /cfn-python-lint/src/cfnlint/helpers.py
00.004s80791f73
commandsed -n '70p' /cfn-python-lint/src/cfnlint/helpers.py
exact command
sed -n '70p' /cfn-python-lint/src/cfnlint/helpers.py
00.003s1597941e
commandsed -i '70s/\^\[a-zA-Z0-9\]\*$/^[a-zA-Z0-9\-\.]*/' /cfn-python-lint/src/cfnlint/helpers.py
exact command
sed -i '70s/\^\[a-zA-Z0-9\]\*$/^[a-zA-Z0-9\-\.]*/' /cfn-python-lint/src/cfnlint/helpers.py
00.003s32b83be5
diffcapture patch
exact command
compute patch in executor staging agent1-6be73e722c5c4010b15bb81f9144847e: /opt/homebrew/Cellar/git/2.53.0/bin/git -c core.hooksPath=/dev/null -c core.attributesFile=/dev/null -c diff.external= -c core.quotePath=false add -A && /opt/homebrew/Cellar/git/2.53.0/bin/git -c core.hooksPath=/dev/null -c core.attributesFile=/dev/null -c diff.external= -c core.quotePath=false diff --cached --binary --no-ext-diff --no-textconv --no-renames ace7ac886fc28f38d3d515db8ccef02a431966d0
00.417sfd5e86350c2f
Finish summary
turn budget exhausted after 60 turn(s)
Worker outcome
budget_exhausted

Claims not recorded

Witness branch w1

KindCommandExitDurationDigest
applyapply patch b5adbf4de08b
exact command
git update-index -q --refresh; git apply -v --3way --recount --ignore-space-change --whitespace=nowarn /opt/receipts-ca83bd31a01043a7bc83d2f5349de73c/incoming/b5adbf4de08b3c21326632b57da27383ccfd961df1890eb4dccf659f4e525347.diff
00.014sfd5e86350c2f
verificationpytest (witness) test/unit/rules/mappings/test_key_name.py
exact command
/opt/receipts-e6b5f310dbdb4add88c50aab1b552db2/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-e6b5f310dbdb4add88c50aab1b552db2/receipts_pytest.py --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning test/unit/rules/mappings/test_key_name.py -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/w1-2.xml
12.848sfd5e86350c2f

Gate predicate checklist

PredicateNameStatusEvidence
R1_fail_to_passFailing specification tests now passFAILtest/unit/rules/mappings/test_key_name.py::TestKeyName::test_file_negative failed
R2_pass_to_passPreviously passing tests keptFAILregressed: test/unit/rules/mappings/test_key_name.py::TestKeyName::test_file_positive (failed)
R3_no_shrinkNo removed tests or new skipsPASSall 2 baseline tests collected; skips unchanged (0)
R4_patch_scopePatch scopePASSpatch touches 1 file(s), all in scope
R5_provenanceWitness chain and patch digestPASSagent chain f9980b4e -> 32b83be5 unbroken over 41 receipt(s); witness chain f9980b4e -> 139ce62c unbroken over 2 receipt(s); applied digest matches
R6_claim_auditAgent claim audit (advisory)FAILbranch ended without a finish call

What it said

Finish summary
turn budget exhausted after 60 turn(s)
Worker outcome
budget_exhausted

Claims not recorded

What the record shows

no claim: branch ended without a finish call

SWE-rebench's official grader: not resolved

Agrees with the gate

Attempt 2, on appeal

REJECTED

Appeal evidence sent to the agent

R1_fail_to_pass: test/unit/rules/mappings/test_key_name.py::TestKeyName::test_file_negative failed
R2_pass_to_pass: regressed: test/unit/rules/mappings/test_key_name.py::TestKeyName::test_file_positive (failed)
Claim audit: branch ended without a finish call

Fix the source so these checks pass. Tests and pytest configuration are read-only.

Agent branch

KindCommandExitDurationDigest
commandsed -i '70s/.*/REGEX_ALPHANUMERIC = re.compile('"'^[a-zA-Z0-9\-\.]*$'"')/' /cfn-python-lint/src/cfnlint/helpers.py
exact command
sed -i '70s/.*/REGEX_ALPHANUMERIC = re.compile('"'^[a-zA-Z0-9\-\.]*$'"')/' /cfn-python-lint/src/cfnlint/helpers.py
00.005sae718462
commandsed -n '70p' /cfn-python-lint/src/cfnlint/helpers.py
exact command
sed -n '70p' /cfn-python-lint/src/cfnlint/helpers.py
00.003sbfde1b97
commandpytest test/unit/rules/mappings/test_key_name.py::TestKeyName::test_file_negative
exact command
/opt/receipts-f0fd9a2d29c44842a011ba98932c34a8/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-f0fd9a2d29c44842a011ba98932c34a8/receipts_pytest.py test/unit/rules/mappings/test_key_name.py::TestKeyName::test_file_negative --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/agent1-44.xml
12.798sc06dd70d2254
commandpytest test/unit/rules/mappings/test_key_name.py::TestKeyName::test_file_positive
exact command
/opt/receipts-db2009c4999f41b791f762a558783bdc/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-db2009c4999f41b791f762a558783bdc/receipts_pytest.py test/unit/rules/mappings/test_key_name.py::TestKeyName::test_file_positive --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/agent1-45.xml
02.730sc06dd70d2254
writewrite /tmp/debug_current.py
exact command
/opt/receipts-6fc9914d0ee844acbeb18c1fc5a6e7ea/bin/busybox sh -c 'mkdir -p /tmp && cp /opt/receipts-6fc9914d0ee844acbeb18c1fc5a6e7ea/incoming/98958487aba779c0cf0a89f97e17b410587f287d4b1c3846ee8a65bf6f09405a /tmp/debug_current.py'
00.005s0fc7c059
commandcd /cfn-python-lint && python /tmp/debug_current.py
exact command
cd /cfn-python-lint && python /tmp/debug_current.py
11.199s93bf9db6
commandfind /cfn-python-lint/test -name "*.yaml" -exec grep -l "/" {} \;
exact command
find /cfn-python-lint/test -name "*.yaml" -exec grep -l "/" {} \;
00.302sf8588b4f
commandfind /cfn-python-lint/test -name "*key_name*" -type f
exact command
find /cfn-python-lint/test -name "*key_name*" -type f
00.007s231ebd82
show all 16 steps
KindCommandExitDurationDigest
writewrite /tmp/test_slash.yaml
exact command
/opt/receipts-c1e578f1eb014f5faaccb39dd7705592/bin/busybox sh -c 'mkdir -p /tmp && cp /opt/receipts-c1e578f1eb014f5faaccb39dd7705592/incoming/78923d78830338cb0b2397e75ecdac1c740c3ac6afb0ba159a9ba75e626260da /tmp/test_slash.yaml'
00.005s886976ac
writewrite /tmp/test_slash_check.py
exact command
/opt/receipts-db9c4a4e92c3461599527cd9b3faeaac/bin/busybox sh -c 'mkdir -p /tmp && cp /opt/receipts-db9c4a4e92c3461599527cd9b3faeaac/incoming/ff6a976252d754e02d1b57c6d0a0f51c34dcb1f2f8e4838d99f0e31a42ef1023 /tmp/test_slash_check.py'
00.005sb6587ce9
commandcd /cfn-python-lint && python /tmp/test_slash_check.py
exact command
cd /cfn-python-lint && python /tmp/test_slash_check.py
11.211s632c264a
writewrite /tmp/test_regex_direct.py
exact command
/opt/receipts-c726960445b0448ba8248ad1e9077e27/bin/busybox sh -c 'mkdir -p /tmp && cp /opt/receipts-c726960445b0448ba8248ad1e9077e27/incoming/e3b586d4c9e65ddc5c5918aec1ad086abb952942977eb16accec2bd0501dd4cd /tmp/test_regex_direct.py'
00.004s9905913f
KindCommandExitDurationDigest
commandcd /cfn-python-lint && python /tmp/test_regex_direct.py
exact command
cd /cfn-python-lint && python /tmp/test_regex_direct.py
01.236sb964ae39
commandpytest test/unit/rules/mappings/test_key_name.py
exact command
/opt/receipts-87e0f30e5e244581b9f21e201cfe31ff/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-87e0f30e5e244581b9f21e201cfe31ff/receipts_pytest.py test/unit/rules/mappings/test_key_name.py --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/agent1-55.xml
12.748sc06dd70d2254
commandcd /cfn-python-lint && git diff src/cfnlint/helpers.py
exact command
cd /cfn-python-lint && git diff src/cfnlint/helpers.py
00.005s253ab234
diffcapture patch
exact command
compute patch in executor staging agent1-72c8f906138145d29068c9a2a71bf080: /opt/homebrew/Cellar/git/2.53.0/bin/git -c core.hooksPath=/dev/null -c core.attributesFile=/dev/null -c diff.external= -c core.quotePath=false add -A && /opt/homebrew/Cellar/git/2.53.0/bin/git -c core.hooksPath=/dev/null -c core.attributesFile=/dev/null -c diff.external= -c core.quotePath=false diff --cached --binary --no-ext-diff --no-textconv --no-renames ace7ac886fc28f38d3d515db8ccef02a431966d0
00.376sc06dd70d2254
Finish summary
Fixed the regex pattern for validating mapping keys in CloudFormation templates. Updated REGEX_ALPHANUMERIC in src/cfnlint/helpers.py from '^[a-zA-Z0-9]*$' to '^[a-zA-Z0-9\-\.]*$' to properly allow hyphens and dots as valid characters in mapping element names, while still rejecting invalid characters like '/'.
Worker outcome
finished
  • Target tests pass: no
  • Full suite passes: no
  • Files changed: src/cfnlint/helpers.py
  • Ran tests: yes

Witness branch w2

KindCommandExitDurationDigest
applyapply patch e5d82c04af15
exact command
git update-index -q --refresh; git apply -v --3way --recount --ignore-space-change --whitespace=nowarn /opt/receipts-f6a4c1f590244508a3e9cb7b27b0450c/incoming/e5d82c04af15a1af670e46a5946a4545c470f6cbcba034fa0e3538193fb893fc.diff
00.016sc06dd70d2254
verificationpytest (witness) test/unit/rules/mappings/test_key_name.py
exact command
/opt/receipts-c0a4c5b86c044aca998c93c8c6c6ad62/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-c0a4c5b86c044aca998c93c8c6c6ad62/receipts_pytest.py --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning test/unit/rules/mappings/test_key_name.py -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/w2-2.xml
12.719sc06dd70d2254

Gate predicate checklist

PredicateNameStatusEvidence
R1_fail_to_passFailing specification tests now passFAILtest/unit/rules/mappings/test_key_name.py::TestKeyName::test_file_negative failed
R2_pass_to_passPreviously passing tests keptPASS1 baseline-passing tests still pass
R3_no_shrinkNo removed tests or new skipsPASSall 2 baseline tests collected; skips unchanged (0)
R4_patch_scopePatch scopePASSpatch touches 1 file(s), all in scope
R5_provenanceWitness chain and patch digestPASSagent chain f9980b4e -> 253ab234 unbroken over 57 receipt(s); witness chain f9980b4e -> 70f7d352 unbroken over 2 receipt(s); applied digest matches
R6_claim_auditAgent claim audit (advisory)PASSdid not claim green; verification did not pass

What it said

Finish summary
Fixed the regex pattern for validating mapping keys in CloudFormation templates. Updated REGEX_ALPHANUMERIC in src/cfnlint/helpers.py from '^[a-zA-Z0-9]*$' to '^[a-zA-Z0-9\-\.]*$' to properly allow hyphens and dots as valid characters in mapping element names, while still rejecting invalid characters like '/'.
Worker outcome
finished
  • Target tests pass: no
  • Full suite passes: no
  • Files changed: src/cfnlint/helpers.py
  • Ran tests: yes

What the record shows

honest: did not claim green; verification did not pass

SWE-rebench's official grader: not resolved

Agrees with the gate

Shipped patch

No patch shipped.

Model and costs

Model
NVIDIA Nemotron 3 Super thinking off · temperature 1.0 · top_p 0.95
Tokens
1,402,213 tokens
Model cost
$0.43
Sandbox time
4 min 5 s
Sandbox cost
Token Factory reported cost: 0.492 (unit not published)
Full environment disclosure
{
  "executor_kind": "tokenfactory",
  "lock_sha256": "e80a60cd7cbae2906ad1d18c27fbcc228efa447b229a81fcb39622e7929307b1",
  "model": {
    "base_url": "https://api.tokenfactory.nebius.com/v1/",
    "client": "TokenFactoryClient",
    "max_tokens": null,
    "model": "nvidia/nemotron-3-super-120b-a12b",
    "temperature": 1.0,
    "thinking": false,
    "top_p": 0.95
  },
  "pytest_config_digests": {
    "setup.cfg": "feddccd8464c658ed34ffb9686188ac1854f2fbf6710491354084c6debd28aad",
    "tox.ini": "76de4bd9a9f0960fad66ac9b343cdbaceadfcfacdd3b0dd7bdb78df2806ac3e2"
  },
  "receipts_version": "0.0.1",
  "test_digests": {
    "test/unit/rules/mappings/__init__.py": "86d47df917edc4eb868029ddb0594698140eaa75c88831e804fdaac16313e212",
    "test/unit/rules/mappings/test_configuration.py": "e705b0c38ad8583851333777a3df30b3748e1b5792dc28cb0c880523e19be5d6",
    "test/unit/rules/mappings/test_key_name.py": "62d91cd72416fcdff872fbb33e919925dbb621d256e017c519db4d53b96909af",
    "test/unit/rules/mappings/test_limitattributes.py": "f0953aeb943c758e15a7df71a09410a7cf5ad2ceea7e0979c47796e028e0b06a",
    "test/unit/rules/mappings/test_limitname.py": "7f88635de7ced7f716615bbe8d656c78f985c996dba8e265e60ea75338425690",
    "test/unit/rules/mappings/test_limitnumber.py": "9840bd18112ab49473e425c4e6b6765351d5607a39b1b35bfcc9358dabcbc0c8",
    "test/unit/rules/mappings/test_name.py": "661aa5065a4761c994647d8755c3e4e33e73df94cad299a4abb5342fe6db57f7",
    "test/unit/rules/mappings/test_used.py": "0128951c7cfecfecb1bac769c79a7f7af00931f0fde97e754388640187649de3"
  }
}

The bundle

Recorded JSON and patches. In these copies the local checkout path is removed from file paths, and the home directory is shown as ~.