vignette/docs/ops/outcome-os-clean-release-manifest-2026-08-07.json
Yun Chan 16e791e044 G0~G8 성과·동맹 측정 OS 작업 일괄 고정
8월 7일까지 워킹트리에만 남아 있던 미커밋 작업을 커밋한다. 여러 사본
폴더(worktree·clone)에 흩어져 있던 중간 스냅샷을 정리하기 전에 원본을
git 이력으로 고정하는 것이 목적이다.

- contracts/routes/services: measurement, outcome_trajectory, rupture_repair,
  deliberate_practice, calibration_transfer, supervision_research,
  multimodal_alliance, continuous_improvement 계열 신규 모듈과 테스트
- infra/db/init: 07~16 마이그레이션(측정 기반~calibration transfer 실행)
- apps/web: 세션 리뷰 카드·관리 화면·E2E 스펙 추가
- docs/ops: G0~G8 라이브 통합·배포·롤백 증거 문서와 evidence JSON/PNG
- scripts: smoke·ledger·릴리스 에이전트·NAS 프리뷰 운영 스크립트

engine.public 로그 .bak과 apps/web/test-results 산출물은 커밋에서 제외했다.
2026-08-08 01:30:53 +09:00

719 lines
40 KiB
JSON

{
"schema_version": "1.0",
"manifest_id": "outcome-os-clean-release-2026-08-07",
"captured_at": "2026-08-07T12:36:00+09:00",
"repository": "D:/workspace/vignette",
"scope": {
"goals": [
"G0",
"G1",
"G2",
"G3",
"G4",
"G5",
"G6",
"G7",
"G8"
],
"selection_mode": "fail-closed",
"release_readiness": "blocked",
"decision": "G0-G8 내부 구현 후보와 무관 변경을 파일 단위로 분리한다. 혼합 파일은 자동 승격하지 않으며 명시적 hunk 검토 또는 깨끗한 재생성 전까지 릴리스 집합을 닫는다.",
"source_of_truth": [
"docs/dev_dashboard.html",
"docs/TODO.md",
"docs/ops/backlog-2026-06-26.md",
"docs/ops/vignette-outcome-alliance-os-agentic-plan-2026-08-06.md"
],
"ssot_snapshot": {
"G0-G6": "internal-done",
"G7": "internal-done-external-proof-blocked",
"G8": "done-isolated-nas-runtime-promoted"
}
},
"policy": {
"related": "현재 diff가 G0-G8 또는 이 릴리스 감사만으로 구성된 whole-file 후보다. 이 표시는 stage 또는 release 승인이 아니다.",
"mixed": "G0-G8과 무관 변경이 한 파일에 공존한다. disposition=hunk-review-required이며 release_eligible=false다.",
"excluded": "Outcome/Alliance OS 릴리스 범위 밖 변경이다. 사용자의 별도 작업으로 보존하며 이 릴리스에 포함하지 않는다."
},
"release_assembly": {
"status": "verified",
"base_commit": "76d0b9ae9bb11b62af86ccd9a55e798bbedc9e31",
"hunk_map": "docs/ops/outcome-os-release-hunk-map-2026-08-07.json",
"builder": "scripts/build-outcome-os-release-patch.py",
"output_patch": "docs/ops/evidence/outcome-os-release-only-2026-08-07.patch",
"patch_sha256": "a8c27b0aadcb9dacea86c4be5e62e19277b9cc2678ebca51aa02998d2c2d1a0d",
"patch_bytes": 4412868,
"patch_files": 304,
"api_generated_sha256": "5a2f6c1810af0d9405eb47e77b0ffa9305572b728ec975f78b9a1f55ac552163",
"deterministic_runs": 2,
"git_apply_check": "passed-on-clean-temporary-head",
"git_apply_cached_check": "passed-on-canonical-clean-index",
"patch_line_endings": "lf-only",
"artifact_publish": "atomic-replace-after-all-guards",
"source_worktree": "unchanged-except-output-patch",
"mixed_whole_files_release_eligible": false
},
"classifications": {
"related": [
{
"id": "shared-runtime-integration",
"goals": ["G0", "G1", "G2", "G3", "G4", "G5", "G6", "G7", "G8"],
"disposition": "candidate-whole-file",
"rationale": "G0-G8 라우터, 런타임 스키마, 회기 증거 UUID, 내부 토큰, 개발 E2E cohort와 공용 리뷰 표면을 연결하는 Outcome OS 통합 변경이다.",
"paths": [
"apps/api/app/config.py",
"apps/api/app/main.py",
"apps/api/app/routes/auth.py",
"apps/api/app/routes/sessions.py",
"apps/api/app/routes/voice.py",
"apps/api/app/runtime_schema.py",
"apps/api/app/services/orchestrator.py",
"apps/api/app/services/persona.py",
"apps/api/app/session_read_model.py",
"apps/api/app/test_auth_providers.py",
"apps/api/app/test_runtime_schema_ssot.py",
"apps/api/app/test_session_turn_persistence.py",
"apps/web/e2e/support.ts",
"apps/web/package.json",
"apps/web/src/App.tsx",
"apps/web/src/components/shell/Sidebar.tsx",
"apps/web/src/lib/api.ts",
"apps/web/src/pages/SessionReview.tsx",
"docs/ops/outcome-os-g0-g1-g3-local-hardening-evidence-2026-08-07.md"
]
},
{
"id": "g0-measurement-foundation",
"goals": ["G0"],
"disposition": "candidate-whole-file",
"rationale": "측정 계약, 원장, benchmark, 생성기와 계약 회귀 검증으로 G0 기반을 구성한다.",
"paths": [
"apps/api/app/contracts/measurement.py",
"apps/api/app/contracts/measurement_contract.v1.json",
"apps/api/app/data/outcome_alliance_benchmark_g0.v1.json",
"apps/api/app/routes/measurements.py",
"apps/api/app/services/measurement_legacy.py",
"apps/api/app/test_measurement_contract.py",
"apps/api/app/test_measurement_routes.py",
"apps/web/scripts/check-measurement-contract.mjs",
"apps/web/src/lib/measurementContract.ts",
"docs/decisions/outcome-alliance-measurement-ledger.md",
"docs/ops/evidence/measurement-migration-rehearsal-2026-08-07.json",
"docs/ops/evidence/measurement-provenance-census-live-2026-08-07.json",
"docs/ops/measurement-provenance-inventory-2026-08-06.md",
"infra/db/init/07_measurement_foundation.sql",
"scripts/check-measurement-ledger.sql",
"scripts/check-measurement-provenance-census.py",
"scripts/generate-measurement-contract.py",
"scripts/rehearse-measurement-migration.py",
"scripts/test_measurement_provenance_tools.py"
]
},
{
"id": "g1-alliance-pulse",
"goals": ["G1"],
"disposition": "candidate-whole-file",
"rationale": "Alliance Pulse 측정, 비동기 보정, 교수자 재평정, UI와 실제 DB/API 증거를 구성한다.",
"paths": [
"apps/api/app/services/alliance_calibration.py",
"apps/api/app/services/alliance_measurement.py",
"apps/api/app/test_alliance_calibration.py",
"apps/api/app/test_alliance_measurement.py",
"apps/web/e2e/alliance-pulse.spec.ts",
"apps/web/src/pages/session-review/AlliancePulseCard.tsx",
"apps/web/src/pages/session-review/alliance-pulse.css",
"apps/web/src/pages/session-review/alliancePulseApi.ts",
"docs/ops/alliance-calibration-report-2026-08-06.md",
"docs/ops/alliance-calibration-report-prompt-1.1.0-2026-08-06.md",
"docs/ops/alliance-calibration-report-prompt-1.1.0-retry2-2026-08-06.md",
"docs/ops/alliance-calibration-report-prompt-1.2.0-2026-08-06.md",
"docs/ops/alliance-pulse-live-integration-evidence-2026-08-06.md",
"docs/ops/evidence/alliance-calibration-candidate-2026-08-06.json",
"docs/ops/evidence/alliance-calibration-candidate-prompt-1.1.0-2026-08-06.json",
"docs/ops/evidence/alliance-calibration-candidate-prompt-1.1.0-retry2-2026-08-06.json",
"docs/ops/evidence/alliance-calibration-candidate-prompt-1.2.0-2026-08-06.json",
"docs/ops/evidence/alliance-calibration-comparison-2026-08-06.json",
"docs/ops/evidence/alliance-calibration-comparison-prompt-1.1.0-2026-08-06.json",
"docs/ops/evidence/alliance-calibration-comparison-prompt-1.1.0-retry2-2026-08-06.json",
"docs/ops/evidence/alliance-calibration-comparison-prompt-1.2.0-2026-08-06.json",
"docs/ops/evidence/alliance-pulse-live-prompt-1.2.0-2026-08-06.json",
"docs/ops/evidence/alliance-pulse-live-hardening-2026-08-07.json",
"scripts/check-alliance-pulse-ledger.sql",
"scripts/compare-alliance-calibration.py",
"scripts/run-alliance-calibration.py",
"scripts/smoke-alliance-pulse-api.py"
]
},
{
"id": "g2-outcome-trajectory",
"goals": ["G2"],
"disposition": "candidate-whole-file",
"rationale": "1-5회기 합성 성과 궤적의 계약, 저장소, API, UI, 원장과 실통합 증거다.",
"paths": [
"apps/api/app/contracts/outcome_trajectory.py",
"apps/api/app/data/outcome_trajectory_benchmark_g2.v1.json",
"apps/api/app/routes/outcome_trajectories.py",
"apps/api/app/services/outcome_trajectory.py",
"apps/api/app/services/outcome_trajectory_store.py",
"apps/api/app/test_outcome_trajectory.py",
"apps/api/app/test_outcome_trajectory_schema.py",
"apps/api/app/test_outcome_trajectory_store.py",
"apps/web/e2e/outcome-trajectory.spec.ts",
"apps/web/src/pages/session-review/OutcomeTrajectoryCard.tsx",
"apps/web/src/pages/session-review/outcome-trajectory.css",
"apps/web/src/pages/session-review/outcomeTrajectoryApi.ts",
"docs/ops/evidence/outcome-trajectory-live-five-session-2026-08-06.json",
"docs/ops/outcome-trajectory-live-integration-evidence-2026-08-06.md",
"infra/db/init/08_outcome_trajectory.sql",
"scripts/check-outcome-trajectory-ledger.sql",
"scripts/smoke-outcome-trajectory-api.py"
]
},
{
"id": "g3-rupture-repair",
"goals": ["G3"],
"disposition": "candidate-whole-file",
"rationale": "파열 시나리오, 감지·수선 상태기계, append-only 교정, UI 및 API/DB 검증을 구성한다.",
"paths": [
"apps/api/app/contracts/rupture_repair.py",
"apps/api/app/data/rupture_repair_benchmark_g3.v1.json",
"apps/api/app/routes/rupture_repairs.py",
"apps/api/app/services/rupture_repair.py",
"apps/api/app/services/rupture_repair_store.py",
"apps/api/app/services/rupture_runtime.py",
"apps/api/app/services/rupture_scenario_director.py",
"apps/api/app/test_rupture_repair.py",
"apps/api/app/test_rupture_repair_store.py",
"apps/api/app/test_rupture_runtime.py",
"apps/api/app/test_rupture_scenario_director.py",
"apps/web/e2e/rupture-repair.spec.ts",
"apps/web/src/pages/session-review/RuptureRepairCard.tsx",
"apps/web/src/pages/session-review/rupture-repair.css",
"apps/web/src/pages/session-review/ruptureRepairApi.ts",
"docs/ops/evidence/rupture-repair-live-api-2026-08-06.json",
"docs/ops/evidence/rupture-repair-live-three-state-2026-08-07.json",
"docs/ops/rupture-repair-live-integration-evidence-2026-08-06.md",
"infra/db/init/09_rupture_repair.sql",
"scripts/smoke-rupture-repair-api.py",
"scripts/smoke-rupture-repair-ledger.sql"
]
},
{
"id": "g4-deliberate-practice",
"goals": ["G4"],
"disposition": "candidate-whole-file",
"rationale": "의도적 수련 처방, 시도, 숙련도 갱신과 리뷰 UI 및 실제 원장 증거다.",
"paths": [
"apps/api/app/contracts/deliberate_practice.py",
"apps/api/app/data/deliberate_practice_benchmark_g4.v1.json",
"apps/api/app/routes/deliberate_practices.py",
"apps/api/app/services/deliberate_practice.py",
"apps/api/app/services/deliberate_practice_store.py",
"apps/api/app/test_deliberate_practice.py",
"apps/api/app/test_deliberate_practice_store.py",
"apps/web/e2e/deliberate-practice.spec.ts",
"apps/web/src/pages/session-review/DeliberatePracticeCard.tsx",
"apps/web/src/pages/session-review/deliberate-practice.css",
"apps/web/src/pages/session-review/deliberatePracticeApi.ts",
"docs/ops/deliberate-practice-live-integration-evidence-2026-08-06.md",
"docs/ops/evidence/deliberate-practice-live-api-2026-08-06.json",
"infra/db/init/10_deliberate_practice.sql",
"scripts/check-deliberate-practice-ledger.sql",
"scripts/smoke-deliberate-practice-api.py",
"scripts/smoke-deliberate-practice-ledger.sql"
]
},
{
"id": "g5-calibration-transfer",
"goals": ["G5"],
"disposition": "candidate-whole-file",
"rationale": "예측 잠금, 자기보정, 전이 평가, 역할별 투영과 리뷰 UI를 포함한 G5 구현·증거다.",
"paths": [
"apps/api/app/contracts/calibration_transfer.py",
"apps/api/app/data/calibration_transfer_benchmark_g5.v1.json",
"apps/api/app/routes/calibration_transfer.py",
"apps/api/app/services/calibration_transfer.py",
"apps/api/app/services/calibration_transfer_store.py",
"apps/api/app/test_calibration_transfer.py",
"apps/api/app/test_calibration_transfer_store.py",
"apps/web/e2e/calibration-transfer.spec.ts",
"apps/web/src/pages/session-review/CalibrationTransferCard.tsx",
"apps/web/src/pages/session-review/calibration-transfer.css",
"apps/web/src/pages/session-review/calibrationTransferApi.ts",
"docs/ops/calibration-transfer-live-integration-evidence-2026-08-06.md",
"docs/ops/evidence/calibration-transfer-live-api-2026-08-06.json",
"infra/db/init/11_calibration_transfer.sql",
"scripts/smoke-calibration-transfer-api.py",
"scripts/smoke-calibration-transfer-ledger.sql"
]
},
{
"id": "g6-supervision-research",
"goals": ["G6"],
"disposition": "candidate-whole-file",
"rationale": "감독 큐, 연구 projection, 불일치·drift 기록, UI와 내부/사람 API 증거를 구성한다.",
"paths": [
"apps/api/app/contracts/supervision_research.py",
"apps/api/app/data/supervision_research_benchmark_g6.v1.json",
"apps/api/app/routes/supervision_research.py",
"apps/api/app/services/supervision_research.py",
"apps/api/app/services/supervision_research_store.py",
"apps/api/app/test_supervision_research.py",
"apps/api/app/test_supervision_research_store.py",
"apps/web/e2e/supervision-research.spec.ts",
"apps/web/src/pages/SupervisionResearch.tsx",
"apps/web/src/pages/supervision-research.css",
"apps/web/src/pages/supervisionResearchApi.ts",
"docs/ops/evidence/supervision-research-live-api-2026-08-06.json",
"docs/ops/supervision-research-live-integration-evidence-2026-08-06.md",
"infra/db/init/12_supervision_research.sql",
"scripts/smoke-supervision-research-api.py",
"scripts/smoke-supervision-research-ledger.sql"
]
},
{
"id": "g7-multimodal-alliance",
"goals": ["G7"],
"disposition": "candidate-whole-file",
"rationale": "명시 동의, Deepgram 실시간 STT와 OpenAI batch fallback, 음성 파생 신호, 철회·삭제, fusion, 복구 UX와 리뷰 UI의 내부 구현·실DB 증거다. Deepgram live provider, 인증 공개 WSS, 물리 마이크, 50분 증거는 별도 gate로 남는다.",
"paths": [
"apps/api/app/contracts/multimodal_alliance.py",
"apps/api/app/data/multimodal_alliance_benchmark_g7.v1.json",
"apps/api/app/routes/multimodal_alliance.py",
"apps/api/app/services/multimodal_alliance.py",
"apps/api/app/services/multimodal_alliance_store.py",
"apps/api/app/services/voice.py",
"apps/api/app/test_multimodal_alliance.py",
"apps/api/app/test_multimodal_alliance_store.py",
"apps/api/app/test_voice_service.py",
"apps/api/app/test_voice_ws.py",
"apps/api/requirements.txt",
"apps/web/e2e/multimodal-alliance.spec.ts",
"apps/web/e2e/voice-success.spec.ts",
"apps/web/src/pages/session/voiceCapture.ts",
"apps/web/src/pages/session-review/MultimodalAllianceCard.tsx",
"apps/web/src/pages/session-review/multimodal-alliance.css",
"apps/web/src/pages/session-review/multimodalAllianceApi.ts",
"docs/ops/evidence/multimodal-alliance-live-api-2026-08-06.json",
"docs/ops/evidence/g7-external-voice-gate-audit-2026-08-07.json",
"docs/ops/outcome-os-g7-wss-soak-evidence-2026-08-07.md",
"docs/ops/multimodal-alliance-live-integration-evidence-2026-08-06.md",
"infra/db/init/13_multimodal_alliance.sql",
"scripts/smoke-multimodal-alliance-api.py",
"scripts/smoke-multimodal-alliance-ledger.py",
"scripts/soak-public-voice-websocket.py",
"scripts/soak-voice-websocket.py",
"scripts/test_g7_external_voice_soak.py"
]
},
{
"id": "g8-continuous-improvement",
"goals": ["G8"],
"disposition": "candidate-whole-file",
"rationale": "모니터 이벤트, incident DAG, 모델·콘텐츠·릴리스 gate와 관리자 cockpit의 내부 구현·실DB 증거다. 실제 배포와 공개 증거는 별도 gate다.",
"paths": [
"apps/api/app/contracts/continuous_improvement.py",
"apps/api/app/routes/continuous_improvement.py",
"apps/api/app/services/continuous_improvement.py",
"apps/api/app/services/continuous_improvement_store.py",
"apps/api/app/test_continuous_improvement.py",
"apps/api/app/test_continuous_improvement_store.py",
"apps/web/e2e/continuous-improvement-admin.spec.ts",
"apps/web/e2e/continuous-improvement-live.spec.ts",
"apps/web/src/pages/AdminContinuousImprovement.tsx",
"apps/web/src/pages/admin/ContinuousImprovementCockpit.tsx",
"apps/web/src/pages/admin/continuous-improvement.css",
"apps/web/src/pages/admin/continuousImprovementApi.ts",
"docs/ops/continuous-improvement-live-integration-evidence-2026-08-06.md",
"docs/ops/evidence/continuous-improvement-live-api-2026-08-06.json",
"infra/db/init/14_continuous_improvement.sql",
"scripts/smoke-continuous-improvement-api.py",
"scripts/smoke-continuous-improvement-ledger.sql"
]
},
{
"id": "g1-g4-g5-g7-self-directed-session-integration",
"goals": ["G1", "G4", "G5", "G7"],
"disposition": "candidate-whole-file",
"rationale": "실제 Session의 pre/mid alliance checkpoint, 코칭·전이 카드의 학습자 홈부터 새 회기까지 이어지는 typed launch contract, 역할 안전 음성 재연습과 desktop/mobile 통합 증거다.",
"paths": [
"apps/web/e2e/avatar-expression.spec.ts",
"apps/web/e2e/full-sweep-session.spec.ts",
"apps/web/e2e/layout-visual-gate.spec.ts",
"apps/web/e2e/learner.spec.ts",
"apps/web/e2e/session-layout.spec.ts",
"apps/web/e2e/session-mvp.spec.ts",
"apps/web/e2e/session-persistence.spec.ts",
"apps/web/src/lib/practiceLaunchIntent.ts",
"apps/web/src/lib/voicePracticeContext.ts",
"apps/web/src/pages/LearnerHome.tsx",
"apps/web/src/pages/Session.tsx",
"apps/web/src/pages/learner-home.css",
"apps/web/src/pages/session/AllianceCheckpointPrompt.tsx",
"apps/web/src/pages/session/alliance-checkpoint-prompt.css",
"apps/web/src/pages/session/session.css",
"apps/web/src/pages/session-review/session-review.css",
"docs/ops/evidence/g1-alliance-mid-chromium-desktop-2026-08-07.png",
"docs/ops/evidence/g1-alliance-mid-chromium-mobile-2026-08-07.png",
"docs/ops/evidence/g1-alliance-pre-chromium-desktop-2026-08-07.png",
"docs/ops/evidence/g1-alliance-pre-chromium-mobile-2026-08-07.png",
"docs/ops/outcome-os-g1-g4-g5-g7-self-directed-integration-evidence-2026-08-07.md"
]
},
{
"id": "engine-gateway-auth-and-nas-preview",
"goals": ["G0", "G1", "G2", "G3", "G4", "G5", "G6", "G7", "G8"],
"disposition": "candidate-whole-file",
"rationale": "NAS 격리 preview의 BuildKit 호환 ASCII 패키징, 비밀값 무출력 provisioning과 기동 경계, API→engine shared-secret 전달, 운영 설정 검증, 실브라우저 QA와 exact gateway dependency pin이다.",
"paths": [
".dockerignore",
".env.example",
"apps/api/app/engine_client.py",
"apps/api/app/test_runtime_policy.py",
"apps/api/engine_gateway/requirements.txt",
"docs/ops/evidence/nas-preview-learner-home-2026-08-07.png",
"docs/ops/evidence/nas-preview-learner-session-2026-08-07.png",
"scripts/provision-nas-preview-env.py",
"scripts/start-nas-preview-engine.ps1",
"scripts/test_provision_nas_preview_env.py"
]
},
{
"id": "g1-alliance-runtime-evidence",
"goals": ["G1"],
"disposition": "candidate-whole-file",
"rationale": "실제 회기의 pre/mid/post Alliance Pulse 상태전이와 append-only provenance를 기계 판독 가능한 증거로 고정한다.",
"paths": [
"docs/ops/evidence/alliance-pulse-pre-mid-post-live-2026-08-07.json"
]
},
{
"id": "g2-outcome-alert-producer",
"goals": ["G2"],
"disposition": "candidate-whole-file",
"rationale": "실제 G0 측정 원장에서 G2 악화 궤적과 단발 noise false alert를 구분하는 production observation smoke와 비식별 증거다.",
"paths": [
"docs/ops/evidence/outcome-trajectory-alerts-live-2026-08-07.json",
"scripts/smoke-outcome-trajectory-alerts.py"
]
},
{
"id": "g3-rupture-runtime-producer",
"goals": ["G3"],
"disposition": "candidate-whole-file",
"rationale": "실제 durable learner turn과 공용 finalizer에서 G3 episode·observation·reconciliation을 자동 생산하는 runtime smoke와 증거다.",
"paths": [
"docs/ops/evidence/rupture-runtime-auto-live-2026-08-07.json",
"scripts/smoke-rupture-runtime-auto.py"
]
},
{
"id": "g4-g5-session-learning-producer",
"goals": ["G4", "G5"],
"disposition": "candidate-whole-file",
"rationale": "종료 회기 평가와 prediction lock에서 durable 근거를 소비해 G4 처방과 G5 독립 관찰만 fail-closed 생산하고 자동 mastery·transfer 승격을 금지하는 caller와 실 DB 증거다.",
"paths": [
"apps/api/app/services/session_learning_producer.py",
"apps/api/app/session_persistence.py",
"apps/api/app/test_session_learning_producer.py",
"docs/ops/evidence/session-learning-producer-live-2026-08-07.json",
"docs/ops/outcome-os-g4-g5-production-caller-evidence-2026-08-07.md",
"scripts/smoke-session-learning-producer.py"
]
},
{
"id": "g6-ledger-and-version-producers",
"goals": ["G6"],
"disposition": "candidate-whole-file",
"rationale": "G0-G5 append-only 원장에서 G6 attention·curriculum·Phase 3 산출물과 repo-approved synthetic version 비교를 스케줄 생산하고 원문·임상 주장 누수를 차단하는 구현·회귀·실 DB 증거다.",
"paths": [
"apps/api/app/services/supervision_research_producer.py",
"apps/api/app/services/supervision_research_version_evaluator.py",
"apps/api/app/test_supervision_research_producer.py",
"apps/api/app/test_supervision_research_version_evaluator.py",
"docs/ops/evidence/supervision-version-comparison-producer-live-2026-08-07.json",
"docs/ops/outcome-os-g6-ledger-producer-evidence-2026-08-07.md",
"docs/ops/outcome-os-g6-version-comparison-producer-evidence-2026-08-07.md",
"scripts/smoke-supervision-version-comparison-producer.py"
]
},
{
"id": "g7-consent-concurrency-hardening",
"goals": ["G7"],
"disposition": "candidate-whole-file",
"rationale": "멀티모달 동의·철회 경쟁에서 추가 provider 전송과 파생 저장을 차단하는 G7 동시성 smoke다.",
"paths": [
"scripts/smoke-multimodal-consent-concurrency.py"
]
},
{
"id": "g8-agentic-production-worker",
"goals": ["G8"],
"disposition": "candidate-whole-file",
"rationale": "repo-approved synthetic source에서 generator·독립 red-team·variant judge를 실행하고 lease/retry와 human gate 앞 pending 상태만 durable 저장하는 G8 worker, 안전 필터, 회귀 및 실패 포함 증거다.",
"paths": [
"apps/api/app/data/continuous_improvement/synthetic_source_pack.v1.json",
"apps/api/app/data/continuous_improvement/synthetic_source_pack.v2.json",
"apps/api/app/data/continuous_improvement/synthetic_source_pack.v3.json",
"apps/api/app/data/continuous_improvement/synthetic_source_pack.v4.json",
"apps/api/app/data/continuous_improvement/synthetic_source_pack.v5.json",
"apps/api/app/services/continuous_improvement_agentic.py",
"apps/api/app/services/continuous_improvement_producer.py",
"apps/api/app/services/continuous_improvement_trigger.py",
"apps/api/app/services/guardrail.py",
"apps/api/app/test_continuous_improvement_agentic.py",
"apps/api/app/test_continuous_improvement_producer.py",
"apps/api/app/test_continuous_improvement_trigger.py",
"docs/ops/evidence/continuous-improvement-agentic-producer-answer-leakage-failure-2026-08-07.json",
"docs/ops/evidence/continuous-improvement-agentic-producer-live-2026-08-07.json",
"docs/ops/evidence/continuous-improvement-agentic-producer-live-failure-2026-08-07.json",
"docs/ops/evidence/continuous-improvement-agentic-producer-redteam-failure-2026-08-07.json",
"docs/ops/outcome-os-g8-agentic-worker-evidence-2026-08-07.md",
"scripts/smoke-continuous-improvement-agentic-producer.py"
]
},
{
"id": "g1-g4-g5-g7-self-directed-learning-loop",
"goals": ["G1", "G4", "G5", "G7"],
"disposition": "candidate-whole-file",
"rationale": " ··G4 , stage token, typed persona , desktop/mobile 9 .",
"paths": [
"apps/web/e2e/self-directed-learning-loop.spec.ts",
"apps/web/src/pages/learner-home/model.ts",
"apps/web/src/styles/tokens.css",
"docs/ops/evidence/self-directed-loop-active-session-320x568-chromium-mobile-2026-08-07.png",
"docs/ops/evidence/self-directed-loop-active-session-chromium-desktop-2026-08-07.png",
"docs/ops/evidence/self-directed-loop-active-session-chromium-mobile-2026-08-07.png",
"docs/ops/evidence/self-directed-loop-home-chromium-desktop-2026-08-07.png",
"docs/ops/evidence/self-directed-loop-home-chromium-mobile-2026-08-07.png",
"docs/ops/evidence/self-directed-loop-repractice-prestart-chromium-desktop-2026-08-07.png",
"docs/ops/evidence/self-directed-loop-repractice-prestart-chromium-mobile-2026-08-07.png",
"docs/ops/evidence/self-directed-loop-review-prescription-chromium-desktop-2026-08-07.png",
"docs/ops/evidence/self-directed-loop-review-prescription-chromium-mobile-2026-08-07.png",
"docs/ops/outcome-os-self-directed-learning-loop-ui-evidence-2026-08-07.md"
]
},
{
"id": "g7-runtime-and-external-proof-hardening",
"goals": ["G7"],
"disposition": "candidate-whole-file",
"rationale": " , metadata-only worker/Uvicorn high-water, exact topology sampler, public WSS v4 human-held-out voice-gain canonical four-artifact checker G7 . ·Deepgram key/quota·50 · gate .",
"paths": [
"apps/api/Dockerfile",
"apps/api/app/contracts/g7_external_evidence.py",
"apps/api/app/services/g7_voice_gain_evidence.py",
"apps/api/app/services/voice_runtime.py",
"apps/api/app/test_g7_voice_gain_evidence.py",
"apps/api/app/test_voice_runtime.py",
"docs/ops/outcome-os-g7-external-proof-readiness-2026-08-07.md",
"scripts/capture-g7-runtime-evidence.py",
"scripts/capture-g7-topology-evidence.py",
"scripts/check-g7-external-proof.py",
"scripts/test_g7_external_proof.py",
"scripts/test_g7_runtime_evidence.py",
"scripts/test_g7_topology_evidence.py"
]
},
{
"id": "agentic-plan-and-live-ssot-support",
"goals": ["G0", "G1", "G2", "G3", "G4", "G5", "G6", "G7", "G8"],
"disposition": "candidate-whole-file",
"rationale": "Outcome OS , , TODO··/ , NAS SSOT .",
"paths": [
"apps/web/e2e/dev-dashboard.spec.ts",
"docs/README.md",
"docs/TODO.md",
"docs/guides/local-development.md",
"docs/ops/backlog-2026-06-26.md",
"docs/ops/evidence/nas-preview-deployment-2026-08-07.json",
"docs/ops/evidence/nas-preview-live-turn-2026-08-07.png",
"docs/ops/nas-preview-deployment-evidence-2026-08-07.md",
"docs/ops/outcome-os-deploy-preflight-evidence-2026-08-07.md",
"docs/ops/outcome-os-g7-g8-visual-qa-2026-08-07.md",
"docs/ops/outcome-os-public-deployment-evidence-2026-08-07.md",
"docs/ops/video-c0schc1z71q-detailed-notes-2026-08-06.md",
"docs/ops/vignette-outcome-alliance-os-agentic-plan-2026-08-06.md",
"infra/.env.example",
"infra/README.md",
"infra/docker-compose.yml",
"scripts/check-deploy-preflight.py",
"scripts/check-dev-dashboard-ssot.py",
"scripts/provision-outcome-os-runtime-secrets.py",
"scripts/test_deploy_preflight.py",
"scripts/test_dev_dashboard_ssot.py",
"scripts/test_provision_outcome_os_runtime_secrets.py"
]
},
{
"id": "clean-release-governance",
"goals": ["release-governance"],
"disposition": "candidate-whole-file",
"rationale": " dirty 1:1 drift , clean NAS · · .",
"paths": [
"docs/ops/outcome-os-clean-release-manifest-2026-08-07.json",
"docs/ops/outcome-os-release-hunk-map-2026-08-07.json",
"docs/ops/evidence/outcome-os-release-only-2026-08-07.patch",
"scripts/build-outcome-os-release-patch.py",
"scripts/check-outcome-os-release-manifest.py",
"scripts/run-outcome-os-release-agent.py",
"scripts/test_outcome_os_release_agent.py",
"scripts/test_outcome_os_release_manifest.py"
]
}
],
"mixed": [
{
"id": "generated-api-contract-cross-task",
"goals": ["G0", "G1", "G2", "G3", "G4", "G5", "G6", "G7", "G8"],
"disposition": "hunk-review-required",
"release_eligible": false,
"rationale": "G0-G8 OpenAPI ·Claude token telemetry .",
"required_action": " API G0-G8 . hunk stage .",
"paths": ["apps/web/src/lib/api.gen.ts"]
},
{
"id": "dashboard-cross-task",
"goals": ["G0", "G1", "G2", "G3", "G4", "G5", "G6", "G7", "G8"],
"disposition": "hunk-review-required",
"release_eligible": false,
"rationale": "Outcome OS G0-G8 · X2 ·Claude token backfill SSOT .",
"required_action": "Outcome OS hunk , SSOT .",
"paths": ["docs/dev_dashboard.html"]
},
{
"id": "architecture-cross-task",
"goals": ["G0", "G1", "G2", "G3", "G4", "G5", "G6", "G7", "G8"],
"disposition": "hunk-review-required",
"release_eligible": false,
"rationale": "Outcome OS · LLM ·Claude diff .",
"required_action": "Outcome OS hunk telemetry hunk .",
"paths": ["docs/guides/architecture.md"]
},
{
"id": "admin-voice-runtime-cross-task",
"goals": ["G7"],
"disposition": "hunk-review-required",
"release_eligible": false,
"rationale": "G7 metadata-only voice runtime snapshot X2 ·Claude token telemetry admin.py diff .",
"required_action": "voice runtime import /admin/voice-runtime hunk exact hunk map X2 · telemetry hunk .",
"paths": ["apps/api/app/routes/admin.py"]
},
{
"id": "testing-cross-task",
"goals": ["G0", "G1", "G2", "G3", "G4", "G5", "G6", "G7", "G8"],
"disposition": "hunk-review-required",
"release_eligible": false,
"rationale": "G0-G8 ·Claude token live/backfill diff .",
"required_action": "Outcome OS hunk .",
"paths": ["docs/guides/testing.md"]
},
{
"id": "engine-gateway-auth-cross-task",
"goals": ["G0", "G1", "G2", "G3", "G4", "G5", "G6", "G7", "G8"],
"disposition": "hunk-review-required",
"release_eligible": false,
"rationale": "gateway shared-secret middleware X2 Claude token telemetry gateway.py diff .",
"required_action": "constant-time shared-secret /health hunk token/cost telemetry hunk .",
"paths": ["apps/api/engine_gateway/gateway.py"]
},
{
"id": "engine-gateway-auth-test-cross-task",
"goals": ["G0", "G1", "G2", "G3", "G4", "G5", "G6", "G7", "G8"],
"disposition": "hunk-review-required",
"release_eligible": false,
"rationale": "gateway X2 Claude usage·token test_gateway_model.py diff .",
"required_action": "shared-secret import token/cost telemetry hunk .",
"paths": ["apps/api/engine_gateway/test_gateway_model.py"]
}
],
"excluded": [
{
"id": "provider-pricing-and-claude-usage",
"goals": [],
"disposition": "exclude-from-outcome-release",
"rationale": " , Claude usage · X2 G0-G8 .",
"paths": [
"apps/api/app/services/claude_usage_backfill.py",
"apps/api/app/services/llm_pricing.py",
"apps/api/app/services/usage_report.py",
"apps/api/app/test_admin_ops.py",
"apps/api/app/test_claude_usage_backfill.py",
"apps/api/app/test_llm_pricing.py",
"apps/api/app/test_usage_report.py",
"apps/api/engine_gateway/provider_registry.py",
"apps/api/engine_gateway/test_provider_registry.py",
"apps/web/e2e/admin.spec.ts",
"apps/web/e2e/public-admin-visual.spec.ts",
"apps/web/src/pages/AdminAi.tsx",
"apps/web/src/pages/admin/admin-ai.css",
"docs/guides/source-docs-and-gaps.md",
"scripts/backfill-claude-token-usage.py"
]
},
{
"id": "transient-g7-visual-qa",
"goals": [],
"disposition": "exclude-from-outcome-release",
"rationale": " PNG. test-results NAS release payload .",
"paths": [
"apps/web/test-results/g7-voice-consent-desktop.png",
"apps/web/test-results/g7-voice-consent-mobile.png"
]
}
]
},
"release_gates": [
{
"id": "mixed-files-cleared",
"status": "satisfied-by-verified-release-patch",
"evidence_required": " release-only patch . mixed whole-file 4 stage .",
"evidence": "G7 hardening release SHA-256 a8c27b0aadcb9dacea86c4be5e62e19277b9cc2678ebca51aa02998d2c2d1a0d; consent ledger, metadata-only voice worker/Uvicorn high-water, public WSS v4, exact topology independent human-held-out four-artifact checker, DB-backed voice E2E ; admin.py G7 runtime import/endpoint exact hunk X2 ·Claude usage telemetry 34 hunk ; clean temporary HEAD canonical index git apply ."
},
{
"id": "g7-external-proof",
"status": "blocked",
"evidence_required": "scripts/check-g7-external-proof.py host· artifact : Deepgram key·quota live interim/final OpenAI TTS authenticated public WSS, 50 soak, admin metadata-only worker/Uvicorn queue high-water, exact image·container·cgroup/proc/Docker/TCP topology high-water, blind human-labeled held-out voice-gain benchmark. synthetic·preflight· short probe ."
},
{
"id": "g8-agentic-runtime-promotion",
"status": "satisfied-by-isolated-nas-release",
"evidence_required": " SHA NAS semantic runtime, browser SSEDB review, rollback snapshot exact-SHA SSOT handoff .",
"evidence": "latest release-only SHA a8c27b0aadcb9dacea86c4be5e62e19277b9cc2678ebca51aa02998d2c2d1a0d promoted to vignette-preview-20260807; API image sha256:79ec731f6bcdb79850507f5b711930a710e2d8e82276e3ea61dc8e4a60e04450; web image sha256:c530213f4f8b23f228b2999df0c3653173cfa6939b6abb476f17df7488462f28; health ok db/engine true; OpenAPI 124; auth 401; G0-G8; readiness attempts 3; clean candidate session E2E 24/24 and postdeploy browser SSE to DB-backed review passed; physical microphone false; prior G8 rollback rehearsal remains verified; docs/ops/nas-preview-deployment-evidence-2026-08-07.md"
},
{
"id": "g8-public-proof",
"status": "satisfied-by-public-release",
"evidence_required": " API/UI G8 release gate rollback .",
"evidence": "clean release API 8001 + Cloudflare Pages production; public OpenAPI 119 paths; G8 route 401 not 404; ops/outcome-os-public-deployment-evidence-2026-08-07.md"
},
{
"id": "aos-011-public-deployment-proof",
"status": "satisfied-by-public-release",
"evidence_required": " public API, asset, DB .",
"evidence": " deployment 3d53dc4b-2cd5-4422-805c-7c6e8a95d1a2 G7 deployment 6d7e89d5-a98c-4118-a0a4-fde77e1cc7c8; custom asset index-DZZoYvZq.js; prod/db/engine health; auth 401; OAuth 302+state"
},
{
"id": "aos-012-final-ssot-sync",
"status": "satisfied-by-final-checkers",
"evidence_required": " dev_dashboard, TODO, backlog .",
"evidence": "dev_dashboard, TODO, backlog, guide, release manifest synchronized; dashboard and release checkers green"
}
],
"captured_status": {
"dirty_files": 345,
"related": 321,
"mixed": 7,
"excluded": 17
},
"verification": {
"command": "py -3.11 -X utf8 scripts/check-outcome-os-release-manifest.py --json",
"result": "passed",
"executed_at": "2026-08-07T12:36:00+09:00",
"assertions": [
" git dirty path .",
"mixed hunk-review-required, release_eligible=false .",
"G0-G8 .",
"G7 gate blocked G8 · NAS SSOT sync ."
]
}
}