Skip to content
CAI
Software that uses CAICheck a score

gbih/ddd-in-go

38.8

Weak · 21 September 2026

953

lines of production code

Go

primary language

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

Features

Add F\# example for undefined types and refactor Go example

Added a new F\# example (main.fsx) that defines an 'Undefined' exception type and uses it to create several type aliases (CustomerInfo, ShippingAddress, etc.) and a record type (Order). In the Go example, removed the commented-out F\# type definition and added a newline character to the Printf format string.

084-undefined-type · medium confidence

Added F\# example for modeling simple values and refactored Go example

Added a new F\# script (main.fsx) demonstrating how to model simple values using single-case unions and pattern matching. In the Go example, the main function was refactored to remove commented-out code and unused variable declarations, simplifying the demonstration of value types.

079-modeling-simple-values · high confidence

Removals

Removed experimental Go code for functional programming patterns

Removed all files in the 'WORKING' directory, which contained experimental Go code demonstrating functional programming concepts such as higher-order functions, currying, functional composition, and pipeline patterns.

WORKING · high confidence

Behavioural changes

Added MIT license and updated project documentation

The repository now includes an MIT license file, clarifying the terms of use and distribution for the software. Additionally, the README has been updated to correct the author's name from 'Scott Wlashin' to 'Scott Wlaschin' in the description of the domain modeling port.

(repo-wide) · high confidence

Added compile-time interface validation for contact info types

Added compile-time checks to ensure that EmailContactInfo, PostalContactInfo, and BothContactMethods correctly implement the ContactInfo interface. This prevents runtime errors by verifying interface satisfaction at compile time, improving code reliability without runtime overhead.

111-sumtypes · medium confidence

Cleaned up Go source by removing commented-out code

The main.go file in the 108-invariant directory has been refactored to remove large blocks of commented-out code and unused type definitions. This cleanup improves code readability and maintainability by eliminating dead code that was previously present in the file.

108-invariant · high confidence

Corrects typo in paid invoice output message

The text message printed when a paid invoice is processed has been corrected from 'The paid invoiceis is' to 'The paid invoice is is'. This fixes a typo in the user-facing output string.

092-entities-inside-id-equality · high confidence

Fixes missing newline in workflow example output

The 085-workflows-struct example was updated to include a newline character in the output of the placeOrder function, ensuring the printed result is properly terminated.

085-workflows-struct · high confidence

Fixes type mismatch in 107-units-of-measure example

The 107-units-of-measure example was updated to correct a type mismatch error. The code previously attempted to assign a string value to a variable typed as a custom float64-based unit, which is invalid in Go. This change removes the invalid assignment, ensuring the example compiles and runs without type errors.

107-units-of-measure · medium confidence

Go source file relocated to new directory structure

The main Go source file for the 108-invariant2 example has been moved from the 'WORKING' directory to the root of the 108-invariant2 folder. This change reorganizes the project's file structure, ensuring the entry point is located in the expected location for the example.

108-invariant2 · high confidence

Moved capturing-rules example to root directory

The Go source files for the 110-capturing-rules example have been relocated from the 'WORKING' subdirectory to the root of the project. This change also includes minor cleanup of comments and removal of extraneous reference material.

110-capturing-rules · high confidence

Refactored domain model examples to demonstrate sum and composed types

The domain modeling examples have been refactored to better illustrate type composition and pattern matching. In the F\# examples (065, 067, 068), the code now explicitly defines sum types (unions) and record types, with 067 demonstrating a discriminated union for order quantities and 068 showing a complex payment type composed of other types. In the Go examples, the code has been cleaned up by removing commented-out F\# code and unused test functions, while enabling the \ConvertPaymentCurrency\ function to show the practical application of the composed \Payment\ type.

065-sum-types, 067-sum-types, 068-composing-types · medium confidence

Removed commented-out type alias for InvoiceId

The commented-out type alias for InvoiceId has been removed from the main.go file, cleaning up the codebase by eliminating unused or obsolete type definitions.

091-entities-inside-id · medium confidence

Reorganized workflow example files

The main.go file for the '086-workflows-sum-switch' example has been moved from the 'WORKING' directory to the root of the example folder. This reorganization likely reflects a change in the project's directory structure or workflow management.

086-workflows-sum-switch value · medium confidence

Simplified entity identifier types and formatting

The entity identifier types have been simplified: ContactId is now defined as an empty interface rather than a custom type wrapping a UUID, and the UUID generation output formatting has been adjusted to remove an extra space in the printed string.

089-entity-identifiers · medium confidence

Simplified session initialization and debug output

The main function's logic was streamlined by removing several commented-out code blocks and unused variable declarations. Debug print statements for variables 't' and 'b' were updated to include explicit labels, and the conditional check that previously initialized 't' via 'createSession' was commented out, effectively disabling that initialization path.

109-invariant3 · medium confidence

Uncommented and exposed shipping and billing address handling in the Order workflow

The Go implementation for the '032-intro' location now actively processes and prints the results for shipping and billing addresses, which were previously commented out or missing. Specifically, the \main\ function now instantiates \ShippingAddress\ and \BillingAddress\ structs and passes them to the \do\ function, allowing users to see how these specific data structures are handled within the Order-Taking bounded context.

032-intro · medium confidence

Update import path for value object package

The import path for the immutable value object package has been updated from 'github.com/088-value-objects/immutable/valueobject001' to 'github.com/gbih/ddd-in-go/088-value-objects/immutable/valueobject001'. This change ensures the code references the correct repository location for the value object implementation.

088-value-objects · high confidence

Dependencies

Go module paths and structure updated

The Go module definitions have been restructured. The module at '105-private' was removed entirely. The module at '088-value-objects' was renamed and its module path was updated from 'github.com/088-value-objects/immutable' to 'github.com/gbih/ddd-in-go/088-value-objects/immutable'. The module at '110-capturing-rules' was renamed but its content remained unchanged.

(dependencies) · 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

This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.

Score

  • CAI 37 → 39 (+1.6)
  • Rubric changed (rubric-2026.08.18 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 100 (new)
  • Architecture 100 → 100 (+0.0)
  • Maturity 28 → 28 (+0.0)
  • Readiness 15 → 15 (+0.0)
  • Security 92 → 84 (-7.6)

Resolved (26)

  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • Low: security finding (details withheld)
  • Low: security finding (details withheld)
  • Low: security finding (details withheld)
  • Low: security finding (details withheld)
  • Low: security finding (details withheld)
  • Low: security finding (details withheld)
  • Low: security finding (details withheld)
  • Low: security finding (details withheld)
  • Low: security finding (details withheld)
  • Low: security finding (details withheld)
  • Low: security finding (details withheld)
  • Low: security finding (details withheld)
  • Low: security finding (details withheld)
  • Low: security finding (details withheld)
  • Low: security finding (details withheld)
  • Low: security finding (details withheld)
  • Low: security finding (details withheld)
  • Low: security finding (details withheld)
  • Low: security finding (details withheld)
  • …and 6 more

New (27)

  • Documentation: no contributor guidance (README.md)
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • Low: security finding (details withheld)
  • Low: security finding (details withheld)
  • Low: security finding (details withheld)
  • Low: security finding (details withheld)
  • Low: security finding (details withheld)
  • Low: security finding (details withheld)
  • Low: security finding (details withheld)
  • Low: security finding (details withheld)
  • Low: security finding (details withheld)
  • Low: security finding (details withheld)
  • Low: security finding (details withheld)
  • Low: security finding (details withheld)
  • Low: security finding (details withheld)
  • Low: security finding (details withheld)
  • Low: security finding (details withheld)
  • …and 7 more

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

Survey your own repository

gbih/ddd-in-go 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 21 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 bd9bb37aaf22221494abcef851b919bc3455fb62 — 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.