본문으로 이동
문서 탐색Trajectory 게시
가이드How-to

Trajectory 게시

정본 session history를 export하고, 공개 후보를 검토한 뒤 immutable release로 staging하고 artifact 저장소에서 다시 읽은 바이트를 검증합니다.

이 절차는 로컬 실행 기록을 공개 증거로 승격합니다. 게시 대상은 append-only Git/PR 저장소인 geode-eval-artifacts입니다. 전체 artifact 트리를 복사하지 않고 검토된 trajectory release 디렉터리 하나만 게시합니다.

1. SQLite 정본에서 export

geode session export-trajectory session-123 \
  --out trajectory-local.json \
  --sil-eval run.eval \
  --digest-content

--sil-eval은 Inspect .eval의 SHA-256을 evidence_refsartifact_digests에 연결합니다.--digest-content는 비허용 payload body를 digest로 바꾸므로 결과가 scope-complete여도 replay-incomplete일 수 있습니다. SIL 실행에서만 --sil-eval을 지정합니다.

이 명령의 결과는 privacy.review_state=local인 로컬 artifact입니다. staging 명령은 이를 자동으로 승인하지 않습니다.

2. 별도의 공개 후보 검토

산출물역할규칙
trajectory-local.json로컬 export보존하며 직접 공개하지 않음
trajectory-public.jsonallowlist 기반 공개 후보공개 바이트를 검토한 뒤 privacy.review_state=reviewed로 표시
privacy-review.jsonrelease 범위 attestationscope가 CLI --scope와 정확히 같아야 함

공개 후보에서 로컬 경로, 사용자 식별자, credential, raw prompt/tool body를 검토합니다. sealed Crucible pack, 선택 row identity, selection salt, 환경 파일은 공개 후보에 넣지 않습니다. 검토는 실제 공개 바이트를 대상으로 하며 review_state 값만 바꾸는 행위를 허용하지 않습니다.

{
  "reviewer": "release owner or review team",
  "reviewed_at": "2026-08-01T12:00:00Z",
  "method": "allowlist review plus secret and identity scan",
  "scope": "campaign-2026-08-01",
  "attestation": "Only the declared normalized trajectories are approved."
}

staging은 이 다섯 필드를 canonicalize한 뒤record_sha256을 계산합니다. trajectory 자체의 privacy review와 release 범위 review 둘 다 필요합니다.

3. 공개 release staging

geode session stage-trajectory-release trajectory-public.json \
  --destination /tmp/geode-trajectory-releases \
  --source sil \
  --scope campaign-2026-08-01 \
  --privacy-review privacy-review.json \
  --source-artifact run.eval=/absolute/path/to/run.eval \
  --allow-replay-incomplete
게이트조건
Scope모든 trajectory의 scope_complete=true
Replay기본 replay_complete=true; private body digest인 검토본만 --allow-replay-incomplete
Source bytes모든 artifact_digests.path에 대응하는 --source-artifact REF=PATH와 SHA-256 일치
Identitytrajectory ID와 release 경로가 고유하며 기존 디렉터리를 덮어쓰지 않음
Privacyreviewed 상태, 구조화 attestation, secret/identity scan 0건

--allow-replay-incomplete는 scope 누락을 허용하지 않습니다. source artifact는 digest 검증에만 사용되며 자동으로 공개 디렉터리에 복사되지 않습니다.

4. 로컬 검증과 append-only PR

새 release의 manifest.json SHA-256을 staging 디렉터리 밖에 기록한 뒤 검증합니다.

geode session verify-trajectory-release <release-dir> \
  --expected-manifest-sha256 <digest-recorded-before-copy>
  1. geode-eval-artifacts의 새 branch/worktree를 만듭니다.
  2. content-addressed release 디렉터리 하나만 복사합니다.
  3. PR에서 manifest, 공개 바이트, privacy attestation을 리뷰합니다.
  4. 병합 후 exact merge commit에서 release를 새 디렉터리로 다시 읽습니다.
  5. 복사 전에 기록한 manifest SHA-256으로 같은 검증 명령을 다시 실행합니다.
  6. 점수·문서에는 불변 merge commit의 blob/tree 링크를 기록합니다.

staging 디렉터리를 한 번 더 읽는 것은 remote read-back 증거가 아닙니다. 병합된 원격 바이트를 독립적으로 내려받아야 합니다.

5. SIL·Crucible authority

모든 external reference는 kind, schema_id,authority, reference를 가지며 파일을 가리키면pathsha256을 함께 둡니다.

Reference생성 조건정본
sil_eval / inspect_ai.eval@nativeexport-trajectory --sil-evalInspect .eval score와 SIL mutation/attribution ledger
native_receipt / tau2.results@nativetau2 결과 export마다tau2 results.json
crucible_evidencefrozen contract ID와 identity preflight가 모두 존재할 때만crucible.evidence.v3, experiment contract, executable verifier

GEODE release manifest는 verdict를 소유하거나 candidate를 승격하지 않습니다. 외부 루프는 PostVerify의 typedevidence_refs로 이 정본들을 연결하고 accept/revise/escalate만 결정합니다.

Schema 정본

실패 시 확인

  • not scope-complete: missing correlation, ordinal gap, orphan tool result를 먼저 수정합니다.
  • not replay-complete: 실제 privacy reduction인지 확인한 뒤에만 명시적 waiver를 사용합니다.
  • source digest mismatch: trajectory가 참조한 원본 바이트를 매핑합니다.
  • privacy scan failed: finding을 지운 새 public candidate를 만들며 기존 release를 덮어쓰지 않습니다.