Fallout-build / Fallout-build/Fallout

Scrub [Secret] values from all log output (plugin-SDK prerequisite)

Open
#443 0 comments 0 reactions 0 assignees View on GitHub
enhancement target/vCurrent
Dominant language
C#
Stars
154
Forks
19
Avg merge
1d 22h
Merged PRs (30d)
15

Description

### Problem
`[Secret]` (`src/Fallout.Build/ParameterAttribute.cs:76`) is a passive marker only — there is no `SensitiveValueRegistry` or output scrubber anywhere, so resolved secret values are never masked from logs. `docs/adr/0002-cross-provider-auth-and-secret-conventions.md` rule 6 ("log masking is a framework-level service") flags this as open; the plugin SDK makes it blocking.

### Outcome
Values resolved into `[Secret]`-marked fields never appear in any build output — framework or plugin — so a third-party plugin cannot leak a resolved secret to CI logs.

### Acceptance criteria
- [ ] A central `SensitiveValueRegistry` (or equiv) registers every value injected into a `[Secret]` field, at injection time (value-injection middleware / `IOnBuildCreated`).
- [ ] Logging middleware scrubs registered values from stdout, stderr, target logs, and the build summary before write.
- [ ] Scrubbing covers plugin-emitted output, not only framework output.
- [ ] Test: a secret written via `Log`, `Console`, or target output does not appear in captured output.

### Notes
- Gates the plugin foundation: milestone #7 runs third-party plugins in-process at full trust (RFC #100). ADR-0002's "plugins receive resolved values, never raw stores" boundary is porous without this.
- Foundation epic #315; design context in `docs/plugin-extraction-github.md` (round 5).

### Open questions
- How to handle transformed secrets a plugin derives (base64, URL-embedded) — scrub only the literal, or registered variants too?

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.