Repository navigation
1.14.0 — the contract release: self-updating standard + identity auto-apply, video --unique/--edge (#112/#113/#114) - #115
Merged
Conversation
…-apply (#114), video --unique/--edge + UX warnings (#112/#113) repo-bootstrap 1.14.0: - Managed CLAUDE.md block rewritten to lead with "The contract." (branch fresh from main -> build+test -> PR -> merge on CI green -> hand back the link; branch deletion = confirmation), with a portka-standard-version stamp substituted from plugin.json at write time. All suite-asserted phrases kept. - New SessionStart hook hooks/portka-session-start.sh (replaces refresh-stop-hook.sh): applies the committed .claude/commit-identity to git config when identity is unset/noreply (deliberate identities untouched), heals a stock stop-hook-git-check.sh (1.13.0 behavior), and flags a stale/stampless standard block with the exact refresh command. - .claude/commit-identity declared via --identity (validated, exit 2 on garbage) > existing file kept > seeded from repo git config (never noreply@*) > NOTE. --portka-standard auto-enables repo-bootstrap in the settings it writes so bootstrapped repos receive future fixes. - #114: the branch-rename recipe no longer fires when main exists (pinned-flow NOTE instead; dry-run resolves the same outcome); --portka-standard --ci recognizes its own validate.yml; greenfield README gains the "> **Version:** 0.1.0" third sync point under its H1; the classifier warning is a calm note; SKILL.md documents the unattended default. video-bug-analyzer 1.14.0: - --unique: deduped distinct poses (uniq_*.png) + frame,t CSV + cadence verdict; crop applies before dedup; 200-frame cap stated (#113). - --edge side:px: coord-free edge-band crop resolved before --stack's needs-a-crop check so --stack --edge works; validated (#112). - 0-frame extractions warn with the likely cause (scene mode gets its own message); contact sheets end with a tile->source mapping footer; portrait + --text drops to --cols 1 (explicit --cols wins); both palette modes state the chroma-subsampling caveat; SKILL.md art-reference steer + table rows. Repo: suite +13 assertions (288 green), CHANGELOG 1.14.0 + backfilled footer links, README header/rows, HANDOFF stamp, IMPROVEMENTS refreshed, marketplace description parity, dogfooded here (block stamp 1.14.0, commit-identity file, repo-bootstrap enabled in settings). evaluator/tab-chord unchanged at 1.13.0. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015M7QWFzt9NnWmSmNQXj1mM
…ing, orphan/any-remote main, --unique reconciliation + error surfacing, footer gating Fixes from the pre-merge adversarial review (6 dimensions, 23 findings triaged): - portka-session-start.sh: resolve the work-tree TOP so identity/staleness fire from subdirectories; claim "applied" only when both git-config writes land (else print the set-by-hand fallback); reject a nameless "<email>" declaration; compare version stamps on the MAJOR.MINOR.PATCH base (-rc can't invert staleness); PORTKA_HOOK_DIRS override confines job 2 so the test suite can never rewrite a real environment's stop-hook. - bootstrap-repo.sh: --identity without --portka-standard exits 2 (was silently ignored, unvalidated); validation moved to argparse; --print-only prints the commit-identity file; main-exists covers any remote's main; an unborn ORPHAN branch beside main is left alone (main-exists checked before the unborn rename); the greenfield recipe leads with a git ls-remote guard; the __PSV__ stamp read can't abort a vendored copy under set -e; README Version insert preserves CRLF and dry-run resolves the no-H1 case; the managed block tells agents to ask the owner when no .claude/commit-identity exists yet. - extract-frames.sh: --unique reconciles CSV/verdict to the files actually written at the 200 cap and surfaces a hard ffmpeg failure (oversized --edge) instead of "static region"; the contact mapping footer only prints on whole-frame sheets (cropped -> region note, scene -> no fixed-fps time formula); 0-frame warnings name each mode's own knobs (--timestamps included); #112/#113 attributions corrected (cols-1 is #112, 0-frame is #113). - tests/run-tests.sh: PORTKA_HOOK_DIRS on every hook invocation; subdir + nameless identity cases; orphan-branch case; live 'git branch -m' negative grep (old pattern was dead); gpgsign guard on the pinned-branch setup commit; --unique cap (noise fixture) + error-path cases; footer-gating + per-mode 0-frame asserts; CRLF/setext README cases. Suite: 294 green. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015M7QWFzt9NnWmSmNQXj1mM
This was referenced Jul 30, 2026
[feedback] video-bug-analyzer: portrait mobile-layout debugging session — what worked, two gaps
#112
Closed
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.
Summary
1.14.0 — the contract release. The recurring bootstrap/authorship pain traced to one gap: 1.13.0 fixed the mechanics (corrected stop-hook, prune step), but repos bootstrapped earlier keep running stale standard blocks and never enabled the plugin that ships fixes — so they never heal. This round makes the user↔Claude↔GitHub relationship explicit, machine-checkable, and self-updating, and triages the three open feedback issues. Closes #112, closes #113, closes #114.
repo-bootstrap → 1.14.0
CLAUDE.mdblock now leads with "The contract.": describe a feature or next step, and it's understood Claude branches fresh frommain→ builds + tests fully → opens the PR → merges on CI green → hands back the short PR link; the user deleting the branch is the confirmation the next round picks up. Steps + situational notes (greenfield / branch-pinned / multi-repo) follow; every suite-asserted phrase from 1.7–1.13 is preserved.portka-standard-versionstamp; the SessionStart hook (nowhooks/portka-session-start.sh, replacingrefresh-stop-hook.sh) flags a stale or stampless block with the exact refresh command..claude/commit-identity("Name <email>") is the identity source:--identitydeclares it (validated, exit 2 on garbage), else an existing file is kept, else it's seeded from the repo's git config (nevernoreply@*). The hook auto-applies it to git config each session when identity is unset or the hostednoreply@anthropic.comdefault — deliberate identities are left alone. Stop-hook healing (1.13.0) remains job 2. (This PR's own first commit landed asChris Portkavia exactly this mechanism.)--portka-standardauto-enables the repo-bootstrap plugin in the settings it writes, so bootstrapped repos actually receive future fixes.mainexists (pinned-flow NOTE instead;--dry-runresolves the same outcome);--portka-standard --cirecognizes thevalidate.ymlit just wrote; a greenfield README gains the> **Version:** 0.1.0third sync point under its H1; the classifier warning is demoted to a calm note; SKILL.md documents the unattended-session default..claude/commit-identitycommitted,repo-bootstrap@portka-toolsenabled in.claude/settings.json.video-bug-analyzer → 1.14.0 (#112/#113)
--unique: deduped distinct poses (uniq_*.png) +frame,tCSV + cadence verdict ("region content changes every ~66 ms ≈ 15.2 fps; 12 unique frames over 3.1s") — the art-reference workhorse, one command instead of triangulating three.--edge side:px: coord-free edge-band crop (--stack --edge right:60= the edge-clipping question); resolves before--stack's crop check; validated.--timestamps,--scene); contact sheets end with a tile→source mapping footer (whole-frame sheets only); portrait +--text→--cols 1(explicit--colswins); both palette modes state the chroma-subsampling caveat, and SKILL.md gains the art-reference steer + new table rows.Adversarial review (6 dimensions; fixes = the second commit): 23 findings triaged, the real ones fixed: hook resolves the repo top (works from subdirs), truthful identity-apply message + nameless-declaration reject + rc-safe stamp compare +
PORTKA_HOOK_DIRStest isolation (the suite had healed this sandbox's real stop-hook through the literal/rootpath); bootstrap--identityrequires the standard (was silently ignored), any-remote main detection, orphan-branch-beside-main left alone,ls-remoteguard in the rename recipe, vendored-copy stamp read can't abort, CRLF-preserving README insert + dry-run/real parity;--uniqueCSV reconciled to written files at the cap + hard ffmpeg failures surfaced; mapping footer gated off cropped/scene sheets; per-mode 0-frame warnings; #112/#113 attributions corrected.Tests/docs: ~20 new suite assertions across all of the above — 294 passing, 0 failed. CHANGELOG 1.14.0 (incl. a Hardened section) + backfilled footer links (1.5.0–1.13.0 were missing), README header/rows, HANDOFF state stamp, IMPROVEMENTS updated (shipped #98 idea removed; #113
--grid/--exactdeferred). evaluator + tab-chord unchanged at 1.13.0.Release checklist
versionin.claude-plugin/plugin.jsonfor each plugin whose files changed(CI's
version-bump-guardenforces this).## [x.y.z]entry toCHANGELOG.mdfor the new version (CI checks every pluginversion has a matching heading).
bash tests/run-tests.shlocally → 0 failures (or relied on CI).🤖 Generated with Claude Code
https://claude.ai/code/session_015M7QWFzt9NnWmSmNQXj1mM