Conversation
- macOS 잡이 90분 가까이 걸리면서 Ubuntu 잡과 거의 같은 단언을 다시 돌고 있었다. 두 레그의 최근 완주 실행을 대조하면 macOS 에서만 뜻이 있는 단언은 test-run 의 bash 3.2 하한·부팅 시각·데이터 볼륨 철자, 체인 동치 하니스의 분기 열거, 이식성 린트의 다바이트 공백, 라이브니스 스위트의 한글 날짜 지문(Ubuntu 러너에는 ko_KR.UTF-8 이 없어 거기서는 아무것도 검사하지 않고 통과한다), 알림 제목 오라클, 그리고 게이트 스위트의 잠금 팔 절 하나뿐이다. - Makefile 에 그 목록만 도는 test-darwin-narrow 타깃을 두고, 게이트 스위트는 --sections 로 그 절만 지목한다. test-darwin 은 로컬 전체 실행용으로 남긴다. active-notify 두 스위트는 두 레그가 같은 단언을 찍지만 빼도 PR 임계 경로가 움직이지 않아 유지한다. - 워크플로는 make lint 스텝을 빼고(Ubuntu 의 lint 워크플로가 계속 돈다) 좁힌 타깃을 부른다. paths 필터는 유지 집합과 그것이 소스하는 파일에서 유도했다 — test-gate.sh·test-liveness-agreement.sh·run-fixture.sh 를 더하고, 이 레그가 더 이상 돌리지 않는 measure-gate-cost 쌍과 notify 린트 넷·픽스처 둘을 뺐다. - 잡 주석에서 반증된 수치(make lint 7~8.5분, 이식성 린트가 242초 중 206초)와 90분 상한까지의 이력을 걷어내고, 상한은 좁힌 구성에서 유도한 16분으로 낮췄다. brew 스텝 자신의 3분 상한 아래로는 내리지 않는다.
- 워크플로의 paths 필터와 Makefile 타깃은 손으로 따로 유지되는 두 목록이라 조용히 어긋난다. 필터에 없는 스위트는 그것을 고치는 PR 이 잡을 깨우지 못하고, 레그가 돌리지 않는 항목이 필터에 남으면 커버리지 없는 잡이 계속 뜬다. 어느 쪽이든 빌드는 초록이다. - 린트는 양쪽을 각각 유도해 대조한다 — 필터는 모든 이벤트의 paths 합집합, 실행 집합은 run: make 줄의 타깃을 make -n 으로 풀어 얻은 bash <경로> 줄과 거기서 source 줄을 따라간 의존 폐포. 비교는 이름 동등이 아니라 GitHub paths 의 글로브 매칭이고, 부족과 잉여를 양방향으로 본다. 변수만으로 적힌 source 줄은 따라가지 못하며 그 한계는 머리 주석에 적었다. - 자기시험은 mktemp 아래에 작은 레포를 만들어 사례마다 종료 코드와 위반 집합을 단언한다. 픽스처를 커밋하지 않는 이유는 이 변경이 선언한 파일 집합에 픽스처 트리가 없어서다. - make lint 과 LINT_TESTS 에 배선한다.
- 절 13(close 프레임 구속)과 절 14(무효화)는 직전 절이 남긴 대기 승인의 id 를 찾아 `if [ -n … ]` 안에서 단언하는데, `else` 팔이 없어 id 가 비면 안의 단언 일곱·넷이 실패가 아니라 부재로 사라졌다 — 어느 카운터도 움직이지 않아 스위트는 초록인 채 아무것도 덮지 않았다 - 두 블록에 `else bad` 팔을 넣어 미결 승인의 부재를 그 절의 실패로 기록한다. 직렬 실행에서는 절 12 가 경계 승인을 열어 두므로 늘 `if` 팔을 타고, PASS/FAIL 기록은 움직이지 않는다 — 이 수정이 잡는 것은 그 전제가 깨진 경우뿐이다
- 「15/16」 주석은 뒤따르는 절들이 자기 상태 홈을 쓰는 이유로 절 14e 를 오염원으로 지목했으나, 14e 는 자기만의 상태 홈(STATE7)에서 설정 파일을 고치므로 베이스 홈의 표면은 움직이지 않는다 — 14e 가 공유 원장에 남기는 것은 run 스코프 `blocked` 행이고, 아래 절들이 14e 를 이름 대며 기대는 사실은 그것이다 - 실측 오염원은 절 14l 이다: 남의 편집을 흉내 내려고 베이스 홈의 generic.json 에 개행을 덧붙여 exit 7 을 단언하고, 끝의 `set_exec_wt ""` 는 선언만 되돌리고 그 개행은 되돌리지 않는다. 그래서 그 뒤 베이스 홈에 대한 모든 act 가 exit 7 이다 - 트리 밖 사본에서 14l 까지 돌린 직후 첫 act 가 exit 7(강제 표면 이동)이고 generic.json 끝에 개행이 하나 더 있음을 확인했다 - 다음 단계의 계열 프렐류드가 이 주석을 읽고 작성되므로 프렐류드보다 먼저 고친다
- 하니스가 최상위에 들고 있는 `MANIFEST`·`LEDGER`·`GRANT`·`CC_PIPELINE_STAGE_ID` 는 gate.sh/run.sh 도 대입하는 이름이라, 게이트를 fork 대신 소싱하는 순간 하니스의 픽스처 값이 게이트의 값으로 덮인다 — 그 뒤의 모든 단언이 다른 세계를 읽는다 - 셋은 이 파일이 픽스처 전역에 이미 쓰는 접두를 따라 `FX_MANIFEST`·`FX_LEDGER`· `FX_GRANT` 로 바꾼다. 소싱한 자식 안에서 게이트 자신의 변수를 채우는 줄 (`MANIFEST="'"$FX_MANIFEST"'"` 꼴과 `LEDGER="$CC_B_LEDGER"` 등)은 왼쪽을 그대로 둔다 — 그 왼쪽은 게이트의 이름이지 하니스의 것이 아니다 - `CC_PIPELINE_STAGE_ID` 는 최상위 대입·export 였던 자리를 `FX_STAGE_ID` 로 바꾸고, 그 값이 닿아야 하는 한 호출에만 명령 앞 환경 접두로 건넨다 — 접두는 자식에만 닿아 소싱하는 셸을 덮지 못한다 - 산문 주석에서 원장·인가를 가리키던 대문자 낱말과 게이트 변수를 언급한 자리는 되돌려 뜻을 지켰다
- 하니스가 게이트를 소싱하는 순간 두 파일이 같은 최상위 이름을 쓰면 하니스의 픽스처 값이 조용히 덮인다. 핀 시점에 네 이름이 겹쳤고, 다섯째가 들어와도 아무것도 말해 주지 않았다 — 이 린트가 그것을 말한다 - 모집단은 두 파일의 바이트에서 유도한다: 하니스 쪽은 열 0 의 `NAME=`· `export NAME` 이름, 게이트 쪽은 문장 첫머리의 대입 이름. 양쪽 다 명령 앞 환경 접두(같은 줄이든 `\` 로 이어지는 줄이든)는 제외한다 — 접두는 자식에만 닿아 소싱하는 셸을 덮지 못하고, 넣으면 하니스가 자식에게 건네야 하는 `export CC_CLAUDE_BIN` 이 영원히 위반이 된다. 게이트의 `local`·루프 변수· 주석과 하니스의 들여쓴 대입도 제외한다 - 자기시험은 mktemp 아래에 작은 하니스·게이트·드라이버 파일을 만들어 제외 규칙마다 OK 사례 하나, 충돌은 이름을 대는 FAIL 사례, 파일 부재는 ERR 로 종료 코드와 위반 집합을 함께 단언한다. 세 클래스 전부와 규칙 id 전부가 관측되고 단언 수가 하한을 넘어야 통과한다 - `make lint` 과 `LINT_TESTS` 에 한 줄씩 배선한다 — 이 Makefile 은 린트를 한 줄씩 열거하므로 배선 없이는 한 번도 돌지 않는다
- 선택기가 절로 인식하는 배너를 민 꼴(규칙줄 + `# <번호>. `)에 더해 계열
하위 블록이 쓰는 대시 꼴(`# --- <번호>. … ---`)까지 넓히고, 번호 토큰에
`-<숫자><영문자>` 꼬리를 허용해 하위 블록이 부모 번호 아래 자기 번호를
지키게 한다. 절은 어느 꼴이든 다음 절이 열리는 자리에서 끝난다
- 단언을 담은 리프 블록 152 개(머리의 픽스처·정적 스캔 셋을 뺀 전부)에
`# --- section: <id> | group: <g> | covers: <동사들> | anchors: <첫 라벨> ---`
마커를 기계적으로 만들어 넣는다. 그룹은 절이 서 있는 계열(base·cone·sa·
review·sb, 절 18 은 darwin 유지)이고, covers 는 그 구역이 부르는 게이트 동사
집합, anchors 는 첫 리터럴 라벨이다. 순수 컨테이너 셋과 이동 스텁 둘에는
id 를 주지 않는다 — 파견하면 단언 없이 결과 없음으로 보고된다
- 겹친 id 31 개(약 60 배너)를 유일하게 만든다: 대시 꼴 하위 블록은
`<부모>-<자기>` 로(슬라이스 A → 35-*, 리뷰 의무 하위 → 37-*, 슬라이스 B →
38-*), 파일 끝의 새 민 꼴 절은 비어 있는 다음 번호로(30→35, 31→36, 32→37,
33→38), 앞 절에 붙은 민 꼴 중복은 문자 접미로(8b→8e, 15→15b). 「세 구멍」
절은 콘 하위 블록 46 개가 접두로 쓰는 31 을 콘에 남기고 30b 로 옮기며 그
하위 둘은 30b-1·30c 가 된다. 바뀐 번호를 이름 대는 산문 다섯 자리를 함께 고친다.
절 18 은 Makefile 이 문자열로 지목하는 계약이라 그대로다
- `--run-one <id>` 를 더한다: `--sections` 와 같은 컷을 만들되 모르는 id·둘
이상·`-` 는 전량 실행으로 떨어지지 않고 exit 2 다 — 워커가 모르는 id 로
40 분을 돌면 파견-반환 대조가 그것을 성공으로 세기 때문이다
- 컷은 선택된 절의 group 에 대해 머리에 `pre_<group>() {` 가 정의돼 있으면
그 절 앞에 호출 한 줄을 넣는다. 이 커밋에는 그런 함수가 없어 컷은 오늘과
같고, 다음 커밋의 계열 프렐류드가 이 자리를 쓴다
- 콘·슬라이스 A·리뷰 의무·슬라이스 B 네 계열이 컨테이너에 인라인으로 두던 공유 설정과 헬퍼를 머리의 `pre_cone`·`pre_sa`·`pre_review`·`pre_sb` 로 옮기고, 기본 계열이 절 사이에 흩어 두던 순수 정의(`SETTINGS_DIR`·`RD`· `LINKED`·`STATE7`·`RD_L`·`STATE_LATE`·`gateL`·`HL`)는 `pre_base` 로 모아 머리에서 한 번 부른다. 전량 실행은 컨테이너 자리에서 같은 함수를 부르므로 직렬 순서가 그대로이고, 선택기가 컷 앞에 넣는 호출과 겹쳐도 멱등 가드로 한 번만 돈다. 절 하나를 홀로 잘라 돌릴 때 정의되지 않은 이름으로 죽던 것이 이 이동의 대상이다. - 정적 스캔 두 절(0a·0b)과 둘이 공유하는 `scanned_files()` 를 프리앰블 밖으로 뺀다. 헬퍼는 `pre_static` 에 두어 어느 쪽을 잘라도 함께 실리고, 두 절은 `group: static` 마커를 얻어 `--sections`·`--run-one` 으로 지목할 수 있다. 픽스처에 기대지 않는 스캔이 모든 컷마다 린트 계열 전부를 훑던 비용이 이렇게 빠지고, `--sections 18` 의 총계는 픽스처 자기검사 셋 + 절의 셋 = 6 이 된다. - 단언은 하나도 옮기지 않았다. 옮긴 것은 설정과 정의뿐이며, 픽스처를 실제로 만드는 명령(워크트리 추가 등)은 제자리에 둔다 — 옮기면 앞 절의 단언이 보는 세계가 바뀐다.
- `gate_surface_digest_raw`·`gate_resettle_settings`·`gate_main` 런 개시 블록의 머리말이 설정 유도를 「매니페스트와 원장의 `대상 추가` 행의 순수 함수」로, 대상을 「런타임에 추가된다」고 적고 있었다. 코드는 원장 행을 하나도 읽지 않는다 — 대상 목록은 킥오프 전용 매니페스트의 target 행에서만 나오고, `대상 추가` 행은 넓어졌다는 기록일 뿐 다음 유도의 입력이 아니다. - 이 거짓을 믿고 설정 키에 원장 행을 넣으면 설정이 변할 수 없는 순간에도 키가 움직여 조기 종료가 조용히 무효가 된다. 그래서 조기 종료를 만들기 전에 먼저 고친다. 같은 머리말의 「세그먼트 자기 워크트리·층 1 에서 추가된 저장소」도 `gate_write_settings` 가 그런 디렉터리를 목록에 넣지 않으므로 함께 고쳤다. - 코드 동작 변경은 없다.
- 매 게이트 호출이 설정 트리를 한 벌 더 렌더링하고 `diff -r` 로 「바뀐 게 없다」를 알아내고 있었다. 렌더러가 보간하는 입력 — 스테이지 종류, 훅·플러그인 위치, 런 디렉터리, 베이스, 매니페스트·원장·인가 디렉터리, 설계 문서 위치, 사용자 설정 디렉터리, 매니페스트 target 행 원문, gate.sh 자신의 sha256 — 의 sha256 을 `$RUN_DIR/settings-key` 에 두고, 같으면 잠금·다이제스트·렌더 전에 반환한다. 원장 행·벽시계·파일 내용은 입력에 넣지 않는다 — 넣으면 절감이 무효가 된다. - 키는 렌더와 기준선 기록이 둘 다 성공한 뒤에만 쓴다: 런 개시, 재유도 뒤, 탐침 렌더가 디스크와 같을 때. 그래서 `gate_write_settings` 가 변형 파일 쓰기 실패를 삼키지 않고 반환하게 했다. 빠뜨린 입력의 실패 방향은 「설정이 넓어지지 않아 스테이지가 거부됨」으로 닫혀 있다. - 탐지는 그대로다. `gate_surface_check` 가 매 act 마다 독립적으로 다이제스트를 재고, 변조된 설정 파일은 조기 종료와 무관하게 exit 7 이다. 트리 밖 드라이버로 입력 불변·입력 변경·재기록 실패·변조 네 경우를 확인했다. - 실측(트리 밖 드라이버, 10회 중앙값): 정상 상태 `gate_resettle_settings` 0.186s → 0.052s.
- 게이트 호출 하나가 같은 매니페스트 파일을 40번 넘게 다시 읽었다 —
`manifest_field` 마다 awk 한 번, `target_field` 마다 grep+tr+sed 체인.
run.sh 에 옵트인 메모 `manifest_snapshot_take` 를 두어 한 번의 awk 로
머리말·절 필드·target·사전 인가·자동 채택·종료 절·룰 줄·kind 토큰·인가
표제 수를 적재하고, 독자들은 `MANIFEST_MEMO_PATH` 가 현재 `MANIFEST` 와
같을 때만 fork 없는 셸 확장으로 답한다. 아니면 기존 파일 읽기를 그대로 탄다.
- 캐시되는 것은 파싱이지 판정이 아니다. `check_manifest` 의 모든 검사가 같은
순서·같은 문구·같은 종료 코드로 돈다. 각 독자는 파일 독자가 내던 바이트 —
첫 매치, 끝 공백 처리, 부재 시 빈 출력, 행 마지막 필드의 줄바꿈 유무 — 를
그대로 낸다. 로컬의 모든 런 매니페스트에 대해 파일 독자와 메모 독자의
출력을 대조해 확인했다.
- 스냅숏은 `gate_main` 이 경로를 정규화한 직후, 첫 독자인 `check_manifest`
전에 부모 셸에서 뜬다(명령 치환 서브셸도 부모의 메모를 상속한다). 드라이버는
스냅숏을 뜨지 않으므로 드라이버 동작은 바이트 단위로 그대로다. bash 3.2
호환 — 연관 배열·mapfile 없이 줄 단위 텍스트와 `case`/`${var#…}` 로 조회한다.
- 룰 스크립트처럼 자식 프로세스로 매니페스트를 읽는 경로는 바꾸지 않는다.
- `gate_check_grant` 가 열 개 필드를 물을 때마다 `gate_grant_field` 가 파일 전체에 sed 네 개를 띄웠다. `gate_grant_block_take` 가 이 런의 블록을 한 번 잘라 메모에 두고 각 필드는 셸 확장으로 답한다. 메모는 인가 경로와 런 id 둘 다에 매여 있어 다른 인가·다른 런에는 답하지 않고 파일 읽기로 떨어진다. - 외래 블록·자기 블록 부재·owner-doc 대조·아홉 필드 존재·권한 절단점 어휘· 대상별 절단점 상한 비교가 전부 같은 순서·같은 문구·같은 종료 코드로 돈다. 로컬의 모든 인가 기록·런 블록에 대해 필드 독자의 바이트 동등성을 대조했다. - 실측(트리 밖 드라이버, 10회 중앙값): `gate_check_grant` 0.075s → 0.050s.
- 도구 목록에 `perl` 을 더해 `processes_total` 이 `gate_chain_verify` 의 단일 `perl` 패스를 세게 한다. 0 은 낡은 목록에 대한 정확한 산술이었고 죽은 계수기와 구별되지 않았다. 이제 모든 크기에서 1 이 단일 패스 회귀 가드다. - `gate_progress_vector` 를 자기 계수기 파일로 나란히 불러 구별 세그먼트 id 당 기울기를 잰다. 그 축의 입력 둘을 이 스크립트가 만든다 — `--manifest PATH` (없으면 target 행과 `## 인가` 를 담은 픽스처를 생성하고, 읽을 수 없으면 0 이 아니라 exit 2 로 거부)와 `--segments K`(구별 id K 개의 segment 행을 체인에 맞게 찍는 원장 생성). 그 둘 없이 축만 얹으면 계측기는 어떤 입력에도 같은 한 점을 보고해 구조적으로 초록인 가드가 된다. 새 키는 `progress_*`· `segments`·`manifest_memo` 로 낸다(`field()` 가 첫 매치를 취한다). 원장· 매니페스트 지문을 앞뒤로 감싸 읽기 전용을 지킨다. - 자기시험: 두 핀을 0 → 1 로 옮기고 「0 이 바닥」 논증을 고쳤다. 기울기는 K=3·4·5 에서 재어 두 증분이 서로 같고 14 임을 못박으며(grep 4·sed 4· tail 4·tr 2), 음성 대조군 둘을 둔다 — 세그먼트 행 없는 원장은 행수를 두 배로 해도 평평하고, 매니페스트를 빼면 exit 2 다. - 기울기 축은 엔티티 항이 실측된 운반자 하나를 지킬 뿐 다른 경로에 엔티티 항이 없음을 증명하지 않는다.
- cycle 행에 선택 필드 모드(전체|델타, 부재는 전체)와 기준 사이클을 받는다 - 모드=델타 행은 어휘, 양의 정수 기준, 같은 세그먼트의 기준 행 존재(필드 값 동등), 기준이 전체, 기준이 마지막 전체, 세그먼트 워크트리에서의 조상 관계(exit 1 과 판정 불가를 다른 문면으로), 기준 리포트의 발견 요약을 쓰기 시점에 검사한다 - 모든 cycle 행은 자기 리포트의 리뷰 모드 줄과 모드를 대조하고, 둘 다 델타면 기준 사이클 번호와 기준 리뷰 HEAD 를 커밋 단위로 대조한다. 리포트가 델타인데 행이 침묵하면 다음 사이클의 전체 기준으로 채택되므로 전체 행에도 돈다 - 리포트를 열 수 없으면 델타 행만 거부하고 전체 행은 기존 경로대로 통과시킨다. 거부는 전부 exit 2 - 상대 리포트 경로는 머지 룰과 같은 식으로 해소하는 헬퍼 하나로 읽는다 - 스냅숏 cycles[] 가 라우터의 기준 선택에 필요한 모드·리뷰 HEAD·리포트 경로를 싣는다 - 게이트 스위트에 기준 조건·모드 대조·회귀 케이스를 문면까지 단언하는 절을, 스냅숏 스위트에 세 키 단언을 더한다
- 행 계열 표의 cycle 행에 모드(선택, 부재는 전체)와 기준 사이클(모드=델타일 때만 필수, 그 밖에는 거부)을 더한다 - 게이트가 모드=델타 행에만 도는 검사 일곱과 모든 cycle 행에 도는 리포트 대조 검사를 문단으로 적는다 - 검사 8 이 전체 행에도 도는 이유(위험은 과소 주장), 양쪽 부재가 같은 전체로 읽혀 기존 행이 거부되지 않는다는 것, 거부는 전부 exit 2 이고 수선은 리포트에 맞춰 행을 다시 쓰는 것임을 함께 적는다
- act --kind cycle 템플릿에 선택 필드 모드·기준 사이클을 더하고, 스냅숏 cycles[] 키 표를 모드·리뷰 HEAD·리포트 경로까지 넓힌다 - 기준 선택: 이 세그먼트의 모드가 전체이거나 빈 행 중 사이클이 가장 큰 행을 골라 세 기준 플래그로 리뷰 스테이지에 싣고, 없으면 기존대로 전체 리뷰를 파견한다 - 상대 리포트 경로는 라우터가 쥔 매니페스트 경로 기준으로 절대 경로로 해소해 넘긴다 - 행의 모드는 파견 의도가 아니라 리포트 개요의 리뷰 모드 줄에서 옮긴다 — 스킬이 전체로 강등했는지는 리포트만 알고, 게이트가 둘의 불일치를 거부한다 - 새 질문 지점은 없고, 스냅숏 창 밖으로 밀린 기준은 전체 리뷰로 간다는 한계를 적는다 - 교대 스킬은 기반 스킬을 참조하지 않으므로 같은 내용을 자기완결적으로 싣는다
… 재판정한다 - --basis-cycle·--basis-review-head·--basis-report-path 세 플래그를 frontmatter·usage·입력 해석에 더한다. 셋이 함께 와야 델타를 시도한다 - 자격 검사(셋 다 있음, 형식, 기준 HEAD 해소, 명시한 대상 head 의 조상, 기준 리포트의 발견 요약, 기준이 델타가 아님)를 두고, 어느 하나라도 실패하면 정지가 아니라 전체 리뷰로 강등해 개요에 사유를 남긴다 - 델타 파일 집합을 세그먼트 쪽 커밋과 병합 충돌 해소의 파일 ∩ 세그먼트 자기 diff 로 정하고, 각 파일은 hunk 가 아니라 베이스 대비 파일 전체 diff 를 읽는다. 팀 크기도 그 집합 규모로 산정한다 - 기준 리포트의 모든 P0·P1 을 컨텍스트 패키지 항목 18 로 리뷰어에게 넘겨 근거 있는 재판정을 받는다 — git 사실만으로 이월하지 않는다 - 리포트에 실제로 일어난 모드를 적는 리뷰 모드 줄(항상)과 기준 사이클 재판정 절(델타일 때), 발견 요약의 집계 규칙을 이 팔의 오버레이로 적는다. 공유 리포트 템플릿은 바꾸지 않는다 - 범위 불변식에 드라이버가 선언한 델타는 자율적 축소가 아니라는 개정을 덧붙인다 - README 를 재생성한다
…07-A # Conflicts: # README.md # plugins/cc-cmds/skills/review-unattended/SKILL.md
리뷰 사이클에 델타 모드가 생겨 재리뷰가 마지막 전체 사이클 이후 바뀐 파일만 새로 읽고, 게이트가 cycle 행의 모드·기준을 리포트와 git 사실에 대조한다. - 30ca16c feat(gate): cycle 행에 델타 모드를 받아 기준 조건과 리포트 모드를 쓰기 시점에 대조한다 - 0be450c docs(contract): cycle 행에 모드·기준 사이클 필드와 델타 검사 여덟을 적는다 - bcfdf16 docs(router): 라우터가 마지막 전체 사이클을 기준으로 델타 리뷰를 파견하고 모드를 리포트에서 옮겨 적는다 - 84c1565 feat(review-unattended): 앞 전체 사이클을 기준으로 델타 파일 집합만 새로 읽고 기준 P0·P1 을 전부 재판정한다
perf(gate): 게이트 전처리 묶음 — 설정 조기 종료·매니페스트/인가 파싱 한 번, 계측기 두 축 복구
lint 타깃에 양쪽이 서로 다른 린트를 한 줄씩 더해 충돌했다. 둘 다 실재하는 스크립트이고 서로 다른 것을 검사하므로 합집합으로 풀었다 — keepset-paths 는 좁힌 macOS 레그의 유지 집합과 paths 필터가 어긋나는 것을, recovery-interlock-pins 는 회복 인터록 단언을 지킨다. make lint 으로 둘이 나란히 도는 것을 확인했다.
ci: macOS 레그를 그 호스트만 검사할 수 있는 스위트로 좁히고 필터 일치 린트를 더한다
절 배너가 양쪽에서 같은 자리에 달려 48건이 충돌했다. 전부 주석 줄끼리의 충돌이고 비주석 코드 충돌은 0건임을 전수 확인한 뒤, 이 브랜치 판본을 택했다 — master 판본은 중복 번호 열다섯을 피해 간 49개 부분집합이고, 이 브랜치가 그 제약 자체를 없애면서 리프 블록 전체를 154개로 주소화한다. master 판본의 앵커는 각 절 첫 단언 라벨에서 기계적으로 뽑은 것이라 버려도 잃는 것이 없다. Makefile 의 lint 목록과 LINT_TESTS 는 양쪽이 서로 다른 한 줄씩 더한 것이라 합집합으로 뒀다. 같은 구간의 비배너 변경(살아 있는 스테이지가 있으면 행위 예산 경계를 발동시키지 않는다)은 충돌 없이 병합됐고, 그 커밋이 들인 비주석 19줄이 병합본에 전부 남아 있음을 확인했다. make lint 통과.
- 정체 경계 승인을 해소해도 run 디렉터리의 계수가 그대로라, 유예가 풀린 다음 판정에서 같은 횟수로 같은 질문이 다시 발행됐다(B3 는 승인 3초 뒤, B1 은 교대 기동 호출 하나로). 경계 승인이 닫히면 사람이 닫든 자동으로 닫든 B1·B2 반복 계수를 0 으로, B3 창 기준을 닫는 시점 총계로 되돌린다. B4 는 닫힌 비율보다 10포인트 더 오를 때까지 다시 묻지 않는다. - 무인 런은 답할 사람이 없어 승인 대기가 곧 정지였다. 추천안이 있는 승인은 게이트가 발행 즉시 닫는다 — 경계 승인(B1~B4, SHIFT-FLOOR)은 계속으로 승인, 판단 승인은 라우터가 제출한 판단을 채택한다. 위험을 사용자에게 넘기는 팀-구성·시각-면제 부류는 대기 대신 거부로 닫는다. - 추천안이 없는 행위 승인(사전 인가 밖 외부 상태 행위)은 자동 해소하지 않는다. - 발행 행은 그대로 남기고, 닫는 행에 처분 사유=자동 해소·응답 토큰=- 를 실어 사람의 답과 구별한다. 이미 열려 있던 경계·판단 승인도 다음 경계 판정·재제출 때 같은 방식으로 닫혀 진행 중인 런이 이어진다. - CC_CMDS_AUTOPILOT_AUTO_RESOLVE 를 0/off/false/no 로 두면 이전 동작(사람 대기)으로 돌아간다. 기존 시험 스위트는 그 모드로 고정하고 자동 해소 경로는 전용 단언으로 검증한다. - 라우터 계약(autopilot, autopilot-router-shift)과 사이드카 계약에 새 동작을 반영한다.
살아 있는 스테이지 아래 행위 예산 경계를 다루는 두 블록이 개명 전 이름 LEDGER·MANIFEST 를 참조한 채로 병합됐다. 그 전역들은 같은 병합의 반대편에서 FX_LEDGER·FX_MANIFEST 로 개명됐고, 두 변경이 파일의 다른 줄에 있어 문면상 충돌이 나지 않았다. 그래서 병합은 깨끗했고 전량 실행이 깨졌다. scripts/test-gate.sh: line 8685: LEDGER: unbound variable scripts/test-gate.sh: line 8691: MANIFEST: unbound variable LEDGER2·LEDGER4·LEDGER5 는 서로 다른 픽스처의 변수라 그대로다.
feat(review-unattended): 리뷰 사이클 델타 모드 — 앞 전체 사이클 기준으로 변경분만 다시 읽는다
fix(gate): 추천안이 있는 승인을 자동 해소하고 경계 승인 해소 시 계수를 재기준선화한다
추천안이 있는 승인의 자동 해소와 경계 승인 계수 재기준선화(#363)를 마켓플레이스 사용자에게 전파한다. 게이트 호출당 파싱 절감도 함께 나간다. - 0b1bb4a fix(gate): 추천안이 있는 승인을 자동 해소하고 경계 승인 해소 시 계수를 재기준선화한다 - 993961a perf(orchestrator): 매니페스트를 게이트 호출당 한 번만 파싱한다 - 87bef0b perf(gate): 인가 기록에서 이 런의 블록을 한 번만 잘라 필드를 읽는다 - 5740802 perf(gate): 설정 유도의 입력이 그대로면 gate_resettle_settings 를 조기 종료한다 - 8285341 fix(gate): 설정 유도의 입력을 원장 행이라고 적은 주석 세 자리를 바로잡는다 - 8637ebc feat(scripts): 게이트 비용 계측기에 체인·기울기 두 축을 두고 자기시험을 맞춘다 - 9a3a959 feat(ci): 좁힌 macOS 레그의 유지 집합과 경로 필터가 어긋나면 잡는 린트를 더한다 - 5e2fd28 feat(ci): macOS 레그를 그 호스트만 검사할 수 있는 스위트로 좁힌다 - f5617fd test(gate): 절 선택자가 실제로 쓰이도록 배너를 단다
master 가 사이클 행의 델타 모드 시험을 더하면서 개명 전 전역 이름을 스물두 줄 들여왔다. 이 브랜치가 그 전역들을 FX_MANIFEST·FX_LEDGER 로 개명했으므로 두 변경은 문면상 충돌하지 않은 채 의미가 어긋난다 — 앞선 병합에서 같은 일이 한 번 있었고 그때는 전량 실행이 깨지고 나서야 드러났다. 이번에는 병합 직후 그 이름을 참조하는 자리를 먼저 훑어 스물두 줄을 픽스처 이름으로 맞췄다. 바뀐 줄은 전부 한 절(짧은 sha 하한) 안에 있고, 그 절을 좁혀 돌려 개명 관련 오류가 사라진 것을 확인했다.
feat(test-gate): 하니스 결함 둘을 고치고 리프 블록 전체를 절로 주소화한다
chore(release): v2.14.1
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
리뷰 기록을 남기기 위한 draft PR 입니다. 이미 master 에 머지된 #770 #785 #786 #792 의 착지분을 0ef8d48 (#785 머지의 첫 부모) 기준 한 diff 로 담습니다. 머지하지 않고 리뷰가 끝나면 닫습니다.