Skip to content

os: drop the duplicated notice in base-modes-keep (main fails the copyright gate) - #1560

Merged
bong-water-water-bong merged 1 commit into
mainfrom
1bit/fix-dup-notice-base-modes-keep
Nov 8, 2026
Merged

bong-water-water-bong merged 1 commit into
mainfrom
1bit/fix-dup-notice-base-modes-keep

Conversation

@bong-water-water-bong

Copy link
Copy Markdown
Collaborator

Why

Main fails tools/copyright.py --check (run 42530891923):

copyright notice duplicated inside the header window (delete the second copy): os/v3/puppy/base-modes-keep

#1544 added os/v3/puppy/base-modes-keep with the copyright + SPDX lines twice. #1551/#1554, merged in the same batch, made a duplicated notice a gate failure. Each PR was green on its own; together they fail on main.

Change

Removes the second copy (2 lines). python3 tools/copyright.py --check passes over the whole tree.

🤖 Generated with Claude Code

…ate passes on main

#1544 added os/v3/puppy/base-modes-keep with the copyright + SPDX lines twice, and #1551/#1554
(merged in the same batch) made a duplicated notice inside the header window a gate failure.
Each PR was green alone; together main failed tools/copyright.py --check (run 42530891923).
This removes the second copy; the check passes over the whole tree.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@bong-water-water-bong bong-water-water-bong left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

VERDICT: READY at 976f5c19c7bbf57087ade6dd2c2d9d4b0e6b5115.

Verified end to end, because a fix-forward on a red main must not itself be a guess.

Main's own log names this exact file and this exact rule:

main @ 22:34:52  copyright notice duplicated inside the header window (delete the second copy): os/v3/puppy/base-modes-keep

and the file at main carries the pair twice, both inside the 20-line window — lines 1-2 and 15-16:

1   # Copyright 2026 bong-water-water-bong      15  # Copyright 2026 bong-water-water-bong
2   # SPDX-License-Identifier: Apache-2.0       16  # SPDX-License-Identifier: Apache-2.0

which is exactly what the gate #1551 added this hour flags: the first occurrence is the file's header, the second is a pasted copy, and -2 lines
removes the second (15-16), leaving the header at 1-2 intact. This is the #1544 new-file × #1551 new-gate collision, and the remedy is the smallest
one it could have: no additions, no other file, no reformatting — 1 file changed, 2 deletions(-).

At the PR head:

git diff origin/main...976f5c19 --stat    os/v3/puppy/base-modes-keep | 2 --
grep -c 'Copyright 2026' in the file      1
python3 tools/copyright.py --check        rc 0     <- the gate that turned main red

So the row that is red on main is green at this head, and nothing else in the tree moved to get there. Merge this and main is clean again.

@bong-water-water-bong

Copy link
Copy Markdown
Collaborator Author

VERDICT at 976f5c1: READY — and it is the whole of main's red, verified on a clean checkout of origin/main rather than reported.

# clean worktree of origin/main (180c58d4)
$ python3 tools/copyright.py --check
rc=1
copyright notice duplicated inside the header window (delete the second copy): os/v3/puppy/base-modes-keep     <- one failure, nothing else

# the same command on this PR's tree (976f5c1)
$ python3 tools/copyright.py --check
rc=0

So merging it turns the gate green and nothing else is needed for it. The diff is the minimal right one: the second Copyright/SPDX pair goes, the first block and the whole Apache text stay, and grep -c 'Copyright\|SPDX' in the header is now 2 rather than 4.

One check beyond the gate, because this file is data the build reads (scripts/base-modes.sh --keep …): with the duplicate removed the keep-list still parses and still reports — on a two-file fixture it printed base-modes: 2 group/other-writable path(s) outside base-modes-keep. A comment-only edit cannot change that, but a keep-list is exactly where a "harmless" edit stops being harmless, so it is worth one command rather than an assumption.

Where the duplicate came from, since it is the same shape as the defect the file is about: base-modes-keep (#1544) was written with the licence block pasted twice — the case #1551's gate now reds on — so this is the gate doing the job it was taught two hours earlier. The two PRs are the same class at different layers: #1551 taught the gate to count, #1560 is the first thing it caught.

On the untracked-.hrx123/logs warning: worth one line wherever that directory is owned. A gate that reds on no comment style known … .hrx123/logs/probe-*.jsonl in a developer clone is reporting a fact about the working tree, not about main — and the fix is EXEMPT/.gitignore for that path, not a comment style for a run log. I would not fold it into this PR (this one is the one-failure fix); it wants its own line, because a red that is not main's red is how a developer learns to skip the gate.

@bong-water-water-bong

Copy link
Copy Markdown
Collaborator Author

Duplicate alert: #1562 is the same fix, and the two trees produce an identical file.

$ git diff <#1560 tree> <#1562 tree> -- os/v3/puppy/base-modes-keep
(empty)
$ python3 tools/copyright.py --check     # in each worktree
#1560 tree: rc=0      #1562 tree: rc=0

So both turn main green, and only one should land. I would take this one (976f5c1): it already carries a READY verdict at that head from two lanes (mine on the artifact — clean origin/main gives exactly this one failure, this tree gives rc=0, and base-modes.sh --keep still parses the file — and pi-os3's), and its diff is the minimal one (the second pair out, first block and full Apache text kept, header count 4 → 2).

#1562 should close as a duplicate, not because it is worse but because merging both is a no-op at best and a conflicting second attempt at worst — and an owner merging a red-fixing pair in a hurry is exactly when the second one gets taken on its own READY. That is the same coordination shape as #1550/#1553 tonight: two honest PRs, one change, and the merge order is the whole of the problem.

For the record, the diagnosis in #1562's body is the same as mine and correct — one file, so every PR branched from main inherits a failing copyright job — which is the reason this wanted one PR and a stated owner rather than two.

@bong-water-water-bong
bong-water-water-bong merged commit 1571366 into main Nov 8, 2026
8 of 9 checks passed
@bong-water-water-bong
bong-water-water-bong deleted the 1bit/fix-dup-notice-base-modes-keep branch November 8, 2026 22:47
bong-water-water-bong added a commit that referenced this pull request Nov 10, 2026
…name it

CI's copyright gate failed the parent commit: `.txt` has no comment style of its own
(and a blanket `*.txt` would demand a notice in files that are data, not code), so the
new tools/ci/unreferenced_tests.txt was "no comment style known". Listed by name in
LINE_STYLES beside add_test_gaps.txt, which is the same shape one direction over -
the direction-B baseline - and is named for exactly this reason.

Ran the repo's own `python3 tools/copyright.py --fix` rather than hand-writing the
notice, then removed the SPDX pair my draft had left after it: the fix inserts the
canonical block above whatever was there, so the file briefly carried the notice twice
- the same duplicate that made main red in #1560.

  copyright --check        rc 0
  ci_targets --check       rc 0
  ci_targets --self-test   rc 0
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