제6장
프로토콜 레코드는 홀로 존재하지 않는다. 이 장은 레코드 저장소를 실제 기관 안에 — 전자연구노트, 시료 관리 시스템, 시퀀싱 파이프라인, 기관 인증 시스템 옆에 — 놓고, 레코드가 시스템 경계를 넘을 때 의미를 잃지 않게 하는 전송 방식, 접근 규칙, 배치 형태, 교환 봉투를 정의한다.
제5장은 자신의 상태를 알고 그 상태에 이른 경위를 증명할 수 있는 저장소에서 끝났다. 그러나 그 저장소는 아직 닫힌 세계다. 실제로 유전자편집 연구를 수행하는 기관에서 프로토콜 레코드는 열 개 남짓한 시스템 사이에 놓인 하나의 문서이고, 그 시스템들은 저마다 프로젝트의 일부를 자기가 소유한다고 믿는다. 전자연구노트는 일상의 서술을 가지고 있고, 시료 관리 시스템은 어느 날 어떤 시료를 썼는지를 가지고 있으며, 시퀀싱 코어는 자체 파이프라인으로 결과 파일을 돌려주고, 연구지원 부서는 위원회 회의록을 보관하며, 기관 인증 시스템은 이 사람들이 누구인지를 결정한다. 통합이란 어느 시스템이 어느 사실의 주인인지를 정하고, 나머지는 복사본이 아니라 참조로 연결하는 작업이다.
이 장은 하나의 규율을 축으로 구성된다. 사실은 한 곳에서만 소유하고, 나머지에서는 참조한다. 6.7절에 열거한 통합 실패는 거의 전부 이 한 규칙을 — 그때그때의 타당한 이유로 — 어긴 결과다. 이 말을 앞에 두는 이유는, 그 반대편 선택(조회가 편하도록 이웃 시스템의 데이터를 프로토콜 레코드에 복사해 두는 것)이 통합처럼 보이지만 실제로는 레코드 저장소가 서서히 신뢰를 잃어가는 경로이기 때문이다.
첫 번째 통합 결정은 경계를 긋는 일이며, 이웃 시스템마다 한 문장으로 적어 두면 훨씬 덜 틀린다. 이 시스템이 X의 기록 주체이고, 프로토콜 레코드는 X의 식별자와 사람이 그것을 알아보는 데 필요한 최소한의 속성만 저장한다. WIA-BIO-014는 계획과 그 증거에 관한 표준이다. 시료 등록 시스템이 아니고, 서열 데이터 아카이브가 아니며, 문서 관리 시스템도 아니다. 이 중 어느 하나로 만들려는 시도는 표준이 실제로 잘하는 일에서의 품질을 떨어뜨린다.
프로토콜 레코드가 정당하게 소유하는 것을 보자. 제2장에서 정의한 집합 루트 — 식별자, 버전, 표적 정보, 전략·전달 필드의 타입 봉투, 검증 방법 행, 안전 점검 블록 — 을 소유한다. 제5장에서 정의한 생애주기 상태와 감사 추적을 소유한다. 제4장의 호출이 생산한 검증 결과를 소유한다. 이것으로 충분히 완결된 집합이다. 프로토콜 레코드만 가진 독자도 무엇이 계획되었고 누가 승인했으며 무엇이 주장되었고 어떤 증거 행이 기록되었는지를 말할 수 있다.
소유하지 않는 것도 그만큼 분명하다. 시료 관리 시스템이 추적하는 물리적 물질을 소유하지 않는다. 검증 행 뒤에 있는 시퀀싱 데이터를 소유하지 않는다. 소유하는 것은 그 행과 데이터셋을 가리키는 포인터다. 승인 문서를 소유하지 않고 5.2절이 정의한 참조만 소유한다. 사람을 소유하지 않고 인증 시스템이 발급한 안정적 주체 식별자만 소유한다. 아래 표는 대부분의 기관이 실제로 보유한 시스템에 대해 이 경계를 적은 것이다.
| 이웃 시스템 | 그 시스템이 기록 주체인 것 | 프로토콜 레코드에 저장되는 것 | 방향 |
|---|---|---|---|
| 전자연구노트(ELN) | 일상적 실험 서술, 자유 기술, 첨부물 | 실행 기록에 ELN 항목 식별자와 작성일. 서술 본문 자체는 저장하지 않는다 | 프로토콜 → ELN(ELN 항목이 프로토콜 id를 인용) |
| 실험실 정보관리 시스템(LIMS) | 시료의 동일성, 위치, 관리 연속성, 소모 이력 | 실행 기록에 LIMS 네임스페이스가 붙은 시료 식별자 목록 | 양방향 참조, 데이터 복사 없음 |
| 시퀀싱·결과 파이프라인 | 원시·가공 결과 파일, 런 식별자, 장비 메타데이터 | 데이터셋 식별자, 런 식별자, 그리고 해당 검증 행이 계산된 그 파일의 다이제스트 | 파이프라인 → 프로토콜(완료 시 검증 행 생성) |
| 연구지원·위원회 사무국 | 승인 문서, 회의록, 조건, 만료일 | 승인 참조 식별자, 발급 기관, 범위, 유효기간(5.2절) | 사무국 → 프로토콜(승인이 이벤트로 부착) |
| 기관 인증 시스템(IdP) | 사람, 소속, 그룹 구성원 자격, 인증 | 모든 감사 이벤트의 행위자 필드에 안정적 주체 식별자. 표시 이름은 읽는 시점에 조회 | IdP → 프로토콜(역방향 없음) |
| 문서·증거 저장소 | 서명된 증거 패키지, 매니페스트, 공표 산출물 | 패키지 다이제스트와 위치(제7장) | 프로토콜 → 저장소 |
네 번째 열에 한마디 덧붙일 필요가 있다. 흐름의 방향은 도식의 장식이 아니라, 두 시스템의 값이 어긋났을 때 누가 책임지는지를 정한다. 프로토콜 레코드가 인증 시스템을 읽기만 한다면, 감사 이벤트의 이름과 디렉터리의 이름이 다를 때 해결책은 디렉터리를 다시 읽는 것이고, 이벤트는 이름이 아니라 주체 식별자를 저장했으므로 여전히 옳다. 반대로 레코드 저장소가 인증 시스템에 쓰기도 한다면 — 예컨대 외부 심의위원 계정을 자체 생성한다면 — 디렉터리가 둘이 되고 어느 쪽이 옳은지 판정할 방법이 없어진다. 같은 논리가 표의 모든 행에 적용된다.
한 가지 경계를 명시적으로 덧붙인다. 이 장의 어떤 내용도, 여기서 설명하는 통합 설계의 어떤 부분도 실험 기법이나 생물학적 위해에 대한 판단이 아니다. 기술적 안전 판단은 기관생물안전위원회와 공식 생물안전·규제 지침의 소관이며, 소프트웨어의 역할은 그 기구들이 내린 결정을 기록하고 참조하고 보호하는 데 한정된다.
경계를 그으면 표준이 언급하지 않는 기반 요소 하나가 필요해진다. 해석기(resolver)다. 셋째 열의 모든 참조는 네임스페이스가 붙은 식별자이고, 브라우저로 프로토콜 레코드를 보는 사람은 그것을 눌러보고 싶어 한다. 오래 버티는 방식은 레코드에 URL을 저장하는 대신 네임스페이스:지역식별자를 URL로 바꿔 주는 작은 해석 서비스를 배치별로 구성하는 것이다. 벤더가 바뀌면 URL은 바뀌지만 식별자는 바뀌지 않는다. 죽은 벤더 URL로 가득한 레코드는 조달 주기마다 다시 써야 하는 레코드인데, 제3장의 불변성 규칙 때문에 그 고쳐 쓰기는 비싸다.
PHASE 문서의 "API Integration" 블록은 기준 URL https://api.wia-bio.org/crispr-protocol/v1, OAuth 2.0과 API 키 병용 인증, 시간당 1000요청의 속도 제한을 적고 있고, 같은 문서의 Annex J는 공유 OAuth 2.1 인증 제공자를 서술한다. 이 블록을 조용히 옮겨 적는 대신 세 가지를 분명히 해 둔다. 첫째, 저 기준 URL이 실제 서비스로 동작한다는 확인은 없으므로 그렇게 취급해서는 안 된다. 버전이 붙은 기준 경로의 예시일 뿐, 붙여서 쓸 엔드포인트가 아니다. 둘째, OAuth 버전이 본문과 부속서에서 다르므로 구현은 애매함을 물려받지 말고 의도적으로 택한 뒤 그 선택을 프로파일 매니페스트에 적어야 한다. 셋째, 속도 제한은 배치 매개변수이지 규범적 할당량이 아니다. 시간당 1000요청은 그럴듯한 예시 수치 이상은 아니다. 그 블록에서 실제로 쓸모 있는 것은 형태다. 버전이 붙은 기준 경로, 토큰 기반 인가, 그리고 명시되고 문서화된 한도. 이 절은 그 형태를 지역에서 구체화할 프로파일로 다룬다.
전송 표면은 레코드 모델에서 곧장 따라 나온다. 프로토콜 버전은 불변이므로(3.2절) 컬렉션은 추가 전용이고, 자연스러운 배치는 프로토콜 아래에 버전 컬렉션을 두고 검증 결과·감사 이벤트·승인 부착을 별도 컬렉션으로 두는 형태다. 호출의 의미론은 제4장이 소유한다. 여기서 중요한 것은 그 의미론이 HTTP 한 구간을 건너면서도 유지되는가이다.
GET /protocols?state=approved&target.gene=PLACEHOLDER&page=2
GET /protocols/{protocol_id} -> 최신 버전, ETag: "v4"
GET /protocols/{protocol_id}/versions -> 버전 목록, 최신순
GET /protocols/{protocol_id}/versions/{n} -> 불변, Cache-Control: immutable
POST /protocols -> 201 + Location, Idempotency-Key 필수
POST /protocols/{protocol_id}/versions -> 201, 현재 ETag에 대한 If-Match 필요
POST /protocols/{protocol_id}/validations -> 201, ValidationResult를 증거로 저장
GET /protocols/{protocol_id}/events?since={seq} -> 추가 전용 감사 피드
POST /protocols/{protocol_id}/transitions -> 200 또는 409(실패한 게이트 포함)
이 표면을 기관 환경에서 안전하게 만드는 전송 계층 규칙은 넷이다. 조건부 쓰기. 새 버전은 현재 엔티티 태그에 대한 If-Match로 생성하므로, 두 사람이 같은 초안을 동시에 수정하면 조용한 마지막-쓰기-승리 대신 412 Precondition Failed가 난다. 멱등성. 레코드 생성에는 클라이언트가 만든 멱등키를 실어, 타임아웃 후 재시도가 프로토콜을 하나 더 만드는 대신 원래 리소스를 돌려주게 한다. 중복 프로토콜은 실패한 요청보다 훨씬 비싸다. 자기 몫의 승인과 자기 몫의 증거를 획득해 버리기 때문이다. 커서 기반 이벤트 읽기. 감사 피드는 시간 구간이 아니라 시퀀스 커서로 소비한다. 시간 구간은 순서가 뒤바뀌어 도착한 이벤트를 조용히 빠뜨린다. 게이트 실패의 명시. 거부된 전이는 실패한 게이트의 식별자와 사유를 담은 충돌 상태로 응답해, 호출자가 "권한 없음" 대신 행동 가능한 무언가를 제시할 수 있게 한다.
대화형 사용자는 기관 인증 시스템으로 인증하고 레코드 저장소는 그 결과 토큰을 소비한다. 자체 비밀번호 데이터베이스를 두지 않는다. 기계 호출자 — 검증 행을 올리는 시퀀싱 파이프라인, 이벤트 피드를 읽는 리포팅 작업 — 는 자기 클라이언트 자격증명을 제시하는데, 대부분의 배치가 어긋나는 지점이 여기다. 네 개의 통합이 하나의 공용 서비스 계정을 쓰면 귀속이 파괴된다. 모든 감사 이벤트가 같은 말을 하게 되고 5.3절의 "누가"라는 질문에 답할 수 없어진다. 통합마다 자기 서비스 신원을 갖고, 필요한 최소 연산으로 범위가 제한되며, 감사 추적에 자기 이름으로 나타나되 그 통합을 책임지는 사람이 함께 기록되어야 한다.
API 키를 쓴다면, 대화형 토큰 교환을 수행할 수 없는 장수 배치 통합에 한한다. 그리고 다른 자격증명과 같은 의무를 진다. 소유자, 만료, 교체 절차, 그리고 발급·폐기 시의 감사 이벤트다. 만료 없는 키는 영구적이고 귀속되지 않는 행위자다.
PHASE 문서가 적은 보안 자세는 통상적이며, 적힌 수준에서는 반박할 것이 없다. 저장 시 AES-256, 전송 시 TLS 1.3, 역할 기반 접근제어, 다중요소 인증, 포괄적 감사 로깅이다. 저장·전송 암호화는 기본 사항이라 여기서 부연할 것이 없으나 운영상 한 가지는 짚어 둔다. 저장 암호화는 디스크와 백업의 도난을 막을 뿐 권한이 과한 계정을 막지 못하고, 연구 기록 시스템의 실제 사고는 거의 전부 두 번째 위협에서 나온다. 역할 모델은 바로 그것을 위해 있다.
관료제를 새로 만들지 않으면서 기관의 현실을 덮는 역할은 다섯이다. 제출자는 초안을 쓰고 수정하는 연구책임자 또는 위임받은 사람이다. 검토자는 제출물을 평가하는 위원 또는 지정된 심의 담당자다. 생물안전관리책임자(그 역할을 맡은 위원회 사무국 직원을 포함한다)는 승인 참조를 부착·해제하고 게이트를 운용한다. 감사자는 이벤트 로그를 포함해 모든 것을 읽고 아무것도 쓰지 않는다. 읽기 전용 역할은 상태를 바꿀 능력 없이 가시성만 필요한 동료, 리포팅 도구, 하류 통합을 담는다.
| 연산 | 제출자 | 검토자 | 생물안전관리책임자 | 감사자 | 읽기 전용 |
|---|---|---|---|---|---|
| 초안 생성, 자기 초안 편집 | 가능 | 불가 | 불가 | 불가 | 불가 |
심의 요청(draft → under_review) | 가능 | 불가 | 불가 | 불가 | 불가 |
| 자기 과제 레코드 전체 읽기 | 가능 | 배정된 경우 가능 | 가능 | 가능 | 범위에 따름 |
심의 결정 기록(게이트 G1에 따른 under_review → approved, 또는 draft로 반환) | 불가 | 가능 | 불가 | 불가 | 불가 |
| 승인 참조 부착·해제 | 불가 | 불가 | 가능 | 불가 | 불가 |
게이트 전이 수행(→ in_execution, → validated) | 요청만 | 불가 | 가능 | 불가 | 불가 |
실행 기록 항목 작성(in_execution 상태에서) | 가능(이름이 명시된 권한 보유 수행자) | 불가 | 불가 | 불가 | 불가 |
| 파이프라인에서 검증 행 등록 | 불가(서비스 신원) | 불가 | 불가 | 불가 | 불가 |
| 수정 버전 생성 | 게이트 전 가능 | 불가 | 가능 | 불가 | 불가 |
| 철회·대체 | 요청만 | 불가 | 가능 | 불가 | 불가 |
| 감사 이벤트 로그 읽기 | 자기 레코드 | 배정된 레코드 | 가능 | 전체 가능 | 불가 |
| 교환 봉투 내보내기(6.5절) | 요청만 | 불가 | 가능 | 불가 | 불가 |
| 삭제 | 불가 | 불가 | 불가 | 불가 | 불가 |
마지막 행은 제5장의 철학 전체를 권한으로 표현한 것이다. 어떤 역할도 삭제하지 않는다. 철회와 대체는 레코드와 그 이력을 그대로 둔 채 이루어지는 상태 전이이며, 정당한 제거는 보존 기간이 끝난 뒤의 처분뿐이다. 그 처분은 자기 승인과 자기 로그 이벤트를 갖춘 별도의 행정 절차로 수행된다. 응용 역할이 삭제를 할 수 있다면 감사 추적은 권위 있는 기록이 아니라 참고 자료로 내려앉는다.
몇몇 특정 필드에는 역할 수준 접근이 너무 거칠다. 자유 기술 설명 필드, 공동연구자 연락처, 그리고 기관이 민감하다고 지정한 필드는 레코드 수준 아래에서 제한되어야 하며, 프로토콜 구조에 정당한 읽기 권한을 가진 동료가 그것까지 자동으로 보게 해서는 안 된다. 구현 방식은 가림 표시와 함께 반환하거나, 생략하고 생략 사실을 선언하는 두 가지다. 후자가 낫다. "description": "[제한됨]"을 본 독자는 최소한 그 필드가 존재한다는 것을 알지만, 조용한 생략은 부분 레코드를 완전한 레코드처럼 보이게 하기 때문이다. 이 관례는 프로파일 매니페스트에 적어, 제휴 기관이 "없는 필드"의 뜻을 알게 한다.
명세의 연구윤리 절은 승인·동의·이중용도 고려와 나란히 데이터 프라이버시를 요구사항으로 열거하며 유전정보 보호와 안전한 저장을 명시한다. 이를 레코드 규칙으로 옮기면 좁고 엄격해진다. 피험자를 식별할 수 있는 정보와 개인 수준의 유전 데이터는 프로토콜 레코드에 들어가지 않는다. 인체 유래물이나 인간 대상 연구가 관련된 경우, 레코드는 동의를 소유한 시스템만이 발급하고 재식별할 수 있는 가명 식별자만을 싣는다. 이름도, 진료 번호도, 식별자로 기능하는 날짜도, 설명 필드의 임상 서술도 싣지 않는다.
이것은 단순한 방어적 작문이 아니다. 프로토콜 레코드는 공유되도록 설계된 문서다. 검토자에게, 제휴 기관에, 감사인에게, 그리고 끝내는 증거 패키지 안으로 들어간다. 여기에 들어온 개인정보는 그 배포 범위를 그대로 물려받는다. HIPAA, GDPR, 개인정보보호법 같은 체계는 이 사실을 중대하게 만드는 거버넌스 참조로서 여기 이름을 올린 것이지, 이 책이 해석하는 요구사항으로서가 아니다. 특정 과제에 그것들이 어떻게 적용되는지는 기관의 개인정보 담당 부서와 심의위원회가 판단할 사안이다. 공학적 규칙은 어느 체계 아래서도 같고, 그래서 한 번만 적으면 된다. 개인정보는 동의를 가진 시스템에 두고, 프로토콜에는 포인터만 둔다.
PHASE 문서의 Annex J는 네 가지 배치 형태를 서술하며, 이를 권고가 아니라 시험 벡터 검증에 사용한 토폴로지에 대한 비규범적 기술로 명시한다. 인프라 도식이 아니라 레코드 무결성 모델로 읽으면 이 넷은 실제로 유용하다. 각각이 두 질문의 답을 바꾸기 때문이다. 증거에 누가 서명하는가, 그리고 증거는 물리적으로 어떻게 현장을 떠나는가.
| 토폴로지 | 격리 모델 | 매니페스트 서명 | 증거 전달 | 레코드 무결성 측면의 귀결 |
|---|---|---|---|---|
| 단일 테넌트 엣지 | 기관당 런타임 하나, 공유 상태 없음 | 기관이 자기 매니페스트에 서명 | 수동 공표 | 귀속이 가장 단순하다. 추적 전체가 한 관리 영역 안에 있으므로 위험은 혼선이 아니라 운영상의 방치다 |
| 다중 테넌트 게이트웨이 | 공유 게이트웨이와 공유 인증 제공자 뒤의 헤더 기반 테넌트 격리 | 테넌트별 매니페스트 + 런타임이 만드는 연합 매니페스트 | 운영자가 공표 | 테넌트 신원이 모든 감사 이벤트와 모든 인가 판단에 포함되어야 한다. 테넌트 클레임의 누락은 곧 교차 테넌트 열람이다 |
| 연합 메시 | 디렉터리 서비스에 매니페스트를 공표하는 피어 런타임들 | 각 피어가 자기 것에 서명, 디렉터리가 집계 색인에 서명 | 디렉터리 경유 | 식별자가 전역적으로 해석 가능해야 하고 버전이 조정 가능해야 한다(6.5절). 지역적 유일성만으로는 부족하다 |
| 에어갭 배치 | 런타임에서 디렉터리로의 네트워크 경로 없음 | 런타임이 배치 단위로 증거 패키지에 서명 | 운영자가 기록된 주기에 따라 대역 외로 전달 | 무결성이 전적으로 사람의 절차가 실제로 수행되는지에 달린다. 내보내지 않은 배치는 외부의 누구에게도 보이지 않는다 |
표보다 중요한 관찰이 둘 있다. 첫째, 토폴로지는 선언된 속성이지 구현 세부가 아니다. Annex J는 구현이 자신의 토폴로지를 매니페스트에 선언하고, 토폴로지 변경은 새 매니페스트 서명으로 반영되어야 하며, 이전 매니페스트는 감사인이 과거 주장을 해석할 수 있도록 폐기 유예 기간 동안 유효하게 남는다고 적는다. 재서명 없이 단일 테넌트에서 다중 테넌트로 조용히 이전한 배치는, 누군가가 그 증거를 받아들였던 근거를 무효화한 것이다.
둘째, 다중 테넌트 행에는 연구 소프트웨어에서 가장 흔한 중대 결함이 숨어 있다. 헤더 기반 격리란 테넌트 신원이 데이터로 도착한다는 뜻이고, 데이터는 없을 수도, 위조될 수도, 기본값으로 채워질 수도 있다. 테넌트 클레임은 검증된 토큰에서 유도해야 하고, 기본값 없이 필수여야 하며, 각 핸들러가 아니라 데이터 접근 계층에서 강제되어야 한다. 테넌트 조건을 빠뜨린 조회 경로 하나면 게이트웨이 위의 모든 기관이 노출되기에 충분하고, 그런 조회는 대개 결과를 돌려주기 때문에 정상으로 보인다.
다기관 과제는 프로토콜을 어딘가로 보내야 한다. 본능적으로는 레코드를 보내게 되는데, 그 본능이 틀렸다. 내부 레코드에는 바깥에서 아무 의미가 없는 참조들 — 지역 시료 식별자, ELN 항목 키, 내부 피험자 식별자, 지역 디렉터리의 직원 주체 식별자 — 이 들어 있다. 경계를 넘는 것은 그 목적으로 만든 교환 봉투다. 가려진 프로토콜 버전, 검증 요약, 제휴 기관이 확인할 수 있는 형태의 승인 참조, 그리고 전체를 다이제스트로 묶고 보내는 기관이 서명한 매니페스트로 구성된다.
{
"envelope": {
"type": "wia-bio-014/exchange",
"standard_version": "1.0",
"sender": "PLACEHOLDER-INSTITUTION-A",
"recipient": "PLACEHOLDER-INSTITUTION-B",
"issued": "2026-03-04T09:12:00Z",
"purpose": "collaboration-review",
"expires": "2026-09-04T00:00:00Z"
},
"protocol": {
"source_id": "INSTA-CRISPR-2026-0007",
"version": "4",
"digest": "sha256:PLACEHOLDER_DIGEST_PROTOCOL",
"redaction_profile": "collab-v1",
"redacted_fields": [
{ "path": "parameters", "reason": "local operational detail" },
{ "path": "description", "reason": "free text, not reviewed for personal data" }
]
},
"validation_summary": {
"rows": 3,
"methods": ["PLACEHOLDER_METHOD_ENUM"],
"result_digests": ["sha256:PLACEHOLDER_DIGEST_RESULT_1"],
"datasets_referenced_not_included": true
},
"approvals": [
{
"reference": "PLACEHOLDER-A-IBC-2026-0031",
"issuing_body": "PLACEHOLDER-A Institutional Biosafety Committee",
"scope": "as recorded by the issuing body",
"valid_until": "2027-01-31",
"verification": "contact the issuing body; this envelope asserts the reference only"
}
],
"manifest": {
"members": ["protocol", "validation_summary", "approvals"],
"digest_algorithm": "sha256",
"signature": "PLACEHOLDER_DSSE_ENVELOPE"
}
}
이 봉투의 몇 가지 설계 선택은 의도적이다. redaction_profile은 이름이 붙고 버전이 매겨진다. 수신자가 무엇이 빠졌는지 짐작하는 대신 그 프로파일이 무엇을 제거하는지 조회할 수 있게 하기 위해서다. 그리고 redacted_fields는 제거마다 사유를 선언해, 제휴 기관이 "보내지 않음"과 "기록되지 않음"을 구별하게 한다. 검증 요약은 데이터셋을 포함하지 않고 참조만 한다. 대용량 결과 데이터는 그것을 소유한 시스템에 있어야 하고, 원본 파일이 필요한 제휴 기관은 별도로 접근을 협의한다. 승인 블록은 참조를 주장할 뿐 검증을 주장하지 않는다. 보내는 기관은 승인이 존재하며 발급 기관의 기록상 무엇을 포괄하는지까지만 말할 수 있고, 그것을 확인해 줄 수 있는 것은 발급 기관뿐이다. 그 이상을 함의하는 봉투는 자신에게 없는 권위를 지어내는 것이다. 마지막으로 봉투는 만료된다. 공유된 프로토콜은 스냅숏이고, 만료 없는 스냅숏은 몇 해 뒤에 현행인 양 인용된다.
제3장 3.2절은 기관 접두사가 붙은 식별자를 권했고, 그 권고가 값을 하는 자리가 교환이다. 수신자는 봉투를 자기 지역 식별자로 저장하고 송신자의 식별자는 외부 참조로 보관한다. 송신자의 식별자를 자기 것으로 채택하지 않고, 송신자의 레코드에 번호를 다시 매기지도 않는다. 두 기관이 각자 자기 식별자로 사본을 보유하되 둘 사이의 대응 관계를 기록해 두면 나중에 조정할 수 있다. 두 기관이 모두 자기 식별자가 정본이라고 결정했다면 조정할 수 없다.
교환된 프로토콜이 송신 기관에서 수정되면 제휴 기관은 낡은 스냅숏을 들고 있게 된다. 여기서 분산 합의를 시도하는 것은 잘못이며, 실제로 작동하는 규칙은 단일 작성자 + 통지다. 특정 프로토콜의 기록 작성자는 정확히 한 기관이고 그 사실이 봉투에 적히며, 다른 모든 보유자는 자기 사본을 읽기 전용으로 다룬다. 수정은 이전 봉투를 참조하는 새 봉투를 낳고, 수신자의 저장소는 둘을 연결해 옛 스냅숏을 읽는 사람이 더 나중 버전의 존재를 알게 한다. 제휴 기관이 갈라져야 한다면 — 다른 표적, 지역에 맞춰 바꾼 계획 — 받은 사본을 편집하는 대신 원본에 대한 출처 참조를 단 자기 자신의 프로토콜 레코드를 만든다. 계획을 파생한 것인가 계획을 공유받은 것인가라는 이 구별이, 재구성 가능한 다기관 과제와 어느 버전이 승인된 것인지를 두고 다투는 두 기관을 가른다.
표준 README의 통합 목록은 네 개의 형제 표준을 든다. 생물 시료 관리의 WIA-BIOBANK, 유전체 데이터 형식의 WIA-GENOMICS, 자동화 워크플로의 WIA-LAB-AUTOMATION, 의도 기반 설계 인터페이스의 WIA-INTENT다. 모든 경우에 관계는 조인 키이며, 6.1절의 규율이 예외 없이 적용된다. 프로토콜 레코드는 이웃의 식별자를 저장하고, 이웃이 기록 주체인 것은 저장하지 않는다.
시료 관리 표준과의 조인 키는 실행 기록에 실리는 시료 식별자다. 프로토콜은 시료의 출처·보관 이력·관리 연속성을 다시 적지 않는다. 그것들은 프로토콜이 작성된 뒤에도 바뀌므로 복사본은 즉시 틀린 값이 된다. 유전체 데이터 표준과의 조인 키는 데이터셋 또는 런 식별자와, 검증 행이 유도된 바로 그 파일의 다이제스트다. 프로토콜은 서열 페이로드를 저장하지 않는다. 실험실 자동화 표준과의 조인 키는 실행 또는 런 식별자이며, 자동화 시스템의 로그는 자동화 시스템에 남는다. 프로토콜로 돌아오는 것은 참조와, 해당되는 경우 완료 이벤트다. 의도·설계 인터페이스 표준을 채택한 경우 그것은 레코드의 상류에 놓여 출처를 기여한다. 지금 레코드에 저장된 값을 어느 도구가 어느 버전에서 생산했는가이다. 저장된 모든 점수가 그것을 생산한 도구와 버전을 인용해야 한다는 제2장의 규칙이, 그 출처를 나중에 쓸모 있게 만드는 장치다.
빈 저장소에서 시작하는 기관은 거의 없다. 기존 자료는 스프레드시트, ELN 페이지, 문서 폴더의 혼합이며, 일괄 임포트를 돌리고 적체를 이관 완료라고 선언하고 싶은 유혹이 있다. 그러나 원래부터 있던 레코드와 구별되지 않는 결과물을 만드는 이관은 감사 추적의 신뢰성을 파괴한다. 관측된 적 없는 이력을 주장하기 때문이다. 작동하는 순서에는 네 가지 성질이 있다.
record.migrated 이벤트를, 애초에 레코드가 아니었던 자료의 반입으로 넓힌 것이다. 2019년 프로토콜이 2026년에 스프레드시트에서 재구성되었다는 사실이 한눈에 보여야, 그 감사 추적이 무엇을 증명할 수 있고 무엇을 증명할 수 없는지 판단할 수 있다.recordedAt)과 사건 발생 시각(occurredAt)을 분리하는 것은 뒤늦은 기재가 드러나게 하기 위해서이며, 이관은 그 둘을 뭉개고 싶어지는 가장 큰 유혹이다.이관된 레코드는 준수 행태를 측정하는 모든 보고에서 제외하거나 별도로 식별해야 한다. 재구성된 이력과 관측된 이력을 섞는 대시보드는 허구를 보고하며, 그 허구는 언제나 기관에 유리한 방향이다.
통합은 레코드 표준이 자기 형태를 지키느냐, 주변 시스템 속으로 조용히 녹아 없어지느냐가 갈리는 지점이다. 방어 수단은 시스템별로 적어 둔 경계, 복사 대신 참조, 조용한 덮어쓰기와 중복 생성을 거부하는 전송, 아무도 삭제하지 않는 역할 모델, 바뀌면 다시 서명되는 선언된 토폴로지, 그리고 명시적으로 가리고 송신자가 실제로 책임질 수 있는 것만 주장하는 교환 봉투다. 제7장은 다음 걸음을 내디딘다. 제2장부터 제6장까지 선언한 모든 것 — 여기서 고른 토폴로지와 프로파일을 포함해 — 을, 그것을 만든 기관을 신뢰하지 않고도 제휴 기관이 확인할 수 있는 서명된 증거로 바꾸는 일이다.
과학·실험실 안전 내용에 관하여: 이 책은 기록·데이터 표준만을 다룬다. 실험 기법, 생물안전 등급의 실제 요구사항, 규제 해석에 관한 판단은 소속 기관의 기관생물안전위원회(IBC)와 기관생명윤리위원회(IRB), 그리고 공식 생물안전·규제 당국(질병관리청 및 LMO법 소관기관, WHO, NIH 지침, 자국 규제기관)에 문의할 사안이다.