| name | gt-project-cleanup |
| description | Archive exact cleanup candidates for one game title project, fully re-review and report them, then move separately approved files only to the recoverable operating-system Trash. Use when cleaning a title's _work project after QA/release or when stale session and duplicate artifacts are consuming storage. |
gt-project-cleanup โ ํ์ดํ ํ๋ก์ ํธ ์ ๋ฆฌ
ํ๋์ canonical <ํ์ดํ ๋ฃจํธ>/_work/<ํ๋ก์ ํธ ID>๋ง ๋์์ผ๋ก Handoffยทmanifestยท์ธ์
์ํ๋ฅผ ์ถ๋ก ํ๋ค. ์ ๋ฆฌ๋ ๊ณํ โ ์์นด์ด๋ธ ์ด๋ โ ์ ์ฒด ์ฌ๊ฒํ ยท์ฌ์ฉ์ ์์ธ ๋ณด๊ณ โ ์ดํ ๋ณ๋ ์น์ธ์ ๋ฐ๋ฅธ ์ด์์ฒด์ ํด์งํต ์ด๋ ์์๋ก๋ง ์ํํ๋ค. ์๋ ์์น๋ ์์นด์ด๋ธ์ ํ์ผ์
์๊ตฌ ์ญ์ ํ์ง ์๋๋ค.
์ฝ๊ธฐ ์์์ ๋ณด์กด anchor
๋จผ์ $GT_HOME/common/SAFETY.md, project-structure.md, cleanup-contract.md,
artifact-layout-contract.md,
workspace-boundary-contract.md,
qa-session-rules.md์ ํ๋ก์ ํธ์ PROJECT.md, WORK_LOG.md, HANDOFF.md๋ฅผ ์ฝ๋๋ค.
๋ค์ ํญ๋ชฉ์ ์ฐธ์กฐ๊ฐ ์ค์ด๋ ๊ธฐ๋ณธ ๋ณด์กดํ๋ค.
PROJECT.md / WORK_LOG.md / HANDOFF.md
00_source/ inventory
30_translation/ manifestยทglossaryยทSTYLEยท๋ถ์ยทQA ๋ณด๊ณ ์ยทํฐํธ/์ด๋ฏธ์ง ๋ณด๊ณ ์
40_build/ BUILD_MANIFEST.tsvยทํ์ฌ stagingยทcanonical release
50_test/ TEST_LOG.mdยทscreenshotsยทlogsยทemucap ์ฆ๊ฑฐ
50_test/eden/SESSION.jsonยทARTIFACT_MANIFEST.tsv
90_tools/ ์ฌํ ์คํฌ๋ฆฝํธยทํ๊ฒฝ ์ ์ธยทcleanup-archive
90_tools/PROJECT_ARTIFACT_MANIFEST.tsv ๋ฐ lifecycle=canonical/evidence ํญ๋ชฉ
Handoff์ open evidence, manifest๊ฐ ์ฐธ์กฐํ๋ ํ์ผ, ํ์ฌ active session์ด ์ฌ์ฉํ๋
ํ์ผ์ ํ๋ณด๋ก ๋ง๋ค์ง ์๋๋ค. applied/rejected๋ ์ฐธ์กฐยทํด์ ์ฌํ์ธ ์ ์๋ ๋ณด์กดํ๊ฑฐ๋
WARN์ผ๋ก ๋๋ค.
1. ์ ๋ฆฌ ๊ณํ ์์ฑ
-
ํ๋ก์ ํธ ๊ฒฝ๋ก๊ฐ ํ๋ซํผ canonical ID์ธ์ง ํ์ธํ๋ค(NSW 16-hex, Steam steam-<APP_ID>,
๋ค๋ฅธ PC ๋ฐฐํฌํ pc-<safe-slug>). ๋ค๋ฅธ ํ๋ก์ ํธ๋ฅผ ์ํํ์ง ์๋๋ค.
-
SESSION.json๊ณผ remote ์ํ๋ฅผ ๋น๊ตํ๋ค. active/pending/์์ ๊ถ ๋ถ๋ช
์ธ์
์ ํ์ผ์
BLOCKED๋ก ๋๋ค. ์ด์ ์ธ์
์ last_session_id์ remote_close_session_id๊ฐ exact
์ผ์นํ๊ธฐ ์ ๊น์ง ์น์ธํ์ง ์๋๋ค.
-
MCP 50_test/eden/ARTIFACT_MANIFEST.tsv์ ํ๋ก์ ํธ ์ ์ฒด
90_tools/PROJECT_ARTIFACT_MANIFEST.tsv, Handoff, PROJECT, WORK_LOG, QAยท๋ฆด๋ฆฌ์ค ๋ฌธ์์
ํ์ผ ํด์๋ฅผ ๋์กฐํด exact ํ์ผ ํ๋ณด์ ๋ณด์กด anchor๋ฅผ ๋๋๋ค. project artifact manifest์
canonicalยทevidence๋ ๋ณด์กดํ๊ณ , ์ค์ hash๊ฐ ์ผ์นํ๋ reproducibleยทdisposable๋ง
ํ๋ณด๋ก ์ผ๋๋ค. ๋ฏธ๋ฑ๋ก managed-root ํ์ผ์ BLOCKED๋ค. ๋๋ ํฐ๋ฆฌยทglob์ ์น์ธํ์ง ์๋๋ค.
LOGยทREPORT ๊ฐ์ ์ด๋ฆ์ด์ด๋ ๋น์ ์์ ์ผ๋ก ํฐ binary/runtime ํ์ผ์ ์ ์ด ๋ฌธ์๋ก
ํต์งธ๋ก ์ฝ์ง ์๋๋ค. ํฌ๊ธฐ์ ๊ฒฝ๋ก๋ฅผ ๋ณ๋ ๊ฒฝ๊ณ ๋ก ๊ธฐ๋กํ๊ณ artifact lifecycle์ ๋จผ์ ํ์ ํ๋ค.
-
๋ค์ ๋ช
๋ น์ผ๋ก canonical ๊ณํ๊ณผ ์ง์์๋ฅผ ์์ฑํ๋ค.
npm run project:cleanup -- --project-root "<ํ๋ก์ ํธ ๋ฃจํธ>"
์ด ๋ช
๋ น์ 90_tools/CLEANUP_PLAN.json๊ณผ CLEANUP_INSTRUCTIONS.md๋ง ๊ฐฑ์ ํ๋ฉฐ ํ์ผ์
์ด๋ํ๊ฑฐ๋ ์ญ์ ํ์ง ์๋๋ค. ๋ชจ๋ ํ๋ณด๋ ๊ธฐ๋ณธ approved=false๋ค.
2. ์น์ธ ํ๋ณด ์์นด์ด๋ธ
์ฌ์ฉ์๊ฐ ์ ๋ฆฌ ๋ฒ์๋ฅผ ์น์ธํ๋ฉด ์ง์์์ exact ํ์ผ๋ง approved=true๋ก ๋ฐ๊พธ๊ณ ํ์ฌ plan
SHA-256๊ณผ ํจ๊ป ๋ค์์ ์คํํ๋ค.
npm run project:cleanup -- --project-root "<ํ๋ก์ ํธ ๋ฃจํธ>" --plan "<CLEANUP_PLAN.json>" --apply --plan-sha256 "<SHA-256>"
--apply๋ ์ญ์ ์ต์
์ด ์๋๋ค. ๊ฐ ํ์ผ์ ํ๋ก์ ํธ์
90_tools/cleanup-archive/<transaction>/files/๋ก ๋ณต์ฌํ๊ณ ์๋ณธยท์ฌ๋ณธ SHA-256๊ณผ ํฌ๊ธฐ๋ฅผ
๊ฒ์ฆํ ๋ค ์๋ ์์น์์ ์ด๋ ์ฒ๋ฆฌํ๋ค. ์ด์ด์ ๋ค์ ์ฆ๊ฑฐ๋ฅผ ๋ง๋ ๋ค.
ARCHIVE_MANIFEST.json: ์๋ ๊ฒฝ๋ก, ์์นด์ด๋ธ ๊ฒฝ๋ก, ํฌ๊ธฐ, SHA-256
CLEANUP_ARCHIVE_REVIEW.md: ์์นด์ด๋ธ ๋ฌด๊ฒฐ์ฑ, ์๋ ์์น ๋ถ์ฌ, Handoffยท์ธ์
ยท๋ณด์กด
anchorยท๋จ์ ํ๋ณด๋ฅผ ๋ค์ ์กฐ์ฌํ ์์ธ ๋ณด๊ณ ์
TRASH_PLAN.json: ํด์งํต ์ด๋์ ์ํ ๋ณ๋ ๊ณํ. ๋ชจ๋ ์น์ธ ํ๋๋ ๊ธฐ๋ณธ false
์์นด์ด๋ธ ๊ฒฝ๋ก๋ ํ์ cleanup inventory์์ ๋ณด์กด ์์ญ์ผ๋ก ์ทจ๊ธํ๋ค. ์์นด์ด๋ธ๊ฐ ์์ ํ
๋ณต๊ตฌ๋ณธ์์ ์ฆ๋ช
ํ์ง ๋ชปํ๋ฉด BLOCKED๋ก ์ค๋จํ๊ณ ์ญ์ ๋จ๊ณ๋ก ์ด๋ํ์ง ์๋๋ค.
3. ์ ์ฒด ์ฌ๊ฒํ ์ ์ฌ์ฉ์ ์์ธ ๋ณด๊ณ
์์นด์ด๋ธ ํ ์ ์ฒด ํ๋ก์ ํธ๋ฅผ ๋ค์ inventoryํ๊ณ ๋ฌธ์ ํด์, Handoff ์ํ, ์ธ์
์ํ,
๋ณด์กด ๊ฒฝ๋ก, ๋จ์ ํ๋ณด, ์๋ ์์น ๋ถ์ฌ, ์์นด์ด๋ธ ํ์ผ์ ํฌ๊ธฐยทSHA-256์ ์ ์ ํ์ธํ๋ค.
์ํ๊ฐ ๋ฐ๋์๊ฑฐ๋ ์ฌ๊ฒํ ๊ฐ ํ์ํ๋ฉด ๋ค์ ๋ช
๋ น์ ์ฌ์ฉํ๋ค.
npm run project:cleanup -- --project-root "<ํ๋ก์ ํธ ๋ฃจํธ>" --review-archive --archive-manifest "<ARCHIVE_MANIFEST.json>" --archive-manifest-sha256 "<SHA-256>"
์ฌ๊ฒํ ๋ CLEANUP_ARCHIVE_REVIEW.md์ TRASH_PLAN.json์ ๋ค์ ๋ง๋ค๋ฉฐ ๋ชจ๋ ํด์งํต ์ด๋ ์น์ธ์
์ด๊ธฐํํ๋ค. ๋ณด๊ณ ์์ ํ์ผ๋ณ ์๋/์์นด์ด๋ธ ๊ฒฝ๋กยทํฌ๊ธฐยทํด์, ์ฐจ๋จ ํญ๋ชฉ, ๋จ์ ํ๋ณด, ๋ณต์
๋ฐฉ๋ฒ์ ์ฌ์ฉ์์๊ฒ ์์ธํ ๋ณด๊ณ ํ ๋ค ํ์ฌ turn์ ์ข
๋ฃํ๋ค. ๊ฐ์ ์ฌ์ฉ์ ์์ฒญ/turn์์
์์นด์ด๋ธ์ ํด์งํต ์ด๋์ ์ฐ์ ์คํํ์ง ์๋๋ค.
4. ๋ณ๋ ์น์ธ ํ ํด์งํต ์ด๋
์ฌ์ฉ์๊ฐ ์์ธ ๋ณด๊ณ ๋ฅผ ๋ฐ์ ๋ค ์๋ก์ด ๋ช
์์ ์์ฒญ์ผ๋ก ์์นด์ด๋ธ ํ์ผ์ ํด์งํต ์ด๋์ ์น์ธํ
๊ฒฝ์ฐ์๋ง ์งํํ๋ค. ์์ด์ ํธ๊ฐ ์น์ธ ์์ฌ๋ฅผ ์ถ๋ก ํ๊ฑฐ๋ ๋ฏธ๋ฆฌ ํ์ํ์ง ์๋๋ค.
-
TRASH_PLAN.json์ review_reported_to_user=true, user_trash_approval=true๋ฅผ
๊ธฐ๋กํ๊ณ ๋ชจ๋ exact ํญ๋ชฉ์ ๋ค์ ํ์ธํด ๊ฐ approved=true๋ก ๋ฐ๊พผ๋ค.
-
ํ์ฌ trash-plan SHA-256์ ๊ณ์ฐํ๋ค.
-
๋ค์ ๋ช
๋ น๋ง ์ฌ์ฉํ๋ค. Remove-Item, rm, glob, ์ฌ๊ท ์ญ์ ๋ ์๊ตฌ ์ญ์ API๋ก ์ฐํํ์ง ์๋๋ค.
npm run project:cleanup -- --project-root "<ํ๋ก์ ํธ ๋ฃจํธ>" --trash --trash-plan "<TRASH_PLAN.json>" --trash-plan-sha256 "<SHA-256>" --user-confirmed-trash
--trash๋ ์น์ธ๋ ์์นด์ด๋ธ exact ํ์ผ๋ง Windows ํด์งํต, macOS ํด์งํต ๋๋ Linux GIO
ํด์งํต์ผ๋ก ๋ณด๋ธ๋ค. ํด์งํต์ ์ง์ํ์ง ์๋ ๋ณผ๋ฅจยทํ๋ซํผ์ด๊ฑฐ๋ ๋ช
๋ น์ด ์คํจํ๋ฉด ํ์ผ์
๊ทธ๋๋ก ๋ณด์กดํ๊ณ BLOCKED๋ก ์ค๋จํ๋ฉฐ ์๊ตฌ ์ญ์ ๋ก ํด๋ฐฑํ์ง ์๋๋ค. ๋ณด๊ณ ์ดํ ํ๋ก์ ํธ
์ํยท๋ฌธ์ยท์์นด์ด๋ธ ํด์๊ฐ ๋ฐ๋๋ฉด ๊ฑฐ๋ถํ๊ณ 3๋จ๊ณ๋ถํฐ ๋ค์ ์ํํ๋ค. ์๋ฃ ํ
TRASH_RECEIPT.json์ backendยท์๋ ์์นด์ด๋ธ ๊ฒฝ๋กยท๊ฐ์ยทํด์ยท๋ณต๊ตฌ ์ง์นจ์ ๋ณด๊ณ ํ๊ณ
ํ๋ซํผ ๊ตฌ์กฐ ๊ฒ์ฆ(NSW project:validate -- --strict, Steam/PC
project:validate:steam -- --strict)์ ์ฌ์คํํ๋ค. ์์ --purge์ DELETE_PLAN.json์ ํธํ
์
๋ ฅ์ผ ๋ฟ์ด๋ฉฐ ์คํ ๊ฒฐ๊ณผ๋ ๋์ผํ ํด์งํต ์ด๋์ด๋ค.
์๋ฃ ๊ธฐ์ค