feat(FN-4915): complete Step 5-7 — document taxonomy and ship changeset
Fusion-Task-Id: FN-4915 Fusion-Task-Lineage: d5c49dae-6069-4998-b632-aca52cc312dc
This commit is contained in:
committed by
gsxdsm
parent
cbd3c961d1
commit
f00d732876
5
.changeset/fn-4915-secret-audit-taxonomy.md
Normal file
5
.changeset/fn-4915-secret-audit-taxonomy.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"@runfusion/fusion": patch
|
||||
---
|
||||
|
||||
Expand secret audit taxonomy and harden secret audit payload handling. This adds typed secret mutation coverage (`secret:create`, `secret:update`, `secret:delete`, `secret:read`, approval events, sync events, and env lifecycle events), introduces plaintext-forbidden metadata enforcement via `assertNoSecretPlaintext`, adds non-blocking `SecretsStore` audit emitter hooks for CRUD/read operations, and ensures secret audit emission paths avoid leaking plaintext/ciphertext/nonce fields.
|
||||
@@ -331,7 +331,7 @@ Reusable quality gates at configurable lifecycle phases. **Pre-merge** can block
|
||||
Every engine mutation is recorded across four domains:
|
||||
- **Database** — task:create, task:update, task:move, `room:ambiguity:branch` (deictic message routing telemetry), etc.
|
||||
- **Git** — worktree:create, commit:create, merge:resolve, etc.
|
||||
- **Filesystem** — file:write, prompt:write, attachment:create, `secret:env-*`, etc.
|
||||
- **Filesystem** — file:write, prompt:write, attachment:create, `secret:read|create|update|delete|approval-requested|approval-granted|approval-denied|sync-push|sync-pull`, `secret:env-*`, etc.
|
||||
- **Sandbox** — `sandbox:prepare`, `sandbox:run`, `sandbox:failure`, `sandbox:fallback`.
|
||||
|
||||
Events are tied to run IDs end-to-end. See [docs/architecture.md](./docs/architecture.md) for the audit API.
|
||||
|
||||
@@ -129,16 +129,29 @@ Audit payloads exclude plaintext values, passphrases, and envelope crypto materi
|
||||
|
||||
## Audit Events
|
||||
|
||||
Current run-audit docs already list filesystem secret env lifecycle event names:
|
||||
Filesystem-domain secret audit taxonomy:
|
||||
|
||||
- `secret:read`
|
||||
- `secret:create`
|
||||
- `secret:update`
|
||||
- `secret:delete`
|
||||
- `secret:approval-requested`
|
||||
- `secret:approval-granted`
|
||||
- `secret:approval-denied`
|
||||
- `secret:sync-push`
|
||||
- `secret:sync-pull`
|
||||
- `secret:env-write`
|
||||
- `secret:env-write-skipped`
|
||||
- `secret:env-cleanup`
|
||||
- `secret:env-cleanup-skipped`
|
||||
|
||||
⚠️ The broader secret event taxonomy (`secret:create`, `secret:update`, `secret:delete`, `secret:read`, approvals, sync push/pull) is not wired in this branch. Follow-up: **FN-4867**.
|
||||
Wired in this branch/task lineage: `secret:read`, `secret:create`, `secret:update`, `secret:delete`, and approval events (`secret:approval-requested`, `secret:approval-granted`, `secret:approval-denied`).
|
||||
|
||||
Rule that will continue to apply when read events land: secret-read audit records must never include plaintext values.
|
||||
Pending follow-ups:
|
||||
- Sync endpoint/event integration details continue under **FN-4913** (`secret:sync-push`, `secret:sync-pull`).
|
||||
- Env materialization lifecycle wiring continues under **FN-4912** (`secret:env-*`).
|
||||
|
||||
**Plaintext prohibition:** audit payload metadata must never include plaintext, decrypted values, ciphertext, or nonce fields. Use `assertNoSecretPlaintext(...)` as the canonical enforcement helper before emitting secret audit events.
|
||||
|
||||
## Operational Notes
|
||||
|
||||
|
||||
Reference in New Issue
Block a user