mantzas/incata
51.1
Adequate · 20 September 2026
539
lines of production code
Go
primary language
4
measurements over time
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.