Seam hygiene auditor - tracks, enforces, and detects drift in architectural boundaries.
Seambot is a governor and auditor, not a designer. It ensures that declared seams remain explicit, stable, and correctly exercised over time.
Seams are first-class architectural artifacts representing boundaries between components. They are not incidental - they are deliberate design decisions that encode:
-
Invariants: Rules that must hold across the boundary
-
Interfaces: Contracts between components
-
Isolation: What can and cannot cross
-
Register Verification - Validates seam register completeness
-
Conformance Checking - Ensures examples exist and are valid
-
Drift Detection - Detects changes to seam interfaces
-
Freeze Stamps - Validates stage freezes include seam state
-
Hidden Channel Detection - Basic heuristics for finding implicit dependencies
-
Multiple Output Formats - Text, JSON, Markdown, SARIF
seambot initThis creates:
-
spec/seams/seam-register.json- Machine-readable seam index -
spec/seams/seam-register.adoc- Human-readable documentation -
spec/seams/checklists/- Seam checklists -
spec/seams/conformance/- Conformance examples -
spec/seams/freeze-stamps/- Stage freeze stamps
seambot check
seambot check --strict # Fail on warnings
seambot check --format json --output report.json{
"version": "1.0",
"repository": "my-repo",
"seams": [
{
"id": "api-domain",
"name": "API to Domain Boundary",
"description": "Separates HTTP handlers from business logic",
"side_a": ["api"],
"side_b": ["domain"],
"seam_type": "layer",
"invariants": [
{
"id": "no-http-in-domain",
"description": "Domain layer must not depend on HTTP types",
"verification": { "type_system": null },
"severity": "error"
}
],
"frozen": false,
"ring": 0,
"checklist_path": "spec/seams/checklists/api-domain.adoc",
"conformance_paths": ["spec/seams/conformance/api-domain.adoc"]
}
]
}| Check | Description | Severity |
|---|---|---|
|
Seam register file exists |
Error |
|
Each seam has a checklist defined |
Warning |
|
Checklist file exists at declared path |
Error |
|
Each seam has conformance examples |
Warning |
|
Conformance files exist at declared paths |
Error |
|
Each seam has invariants defined |
Info |
|
Both sides of seam have components |
Warning |
|
Interface hasn’t changed from baseline |
Warning/Error (frozen) |
|
Freeze stamp exists for stage |
Error |
|
Register matches freeze stamp hash |
Error |
# .github/workflows/seam-check.yml
name: Seam Hygiene
on: [push, pull_request]
jobs:
seambot:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- run: cargo install seambot
- run: seambot check --format sarif --output results.sarif
- uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: results.sarifSeambot can be triggered by git-visor on repository events:
{
"hooks": {
"post-commit": ["seambot check --format json"],
"pre-release": ["seambot check --strict"]
}
}Seambot is part of the hyperpolymath bot ecosystem:
-
echidnabot - Repository health monitoring
-
oikos - Ecosystem orchestration
-
rhodibot - RSR compliance enforcement
-
seambot - Seam hygiene auditing
-
finishbot (planned) - Release readiness gating
-
No auto-generation of seams
-
No inference of architecture
-
No "AI design suggestions"
-
No cross-language semantic analysis
-
Never mutates code (metadata only, opt-in)
AGPL-3.0-or-later. See LICENSE.txt for details.