Skip to content

chore: update handoff — friction-log inbox graduated to #70-#77; reports/ contract settled - #81

Closed
topij wants to merge 3 commits into
mainfrom
chore/update-handoff-2026-07-27
Closed

chore: update handoff — friction-log inbox graduated to #70-#77; reports/ contract settled#81
topij wants to merge 3 commits into
mainfrom
chore/update-handoff-2026-07-27

Conversation

@topij

@topij topij commented Jul 27, 2026

Copy link
Copy Markdown
Owner

End-of-session wrap-up for 2026-07-27 (second session of the day).

Handoff

New session block: the friction-log sweep in #78 and the reports/ contract settled in #80,
with what was decided about waiving a rate-limited reviewer and about using closing
keywords deliberately rather than avoiding them.

Archive sweep ran at --keep 4 — 403 → 319 lines, one block (2026-07-26 #26, overnight) moved to kit-handoff-history.md. The default --keep 6 no-opped on 5
blocks first: a fourth occurrence of #74, recorded on that issue
along with the --keep/line-count table showing the value was computable rather than
guessable.

Two relative cross-references in the new block were written as named pointers
("the 2026-07-27 #59 + #61.1 session") rather than "the block below", specifically so
the sweep could not orphan them — that is #73, filed earlier today, applied to its own
author's text.

Friction log — four entries

severity entry
H make test runs the full suite in 22s and nothing in the repo points at it
M the Makefile comment claims a pre-push test gate that does not exist
M the triage skill defaults to a draft PR, which CodeRabbit skips outright
two more instances of a rate-limited CodeRabbit reporting its check as pass

The first is the one that cost something this session. uv run pytest and
python3 -m pytest both fail with messages that read as "pytest is unavailable here";
make test supplies its own dependencies and passes 372 tests. Not knowing that put a
false "tests were not run locally" claim into #80's merged body, since
corrected.
That is the failure mode #54 exists for, so the proposed fix is a root CLAUDE.md
naming make test as the verification command.

Verification

  • make test372 passed in 21.50s
  • uv run scripts/check_doc_budget.py → both docs green (319/400, 91/150)
  • post-sweep grep for (above|below)-style pointers → only the deliberate note about
    them; nothing orphaned

Review note

CodeRabbit has been rate-limited on this plan all session and reviewed neither #78 nor
#80. If it is still limited when this PR polls, the same operator decision applies — and
this diff is docs-only (three markdown files, no code, no engine changes).

Topi Jarvinen added 3 commits July 27, 2026 07:30
Session block for 2026-07-27, six friction entries, and an archive sweep
(--keep 4; the default 6 was a no-op at 421/400 lines, which is the logged
friction reproducing a third time).

The friction worth reading first:

  · a mutation harness that restores outside `finally` leaves the tree mutated
    — #50's hazard by a route #50 does not describe, and the .pyc framing is
    what made a hash-verified restore look sufficient (H);
  · a negated closing keyword got re-armed while documenting the last one, so
    the rule needs a mechanical grep in pr-watch/wrap-up rather than a habit (M);
  · the panel's isolated worktree pointed at the wrong ref for the sixth
    consecutive launch across two sessions — contract item 7 should invert its
    default from "verify" to "assume it is wrong and clone the target" (H);
  · a review bot with an incremental model keeps a stale review across a
    force-push or rewrite, and nothing warns at push time when re-requesting is
    still cheap (M).

Claude-Session: https://claude.ai/code/session_01PWoYsKTB9fBp4knZbXqbHc
The 2026-07-27 archive run moved the Phase 3b block into the history file,
which made a sentence already IN that file — "see the Phase 3b block, still
live in kit-handoff.md" — false in a second way: the target is now in the same
document as the reference.

The friction log already carried the sweep's cross-reference defect from the
previous run. That entry proposes warning on (above|below) references inside
MOVED blocks; this instance is the mirror case, where the moved block was the
reference's target rather than its location, so the check has to cover both.

Claude-Session: https://claude.ai/code/session_01PWoYsKTB9fBp4knZbXqbHc
The wrap-up block asserted things the artifacts contradict. Corrected:

  · `#36` MISCITED. It is pre-push's coverage gap, not init.sh's, and the
    handoff had promoted that error into its ▶ Next line. No issue tracks
    init.sh coverage at all — filing one is now the first step, and #67's body
    (where I first made the error) is corrected too.
  · "GitHub matches a closing keyword regardless of context" is FALSE, and
    measuring it changed the proposed fix. closingIssuesReferences is empty for
    a PR body carrying a backticked `Closes #61`; #63's un-backticked
    "Does NOT close #60" did fire. Inline code spans are excluded, so the
    hazard is negated PROSE — and the grep this log proposed would have fired
    on every legitimate backticked reference.
  · "372 passing tests missed the four regressions" — the 372-test suite did
    not exist yet. It contains 15 tests written in RESPONSE to those findings.
    The suite that missed them had 355, and the mutation run credited alongside
    it ran against a tree the regressions had already been reverted from.
  · "four regressions" was asserted and never enumerated; now named.
  · "sixth consecutive launch" — 4 last session + 5 this session is 9, and the
    entry contradicting it sat in the same file.
  · contract item 5 does not warn about stale .pyc (that is #50 alone); it
    warns about false kills. Both frame the hazard as a wrong RESULT, and
    neither says the repo may be left broken — which is the actual gap.
  · a round-2 finding was credited to round 1, in the entry whose whole point
    is per-round disjointness. It could not have been round 1: the defect was a
    false sentence in the commit message describing round 1's outcome.
  · "byte-identical to main" said of a function whose docstring grew 25 lines;
    the BODY is byte-identical. "#61 reopened" — it was never closed. And the
    "9-form parsing table" is a 5-row table of 9 forms.

Also fixed: a cross-reference in kit-handoff-history.md that this session's own
archive sweep invalidated, and which the previous sweep had written.

Claude-Session: https://claude.ai/code/session_01PWoYsKTB9fBp4knZbXqbHc
@coderabbitai

coderabbitai Bot commented Jul 27, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@topij, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 29 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: bf9d109c-e636-4dd9-94d7-ef2defc54b05

📥 Commits

Reviewing files that changed from the base of the PR and between 4e9cad9 and f3d4e6e.

📒 Files selected for processing (3)
  • docs/kit-friction-log.md
  • docs/kit-handoff-history.md
  • docs/kit-handoff.md
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/update-handoff-2026-07-27

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@topij

topij commented Jul 27, 2026

Copy link
Copy Markdown
Owner Author

Closing immediately — this PR is destructive and was opened by accident.

What happened

The branch name chore/update-handoff-2026-07-27 already existed on the remote, pushed
by an earlier session on the same date. Today's wrap-up created a local branch of the
identical name off the current main. The push was rejected as a non-fast-forward, but
gh pr create then opened this PR against the pre-existing remote branch rather than
failing — so this PR contains an earlier session's commits, not this session's wrap-up.

Because that stale branch was cut from 30c287c, which predates today's merges, the diff
here would revert both PRs that merged today:

Net: 160 insertions, 249 deletions against main, almost all of it undoing merged work.

The branch is NOT being deleted

f3d4e6e ("docs: fix eight claim errors a review lens found in this handoff") and
30ab573 ("docs: fix a cross-reference this sweep broke, and log the reproduction") are
not ancestors of main — that earlier session's work never merged. It may have been
superseded by 42873d8, or it may be wanted. That is an operator call, so the branch is
left intact for review rather than cleaned up here.

The real wrap-up for this session is being opened on a non-colliding branch.

@topij topij closed this Jul 27, 2026
topij added a commit that referenced this pull request Jul 27, 2026
Session shipped #78 (13 un-graduated entries -> 8 issues, friction log
190 -> 50 lines) and #80 (gitignore reports/, settling the contradiction
filed as #79).

Five friction entries, two at H. First: make test runs the full 372-test
suite in 22s and nothing in the repo points at it, which is how a false
"tests were not run locally" claim reached a merged PR body. Second: the
wrap-up branch pattern collides on a same-date session, and gh pr create
then opened #81 against the stale remote branch -- a diff that would have
reverted both of the day's merges. #81 closed unmerged; the stale branch
left intact because its commits are not ancestors of main.

Also the Makefile comment describing a pre-push test gate that does not
exist, the triage skill defaulting to a draft PR that CodeRabbit skips,
and two more instances of a rate-limited CodeRabbit reporting pass.

Archive sweep ran at --keep 4 (403 -> 319 lines, one block moved). The
default --keep 6 no-opped on 5 blocks -- a fourth occurrence of #74.

Independent review waived under the operator's existing docs-only scope;
no review receipt recorded.
@topij
topij deleted the chore/update-handoff-2026-07-27 branch July 27, 2026 08:09
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.

1 participant