Skip to content

B-09 · Single static binary — remove the Node runtime dependency #39

Description

@MongLong0214

Problem

ADR-0011 removed the registry, not the runtime. The CLI is TypeScript and requires Node to run.

For agents working in Python, Go, or Rust repositories, this is the last remaining barrier to entry. The protocol itself (git trailers) requires no runtime and can be read from any stack with git log --format='%(trailers:...)', but the index, guard, trust levels, and MCP server require Node.

Background

ADR-0002 rejected a single Rust binary for only two reasons: the 4-week schedule and a mismatch with the team's stack. It already said it could be revisited in the Backlog. That schedule constraint no longer exists.

Options

  • Node SEA (Single Executable Applications) — no source rewrite. Combining SEA with the native better-sqlite3 is difficult, but the --no-index fallback actually works after r-6f2a08, so a binary without sqlite is still functionally complete (only slower).
  • Reimplement in Go/Rustspec/fixtures/ (25) and spec/contract-cases/ (14) already form the conformance suite. An implementation that passes under SPEC §9 is conforming.
  • Attach platform-specific binaries to the GitHub release — distribution already works without a registry, so only release assets need to be added.

Prerequisite

#38 (single bundle) comes first. Without the bundle, there is no single entry point to put into SEA.

AC

  • commitlore --version·context·guard work in an environment without Node
  • Attach macOS/Linux/Windows binaries to the release
  • Pass the conformance suite (if choosing an implementation-changing option)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions