Skip to content

fix(nix): use gms_pure_go, fix vendorHash, drop ICU dependency#3278

Open
TheCTD wants to merge 39 commits intogastownhall:mainfrom
TheCTD:fix/nixos-build
Open

fix(nix): use gms_pure_go, fix vendorHash, drop ICU dependency#3278
TheCTD wants to merge 39 commits intogastownhall:mainfrom
TheCTD:fix/nixos-build

Conversation

@TheCTD
Copy link
Copy Markdown

@TheCTD TheCTD commented Apr 14, 2026

The Nix flake failed to build on NixOS due to three issues:

  1. Stale vendorHash (reported in Nix flake build fails: go-modules hash mismatch on v1.0.0 #3221) — updated to the correct value for proxyVendor mode.

  2. ICU C headers required by go-icu-regex unavailable in the Nix sandbox. PR Update nix install for v1.0.0 #3064 added icu to buildInputs, but fix: remove ICU runtime dependency from release binaries #3066 and fix(ci): drop ICU linkage from test jobs, use -tags gms_pure_go everywhere #3240 established the correct fix: build with -tags gms_pure_go to use Go's stdlib regex instead. Beads does not use SQL REGEXP functions so there is no functional impact. ICU and its CGO flags are removed from default.nix and flake.nix.

  3. vendor/modules.txt inconsistency — several packages are marked # explicit in vendor/modules.txt but only appear as indirect requires in go.mod (fixed upstream by go mod tidy && go mod vendor). Added proxyVendor = true so nixpkgs serves modules via a local GOPROXY instead of the vendor directory, bypassing the consistency check.

coffeegoddd and others added 14 commits April 14, 2026 14:47
The Nix flake failed to build on NixOS due to three issues:

1. Stale vendorHash (reported in gastownhall#3221) — updated to the correct value
   for proxyVendor mode.

2. ICU C headers required by go-icu-regex unavailable in the Nix sandbox.
   PR gastownhall#3064 added icu to buildInputs, but gastownhall#3066 and gastownhall#3240 established the
   correct fix: build with -tags gms_pure_go to use Go's stdlib regex
   instead. Beads does not use SQL REGEXP functions so there is no
   functional impact. ICU and its CGO flags are removed from default.nix
   and flake.nix.

3. vendor/modules.txt inconsistency — several packages are marked
   # explicit in vendor/modules.txt but only appear as indirect requires
   in go.mod (fixed upstream by go mod tidy && go mod vendor). Added
   proxyVendor = true so nixpkgs serves modules via a local GOPROXY
   instead of the vendor directory, bypassing the consistency check.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
fix: remove sources of conflict when working on multiple clones
Executed-By: beads/crew/emma
Beads is now a dependency of Gas City, which expects a standard PR-based
workflow. Remove the hook that blocked PR creation and update
AGENT_INSTRUCTIONS.md so crew workers use PRs by default. Direct push to
main stays available for releases and narrow operational fixes.

Keep the CI-polling rate-limit block in the hook — that guard is about
the 5000/hr GitHub API quota, not workflow policy.

Executed-By: beads/crew/emma
…nd (gastownhall#3287)

The TestEmbeddedMemoryConcurrent workaround disables export.auto so the
test doesn't hit the race investigated in GH#3260. The probe on PR gastownhall#3269
confirmed the race is engine-shutdown-level (Dolt working-set persistence
can lag flock release), not flock-level. Point future readers at that
investigation so they don't try to fix it with another flock.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* test: share epic DB setup in one suite (bd-itp.5)

* test: pass subtest testing.T through epic helper
…astownhall#3297)

The vendorHash in default.nix went stale after several dependabot
updates to go.mod/go.sum landed post-PR gastownhall#3064. Updates to the value
reported by Nix as "got" by @luccahuguet.

Fixes gastownhall#3221

Co-authored-by: luccahuguet <luccahuguet@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
maphew and others added 15 commits April 16, 2026 08:54
…GH#3303)

The replace directive never worked for \`go install\` (per \`go help install\`,
replace is not honored for install@version). Removing it fixes \`go install\`
on Linux/macOS; Windows was already broken and stays broken pending GH#3307.

Full analysis in gastownhall#3303.
Option D from GH#3303. Routes go install users through CGO_ENABLED=0 as the simplest path (server-mode only, no C toolchain needed). install.sh falls back to nocgo if cgo install fails. Detailed nocgo error message guides users to server mode or an embedded-capable install. Updates INSTALLING.md and ICU-POLICY.md accordingly.
Converges the sprinkle of -tags=gms_pure_go fixes into a single source plus a source-time CI guard. .buildflags is now canonical (exports GOFLAGS, CGO_ENABLED), scripts source it, scripts/check-build-tags.sh runs in CI to catch bare go commands. Fixes 5 latent bugs the guard caught (regression.yml, Makefile bench/test-regression, devcontainer, embedded-test-shard fallback, smoke-test scripts).
Both are local-tool state files with no business in the repo:
- `.codex` — zero-byte marker dropped by the Codex CLI
- `.claude/scheduled_tasks.lock` — Claude Code session lock

Existing .claude/ entries already covered settings.local.json,
worktrees/, and *.log; extending the pattern to *.lock and adding
the separate .codex entry.
…#3230)

* fix: rebind target workspace for db commands

* fix: isolate rebinding from caller workspace state

* fix: restore no-db target selection semantics

* fix: honor no-db target precedence consistently

* test: restore db flag state in context rebinding tests
…all#3318)

Bumps [actions/upload-pages-artifact](https://github.com/actions/upload-pages-artifact) from 4 to 5.
- [Release notes](https://github.com/actions/upload-pages-artifact/releases)
- [Commits](actions/upload-pages-artifact@v4...v5)

---
updated-dependencies:
- dependency-name: actions/upload-pages-artifact
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…mcp (gastownhall#3319)

Bumps [fastmcp](https://github.com/PrefectHQ/fastmcp) from 3.2.3 to 3.2.4.
- [Release notes](https://github.com/PrefectHQ/fastmcp/releases)
- [Changelog](https://github.com/PrefectHQ/fastmcp/blob/main/docs/changelog.mdx)
- [Commits](PrefectHQ/fastmcp@v3.2.3...v3.2.4)

---
updated-dependencies:
- dependency-name: fastmcp
  dependency-version: 3.2.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v4...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…#3322)

Bumps [github.com/anthropics/anthropic-sdk-go](https://github.com/anthropics/anthropic-sdk-go) from 1.34.0 to 1.37.0.
- [Release notes](https://github.com/anthropics/anthropic-sdk-go/releases)
- [Changelog](https://github.com/anthropics/anthropic-sdk-go/blob/main/CHANGELOG.md)
- [Commits](anthropics/anthropic-sdk-go@v1.34.0...v1.37.0)

---
updated-dependencies:
- dependency-name: github.com/anthropics/anthropic-sdk-go
  dependency-version: 1.37.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…ric (gastownhall#3323)

Bumps [go.opentelemetry.io/otel/exporters/stdout/stdoutmetric](https://github.com/open-telemetry/opentelemetry-go) from 1.42.0 to 1.43.0.
- [Release notes](https://github.com/open-telemetry/opentelemetry-go/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-go/blob/main/CHANGELOG.md)
- [Commits](open-telemetry/opentelemetry-go@v1.42.0...v1.43.0)

---
updated-dependencies:
- dependency-name: go.opentelemetry.io/otel/exporters/stdout/stdoutmetric
  dependency-version: 1.43.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…l#3324)

Bumps [golang.org/x/term](https://github.com/golang/term) from 0.41.0 to 0.42.0.
- [Commits](golang/term@v0.41.0...v0.42.0)

---
updated-dependencies:
- dependency-name: golang.org/x/term
  dependency-version: 0.42.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…hall#3325)

Bumps [charm.land/lipgloss/v2](https://github.com/charmbracelet/lipgloss) from 2.0.2 to 2.0.3.
- [Release notes](https://github.com/charmbracelet/lipgloss/releases)
- [Commits](charmbracelet/lipgloss@v2.0.2...v2.0.3)

---
updated-dependencies:
- dependency-name: charm.land/lipgloss/v2
  dependency-version: 2.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [pydantic](https://github.com/pydantic/pydantic) from 2.12.5 to 2.13.2.
- [Release notes](https://github.com/pydantic/pydantic/releases)
- [Changelog](https://github.com/pydantic/pydantic/blob/v2.13.2/HISTORY.md)
- [Commits](pydantic/pydantic@v2.12.5...v2.13.2)

---
updated-dependencies:
- dependency-name: pydantic
  dependency-version: 2.13.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…_APPEND (gastownhall#3301)

The previous implementation used bufio.NewWriter which could split a
single entry into multiple write() syscalls. Under concurrent O_APPEND
from multiple goroutines, these partial writes interleave, producing
corrupted lines that the scanner silently drops.

Fix: encode into a bytes.Buffer first, then issue a single f.Write()
call. For payloads under PIPE_BUF (4096 bytes on Linux), this is
guaranteed atomic by POSIX.

Fixes flaky TestAppend_ConcurrentWritersUniqueIDs in CI.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
natorious and others added 10 commits April 17, 2026 15:10
…townhall#3315)

The Tracker.getConfig() method only checked the Dolt database and
environment variables. Since `bd config set linear.api_key` writes
to config.yaml (yaml-only key), `bd linear sync --pull` could never
find the API key. Mirror the check from cmd/bd/linear.go:getLinearConfig()
by calling config.IsYamlOnlyKey() and config.GetString() first.

Co-authored-by: mayor <root@vmi3233510.contaboserver.net>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Fix macOS lsof cwd filtering in doltserver

* Keep regular epics open after last child closes
…mulation (gastownhall#3326)

When DOLT_FETCH fails (network error, timeout, authentication), Dolt
leaves orphaned tmp_pack_* files in .dolt/git-remote-cache/. These
accumulate unboundedly across repeated failures and are never cleaned
up automatically.

Observed impact: 194 GB of tmp_pack_* debris on a single machine after
months of failed federation syncs.

Call DoltGC best-effort after a failed fetch so orphaned pack
temporaries are reclaimed before the error propagates. DoltGC requires
a non-transactional connection; if db is a transaction the GC will
fail silently, which is acceptable — the original fetch error is still
returned correctly.

Cherry-picked from gastownhall#3308 by @athosmartins. The original PR bundled an
unrelated Gas Town schema migration (re-adding the `crystallizes`
column that migration 012 explicitly dropped) and accidentally deleted
a working #nosec directive in rules.go, so this pulls out just the
valuable fix.

Closes bd-fst

Co-authored-by: Athos Bernardes <athosmartins@gmail.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…astownhall#3327)

Closes gastownhall#3290 — auto-recovery from corrupt dolt manifest on startup (GH#3290 signature: 'root hash doesn't exist').
Closes gastownhall#3289, gastownhall#3309, gastownhall#3252, gastownhall#3253 — hardens Linear push: requires explicit linear.state_map.* config, rejects ambiguous state resolution, narrows push dedup to pushable fields, blocks unscoped project-filtered push from creating unlinked beads, and adds regression test for the orphan-ownership rule (parent-filtered push must not update external issues Beads hasn't claimed via external_ref).
…astownhall#3231) (gastownhall#3232)

Auto-sanitize hyphenated `dolt_database` names on embedded-mode upgrade. Projects initialized before gastownhall#2142 retain hyphenated names in `metadata.json`; after the 1.0.0 embedded-mode default flip, those names are rejected by the embedded Dolt engine. This change detects legacy names on store open, renames the database directory, persists the fix to `metadata.json`, and adds a doctor check + init guard for future prevention.

Closes gastownhall#3231. Related: gastownhall#2142, gastownhall#2160, gastownhall#3128, gastownhall#3129.

Thanks @kevglynn for the thorough fix, migration safety (collision detection, crash-safe ordering), and test coverage.
…all#3364)

Adds a CI job that runs `nix build .#default` on PRs touching go.mod,
go.sum, default.nix, flake.nix, or flake.lock, so dependabot bumps
that invalidate vendorHash fail loudly in CI instead of silently
breaking Nix users on main (as happened in GH#3221).

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The Nix flake failed to build on NixOS due to three issues:

1. Stale vendorHash (reported in gastownhall#3221) — updated to the correct value
   for proxyVendor mode.

2. ICU C headers required by go-icu-regex unavailable in the Nix sandbox.
   PR gastownhall#3064 added icu to buildInputs, but gastownhall#3066 and gastownhall#3240 established the
   correct fix: build with -tags gms_pure_go to use Go's stdlib regex
   instead. Beads does not use SQL REGEXP functions so there is no
   functional impact. ICU and its CGO flags are removed from default.nix
   and flake.nix.

3. vendor/modules.txt inconsistency — several packages are marked
   # explicit in vendor/modules.txt but only appear as indirect requires
   in go.mod (fixed upstream by go mod tidy && go mod vendor). Added
   proxyVendor = true so nixpkgs serves modules via a local GOPROXY
   instead of the vendor directory, bypassing the consistency check.
Co-Authored-By: Claude Sonnet 4.6 <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.

9 participants