samuelgiles/graphwerk
69.2
Adequate · 22 September 2026
285
lines of production code
Ruby
primary language
7
measurements over time
What this system is
Graphwerk is a Ruby gem designed to visualize Packwerk package dependencies as directed graphs using Graphviz. It provides a configurable builder and presenter system to render package relationships, deprecated references, and todo edges with customizable styling. The tooling integrates with development workflows through Rake tasks, Nix-based environment management, and automated type signature generation.
Features
Add Nix source management via Niv
The project now uses Niv to manage Nix package sources. A new \nix/\ directory has been added containing \sources.json\ and \sources.nix\, which define the \nixpkgs\ repository (branch \nixos-21.05\) and provide a standardized way to fetch and pin external Nix dependencies.
nix · high confidence
Added binstubs for RuboCop and Tapioca
Executables for RuboCop and Tapioca have been added to the project's bin directory. This allows users to run these tools directly via the project's local environment, ensuring consistent versions and dependencies are used during development and CI.
bin · high confidence
Initial release of Graphwerk for visualizing Packwerk dependencies
The repository introduces Graphwerk, a Ruby gem that generates directed graphs of package dependencies using Graphviz. It includes configuration for Rubocop with Sorbet/RBS support, a Rake task to generate dependency diagrams, and development tooling via Nix and CI workflows. The default layout engine is set to Dot, and the project targets Ruby 3.3.6.
(repo-wide) · high confidence
Initial release of Graphwerk library
The Graphwerk library is introduced, providing a Ruby-based tool for generating and managing graph visualizations. The release includes a new constants module defining the root package name, a layout module that enumerates supported graph layout engines (Dot, Neato, Fdp, Sfdp, Twopi, and Circo), a parameterized loader class for handling package and file paths, and a Rails Railtie to automatically load Rake tasks. The library is released at version 1.3.0.
lib/graphwerk · high confidence
Introduce graph visualization builder with configurable layout and styling
A new Graph builder class has been added to generate GraphViz-based dependency graphs. Users can now customize the graph's appearance, including the layout engine (defaulting to Dot), colors for deprecated references and package todos, and a new option to hide todo edges entirely. The builder also enforces strict type checking via RBS comments and includes a safeguard to abort if a referenced package is not found in the graph.
lib/graphwerk/builders · high confidence
Introduce package presenter for graph rendering
Added a new \Package\ presenter in \lib/graphwerk/presenters/package.rb\ that formats package metadata for graph visualization. The class exposes package name, dependencies, deprecated references, and package todos, while assigning specific colors (black for root, azure4 for components) to distinguish them in the output graph.
lib/graphwerk/presenters · high confidence
Behavioural changes
Migrate Sorbet type signatures to RBS format
The project has migrated its Sorbet type signatures from the legacy \.rb\ format to the modern RBS (Ruby Signature) format. This change updates the \sorbet/rbi/gems/\ directory, generating \.rbi\ files for various gems (such as \actionview\, \activesupport\, \ast\, \base64\, \benchmark\, \better\_html\, \bigdecimal\, \builder\, \coderay\, and \concurrent-ruby\) using the \tapioca\ tool. This shift aligns the codebase with the standard RBS format for static type checking.
sorbet · high confidence
Test coverage
Added test coverage for the graphwerk library components; Added test fixtures for deprecated references and package todos.
Dependencies
Updated development dependencies and gemspec metadata
The project's development dependencies have been updated: 'bundler' is now constrained to version 2.0 or higher, and new development dependencies 'rubocop', 'rubocop-sorbet', 'spoom', and 'tapioca' (version 0.17 or higher) have been added. Additionally, the gemspec's homepage URL has been corrected to the 'samuelgiles' GitHub repository, and the 'shoulda-matchers' gem has been removed from the Gemfile.
(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 66 → 69 (+3.7)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 100 → 100 (+0.0)
- Architecture 69 → 69 (+0.0)
- Maturity 66 → 66 (+0.0)
- Readiness 58 → 63 (+5.4)
- Security 85 → 100 (+14.7)
Resolved (8)
- Coverage not included — suite not readable by the collector
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- High: security finding (details withheld)
- High: security finding (details withheld)
- No exposed public API
- Test reliability not included
- early-stage repository — too few commits for a meaningful bus factor
- early-stage repository — too little history to judge knowledge freshness
New (7)
- Banned license: ruby-graphviz
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- High: security finding (details withheld)
- High: security finding (details withheld)
- No dependency advisory monitoring
- Workflow token permissions not restricted
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
samuelgiles/graphwerk 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 22 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 010688e2ead8b8ffab0ba5473df8e343b4776779 — 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-821afab8930d.