Skip to main content

Repository and package boundaries

A workspace is a convenient checkout layout. It is not a shared build tree.

RepositoryOwnsBoundary
Seagull-contractsProtobuf schemas and committed Go bindingsNo component implementation
Seagull-backend-v2Admission, analysis, persistence, queries, administrationImports published contracts, never agent code
Seagull-agent-v2Endpoint runtime, installation state, keys; future collection and deliveryImports published contracts, never backend code
Seagull-frontend-v2Reserved V2 product interfaceREADME and license only in this baseline

Dependency direction

Connections: Backend to Versioned contracts; Agent to Versioned contracts.

  • Repository
  • Imports the published module

Backend executables under cmd/ select adapters and compose capabilities. Capability-owned ports express the infrastructure a capability needs. Domain packages do not import database drivers or the broker client. internal/platform holds product-independent configuration, logging, health, TLS, and lifecycle machinery.

The agent composition root alone imports its runtime. Collectors may not transitively reach HTTP, RPC, TLS, or key providers. Configuration does not open installation state or keys. Architecture tests enforce these boundaries across build tags, so OS-specific files cannot bypass them.

Independent releases

Both agent and backend currently pin contracts v0.14.0. This does not require simultaneous application releases. Contract compatibility and behavior must be verified with the exact release each component uses. Agent make gates set GOWORK=off; a local go.work is an optional development aid, not a release dependency.

Source evidence

Reviewed against the source baseline. Seagull-backend-v2/tests/architecture/dependencies_test.go · Seagull-agent-v2/tests/architecture/boundaries_test.go · Seagull-agent-v2/tests/architecture/ownership_test.go · Seagull-agent-v2/Makefile · Seagull-backend-v2/go.mod.