docs(cookbook): engine-verified path idioms — membership, at-least-one, and the traps
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 48/100
- Tipo di issue
- Documentazione
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- kubernetes, python, terraform
- Ambito
- documentation
Direzione di ricerca
Inizia individuando la documentazione del cookbook e i punti di ingresso per la verifica del motore in esecuzione, quindi confronta ogni ricetta tra il motore condiviso json/kubernetes e terraform_plan. Usa eval_expression per il comportamento della guard e preserva gli edge case elencati, le limitazioni dei motori e la gestione dei tipi; la pagina completata dovrebbe indicare ogni idioma con i motori che lo supportano. Mantieni il traceback di utils.sort_collections come bug separato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
A cookbook page of zero-code recipes, each verified against the running engine. House rule: every
path idiom names which of the two path engines it holds for — the shared json/kubernetes engine
and terraform_plan disagree more often than they agree, and "true idiom, wrong engine" fails
silently.
- Collection membership: drop the trailing
.*and the provider emits the whole collection as
one value per resource;Containswith an element dict is membership. Limit: exact element
equality (fails where elements carry extra keys, e.g.aws_db_parameter_group.parameterwith
apply_method). - At-least-one via
guard && !none:!idis existential ineval_expression, so De Morgan
applies — anIsNotEmptyguard on the collection, aNot*condition on
<collection>.*.<field>, andeval_expression: "guard && !none". Verified across matching /
non-matching / empty-array / absent-key / empty-document cases. The guard is load-bearing:
without it an absent collection satisfies the negation vacuously. Caveat, measured: on
terraform_planthis is plan-wide, not per-resource (the provider flattens instances into one
stream — two resources where only one matches returnstrue); sound for single-instance json
documents and genuinely plan-wide intent only. It cannot bind two attributes of the same element,
and the negated condition cannot be a regex. - Scalar-or-list: a trailing
.*unwraps a scalar on the shared json/kubernetes engine, so one
path covers a scalar-or-list union (Statement.*.Action.*). It does not hold on
terraform_plan, where a scalar under.*is a severity-2 miss. *iterates dict values, so CloudFormation'sResourcesmap addresses exactly like ARM's
array.- An empty list pads
Noneat inner wildcard levels; only the outermost segment is a severity-2
miss — this decideserror_tolerancefor nested-block-inside-repeated-block checks. - When every id is deleted from the AST the result is
null, nottrue— the trap for
all-absence policies, whose compliant case is exactly "every path misses". - The type-guard idiom is polarity-specific: type present + attribute absent FAILS at every inner
tolerance, so omit the guard when upstream passes on absence; use!selected || checkfor
sibling-attribute scoping. nullable.TypeNullableBoolprovider arguments arrive in the plan as the strings
"true"/"false", soEquals: truesilently never fires — useContainedIn: [true, "true"].
Related bug, fileable separately: a mixed-type list in ContainedIn/Equals evaluates correctly
but logs a full traceback from utils.sort_collections — cosmetic, noisy, ~2-line fix.
- Lingua principale
- Python
- Stelle
- 167
- Fork
- 47
- Merge medio
- 2h 44m
- PR unite (30g)
- 5
Preparare l'ambiente
Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di StackGuardian/tirith
-
good first issue hacktoberfest tests
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
StackGuardian/tirith#381 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
research
Difficoltà 1/5 1-3 ore Idoneità per principianti 78/100
StackGuardian/tirith#356 ·
I maintainer di solito rispondono entro 1 giorno
-
documentation
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
StackGuardian/tirith#302 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
StackGuardian/tirith#299 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
StackGuardian/tirith#295 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di StackGuardian/tirith
Issue simili
-
defect from-review v0.9.2
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
khuisman/mcp-gee-sweet#926 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 Meno di un'ora Idoneità per principianti 84/100
EtanHey/brainlayer#1164 ·
I maintainer di solito rispondono entro 1 giorno
-
bug security
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
yunaremaia/vibeguard#141 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
PrismorSec/prismor#599 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
iii-hq/iii#2278 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno