Graph vocabulary expansion: test, verification, deploy, security, upload, mapper, session BFS depth=2; roots=['ZipSecurityTest', 'GameUploadAuditMapper', 'post-deploy-verification-checklist.md'] Reached nodes=54 {'label': 'GameUploadAuditMapper', 'source_file': 'src/main/java/com/pandoli365/bibimbap/mapper/GameUploadAuditMapper.java', 'source_location': 'L10'} {'label': 'post-deploy-verification-checklist.md', 'source_file': 'docs/development/local-dev-setup.md', 'source_location': '113'} {'label': 'ZipSecurityTest', 'source_file': 'src/test/java/com/pandoli365/bibimbap/security/ZipSecurityTest.java', 'source_location': 'L31'} {'label': '.uploadWebglZip()', 'source_file': 'src/main/java/com/pandoli365/bibimbap/controller/api/GameUploadController.java', 'source_location': 'L113'} {'label': 'GameUploadController', 'source_file': 'docs/development/local-dev-setup.md', 'source_location': '89,93'} {'label': '.writeEntry()', 'source_file': 'src/test/java/com/pandoli365/bibimbap/security/ZipSecurityTest.java', 'source_location': 'L362'} {'label': '.extractZip_rejectsBackslash()', 'source_file': 'src/test/java/com/pandoli365/bibimbap/security/ZipSecurityTest.java', 'source_location': 'L62'} {'label': 'SSRF DNS 캐시 운영 참고 (networkaddress.cache.ttl=30)', 'source_file': 'docs/development/local-dev-setup.md', 'source_location': '111-113'} {'label': '.webglZip_returns403_whenReplaceUuidNotOwned()', 'source_file': 'src/test/java/com/pandoli365/bibimbap/controller/api/GameUploadControllerSecurityTest.java', 'source_location': 'L256'} {'label': '.webglZip_returns403_whenJamModeWithoutPermission()', 'source_file': 'src/test/java/com/pandoli365/bibimbap/controller/api/GameUploadControllerSecurityTest.java', 'source_location': 'L151'} {'label': '.webglZip_allowsReplace_whenOwner()', 'source_file': 'src/test/java/com/pandoli365/bibimbap/controller/api/GameUploadControllerSecurityTest.java', 'source_location': 'L279'} {'label': '.extractZip_rejectsNulByte()', 'source_file': 'src/test/java/com/pandoli365/bibimbap/security/ZipSecurityTest.java', 'source_location': 'L82'} {'label': '.makeLargeSingleEntryZip()', 'source_file': 'src/test/java/com/pandoli365/bibimbap/security/ZipSecurityTest.java', 'source_location': 'L311'} {'label': '.extractZip_rejectsTooLongName()', 'source_file': 'src/test/java/com/pandoli365/bibimbap/security/ZipSecurityTest.java', 'source_location': 'L92'} {'label': '.insertAudit()', 'source_file': 'src/main/java/com/pandoli365/bibimbap/mapper/GameUploadAuditMapper.java', 'source_location': 'L13'} {'label': '.putEntry()', 'source_file': 'src/test/java/com/pandoli365/bibimbap/controller/api/GameUploadControllerSecurityTest.java', 'source_location': 'L108'} {'label': '.webglZip_returns413_whenOriginalTooLarge()', 'source_file': 'src/test/java/com/pandoli365/bibimbap/controller/api/GameUploadControllerSecurityTest.java', 'source_location': 'L228'} {'label': '.assertZipType_acceptsNullMimeWithZipExt()', 'source_file': 'src/test/java/com/pandoli365/bibimbap/security/ZipSecurityTest.java', 'source_location': 'L223'} {'label': '.assertMagic_rejectsNonZipMagic()', 'source_file': 'src/test/java/com/pandoli365/bibimbap/security/ZipSecurityTest.java', 'source_location': 'L230'} {'label': '.extractZip_rejectsDriveLetter()', 'source_file': 'src/test/java/com/pandoli365/bibimbap/security/ZipSecurityTest.java', 'source_location': 'L72'} {'label': '.audit()', 'source_file': 'src/main/java/com/pandoli365/bibimbap/controller/api/GameUploadController.java', 'source_location': 'L344'} {'label': '.makeZip()', 'source_file': 'src/test/java/com/pandoli365/bibimbap/security/ZipSecurityTest.java', 'source_location': 'L287'} {'label': 'SsrfSafeFetcher', 'source_file': '', 'source_location': ''} {'label': '.assertMagic()', 'source_file': 'src/main/java/com/pandoli365/bibimbap/security/ZipSecurity.java', 'source_location': 'L90'} {'label': '.assertUnityBuild()', 'source_file': 'src/main/java/com/pandoli365/bibimbap/security/ZipSecurity.java', 'source_location': 'L171'} {'label': '.extractZip_rejectsEmptyZip()', 'source_file': 'src/test/java/com/pandoli365/bibimbap/security/ZipSecurityTest.java', 'source_location': 'L115'} {'label': 'Local Dev Setup — 로컬 개발 환경 설정', 'source_file': 'docs/development/local-dev-setup.md', 'source_location': '1-3'} {'label': '.makeMultiLargeEntryZip()', 'source_file': 'src/test/java/com/pandoli365/bibimbap/security/ZipSecurityTest.java', 'source_location': 'L329'} {'label': '.assertMagic_acceptsValidZip()', 'source_file': 'src/test/java/com/pandoli365/bibimbap/security/ZipSecurityTest.java', 'source_location': 'L238'} {'label': '.webglZip_passesGate_whenAuthenticatedNonJam()', 'source_file': 'src/test/java/com/pandoli365/bibimbap/controller/api/GameUploadControllerSecurityTest.java', 'source_location': 'L166'}