ground-strike

module
v0.0.1-alpha.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 6, 2026 License: AGPL-3.0

README

groundstrike

groundstrike is a typed, headless Go code-indexing library. Callers provide a bounded workspace Source and a relational Store; the engine reconciles complete generations and exposes lexical search, Go-symbol outlines, and status.

The core implementation is transport-independent and contains no MCP, JSON-RPC, provider, embedding, or vector dependency. HRNS can embed that library directly. The separate mcpserver package set packages the same engine as a filesystem-backed MCP server over stateless Streamable HTTP for container deployments.

Start here

  • Architecture and operations — current API contracts, generation/storage invariants, SQLite ownership and recovery, error handling, lifecycle, security, support, verification, and review-open release gates.
  • Documentation index — current, roadmap, evaluation, and explicitly historical documents.

The prior embedding-sitter handoff was removed during this swap and is not part of the current implementation plan.

Packages

  • groundstrike: minimal typed API and bounded reconciliation engine.
  • groundstrike/sqliteindex: relational SQLite/FTS5 generation store.
  • groundstrike/internal/*: cohesive chunking, Go-symbol, planning, and query helpers that are not part of the caller contract.
  • mcpserver: filesystem source, MCP Streamable HTTP adapter, and runnable server command within the repository's single Go module.

SQLite data is derived and crash-safe: a generation becomes visible only after its files, chunks, symbols, and FTS rows commit atomically. An exact matching ready/fresh snapshot digest reuses the active generation without reading files or writing a replacement. On Darwin and Linux, one store owns a process-lifetime, nonblocking advisory lock at <index.db>.writer.lock; contention returns groundstrike.ErrWriterOwned.

Minimal wiring

store, err := sqliteindex.Open(ctx, dbPath, sqliteindex.Options{
    RecoverCorrupt: true,
})
if err != nil {
    return err
}
defer store.Close()

engine, err := groundstrike.New(groundstrike.Options{
    RootID: "workspace-stable-id",
    Source: boundedSource, // implemented by the embedding application
    Store:  store,
})
if err != nil {
    return err
}

report, err := engine.Reconcile(ctx)

See Architecture and operations for a complete ownership example and error-classification guidance.

Requirements and support

  • Go version declared by go.mod: 1.25.12.
  • SQLite 3.51.3+ with FTS5, supplied through modernc.org/sqlite.
  • sqliteindex writer ownership: Darwin and Linux on a private local filesystem. Other operating systems are currently unsupported.

Docker MCP server

The stable container will serve MCP Streamable HTTP at /mcp and health checks at /healthz. Mount the indexed workspace read-only and keep the derived SQLite state in a separate volume:

docker run --rm \
  -p 127.0.0.1:8080:8080 \
  -v "$PWD:/workspace:ro" \
  -v ground-strike-data:/data \
  docker.io/florasync/ground-strike:${GROUND_STRIKE_IMAGE:-v0.0.1}

Configure clients with http://127.0.0.1:8080/mcp. The server exposes reconcile, search, outline, and status. It has no application-layer authentication, so do not publish its port on an untrusted network without an authenticating reverse proxy. v0.0.1-alpha.1 is source-only and does not publish an image. Docker Hub publication begins with stable v0.0.1; tag-backed CI publishes docker.io/florasync/ground-strike from the protected release environment.

Development

make build
make test
make race
make vet
make check-code-index-coverage
make bench

make check runs tests, vet, and coverage. The checked-in code-index-coverage.manifest defines every feature-owned production file; the coverage gate fails if a listed package or the aggregate is below 90.0%.

Downstream HRNS compatibility and production-shaped qualification are release gates, not evidence carried by this repository. The alpha candidate is verified against a concrete HRNS checkout before tagging; any retained downstream results must remain in that repository or a linked immutable evidence artifact. Open performance and module-release gates remain listed in Remaining review-open gates.

Directories

Path Synopsis
Package groundstrike provides typed, transport-independent source indexing and retrieval.
Package groundstrike provides typed, transport-independent source indexing and retrieval.
sqliteindex
Package sqliteindex persists complete code-index generations in relational SQLite tables and FTS5.
Package sqliteindex persists complete code-index generations in relational SQLite tables and FTS5.
mcpserver
internal/filesystem
Package filesystem provides a bounded, root-contained groundstrike source.
Package filesystem provides a bounded, root-contained groundstrike source.
server
Package server adapts the transport-independent groundstrike engine to MCP over Streamable HTTP.
Package server adapts the transport-independent groundstrike engine to MCP over Streamable HTTP.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL