Skip to content
CAI
Software that uses CAICheck a score

mantzas/incata

51.1

Adequate · 20 September 2026

539

lines of production code

Go

primary language

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

Incata is a Go library for ingesting and retrieving structured events using SQL databases. It provides a unified storage abstraction for Microsoft SQL Server and PostgreSQL, handling event persistence and retrieval by source ID. The system manages event serialization and includes utilities for testing database interactions.

Features

Added Go example demonstrating event ingestion and retrieval

A new example file (examples/example.go) has been added to demonstrate the core workflow of the Incata library. This example shows how to configure and use the SQL writer and reader components with both MSSQL and PostgreSQL databases, including appending events concurrently and retrieving them by source ID.

examples · high confidence

Added vendor copy of go-sqlmock library

The vendor directory now includes the go-sqlmock library (github.com/DATA-DOG/go-sqlmock), providing a mock implementation of the Go sql/driver interface. This allows tests to simulate database interactions without requiring a real database connection, supporting features like expectation matching for queries and executions, argument matching (including named arguments and custom matchers), and multi-result set handling.

vendor, vendor/github.com · high confidence

Added vendor support for CLDR-based linguistic plural rules

The \vendor/golang.org/x/text/feature/plural\ package has been added to the project, providing utilities for handling linguistic plurals in text based on CLDR rules. This includes the \Selectf\ function for selecting the correct plural form in localized messages (e.g., "one file" vs. "files") and the \Rules\ struct for matching plural forms for cardinal and ordinal numbers across various languages. The package includes generated data files (\common.go\, \data\_test.go\) and implementation files (\plural.go\, \message.go\) that define plural forms like \One\, \Two\, \Few\, \Many\, and \Other\, along with tests and examples demonstrating their usage in internationalization contexts.

vendor/golang.org/x/text/feature/plural · high confidence

Introduce SQL-based event reader with interface and tests

The reader package now provides a concrete SQL implementation for retrieving events. A new \Reader\ interface defines the contract for fetching events by source ID, and \SQLReader\ implements this by querying the database via the existing \Storage\ component and deserializing results using the \marshal.Serializer\. The change includes a Ginkgo test suite that validates successful data retrieval and error handling against a mocked SQL database.

reader · high confidence

Introduction of JSON serialization and deserialization capabilities

The application now includes a new marshal package that provides JSON serialization and deserialization functionality. Users can utilize the JSONMarshaller to convert data structures into JSON strings and parse JSON strings back into structured data, with built-in error handling for invalid inputs. This change introduces the core interface definitions and the concrete JSON implementation, along with comprehensive test coverage using the Ginkgo framework to ensure reliability.

marshal · high confidence

New storage abstraction supporting MSSQL and PostgreSQL

The storage package now provides a unified database abstraction layer that supports both Microsoft SQL Server and PostgreSQL. Users can initialize storage via \NewStorage\ (which handles connection opening and verification) or \NewStorageFinalized\ (for pre-existing connections). The implementation automatically generates and applies database-specific SQL statements for appending events and selecting by source ID, allowing the application to interact with either database type through a consistent interface.

storage · high confidence

Removals

Removal of JSON serializer implementation

The JSON serialization capability has been removed from the application. The \JSONSerializer\ struct, its \Serialize\ method, and the associated \Serializer\ interface are no longer available, meaning the system can no longer serialize data structures into JSON strings using this component.

serializer · high confidence

Removal of relational database abstraction layer

The \relational\ package, which provided a wrapper around \database/sql\ for MS SQL Server and PostgreSQL, has been removed. This eliminates the \Db\ struct, its connection management methods (\NewDb\, \Prepare\, \Close\), and the \DbType\ constants, meaning applications can no longer use this specific abstraction to interact with relational databases.

relational · high confidence

Behavioural changes

Event model adds ID field and externalizes creation time

The Event struct now includes an ID field (int64) to uniquely identify events. Additionally, the NewEvent function signature has changed to accept a 'created' time parameter instead of automatically setting it to the current UTC time, allowing callers to specify the event's creation timestamp explicitly. The underlying UUID library has also been switched from 'github.com/twinj/uuid' to 'github.com/satori/go.uuid'.

model · high confidence

Library renamed to incata with dependency and testing overhaul

The project has been renamed from golinear to incata, requiring users to update their import paths. The dependency manager has migrated from Glide to Dep, replacing the old uuid library with github.com/satori/go.uuid and adding constraints for SQL drivers (go-mssqldb, lib/pq) and testing tools (ginkgo, gomega). The API for Appender and Retriever has changed to use a setup pattern (SetupAppender/SetupRetriever) instead of constructor injection, and the test suite has been rewritten to use Ginkgo/Gomega with new memory mocks.

(repo-wide) · high confidence

Migrate writer to new storage and marshal abstractions

The writer package now depends on the new \incata\ library instead of the renamed \golinear\. Specifically, \SQLWriter\ uses \storage.Storage\ and \marshal.Serializer\ instead of the previous \relational.Db\ and \serializer.Serializer\. The direct SQL execution logic in \Write\ has been updated to use the new storage interface, and the test suite has been migrated to Ginkgo/Gomega with \sqlmock\ to verify the new behavior.

writer · high confidence

Mock utilities relocated and refactored for testing

Test helper files (event\_test\_data, memory\_reader, serializer) have been added to the mocks package, and the memory\_writer has been moved from the writer package to mocks. The memory\_writer constructor now accepts initial data, and imports were updated to reflect the new package location and model path.

mocks · medium confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 54 → 51 (-3.3)
  • Rubric changed (rubric-2026.08.17 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 100 → 100 (+0.0)
  • Architecture 69 → 69 (+0.0)
  • Maturity 43 → 46 (+3.1)
  • Readiness 46 → 36 (-9.8)
  • Security 100 → 100 (+0.0)

Resolved (6)

  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — no supported dependency manifest was read
  • No exposed public API
  • Test reliability not included
  • The README states two supported DBs (MS Sql Server and Postgresql) but does not name PostgreSQL or provide setup instructions for it, leaving the reader unsure which to use. (README.md)
  • single-maintainer — knowledge-concentration (bus factor) risk

New (2)

  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

mantzas/incata was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 20 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 7691bc7ed872896324aca73b953b39ee342f1a68 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-28e75b8e3254.