Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Enforce per-commit buildability; record why #1606 was closed as redundant with #1599

Open
#1,645 0 comments 0 reactions 0 assignees View on GitHub

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

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

p2-medium

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_gate
  • wl_columnar_source_access_reader_gate_acquire
  • wl_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

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from semantic-reasoning/wirelog

All issues in semantic-reasoning/wirelog

Similar issues

More C issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.