Skip to content

chrome-extension: split into coding + opt-in release pack; stop generating drift-prone files - #155

Merged
missingbulb merged 2 commits into
mainfrom
claude/clotenate-files-minimization-de8zgy
Jul 7, 2026
Merged

chrome-extension: split into coding + opt-in release pack; stop generating drift-prone files#155
missingbulb merged 2 commits into
mainfrom
claude/clotenate-files-minimization-de8zgy

Conversation

@missingbulb

@missingbulb missingbulb commented Jul 7, 2026

Copy link
Copy Markdown
Owner

Closes #153. Closes #156.

Two related changes to the Chrome-extension corpus, in sequence.

1 — Stop generating drift-prone repo files (#153)

The release standard made every consuming repo carry two prose files that duplicate state maintained elsewhere:

  • dev/build/release/releasing.md — a per-repo release doc. The procedure lives once in RELEASE.md; the concrete facts already live in the stubs / manifest.json / package.json. Removed.
  • store_artifacts/STORE-LISTING.md — the "submission kit" duplicating Chrome Web Store dashboard state. Removed. First publication becomes a one-time tracking issue (opened idempotently at setup, closed when done); listing copy + justifications stay in the dashboard, where they live.

Replacing cer/permission-justifications:

  • cer/privacy-permission-alignment (blocking, test-the-world) — every manifest permission must be disclosed in PRIVACY.md, the one release artifact that belongs in the repo (it deploys as the public privacy page).
  • cer/permission-added-store-issue (advisory, test-the-work) — a permission added in the change prompts opening the manual dashboard-justification issue. Advisory because the fix is entirely off-repo — no in-repo artifact to block against.

cer/release-layout now requires only PRIVACY.md. New ctx.readBase() compares permission sets against the base, immune to JSON trailing-comma line noise.

2 — Split the pack (#156)

chrome-extension bundled two unrelated concerns. Audit confirmed a clean split (and the cer/ ids + DESIGN.md already anticipated it):

  • chrome-extension — MV3 coding gotchas (RULES.md), prose only, fingerprinted by the manifest. Applies whenever you code an extension.
  • chrome-extension-release (new) — RELEASE.md, the 7 checks, stubs/. Opt-in: declared when ready to ship, fingerprinted by the Release: * workflow stubs (not the manifest). Declaring it is the cue to scaffold the machinery + open the first-publication issue; the drift guard auto-migrates repos already shipping release.

Payoff: fixes premature enforcement — wanting the coding gotchas no longer arms 7 blocking release checks on a half-built extension.

Verification

69 tests pass (incl. a fingerprint test asserting the opt-in behavior); repo self-run (reference-integrity across the cross-pack links) is clean.

Assumptions worth a look (the decision popup kept failing this session, so I took the recommended path — redirect any here)

  1. Release-pack activation: fingerprint on the Release: * stubs (opt-in + self-healing migration) vs. pure opt-in with no fingerprint.
  2. First-publication issue opened at setup, idempotently, vs. document-only.
  3. Alignment strictness: cer/privacy-permission-alignment currently requires every permission in PRIVACY.md, including non-data ones like alarms (acceptable with a reason, or the check could be narrowed to privacy-relevant permissions).
  4. Delivery: folded both into this one PR rather than landing chrome-extension: minimize generated repo files (drop releasing.md + STORE-LISTING.md); align manifest permissions to privacy doc #153 first and doing the split on top.

🤖 Generated with Claude Code

…ssions to the privacy doc

The release standard made every extension repo carry two prose files that only
drift from state maintained elsewhere:

- dev/build/release/releasing.md — a per-repo release doc duplicating this
  standard; its concrete facts already live in the stubs and manifest/package.json.
- store_artifacts/STORE-LISTING.md — the "submission kit" duplicating Chrome Web
  Store dashboard state (listing copy + per-permission justifications).

Both are removed. First publication becomes a one-time tracking issue (opened
idempotently at setup, closed when done); the listing copy and per-permission
justifications stay in the dashboard, where they actually live.

Two checks replace cer/permission-justifications:
- cer/privacy-permission-alignment (blocking, test-the-world): every manifest
  permission must be disclosed in PRIVACY.md — the one release artifact that
  genuinely belongs in the repo (it deploys as the public privacy page).
- cer/permission-added-store-issue (advisory, test-the-work): when a change adds
  a permission, prompt opening the dashboard-justification issue — the manual
  step that can't be automated. Advisory because the fix lives entirely off-repo,
  so there is no in-repo artifact to block a fix against.

cer/release-layout now requires only PRIVACY.md. A new ctx.readBase() helper lets
the delta check compare permission sets against the base, immune to JSON
trailing-comma line noise.

Refs #153

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018zkPPQbDxA4kfF5bgDy3iD
…lease pack

The chrome-extension pack bundled two unrelated concerns: MV3 coding gotchas
(RULES.md, relevant whenever you write an extension) and the release/Chrome-Web-
Store standard (RELEASE.md + 7 cer/* checks + stubs, relevant only when shipping).
The check ids were already cer/ (chrome-extension-release) and DESIGN.md already
named the pack chrome-extension-release — this realizes that intent.

- New packs/chrome-extension-release/: RELEASE.md, the 7 checks, stubs/, support
  .mjs. Opt-in — declared when ready to ship, fingerprinted by the standard's
  "Release: *" workflow stubs (not the manifest). A manifest alone never arms the
  release checks; the drift guard auto-migrates a repo that already ships release.
- packs/chrome-extension/: keeps only RULES.md (prose, no checks), fingerprinted
  by the manifest.

Fixes premature enforcement: declaring the coding pack no longer forces four
workflow stubs, PRIVACY.md, README release sections, etc. on a half-built
extension. Docs (CLAUDE.md, packs/README.md, DESIGN.md, bump-version) and test
imports updated; a fingerprint test asserts the opt-in behavior.

Refs #156

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018zkPPQbDxA4kfF5bgDy3iD
@missingbulb missingbulb changed the title chrome-extension: stop generating drift-prone repo files; align permissions to the privacy doc chrome-extension: split into coding + opt-in release pack; stop generating drift-prone files Jul 7, 2026
@missingbulb
missingbulb marked this pull request as ready for review July 7, 2026 11:30
@missingbulb
missingbulb merged commit 92fb0f0 into main Jul 7, 2026
1 check passed
@missingbulb
missingbulb deleted the claude/clotenate-files-minimization-de8zgy branch July 7, 2026 11:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants