Skip to content

Adopt CC 2.1.169 — prompt extraction + extractor#5

Merged
skrabe merged 2 commits into
skrabe:mainfrom
dividedby:adopt/cc-2.1.169
Jun 9, 2026
Merged

Adopt CC 2.1.169 — prompt extraction + extractor#5
skrabe merged 2 commits into
skrabe:mainfrom
dividedby:adopt/cc-2.1.169

Conversation

@dividedby

Copy link
Copy Markdown

Extracts the 2.1.169 system prompts (data/prompts/prompts-2.1.169.json) and teaches tools/promptExtractor.js to name the 6 new/restructured 2.1.169 prompts and exclude 2 @internal comment blobs. Seeded by fuzzy carry-over from the leaf's own prompts-2.1.168.json (no external source).

Verification

  • tools/versionBumpReport.js 2.1.168 2.1.169 --strict: 0 blocking · 0 removed ids · 0 anonymous (exit 0); pnpm test → 323 pass / 5 skip.
  • Integration gate (dividedby/tweakcc-maint) Four-zeros against installed 2.1.169: pass: true, bootVerifyPassed: true, empty failedPatches / missingSystemPrompts / orphanVariables, clean Restore drill. Record:
{
  "pass": true,
  "versions": [
    {
      "ccVersion": "2.1.169",
      "fourZeros": {
        "pass": true,
        "failedPatches": [],
        "missingSystemPrompts": [],
        "orphanVariables": [],
        "orphanSource": "boot-verify-fallback",
        "advisoryOrphans": [
          "IS_TRUTHY_FN",
          "PROCESS_OBJECT",
          "CRON_DURABLE_FLAG",
          "CONDITIONAL_WHAT_HAPPENS_NOTE"
        ],
        "bootVerifyPassed": true
      },
      "restoreDrill": { "pass": true, "status": "pass", "backupExists": true, "restored": true, "cleanStock": true }
    }
  ]
}

The gate record was produced with the lobotomized overrides isolated, to validate the patcher on its own terms (see caveat). advisoryOrphans are the Piebald-AI#26 override names — advisory-only, not part of the Four-zeros verdict.

Scope / caveat

This validates the patcher (binary patches + prompt extraction). It does not touch lobotomized-claude-code. That repo's overrides have a pre-existing slot-name drift — references like ${PROMPT_VAR_0} and ${CRON_DURABLE_FLAG} that match neither 2.1.168 nor 2.1.169 (the overrides are pinned at old ccVersions whose prompts were since restructured/renamed). Tracked as dividedby/tweakcc-maint#26, independent of this bump.

Sequencing: the identifierMap-union / skip-unresolved-placeholder detector (PR #4 / dividedby/tweakcc-maint#45) is the runtime guard for exactly that unresolved-placeholder case; recommend landing #4 as well, though these files are disjoint and this PR does not depend on it.

Refs dividedby/tweakcc-maint#58.

…internal comments

2.1.169 surfaced 8 prompts anonymously: 3 restructured below the fuzzy-match
threshold (communicating-with-the-user, /schedule, design-sync package source
adapter) + 3 net-new (code-review efficiency, operating-autonomously,
EnterWorktree isolation directive). Add NEW_PROMPT_ASSIGNMENTS matchers for all
six and re-pin the restructured ids so their lobotomized overrides keep binding.

The /schedule prompt grew 15->34 interpolation sites but still dedupes to the
same 15 underlying identifiers in the same first-appearance order, so its .168
identifierMap carries over verbatim (override ${VAR}s re-bind 1:1).

Exclude the two new @internal JSDoc annotations (supportedDialogKinds gating,
retracted-message uuid wiring) -- TS doc-comments, not model-facing prompts.

Adds data/prompts/prompts-2.1.169.json (389 named, 0 anonymous). Strict
version-bump report: 0 blocking issues, 0 removed ids.

Refs dividedby/tweakcc-maint#58

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
dividedby added a commit to dividedby/tweakcc-maint that referenced this pull request Jun 9, 2026
…park #26, file #62 (#63)

The HITL 2.1.169 gate run shipped the patcher half of #58 (skrabe/tweakcc-fixed#5)
and disproved the handoff's "no override work": the full-override gate boot-crashes on
pre-existing #26 breakage. Reconcile the census:
- #58 → Blocked on #26 (patcher half done+shipped; lobotomized half blocked)
- #26 → un-parked into W1 as the live blocker; confirmed pre-existing & version-independent
- #62 → new (orphan-validator SYNTHETIC_POSITIONAL false-clean), W2 needs-triage

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
… pipeline

The committed prompts-2.1.169.json was extracted without TWEAKCC_UPSTREAM_JSON,
so agent-prompt-worker-fork carried the 2.1.168 identifierMap and mis-bound two
override placeholders: WORKER_DIRECTIVE (slot1 -> should be slot2) and
ADDITIONAL_CONTEXT (slot2 -> should be slot3). 2.1.169 inserted AGENT_TOOL_NAME
at slot1, shifting both down one. The opus-4-8 override binds by human-name, so
it would silently resolve to a valid-but-wrong var (no crash; invisible to
smoke + four-zeros; only the mis-bind audit catches it).

Regenerated through the leaf's pipeline with the upstream identifierMap adopted
for shared prompts (commit 38daf92), which restores the correct slot binding.
promptExtractor.js (the 6 new/restructured names + 2 @internal exclusions) is
unchanged - this only corrects the generated data artifact.

Verified: tools/auditMisbinds.mjs -> 0 mis-binds; version-bump report
2.1.168 -> 2.1.169 -> 0 blocking / 0 anonymous / 0 UNKNOWN / fresh extraction
matches committed; 389 named (prev 383, no regression).

Co-authored-by: dividedby <64715420+dividedby@users.noreply.github.com>
@skrabe

skrabe commented Jun 9, 2026

Copy link
Copy Markdown
Owner

Thanks for this @dividedby — the extractor work is spot-on. I verified it independently: our own extractor flags the exact same 6 gaps this PR fills (3 fuzzy-misses: schedule / communicating-with-user / the non-storybook package adapter, + 3 net-new: code-review Efficiency / operating-autonomously / EnterWorktree) and the same 2 @internal blobs to exclude. The re-pins land on our vocabulary and the schedule identifierMap is byte-identical to ours. The promptExtractor.js changes are adopted as-is.

One finding on the committed JSON, which I've fixed in a commit pushed on top (e335fb9): agent-prompt-worker-fork mis-bound two override placeholders — WORKER_DIRECTIVE (slot1 → should be slot2) and ADDITIONAL_CONTEXT (slot2 → should be slot3). 2.1.169 inserted AGENT_TOOL_NAME at slot1, shifting both down one. Because the override binds by human-name, it would silently resolve to a valid-but-wrong var — no crash, passes smoke + four-zeros; only the mis-bind audit catches it.

Root cause is just that the JSON was generated without TWEAKCC_UPSTREAM_JSON set, so worker-fork kept the .168 carryover map instead of adopting upstream's authoritative slot binding (our fork-only step from 38daf92). Your promptExtractor.js is correct — run through the pipeline with that env var it produces a clean 0-mis-bind JSON, which is exactly what the fix commit regenerated. Heads-up: since your tweakcc-maint lineage doesn't have that adoption step, this same worker-fork mis-bind is probably present there too — worth a regen.

(Note: PR #4's skip-unresolved guard wouldn't have caught this one — it's wrong-but-valid, not an unresolved ${VAR}. Different class.)

Verified after the fix: tools/auditMisbinds.mjs → 0 mis-binds; version-bump report 2.1.168→2.1.169 → 0 blocking / 0 anonymous / 0 UNKNOWN / fresh-extraction-matches-committed; 389 named (no regression, +41 vs Piebald). Merging. 🙏

@skrabe skrabe merged commit 668bd83 into skrabe:main Jun 9, 2026
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