Full spec: docs/hardening-roadmap-2026-04-16.md#h-3
Description
apps/cli/src/handlers.ts:253 logs shared email: ${email} via console.log. Terminal scrollback, CI logs, and redirected stdout preserve this. Audit all CLI console.log/console.error call sites.
Current State
apps/cli/src/handlers.ts:253 logs raw email during cross-candidate merge.
- Grep
console.log.*email|console.log.*phone|console.log.*\.value across apps/cli/src.
Suggested Fix
Verification
Automation Hints
scope: packages/core, apps/cli/src
do-not-touch: packages/adapters, packages/scoring
approach: add-validation
risk: low
max-files-changed: 6
blocked-by: none
bail-if: CLI tests fail
Priority
High
Full spec:
docs/hardening-roadmap-2026-04-16.md#h-3Description
apps/cli/src/handlers.ts:253logsshared email: ${email}viaconsole.log. Terminal scrollback, CI logs, and redirected stdout preserve this. Audit all CLIconsole.log/console.errorcall sites.Current State
apps/cli/src/handlers.ts:253logs raw email during cross-candidate merge.console.log.*email|console.log.*phone|console.log.*\.valueacrossapps/cli/src.Suggested Fix
redactPII(value, type)helper in@sourcerer/core(newpii-redact.ts).al***@example.comhandlers.ts:253withredactPII(email, 'email').CLAUDE.md: "Never log raw PII. UseredactPII()."Verification
pnpm buildpassespnpm testpassespnpm typecheckcleanredactPII('alice@example.com', 'email')==='al***@example.com'console.log.*emailreturns only redacted formsAutomation Hints
scope: packages/core, apps/cli/src
do-not-touch: packages/adapters, packages/scoring
approach: add-validation
risk: low
max-files-changed: 6
blocked-by: none
bail-if: CLI tests fail
Priority
High