Logocob

cob manifest

산출물에 편입된 범용 구성요소 목록의 계약 별지 초안 생성

cob manifest#

생성된 프로젝트를 스캔해 계약 별지 「범용 구성요소 목록」 초안(markdown)을 만듭니다 — 명칭·버전·기능 개요·산출물 내 편입 위치.

계약(브릭 재사용권 조항 v2)의 목록 통지·이의 절차를 도구화한 것입니다: 검수 완료 시까지 산출물에 편입된 범용 구성요소를 별지로 서면 통지해야 하고, 통지되지 아니한 구성요소는 양도 대상으로 봅니다. 누락 방향의 오류가 권리 상실로 직결되므로 이 명령은 과소 포함보다 과대 포함을 택합니다 — 자동 판정하지 못한 탐지물은 버리지 않고 "검토 필요" 섹션으로 승격해 사람 검토를 강제합니다.

cob sync --emit-manifest(feature 부품 인벤토리 → feature.yaml)와는 다른 물건입니다. 그쪽은 compose 왕복용 부품 명세, 이쪽은 계약 별지입니다.

사용법#

cob manifest                          # cwd 프로젝트, 카탈로그 자동 탐색
cob manifest --project-dir ../climb   # 대상 프로젝트 지정
cob manifest --output annex.md        # 출력 경로 지정
cob manifest --strict                 # 검토 필요 항목 존재 시 실패 (CI용)

옵션#

옵션축약설명기본값
--project-dir-p스캔할 생성 프로젝트 디렉토리현재 디렉토리
--bricks-dir -b 브릭 카탈로그 bricks/ 디렉토리 자동 탐색 (BricksRepoLocator)
--output -o 별지 초안 출력 파일 {project-dir}/docs/annex-generic-components-ko.md
--strict검토 필요 항목이 있으면 실패 종료off

무엇을 탐지하는가#

전부 규약 기반 읽기전용 사후 스캔입니다 (생성 시 락파일 없음):

분류탐지 규약브릭 매핑
core 루트 monorepo 마커(melos.yaml/workspace), app/{p} · {p}_console · {p}_widgetbook monorepo/app/console/widgetbook
feature feature/{타깃}/* 전 타깃 (application·console·common …) feature-{정규화된 패키지명} — console 레거시 무접두 포함
networkbackend/*_serverserverpod_backend
package package/*{project}_ 접두사 제거 resources/web_view
라이브러리 프로젝트 내 모든 pubspec.yaml의 git 의존성dependencies · dev_dependencies · dependency_overrides 전부 (CoUI ref 고정은 overrides에 있다) 명칭·고정 ref·pubspec.lock resolved-ref 확정 커밋·출처 URL

.cob/bricks-lock.yaml — 생성 시점 기록 (있으면 정본)#

cob create/cob generate/cob apply는 완료 시점에 어떤 브릭을 어느 카탈로그 커밋에서 편입했는지.cob/bricks-lock.yaml에 기록합니다 (scaffold는 post_gen 훅 산출물까지 디스크 실측, apply는 성공분만, dry-run은 기록 안 함). 항목별로 SHA가 붙습니다 — 최초 생성분과 나중에 apply된 항목의 카탈로그 커밋은 다를 수 있습니다.

락이 있으면 cob manifest는:

  • 기준 커밋을 생성/적용 시점 SHA로 표기합니다 (조회 시점 HEAD의 "다를 수 있음" 경고가 사라지고, HEAD가 전진했으면 드리프트 안내만 남습니다)
  • compose 유래 위치를 검토 필요로 강등합니다 — cob compose/generate가 합성한 커스텀 feature는 동명의 카탈로그 브릭이 있어도 범용 구성요소가 아닐 수 있습니다 (양도 대상 오분류 방지)
  • 락-탐지 드리프트(락에 있는데 미탐지, 또는 그 반대)를 별지에 경고로 남깁니다

손상된 락은 조용히 무시하지 않고 실패(exit data)합니다 — 저신뢰 경로로 조용히 떨어지면 별지가 "조회 시점 HEAD"로 나가는 것을 사람이 모르기 때문입니다. 락이 아예 없으면(락 도입 이전 프로젝트) 기존 사후 탐지 + 경고 경로로 폴백합니다.

카탈로그 대조에 성공한 것만 1절(범용 구성요소) 표에 오르고, brick.yaml의 version·description이 명칭·버전·기능 개요가 됩니다. 카탈로그 저장소의 git 커밋 SHA·remote URL이 "공통 구성요소 저장소에서 개발·관리"(정의 (가)) 표지로 함께 기재됩니다. ref가 고정되지 않은 git 의존성은 "버전을 특정한 의존성"(정의 (나)) 요건 미충족으로 경고합니다.

출력 구조#

  1. 범용 구성요소 — 카탈로그 확인분 (명칭/버전/기능 개요/편입 위치 표)
  2. 버전 고정 라이브러리 의존성 — git 의존성 (ref 미고정은 ⚠️)
  3. 검토 필요 — 탐지했으나 카탈로그에서 확인 못 한 항목. 범용이면 1절에 수기 편입, 발주사 고유 산출물이면 삭제 — 사람이 확정

주의#

  • 이 초안은 통지 별지가 아닙니다. 검토 필요 섹션이 비어 있어도 최종 목록은 반드시 사람이 확정한 뒤 통지하세요.
  • 도너(donor) 프로젝트에 돌리면 아직 브릭으로 수확되지 않은 고유 feature가 대량으로 "검토 필요"에 잡힙니다 — 정상 동작이며, 그 목록 자체가 수확 후보 리스트를 겸합니다.