Files
MagnetismHeroes/.dryforge/002/execution-support/reviews/horizon-fix-conformance.json
T
2026-10-10 01:27:54 +09:00

222 lines
11 KiB
JSON

{
"status": "approved",
"reviewType": "원경 틈 수정 pre-merge 독립 검토",
"language": "ko",
"reviewedAtUtc": "2026-10-08T16:57:49.857929+00:00",
"scope": {
"baselineCommit": "da169df7c7c7215ce562f8f512d93fb4df2e39b7",
"reviewedCommit": "ef03611628cb395d377cf56abd951bbf62cfa29c",
"worktree": "C:\\git\\MagnetismHeroes\\.dryforge\\worktrees\\T4",
"changedFiles": 32,
"changedStageAssets": 30,
"changedFarHorizonPositionRows": 120,
"runtimeExecutionByReviewer": false,
"permittedWrite": "리뷰 JSON만",
"nextGate": "root 통합 후 새 제품의 전체 4단계 및 갱신 문서/해시 검토는 별도 후속"
},
"preservedReview": {
"path": "artifacts\\verification\\VisualUpgrade\\BeforeHorizonFix\\final-review.json",
"sha256": "2f4269c77224aea872289cf51f76a5f6cdb626ec7af1789a63f5fcfb91a0e5b0",
"meaning": "기존 전체 네 관점 검토의 결과와 실제 원문 증거를 유지하며 이번 판단은 원경 수정 delta에 적용한다."
},
"rubric": [
{
"lens": "요구·코드 품질",
"result": "통과",
"checks": [
"R07 실제 화면 중앙 원경 하단의 하늘/검은 틈 제거",
"R03/R04 승인된 구 배치·그룹·목표·순서와 수학 유지",
"R06 승인 원본/FBX 25개 및 31개 재질 정확 해시 유지",
"R09 기존 Stage의 FarHorizon x/z 위치만 갱신하는 최소 수정"
]
},
{
"lens": "내용 형식",
"result": "통과",
"checks": [
"commands/result/preservation JSON과 XML이 실패 시도·통과 범위·소스·환경을 구분",
"캡처 metadata에 14도 foot 비교 FOV 명시"
]
},
{
"lens": "완전성",
"result": "통과(이번 좁은 범위)",
"checks": [
"세 세계 actual geometry probe와 실제 화면",
"targeted Edit 7개 및 Play 10개 원문",
"새 전체 4단계를 이미 수행했다고 기록하지 않음"
]
},
{
"lens": "교차 참조·원문",
"result": "통과",
"checks": [
"CLI command/exit 기록과 Unity 원문 종료 코드 및 XML 대조",
"기존 실패 366·trial28 실패6을 녹색으로 바꾸지 않음",
"승인/재질/비시각부 보존 보고서를 실제 파일·git delta와 대조"
]
}
],
"issues": [],
"resolvedBlocker": {
"requirement": "R07 자연스러운 지형 연결",
"location": "Assets/MagnetismHeroes/Editor/VisualUpgradeAssets.cs / 30 StageAssets FarHorizon 배치",
"cause": "radius35에서 파란 원경 아래 apron과의 겹침 부족",
"fix": "공통 FarHorizonRadius27 및 scoped Unity Editor API 배치 갱신",
"visualEvidence": [
"horizon-world11-foot-legacy-radius35.png",
"horizon-world11-foot-current.png",
"world11-ten-one-group-tablet-orbitzoom.png",
"world21-single-resupplied-phone-orbitzoom.png"
],
"judgment": "동일 카메라 legacy/current close foot 및 원래 지적된 두 전체 화면에서 중앙 sky/검은 slit가 사라졌다. 전체 화면 양끝의 평평한 원경 림은 관찰 범위에서 녹색 apron과 맞닿는 원래 mound 외곽 실루엣이며, 하늘이 발밑으로 관통하는 잔여 floating gap 근거는 없다."
},
"codeReview": {
"helper": "ApplyHorizonContinuity는 기존 30 Stage의 FarHorizon 네 개를 기대하고 x/z 방향을 정규화하여 공통 반경으로 옮기며 y/scales/rotation/다른 props를 유지한다. 반복 실행 결과가 같고 기존 generator가 같은 상수를 사용한다. StageSignature로 비시각부 보존을 검사한다.",
"newTest": "실제 imported sharedMesh를 별도 LocalPhysics3D Scene의 MeshCollider로 탐색하므로 반경 상수 복사만으로 통과하는 검사가 아니다. 실제 게임 계층에는 collider를 추가하지 않는다. board JSON 및 actual collider array 불변을 종료 시 검사하고 camera/FOV/임시 legacy 배치를 복원한다.",
"serializedDiff": "32개 파일은 scoped helper·Play geometry/capture metadata·30 Stage이며 120개의 FarHorizon x/z 행 외 다른 Stage 필드 변경이 없다. Unity API 저장 형태를 유지한다."
},
"preservation": {
"approvedBinaryShaMatched": 25,
"materialExactBytesAndColorMatched": 31,
"stagesNonvisualPrefixMatched": 30,
"unchanged": "승인 geometry/FBX/import metadata/재질·초기 구/그룹/ID/수학/카메라/입력/collider/다른 장식 배치",
"independentMethod": "실제 파일 SHA 비교와 baseline→immutable commit 전체 32파일 diff 검토"
},
"actualVerification": {
"xmlChecks": [
{
"path": "red-geometry.xml",
"result": "Failed(Child)",
"total": "1",
"passed": "0",
"failed": "1",
"skipped": "0",
"inconclusive": "0",
"actualCaseCount": 1,
"actualPassedCaseCount": 0
},
{
"path": "trial28.xml",
"result": "Failed(Child)",
"total": "1",
"passed": "0",
"failed": "1",
"skipped": "0",
"inconclusive": "0",
"actualCaseCount": 1,
"actualPassedCaseCount": 0
},
{
"path": "editmode.xml",
"result": "Passed",
"total": "7",
"passed": "7",
"failed": "0",
"skipped": "0",
"inconclusive": "0",
"actualCaseCount": 7,
"actualPassedCaseCount": 7
},
{
"path": "playmode.xml",
"result": "Passed",
"total": "10",
"passed": "10",
"failed": "0",
"skipped": "0",
"inconclusive": "0",
"actualCaseCount": 10,
"actualPassedCaseCount": 10
}
],
"editUnityExit": 0,
"editCliExit": 0,
"playUnityExit": 0,
"playCliExit": 0,
"redUnityExit": 2,
"redCliExit": 8,
"redMissingSamples": 366,
"trial28UnityExit": 2,
"trial28CliExit": 8,
"trial28MissingSamples": 6,
"initialCompileAttempt": {
"log": "red.log",
"exit": 1,
"evaluatedGeometry": false
},
"geometryFinalMissingByStage": {
"1": 0,
"11": 0,
"21": 0
},
"commandsVerifiedFrom": "commands.json + Unity log COMMAND LINE ARGUMENTS + test completion exit lines + XML actual cases",
"captureInventory": 119,
"personallyViewedNewPngCount": 8,
"all119ViewedClaim": false
},
"advisories": [
{
"id": "geometry-sampling-bound",
"severity": "정보",
"finding": "새 probe는 cardinal corridor lateral ±12m, radial 0..실제 배치 거리, step .25m/2m이다. 실제 원경 foot 폭 약 ±15.35m의 전체 경계나 모든 각도를 망라하지 않는다.",
"disposition": "표본 0만으로 전체 외곽 해결을 주장하지 않고, 독립 실제 화면 판정을 함께 근거로 사용했다. 향후 더 넓은 카메라/원경 범위를 도입할 때 probe 범위를 함께 검토한다."
},
{
"id": "existing-below-ground-camera",
"severity": "정보",
"finding": "기존 자유 Orbit의 지하 각도에서 넓은 clearing의 underside가 더 큰 화면 영역을 가릴 수 있다.",
"disposition": "기존 전체 리뷰의 수용 한계를 유지한다. 이번 변경이 카메라/물리/구 배치를 바꾸지 않으며 모든 각도 가시성을 주장하지 않는다. 별도 UX 결정 범위이다."
},
{
"id": "existing-device-and-physical-occlusion",
"severity": "정보",
"finding": "합성 Editor CPU/메모리는 실제 단말 FPS/GPU/열/배터리 검증이 아니며, 일부 초기 그룹의 얼굴은 다른 구에 물리적으로 가려질 수 있다.",
"disposition": "원래 리뷰와 문서의 한계를 유지한다. 현재 초기 배열과 label/55 구 발견·선택·드래그 조건을 보존한다. 실제 단말/아동/iOS는 이번 검토 범위 밖이다."
}
],
"gitChecks": {
"rootBefore": {
"gitRoot": "C:/git/MagnetismHeroes",
"HEAD": "da169df7c7c7215ce562f8f512d93fb4df2e39b7",
"clean": true,
"protectedDev": "58410281e015c6600dc543c4e093fd95c036288c"
},
"rootAfter": {
"HEAD": "3346eb559bdfba24332feb4d9be4b7104520233e",
"clean": true,
"protectedDev": "58410281e015c6600dc543c4e093fd95c036288c"
},
"worktreeAfter": {
"HEAD": "ef03611628cb395d377cf56abd951bbf62cfa29c",
"clean": true
},
"rootHeadChangeExplanation": "pre-merge clear를 parent에게 먼저 전달한 뒤 root가 통합을 진행하여 종료 체크의 root HEAD가 변했다. 본 판정 대상은 immutable ef036 commit이며 root 통합 전체 단계 승인을 뜻하지 않는다."
},
"evidenceSha256": {
"commands.json": "30aa2370d563444fb5354fd7aad6e4c996baa2d2bbfd5c67499931a314deea5e",
"result.json": "d3b70ae81c29b15582fe77b0c9c6636432c62f68606d39faff1da8d48da2f7a4",
"preservation.json": "cbab404eef5524a053cfca09be50a579f6bae858cfab78dc3dfdc6e2501ddb34",
"red-geometry.xml": "73b8dbd327c7ddc0618f0c2a10befe12033ae8d0a0585eb66d6dcc37d87a6fe3",
"red-geometry.log": "171a631aa96287796c0c795a4d4ef6662efa65a92707e3894930af5731bc94aa",
"trial28.xml": "da2f290364723076609dc513df06fcb454a9a4d75ac575cb56bd0ac94fa37a5b",
"trial28.log": "e7c9148d4e16fa208b77d222eb6f1443dd5820ec9c54e2f63579f98d9c5c1d0d",
"editmode.xml": "bf3826d56e130eb11264035d563029d1d0277f0a5630f56cdb1ffc4100260a3a",
"editmode.log": "ee4b615dc1f07c731d0774d2b958611afa530173b570f70cb0074090567d7d03",
"playmode.xml": "95e3a935c26803c2af29d94b60c5b674b4ad1c61359bfbcadc9a8d196237ea03",
"playmode.log": "4fe5cc4e76e937ab7d3fef7ce67f0c9f5dabc481e52ec08c9311d7b192ffc14a",
"apply27.log": "c306375c2de4b24a88d59d26924005e37baec7157ca91f40f47e414488c00b09"
},
"personallyViewedImageSha256": {
"horizon-world11-foot-legacy-radius35.png": "d6d23085030e82f21f48dce40aab221d3657c3ce76d9d3606ae1b256676d1944",
"horizon-world11-foot-current.png": "181a9b24cbeb8a0971b4bb2aa0b467899cce40c3116556cb6fa6e848219ba4cb",
"world11-ten-one-group-tablet-orbitzoom.png": "1ecebdd4677377b490f5836a0ae8cabed6308df9d9bd43f12038a5da31b87720",
"world21-single-resupplied-phone-orbitzoom.png": "9096a13e0cf4ccd9bb8e4b982b6278fbe9f648423676583cc98880d9cfc297da",
"horizon-world1-tablet-default.png": "7f977eb18af84fdf5f2825bcc3b65e8a6733776893870950bdef8d62c8406931",
"horizon-world21-phone-orbitzoom.png": "7255763644f98a36a973b3b17752e79ac83d7633cf9969d8058106e415ee3997",
"horizon-world1-foot-current.png": "66cc35a90ac0ab0bde5a5f1fc52e380b994251149e42335ad9a792ed801386c4",
"horizon-world21-foot-current.png": "05dbbf98e8e1961222ed8579f52768134939a6601148002d9246a0761907d2f9"
},
"boundedConclusion": "원경 수정 delta를 승인하며 차단 0건이다. 원래 전체 검토 결과를 보존하고 새 통합 제품의 전체 네 단계·문서/메타데이터 변경 검토를 별도 후속으로 남긴다. 최종 사용자 승인이나 dev merge/push의 승인이 아니다."
}