{
  "format": "cosom-shuushoku-playthrough-v1",
  "version": "1.0.2",
  "romSha256": "f81f16fb58940186ff47d29319c22f3ef7b30462c5c2f3afa2cf22e4310b71d7",
  "campaign": {
    "completed": true,
    "summary": "Fresh normal-controller replay from August1 through August30, all 12 credit pages, aptitude result and interview-password screen.",
    "freshBoot": true,
    "snapshotLoads": 0,
    "romOrRamOrStatInjection": false,
    "controllerFrames": 821409,
    "nmiCanaryFramesChecked": 820210,
    "distinctNativeCaptures": 2823,
    "narrativeCaptures": 2103,
    "observedScriptRecords": 1227,
    "renderAuditExceptions": 0,
    "endingCalendarMonthDay": [
      8,
      30
    ],
    "creditPagesObserved": 12,
    "terminalUi": 109,
    "proofSha256": "3fdddfdf8d8345d55d6d27fff47f1e65029b96081c90fadd8a557d41d9b8def0",
    "all2823NativeCapturesMatchAccepted101AtSameControllerFrames": true,
    "pixelComparisonProofSha256": "a6ad8986e3d69399a4b55071b341523e6993c18575ae2637403606089970be62"
  },
  "textReview": {
    "registeredRecords": 3336,
    "priorRecordedEntryUnion": 1436,
    "additionalRecordsComparedWithJapanese": 1900,
    "previouslyObservedRecordsAlsoComparedWithJapanese": 1436,
    "totalRegisteredRecordsComparedWithJapanese": 3336,
    "correctedRecords": [
      {
        "id": "068000-0083",
        "before": "{13}{01}...He's getting a little late...{03}I wonder what's happened...{00}",
        "after": "{13}{01}...He's a little late...{03}I wonder what's happened...{00}",
        "reason": "A person is 'late'; 'he's getting a little late' is an unidiomatic transfer of the lateness expression. The Japanese says he is a little late, with no change in story meaning."
      },
      {
        "id": "078000-0130",
        "before": "{10}{01}I'm a bit loose about time.{00}",
        "after": "{10}{01}I'm not very punctual.{00}",
        "reason": "時間にはルーズ means lax about punctuality. 'Loose about time' is understandable but sounds like a literal Japanese-to-English calque. The proposed line uses the direct English expression without changing the answer's meaning."
      },
      {
        "id": "070000-0289",
        "before": "{10}{01}I don't need any more offers either...{03}It wasn't really work I wanted to do anyway...{03}There's something more important than rushing to get a job...{00}",
        "after": "{10}{01}I don't need a job offer anymore, either...{03}It wasn't really work I wanted to do anyway...{03}There's something more important than rushing to get a job...{00}",
        "reason": "The preceding two records show Shunsuke handing over his own offer notice, prompting Ryoko to object. He then explains that he no longer needs the offer because it was not work he wanted and he has more important priorities. “Any more offers” implies he is retaining offers and only rejecting additional ones; the original says he no longer needs a job offer at all."
      }
    ],
    "meaningClarifications": 1,
    "idiomCorrections": 2,
    "untranslatedSubstantiveJapaneseFoundInAdditionalReview": 0,
    "reviewProofSha256": "7868cfef7b66dc15c3daef062aa45056ce96a6b056a6e20878aca09cbfa53c7b",
    "scope": "Source/context proofreading; the 1900 count describes additional review coverage, not untranslated records."
  },
  "nativeCorrectedText": {
    "controlledSetup": true,
    "naturalRouteClaim": false,
    "records": 3,
    "paragraphPages": 6,
    "allRenderedParagraphsMatched": true,
    "unknownGlyphs": 0,
    "rightGutterInk": 0,
    "nmiCanaryFramesChecked": 5595,
    "proofSha256": "43e665579a9199dadc2c0d73f70113f2d002c2d8b8f4d22d61137a52479ed331"
  },
  "browser": {
    "properPlayerColdBootToEnglishNameEntry": true,
    "snapshotSaveReadbackUiConfirmed": true,
    "pausedRestoreFixed": true,
    "runningRestorePassed": true,
    "sameVersionFileImportPassed": true,
    "validPreviousVersionFileRejected": true,
    "rejectedImportLeavesPausedStateByteExact": true,
    "archive101RoundtripPassed": true,
    "oldArchiveIdentityAndRomPreserved": true,
    "defaultTwelveSnesMappingsVisibleAndUnchanged": true,
    "keyboardAndOnScreenInputObserved": true
  },
  "controller": {
    "physicalTestPerformedOnThisVersion": false,
    "earlierPhysicalTestRomSha256": "0c3160aa3b70075d935f059ec2bca0a8c004a09782ae8843ae72baa706f72f7f",
    "earlierPhysicalTestVersion": "1.0.0",
    "acceptedWithUnchangedInputAssetsInRelease": "1.0.1",
    "earlierPhysicalProofSha256": "e5764e827bc95e847e21d4cb120809a2a10dac49ae95d5fef18197cb214c4a1c",
    "twelveSnesInputsAndReleasesPreviouslyPassed": true,
    "reconnectPreviouslyPassed": true,
    "runtimeAndInputMappingsUnchanged": true
  },
  "additionalBranchesOnPreviousRom": [
    {
      "summary": {
        "status": "passed",
        "romSha256": "6f5beecb32fcbf29ced1f63f4322df86ffd76e50ccc4d35fb2ad6d1d24dcfd88",
        "test": "Nine original interview-practice rejection routes",
        "completedCompanyRoutes": 9,
        "rejectionLettersObserved": 9,
        "acceptedChoicePrompts": 160,
        "nmiCanaryFramesChecked": 189586,
        "nativeCapturesAudited": 1006,
        "observedScriptRecords": 428,
        "unresolvedRenderingFindings": 0,
        "priorNegativeInputsAndOutcomesReproduced": true,
        "priorInlinePlayerNameArtifactAbsent": true,
        "scope": "Fresh boot, original password entry and real controller choices; all nine rejection letters and company reactions followed by automatic return to name entry.",
        "limits": [
          "Practice is not an ordinary calendar campaign or an all-failed campaign ending.",
          "One selected answer path per company; other answer branches are outside this run.",
          "Native joypad testing does not establish physical/browser gamepad connectivity."
        ],
        "sameFirmNormalControllerRetry": "passed",
        "sameFirmBadCounterResetBeforeRetryAnswers": true,
        "additionalRetryNmiCanaryFramesChecked": 20878,
        "totalNmiCanaryFramesCheckedIncludingRetry": 210464
      },
      "summarySha256": "ed1059fc098a3ff1bf04608bab69a1ab6735532746e7019d1c8ddb4c920aeca8"
    },
    {
      "summary": {
        "schemaVersion": 1,
        "status": "passed",
        "romSha256": "6f5beecb32fcbf29ced1f63f4322df86ffd76e50ccc4d35fb2ad6d1d24dcfd88",
        "candidateVersion": "Historical 1.0.1, unchanged during alternate testing",
        "candidateSha256": "6f5beecb32fcbf29ced1f63f4322df86ffd76e50ccc4d35fb2ad6d1d24dcfd88",
        "completed": true,
        "scope": "One group 2 continuation using normal inputs from its own Aug 15 checkpoint in this version; inherited Aug 1–15 ancestry is separately verified. A separate full group 1 ending and every possible answer combination are not claimed.",
        "calendarStart": [
          8,
          15
        ],
        "calendarEnd": [
          8,
          30
        ],
        "naturalDayTransitions": 15,
        "sourcePrefix": {
          "scope": "Separately verified fresh-boot campaign prefix inherited by this branch at its own Aug 15 checkpoint",
          "freshBoot": true,
          "throughDate": [
            8,
            15
          ],
          "sourceFrameIndex": 441529,
          "ancestorProofSha256": "205df93de22ce510d400850982a625b75b0fc4284b3dc80f78d0c2af67ff1a0d",
          "checkpointSha256": "8df0eada54e7939b54bf83fda1a95abb2dcb02b384bd963d5a34e15308bee879"
        },
        "checkpointAncestry": {
          "freshBootAncestorProofSha256": "205df93de22ce510d400850982a625b75b0fc4284b3dc80f78d0c2af67ff1a0d",
          "aug15CheckpointSha256": "8df0eada54e7939b54bf83fda1a95abb2dcb02b384bd963d5a34e15308bee879",
          "initialSameRomSeedLoads": 1,
          "ownSameRomResumesAfterDriverPauses": 3,
          "crossRomCheckpointLoads": 0,
          "gameVariableInjections": 0
        },
        "ordinaryBranchChoices": [
          {
            "date": [
              8,
              15
            ],
            "sourceAlias": "068000-0128",
            "sourceFileOffset": 435796,
            "selectedIndex": 1,
            "answer": "Don't take it",
            "nativeFlag0420": 1
          },
          {
            "date": [
              8,
              19
            ],
            "sourceAlias": "060000-0118",
            "sourceFileOffset": 401468,
            "selectedIndex": 1,
            "answer": "We're just friends.",
            "nativeFlags0420_0421": [
              1,
              1
            ]
          }
        ],
        "confirmedStoryGate": {
          "date": [
            8,
            19
          ],
          "action": "Return to Sakuragaoka station forecourt after the Pub scene",
          "originalNativeAddress": "81:902D",
          "daily0419After": 2,
          "nativeCareer0403": 8,
          "nativeBooks0407": 4,
          "flags0420_0421": [
            1,
            1
          ]
        },
        "ending": {
          "group": 2,
          "activeCompanies": [
            "Air Flight",
            "ABC Foods",
            "Ogoshi Department Store",
            "Oshiro Publishing",
            "Kanto Bunka Television"
          ],
          "observedRoute": "Natural alternate story epilogue, 12 automatic credit pages, aptitude report A-view toggle, Interview Password terminal",
          "all12CreditsNaturallyReached": true,
          "all12FullyRevealedAudited": true,
          "finalCreditPage0877": 12,
          "terminalUi70": "6D",
          "finalFlags0420_0421": [
            1,
            1
          ]
        },
        "canonicalInputScope": "Aug 15 seed through Aug 30 terminal only; excludes the source prefix, discarded diagnostics, screenshot recovery and supplementary credit replay.",
        "canonicalInputFrames": 510420,
        "canonicalInputBatches": 15429,
        "nmiCanaryFramesChecked": 510420,
        "nmiCorruptionFindings": 0,
        "supplementaryRecovery": {
          "frames": 125788,
          "exactScreenshots": 9,
          "noIntermediateCheckpointLoads": true,
          "proofSha256": "febea394ede8551e345042898b8ff96b02913c007d14c423d6c172973bb60ff6"
        },
        "supplementaryCreditAudit": {
          "scope": "Own naturally reached first credit checkpoint, then continuous neutral input through every full credit page",
          "frames": 7365,
          "fullyRevealedPages": 12,
          "proofSha256": "43c63c330641bebd491f1814a309f0cf7949bdb86002ce75daaa43d38841f1b1"
        },
        "renderAudit": {
          "retainedDistinctNativeCaptures": 1684,
          "activeNarrativeCaptures": 1349,
          "distinctNarrativeSourcePointerBindings": 770,
          "unknownGlyphOrMarginFlags": 0,
          "supplementaryFullyRevealedCreditPages": 12,
          "supplementaryCreditNmiFramesChecked": 7365,
          "supplementaryRecoveryNmiFramesChecked": 125788,
          "exactScreenshotsRecoveredFromOriginalInputs": 9,
          "unresolvedCaptureReferences": 0,
          "fiveGroup2MemoLabelsSeenNaturallyInEnglish": true,
          "captureScopeIncludesSameRomExplorationAndDiscardedProbe": true
        },
        "newUntranslatedSemanticTextFindings": [],
        "newVisualOrStackFindings": [],
        "historicalCandidateNotes": [],
        "deliberatelyRetainedOriginalJapanese": [
          "Game brand logo",
          "Staff proper names in credits",
          "Functional hiragana practice-password codes"
        ],
        "privateProofSha256": "84e5e2d285378ae04efaf42571bf91574c87dbc19c0345f4e3df544cbcc68976",
        "contactSha256": "0a7be8be8ebf3d39ee2360c07c84a576664de602e944dac10ae73c805934e379",
        "fullyRevealedCreditContactSha256": "87f516eb40904276e042a85adab76162ab7ef7093b1f76c222c9d4e11eb4f5cc"
      },
      "summarySha256": "42f5cb420e4c8fe16762a9ce787e039d97481769425f8d375e268776544a90f1"
    },
    {
      "summary": {
        "status": "passed",
        "romSha256": "6f5beecb32fcbf29ced1f63f4322df86ffd76e50ccc4d35fb2ad6d1d24dcfd88",
        "test": "Ordinary group 0 all-failed campaign continuation",
        "startCalendar": "August 15",
        "endCalendarMonthDay": [
          8,
          29
        ],
        "rejectedActiveCompanies": 4,
        "intentionallyPenalizedCompanies": 4,
        "campaignGroupFlagsPreserved": [
          0,
          0
        ],
        "nativeNmiCanaryFramesChecked": 312794,
        "narrativeCapturesAudited": 901,
        "observedScriptRecords": 443,
        "newObservedScriptRecordsBeyondPriorCampaignAndPractice": 18,
        "unresolvedRenderingFindings": 0,
        "failureReportReached": true,
        "normalReportViewAndStartControlsPassed": true,
        "creditPagesShown": 0,
        "terminalPasswordHelpReached": true,
        "scope": "Normal controller continuation from a genuine same-ROM August 15 checkpoint to the natural August 29 all-failed ending, including four rejection letters, the failure report and terminal password help.",
        "limits": [
          "One initial checkpoint restore from the independently documented fresh 6f5 campaign; no later state restoration or stat/scenario/name/password injection.",
          "This is the group 0 failure branch and selected answer policy; other campaign branches are reported separately.",
          "Historical 6f5 candidate evidence; do not describe it as playback of a later release hash.",
          "Physical/browser controller testing is separate."
        ],
        "actualRejectionLettersObserved": 4,
        "companyResults": [
          {
            "company": "Air Flight",
            "outcome": "rejected",
            "letterScreenshotSha256": "91dd9eb2b43afdc24201fba338c1b32836e48a100ec9a7bb101b9a4a3bc91ba6",
            "reactionScreenshotSha256": "894f6b4ba7e04ceba8e5fb89fb7c88270c6f4610e6559215507562500533548a"
          },
          {
            "company": "ABC Foods",
            "outcome": "rejected",
            "letterScreenshotSha256": "91dd9eb2b43afdc24201fba338c1b32836e48a100ec9a7bb101b9a4a3bc91ba6",
            "reactionScreenshotSha256": "6be91b3b78d1c9b2893720460ae11f3f4a18170578e634ffca47a02f122eb1b6"
          },
          {
            "company": "Ogoshi Department Store",
            "outcome": "rejected",
            "letterScreenshotSha256": "1a5d480f16e895425afc95bf4f8cb02b094611c09995be16bf0ee190303b85bb",
            "reactionScreenshotSha256": "10ed3c5106272ef77cd7b2e2f30e7b524e815b7676de79f78d6af2fb204a2918"
          },
          {
            "company": "Marukaku Securities",
            "outcome": "rejected",
            "letterScreenshotSha256": "4b63602c29571304d9fe1b2d33b7479f0c177a6e48755822587e4b88e7a2630c",
            "reactionScreenshotSha256": "4f287af839dafea8e95dc5fb01a8df2c8632a62863908c20dde662937cf7c73d"
          }
        ],
        "creditsSkippedAsExpected": true,
        "normalControllerInputOnly": true,
        "controllerInputBatches": 9629,
        "initialNaturalCheckpointRestores": 1,
        "laterCheckpointRestores": 0,
        "runtimeStatScenarioEdits": 0,
        "sourcePrefixProofHashes": {
          "freshCampaignProofSha256": "205df93de22ce510d400850982a625b75b0fc4284b3dc80f78d0c2af67ff1a0d",
          "naturalCheckpointSha256": "8df0eada54e7939b54bf83fda1a95abb2dcb02b384bd963d5a34e15308bee879"
        },
        "continuationProofHashes": {
          "endingSha256": "cfd9907fa1bcc35345fd89128803e619b738f0e5a3a1261df2052b32809f296c",
          "controllerInputsSha256": "59b5445d0aa9364674b807bdec5cd75461f259784e818c997e95413305effcde",
          "nativeTextAuditSha256": "21a8aa8c47eea2683c87966e0978751deaad29fb6271d88abe8422631b1f615d"
        },
        "expectedFailureDiversion": {
          "originalRoutineCpu": "9C:B2D0",
          "originalRoutineFileOffset": 930512,
          "sourceBytes": 33,
          "originalSourceSha256": "c019bdd3cd6f6c3e1cbe3961f501a84d2b7d5834ec96e49f2f9421c3e9f42560",
          "identicalCodeVerifiedInTestedRom": true,
          "condition": "RAM $0420 == 0; $0480, $0481, $0482 and $0486 are all nonzero.",
          "nativeAction": "Bypass credits and set menu state 0x65, the failure report initializer.",
          "observedCalendar": "August 29",
          "observedCreditsShown": 0,
          "observedTerminalCreditPageCounter": 0
        },
        "naturalEarlyEndingCalendar": "August 29"
      },
      "summarySha256": "81b2757d3101afaeafef61cc9ac89d071913967ff2d72a22aba6c2a7b22b03a1"
    }
  ],
  "structure": {
    "registeredRecordsVerified": 3336,
    "unchangedCompiledRecords": 3333,
    "nativeCodeIdenticalTo101": true,
    "fontUiGraphicsSaveAndGameLogicUnchanged": true,
    "changesRestrictedToScriptLookupPayloadAndChecksum": true
  },
  "snapshotCompatibility": {
    "crossVersionImportsRejected": true,
    "archive101Retained": true,
    "restoringResumesPlay": true
  },
  "scopeLimits": [
    "A full ordinary campaign on this exact cartridge and the stated controlled text checks passed; every possible choice, relationship and questionnaire route is not exhaustively traversed.",
    "Additional rejection and ending checks are explicitly attributed to version 1.0.1. Its native code and 3333 unchanged compiled records match this release; the three corrected records were separately rendered on 1.0.2.",
    "The original Japanese title-logo artwork, accurate staff-name attribution glyphs and original hiragana password codes are intentionally retained.",
    "Physical Xbox testing belongs to the earlier acceptance record; the browser runtime and twelve-button input mappings are unchanged. A fresh physical controller test was not performed for1.0.2.",
    "Original source anomalies and bounded indirect-entry audits remain documented in the translation ledger."
  ]
}
