a2a-source-edit: write README.md
This commit is contained in:
21
README.md
21
README.md
@@ -4,11 +4,13 @@ Private A2A agent for safe software-production incident response across intake,
|
|||||||
|
|
||||||
## Public skills
|
## 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:
|
- `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}/diagnosis.json`
|
||||||
- `outputs/incidents/{incident_id}/summary.md`
|
- `outputs/incidents/{incident_id}/summary.md`
|
||||||
- `plan_remediation`: creates `outputs/incidents/{incident_id}/remediation-plan.json`; never mutates infrastructure.
|
- `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 with acknowledgement `I_APPROVE_THE_LISTED_STEPS`.
|
- `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.
|
- `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.
|
- `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
|
## Safety boundaries
|
||||||
|
|
||||||
|
- Deterministic local logic only; no LLM credential is required.
|
||||||
- Diagnosis and planning never mutate live state.
|
- 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.
|
- 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.
|
- 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.
|
- 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.
|
- Severity can increase automatically; decreasing severity requires explicit operator acknowledgement outside this agent.
|
||||||
|
|
||||||
## Example calls
|
## Example calls
|
||||||
@@ -59,19 +63,12 @@ URLs must use HTTPS except explicit internal Kubernetes service DNS such as `htt
|
|||||||
{
|
{
|
||||||
"incident_id": "checkout-500s-001",
|
"incident_id": "checkout-500s-001",
|
||||||
"plan_path": "outputs/incidents/checkout-500s-001/remediation-plan.json",
|
"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"],
|
"approved_step_ids": ["step-rollback-deployment"],
|
||||||
"approval_acknowledgement": "I_APPROVE_THE_LISTED_STEPS"
|
"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
|
## 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.
|
||||||
|
|||||||
Reference in New Issue
Block a user