Skip to content

chore: untrack the b2 output committed with the hash policies - #117

Merged
jll63 merged 1 commit into
boostorg:developfrom
jll63:chore/remove-b2-artifacts
Sep 18, 2026
Merged

jll63 merged 1 commit into
boostorg:developfrom
jll63:chore/remove-b2-artifacts

Conversation

@jll63

@jll63 jll63 commented Sep 17, 2026

Copy link
Copy Markdown
Collaborator

(Written by Claude Code, on behalf of @jll63.)

#103 brought 415 files of b2 output into the tree: 106 .o, 8 .so, the test
executables, their .run/.output/.test stamps, and bin/config.log and
bin/project-cache.jam at the root. 613 MiB expanded, 94 MiB in the pack, on a
repository that was about 3 MB.

bin/ has been ignored since #108, which landed four days before #103 was
merged and said exactly what would happen without it:

Only build/ was ignored, which covers CMake but not this, leaving the object
trees permanently untracked-but-addable - git add test would commit tens of
thousands of lines of objects.

feature/hash-policies was cut before that commit, so the rule was not in its
.gitignore, and a rule added later has no effect on a path that is already
tracked. The merge carried the files in.

Beyond the size, two of them (bin/config.log, bin/project-cache.jam) are
rewritten on every b2 invocation, so git status came up dirty after any local
build.

This is git rm -r --cached and nothing else. The files stay on disk, the
ignore rule from #108 now takes effect, and no history is rewritten. The diff
touches no path outside a bin/ directory.

Why not rewrite develop instead

A rewrite would not achieve the goal and would break the superproject:

  • The blobs stay reachable through refs/pull/103/head on this repository, and
    GitHub's PR refs cannot be deleted by a maintainer. The fork branch holds them
    too, and forks share object storage. Removing them for real is a GitHub
    Support matter, not a force-push.
  • libs/openmethod is a submodule of boostorg/boost, bumped by automation
    within minutes of each merge. Superproject develop commits already pin
    openmethod SHAs at and after the offending merge; orphaning those would make
    git submodule update fail at those commits, permanently.

🤖 Generated with Claude Code

boostorg#103 brought 415 files of b2 output into the tree - 106 `.o`, 8 `.so`,
the test executables, their `.run`/`.output`/`.test` stamps, and the
`bin/config.log` and `bin/project-cache.jam` at the root. 613 MiB
expanded, 94 MiB in the pack.

`bin/` has been ignored since boostorg#108, which landed four days before boostorg#103
was merged and said what would happen without it: "leaving the object
trees permanently untracked-but-addable - `git add test` would commit
tens of thousands of lines of objects". feature/hash-policies was cut
before that commit, so the rule was not in its .gitignore, and a rule
added later does not apply to a path that is already tracked. The merge
carried the files in.

Two of them are written on every b2 invocation, so `git status` came up
dirty after any local build.

`git rm -r --cached` only: the files stay on disk, the ignore rule now
takes effect, and nothing is rewritten. The blobs remain reachable
through `refs/pull/103/head`, which cannot be deleted, so a rewrite of
develop would break the superproject's pinned submodule SHAs without
actually removing them.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@cppalliance-bot

Copy link
Copy Markdown

An automated preview of the documentation is available at https://117.openmethod.prtest3.cppalliance.org/libs/openmethod/doc/html/index.html

If more commits are pushed to the pull request, the docs will rebuild at the same URL.

2026-09-17 22:58:03 UTC

jll63 added a commit to jll63/openmethod that referenced this pull request Sep 17, 2026
boostorg#103 merged 415 files of b2 output - 613 MiB expanded, 94 MiB in the
pack, on a repository of about 3 MB - days after boostorg#108 added the `bin/`
ignore rule intended to prevent it. The branch was cut before that rule
landed, and an ignore rule does not apply to a path that is already
tracked, so the merge carried them in.

Nothing in the build or the review catches this, and boostorg#117 could only
untrack them: the superproject pins this library by SHA and its bot
bumps the pin within minutes of every merge, so rewriting `develop`
orphans commits `boostorg/boost` already points at - and would not even
remove the blobs, which stay reachable through `refs/pull/<n>/head`.

Write the rule down where the workflow is: stage named paths, never
`git add <dir>`, and ask before committing a build artefact or any file
over 1MB.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@jll63
jll63 merged commit 784c1de into boostorg:develop Sep 18, 2026
52 of 53 checks passed
@jll63
jll63 deleted the chore/remove-b2-artifacts branch September 18, 2026 01:21
jll63 added a commit to jll63/openmethod that referenced this pull request Sep 19, 2026
boostorg#103 merged 415 files of b2 output - 613 MiB expanded, 94 MiB in the
pack, on a repository of about 3 MB - days after boostorg#108 added the `bin/`
ignore rule intended to prevent it. The branch was cut before that rule
landed, and an ignore rule does not apply to a path that is already
tracked, so the merge carried them in.

Nothing in the build or the review catches this, and boostorg#117 could only
untrack them: the superproject pins this library by SHA and its bot
bumps the pin within minutes of every merge, so rewriting `develop`
orphans commits `boostorg/boost` already points at - and would not even
remove the blobs, which stay reachable through `refs/pull/<n>/head`.

Write the rule down where the workflow is: stage named paths, never
`git add <dir>`, and ask before committing a build artefact or any file
over 1MB.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
jll63 added a commit to jll63/openmethod that referenced this pull request Sep 19, 2026
boostorg#103 merged 415 files of b2 output - 613 MiB expanded, 94 MiB in the
pack, on a repository of about 3 MB - days after boostorg#108 added the `bin/`
ignore rule intended to prevent it. The branch was cut before that rule
landed, and an ignore rule does not apply to a path that is already
tracked, so the merge carried them in.

Nothing in the build or the review catches this, and boostorg#117 could only
untrack them: the superproject pins this library by SHA and its bot
bumps the pin within minutes of every merge, so rewriting `develop`
orphans commits `boostorg/boost` already points at - and would not even
remove the blobs, which stay reachable through `refs/pull/<n>/head`.

Write the rule down where the workflow is: stage named paths, never
`git add <dir>`, and ask before committing a build artefact or any file
over 1MB.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
jll63 added a commit that referenced this pull request Sep 19, 2026
…e notes (#118)

* doc: correct two stale notes in CLAUDE.md's registry-affinity section

Both were falsified by changes that did not update the prose around them.

#113 collapsed the "Two things deliberately do not participate" bullets
into one sentence, because `use_classes` had just started participating -
but then named two things under "One thing": the interop headers and the
C++26 `register_classes`. Restore the bullet form for the two that are
left.

The same sentence says the `any` and `type_erasure` interop headers "are
untouched". #116 touched all three of them, and had to: #113 gave
`virtual_` a registry parameter, and their `validate_method_parameter`
specializations still spelled `virtual_<T>`, which after the change
matches only the defaulted argument. What survives is the affinity claim,
which is the point of the paragraph - a `virtual_any` contributes none.
Say that, and record why a specialization there cannot go back to the
bare spelling.

The PCH paragraph names `test_capture_errors.hpp` as the only header that
carries the override on a test's behalf. `test/CMakeLists.txt` has
scanned for `test_checked_registry.hpp` as well since #93; the sentence
three lines above, "do not add a fourth marker", already counts three.

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

* doc: state the rule against committing build output

#103 merged 415 files of b2 output - 613 MiB expanded, 94 MiB in the
pack, on a repository of about 3 MB - days after #108 added the `bin/`
ignore rule intended to prevent it. The branch was cut before that rule
landed, and an ignore rule does not apply to a path that is already
tracked, so the merge carried them in.

Nothing in the build or the review catches this, and #117 could only
untrack them: the superproject pins this library by SHA and its bot
bumps the pin within minutes of every merge, so rewriting `develop`
orphans commits `boostorg/boost` already points at - and would not even
remove the blobs, which stay reachable through `refs/pull/<n>/head`.

Write the rule down where the workflow is: stage named paths, never
`git add <dir>`, and ask before committing a build artefact or any file
over 1MB.

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

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
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.

2 participants