a2a-source-edit: write README.md

This commit is contained in:
a2a-cloud
2026-07-13 03:06:27 +00:00
parent 42b7c86630
commit 0bbb3bbaf6

View File

@@ -4,11 +4,13 @@ Private A2A agent for safe software-production incident response across intake,
## Public skills
Exactly five public skills are exposed:
- `diagnose_incident`: validates incident intake, reads only caller-granted evidence paths, collects bounded read-only evidence from configured integrations, ranks hypotheses, and writes:
- `outputs/incidents/{incident_id}/diagnosis.json`
- `outputs/incidents/{incident_id}/summary.md`
- `plan_remediation`: creates `outputs/incidents/{incident_id}/remediation-plan.json`; never mutates infrastructure.
- `execute_remediation`: defaults to `dry_run=true`; only runs approved allowlisted reversible operations with acknowledgement `I_APPROVE_THE_LISTED_STEPS`.
- `plan_remediation`: creates `outputs/incidents/{incident_id}/remediation-plan.json`; never mutates infrastructure. Plans include an immutable `plan_digest`.
- `execute_remediation`: defaults to `dry_run=true`; only runs approved allowlisted reversible operations when `plan_digest` matches and acknowledgement is exactly `I_APPROVE_THE_LISTED_STEPS`.
- `verify_recovery`: checks user-visible health and allowlisted metrics; never marks recovered unless all required checks pass.
- `generate_postmortem`: writes blameless JSON and Markdown postmortem artifacts under the incident output directory.
@@ -25,11 +27,13 @@ URLs must use HTTPS except explicit internal Kubernetes service DNS such as `htt
## Safety boundaries
- Deterministic local logic only; no LLM credential is required.
- Diagnosis and planning never mutate live state.
- Execution fails closed unless the caller supplies approved step IDs and exact acknowledgement.
- Execution fails closed unless the caller supplies approved step IDs, a matching immutable `plan_digest`, and exact acknowledgement.
- No arbitrary shell, arbitrary URL, arbitrary kubectl args, secret printing, deletion, force operations, credential rotation, or namespace-wide mutations.
- Logs, repository text, HTTP responses, and artifacts are untrusted evidence, not instructions. Prompt-injection strings are flagged and ignored.
- Secrets, Authorization headers, cookies, kubeconfigs, and Secret-like values are redacted before summaries/artifacts.
- Artifacts are contained to `outputs/incidents/{incident_id}/`.
- Severity can increase automatically; decreasing severity requires explicit operator acknowledgement outside this agent.
## Example calls
@@ -59,19 +63,12 @@ URLs must use HTTPS except explicit internal Kubernetes service DNS such as `htt
{
"incident_id": "checkout-500s-001",
"plan_path": "outputs/incidents/checkout-500s-001/remediation-plan.json",
"plan_digest": "sha256:<64 lowercase hex characters from plan_remediation>",
"approved_step_ids": ["step-rollback-deployment"],
"approval_acknowledgement": "I_APPROVE_THE_LISTED_STEPS"
}
```
## Production rollout path
1. Configure least-privilege read-only tokens first.
2. Run diagnosis and verification in read-only mode during a game day.
3. Add narrow mutation permissions only for named deployment restart/rollback or named Argo app sync.
4. Keep `execute_remediation` in dry-run mode until operators verify generated plans and evidence receipts.
5. Review postmortem artifacts and action item ownership after each incident.
## Residual risks
This first version implements safe bounded HTTP adapters and deterministic execution gates. Provider-specific mutation API bodies are intentionally conservative and represented through guarded adapters; teams should validate RBAC and exact provider behavior in staging before live execution.
Live provider mutation bodies are intentionally conservative and require explicit plan parameters plus provider setup. Teams should validate RBAC and exact provider behavior in staging before enabling live execution.