Claudinite growth: conversation extract - #766
Merged
Merged
Conversation
Two rules from the 2026-07-26 conversation logs, both into the gcec pack's Working rules (prose is the strongest available mechanism — neither condition is observable from a working tree at Stop time): - A silent SessionStart-hook miss, from the issue-760 log: the session had only CLAUDE.md in context, so "LGTM" read as approval rather than the merge command, costing an owner round-trip. Names the tell and the one-call recovery. - `git checkout <old-branch> -- <paths>` destroys the uncommitted edits it was meant to carry to a new branch, from the issue-734 log: three finished edits wiped and a green check + offline-suite pass invalidated. Refs #764
This was referenced Jul 27, 2026
This was referenced Jul 27, 2026
missingbulb
added a commit
that referenced
this pull request
Jul 28, 2026
One rule from the 2026-07-24/26 conversation logs, landed at two rungs of the local ladder: the routing surface (the skill's own description) plus a terse RULES.md bullet. The owner preference maps "LGTM" to the canon `merge-to-main` skill, but `git-github` is not among this repo's declared packs, so that skill is not mounted and `Skill(merge-to-main)` returns *Unknown skill*. Every session in the captured corpus that was told to merge made that call first: - issue-717 log @4346s -> Unknown skill, then find + hand-read the SKILL.md. - issue-734 log @93089s -> Unknown skill, then find + read + grep before finally reaching `Skill(merge-and-ci)` at 93109s (~20s, 3 wasted calls). - issue-753 log @5284s -> Unknown skill, then find + read (~12s, 2 calls). The gap is in the routing surface: gcec's `merge-and-ci` description never claimed the trigger phrases the preference routes on, so the model followed the preference to the skill it names. Fixed by having `merge-and-ci` claim "LGTM"/"merge to main" explicitly and state that `merge-to-main` is not mounted here, plus one RULES.md bullet for the always-injected path. Retention is unset, so nothing was pruned and the `conversation-logs` branch was not touched. The issue-760 log yielded nothing new (its SessionStart-hook miss is already captured by #766). Refs #770 Co-authored-by: Claude <noreply@anthropic.com>
This was referenced Jul 28, 2026
missingbulb
pushed 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 trigger 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 the two pre-existing references the same mistake left behind: - 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 "typed lgtm" 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 the next extract run does 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. Refs #770 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EDqNSQCQBiGXSaE3TmMxDL
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Scheduled
grow_with_claudinite/conversation-extractrun (dispatch #764).Queue: 4 logs on
conversation-logs. Theissue-717log was already mined twice (#732, #746/#747) and re-read this pass with nothing new. The three2026-07-26logs (issue-734,issue-753,issue-760) are fresh — never extracted.Landed: 2 rules, both as bullets in
.claudinite/local/packs/gcec/RULES.md→ Working rules. Prose is the strongest available mechanism for each: neither condition is observable from a working tree, so no local check can carry them, and neither is an activity-scoped procedure that a skill would gate.1. A silent SessionStart-hook miss (from the
issue-760log)That session's context held only
CLAUDE.md, the date, and the owner's email — the Claudinite injection (owner preferences + pack prose) never landed, and no Stop-hook feedback arrived between turns either, so the whole hook config was inert. Consequence: the preference making "LGTM" the merge-to-main command was absent, so at13:25:47Zthe session answeredlgtmwith "say the word if you'd like me to merge it" instead of merging. The owner had to ask "did you load my preferences?" at13:26:22Z; recovery, merge included, ran to13:27:51Z.The rule that would have prevented it was already written down — it just wasn't in context. So the durable fix isn't the rule, it's the detection + one-call recovery: the tell (only
CLAUDE.mdpresent; no Stop-hook feedback) andbash .claudinite/shared/engine/hooks/session-start-command.sh, which is exactly what that session used to recover.Routing caveat, for the reviewer / the promote stage: this bullet lives in prose that the very hook it describes is responsible for injecting, so it is unreadable in precisely the session that needs it. The genuinely strongest placements — hook reliability upstream, or a line in
CLAUDE.md(the one surface confirmed to survive the miss) — are both outside this task's write surface (.claudinite/local/packs/only). Captured here so it is recorded and promotable, flagged rather than silently mis-placed.2.
git checkout <old-branch> -- <paths>destroys the uncommitted edits it was meant to carry (from theissue-734log)At
06:39:31Zthe run tried to relocate finished-but-uncommitted work onto a fresh branch in one chain:The third clause restores the paths' committed content from the old branch — i.e. the pre-edit version — so it wiped the three edits it was added to preserve. Detected at
06:39:39Z, re-applied by06:39:54Z. The larger cost is downstream:check_the_world.mjs+npm run test:offline(308 tests) had gone green at06:38:57Zagainst the now-destroyed tree, so the whole verification pass was invalidated and re-run at06:39:55Zbefore the06:40:12Zcommit.git checkout -b <new> origin/mainalready carries a clean working tree; the "carry the paths across" clause is the trap.Dedupe
Both were greped against the mounted canon (
.claudinite/shared/, stamp61b90ee) and the gcec pack:inject-preferences.shis deliberately fail-soft on a miss, and nothing tells a session how to notice.git-github-advancedcovers adjacent-but-different ground (don't commit environment drift a stop-hook nags about; give scheduled runs unique branch names). Nothing covers the destroy-your-own-edits path-checkout. This one is portable — captured locally per the method, for promote to lift.Considered and rejected (below the bar / already covered)
validate-dispatch.mjshas no CLI entrypoint — two separate executor sessions (issue-734,issue-753) each hand-wrote an ad-hoc Node wrapper to run it. Real recurring cost, but it's a canon-engine gap to fix upstream, not a local rule; capturing a workaround here would outlive the fix.issue-753log (07:14:04Zexecutor done →08:35:27Zowner's "merge to main") and the analogous 63-minute wait already measured in theissue-717log — same finding, already reported in Claudinite growth: conversation extract #747: reclaiming it is an auto-merge delivery-policy call for the owner, not something an agent rule can encode.origin/mainspurioussquash-merge-historyfinding, hit again in theissue-734log — already captured verbatim as a gcec gotcha by Claudinite growth: conversation extract #747, and since pruned by Claudinite growth dedup: prune two gcec rules the canon now covers #754 as canon-covered. Not re-added.issue-717log's re-read — nothing beyond what Claudinite growth: conversation extract #732 and Claudinite growth: conversation extract #746 already landed.Verification
check_the_world.mjs: 0 blocking, 11 advisory (all pre-existing, unchanged by this run). Docs-only change — no code or test surface touched. Nothing under.claudinite/shared/(the read-only canon) was edited; the diff is one file.Refs #764
🤖 Generated with Claude Code
https://claude.ai/code/session_01FaX36U1zAVmLqLNXLdAPWb
Generated by Claude Code