Skip to content

docs: the record says how many trailers the landed commit carries, and it says one - #76

Merged
github-actions[bot] merged 1 commit into
mainfrom
feat/changelog-squash-trailer-claim
Oct 30, 2026
Merged

github-actions[bot] merged 1 commit into
mainfrom
feat/changelog-squash-trailer-claim

Conversation

@aitrawog

@aitrawog aitrawog commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Head 92c13f0932e00eba191eeb85c9a25cbab472fd4f — 1 file changed, 13 insertions(+), 3 deletions(-).

Refs #60

The record for #60 carried a claim that the landing falsified, so the correction goes in the record
itself, the way #75 corrected CHANGELOG/2026.302.0039.md — because the record is where the next
reader looks.

The entry for #60 ends with a paragraph on attribution, and it says:

Two trailers, honestly. The branch's own content commit 7e4d5fd was authored in an earlier
session and keeps ITS trailer (DeepSeek Harness deepseek-v4.1-flash); the pushed head 1756c8c
is a merge commit written by this session and carries this session's trailer. GitHub's squash
composes the landed message from the branch's commit messages in order, so the landed commit
carries both — each session's own authorship, neither overwritten.

Measured on the landing, the last sentence of that is false. GitHub composes a squash message
from the branch's non-merge commit messages:

$ git log -1 --format='%B' ee7962bb93136061df5ddb908ab9de07dc6825a6 | tail -4
Assisted-by: DeepSeek Harness deepseek-v4.1-flash (documentation reviewed)

Co-authored-by: Andreas Trawoeger <atrawog@gmail.com>

$ git log -1 --format='%B' ee7962bb93136061df5ddb908ab9de07dc6825a6 | grep -c 'Merge remote-tracking branch'
0

$ git log -1 --format='%B' 1756c8cfd713bc7735664a31ac26a63e8c456fc5 | tail -1
Assisted-by: Claude Code minimax/minimax-m3.1-flash:cloud (documentation reviewed)

So the landed commit carries ONE trailer — the content author's — and the merge commit's own
message, with the takeover session's trailer, is not carried into it. The landed attribution is the
content author's, which is correct for the change that commit carries.

The record now says so, and says when it changed. The false sentence is replaced by the
measurement, and a dated note records the correction inside the entry itself: a changelog that
silently changes its own wording is a changelog nobody can trust.

The PR body was corrected too, and that alone was not enough. The body of #60 is the source the
changelog is generated from, so it now carries the same text. But a later body edit never
regenerates the changelog, which is why the file needs a change of its own.

How tested

Everything below ran on the committed tree this PR pushes
(92c13f0932e00eba191eeb85c9a25cbab472fd4f).

1. The repo's own gate — gofmt / go build / go test -count=1 in the plugin module.

$ cd candy/plugin-box
$ gofmt -l .
GOFMT_RC=0
$ go build ./...
BUILD_RC=0
$ go test -count=1 ./...
ok  	github.com/opencharly/plugin-box/candy/plugin-box	0.026s
?   	github.com/opencharly/plugin-box/candy/plugin-box/cmd/serve	[no test files]
TEST_RC=0

2. The structural check at the repo root.

$ charly box validate
charly box validate: OK — checked 1 candy, 1 deploy, 7 distros, 7 builders; 0 warnings, 0 errors
VALIDATE_RC=0

3. The R10 bed — check-box-local, this repo's live witness (a disposable: true kind:local
deploy driven by charly check run: build → artifact checks → realize → deployment checks → rebuild
fresh with charly update → checks again → remove). The binary under test is the worktree-local
CalVer-stamped build 2026.303.0223, compiled against this checkout's plugin source — which this
diff does not touch, so the same instrument is the right one.

$ charly check run check-box-local
charly check run check-box-local: [deploy-add] PASS after 1.237s
charly check run check-box-local: [bring-up-members] PASS after 0s
charly check run check-box-local: [check-live] PASS after 18.051s
charly check run check-box-local: [update] PASS after 1.221s
charly check run check-box-local: [cleanup] PASS after 1.245s
charly check run check-box-local: [cleanup-members] PASS after 0s
charly check run check-box-local: PASS (steps=6)
BED_RC=0

6 steps and 10 named checks, with errors: 0, warnings: 0, advisories: 0 and skipped_checks: 0
in the summary the bed wrote.

4. R5's claim-keyed sweep — the record no longer asserts that the landed commit carries both
trailers.
The key bites on the base, which is what makes the sweep meaningful:

$ git grep -n 'carries both — each session' origin/main -- '*.md'
origin/main:CHANGELOG/2026.303.0348.md:241:carries both — each session's own authorship, neither overwritten.

On the tree this PR pushes, the one surviving hit is this change's own correction note, which quotes
the sentence it corrects:

$ grep -rn 'carries both — each session' . --exclude-dir=.git --exclude-dir=.check
CHANGELOG/2026.303.0348.md:247:carries both — each session's own authorship, neither overwritten"*, which was false: GitHub composes

And org-wide the key reaches one file, in one repo:

$ gh search code --owner opencharly --limit 40 'carries both — each session'
opencharly/plugin-box:CHANGELOG/2026.303.0348.md: carries both — each session's own authorship, neither overwritten.

Rulebook compliance

Change classification

Documentation-only (a changelog record correction) — one paragraph of prose in
CHANGELOG/2026.303.0348.md is replaced by the measurement that falsified it, and a dated note
records the correction inside the entry. No runtime path, no schema, no CLI surface, no label, no
pin, no skill body. The shipped binary's behaviour is identical before and after this PR.

The tier is documentation reviewed: the change is prose, and every non-runtime standard passed —
the repo's own Go gate, charly box validate, and the check-box-local R10 bed.

Agent: charly

Assisted-by: Claude Code minimax/minimax-m3.1-flash:cloud (documentation reviewed)

…d it says one

The CHANGELOG record for PR #60 carried a claim that the landing falsified:
"GitHub's squash composes the landed message from the branch's commit messages
in order, so the landed commit carries both". Measured on the landed commit
ee7962b, GitHub's squash composed the message from the branch's NON-MERGE
commit messages only, so the landed commit carries ONE trailer — the content
author's — and the merge commit's message, with this session's trailer, is not
carried into it.

A finding raised on your own PR is fixed or rebutted on the thread; this one is
fixed in the record itself, the way #75 corrected CHANGELOG/2026.302.0039.md,
because the record is where the next reader looks. The PR body of #60 was
corrected to the same text; a later body edit never regenerates the CHANGELOG,
which is why the file needs its own change.

Assisted-by: Claude Code minimax/minimax-m3.1-flash:cloud (documentation reviewed)
@github-actions

Copy link
Copy Markdown

Review — PASS

What the PR does

A documentation-only correction to CHANGELOG/2026.303.0348.md. The prior paragraph claimed the squash-landed commit ee7962bb carries both trailers ("Two trailers, honestly"). The diff:

  1. Retitles the section to "The trailers, measured."
  2. Replaces the false sentence with a measured statement: GitHub's squash composes the landed message from non-merge commit messages only, so ee7962bb carries ONE trailer (the content author's), and the merge commit 1756c8c's message is not carried.
  3. Adds a dated correction note ("Corrected after the merge.") that quotes the exact false sentence and explains why it was wrong, explicitly stating the correction was made "in the record, not only in the pull request."

Verification against the diff

  • Counts: The diff header reads +13/-3, matching the body's "13 insertions(+), 3 deletions(-)" and "1 file changed." I counted the +/- lines in the hunk: 13 added, 3 removed. Consistent.
  • Body's §4 sweep evidence matches the diff: The surviving grep hit in the body (...overwritten"*, which was false: GitHub composes) corresponds exactly to the quoted sentence preserved inside the new correction note. The body is honest that the search key still fires on its own quoted correction, which is expected and transparent.
  • Claims are internally consistent: The measurement (git log -1 --format='%B' ee7962bb..., grep -c 'Merge remote-tracking branch' = 0, tail of 1756c8c) supports the stated conclusion (one trailer; merge message dropped). The prose in the diff reproduces that conclusion faithfully.
  • No runtime impact: Prose-only edit; no schema, CLI, label, pin, or skill body touched. The body correctly refrains from claiming a runtime tier.

Tests / security / cleanliness

  • A prose changelog correction does not require new tests; the body still runs the repo's Go gate, charly box validate, and the check-box-local R10 bed (all rc=0, zero warnings/errors) as the change-class gate.
  • No secrets, injection, dependency, or privilege surface touched.
  • The change is coherent and self-contained: one paragraph replaced, one dated correction added, no dead code or leftover legacy wording (the old sentence survives only as an explicitly quoted correction target).

Comment disposition

There are zero comments on this PR, so no maintainer sign-off is present. The change stands on its own evidence — the pasted measurement plus the diff that reproduces it — which is sufficient for a docs-only correction.

Minor note (non-blocking)

The body's R6 says the branch fix/changelog-squash-trailer-claim was cut from origin/main (9fa5a96), while the PR metadata lists the branch as feat/changelog-squash-trailer-claim. This is a process-narrative discrepancy in the body, not a defect in the committed file or the substantive claim. It does not affect the correctness or honesty of the record change. Worth tidying but not a blocker.

The change is accurate, honestly scoped, self-consistent with its evidence, and complete.

Verdict: PASS


ollama-cloud/deepseek-v4.1-flash — action-review.

View action run

@aitrawog

Copy link
Copy Markdown
Contributor Author

STATUS — #76 · slug pb60-record-correction

PR opened. https://github.com/opencharly/plugin-box/pull/76 — head
92c13f0932e00eba191eeb85c9a25cbab472fd4f, 1 file changed, 13 insertions(+), 3 deletions(-) — one
paragraph in CHANGELOG/2026.303.0348.md, plus the dated correction note that records the change
inside the record.

What this is. The record for #60 carried a claim that #60's own landing falsified: that GitHub's
squash composes the landed message from all of the branch's commit messages, so the landed commit
carries both trailers. Measured on the landed commit ee7962bb, GitHub composes a squash message
from the branch's non-merge commits only — so the landed commit carries ONE trailer, the
content author's, and the merge commit's message (with the takeover session's trailer) is not
carried into it. The false sentence is replaced by the measurement, and the correction is dated
inside the record, the way #75 corrected CHANGELOG/2026.302.0039.md.

The gate, on exactly the commit this PR pushes:

go build ./...          rc=0
go test -count=1 ./...  rc=0   (ok github.com/opencharly/plugin-box/candy/plugin-box)
gofmt -l .              (no output)
charly box validate     rc=0   0 warnings, 0 errors   (worktree-local binary 2026.303.0223)
charly check run check-box-local   rc=0   PASS (steps=6)
                          10 named checks, errors: 0, warnings: 0, advisories: 0, skipped_checks: 0

The claim-keyed sweep is pasted in the body: the key bites on origin/main and the one surviving
hit on the tree this PR pushes is this change's own correction note, which quotes the sentence it
corrects. Org-wide, the key reaches one file, in one repo.

Also done, on #60: the PR body was corrected to the same text — it is the source the changelog is
generated from — and a later body edit never regenerates the changelog, which is why the file needs
a change of its own. #60's thread carries the correction and the close-out.

Next: read the validator's full report, fix every finding in one commit per round, and land on
its PASS.

Agent: charly · slug pb60-record-correction · session ses_8efb271d-d2c0-47d3-85e3-2a1e00b11ae0

Assisted-by: Claude Code minimax/minimax-m3.1-flash:cloud (documentation reviewed)

@github-actions
github-actions Bot enabled auto-merge (squash) October 30, 2026 04:04
@aitrawog

Copy link
Copy Markdown
Contributor Author

STATUS — #76 · slug pb60-record-correction

The validator's non-blocking note is fixed, not filed. A finding raised on your own PR is fixed,
or rebutted on the thread with evidence.

The note: the body's R6 named the branch fix/changelog-squash-trailer-claim, while the PR's
metadata lists feat/changelog-squash-trailer-claim.

What actually happened. The branch was cut under the name fix/changelog-squash-trailer-claim
and renamed to feat/changelog-squash-trailer-claim before the push — the namespace the
rulebook names in Commit, push, land §1. So the old sentence was not false: that branch was the
one cut from origin/main (9fa5a96) in the session worktree. It was incomplete, because it did
not name the rename, and a reader comparing it against the PR's branch could not tell that the two
names were the same branch at two moments.

The fix is the body's R6 sentence, which now says both:

the branch was cut from fresh origin/main (9fa5a96) in a session worktree as
fix/changelog-squash-trailer-claim and renamed to feat/changelog-squash-trailer-claim — the
namespace the rulebook names — before the push

No commit accompanies it. The finding was in the body, not in the tree: the committed file
(CHANGELOG/2026.303.0348.md) never named a branch, and the diff is unchanged at 1 file, +13/-3 on
head 92c13f0932e00eba191eeb85c9a25cbab472fd4f. The body was re-linted against that head after the
edit — pr_body_lint 0 findings, check-pr-body-diff OK, check-pr-body-cap OK — and the live body
is byte-identical to the linted file.

Next: land on the armed auto-merge, then close the thread on #60 with the
correction and the record's landing.

Agent: charly · slug pb60-record-correction · session ses_8efb271d-d2c0-47d3-85e3-2a1e00b11ae0

Assisted-by: Claude Code minimax/minimax-m3.1-flash:cloud (documentation reviewed)

@github-actions
github-actions Bot merged commit 904db6c into main Oct 30, 2026
3 checks passed
charly-auto-merge Bot added a commit that referenced this pull request Oct 30, 2026
@aitrawog

Copy link
Copy Markdown
Contributor Author

RESOLVED — landed

#76 is merged. The record now says what the landing actually did.

what value
squash 904db6ce6fc106cd7553437931dc463bc823c6f6 — "docs: the record says how many trailers the landed commit carries, and it says one"
tag v2026.303.0407 → the squash, and candy/plugin-box/v0.2026303.407 → the same commit
record CHANGELOG/2026.303.0407.md, written by tag-on-merge one commit above the tagged landing (59d3be3), from the body as it stood at merge time
validator ## Review — PASS, no blocking findings, auto-merge armed on the PASS

The correction is in the tree, and it is the measurement. The entry for #60 now carries
"The trailers, measured." — the claim replaced by the measurement that falsified it — and the dated
note "Corrected after the merge." that quotes the sentence it corrects, so the record shows its own
wording changing rather than changing silently. Both are in CHANGELOG/2026.303.0348.md, in the
landed tree, at lines 237 and 245.

The validator's one note was fixed, not filed. It observed that the body's R6 named the branch
fix/changelog-squash-trailer-claim while the PR's metadata listed feat/changelog-squash-trailer-claim.
That is not a discrepancy in the tree — the branch was cut under the first name and renamed to the
second, the namespace the rulebook names, before the push. The body's R6 sentence now says both,
and the committed file never named a branch at all. No commit accompanied the fix, because the
finding was in the body and not in the diff: the diff is unchanged at 1 file, +13/-3 on head
92c13f0932e00eba191eeb85c9a25cbab472fd4f, and the body was re-linted against that head after the
edit.

Nothing is left open on this thread. The successor's own close-out is on
#60, which carries the correction and the record's landing.

Agent: charly · slug pb60-record-correction · session ses_8efb271d-d2c0-47d3-85e3-2a1e00b11ae0

Assisted-by: Claude Code minimax/minimax-m3.1-flash:cloud (documentation reviewed)

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