promptward

Plan 008: Correct the README’s placeholder-rehydration claim

Executor instructions: Follow this plan step by step. Run every verification command and confirm the expected result before moving to the next step. If anything in the “STOP conditions” section occurs, stop and report — do not improvise. When done, update the status row for this plan in plans/README.md — unless a reviewer dispatched you and told you they maintain the index.

Drift check (run first): grep -rn "revealText\|reveal(" src/ | grep -v "shared/messages\|shared/offscreen-routing\|offscreen.ts\|rampart-worker.ts If this grep finds a NEW caller of reveal (e.g. a content-script response observer), the feature has been wired since planning — STOP; this plan is obsolete and should be marked REJECTED in plans/README.md.

Status

Why this matters

The README advertises: “Reversible placeholders. Redacted tokens like [PERSON_1] or [SSN_1] rehydrate back to their real values within the same conversation, so model responses referencing them still read naturally.” This does not happen. The plumbing exists end-to-end — a PW_REVEAL_TEXT message type, an offscreen route, and guard.reveal() in the worker — but nothing ever sends that message: no content-script code observes model responses or calls reveal. A user who reads the feature list expects assistant replies to show real values; they will see raw [PERSON_1] tokens and conclude the extension is broken. Actively wrong docs are worse than missing ones. The honest fix today is to describe what ships; actually wiring response rehydration is a separate, larger piece of work (recorded as a direction option in plans/README.md).

Current state

Commands you will need

Purpose Command Expected on success
Tests npm test all pass (proves no accidental code change)

Scope

In scope:

Out of scope:

Git workflow

Steps

Step 1: Rewrite the Features bullet

Replace the README.md:32 bullet with:

- **Reversible placeholders (foundation).** Redaction keeps a per-conversation map from tokens like `[PERSON_1]` or `[SSN_1]` back to their real values, held only in extension memory. Automatic rehydration of model responses is not wired up yet — replies will show the placeholder tokens as-is.

Step 2: Rewrite the Known limitations bullet

Replace the README.md:65 bullet with:

- Model responses are not yet rehydrated: replies that reference redacted values show the placeholder tokens (e.g. `[PERSON_1]`) rather than the original text. The placeholder maps that would enable this are kept per conversation/tab and reset on navigation, tab close, or extension reload.

Verify: grep -n "rehydrate" README.md → both occurrences now describe the feature as not-yet-wired.

Step 3: Confirm nothing else changed

Verify: git diff --name-only → exactly README.md (plus plans/README.md once you update the status row). Verify: npm test → all pass.

Test plan

None — docs-only.

Done criteria

STOP conditions

Maintenance notes