feat(core): YAML policy format with transformation functions via `!` tags
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 35/100
Direzione di ricerca
Inizia con il percorso esistente di validazione e valutazione delle policy JSON, quindi segui gli entry point tirith lint e tirith fmt menzionati nell’issue e il lavoro correlato in #366. Il lavoro è completo quando le policy YAML vengono valutate come quelle JSON, i tag approvati trasformano i valori con errori per ciascun valore, i tag sconosciuti falliscono in modo chiaro, lint/format e i round-trip del builder funzionano e la documentazione include un confronto JSON/YAML.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Policies are JSON-only today. Support YAML as a first-class policy format: the same schema (YAML is
a superset, so every existing policy has a 1:1 YAML twin), plus YAML custom tags — the ! prefix —
as declarative transformation functions inline in the policy:
meta:
version: v1
provider: stackguardian/terraform_plan
evaluators:
- id: task_def_count
provider_args:
operation_type: attribute
terraform_resource_type: aws_ecs_task_definition
terraform_resource_attribute: !json_decode container_definitions
condition:
type: LessThanEqualTo
value: !length
Design constraints
- Tags are data, not code: a fixed whitelist of transformation tags (e.g.
!length,
!json_decode,!lower) parsed with a safe YAML loader — an unknown tag is a validation error,
never an arbitrary constructor. This keeps the format Builder-friendly. - The tags are surface syntax over the same transformation pipeline planned for
condition.transform— one implementation, two spellings. A minimal function set can ship with
the format; the fuller coercion layer (dates, CIDR, sizes) extends it later. - Each transformation step wraps errors per value (a failed decode is a provider error on that
resource, not a crashed run). tirith lint/tirith fmt(#366) must accept and format YAML policies; validation and the
interactive builder round-trip both formats.
Acceptance. A .yaml policy evaluates identically to its JSON twin; ! tags apply the shared
transformations with per-value error handling; an unknown tag fails validation with a clear
message; tirith lint/fmt handle YAML; docs show a side-by-side JSON/YAML example.
- Lingua principale
- Python
- Stelle
- 170
- Fork
- 46
- Merge medio
- 1g 21h
- PR unite (30g)
- 7
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
-
test(evaluators): edge cases for the numeric comparison evaluatorsForse già presa @sricharanreddycheruku l’ha presa 2 giorni fa. Apertagood first issue hacktoberfest tests
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
StackGuardian/tirith#381 · 3 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
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
awslabs/visual-asset-management-system#414 ·
I maintainer di solito rispondono entro 1 giorno
-
bug v1 v2
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
modelcontextprotocol/python-sdk#3670 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
aicell-lab/bioengine#232 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
modelscope/evalscope#1836 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100