C-001 검토 증거를 갱신

This commit is contained in:
Yun Chan 2026-08-28 21:14:40 +09:00
parent 081d9d70fb
commit 8e58e244ad
6 changed files with 55 additions and 55 deletions

View file

@ -15,9 +15,9 @@
> **개선관리 워크북(2026-08-28)** — C-002·C-003과 REQ-001~008은 내부 기술 구현 DONE이며 live clean
> `2a396361…89c`/Pages `1f1ddf18…e646`, recovery task `99779a6a…fbc8`, generic Google callback,
> 공개 P20 생성→응답→종료→평가 폐루프까지
> 운영 실증했으므로 열린 백로그에 중복하지 않는다. C-001은 6개 합성 사례·스키마·상태별 판정기와 자동 안전
> 게이트의 기술 사전검증까지 완료됐다. 사례별 외부 판정과 검토자·소속 기관·검토일·결정·증거/해시·검토본
> 고정값이 없어 B4 외부 GATE로 유지하며, 전부 기록되기 전에는 완료로 닫지 않는다.
> 운영 실증했으므로 열린 백로그에 중복하지 않는다. C-001은 v2 합성 사례 6건·상태별 canonical 판정기와 자동
> 안전 게이트의 기술 사전검증까지 완료됐다. 사례별 5필드 30개·청소년 답변 6개·검토자 이름/소속/자격을 포함한
> 승인 10필드와 서명 증거가 없어 B4 외부 GATE로 유지하며, `review_complete=true` 전에는 완료로 닫지 않는다.
>
> **Outcome & Alliance OS** — 2026-08-06 정식 전략 실행 트랙으로 승격했다. G0 Measurement Truth, G1
> 현재 소스·실행 증거 재감사에서는 G0~G6과 G8이 DONE이다. G1 승격 prompt 1.2+read-skew/JSON 복구는 24/24 ready·방향 9/9·오류 0을 재확인했고, G0 census 29/29·위반 0, G4/G5 실제 API/DB/브라우저 폐루프, G6 safety metadata-only 최우선 runtime을 disposable clone에서 확인했다. G8은 실제 receipt-bound image rollback 2회(`nas-g8-723eeef2…`/`nas-g8-2738846c…`)에 더해 source HEAD `61a41d1f…6af`·tree `87dec55d…3b77`·archive `4d15d055…119d4d`의 candidate 112/112와 실제 NAS 평문 origin 112/112를 통과했다. 과거 `6030a677…c611`의 UUID 24건 실패와 후속 SHA 결함 rollback은 이력으로 보존하며 현재 완료 증거로 재사용하지 않는다. G7 Multimodal Alliance는 내부 구현 DONE과 외부 proof GATE를 분리한다. detached-clean public `a73bcd24…`·OpenAPI 126·`local_whisper`/`melotts` ready·authenticated WSS 무마이크 rehearsal까지 완료했고, 명시 동의 물리 마이크 3,120초·독립 라벨 voice-gain benchmark·동시 topology high-water를 추적한다. 외부 Deepgram/OpenAI adapter는 fallback으로 보존한다. G0~G8과
@ -162,12 +162,12 @@
## B4. 외부 거버넌스 — 한신대/데이터 steward 서면 증거
- [ ] **C-001 자살사고 케이스 위기 반응 프로토콜 임상 승인** — SAMHSA SAFE-T, NIMH Youth Outpatient
BSSA, NICE NG225, 보건복지부 109를 반영했다. P1 합성 사례 6건·스키마·상태별 fail-closed 판정기와
BSSA, NICE NG225, 보건복지부 109를 반영했다. P1 합성 사례 6건·v2 스키마·상태별 canonical fail-closed 판정기와
런타임/carry-over/output `ideation_stage <= 3` 이중 방어를 포함한 기술 사전검증은 완료했다. 생성·스트림
실제 경로 P1 6/6과 확장 경계 50건, 런타임 패키지 SHA 일치까지 확인했고, 개선관리 완료본의
`C-001 외부검토` 시트는 외부 입력이 없으면 `검토`로 닫힌다. 사례별 판정,
임상 검토자 이름·소속 기관·검토일·결정·서면 증거/해시·검토 프로토콜 버전·사례 세트 해시가 모두 기록되고
판정기가 통과하기 전에는 완료로 닫지 않는다. 검토 원장:
실제 경로 P1 6/6, focused 90 passed, 런타임 패키지·작업트리 SHA 일치까지 확인했고, 개선관리 완료본의
`C-001 외부검토` 시트는 현재 `pending-valid`·`검토`다. 사례별 판정·근거·수정 요구·재검토·검토일 30개,
청소년 특화 답변 6개, 임상 검토자 이름·소속 기관·자격·검토일·결정 근거·서면 증거/해시·검토 프로토콜 버전·
사례 세트 해시가 모두 기록되고 canonical 판정기가 `review_complete=true`를 반환하기 전에는 완료로 닫지 않는다. 검토 원장:
`docs/ops/clinical-crisis-protocol-review-2026-08-27.md`.
- [ ] **한신대 데이터/SSO 거버넌스 게이트** — SSO claim mapping, 추가 축어록 수급, 미성년 원본 활용동의, 개인정보
처리방침. 로컬 골격 `docs/ops/hanshin-data-governance-gate.md` 준비됨, 외부 서면 증거 필요. (소유자 보류 중.)

View file

@ -1,21 +1,26 @@
{
"evidence_id": "c-001-clinical-technical-preflight-2026-08-28",
"generated_at": "2026-08-28T11:20:32Z",
"base_commit": "f63e12999b0248dfc3e71ec22c2a1b5549454934",
"worktree_boundary": "이 증거는 아래 파일 해시와 f63e1299 런타임 패키지에 고정된 내부 기술 사전검증이다. 외부 임상 검토나 승인을 대신하지 않는다.",
"generated_at": "2026-08-28T12:04:06Z",
"base_commit": "081d9d70fb4a831412ceb937a976c9bb56906047",
"worktree_boundary": "이 증거는 아래 파일 해시와 081d9d70 런타임 패키지에 고정된 내부 기술 사전검증이다. 외부 임상 검토나 승인을 대신하지 않는다.",
"scope": "P1 합성 자살사고·자해 신호 훈련의 기계 판독 검토 패킷, 런타임 안전 상한, 공식 source pack",
"status": {
"technical": "verified",
"clinical": "pending_external_review",
"review_complete": false,
"case_count": 6,
"case_decisions_recorded": 0,
"case_assessment_fields_recorded": 0,
"youth_review_responses_recorded": 0,
"external_review_replaced": false
},
"clinical_approval": {
"reviewer": null,
"organization": null,
"reviewer_role_or_qualification": null,
"reviewed_at": null,
"decision": null,
"notes": null,
"evidence_ref": null,
"evidence_sha256": null,
"reviewed_protocol_version": null,
@ -25,8 +30,10 @@
"실제 수련생의 현재적 위기 신호는 가상내담자 엔진 호출 전에 중단하고 109 안전자원을 반환한다.",
"가상내담자 출력의 구체적인 자살·자해 수단 또는 방법 상세는 차단하고 재생성한다.",
"DB 직접 로드, persona baseline, 이전 회기 carry-over, 회기 중 관측값과 출력 가드레일에서 ideation_stage를 1..3으로 제한한다.",
"pending_external_review에서는 모든 승인값과 여섯 사례의 검토 판정을 null로 유지한다.",
"approved, conditional, rejected 전이는 사례 판정, 검토자·기관·날짜·증거 경로와 해시, 검토 버전과 사례 세트 해시가 일치할 때만 허용한다.",
"pending_external_review에서는 열 개 승인값, 여섯 사례의 다섯 검토 필드, 청소년 특화 여섯 답변을 정확히 null로 유지한다.",
"approved, conditional, rejected 전이는 사례 판정·근거·수정 요구·재검토·검토일, 청소년 답변, 검토자·기관·자격·날짜·결정 근거, POSIX 증거 경로와 해시, 검토 버전과 사례 세트 해시가 일치할 때만 허용한다.",
"conditional 또는 fail 사례는 실제 수정 요구와 재검토 제출 조건 또는 일정을 기록해야 하며 수정 없음·재검토 불필요로 닫을 수 없다.",
"개선관리 워크북은 canonical checker 성공과 review_complete, 관찰 패키지 HEAD·작업트리 해시 일치를 함께 소비한다.",
"SAMHSA SAFE-T, NIMH Youth Outpatient BSSA, NICE NG225, 보건복지부 109의 source provenance를 고정한다."
],
"artifacts": [
@ -48,19 +55,19 @@
},
{
"path": "data/clinical/crisis-protocol-validation.json",
"sha256": "122a6c19cb17cb0cfc6fae332cde0578579f3d98c77b67ec292ac268bd5ce60f"
"sha256": "fa8796a2d1bb8a1391b12141eac39cc395100333d94b184c583e74d999e611dd"
},
{
"path": "data/clinical/crisis-protocol-validation.schema.json",
"sha256": "34f7484576763e5bbe788902268e59b85b86ee0e97a33990760f7118c90e847b"
"sha256": "056bc6d9bb9e4f5b93a51a44628f8158651eecb37b467c84344e6e272ebfe7bc"
},
{
"path": "data/clinical/p1-crisis-review-cases.json",
"sha256": "1794092f755728dbbeeae3b237eaa1c47bfdd286b6b14b248d6c479fe5f9d744"
"sha256": "4d34c2b1d30b94061b1c086246eb7ff4f24dfef42e6c1ba0815a756d721d5935"
},
{
"path": "data/clinical/p1-crisis-review-cases.schema.json",
"sha256": "fbc4b5b6eeee8f6ab1a91254cb7a385aa0437e18189c140d8272d2e396f2066e"
"sha256": "0fb3c769324c1cb4651774297c669dfe9045a2d9aa7964b0c383e4cfde6332a0"
},
{
"path": "data/kb/live_coaching_sources/official_suicide_risk_guidelines.json",
@ -68,53 +75,45 @@
},
{
"path": "scripts/check-clinical-crisis-review.py",
"sha256": "451b1260b91d0f57b7b7edcbf2d9e05fcdc132298fd65c9edf8675c32d3d6e93"
"sha256": "d7e881ce55c32a641e37f6e815bd4634a8f1bebecf6fe94f1629950f4f992944"
},
{
"path": "scripts/run-clinical-crisis-technical-observations.py",
"sha256": "f8f1f63b4c7bfc8548b54d298d4c9645e78ba5bd10b9e43fd15d08d21e90bebb"
"sha256": "4e1c62af4df056e18cdb7204128b5f3c5086e204941302fdced8045aa7a532d9"
},
{
"path": "docs/ops/evidence/c-001-crisis-case-runtime-observations-2026-08-28.json",
"sha256": "38c8e40e29b607792857a13d919ec12375ef31c35d41c3661f560d31bce0a6e3"
"sha256": "f023a9405c6ce6e4d41858420208d3f64da04070d0f3b2c0bca71ea15f2e7cb8"
},
{
"path": "docs/ops/clinical-crisis-protocol-review-2026-08-27.md",
"sha256": "f6caba3569eda25bb589f35c5a5e0277e792da0ba9032c47d4b786cf30dc7b23"
"sha256": "49a3ad4a1328cd4dec27207e641d4c2dd695a0bd17817b732c9bc3479257f0b7"
},
{
"path": "outputs/01a04217-f73b-7303-b597-401fa7f5d290/Vignette_개선관리_완료.xlsx",
"sha256": "e7bf57486a31a060f38fd0b2f300b56872e12498b0d8055749f0caa92a56a4a5"
"sha256": "dbe847dfc61a772c4c27d603efee3fd624b4c85f0cd27aeb0cd3d25b594d4904"
}
],
"verification": [
{
"command": "py -3.11 -X utf8 scripts/check-clinical-crisis-review.py",
"result": "GREEN: pending_external_review, protocol/case-set 2026-08-28.1, case_count=6, external_review_replaced=false"
"result": "GREEN: pending_external_review, protocol 2026-08-28.1, case-set 2026-08-28.2, case_count=6, review_complete=false, external_review_replaced=false"
},
{
"command": "py -3.11 -B -X utf8 -m pytest -p no:cacheprovider scripts/test_check_clinical_crisis_review.py apps/api/app/test_client_reply_quality.py apps/api/app/test_live_coach_sources.py apps/api/app/test_state_machine_resistance.py apps/api/app/test_guardrail_ideation_cap.py -q",
"result": "42 passed, 0 failed"
"command": "py -3.11 -B -X utf8 -m pytest -p no:cacheprovider scripts/test_check_clinical_crisis_review.py apps/api/app/test_client_reply_quality.py apps/api/app/test_live_coach_sources.py apps/api/app/test_state_machine_resistance.py apps/api/app/test_guardrail_ideation_cap.py apps/api/app/test_session_turn_persistence.py -q",
"result": "90 passed, 1 Starlette third-party deprecation warning, 0 failed"
},
{
"command": "py -3.11 -B -X utf8 -m pytest -p no:cacheprovider apps/api/app/test_client_reply_quality.py apps/api/app/test_session_turn_persistence.py -q",
"result": "55 passed, 1 third-party deprecation warning, 0 failed"
},
{
"command": "py -3.11 -B -X utf8 -m pytest -p no:cacheprovider apps/api/app/test_state_machine_resistance.py apps/api/app/test_session_memory.py apps/api/app/test_persona_session_contract.py apps/api/app/test_orchestrator_masking.py apps/api/app/test_guardrail_ideation_cap.py -q",
"result": "55 passed, 1 third-party deprecation warning, 0 failed"
},
{
"command": "py -3.11 -B -X utf8 scripts/run-clinical-crisis-technical-observations.py --generated-at 2026-08-28T11:20:32Z",
"command": "py -3.11 -X utf8 scripts/run-clinical-crisis-technical-observations.py --generated-at 2026-08-28T12:04:06Z --output docs/ops/evidence/c-001-crisis-case-runtime-observations-2026-08-28.json",
"result": "6/6 technical pass; generate/stream event sequences pass; runtime package matches HEAD; external clinical decisions 0"
},
{
"command": "py -3.11 -B -X utf8 -m pytest -p no:cacheprovider three crisis boundary focused nodes -q",
"result": "3 passed; fixed strong-positive, negation, meta, third-party, and mixed-context matrix 50/50; 1 third-party deprecation warning"
"command": "ruff check scripts/check-clinical-crisis-review.py scripts/test_check_clinical_crisis_review.py scripts/run-clinical-crisis-technical-observations.py apps/api/app/test_client_reply_quality.py",
"result": "All checks passed"
},
{
"command": "artifact-tool workbook rebuild, inspect, formula error scan, six-sheet render",
"result": "formula errors 0; summary complete=10, review=1, total=11; PACKAGE_MATCH and WORKTREE_DRIFT 0/8; C-001 external review gate remains pending; six rendered sheets visually inspected; workbook sha256=e7bf57486a31a060f38fd0b2f300b56872e12498b0d8055749f0caa92a56a4a5"
"result": "formula errors 0; summary complete=10, review=1, total=11; canonical gate pending-valid; PACKAGE_MATCH and WORKTREE_DRIFT 0/8; C-001 review_complete=false; six rendered sheets plus focused C-001 sections visually inspected; workbook sha256=dbe847dfc61a772c4c27d603efee3fd624b4c85f0cd27aeb0cd3d25b594d4904"
}
]
}

View file

@ -1,9 +1,9 @@
{
"schema_version": "vignette.p1_crisis_technical_observations.v2",
"generated_at": "2026-08-28T11:20:32Z",
"base_commit": "f63e12999b0248dfc3e71ec22c2a1b5549454934",
"generated_at": "2026-08-28T12:04:06Z",
"base_commit": "081d9d70fb4a831412ceb937a976c9bb56906047",
"runtime_package": {
"provenance_commit": "f63e12999b0248dfc3e71ec22c2a1b5549454934",
"provenance_commit": "081d9d70fb4a831412ceb937a976c9bb56906047",
"matches_head": true,
"files": [
{
@ -23,12 +23,12 @@
},
{
"path": "data/clinical/crisis-protocol-validation.json",
"sha256": "122a6c19cb17cb0cfc6fae332cde0578579f3d98c77b67ec292ac268bd5ce60f",
"sha256": "fa8796a2d1bb8a1391b12141eac39cc395100333d94b184c583e74d999e611dd",
"matches_head": true
},
{
"path": "data/clinical/p1-crisis-review-cases.json",
"sha256": "1794092f755728dbbeeae3b237eaa1c47bfdd286b6b14b248d6c479fe5f9d744",
"sha256": "4d34c2b1d30b94061b1c086246eb7ff4f24dfef42e6c1ba0815a756d721d5935",
"matches_head": true
},
{
@ -38,12 +38,12 @@
},
{
"path": "scripts/check-clinical-crisis-review.py",
"sha256": "451b1260b91d0f57b7b7edcbf2d9e05fcdc132298fd65c9edf8675c32d3d6e93",
"sha256": "d7e881ce55c32a641e37f6e815bd4634a8f1bebecf6fe94f1629950f4f992944",
"matches_head": true
},
{
"path": "scripts/run-clinical-crisis-technical-observations.py",
"sha256": "f8f1f63b4c7bfc8548b54d298d4c9645e78ba5bd10b9e43fd15d08d21e90bebb",
"sha256": "4e1c62af4df056e18cdb7204128b5f3c5086e204941302fdced8045aa7a532d9",
"matches_head": true
}
]
@ -51,8 +51,8 @@
"case_set": {
"path": "data/clinical/p1-crisis-review-cases.json",
"id": "p1-crisis-review-cases",
"version": "2026-08-28.1",
"sha256": "1794092f755728dbbeeae3b237eaa1c47bfdd286b6b14b248d6c479fe5f9d744"
"version": "2026-08-28.2",
"sha256": "4d34c2b1d30b94061b1c086246eb7ff4f24dfef42e6c1ba0815a756d721d5935"
},
"boundary": "결정론적 기술 안전 관찰이며 임상 정답, 실제 내담자 평가, 외부 임상 검토 또는 승인을 대체하지 않는다.",
"summary": {