Growth Maturity Score Packet (primitive)
Objetivo
Fornecer um packet report-only para decidir crescimento com sanidade em cada boundary, usando quatro dimensões explícitas:
safetycalibrationthroughputsimplicity
Surface
- Tool:
growth_maturity_score_packet - Fonte:
packages/pi-stack/extensions/guardrails-core-growth-maturity-surface.ts
Contrato de saída
decision:go | hold | needs-evidencerecommendationCodecanônicoscoreglobal (média das 4 dimensões quando completas)dimensions.*comscoreemissingsignals.debtBudgetOk,signals.criticalBlockersblockers[],missingSignals[]summarycompacto
Invariantes
reviewMode=read-onlymutationAllowed=falsedispatchAllowed=falseauthorization=noneactivation=none
Regra fail-closed
Se faltar qualquer dimensão obrigatória, a decisão padrão é:
decision=needs-evidencerecommendationCode=growth-maturity-needs-evidence
Uso operacional sugerido
Rodar no turn boundary/checkpoint e registrar decisão no board/handoff antes de ampliar escopo.
Integração recomendada:
- executar
growth_maturity_score_packet; - propagar o snapshot para
turn_boundary_decision_packet(campos opcionais*_score,debt_budget_ok,critical_blockers); - usar
summarycompacto para registrargo|hold|needs-evidenceno checkpoint.
Marcação de origem no boundary:
growthSource=explicitquando o snapshot veio de parâmetros da chamada;growthSource=handoffquando veio do fallbackcontext_watch.growth_maturity.
Regra fail-closed no fallback:
- se o handoff trouxer snapshot parcial (ex.:
score/codesemdecisionválida), o boundary normaliza paragrowthDecision=needs-evidence.
Exemplos rápidos
A) Go (expansão bounded)
Entrada:
{
"safety_score": 90,
"calibration_score": 88,
"throughput_score": 86,
"simplicity_score": 87,
"debt_budget_ok": true,
"critical_blockers": 0
}
Saída esperada (resumo):
decision=go code=growth-maturity-go-expand-bounded
B) Hold (estabilização)
Entrada:
{
"safety_score": 78,
"calibration_score": 75,
"throughput_score": 72,
"simplicity_score": 74,
"debt_budget_ok": true,
"critical_blockers": 0
}
Saída esperada (resumo):
decision=hold code=growth-maturity-hold-maintain
C) Needs-evidence (fail-closed)
Entrada:
{
"safety_score": 90
}
Saída esperada (resumo):
decision=needs-evidence code=growth-maturity-needs-evidence