Skip to content

Workspace Mode

Certify’s workspace mode operates across multiple repositories organized as git submodules. Each submodule is certified independently, then results are aggregated into a workspace-level report.

Use --workspace when your project is composed of multiple git repositories linked as submodules — a common pattern for:

  • Monorepo-style workspaces with separate repos per service
  • Shared library architectures where libraries and consumers are separate repos
  • Platform teams managing multiple related components
Terminal window
cd your-workspace-root
certify init --workspace

This discovers all git submodules and runs certify init in each unconfigured one. It also creates a workspace-level .certification/ directory.

Terminal window
certify scan --workspace

Scans all configured submodules, discovering code units in each.

Terminal window
certify certify --workspace

Runs certification in each submodule. Uses the submodule’s own .certification/config.yml for policies and agent configuration.

Terminal window
certify report --workspace

Generates a workspace-level report card that aggregates results across all submodules:

🟢 Workspace: A- (91.2%)
Units: 1,247 · Passing: 1,230 · Failing: 17
api-service 🟢 A- 91.8% 612 units
shared-lib 🟢 A 94.2% 203 units
web-frontend 🟢 B+ 88.1% 432 units
Terminal window
certify architect --workspace

Runs a holistic architectural review that treats all submodules as components of a single system. See Architect Review → Workspace Mode.

Workspace mode uses git submodule status to find all submodules. Each submodule is checked for a .certification/config.yml — only configured submodules are processed.

Each submodule is certified independently with its own:

  • Configuration (.certification/config.yml)
  • Policy packs (.certification/policies/)
  • Records and state

The workspace doesn’t change how individual certification works.

The workspace report card computes:

MetricHow computed
Overall ScoreWeighted average by unit count
Overall GradeGrade from weighted average score
Total UnitsSum across all submodules
Pass RateTotal passing / total units

Submodules without certify configured are listed but excluded from score aggregation.

Workspace mode generates:

.certification/
├── REPORT_CARD.md # workspace-level aggregate card
├── reports/
│ ├── index.md # workspace report tree root
│ ├── api-service.md # per-submodule summary
│ └── shared-lib.md # per-submodule summary

Each submodule summary links to the submodule’s own full report tree.

The certify architect --workspace command goes beyond per-submodule analysis. It builds a WorkspaceArchSnapshot that includes:

  • Per-submodule architecture snapshots — package maps, dependencies, metrics
  • Submodule role classification — automatically detects service, library, or tool
  • Cross-submodule dependencies — detected from go.mod replace directives
  • Infrastructure files — workspace-level CI, Docker, build orchestration
  • Aggregate metrics — total units, weighted score, best/worst submodule

The 6-phase LLM review uses workspace-specific prompts that focus on system-level concerns: integration boundaries, shared library quality, deployment coupling, cross-submodule security surface.

Certify treats workspace-level files as infrastructure, not application code:

File TypeExamples
Build orchestrationJustfile, Makefile
CI/CD.github/workflows/*.yml
ContainerDockerfile, docker-compose.yml
Deploymentfly.toml, netlify.toml, vercel.json
Dev environmentTiltfile, Vagrantfile

These are listed in the architect review snapshot but not individually certified.

Command--workspace behavior
certify initInitialize all submodules
certify scanScan all configured submodules
certify certifyCertify all configured submodules
certify reportAggregate workspace report card
certify architectHolistic system-level review
certify expireExpire across all submodules