Skip to content

gitai 0.3.1

Choose a tag to compare

@feder-cr feder-cr released this 22 Oct 22:32
· 77 commits to main since this release

A fix release: one correctness fix in landing, Windows support for the CLI and
the SDK, fewer fsyncs on the land path, and the measured results of AI conflict
resolution.

Fixes

  • UserLand resolves its branch by its exact name (#6, thanks
    @LosaLosSantos). It read the branch with git's revision rules, so a missing
    refs/heads/x could resolve to a tag or a remote-tracking reference named
    like it, and a land onto a branch that does not exist could be answered
    already_landed. Every branch read of UserLand (decision, batching,
    pre-resolution, verification, the moved-reference check) now looks up
    refs/heads/<branch> exactly, as UserCommitFiles already did.

New

  • The CLI and the SDK run on Windows (#7, thanks @LosaLosSantos). Storage
    relative paths are built with / on every system (on Windows they broke a
    regular expression and every program importing the SDK panicked at start),
    and graft no longer imports the Unix-only changelog package. A CI job
    builds graft.exe and the SDK on Windows and runs the workspace tests. The
    server stays Linux-only.

Faster

  • Fewer fsyncs on the land path (#4, thanks @Trigodil, with maintainer
    fixes). A file-bucket upload fsyncs only the directories not yet known to be
    durable, and the storage-core watermark of a dirty repository is written
    without fsync and made durable by the durable step, outside git's reference
    lock and before the repository's marker goes. Measured on one WSL2 machine,
    authoritative mode, SQLite, file bucket, 10 writers (four paired runs):
    lands per minute about 1,234 -> 1,650, Preparing phase mean about 36 -> 20 ms.
    The gain depends on the cost of fsync on the disk.
  • Operators: never remove or replace a directory of a file bucket while a
    server uses it (the directory cache relies on it; STORAGE.md).
  • New metric graft_storage_preparing_step_seconds{step,kind} (record, walk,
    pack, upload) for authoritative writes.

AI conflict resolution: measured

Two writers from different vendors that produce the same resolution, checked by
the project's own tests (or build/tsc) on the exact tree, as verify.command
does, were wrong in (Wilson upper bound in brackets):

with the project's tests with build or tsc only without tests
Go 7.7% (16.8%), replicated on fresh conflicts build: 6.8% (14.9%) only where it builds
Python 3.2% (7.2%) - abstaining on semantic conflicts: 5.9% (9.2%)
TypeScript 4.1% (8.6%) tsc: 4.9% (9.7%) not verified

Python and TypeScript are judged against an AI reference (Claude) with a written
rubric, calibrated blind on known errors, not a human one; TypeScript without
tests is not verified. Details and every protocol in PLAN10 15.15-15.24.

Upgrade

No configuration or data change from 0.3.0.