Contract YAML 參考
最小可用的 contract 長這樣:
apiVersion: contract.spendguard.io/v1alpha1kind: Contractmetadata: id: 33333333-3333-4333-8333-333333333333 name: my-contractspec: budgets: - id: 44444444-4444-4444-8444-444444444444 limit_amount_atomic: "1000000000" # $1000 in atomic units currency: USD reservation_ttl_seconds: 600 require_hard_cap: true rules: - id: hard-cap-deny when: budget_id: 44444444-4444-4444-8444-444444444444 claim_amount_atomic_gt: "1000000000" then: decision: STOP reason_code: BUDGET_EXHAUSTED - id: threshold-approval when: budget_id: 44444444-4444-4444-8444-444444444444 claim_amount_atomic_gte: "100000000" then: decision: REQUIRE_APPROVAL reason_code: AMOUNT_OVER_THRESHOLD approver_role: tenant-adminDecision 值
Section titled “Decision 值”CONTINUE— 放行,繼續執行DEGRADE— 套用 mutation patch(POC 階段:會被當成 APPLY_FAILED 處理)SKIP— 非致命的略過STOP— 終止整個 runREQUIRE_APPROVAL— 暫停,等待 operator 介入(POC 階段:視為終態)
Condition 運算子
Section titled “Condition 運算子”POC 目前支援:
claim_amount_atomic_gt— claim > thresholdclaim_amount_atomic_gte— claim ≥ threshold
CEL predicate 會在 v1 才進來。
常見的寫法可以參考 examples。