Non-negotiable structural rules that apply to every Claude Code session in
this repo and to every commit, enforced via three defense-in-depth layers:
1. PreToolUse hook in .claude/settings.json blocks any Write/Edit that
would push a file past the 500-line hard cap. Auto-loads for any
Claude session in this repo regardless of who launched it.
2. scripts/githooks/pre-commit (installed via scripts/install-hooks.sh)
enforces the LOC cap, freezes migrations/ unless [migration-approved],
and protects guardrail files unless [guardrail-change] is present.
3. .gitea/workflows/ci.yaml gets loc-budget + guardrail-integrity jobs,
plus mypy --strict on new Python packages, tsc --noEmit on Node
services, and a syft+grype SBOM scan.
Per-language conventions are documented in AGENTS.python.md / AGENTS.go.md /
AGENTS.typescript.md at the repo root — layering (router->service->repo for
Python, hexagonal for Go, colocation for Next.js), tooling baseline, and
explicit "what you may NOT do" lists.
Adds scripts/check-loc.sh (soft 300 / hard 500, reports 205 hard and 161
soft violations in the current codebase) plus .claude/rules/loc-exceptions.txt
(initially empty — the list is designed to shrink over time).
Per-service READMEs for all 10 services + PHASE1_RUNBOOK.md for the
backend-compliance refactor. Skeleton packages (compliance/{domain,
repositories,schemas}) are the landing zone for the clean-arch rewrite that
begins in Phase 1.
CLAUDE.md is prepended with the six non-negotiable rules.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
56 lines
1.7 KiB
Markdown
56 lines
1.7 KiB
Markdown
# ai-compliance-sdk
|
|
|
|
Go/Gin service providing AI-Act compliance analysis: iACE impact assessments, UCCA rules engine, hazard library, training/academy, audit, escalation, portfolio, RBAC, RAG, whistleblower, workshop.
|
|
|
|
**Port:** `8090` → exposed `8093` (container: `bp-compliance-ai-sdk`)
|
|
**Stack:** Go 1.24, Gin, pgx, Postgres.
|
|
|
|
## Architecture (target — Phase 2)
|
|
|
|
```
|
|
cmd/server/main.go # Thin entrypoint (<50 LOC)
|
|
internal/
|
|
├── app/ # Wiring + lifecycle
|
|
├── domain/<aggregate>/ # Types, interfaces, errors
|
|
├── service/<aggregate>/ # Business logic
|
|
├── repository/postgres/ # Repo implementations
|
|
├── transport/http/ # Gin handlers + middleware + router
|
|
└── platform/ # DB pool, logger, config, httperr
|
|
```
|
|
|
|
See `../AGENTS.go.md` for the full convention.
|
|
|
|
## Run locally
|
|
|
|
```bash
|
|
cd ai-compliance-sdk
|
|
go mod download
|
|
export COMPLIANCE_DATABASE_URL=...
|
|
go run ./cmd/server
|
|
```
|
|
|
|
## Tests
|
|
|
|
```bash
|
|
go test -race -cover ./...
|
|
golangci-lint run --timeout 5m ./...
|
|
```
|
|
|
|
Co-located `*_test.go`, table-driven. Repo layer uses testcontainers-go (or the compose Postgres) — no SQL mocks.
|
|
|
|
## Public API surface
|
|
|
|
Handlers under `internal/api/handlers/` (Phase 2 moves to `internal/transport/http/handler/`). Health at `GET /health`. iACE, UCCA, training, academy, portfolio, escalation, audit, rag, whistleblower, workshop subresources. Every route is a contract.
|
|
|
|
## Environment
|
|
|
|
| Var | Purpose |
|
|
|-----|---------|
|
|
| `COMPLIANCE_DATABASE_URL` | Postgres DSN |
|
|
| `LLM_GATEWAY_URL` | LLM router for rag/iACE |
|
|
| `QDRANT_URL` | Vector search |
|
|
|
|
## Don't touch
|
|
|
|
DB schema. Hand-rolled migrations elsewhere own it.
|