Repository and package boundaries
A workspace is a convenient checkout layout. It is not a shared build tree.
| Repository | Owns | Boundary |
|---|---|---|
Seagull-contracts | Protobuf schemas and committed Go bindings | No component implementation |
Seagull-backend-v2 | Admission, analysis, persistence, queries, administration | Imports published contracts, never agent code |
Seagull-agent-v2 | Endpoint runtime, installation state, keys; future collection and delivery | Imports published contracts, never backend code |
Seagull-frontend-v2 | Reserved V2 product interface | README 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.