bibimbap/.atp/work-session/20260629-100849/implementation/ownership-w33.md

4.7 KiB

phase agent agent_version generated_at workstream
implementation implementation-advisor 1 2026-06-29T10:30:00+09:00 W3-3-posting-board

파일 소유권 맵 (W3-3 포스팅 보드)

불변식: 동일 파일 정확히 1 worker. 파일 충돌 0. SSRF 보안핵심 단독 worker. Java 컴파일은 advisor 사후/verification 영역 — worker 는 파일 작성만. 시그니처는 설계서 확정값이라 타 클래스 참조 타입명 정확. 따라서 파일 독립이면 병렬 가능.

Wave 1 (병렬 spawn, 파일 독립 — 동시 최대 6 준수)

파일 담당 worker worker id U-태그 변경
docs/board-ddl.sql migration-writer w-schema U-SCHEMA create
db/schema.sql (append only, line 908 직후) migration-writer w-schema U-SCHEMA modify
data/PostData.java code-writer w-domain U-DOMAIN create
data/PostCategoryData.java code-writer w-domain U-DOMAIN create
data/UnityFeedSourceData.java code-writer w-domain U-DOMAIN create
data/UnityFeedItemData.java code-writer w-domain U-DOMAIN create
mapper/PostsMapper.java code-writer w-domain U-DOMAIN create
mapper/PostCategoriesMapper.java code-writer w-domain U-DOMAIN create
mapper/UnityFeedSourcesMapper.java code-writer w-domain U-DOMAIN create
mapper/UnityFeedItemsMapper.java code-writer w-domain U-DOMAIN create
pom.xml (jsoup 1.17.2 + commonmark 0.22.0) code-writer w-markdown U-MARKDOWN modify
service/PostMarkdownService.java code-writer w-markdown U-MARKDOWN create
test/.../PostMarkdownServiceTest.java code-writer w-markdown U-MARKDOWN create
security/SsrfSafeFetcher.java code-writer w-ssrf (보안핵심 단독) U-SSRF create
service/OgPreviewService.java code-writer w-ssrf (보안핵심 단독) U-SSRF create
test/.../SsrfSafeFetcherTest.java code-writer w-ssrf (보안핵심 단독) U-SSRF create
service/FeedParser.java code-writer w-feed U-FEED create
service/UnityFeedPoller.java code-writer w-feed U-FEED create
config/SchedulingConfig.java code-writer w-feed U-FEED create
test/.../FeedParserTest.java code-writer w-feed U-FEED create
test/.../UnityFeedPollerTest.java code-writer w-feed U-FEED create
controller/PostAdminController.java code-writer w-admin U-ADMIN-CTRL create
controller/UnityFeedAdminController.java code-writer w-admin U-ADMIN-CTRL create
views/admin-post-categories.jsp code-writer w-admin U-ADMIN-CTRL create
views/admin-unity-feeds.jsp code-writer w-admin U-ADMIN-CTRL create

Wave 2 (Wave1 후 — U-POST-CTRL + 테스트 + MockBean)

파일 담당 worker worker id U-태그 변경
controller/PostController.java code-writer w-postctrl U-POST-CTRL create
views/posts-list.jsp code-writer w-postctrl U-POST-CTRL create
views/posts-detail.jsp code-writer w-postctrl U-POST-CTRL create
views/posts-form.jsp code-writer w-postctrl U-POST-CTRL create
views/header.jsp (append /posts 링크) code-writer w-postctrl U-POST-CTRL modify
test/.../PostControllerTest.java code-writer w-postctrl-test (검증) create
test/.../BibimbapApplicationTests.java (append @MockBean) advisor 직접 - (검증) modify

계량 (최종)

  • planned_workers: 8 (w-schema, w-domain, w-markdown, w-ssrf, w-feed, w-admin, w-postctrl, w-postctrl-test)
  • actual_workers: 9 — 위 8 + JSP JSTL→scriptlet 변환 보정 worker 1 (계획 외 추가, 사유 아래)
  • advisor 직접: BibimbapApplicationTests @MockBean append(병렬화 이득 0) + admin-unity-feeds JSP 잔존 점검(worker 가 최종 완료해 advisor 직접편집 불요로 귀결).

계획 외 추가 worker 사유 (JSP 변환 보정)

  • U-ADMIN-CTRL / U-POST-CTRL worker 가 생성한 5개 JSP 가 <%@ taglib c %> + JSTL(<c:out> 등)을 사용했으나, 프로젝트에 JSTL 의존성이 전무(pom 0건 + ~/.m2 캐시 0건, 오프라인 빌드라 추가 불가)하여 런타임 JSP 변환 실패 위험.
  • grounding 결과 기존 JSP 전부 scriptlet + HtmlUtils.htmlEscape 컨벤션. 설계 의도(출력 escape)는 동일 충족하되 메커니즘을 프로젝트 컨벤션으로 정렬하는 보정이 필요 → 단일 worker 로 5개 JSP 일괄 변환(일관성).

충돌 회피 근거

  • db/schema.sql / header.jsp / BibimbapApplicationTests 는 기존+W3-1/4 보존 append-only.
  • 각 파일 정확히 1 worker. 교차 소유 0.
  • U-SSRF 단독 worker(보안핵심): SsrfSafeFetcher + OgPreviewService + Test 한 worker 격리.