Redaction and Cleanup
Overview
Prepare .forge/ documents for external sharing by copying them to .forge/redacted/ and replacing sensitive information with consistent placeholders. Original files are NEVER modified. The redaction manifest documents every change for internal reference.
When to Use
- Sharing documents with investors, advisors, or partners
- Preparing materials for external review or cross-validation
- Publishing case studies or documentation based on internal artifacts
- Any situation where internal data must not leave the organization
When NOT to Use
- Documents are already public — no redaction needed
- User wants to delete files — that's not redaction
- The sensitive data IS the deliverable (e.g., a security audit for the client)
Common Rationalizations
| Thought |
Reality |
| "I'll just manually remove the sensitive parts" |
Manual redaction misses things. Automated scan + manifest catches more |
| "It's fine, the recipient is trusted" |
Trust the person, redact the document. People forward things |
| "I'll edit the originals and restore later" |
You won't. Original files must be untouched — copy first, always |
| "Only pricing needs redacting" |
Credentials, internal metrics, employee names, strategy details — audit first |
| "A quick find-and-replace is enough" |
Inconsistent placeholders leak information through correlation |
Red Flags
- Original files modified in place (SAFETY VIOLATION — must copy first)
- Placeholder values are inconsistent (same entity gets different placeholders)
- Grep after redaction still finds sensitive terms
- Manifest is missing (no record of what was changed)
- Redaction categories not defined before scanning (ad-hoc misses patterns)
SAFETY RULE
NEVER modify original files in place. All redaction happens on copies in .forge/redacted/. Original files in .forge/ must remain untouched. If you are about to edit a file outside .forge/redacted/, STOP.
Core Process
Step 1: Define redaction categories
With the user, define what to redact and what to keep:
Redact (typical):
- Pricing, margins, unit economics
- API keys, credentials, connection strings
- Internal strategy, competitive positioning details
- Employee names, internal team structure
- Specific customer names (unless public case study)
- Internal metrics, revenue numbers
Keep (typical):
- Public pricing from competitors
- Architecture patterns and technology choices
- General cost categories (without specific numbers)
- Role titles (without names)
- Publicly available data
Step 2: Define placeholder format
Use consistent, identifiable placeholders:
- Company names:
[COMPANY-A], [COMPANY-B] (consistent across all docs)
- Prices:
[PRICE-TIER-1], [PRICE-TIER-2]
- People:
[TEAM-MEMBER-1], [TEAM-MEMBER-2]
- Metrics:
[INTERNAL-METRIC]
- Credentials:
[CREDENTIAL-REDACTED]
Consistency rule: the same entity gets the same placeholder everywhere.
Step 3: Scan all files
Scan every file in .forge/ for matches against redaction categories. For each match, record:
- File path
- Line number
- Original content (summary, not full text)
- Redaction action (replace with which placeholder)
Step 4: Generate manifest
Write .forge/redaction-manifest.md:
- Redaction categories defined
- Placeholder mapping (which entity → which placeholder)
- Per-file change list
- Total changes count
Step 5: Copy and redact
- Create
.forge/redacted/ directory
- Copy all files from
.forge/ to .forge/redacted/ (preserving structure)
- Apply redactions to the copies only
- Do NOT copy
.forge/redaction-manifest.md to redacted/ (it contains the mapping)
Step 6: Verify
Run grep on .forge/redacted/ for every term in the redaction categories. Zero matches required. If any remain, fix and re-verify.
Step 7: Sync check
If documents are updated later, the redacted copies are stale. Note in the manifest: "Redacted on [date]. If originals change, re-run redaction."
Output
.forge/redaction-manifest.md — what was redacted, placeholder mapping
.forge/redacted/* — cleaned copies of all documents
Verification
1---2name: redaction-and-cleanup3description: Use when user says "redact", "clean up for sharing", "remove sensitive info", "prepare for external", when sharing .forge/ artifacts with investors or external reviewers, when sanitizing documents before external publication, or when pricing/credentials/strategy must be removed before sharing.4---56# Redaction and Cleanup78## Overview910Prepare `.forge/` documents for external sharing by copying them to `.forge/redacted/` and replacing sensitive information with consistent placeholders. Original files are NEVER modified. The redaction manifest documents every change for internal reference.1112## When to Use1314- Sharing documents with investors, advisors, or partners15- Preparing materials for external review or cross-validation16- Publishing case studies or documentation based on internal artifacts17- Any situation where internal data must not leave the organization1819## When NOT to Use2021- Documents are already public — no redaction needed22- User wants to delete files — that's not redaction23- The sensitive data IS the deliverable (e.g., a security audit for the client)2425## Common Rationalizations2627| Thought | Reality |28|---------|---------|29| "I'll just manually remove the sensitive parts" | Manual redaction misses things. Automated scan + manifest catches more |30| "It's fine, the recipient is trusted" | Trust the person, redact the document. People forward things |31| "I'll edit the originals and restore later" | You won't. Original files must be untouched — copy first, always |32| "Only pricing needs redacting" | Credentials, internal metrics, employee names, strategy details — audit first |33| "A quick find-and-replace is enough" | Inconsistent placeholders leak information through correlation |3435## Red Flags3637- Original files modified in place (SAFETY VIOLATION — must copy first)38- Placeholder values are inconsistent (same entity gets different placeholders)39- Grep after redaction still finds sensitive terms40- Manifest is missing (no record of what was changed)41- Redaction categories not defined before scanning (ad-hoc misses patterns)4243## SAFETY RULE4445**NEVER modify original files in place.** All redaction happens on copies in `.forge/redacted/`. Original files in `.forge/` must remain untouched. If you are about to edit a file outside `.forge/redacted/`, STOP.4647## Core Process4849### Step 1: Define redaction categories5051With the user, define what to redact and what to keep:5253**Redact** (typical):54- Pricing, margins, unit economics55- API keys, credentials, connection strings56- Internal strategy, competitive positioning details57- Employee names, internal team structure58- Specific customer names (unless public case study)59- Internal metrics, revenue numbers6061**Keep** (typical):62- Public pricing from competitors63- Architecture patterns and technology choices64- General cost categories (without specific numbers)65- Role titles (without names)66- Publicly available data6768### Step 2: Define placeholder format6970Use consistent, identifiable placeholders:71- Company names: `[COMPANY-A]`, `[COMPANY-B]` (consistent across all docs)72- Prices: `[PRICE-TIER-1]`, `[PRICE-TIER-2]`73- People: `[TEAM-MEMBER-1]`, `[TEAM-MEMBER-2]`74- Metrics: `[INTERNAL-METRIC]`75- Credentials: `[CREDENTIAL-REDACTED]`7677Consistency rule: the same entity gets the same placeholder everywhere.7879### Step 3: Scan all files8081Scan every file in `.forge/` for matches against redaction categories. For each match, record:82- File path83- Line number84- Original content (summary, not full text)85- Redaction action (replace with which placeholder)8687### Step 4: Generate manifest8889Write `.forge/redaction-manifest.md`:90- Redaction categories defined91- Placeholder mapping (which entity → which placeholder)92- Per-file change list93- Total changes count9495### Step 5: Copy and redact96971. Create `.forge/redacted/` directory982. Copy all files from `.forge/` to `.forge/redacted/` (preserving structure)993. Apply redactions to the copies only1004. Do NOT copy `.forge/redaction-manifest.md` to redacted/ (it contains the mapping)101102### Step 6: Verify103104Run grep on `.forge/redacted/` for every term in the redaction categories. Zero matches required. If any remain, fix and re-verify.105106### Step 7: Sync check107108If documents are updated later, the redacted copies are stale. Note in the manifest: "Redacted on [date]. If originals change, re-run redaction."109110## Output111112- `.forge/redaction-manifest.md` — what was redacted, placeholder mapping113- `.forge/redacted/*` — cleaned copies of all documents114115## Verification116117- [ ] Original files in `.forge/` are unchanged118- [ ] All files copied to `.forge/redacted/` before any edits119- [ ] Placeholders are consistent (same entity → same placeholder across all files)120- [ ] Grep confirms zero remaining matches for redacted terms in `.forge/redacted/`121- [ ] Manifest documents every change with file and line reference122- [ ] Redaction manifest is NOT copied to `.forge/redacted/`123- [ ] `.forge/redaction-manifest.md` written