Skip to content

Growth dedup: prune gcec local items the canon now covers - #775

Merged
missingbulb merged 1 commit into
mainfrom
growth-dedup-2026-07-28-ac32f67
Jul 28, 2026
Merged

Growth dedup: prune gcec local items the canon now covers#775
missingbulb merged 1 commit into
mainfrom
growth-dedup-2026-07-28-ac32f67

Conversation

@missingbulb

Copy link
Copy Markdown
Owner

Growth-dedup run for 2026-07-28 (dispatched by #772; standing log #685).

Re-checked the gcec local pack against the mounted canon (stamp 526c991, .claudinite-checks.json), focused on the newly-changed packs named in the dispatch Context: basics, chrome-extension-release, chrome-extension, github-actions, grow_with_claudinite, product-wiki, tidy-repo.

Net: 9 insertions, 19 deletions in .claudinite/local/packs/gcec/RULES.md — the always-injected prose. Nothing else touched; no canon file touched.

What was pruned, and what covers it

Local item (RULES.md) Mounted-canon coverage Kept as project residue
"bump version": Raise version in both extension/manifest.json and package.json (kept identical by the shared-constants check), on a branch. Default to a minor bump packs/chrome-extension-release/RELEASE.md: "Minor/major bumps are deliberate and human: "bump version" = edit the manifest and package.json (plus any repo version-sync constant) together on a branch — default the next minor — and land on main via a normal PR." + the basics pack's mounted bump-version skill (same trigger phrase). Version sync is also enforced by the shared-constants and cer/version-sync checks. "bump version" = cut a release end to end; honoring an explicit target/level; that the phrase is itself the merge authorization; waiting for the published vX.Y.Z zip.
Extractor pipeline: required_secrets … is what puts it in the scheduler workflow's env (and what gets the owner asked for it); never an agent session (which holds no repo secrets); Never re-introduce a workflow whose only job is to hold that secret for an agent: fetch-page.yml was exactly that, and the dispatch/poll/pull round-trip… packs/basics/scheduled-tasks.md: "Preprocessing runs Action-side, so repo Actions secrets are reachable there and nowhere else in a task's life (an executor session carries none). A task lists what it needs in required_secrets; the wiring converge stamps each name into the scheduler workflow … and baselining asks the owner … a workflow that exists only to hold a secret is redundant — fold its work into the task's preprocessing rather than dispatching and polling a second workflow from an agent." (also the scheduler-workflow-shape / gha/no-scheduled-fleet-executor checks) scraperapi.mjs is the single fetch surface, from preprocessing and nowhere else; SCRAPER_API_KEY is the escape hatch, named in both tasks' required_secrets; never a local fetch (this sandbox is bot-blocked); the wait-for-selector aid.
Capture policy: the ladder — a check in the pack's rules beats prose every time (… a testable sentence became a rule module with red-first fixtures); an activity-scoped procedure becomes a pack skill; only what neither can carry lands in RULES.md, terse packs/grow_with_claudinite/extracting-lessons.md: "Route to the local pack that owns it, and prefer the strongest mechanism — the local promotion ladder … a deterministic rule becomes a check in that pack's rules (its failure message is the lesson; ship it with a red-first fixture), an activity-scoped procedure becomes a pack skill, and only what neither can carry lands as terse prose in the pack's RULES.md." (same in packs/grow_with_claudinite/README.md §"Identifying a project's capture surface" and packs/basics/RULES.md §3) That the gcec pack is this repo's capture surface, the intra-pack section routing (extractor-automation → "Extractor pipeline"), and the test-offline-list-sync worked example.

Considered and deliberately kept (says more than the canon)

  • SessionStart-hook-never-fired tell (Remove the popup-states flowchart diagram and its generator #760) — no canon coverage found.
  • git checkout <old-branch> -- <paths> destroying uncommitted edits ([claudinite-task] grow_with_claudinite/growth-dedup d2026-07-25 #734) — the canon's git material covers unique branch naming and merge flow, not this.
  • CI-green-first / merge-and-ci-not-merge-to-main — already framed as this repo's divergence from the canon recipe, and git-github is not a declared pack here.
  • GENERATED-file bullet — the canon (engineering-practices, generated-merge-driver) owns the discipline, but the local bullet's artifact list, the part-authored gallery exception and the "don't paper over a coverage regression" caveat say more.
  • Workflow-failure classification — a per-repo inventory the canon cannot carry.
  • The two task docs under tasks/ — their scheduler/dispatch preamble overlaps scheduled-tasks.md, but it is behavioral instruction at the point of use and pruning it risks regressing the worker; left alone per "when unsure, leave it".

Verification

  • npm run test:offline — 364 tests, 0 fail.
  • node .claudinite/shared/engine/checks/check_the_world.mjs0 blocking, 10 advisory (all pre-existing file-placement advisories on dev/requirements/**).
  • The edit only removes text; RULES.md shrinks (the dedup-prune-integrity invariant), and no canon rule is restated into the local pack.

Human approval gate — this task's declared expected_outcome is open-pr; it does not merge itself.

Refs #772
Refs #685


Generated by Claude Code

Three items in the gcec pack's always-injected RULES.md restated rules the
mounted canon (stamp 526c991) now carries, stripped to their project residue:

- "bump version": the raise-both-files / default-minor mechanics are the
  basics pack's bump-version skill plus chrome-extension-release RELEASE.md
  ("**\"bump version\"** = edit the manifest and `package.json` ... together on
  a branch — default the next **minor** — and land on `main` via a normal PR").
  Kept: end-to-end release semantics, explicit target/level, the merge
  authorization, and waiting for the published zip.
- Extractor pipeline / SCRAPER_API_KEY: the required_secrets wiring and the
  no-workflow-just-to-hold-a-secret rule are basics/scheduled-tasks.md ("A task
  lists what it needs in `required_secrets`; the wiring converge stamps each
  name into the scheduler workflow ... **a workflow that exists only to hold a
  secret is redundant** — fold its work into the task's preprocessing rather
  than dispatching and polling a second workflow from an agent"). Kept: that
  scraperapi.mjs is the only fetch surface and the no-local-fetch rule.
- Capture policy: the check > skill > terse-prose ladder is
  grow_with_claudinite/extracting-lessons.md ("a deterministic rule becomes a
  **check** in that pack's `rules` ... an activity-scoped procedure becomes a
  **pack skill**, and only what neither can carry lands as terse **prose** in
  the pack's `RULES.md`"). Kept: that gcec is this repo's capture surface and
  the intra-pack section routing.

Refs #772

Refs #685
@missingbulb
missingbulb merged commit 3a33fe9 into main Jul 28, 2026
1 check passed
@missingbulb
missingbulb deleted the growth-dedup-2026-07-28-ac32f67 branch July 28, 2026 08:08
missingbulb added a commit that referenced this pull request Jul 28, 2026
Reverts c4d6c7a (#771). The lesson it landed encoded the owner's personal
merge trigger phrase into this repo's pack, and explained why a canon skill
was not mounted here. Neither belongs in a project pack: the phrase is the
owner's, injected per-session and changed without this repo hearing about
it, and pack mounting is engine plumbing rather than knowledge about this
codebase.

Also removes two pre-existing instances of the same mistake:

- The "SessionStart hook never fired" working rule (#766) — a Claudinite
  loading issue explained in a pack, justified by the same preference. Its
  own tracker note already flagged it as unreadable in exactly the session
  that needs it.
- The narrative use of the phrase in the merge-and-ci skill's auto-merge
  evidence (#746), now neutral. That rule stands; only the phrase is gone.

Records the general filter in the capture policy so future extract runs do
not re-derive any of this: personal preferences, Claudinite loading
mechanics, and anything derived from product requirements never land in a
pack, however strong the evidence. Packs carry development-process lessons
only. Each turns on what a lesson is about rather than anything observable
in a working tree, so they are prose and deliberately not checks.

Rebased onto #775, which pruned this same capture-policy paragraph while
this change was in flight; its dedup is preserved and the exclusions were
rewritten in its tighter voice.

Refs #770
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants