Dependency-direction guide
Bridge assemblies
Small outward packages that combine verified authorities without forcing domain owners to depend on Workflow, Provenance, snapshots, or downstream stages.
Why bridges exist
Nexus keeps domain ownership narrow. Screening should not depend outward on WorkflowExecution; Extraction should not depend on Workflow; Provenance should not need to know every workflow transition. A bridge references both owners, verifies the cross-module invariants, and emits a typed, digest-bound handoff.
A bridge does not become a generic service layer. It may connect exact accepted records. It must not invent missing authority, reconstruct truth from ids alone, or mutate either owner behind its back.
Bridge map
Deduplication + CorpusSnapshots + Screening
-- Screening.CorpusSnapshots --> exact Screening corpus
Screening + WorkflowExecution
-- Screening.WorkflowExecution --> human-task completion
Screening + FullText
-- Screening.FullText --> admitted candidate and conduct
WorkflowExecution + Provenance
-- WorkflowExecution.Provenance --> ResearchEvent
Extraction + Appraisal + Synthesis + WorkflowExecution
-- WorkflowExecution.ScientificRecords --> invalidation refScreening.CorpusSnapshots
ScreeningCorpusBindingAuthority converts one verified Deduplication result and one verified corpus snapshot into an exact Screening membership binding. It verifies source-result identity, group representatives, member coverage, unresolved candidate digests, no duplicates, and complete coverage.
CreateConductPolicy then creates a locked Screening candidate set whose source refs bind the result, snapshot, decision set, and corpus-binding digest. Strict canonical rehydration rejects unknown fields, noncanonical ordering, altered membership, and stale source bindings.
Authority: ADR 0033. Tests: unit and conformance fixtures.
Screening.WorkflowExecution
ScreeningWorkflowExecutionBridge can create a Workflow decision reference only for a decision already accepted by the supplied Screening journal. The Workflow actor must be the same authorized human actor, role, and kind.
Human-task completion additionally requires matching Protocol authority, an active compiled human-task node, and one open attempt. The resulting event moves that exact node from Active to Completed and binds the Screening decision digest.
Screening.FullText
This bridge has two responsibilities. VerifiedFullTextAdmission admits only a candidate with a current include title/abstract outcome, exact current decision digests, and a current handoff from the same conduct and policy. It produces the verified FullTextInput binding.
FullTextScreeningConductPolicy, header, decision, invalidation, journal, handoff, and canonical codec implement the Full Text screening stage. They require verified artifacts/extractions and preserve reviewer/adjudicator authority, conflict replay, invalidation, and handoff readiness.
Authority: ADR 0032. Tests include FullTextAdmissionTests plus FE-05 conduct and conformance coverage.
WorkflowExecution.Provenance
WorkflowExecutionProvenanceProjector.Project accepts only an event present in the supplied verified journal and matching its execution, Workflow, and Protocol header. It projects deterministic activity names, subject, actor, chain-head input, record refs, approvals, decision, invalidation, successor, and the event itself into one ResearchEvent.
The event digest deterministically supplies the provenance id, and event time supplies the fixed clock. The bridge projects accepted history; it cannot append to either journal or manufacture an execution event.
WorkflowExecution.ScientificRecords
VerifiedScientificRecordInvalidationBinding.Create combines optional Extraction, Appraisal, and Synthesis invalidations only when all supplied records bind one exact Protocol amendment.
Targets must be unique valid digests and at least one affected Workflow node is required. The result emits one WorkflowExecutionRecordRef; it does not create, infer, or apply any package-owned invalidation.
Authority and tests: ADR 0034 and FE-07 authority replay.
Extension rules and nonclaims
Add a bridge only when two accepted owner contracts must meet and a dependency from either owner would point outward or create a cycle. Keep its API focused on verified objects, exact digests, and one handoff. Add architecture tests for the allowed dependency set.
These assemblies are not plugins, event buses, dependency-injection containers, persistence adapters, or security boundaries. They make no broad PHP compatibility claim and never transfer scientific authority to a renderer or workflow engine.