sasa1977/boundary
74.0
Strong · 23 September 2026
2.8k
lines of production code
Elixir
primary language
5
measurements over time
What this system is
Boundary is an Elixir library that enforces architectural constraints by defining module dependencies and exports directly within code using a macro-based configuration. It integrates with the Elixir build process to validate these rules at compile time, preventing forbidden cross-module calls. The system also provides tooling to visualize dependency graphs and inspect boundary structures, helping developers maintain clear separation of concerns in their applications.
How it got here
2019 — renaming and macro-based configuration
10 changes.
The project was renamed to Boundary and migrated from external configuration files to a macro-based approach using the \use Boundary\ directive within modules. This shift simplified the architecture by embedding boundary definitions directly in the code, while also introducing parallel checking, graph visualization, and updated tooling for Elixir 1.10+.
2020–2023 — Compiler integration and visualization features
8 changes.
This period focused on integrating Boundary into the Elixir build process via a dedicated compiler task that enforces architectural constraints during compilation. It also introduced new Mix tasks for visualizing module and function dependencies, generating documentation groups, and inspecting external dependencies. Comprehensive test coverage was added to validate the new compiler logic, graph generation, and task behaviors.
Features
Introduce dedicated Boundary compiler task
A new \Mix.Tasks.Compile.Boundary\ task has been added to the project, implementing the \Mix.Task.Compiler\ protocol to verify cross-module function calls against defined boundaries. This compiler integrates with the Elixir build process by registering tracers to record references and emitting warnings for forbidden cross-boundary calls, allowing developers to enforce architectural constraints during compilation without blocking the build unless \--warnings-as-errors\ is used.
lib/boundary/mix/tasks/compile · high confidence
New Mix tasks for documentation, visualization, and dependency inspection
The Boundary library now includes four new Mix tasks to improve developer experience and visibility into application structure. \mix boundary.ex\_doc\_groups\ generates a \boundary.exs\ file containing ExDoc module group definitions, allowing boundaries to be automatically categorized in generated documentation. \mix boundary.visualize\ creates Graphviz \.dot\ files for each boundary, providing a visual representation of module dependencies and structure within the \boundary/\ folder. \mix boundary.spec\ prints a summary of all boundaries, including their exports and dependencies. Finally, \mix boundary.find\_external\_deps\ lists external application dependencies for each boundary, helping identify cross-boundary or external library usage.
lib/boundary/mix/tasks · high confidence
New mix tasks to visualize function and module dependencies
Two new Mix tasks are introduced to help users understand code structure through Graphviz DOT output. \mix boundary.visualize.funs\ analyzes a single module to visualize internal cross-function dependencies by forcing a recompile and tracing calls. \mix boundary.visualize.mods\ analyzes one or more specified boundaries to visualize cross-module dependencies, leveraging the compiler state to map references between boundaries.
lib/boundary/mix/tasks/visualize · high confidence
Removals
Removal of the boundaries compiler and checker
The \Boundaries.Checker\ module and the \Mix.Tasks.Compile.Boundaries\ compiler task have been removed from the codebase. This eliminates the compile-time verification of cross-module function calls against defined architectural boundaries, meaning the system no longer enforces or reports violations of module dependency rules during compilation.
lib/boundaries, lib/mix · high confidence
Behavioural changes
Add error page template and Ecto query usage in user controller
The demo application now includes a new error page template that invokes a custom application function, and the user controller has been updated to import Ecto.Query and utilize Ecto.Changeset and query syntax within its actions, enabling database interaction capabilities in this specific controller.
_demos/my\_system/lib/my\_system\web · high confidence
Boundary architecture enforcement and application module extension
The MySystem application now enforces architectural boundaries using the Boundary library, explicitly defining top-level status and allowed dependencies (MySystem, MySystemWeb) to structure the codebase. Additionally, a new \foo/0\ function has been added to the application module, which simply returns \:ok\.
_demos/my\_system/lib/my\system · high confidence
Boundary definitions now use \`use Boundary\` macro instead of external config files
The library has replaced the previous \Boundaries\ module (which parsed boundary definitions from external string/config files) with a new \Boundary\ module that uses the \use Boundary\ macro directly in application modules. This change moves boundary definitions into the codebase, allowing developers to specify dependencies, exports, and module classification (including mass exports and manual classification for mix tasks/protocols) directly within the module definitions, while the compiler task enforces these rules at compile time.
lib · high confidence
Migrate boundary definitions from external config to inline module attributes
The demo system has switched from using a centralized \boundaries.exs\ configuration file to defining boundaries directly within the Elixir modules using the \Boundary\ macro. This change moves dependency and export declarations (such as \MySystem\ exporting \User\ and \MySystemWeb\ exporting \Endpoint\) into the module definitions themselves, simplifying the project structure by removing the external configuration file.
_demos/my\system/lib · high confidence
Parallel boundary checking and new graph visualization support
Boundary now performs dependency and reference validation checks in parallel, significantly reducing the time required to verify boundary constraints in large codebases. Additionally, the library introduces a new Graph module that allows users to generate DOT-format diagrams of their boundary structure, making it easier to visualize dependencies and sub-boundaries.
lib/boundary · high confidence
Project renamed to Boundary and configuration syntax updated
The library has been renamed from 'Boundaries' to 'Boundary', reflected in the package name, module names, and configuration files (e.g., \boundaries.exs\ removed, \boundary\ compiler used). The configuration syntax has changed from a list-based format in \boundaries.exs\ to using the \use Boundary\ macro within modules. Additionally, the \:externals\_mode\ option is renamed to \type\, and \:extra\_externals\ is replaced by \check: \[apps: ...\]\. Global boundary options are now specified via \boundary: \[default: ...\]\ in the mix project config. The project also introduces Credo for style enforcement and updates the required Elixir version to 1.10+.
(repo-wide) · high confidence
Refactored boundary analysis with caching and incremental compilation support
The boundary analysis engine has been restructured to improve performance and reliability during compilation. A new \CompilerState\ GenServer now manages in-memory ETS tables for module metadata and references, persisting them to manifest files only when necessary (skipping writes on no-op recompiles). A dedicated \Classifier\ module uses a trie-based structure to efficiently map modules to boundaries, while the \View\ builder now loads cached boundary definitions and protocol implementations from the compiler state. This change enables incremental updates by refreshing only affected apps and dropping unused app data, reducing analysis overhead in large projects or umbrella applications.
lib/boundary/mix · high confidence
Removed legacy Mix.Config configuration file
The project has removed the legacy \config/config.exs\ file, which previously used the \Mix.Config\ module. This change indicates a migration away from the older configuration system, likely towards a newer configuration mechanism or a different build setup, as the file containing the old configuration directives has been deleted.
config · high confidence
Test coverage
Added compiler boundary tests; Added tests for Boundary mix tasks; Added tests for the Boundary Graph module; Added tests for visualize.funs and visualize.mods tasks; Refactored compiler and project test infrastructure.
Dependencies
Boundary library renamed and demo project updated with Elixir 1.10 and new dependencies
The core library has been renamed from \boundaries\ to \boundary\ (app \:boundary\), raising the minimum Elixir requirement to 1.10 and adding development tooling for documentation (\ex\_doc\), static analysis (\dialyxir\), and code style (\credo\). In the \my\_system\ demo, the compiler configuration was updated to use the new \:boundary\ name, the Elixir requirement was relaxed to 1.10, and new dependencies were added including \phoenix\_html\, \ecto\, and \telemetry\ (via \plug\_cowboy\), while removing \stream\_data\ from the lockfile.
(dependencies) · high 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 66 → 74 (+8.0)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 100 → 100 (+0.0)
- Architecture 100 → 97 (-3.0)
- Maturity 63 → 64 (+1.4)
- Readiness 54 → 67 (+13.4)
- Security 83 → 100 (+16.8)
Resolved (10)
- Coverage not included — suite not readable by the collector
- Dependency hygiene not measured — no supported dependency manifest was read
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- Medium CVE: EEF-[CVE redacted] (mix.lock)
- No exposed public API
- Off-boarding risk: anonymized user #1
- Test reliability not included
New (16)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- Leaked secret: signing-key (demos/my_system/config/config.exs)
- Medium CVE: EEF-[CVE redacted] (mix.lock)
- No dependency advisory monitoring
- Outdated: credo
- Outdated: dialyxir
- Outdated: ecto
- Outdated: ex_doc
- Outdated: jason
- Outdated: plug_cowboy
- Workflow token permissions not restricted
Changes since last survey
- 1 commits — 1 feature/other, 0 fixes
By area
- (root) — 1 commit
Notable commits
- change: Bump version
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
sasa1977/boundary 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 23 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 6e017814e745b93534b0e38e1f4ee62146228e02 — 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-955b9cee9818.