Claudinite growth: extract lessons - #123
Merged
Merged
Conversation
Three lessons from the 2026-07-26..08-02 window, into the laughcounter local pack as prose. #74/#75: diagnosing the installTap crash stalled on "which binary is installed?" — the menu said only "LaughCounter", and several distinct builds all reported 0.2.1, because the release workflow keys its Release on v<version> from Info.plist, so a merge that leaves CFBundleShortVersionString alone refreshes the same Release behind the latest/download link. Durable part: show version and build from Bundle.main (not a source constant that could disagree with the DMG), and bump per distinguishable build. #56: the scheduler ran green nightly while silently skipping baselining ("no vendored mount (no stamp)") because the vendored loadConfig dropped the `claudinite` key it had just validated. Durable part: a job whose success and whose no-op look identical from outside is telling you nothing — read the skip line; and a bug inside the mechanism that updates itself has to be fixed out of band. #34: claudinite-isolation fired on CLAUDE.md's mount path, which carried nothing a reader could act on. Durable part: before adding an `accept`, delete the flagged text and see whether anything actionable went with it — an accept is for a crossing that must exist. Nothing new from the mac window (#59, #73, #77, #78, #87, #100, #101, #108): dev/procedures/mac-audio-lifecycle.md already records the engine-per-start rule, the inputFormat-vs-outputFormat trap, the aggregate churn, the three-state health reporting, the witnessed-arrival settle rule and the observation-gap rule in full. #55, #69, #84 and #99 are already carried by this pack's existing prose and the on-device-privacy checks. #32's "prove the check is live" is the see-it-fail discipline the canon owns. Conversation-logs half: the 2026-08-01 logs are the #108 session (fully covered above) and unattended task runs; no new friction lesson. No retention_days configured, so no prune. Refs #113. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01G52dxZvLCxyZJJnvLrYcQs
This was referenced Aug 2, 2026
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.
Refs #113.
Three lessons from the window (commits 9130883…03b9bd0; PRs #108, #101, #100, #99, #84, #87, #78, #69, #77, #75, #73, #59, #55, #56, #34, #32; issues #23, #25), all into
.claudinite/local/packs/laughcounter/as prose. Nothing under.claudinite/shared/was touched.1 — Ship a version the running app can state, and bump it per distinguishable build (#74/#75). Diagnosing the
installTapcrash (#61) stalled on "which binary is installed?" and was answered by grepping a crash report's symbol names. The menu said only "LaughCounter", and several genuinely different builds all reported0.2.1— the release workflow keys its Release onv<version>fromInfo.plist, so a merge that leavesCFBundleShortVersionStringalone refreshes the same Release and the DMG behindlatest/downloadchanges identity without changing its name. Render version and build fromBundle.main, never a source constant that could disagree with the DMG it shipped in.2 — A scheduled job that skips its work still exits 0 (#56). The scheduler ran green every night while silently skipping baselining, logging "no vendored mount (no stamp)" about a repo whose config carried one, because the vendored
loadConfigdropped theclaudinitekey it had just validated. A job whose success and whose no-op look identical from outside is telling you nothing — read the skip line. And a bug inside the mechanism that updates itself makes the ordinary route unreachable, so it has to be pushed in out of band.3 — Delete the flagged coupling before reaching for an
accept(#34).claudinite-isolationfired onCLAUDE.md's vendored-mount path, which carried nothing a reader could act on; rewording kept both facts and lost only the coupling. Anacceptis for a crossing that must exist.Deduped out. The whole mac window (#59, #73, #77, #78, #87, #100, #101, #108) is already carried in full by
dev/procedures/mac-audio-lifecycle.md; #55, #69, #84 and #99 by this pack's existing prose and theon-device-privacychecks; #32's "prove the check is live" by the canon's see-it-fail discipline. #23/#25 yielded no repo-level lesson. Theconversation-logs2026-08-01 logs are the #108 session (covered above) plus unattended task runs — no new friction lesson. Noretention_daysconfigured, so no prune was done and no log was deleted.Promotion ladder. None of the three is deterministically checkable (a version constant has no reliable static shape; the other two are judgments about a log line and about what text a reader can act on), so all three land as prose rather than as a check that couldn't ship confident.
Verification.
check_the_world.mjsexits 0 (it caught the 20-wordruleRoutingGuidance.belongscap on the way, which was fixed);node --test .claudinite/local/packs/on-device-privacy/pack.test.mjspasses 14/14. The repo has no Python suite any more.🤖 Generated with Claude Code
https://claude.ai/code/session_01G52dxZvLCxyZJJnvLrYcQs
Generated by Claude Code