R-576: go-parity gate also judges the CALL — arity vs printf verbs, and no key glued with +
Checks 4 (ARITY) and 5 (NO-CONCAT) in i18n_go_parity.py: at every message-helper call (MsgError/MsgErrorf/Text/Msgf/msg/msgLang/msgHU/note) whose key is a literal hu.json knows, the argument count must equal the Hungarian value's printf verbs; a known key literal may never be an operand of +. 485 calls judged, 0 defects today. Decoys: a dropped argument and a key+suffix concatenation on a real producer convict; a nested-paren argument is accepted. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
@@ -46,7 +46,8 @@ COVERS = {
|
||||
"minagent-header": "the word MinAgent in prose / a code span, not the header line (test_minagent_header_gate.py)",
|
||||
"i18n": "an undefined marker key, a pleading English value, a shrinking/growing gap (v0.247.0)",
|
||||
"go-parity": "a Go-side key REWORDED, a key citing text no base literal has, and a converted "
|
||||
"key left out of the map (v0.252.0, R-557)",
|
||||
"key left out of the map (v0.252.0, R-557); a call that lost an argument, and a key glued "
|
||||
"to more text with + (R-576)",
|
||||
"gofmt": "R-454: a planted unformatted .go file in internal/ is convicted; the clean tree passes",
|
||||
"offbox-rename": "R-425: NAS branding in a NEW backups*.html, and in a bundle value an offbox Go file "
|
||||
"names; control: the same token in the network-storage feature's copy is accepted",
|
||||
@@ -260,6 +261,21 @@ swapped("go-parity/invented", "i18n_go_parity.py", GO_KEYS,
|
||||
swapped("go-parity/unlisted", "i18n_go_parity.py", GO_KEYS,
|
||||
_one(_A_KEY + ",\n", ""))
|
||||
|
||||
# 4-5. R-576 -- the CALL lost text while every surviving fragment stayed real (2026-09-18, 7
|
||||
# producers, this gate green). Built on a real producer: the update-already-running refusal.
|
||||
UPDATE_GO = os.path.join(CTRL, "internal", "stacks", "update.go")
|
||||
_R576 = 'util.MsgError("update.refusal.already", name), "lost the race'
|
||||
# the argument dropped -- the key's text is still byte-equal, only the call is short.
|
||||
swapped("go-parity/lost-argument", "i18n_go_parity.py", UPDATE_GO,
|
||||
_one(_R576, 'util.MsgError("update.refusal.already"), "lost the race'))
|
||||
# the key glued to a continuation with + -- the converter's exact shape.
|
||||
swapped("go-parity/key-concat", "i18n_go_parity.py", UPDATE_GO,
|
||||
_one(_R576, 'util.MsgError("update.refusal.already" + suffix, name), "lost the race'))
|
||||
# CONTROL: one argument that itself holds parens and commas is still ONE argument.
|
||||
swapped("go-parity/nested-arg-ok", "i18n_go_parity.py", UPDATE_GO,
|
||||
_one(_R576, 'util.MsgError("update.refusal.already", fmt.Sprintf("%s,%s", f(a, b), c)), "lost the race'),
|
||||
expect="accept")
|
||||
|
||||
# --- golden-notice: R-410's decoy, in the other direction. It is ADVISORY, so rc is never the ---
|
||||
# --- question — what it COUNTED is. ---
|
||||
ran += 1
|
||||
|
||||
Reference in New Issue
Block a user