Enforce per-commit buildability; record why #1606 was closed as redundant with #1599
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 48/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- c, github-actions
- Domain
- build-system, ci-cd, developer-experience
Research direction
Read CLAUDE.md for the existing commit-buildability requirement, then inspect the repository’s CI configuration and Meson build entry points. The suggested approach is to build each commit in origin/main..HEAD for PRs touching wirelog/; determine how to make that check required and report failures clearly. Done when the check catches commits that do not compile, without treating compilation as a substitute for tests.
Written by the indexing model from the issue text.
Description
Triage — 2026-09-22
Target: Infra-0.A. Priority: p2-medium.
Define per-commit buildability enforcement and preserve history of #1606/#1599 reconciliation. This is developer workflow policy, not repeated capability implementation.
This scheduling/ownership update supersedes older milestone assignments below; original acceptance criteria remain binding. A target milestone is a completion target, not a requirement to delay ready work.
Why this is filed
PR #1606 was closed as redundant. This records the verification behind that
call, so the branch is not revived on the assumption that its work was lost,
and captures the one finding in it that outlives the PR.
#1606 and #1599 were competing fixes for the same issue
Both declared Closes #1597. #1599 merged on 2026-09-15T23:58:35Z and closed
#1597 one second later. #1606 (issue-1597-worker-alias-retirement, single
commit c17d1dfd, 18 commits behind main) is an alternative implementation of
the same fix.
Everything #1606 claims is already on main
Its description promises "worker relation aliases retire through
descriptor-level writer gates with atomic borrow accounting". Checked against
origin/main:
| claim | state on main |
|---|---|
descriptor_access gate |
present in wirelog/columnar/internal.h |
wl_atomic_u64 storage_alias_borrows |
present |
col_rel_storage_alias_borrow_count accessor |
19 call sites in relation.c |
col_rel_radix_sort_locked (the post-#1594 name) |
present |
The specific defect #1606 called out — "#1594 added one plain read that git
merged through untouched, the EBUSY test in
wl_columnar_relation_radix_sort_with_workspace" — is already fixed on main.
The only remaining textual hits are two continuation lines inside
atomic_compare_exchange_weak_explicit calls (relation.c:179, :199) and one
assignment to a stack-local copy (:4262), none of which is a shared-state
plain read.
The threading_doc failure it set out to repair also does not reproduce:
check-threading-doc.sh on main reports "OK; 135 audit rows cover the exact
atomic-site inventory". The 152-row figure in #1606's description is that
branch's own count, reached by a different route.
The three symbols absent from main are internal helpers, not capability
col_rel_free_contents_preserve_source_gatewl_columnar_source_access_reader_gate_acquirewl_columnar_source_access_reader_token_bind
These are the factoring #1606 chose; #1599 reached the same behaviour by a
different internal split. Concurrency coverage is present on main in both
tests/test_worker_session.c and tests/test_relation_generations.c.
The finding worth keeping: commits that do not build
#1606's own description records that the branch previously carried two commits
and the first did not link:
wirelog/session.c:228: undefined reference to `wl_backend_columnar'
wirelog/session.c:230: undefined reference to `wl_columnar_destroy_pending_reset'
wirelog/session.c:246: undefined reference to `wl_columnar_destroy_pending_get'
It notes this was pre-existing rather than introduced by its rebase, and
resolved it by squashing.
This is the second instance in the same series. Closed #1568 hit the same class
from the other direction: replaying af81859c deleted two test function
definitions main had added and left their calls behind — a non-compiling tree
that git reported no conflict for, and that only a build would have caught.
CLAUDE.md already requires it ("Each commit should be logically independent
and compilable", and run the suite before committing), but nothing enforces it,
so both instances reached a PR. A per-commit meson compile over a branch's
commit range — in CI or as a pre-push check — would have caught both cheaply.
Note that compiling is necessary but not sufficient: during the #1599 work, a
commit that built cleanly still failed one test that the next commit fixed.
Suggested: add a job that walks origin/main..HEAD and builds each commit,
required only on PRs that touch wirelog/.
- Dominant language
- C
- Stars
- 18
- Forks
- 2
- Avg merge
- 9h 28m
- Merged PRs (30d)
- 169
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from semantic-reasoning/wirelog
-
Difficulty 2/5 1-3 hours Newbie friendliness 83/100
semantic-reasoning/wirelog#2229 ·
Maintainers usually reply within 1 day
-
Doc: insert executor and incremental consolidation leave sorted runs, not globally sorted headsOpen
Difficulty 1/5 Under an hour Newbie friendliness 83/100
semantic-reasoning/wirelog#2133 ·
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 88/100
semantic-reasoning/wirelog#2042 ·
Maintainers usually reply within 1 day
-
p2-medium
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
semantic-reasoning/wirelog#1914 ·
Maintainers usually reply within 1 day
-
Difficulty 3/5 1-2 days Newbie friendliness 58/100
semantic-reasoning/wirelog#2262 ·
Maintainers usually reply within 1 day
All issues in semantic-reasoning/wirelog
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
HexaCluster/credcheck#86 ·
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
AOMediaCodec/SVT-AV1#3320 ·
-
difficulty: easy
Difficulty 2/5 1-3 hours Newbie friendliness 64/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
open-quantum-safe/liboqs#2647 ·
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 85/100
Maintainers usually reply within 1 day