Repository navigation
feat(work-management): implement multi-repository project configurati… - #73
Merged
jacksonsr451 merged 1 commit intoOct 19, 2026
Merged
Conversation
jacksonsr451
deleted the
feat/44-multi-repository-project-configuration
branch
October 19, 2026 15:42
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Closes #44
Implements multi-repository project configuration for the EventFlow Work Management bounded context.
Projects can now be associated with multiple GitHub and GitLab repositories through stable remote identities, database-enforced deduplication, secure lifecycle management, and workspace-scoped authorization.
This PR establishes the domain and API foundation required for future GitHub and GitLab integration adapters (#27 and #28), without introducing remote synchronization or provider-side mutations.
Changes
Multi-Repository Project Configuration
Introduced
ProjectRepositoryLinkand theproject_repositoriespersistence model.Each project can maintain multiple remote repository associations across GitHub and GitLab.
Stable repository identity is defined by:
workspace_idproject_idproviderprovider_instance_idremote_repository_idThe provider instance identifies the hosting environment independently of installation IDs.
Repository names and URLs are treated as mutable metadata rather than authoritative identifiers.
Repository Identity and Deduplication
Implemented:
Duplicate associations return
REPOSITORY_ALREADY_LINKED.Archived repository identities cannot be silently re-linked and return
409 REPOSITORY_ARCHIVED.Association Lifecycle
Supported states:
activeinactivearchivedSupported operations:
Archival is terminal.
No remote repositories, branches, issues, or provider settings are modified.
REST API
Added five operations:
/v1/workspaces/{workspace_id}/projects/{project_id}/repositories/v1/workspaces/{workspace_id}/projects/{project_id}/repositories/v1/workspaces/{workspace_id}/projects/{project_id}/repositories/{repository_id}/v1/workspaces/{workspace_id}/projects/{project_id}/repositories/{repository_id}/v1/workspaces/{workspace_id}/projects/{project_id}/repositories/{repository_id}API capabilities include:
If-Matchoptimistic concurrency.Idempotency-Keyfor POST, PATCH, and DELETE.include_archivedfiltering.Updated OpenAPI and JSON Schema contracts with the
ProjectRepositoryDTOs andProject repositoriestag.Authorization and Security
Repository configuration mutations require Workspace Owner or Admin privileges.
Read access requires authorized Workspace membership.
Security guarantees include:
Audit Trail
Added append-only audit events:
project_repository.linkedproject_repository.updatedproject_repository.deactivatedproject_repository.reactivatedproject_repository.unlinkedAudit records contain repository identity and lifecycle metadata without exposing credentials or secrets.
PostgreSQL Migration
Added migration:
0010_project_repositoriesParent revision:
0009_entity_collaborationThe migration introduces:
project_repositoriestable.uq_project_repositories_identityuniqueness constraint.Migration upgrade, repeated upgrade, and downgrade tests passed.
The required
0009_entity_collaborationmigration is already present in the target branch.Testing
All reported local validation checks passed.
Nine new tests were added:
Additional validation:
git diff --checkpassed.The existing environment-dependent skipped test remains unchanged.
Acceptance Criteria
Scope Boundaries
This PR implements repository configuration only.
The following capabilities remain outside its scope:
Repository associations are configuration metadata, not evidence of an active provider connection or synchronization.
Known Limitations and Risks
Provider Verification
verification_status = verifiedremains unavailable until an authorized provider adapter performs remote verification.Archived Associations
Archived repository identities cannot be re-linked.
Restoration would require a future explicit lifecycle decision and implementation.
Row-Level Security
PostgreSQL RLS remains deferred.
Tenant isolation currently depends on application-level authorization and Workspace-scoped queries.
Migration Downgrade
The migration supports downgrade, but downgrading is not data-preserving for repository associations.
Provider Synchronization
No GitHub or GitLab synchronization is introduced.
Clients must treat associations as configuration metadata only.
Review Focus
Please review:
If-Matchenforcement.Git Information
Branch:
feat/44-multi-repository-project-configurationBase:
origin/mainat17f8d4fCommit:
bcccae2 feat(work-management): implement multi-repository project configuration (#44)Working tree: Clean at the time of local validation.
Local verification: 307 passed, 0 failed, 1 skipped.
Final Status
READY FOR PR
Issue #44 has been implemented and verified locally.
The implementation provides a secure, provider-neutral, PostgreSQL-backed foundation for linking multiple GitHub and GitLab repositories to EventFlow Projects.
Remote CI verification and code review remain pending.