@chrono-meta/fh-gate 3.0.0 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/regression/probes_live.yaml +137 -0
- package/.claude/rules/.residency-patterns.defaults +7 -0
- package/.claude/rules/fh_4axis_gate.md +50 -1
- package/.claude-plugin/marketplace.json +8 -2
- package/AGENTS.md +27 -0
- package/CATALOG.md +17 -0
- package/CLAUDE.md +12 -2
- package/README.ja.md +51 -7
- package/README.ko.md +48 -7
- package/README.md +37 -5
- package/README.zh.md +45 -8
- package/docs/STANDARDS_ALIGNMENT.md +61 -0
- package/docs/USER_GUIDE.md +3 -0
- package/docs/USE_CASES.md +50 -0
- package/docs/model_tier_expectations.md +60 -0
- package/knowledge/shared/harness-core/fh_three_layer_canon.md +30 -10
- package/knowledge/shared/harness-core/field_verdict_crossfamily_gate.md +8 -0
- package/knowledge/shared/harness-core/harness_incubator_doctrine.md +9 -0
- package/knowledge/shared/harness-core/iso_ai_standards_crosswalk.md +139 -0
- package/knowledge/shared/harness-core/measurement-integrity-checklist.md +20 -0
- package/knowledge/shared/learnings/subagent_invocations_log.yaml +441 -4
- package/package.json +40 -2
- package/plugins/fh-commons/.claude-plugin/plugin.json +1 -1
- package/plugins/fh-commons/skills/preprep/README.md +4 -1
- package/plugins/fh-commons/skills/preprep/SKILL.md +99 -3
- package/plugins/fh-commons/skills/preprep/diagram_from_json.py +154 -0
- package/plugins/fh-commons/skills/preprep/fixtures/fixture_R3_negative.pptx +0 -0
- package/plugins/fh-commons/skills/preprep/fixtures/fixture_R3_positive.pptx +0 -0
- package/plugins/fh-commons/skills/preprep/fixtures/mk_slide_fixtures.py +179 -0
- package/plugins/fh-commons/skills/preprep/interslide_deps.py +98 -9
- package/plugins/fh-commons/skills/preprep/lane_adjacent_dup.py +4 -1
- package/plugins/fh-commons/skills/preprep/lane_diagram.py +95 -0
- package/plugins/fh-commons/skills/preprep/lane_geometry.py +181 -0
- package/plugins/fh-commons/skills/preprep/lane_promise.py +4 -1
- package/plugins/fh-commons/skills/preprep/lane_slide_refs.py +134 -0
- package/plugins/fh-commons/skills/preprep/lane_slide_relations.py +300 -0
- package/plugins/fh-commons/skills/preprep/preprep.py +129 -8
- package/plugins/fh-commons/skills/preprep/preprep_wire.py +210 -0
- package/plugins/fh-commons/skills/preprep/presentation_checklist.md +4 -0
- package/plugins/fh-commons/skills/preprep/surfaces.example.yaml +18 -0
- package/plugins/fh-commons/skills/preprep/test_preprep_lanes_rp.py +184 -0
- package/plugins/fh-meta/.claude-plugin/plugin.json +1 -1
- package/plugins/fh-meta/CHANGELOG.md +43 -1
- package/plugins/fh-meta/skills/auto-decorrelation/SKILL.md +87 -2
- package/plugins/fh-meta/skills/frontier-digest/SKILL.md +2 -2
- package/plugins/fh-meta/skills/frontier-digest/SKILL_detail.md +25 -5
- package/plugins/fh-meta/skills/hub-cc-pr-reviewer/SKILL.md +11 -0
- package/plugins/fh-meta/skills/hub-cc-pr-reviewer/SKILL_detail.md +3 -0
- package/plugins/fh-qp/.claude-plugin/plugin.json +22 -0
- package/plugins/fh-qp/README.md +71 -0
- package/plugins/fh-qp/fixtures/evidence_known_clean.txt +3 -0
- package/plugins/fh-qp/fixtures/evidence_known_dirty.txt +6 -0
- package/plugins/fh-qp/fixtures/reach_known_partial.tsv +4 -0
- package/plugins/fh-qp/fixtures/reach_known_reached.tsv +4 -0
- package/plugins/fh-qp/fixtures/reach_known_wall.tsv +3 -0
- package/plugins/fh-qp/fixtures/verdicts_known_bad_branch.tsv +2 -0
- package/plugins/fh-qp/fixtures/verdicts_known_bad_vacuous_machine.tsv +2 -0
- package/plugins/fh-qp/fixtures/verdicts_known_good.tsv +4 -0
- package/plugins/fh-qp/fixtures/verdicts_verify_only.tsv +3 -0
- package/plugins/fh-qp/qp_profile.example.yaml +29 -0
- package/plugins/fh-qp/scripts/qp_tools.sh +216 -0
- package/plugins/fh-qp/skills/qp/SKILL.md +65 -0
- package/plugins/fh-qp/skills/qp-plan/SKILL.md +42 -0
- package/plugins/fh-qp/skills/qp-regress/SKILL.md +45 -0
- package/plugins/fh-qp/skills/qp-run/SKILL.md +49 -0
- package/scripts/chamber_run.sh +14 -5
- package/scripts/com.forge-harness.live-eval.plist +84 -0
- package/scripts/compaction_probe.sh +9 -35
- package/scripts/directional_diff_gate.sh +14 -2
- package/scripts/frontier_digest_autopilot.sh +4 -1
- package/scripts/map_postprocess.py +90 -0
- package/scripts/outbound_query_guard.sh +131 -0
- package/scripts/outbound_query_hook.sh +373 -0
- package/scripts/package_coverage_check.sh +55 -16
- package/scripts/pipe_verdict_guard.sh +41 -1
- package/scripts/probe_live_eval.sh +240 -0
- package/scripts/probe_live_eval_lib.py +579 -0
- package/scripts/proposal_hook.sh +120 -17
- package/scripts/push_zone_check.sh +78 -0
- package/scripts/residency_closure_scan.py +252 -0
- package/scripts/selfcheck.sh +41 -1
- package/scripts/session_close_check.sh +100 -0
- package/scripts/sim_isolated_run.sh +98 -2
- package/scripts/test_action_yml_lanes.sh +97 -0
- package/scripts/test_fh_qp_lanes.sh +105 -0
- package/scripts/test_gate_two_verdicts_lanes.sh +139 -0
- package/scripts/test_map_postprocess_lanes.sh +143 -0
- package/scripts/test_marker_affected_lanes.sh +93 -0
- package/scripts/test_marker_crossfamily_lanes.sh +90 -6
- package/scripts/test_marker_oracle_lanes.sh +136 -0
- package/scripts/test_outbound_query_hook_lanes.sh +433 -0
- package/scripts/test_outbound_query_lanes.sh +87 -0
- package/scripts/test_pipe_verdict_guard_lanes.sh +26 -0
- package/scripts/test_preprep_diagram_lanes.sh +87 -0
- package/scripts/test_preprep_drift_anchor.sh +3 -3
- package/scripts/test_preprep_slide_refs_lanes.sh +169 -0
- package/scripts/test_probe_live_eval_lanes.sh +437 -0
- package/scripts/test_proposal_hook_lanes.sh +22 -1
- package/scripts/test_push_zone_lanes.sh +304 -0
- package/scripts/test_residency_closure_lanes.sh +70 -0
- package/scripts/test_sim_isolated_run_lanes.sh +119 -0
- package/scripts/test_utterance_intake_lanes.sh +414 -0
- package/scripts/test_worktree_reclaim_lanes.sh +70 -0
- package/scripts/transcript_utterances.py +222 -0
- package/scripts/utterance_intake.sh +424 -0
- package/scripts/validate_yaml.sh +27 -0
- package/scripts/worktree_reclaim.sh +95 -0
- package/templates/.git-hooks/pre-commit +353 -1
- package/templates/.git-hooks/pre-push +91 -0
- package/templates/RED_TEAM_REPORT.md +49 -0
- package/templates/settings.PreToolUse.snippet.json +65 -1
|
@@ -210,7 +210,7 @@
|
|
|
210
210
|
skill: "Agent(model:fable) + codex gpt-5.6-sol (cross-family)"
|
|
211
211
|
context: "identity-fulfillment audit — 2 decorrelated drafters produce per-identity falsifiable checklist (operator: verify each FH identity, then sim-conductor run)"
|
|
212
212
|
target: "FH 5-identity checklist (cluster / incubator / governance-gate / frontier-propagation / amplifier)"
|
|
213
|
-
outcome:
|
|
213
|
+
outcome: accepted
|
|
214
214
|
note: "dispatched parallel; Fable=higher-tier same-family, codex=true cross-family. Synthesis → sim-conductor persona run to shake out overclaim. Log outcome on return."
|
|
215
215
|
- date: 2026-07-14
|
|
216
216
|
skill: "identity-audit — Agent(model:fable) + codex gpt-5.6-sol + general-purpose origin-miner (3-source)"
|
|
@@ -2419,7 +2419,7 @@
|
|
|
2419
2419
|
purpose: "harness-doctor L3~L5 + 메타하네스 residency ledger 를 네 렌즈로 병렬 분해. 거버너는 L1·L1-E·푸터프린트·pointer-illusion·SKILL 크기를 직접 측정하고, 렌즈끼리 파일이 안 겹치게 스코프를 갈랐다."
|
|
2420
2420
|
prompt_summary: "각 레그에 계기 규율을 명시 주입 — ① known-positive/known-negative 쌍으로 계기 판별력 먼저 검정하고 못 가르면 UNCALIBRATED ② 카운트마다 손검증 1건 ③ not found = UNMEASURED, 0 아님 ④ tier 확정 금지, 후보만. L5 에는 「기록하지 않는 소스를 grep 해서 0회를 내면 그건 측정이 아니라 생성」을 명시."
|
|
2421
2421
|
reps: 1
|
|
2422
|
-
outcome:
|
|
2422
|
+
outcome: accepted
|
|
2423
2423
|
finding: "미착지 — 네 레그 진행 중. 거버너 자체 측정분은 확정: always-loaded 144,205자(M-tier, 임계 80k) · memory-index 25,472자(S-tier, 임계 10k)이며 **로더 하드리밋 초과로 엔트리 5건이 이 세션에 실제로 미로드**(손검증). ★ pointer-illusion 「2건」은 **둘 다 오탐**이었고 원인은 harness-doctor SKILL.md 가 들고 있는 정규식 자신 — `templates/` 접두를 떨어뜨리고 `{project}/{domain}/` 자리표시자를 실경로로 읽는다. 손검증 안 했으면 M-tier 두 건을 지어낼 자리였다."
|
|
2424
2424
|
note: "운영자 상시 요청(CLAUDE.local.md, lease→2026-11-09, scope=서브에이전트 디스패치)에 따라 건별 승인 없이 디스패치. 워크플로/deep-research 는 범위 밖이라 안 씀. 단위는 문자(chars)로 통일 — 로더 경고 24.9KB 가 25,472자/1024 와 정확히 일치해 로더도 문자 기준임을 확인(바이트로 쟀으면 40,657 로 과대계상)."
|
|
2425
2425
|
cost: "UNMEASURED (완료 알림의 subagent_tokens 로 마감 시 갱신) · 거버너 = UNMEASURED. 합계 안 적는다"
|
|
@@ -2978,7 +2978,7 @@
|
|
|
2978
2978
|
`run_in_background` Bash 둘은 서브에이전트가 아니다).
|
|
2979
2979
|
tally 실물(`tracks/_meta/.subagent_dispatch_tally`)은 **날짜 한 줄만** 적는다 —
|
|
2980
2980
|
2026-09-02 항목 1건, 파일 mtime 01:15.
|
|
2981
|
-
outcome:
|
|
2981
|
+
outcome: accepted
|
|
2982
2982
|
evidence: >-
|
|
2983
2983
|
🟥 **귀속 불가이고, 그건 계기의 성질이다.** SubagentStop 훅이
|
|
2984
2984
|
`HUB="${CLAUDE_PROJECT_DIR:-$HOME/projects/forge-harness}"` 로 경로를 잡는다 —
|
|
@@ -3038,7 +3038,7 @@
|
|
|
3038
3038
|
④-e 가 «오늘 디스패치 2 · 원장 0» 으로 ❌. 자정 이후 이 세션의 Agent 호출은 0 (도구 호출은 Bash·gh·npm 뿐).
|
|
3039
3039
|
tally 실물 `tracks/_meta/.subagent_dispatch_tally` 에 2026-09-03 두 줄. 같은 시각 이 머신에서 sim 추출기
|
|
3040
3040
|
`claude -p` 40건과 sim 팔이 돌았으나 SubagentStop 은 Agent 도구에만 걸린다 — 출처 미확인.
|
|
3041
|
-
outcome:
|
|
3041
|
+
outcome: accepted
|
|
3042
3042
|
evidence: >-
|
|
3043
3043
|
#584(2026-09-02) 와 같은 얼굴 — tally 는 머신 전역(`CLAUDE_PROJECT_DIR` 미설정 세션이 허브 tally 에 쓴다),
|
|
3044
3044
|
④-e 는 세션 로컬. «내가 안 했다»와 «기록이 없다»를 가를 수단이 없다.
|
|
@@ -3080,3 +3080,440 @@
|
|
|
3080
3080
|
evidence: >-
|
|
3081
3081
|
tracks/_meta/frontier_verification_map_2026-09-04.md — 델타 5, FH 앞섬 2, 외부 부재 3(정직 표기). 170,191 tokens · 16 tool_uses.
|
|
3082
3082
|
note: 두 조사가 합쳐져 six_axis_review 판정안(강화 4·축소 2)이 됐다.
|
|
3083
|
+
- date: 2026-09-03
|
|
3084
|
+
agent: fh-meta:expert (default model)
|
|
3085
|
+
invoker: forge-harness-27
|
|
3086
|
+
task: 웹 QA 에이전트 프런티어 ↔ qasp 3막 대응표 (1차)
|
|
3087
|
+
count: 1
|
|
3088
|
+
context: API 529 Overloaded 로 조기 종료 — 산출 없음. sonnet 재시도가 성공(별도 기록).
|
|
3089
|
+
outcome: rejected
|
|
3090
|
+
evidence: "task-notification «Agent terminated early due to an API error: 529»"
|
|
3091
|
+
note: 실패 원인은 모델이 아니라 서버 과부하. 이후 디스패치는 sonnet 으로 갔다.
|
|
3092
|
+
- date: 2026-09-04
|
|
3093
|
+
agent: claude-code-guide (default model)
|
|
3094
|
+
invoker: forge-harness-28 (Fable 5.1 거버너, 저녁)
|
|
3095
|
+
task: 리모트컨트롤 자동 켜짐 디폴트 off 설정 키 확인(공식 문서)
|
|
3096
|
+
count: 1
|
|
3097
|
+
context: 운영자 중간 요청. ~/.claude.json 의 remoteEnabled 가 안 잡던 동작.
|
|
3098
|
+
outcome: accepted
|
|
3099
|
+
evidence: >-
|
|
3100
|
+
remoteControlAtStartup=false(user settings.json) — 문서 URL 포함 회신. 적용 완료. 116,730 tokens · 6 tool_uses.
|
|
3101
|
+
note: 문서 근거를 요구해 추측 답을 막았다.
|
|
3102
|
+
- date: 2026-09-04
|
|
3103
|
+
agent: general-purpose (default model)
|
|
3104
|
+
invoker: forge-harness-28
|
|
3105
|
+
task: qasp 콜드리드 잔여 3건 소 PR (git worktree, 절대경로)
|
|
3106
|
+
count: 1
|
|
3107
|
+
context: 병렬 자율주행 — 정본(starthere_register) 먼저 읽게 함.
|
|
3108
|
+
outcome: accepted
|
|
3109
|
+
evidence: >-
|
|
3110
|
+
qasp-dev #244 MERGED (2파일 9+/8−, 체크 5/5). 143,955 tokens · 7 tool_uses.
|
|
3111
|
+
note: 문서 린트 부재를 «없음」으로 정직 보고.
|
|
3112
|
+
- date: 2026-09-04
|
|
3113
|
+
agent: general-purpose (default model)
|
|
3114
|
+
invoker: forge-harness-28
|
|
3115
|
+
task: qasp 3막 FLAKY known-positive 픽스처 + 실물 실행 테스트
|
|
3116
|
+
count: 1
|
|
3117
|
+
context: 발동 0/25 «기전만 확인」을 실행으로 닫기. 정본 6종 먼저.
|
|
3118
|
+
outcome: accepted
|
|
3119
|
+
evidence: >-
|
|
3120
|
+
qasp-dev #245 MERGED — FLAKY 1(비결정)/0(결정) 실행 원문, 결함 2 수리 + 2 보고(exit code 미반영 = 운영자 판단). 268,519 tokens · 44 tool_uses.
|
|
3121
|
+
note: 외부 URL 0, CI 는 사유 있는 skip.
|
|
3122
|
+
- date: 2026-09-04
|
|
3123
|
+
agent: general-purpose (default model)
|
|
3124
|
+
invoker: forge-harness-28
|
|
3125
|
+
task: ⑤ 팔 C 라이브 FIRE 7행 첫 독립 채점(다음 세션 채점 규칙)
|
|
3126
|
+
count: 1
|
|
3127
|
+
context: 읽기 전용 + RESULT 1파일. 형식/실행 두 기준 분리 요구.
|
|
3128
|
+
outcome: accepted
|
|
3129
|
+
evidence: >-
|
|
3130
|
+
tracks/_meta/RESULT_2026-09-04_identity5-armC-live-count.md — 2/7 잠정 · 형식 0/7 · 계기 결함 5 · 컨트롤 불성립 · UNRESOLVED 0. 218,308 tokens · 12 tool_uses.
|
|
3131
|
+
note: 계기 결함 발견이 곧 proposal_hook 수리 디스패치의 입력이 됐다.
|
|
3132
|
+
- date: 2026-09-04
|
|
3133
|
+
agent: general-purpose (default model)
|
|
3134
|
+
invoker: forge-harness-28
|
|
3135
|
+
task: proposal_hook.sh 계기 결함 수리 — 워크트리 산출 보고형(패치+레인, 커밋 금지)
|
|
3136
|
+
count: 1
|
|
3137
|
+
context: FH 자산은 워크트리 커밋 금지 → 패치 파일로 회수, 거버너가 본 체크아웃에 적용.
|
|
3138
|
+
outcome: accepted
|
|
3139
|
+
evidence: >-
|
|
3140
|
+
scratchpad/proposal_hook_repair.patch — 레인 옛 훅 28/37(신규 9 빨강) → 새 훅 37/37, 거버너 독립 재현. PR fix/proposal-hook-target-scanner. 188,606 tokens · 16 tool_uses.
|
|
3141
|
+
note: 에이전트의 레인 Edit 이 본 체크아웃 옛 훅을 발화시킨 부수 행 1건을 스스로 보고했다.
|
|
3142
|
+
- date: 2026-09-04
|
|
3143
|
+
agent: general-purpose (default model)
|
|
3144
|
+
invoker: forge-harness-28 (Fable 5.1 거버너, 저녁 2)
|
|
3145
|
+
task: 챔버 런 #16 qasp-web-record-replay 정식 6단계 완주(INTENT/BUDGET/블라인드 3+expert 1/verdict/ACTUAL/원장)
|
|
3146
|
+
count: 1
|
|
3147
|
+
context: ② 실상황 EMIT 표본 n=1 을 올리려는 런. FH 추적 자산 커밋 금지·main 유지 요구.
|
|
3148
|
+
outcome: accepted
|
|
3149
|
+
evidence: >-
|
|
3150
|
+
tracks/_chamber/qasp-web-record-replay/ — verdict KILL(픽스처 9/9 vs 실코퍼스 assertion-less PASS 73%, feature graft). 봉인 예측 EMIT 빗나감. ACTUAL 712,509 서브에이전트 토큰(+15%, CAP 내). 증인 원장은 거버너가 #616/#619 로 올려 WITNESSED. 315,719 tokens · 50 tool_uses.
|
|
3151
|
+
note: 러너가 CURATED 를 거부하는 계기-교리 불일치를 스스로 보고 → #620 수리.
|
|
3152
|
+
- date: 2026-09-04
|
|
3153
|
+
agent: general-purpose (default model)
|
|
3154
|
+
invoker: forge-harness-28
|
|
3155
|
+
task: 백그라운드 git push 멈춤(exit 144 ×9) 원인 조사 — 로컬 bare 원격 known-pair + 실패 출력/reflog/ps 전수
|
|
3156
|
+
count: 1
|
|
3157
|
+
context: 원격 푸시 금지, 본 체크아웃 무변경 조건. 가설(pre-push 훅 stdin 대기)을 줬으나 결론은 기각.
|
|
3158
|
+
outcome: accepted
|
|
3159
|
+
evidence: >-
|
|
3160
|
+
원인 = heredoc 뒤 홀로 선 `2>&1` → zsh NULLCMD cat 이 CC 미폐쇄 stdin 파이프 대기(push 이전, 훅 미실행 9/9). 패치 scratchpad/prepush_stdin_fix.patch → R3 가드 PR #618(52/52). 257,701 tokens · 51 tool_uses.
|
|
3161
|
+
note: 거버너가 준 가설을 실측으로 뒤집었다 — 계기(내 명령 형태)가 원인.
|
|
3162
|
+
- date: 2026-09-04
|
|
3163
|
+
agent: general-purpose (default model)
|
|
3164
|
+
invoker: forge-harness-28
|
|
3165
|
+
task: qasp CI 에 FLAKY 실물 Playwright 레인(blocking) + 빈 env 네거티브 컨트롤 배선
|
|
3166
|
+
count: 1
|
|
3167
|
+
context: qasp-dev git worktree, PR 열고 CI 결과까지 기다려 보고.
|
|
3168
|
+
outcome: accepted
|
|
3169
|
+
evidence: >-
|
|
3170
|
+
qasp-dev #246 MERGED — 새 잡 pass 1m6s, 6/6. 지시한 컨트롤 형태는 픽스처 폴백 때문에 죽은 컨트롤(1 passed)이었음을 로컬에서 잡아 설치처를 밖으로. 181,956 tokens · 22 tool_uses.
|
|
3171
|
+
note: 통과 조건을 rc≠0 이 아니라 «rc=1 ∧ 사유 문자열」로 좁혔다.
|
|
3172
|
+
- date: 2026-09-04
|
|
3173
|
+
agent: general-purpose (default model = fable)
|
|
3174
|
+
invoker: forge-harness-28 (Fable 5.1 거버너, 밤)
|
|
3175
|
+
task: qasp --flaky-exit 옵트인 PR (운영자 결정 ⑦) — 1차
|
|
3176
|
+
count: 1
|
|
3177
|
+
context: 세션 한도 429(22:30 KST 리셋)로 시작 직후 종료. 산출 없음.
|
|
3178
|
+
outcome: rejected
|
|
3179
|
+
evidence: "task-notification «You've hit your session limit · resets 10:30pm (Asia/Seoul)» HTTP 429"
|
|
3180
|
+
note: 실패 원인은 계정 한도. 소넷 재시도 성공(별도 기록).
|
|
3181
|
+
- date: 2026-09-04
|
|
3182
|
+
agent: general-purpose (default model = fable)
|
|
3183
|
+
invoker: forge-harness-28
|
|
3184
|
+
task: 챔버 분류 known-pair 5런 재판정 — 1차
|
|
3185
|
+
count: 1
|
|
3186
|
+
context: 같은 429. 산출 없음.
|
|
3187
|
+
outcome: rejected
|
|
3188
|
+
evidence: "task-notification «session limit» HTTP 429"
|
|
3189
|
+
note: 소넷 재시도 성공(별도 기록).
|
|
3190
|
+
- date: 2026-09-04
|
|
3191
|
+
agent: general-purpose (sonnet)
|
|
3192
|
+
invoker: forge-harness-28
|
|
3193
|
+
task: qasp --flaky-exit 옵트인 PR (운영자 결정 ⑦) — 2차
|
|
3194
|
+
count: 1
|
|
3195
|
+
context: 워크트리, known-pair 4 + 실물 (ii) + CI 스텝 (c), CI 대기까지.
|
|
3196
|
+
outcome: accepted
|
|
3197
|
+
evidence: >-
|
|
3198
|
+
qasp-dev #247 MERGED — 단위 4(0/3/0/1) · 실물 rc=3·overall PASS · CI 6/6(새 스텝 (c) 로그 원문 확인). 250,633 tokens · 86 tool_uses.
|
|
3199
|
+
note: 계약(«별도 표기만」)을 안 깨고 채널만 더했다.
|
|
3200
|
+
- date: 2026-09-04
|
|
3201
|
+
agent: general-purpose (sonnet)
|
|
3202
|
+
invoker: forge-harness-28
|
|
3203
|
+
task: 챔버 분류 known-pair 재판정(#620 러너 첫 실사용) — 2차
|
|
3204
|
+
count: 1
|
|
3205
|
+
context: 블라인드(판정 → 기대 순서 기록), 컨트롤 = KILL 유지 런, 러너 실행은 1런만(원장 오염 방지).
|
|
3206
|
+
outcome: accepted
|
|
3207
|
+
evidence: >-
|
|
3208
|
+
tracks/_meta/chamber_taxonomy_knownpair_RESULT_2026-09-04.md — 컨트롤 2/2 · 일치 3/5 · 불일치 2 = taxonomy 멀티사인 공백(운영자 ⑩) · 러너 CURATED 완주(런 #17). 236,101 tokens · 27 tool_uses.
|
|
3209
|
+
note: 러너 실행이 witness yaml 을 부작용으로 건드려 되돌렸다고 스스로 보고(트리 clean).
|
|
3210
|
+
- date: 2026-09-04
|
|
3211
|
+
agent: general-purpose (sonnet)
|
|
3212
|
+
invoker: forge-harness-28 (Fable 5.1 거버너, 밤 2)
|
|
3213
|
+
task: 프런티어 답습 — Anthropic AI-Native SDLC playbook + 해설 영상 ↔ FH 대응표(가져올/앞선/동등/안가져올)
|
|
3214
|
+
count: 1
|
|
3215
|
+
context: 읽기 전용, 블로그 추출·자막 파일 + 책장 파일 목록을 줌. Envelope-Boundary 카운터웨이트 명시.
|
|
3216
|
+
outcome: accepted
|
|
3217
|
+
evidence: >-
|
|
3218
|
+
tracks/_meta/frontier_absorb_2026-09-04_ai-native-sdlc.md — 16행: 가져올 5·앞선 6·동등 4·안가져올 1, Top 3 → 전부 PR(#623·#624·#625). 224,306 tokens · 17 tool_uses.
|
|
3219
|
+
note: «리뷰 초점=의도/위험」 vs FH 교리 충돌을 층 차이로 갈라냈다.
|
|
3220
|
+
- date: 2026-09-04
|
|
3221
|
+
agent: general-purpose (sonnet)
|
|
3222
|
+
invoker: forge-harness-28
|
|
3223
|
+
task: "4축 마커 옵셔널 affected: 필드 — 훅 레그 + 레인 + 규칙 문단(워크트리 산출 보고형)"
|
|
3224
|
+
count: 1
|
|
3225
|
+
context: FH 자산 워크트리 커밋 금지 → 패치. 거버너가 본 체크아웃에 적용·재현.
|
|
3226
|
+
outcome: accepted
|
|
3227
|
+
evidence: >-
|
|
3228
|
+
scratchpad/soul_affected.patch → #624 MERGED — 레인 17 · W5 배선 live=1/dead=0 · fail-before rc=1. 게이트가 4건 잡음(evidence 토큰·스토어명·조직 토큰·residency) 은 거버너 수리. 229,589 tokens · 55 tool_uses.
|
|
3229
|
+
note: 에이전트 산출에 컴패니언 스토어명·조직 토큰이 섞였다 — 기밀 스캔이 잡았다(옳게).
|
|
3230
|
+
- date: 2026-09-04
|
|
3231
|
+
agent: general-purpose (sonnet)
|
|
3232
|
+
invoker: forge-harness-28
|
|
3233
|
+
task: probe_live_eval 러너(probes.md 선택 · 격리 클론 실행 · 4값 채점 · launchd 템플릿) 패치 + 라이브 1프로브
|
|
3234
|
+
count: 1
|
|
3235
|
+
context: 라이브 레포 sim 금지, 전수 금지(1~2 프로브만).
|
|
3236
|
+
outcome: accepted
|
|
3237
|
+
evidence: >-
|
|
3238
|
+
scratchpad/live_eval.patch → #625 — 레인 20/20 · 선택 12/21 사유별 · G-GREET-01 PASS/컨트롤 무발화. 270,960 tokens · 39 tool_uses.
|
|
3239
|
+
note: files[] 미추가를 «운영자 결정」으로 남겼으나 package-coverage 게이트가 요구해 거버너가 추가.
|
|
3240
|
+
- date: 2026-09-04
|
|
3241
|
+
agent: general-purpose (sonnet)
|
|
3242
|
+
invoker: forge-harness-28 (Fable 5.1 거버너, 밤 3)
|
|
3243
|
+
task: gitignored 계기를 읽는 게이트 전수조사(카드 ⑤) — 50 표면, 부재 분기 a/b/c 판정 + 컨트롤 2
|
|
3244
|
+
count: 1
|
|
3245
|
+
context: 읽기 전용, 임시 클론에서 실측. known-positive = #610 PSA 사례.
|
|
3246
|
+
outcome: accepted
|
|
3247
|
+
evidence: >-
|
|
3248
|
+
tracks/_meta/gitignored_instrument_gates_2026-09-04.md — fail-open 0 · warn/skip 6 · fail-closed 4 · built-but-not-wired 3(residency_closure_scan · outbound_query_guard · push_zone_check). 201,209 tokens · 34 tool_uses.
|
|
3249
|
+
note: «옳게 fail-closed 인데 호출자 0」이 남은 모양 — 카드 ⑫.
|
|
3250
|
+
- date: 2026-09-04
|
|
3251
|
+
agent: general-purpose (sonnet)
|
|
3252
|
+
invoker: forge-harness-28
|
|
3253
|
+
task: "preprep 버그 4 + L8 한국어 오탐 2 수리(워크트리 패치, 실물 코퍼스 전후)"
|
|
3254
|
+
count: 1
|
|
3255
|
+
context: 덱 세션 인계분 ⓒⓓ. 커밋 금지 → 패치.
|
|
3256
|
+
outcome: accepted
|
|
3257
|
+
evidence: >-
|
|
3258
|
+
scratchpad/preprep_bugs.patch → #628 커밋 1/3 — L8 UNRESOLVED 9→5(손검증) · HARD 19→6 · lane_canon UNMEASURED · self-test 3. 303,096 tokens · 81 tool_uses.
|
|
3259
|
+
note: 남은 오탐 5 를 «지운 척 안 함」으로 정직 보고. 드리프트 앵커 D2 빨강을 스스로 알림.
|
|
3260
|
+
- date: 2026-09-04
|
|
3261
|
+
agent: general-purpose (sonnet)
|
|
3262
|
+
invoker: forge-harness-28
|
|
3263
|
+
task: "preprep 레인 R1~R5·P1·P3·--baseline 이식 + known-pair + 실물 재현(워크트리 패치)"
|
|
3264
|
+
count: 1
|
|
3265
|
+
context: 덱 세션 인계분 ⓐⓑ. 중간에 지시 2회 갱신(R3 실물 쌍 · P1 이름 고유/3팔).
|
|
3266
|
+
outcome: accepted
|
|
3267
|
+
evidence: >-
|
|
3268
|
+
scratchpad/preprep_lanes.patch → #628 커밋 2/3 — 24/24 · 실물 재현 6(40p·41p·38p·112p·36p ×2). 342,923 tokens · 57 tool_uses. 거버너 수리: 회사명 토큰(HIGH)·절대경로→env.
|
|
3269
|
+
note: 이진 픽스처가 patch 로 안 실려 워크트리에서 직접 복사.
|
|
3270
|
+
- date: 2026-09-04
|
|
3271
|
+
agent: general-purpose (sonnet)
|
|
3272
|
+
invoker: forge-harness-28
|
|
3273
|
+
task: "preprep SKILL.md 방법론 7 · 정직한 한계 6 · 못 하는 것 표 · Done When · 체크리스트 C6(워크트리 패치)"
|
|
3274
|
+
count: 1
|
|
3275
|
+
context: 덱 세션 인계분 ⓔⓕ+§7. 레인 표는 손대지 말 것.
|
|
3276
|
+
outcome: accepted
|
|
3277
|
+
evidence: >-
|
|
3278
|
+
scratchpad/preprep_docs.patch(128줄) → #628 커밋 3/3 — 새 레인을 이름(문자 코드 아님)으로 참조해 병렬 편집 충돌 회피. 194,195 tokens · 20 tool_uses.
|
|
3279
|
+
note: 프론트매터 description 무변경(트리거 프로브 재실행 불필요).
|
|
3280
|
+
- date: 2026-09-05
|
|
3281
|
+
agent: general-purpose (sonnet)
|
|
3282
|
+
invoker: forge-harness-29 (Fable 5.1 max 거버너, 오전)
|
|
3283
|
+
task: "live-eval 12/12 FAILED-TO-RUN 수리 — timeout(1) 해석+bash 폴백 · fail-fast · reason 칼럼 · plist PATH · 레인(워크트리 패치)"
|
|
3284
|
+
count: 1
|
|
3285
|
+
context: 커밋 금지 워크트리. 원인은 거버너가 실측해 넘김(launchd PATH 에 timeout 없음). 중간 지시 1(FD_MODEL 템플릿 줄).
|
|
3286
|
+
outcome: accepted
|
|
3287
|
+
evidence: >-
|
|
3288
|
+
tracks/_meta/dispatch/2026-09-05_live-eval-timeout/patch.diff → 브랜치 fix/live-eval-timeout-preflight — 레인 31/31·28/28(fail-before 2+5 빨강) · env -i launchd PATH 라이브 1회 = bash-fallback 캡처 35B(FAILED-TO-RUN 아님). 388,607 tokens · 107 tool_uses.
|
|
3289
|
+
note: 잔여 «USER 미설정 시 미인증」은 실 launchd 컨트롤(forge-wiki 위성 10:04 성공)이 반증 — env -i 가 launchd 보다 엄격. 거버너 추가 수리 1(워치독 orphan sleep pkill -P).
|
|
3290
|
+
- date: 2026-09-05
|
|
3291
|
+
agent: general-purpose (sonnet)
|
|
3292
|
+
invoker: forge-harness-29
|
|
3293
|
+
task: "다이제스트 variadic --allowedTools 인자 순서 수리 + 호출부 전수 감사 + 레인 ⑤(워크트리 패치)"
|
|
3294
|
+
count: 1
|
|
3295
|
+
context: 커밋 금지 워크트리. known-pair(haiku)는 거버너가 먼저 실측해 넘김.
|
|
3296
|
+
outcome: accepted
|
|
3297
|
+
evidence: >-
|
|
3298
|
+
tracks/_meta/dispatch/2026-09-05_digest-argorder/patch.diff → PR #631 — 레인 ⑤ 패치 전 ❌ → ✅ 5/5 · 호출부 9행 감사(취약 1). 272,961 tokens · 51 tool_uses.
|
|
3299
|
+
note: REPORT.md Write 가 도구 정책으로 거부돼 회신 원문을 거버너가 옮김. 이후 에이전트에는 «Bash cat > 로 써라」 로 지시 변경.
|
|
3300
|
+
- date: 2026-09-05
|
|
3301
|
+
agent: general-purpose (opus)
|
|
3302
|
+
invoker: forge-harness-29
|
|
3303
|
+
task: "qasp 2막 evidence 평문 입력값 두 채널 마스킹(__REDACTED__) — 구현·19 레인·커밋·푸시(PR 미개설)"
|
|
3304
|
+
count: 1
|
|
3305
|
+
context: qasp-dev 직접(필드 하네스, 자기 훅). 설계는 거버너가 확정해 넘김. 후속 지시 1(빈 값 비마스킹 한 줄).
|
|
3306
|
+
outcome: accepted
|
|
3307
|
+
evidence: >-
|
|
3308
|
+
qasp-dev 3e76ff7 (fix/act2-evidence-secret-redaction) — tests/act2 1425→1444 · 전체 3714/0 · 되돌림 프로브 채널별 5/6 레인 · 셋째 채널(tc_update_suggestion) 발견·수리 · aria_snapshot 평문 실측 → 이슈 #253. 291,919 tokens · 82 tool_uses.
|
|
3309
|
+
note: 설계가 «~14곳」이라 적은 것을 18곳으로 실측 정정. 보고서 tracks/qasp/secret_redaction_2026-09-05.md.
|
|
3310
|
+
- date: 2026-09-05
|
|
3311
|
+
agent: sidecar codex exec (gpt-5.5, cross-family)
|
|
3312
|
+
invoker: forge-harness-29
|
|
3313
|
+
task: "qasp #254 비밀값 마스킹 diff 적대 리뷰 — 정규식 오탐·부분문자열 치환·to_dict/evidence_label 조건 동치·__RUNTIME__·테스트 공백"
|
|
3314
|
+
count: 1
|
|
3315
|
+
context: 페이로드 residency 스캔 TAINTED(2)→strip→CLEAN(3) 후 stdin 으로 diff 만 전달(파일 도구 없음). sidecar_wait 900s.
|
|
3316
|
+
outcome: accepted
|
|
3317
|
+
evidence: >-
|
|
3318
|
+
scratchpad/codex_qasp/{prompt.txt,out.txt,wait.log} — SIDECAR_VERDICT 대기. 결과는 소스 그라운딩 후 PR #254 에 반영/반박.
|
|
3319
|
+
note: ③ 기록면 토큰 첫 실물 = residency=CLEAN(files=3, stripped=2).
|
|
3320
|
+
- date: 2026-09-05
|
|
3321
|
+
agent: general-purpose (sonnet)
|
|
3322
|
+
invoker: forge-harness-29
|
|
3323
|
+
task: "⑫-③ residency 토큰 — pre-commit 검사 + 레인 r1~r13 + auto-decorrelation Step 4.5 + 출하(워크트리 패치)"
|
|
3324
|
+
count: 1
|
|
3325
|
+
context: 커밋 금지 워크트리. 중간 지시 1(strip 목록 명시). 스캐너가 워크트리에선 rc=10(override 패턴 부재) — 정직 기록.
|
|
3326
|
+
outcome: accepted
|
|
3327
|
+
evidence: >-
|
|
3328
|
+
tracks/_meta/dispatch/2026-09-05_residency-token/patch.diff → feat/residency-marker-token — 55/55 · 되돌림 7 레인 · 픽스처 파일명 날짜 순서 결함 자력 적발. 363,065 tokens · 114 tool_uses.
|
|
3329
|
+
note: 접두 grep 파싱이 codex 에서 fail-open 2건으로 지목돼 거버너가 presence-first 로 수리(r14~r17).
|
|
3330
|
+
- date: 2026-09-05
|
|
3331
|
+
agent: sidecar codex exec (gpt-5.5, cross-family)
|
|
3332
|
+
invoker: forge-harness-29
|
|
3333
|
+
task: "⑫-③ 훅 변경 diff 적대 리뷰(6 파일, residency CLEAN(files=6))"
|
|
3334
|
+
count: 1
|
|
3335
|
+
context: load-bearing(pre-commit). diff 만 stdin. sidecar_wait 900s.
|
|
3336
|
+
outcome: accepted
|
|
3337
|
+
evidence: >-
|
|
3338
|
+
scratchpad/codex_residency/out.txt — 8 findings: S 2 진짜(수리, 레인 r14/r15 fail-before 재현) · 4 잔여(과차단/fail-closed 방향) · B 2 레인. 27,937 tokens.
|
|
3339
|
+
note: 거짓 양성 0 — 이번엔 페이로드를 안 잘랐다(strip=0).
|
|
3340
|
+
- date: 2026-09-05
|
|
3341
|
+
agent: general-purpose (sonnet)
|
|
3342
|
+
invoker: forge-harness-29
|
|
3343
|
+
task: "⑫-② push-zone — pre-push 블록 + 마감 ①-f + 출하 + 레인 Z0~Z6(워크트리 패치)"
|
|
3344
|
+
count: 1
|
|
3345
|
+
context: 커밋 금지·stash 금지 워크트리. 실 git dispatch 로 첫 실사용.
|
|
3346
|
+
outcome: partial
|
|
3347
|
+
evidence: >-
|
|
3348
|
+
tracks/_meta/dispatch/2026-09-05_push-zone/patch.diff → feat/push-zone-prepush 9e764c7 — 레인 13/13(fail-before 3/13) · 실 push 확인. 475,750 tokens · 174 tool_uses.
|
|
3349
|
+
note: 🟥 `git stash` 1회 사용(지시 위반, 자기 신고, 영향 0) · ①-f 가 owner 이름을 그대로 출력(브리프의 «출력 그대로」 탓 — 거버너가 카운트만으로 수리) · URL 3형태만 수용(codex 4 형태 fail-open 지목).
|
|
3350
|
+
- date: 2026-09-05
|
|
3351
|
+
agent: sidecar codex exec (gpt-5.5, cross-family)
|
|
3352
|
+
invoker: forge-harness-29
|
|
3353
|
+
task: "⑫-② pre-push push-zone diff 적대 리뷰(6 파일, residency CLEAN(files=6))"
|
|
3354
|
+
count: 1
|
|
3355
|
+
context: load-bearing(pre-push). diff 만 stdin. sidecar_wait 900s.
|
|
3356
|
+
outcome: accepted
|
|
3357
|
+
evidence: >-
|
|
3358
|
+
scratchpad/codex_pushzone/out.txt — 11 findings: S 6·A 3 수리(레인 Z7~Z14 fail-before 10 적색 → 23/23) · B 1 잔여 · B 1 레인. 22,138 tokens.
|
|
3359
|
+
note: 두 번째 codex 라운드 — 거짓 양성 0(strip=0).
|
|
3360
|
+
|
|
3361
|
+
- date: 2026-09-05
|
|
3362
|
+
agent: claude (opus, worktree fh-wt-outbound-hook)
|
|
3363
|
+
invoked_by: FH governor session (Fable 5.1 max)
|
|
3364
|
+
task: "⑫-① outbound query guard → PreToolUse(WebSearch|WebFetch) hook — two-layer degrade (override=deny · defaults=advisory), 76 lanes, 15 revert probes, clean-clone 2-arm run"
|
|
3365
|
+
context_card: yes
|
|
3366
|
+
outcome: accepted
|
|
3367
|
+
evidence: "tracks/_meta/dispatch/2026-09-05_outbound-hook/REPORT.md — patch applied on feat/outbound-query-hook: 76/76 · 11/11 · degrade rc=0 · pkgcov PASS; agent self-caught .gitignore omission (clean-clone VOID) and a padding-timeout fail-open (10KB query = 49.7s in bash 3.2 `${var//[!\t]/}`); one false claim in report (main moved to 7530c9c — that is the #632 branch commit)"
|
|
3368
|
+
tokens_subagent: 397555
|
|
3369
|
+
notes: "governor follow-up: codex cross-family review dispatched on the payload; report claim about main position refuted by `git log -1 main`"
|
|
3370
|
+
|
|
3371
|
+
- date: 2026-09-05
|
|
3372
|
+
agent: codex exec gpt-5.5 (cross-family sidecar via scripts/sidecar_wait.sh)
|
|
3373
|
+
invoked_by: FH governor session (Fable 5.1 max)
|
|
3374
|
+
task: "adversarial review of the outbound_query_hook PreToolUse deny hook (9-file diff + author report, residency CLEAN)"
|
|
3375
|
+
context_card: n/a (prompt file)
|
|
3376
|
+
outcome: accepted
|
|
3377
|
+
evidence: "11 findings: 6 S real (string tool_input, depth/count truncation x2, key-name log leak, severity-label leak, tr-dependent emptiness), 2 A real (N/A writes into stranger tree, lane timeout 15 vs snippet 5), 3 refuted (applicability path test, install path contract = same as five guards but noted, dedup assumption — measured: both-layer token denies with 2 hits). 8 fixes + 21 lanes; pre-fix hook goes 14 red on the new lanes"
|
|
3378
|
+
tokens_subagent: n/a
|
|
3379
|
+
notes: "first dispatch died in 5s: payload dir is not a git repo → needs --skip-git-repo-check; sidecar_wait typed verdict (exit=1 bytes=115) prevented reading it as a review"
|
|
3380
|
+
|
|
3381
|
+
- date: 2026-09-05
|
|
3382
|
+
agent: claude (opus, worktree fh-wt-utterance-intake)
|
|
3383
|
+
invoked_by: FH governor session (Fable 5.1 max)
|
|
3384
|
+
task: "engine reinforcement — utterance→record landing channel: transcript_utterances.py (shared with seal), utterance_intake.sh, session_close_check ①-f advisory, lanes, pre-registered floor-tier sim ARM/CTRL reps=3"
|
|
3385
|
+
context_card: yes
|
|
3386
|
+
outcome: accepted
|
|
3387
|
+
evidence: "tracks/_meta/dispatch/2026-09-05_utterance-intake/REPORT.md — patch applied on feat/utterance-intake-close-check: lanes 51/51, seal byte-identical (L12 revert control), sim prereg sealed 9s before first arm; ARM 0/3 CTRL 0/3 with attribution withheld (3/3 chose memory/ outside the repo, runner isolation blocked it); first real use found 2 real unlanded operator utterances; mission-card error caught by lane L13 (①-e already taken → ①-f)"
|
|
3388
|
+
tokens_subagent: 427744
|
|
3389
|
+
notes: "5 design deviations all with measured grounds (min-chars 20, --strip-system-markers, record-derived positive control, private-token masking, ①-f label); 7 named residuals"
|
|
3390
|
+
|
|
3391
|
+
- date: 2026-09-05
|
|
3392
|
+
agent: codex exec gpt-5.5 (cross-family sidecar via scripts/sidecar_wait.sh)
|
|
3393
|
+
invoked_by: FH governor session (Fable 5.1 max)
|
|
3394
|
+
task: "adversarial review of the utterance-intake close-check patch (8-file diff + author report)"
|
|
3395
|
+
context_card: n/a (prompt file)
|
|
3396
|
+
outcome: accepted
|
|
3397
|
+
evidence: "11 findings: 8 fixed (OR-probe false LANDED → per-token rows + majority; UNPROBEABLE silent rc=0; isMeta/isSidechain records; masking beyond $HOME; no-control-material message; L18c exit code; L13b absent-script branch; stale ①-e comment), 3 refuted (tool_result+text mixed 0/379 live; Hangul n-gram = judgment machinery; backtick comment carrier = pre-existing idiom). Pre-fix scripts go 15 red on the new lanes; fixed 72/72"
|
|
3398
|
+
tokens_subagent: n/a
|
|
3399
|
+
notes: "dispatched with --skip-git-repo-check (payload dir is not a git repo — recorded in memory project_codex_headless)"
|
|
3400
|
+
|
|
3401
|
+
- date: 2026-09-05
|
|
3402
|
+
agent: general-purpose (opus) — conference/industry insight scan
|
|
3403
|
+
invoked_by: FH governor session (Fable 5.1 max)
|
|
3404
|
+
task: "frontier absorption scan of 2025–2026 conference and industry material on AI quality gates / testing / red teaming, bookshelf-first (standards crosswalk) → 15 insights with FH/qasp delta, M/S/R, channel-vs-judgment tag; answer the operator's demand question as observable conditions; name the world's terms for gate intensity gears"
|
|
3405
|
+
context_card: yes
|
|
3406
|
+
outcome: accepted
|
|
3407
|
+
evidence: "tracks/_meta/frontier_digest_2026-09-05_conference-insights.md (230 lines, 15 insights, sources marked opened/unopened, residency CLEAN with known-positive control). Top 3: gate intensity as a dial (Meta 4-level gating, arXiv:2410.06351), task validity / rule-blind arm (extension of ablation_calibrate arm B), unattended deployment missing from the irreversible-surface classes. Demand answer: 0/4 observable conditions today (one — STANDARDS_ALIGNMENT — lands with the open docs PR)"
|
|
3408
|
+
tokens_subagent: 252151
|
|
3409
|
+
notes: "author bias named in the file (search aimed at «deeper gates»); unopened sources listed by name; no commits"
|
|
3410
|
+
|
|
3411
|
+
- date: 2026-09-05
|
|
3412
|
+
agent: codex exec gpt-5.5 (cross-family sidecar via scripts/sidecar_wait.sh) — round 2 on the `oracle:` marker leg
|
|
3413
|
+
invoked_by: FH governor session (Fable 5.1 max)
|
|
3414
|
+
task: "adversarial review of validate_oracle_leg (bash 3.2/5), its 23-lane suite, wiring lane W6 and five doc surfaces — fail-open, over-block, near-miss claim, lane blind spots, portability"
|
|
3415
|
+
context_card: n/a (prompt file, payload dir = scratchpad, residency CLEAN)
|
|
3416
|
+
outcome: accepted
|
|
3417
|
+
evidence: "NOT-CONVERGED: 8 findings (S2: enum member accepted as a mere prefix `known-pair2`; near-miss scan skipped when an exact `oracle:` line exists, so `Oracle: …` correction beside it was silent · A4 · B2). 6 fixed in v2 (always-on near-miss scan with one rule, delimiter-after-kind check, lanes o21–o34 with diagnostic needles, helper-absent lane o31, doc sync), 1 accepted as named residual (`<...>` literal in grounds), 1 doc-list unification. Self-detected 0/8. Mutants after fix: enum · delimiter · near-miss · word-count all turn the expected lanes red"
|
|
3418
|
+
tokens_subagent: 112815
|
|
3419
|
+
notes: "lesson saved to memory feedback_enum_prefix_and_shadowed_nearmiss"
|
|
3420
|
+
|
|
3421
|
+
- date: 2026-09-05
|
|
3422
|
+
agent: codex exec gpt-5.5 (cross-family sidecar) — round 3 on the fixed `oracle:` leg
|
|
3423
|
+
invoked_by: FH governor session (Fable 5.1 max)
|
|
3424
|
+
task: "verify the round-2 fixes adversarially (new failing inputs, over-blocking introduced by the always-on near-miss scan, surviving mutants, portability)"
|
|
3425
|
+
context_card: n/a (prompt file, residency CLEAN)
|
|
3426
|
+
outcome: accepted
|
|
3427
|
+
evidence: "CONVERGED (S0 · A3 · B3). A: line starting with U+3000 under LC_ALL=C treated as absent · embedded CR hides a correction inside an excluded exact line · `oracle*` key namespace is reserved by the broad rule — all three recorded as named residuals / intended cost in the spec and AGENTS.md (first two are marker-wide, not leg-specific). B: PASS lane for `.` delimiter · BLOCK lane for an unlisted `oracle.evidence:` key · doc example lists marked non-exhaustive"
|
|
3428
|
+
tokens_subagent: 37082
|
|
3429
|
+
notes: "two rounds, R2→R3 delta was the fix set; no round 4 needed"
|
|
3430
|
+
|
|
3431
|
+
- date: 2026-09-05
|
|
3432
|
+
agent: Orca worktree session `qasp-map-archify` (Claude, Fable 5.1, effort medium — repo qasp-dev, operator-requested split)
|
|
3433
|
+
invoked_by: FH governor session (Fable 5.1 max) — mission file + SendMessage return address
|
|
3434
|
+
task: "leader-facing QASP whole-map in five layers (PAR · modules with real paths · trust/evidence · org-context boundary · web-tool vs CLI split) rendered with archify (local renderer, no LLM calls), plus Sister Asset three-part note; branch push only, no PR"
|
|
3435
|
+
context_card: yes (MISSION.md with recipient, return address, output paths, prohibitions)
|
|
3436
|
+
outcome: accepted
|
|
3437
|
+
evidence: "branch chrono-meta/qasp-map-archify@5ebdaae — docs/map/QASP_MAP.md + 3 archify JSON/HTML (validate 9/9, visual-check 3/3), tests/test_map_paths_exist.py (20/20 real paths), ghe_paths_lib protected-path entry, README row; pytest 3766 pass / 14 env-dependent fail (0 code changes); fh-meta:beginner blind cold-read folded in; archify outbound check = update-check URL only (disabled). Three open questions escalated to the operator (web-tool first slice · docs/map protected-path vs company audience · PyMuPDF stdout breaking p1_schedule JSON)"
|
|
3438
|
+
tokens_subagent: n/a (Orca session; it reported one beginner subagent at 40451)
|
|
3439
|
+
notes: "phase 2 done: TC `oracle_type` on feat/tc-oracle-type — codex R1 NOT-CONVERGED S2·A3·B2 (parser dropped near-miss keys before the gate) → R2 NOT-CONVERGED S2 (pandas NA tokens folded to missing · non-string reason stringified) → R3 CONVERGED (A1 duplicate-header mangle, B1 whitespace header) → all fixed, 74/74 lanes, merged qasp-dev #261 (6c6f008) with the private companion store manifest. Map merged as #260 (ec418a6). Orca card completed"
|
|
3440
|
+
|
|
3441
|
+
- date: 2026-09-05
|
|
3442
|
+
agent: Orca worktree session `clawd-fh-gate` (Claude, Fable 5.1, effort medium — repo clawd-on-desk fork, expedition ⓑ-only)
|
|
3443
|
+
invoked_by: FH governor session (Fable 5.1 max) — mission file + SendMessage return address
|
|
3444
|
+
task: "map the auto-approve mechanism, design a three-layer gate (L1 irreversible hold · L2 output gate · L3 honest notice), prototype L1 with fail-before evidence; then a maintainer-standpoint review (static codex persona + dynamic isolated integration test); no push, no PR"
|
|
3445
|
+
context_card: yes (MISSION.md; expedition CARD with 과녁 line, wall-clock, token slots)
|
|
3446
|
+
outcome: accepted
|
|
3447
|
+
evidence: "mechanism = app HTTP PermissionRequest hook layer (src/permission-automation-policy.js:387 → src/permission.js:2246); L1 prototype feat/auto-approve-irreversible-guard 56d64f3d→99f262a1, npm test 9423/0 fail, fail-before 20/24 red → green; maintainer-persona codex review S0/A2/B2 all fixed (shell-alias tools were outside the badge allowlist → contract test 13 rows); integration test 8/8 (fake HTTP → real server.js → real permission.js, unattended + force-push → DEFER observed); Electron live run correctly REFUSED (single-instance lock bound to userData, would collide with the production app). Operator's «FH gate 가 지켜줍니다» wording rejected as over-promise; honest 7-language notice instead. Wall-clock 14:40→16:40 KST; sidecar 1"
|
|
3448
|
+
tokens_subagent: n/a (Orca session; sidecar codex ×1 unreported)
|
|
3449
|
+
notes: "phase 2: maintainer-persona codex review S0/A2/B2 all fixed (99f262a1) + isolated integration test 8/8; PR_DRAFT.md in contributor voice (#888 style, no internal vocabulary). Live run on a second machine (operator's MacBook Air, Claude session over Remote Control, mixed human/AI driving): 10 rows as expected, 0 false positives, known-pair controls, reps=1 — the private companion store handoff/LIVE_TEST_RESULT_2026-09-05.md; three runbook defects found there and folded back. Outward PR submission = operator decision ㉓"
|
|
3450
|
+
|
|
3451
|
+
- date: 2026-09-05
|
|
3452
|
+
agent: fh-meta:hub-persona-auditor (opus) — pre-publication audit of an external-facing issue draft
|
|
3453
|
+
invoked_by: FH governor session (Fable 5.1 max)
|
|
3454
|
+
task: "audit ISSUE_DRAFT_external-gate.md (proposal to an external Electron app repo: optional external review command, downgrade-only) as maintainer / unattended power user / first-time contributor (+ a security reader it added), 4-axis per section, 3-tier revisions; judge length; list sentences a maintainer would quote back as over-claims; how to name our tool once without turning it into a pitch"
|
|
3455
|
+
context_card: yes
|
|
3456
|
+
outcome: accepted
|
|
3457
|
+
evidence: "SHIP_AFTER_MANDATORY — mandatory 3 (complete the exit-code table incl. 124/126/127/128+n → ask; name the tool and drop 'exactly'; say what happens to an unanswered card), strong 6 (move the bypass-mode limitation to the opening, plain vocabulary, we→I, 7 over-claims softened, sessionId for sequence state, blast radius, 0/non-zero minimum), recommended 6 — all applied; final issue posted as rullerzhou-afk/clawd-on-desk#995 (816 words)"
|
|
3458
|
+
tokens_subagent: 116852
|
|
3459
|
+
notes: "auditor could not read the target repo's issue list (length verdict reasoned, not calibrated) — stated up front; one reader persona (security) added by the auditor itself"
|
|
3460
|
+
|
|
3461
|
+
- date: 2026-09-05
|
|
3462
|
+
agent: codex exec (gpt-5.5, read-only) — cross-family adversarial review, round 2, of the sync-to-be destination guard
|
|
3463
|
+
invoked_by: FH governor session (Fable 5.1 max) — prompt via stdin (payload > ARG_MAX), residency-scanned first
|
|
3464
|
+
task: "re-attack the R2 patch (root identity · physical paths · atomic --init · COUNT anchoring · timeout): any path where a wrong destination still receives a write, any write before refusal, COUNT-line spoofing, --no-git existence, timeout portability, bash 3.2/BSD"
|
|
3465
|
+
context_card: yes (R1 findings + author's disposition per finding, R2 diff, post-patch lines 1-200, sync-from-be arg parser/COUNT site)
|
|
3466
|
+
outcome: accepted
|
|
3467
|
+
evidence: "NOT-CONVERGED — 7 findings: S1 guard validates _be_phys once but writes through mutable $BE (symlink retarget TOCTOU) · S2 default BE derived from the LOGICAL $FH · A3 old git's --show-superproject-working-tree swallowed · A4 independent nested repo inside a foreign tree passes · B5 COUNT line spoofable by a newline-bearing file name · B6 mid-run 'not a git repo' belt exits 0 after writes · B7 lane gaps. Disposition: S1/S2/A3/B6 fixed, A4 declined with grounds (lane B8m pins it), B5 named residual, B7 → lanes B8k~B8o; mutants m1~m4 each red only on the predicted lane. 59,799 tokens, 265s"
|
|
3468
|
+
tokens_subagent: 59799
|
|
3469
|
+
notes: "A3's direction was wrong in detail — measured: `git rev-parse --<unknown option>` ECHOES the option with rc=0 (git 2.50), so the old code refused with a nonsense reason rather than passing; both variants now fail closed with the real reason. The finding was still right that the branch was unexamined"
|
|
3470
|
+
|
|
3471
|
+
- date: 2026-09-05
|
|
3472
|
+
agent: codex exec (gpt-5.5, read-only) — cross-family adversarial review, round 3, same subject
|
|
3473
|
+
invoked_by: FH governor session (Fable 5.1 max) — stdin payload (R3-only deltas + full post-R3 script + lane helpers), username scrubbed before send (2 hits → 0)
|
|
3474
|
+
task: "verify each R2 closure against the code; attack the pin's coverage, the lock-wait injection lanes for flakiness/wrong-reason passes, the git shim, the A4 decline, new set -e interactions, bash 3.2/BSD"
|
|
3475
|
+
context_card: yes
|
|
3476
|
+
outcome: accepted
|
|
3477
|
+
evidence: "NOT-CONVERGED — S1 the mid-run belt checked only --is-inside-work-tree, so a nested independent repo (accepted by A4) that loses its .git is still 'inside' the ENCLOSING repo and git add/commit/push would land the private half there (real hole, opened by the A4 decision) · A2 `_fh_phys0=$(_phys \"$FH\")` under set -e kills the script silently (rc=1) for a nonexistent HUB_DIR before the rc=10 hub refusal · B3 lane for the nested-repo mid-run case. All three taken into R4 (belt re-runs _be_root_ok; `|| true`; lanes B8o2/B8p; mutants m5/m6). 54,009 tokens, 190s"
|
|
3478
|
+
tokens_subagent: 54009
|
|
3479
|
+
notes: "the S1 here is a direct consequence of declining A4 in R3 — accepting the nested-repo layout created a belt that could pass for the wrong repo; the fix keeps the decision and tightens the belt to the same ROOT check the guard uses"
|
|
3480
|
+
|
|
3481
|
+
- date: 2026-09-05
|
|
3482
|
+
agent: codex exec (gpt-5.5, read-only) — cross-family adversarial review, round 4, same subject (sync-to-be destination guard)
|
|
3483
|
+
invoked_by: FH governor session (Fable 5.1 max) — stdin payload (R4-only deltas + full post-R4 script), username scrubbed
|
|
3484
|
+
task: "verify the R4 closures (belt re-runs the ROOT check; set -e safe derivation; lanes B8o2/B8p); attack the belt's re-check, the lock-wait lanes, bash 3.2 `cd -P \"\"` semantics, portability"
|
|
3485
|
+
context_card: yes
|
|
3486
|
+
outcome: accepted
|
|
3487
|
+
evidence: "NOT-CONVERGED — S1 `.git` swapped mid-run for a gitfile pointing at another repo whose toplevel is still $BE passes the path-only re-check · S2 repo-selecting GIT_* env (a git hook exports GIT_DIR) makes a plain directory pass the root check · B3 lane for the swap. Also settled two of the author's own questions with measurements: bash 3.2.57 and 5.3.15 both FAIL `cd -P \"\"` (no no-op hazard), and A2's `|| true` reaches rc=10. Taken into R5: `unset GIT_*` first line + git identity pin (absolute-git-dir · common-dir) compared at the belt + threat model in the header + lanes B8q/B8r + mutants m7/m8 (m8 measured: without the unset the run mirrors into the plain dir and exits 4 from the hub-equality belt — wrong reason, after the write). 53,241 tokens"
|
|
3488
|
+
tokens_subagent: 53241
|
|
3489
|
+
notes: "S2 is the realistic one (hook environments); S1 needs an actor rewriting the store mid-run — accepted as a cheap non-over-blocking belt, and the header now states the threat model so later rounds grade against it instead of escalating the adversary each round"
|
|
3490
|
+
|
|
3491
|
+
- date: 2026-09-05
|
|
3492
|
+
agent: codex exec (gpt-5.5, read-only) — cross-family adversarial review, round 5, same subject (sync-to-be destination guard)
|
|
3493
|
+
invoked_by: FH governor session (Fable 5.1 max) — stdin payload (R5-only deltas + full post-R5 script), username scrubbed; prompt now carries the THREAT MODEL so severity is graded against it
|
|
3494
|
+
task: "verify R5 closures (GIT_* unset; git identity pin compared at the belt; lanes B8q/B8r; mutants m7/m8); attack the unset list's completeness, --git-common-dir comparability (relative vs linked worktree vs separate-git-dir), legitimate concurrent ops that change identity mid-run, bash 3.2 quoting, B8q's symlinked-tmp comparison"
|
|
3495
|
+
context_card: yes
|
|
3496
|
+
outcome: accepted
|
|
3497
|
+
evidence: "CONVERGED — S0 · A0 · B1 (lane race: B8q waits for the 'destination:' line, which was printed BEFORE the identity pin, so a fast swap could be recorded as the baseline). Explicitly cleared: unset list covers repo selection (GIT_PREFIX does not redirect; CEILING/DISCOVERY vars only push toward fail-closed); common-dir comparison is same-cwd on both reads and does not reject legitimate separate-git-dir stores. B1 fixed as prescribed (pins moved before the destination line; log prints BE_REQUESTED → BE), lanes re-run + mutant m7 re-run; no R6 dispatched — the fix is the reviewer's own one-liner and the re-run is the verification. 67,325 tokens"
|
|
3498
|
+
tokens_subagent: 67325
|
|
3499
|
+
notes: "5 rounds total (R1 worktree draft → R5): S findings 1·2·1·2·0 — the count stopped falling until the threat model was stated in the header; stating it is what let the reviewer grade the mid-run-adversary class as B instead of escalating each round"
|
|
3500
|
+
|
|
3501
|
+
- date: 2026-09-06
|
|
3502
|
+
agent: Workflow `archify-contract-layer-reconstruction` (resume of wf_240055bb after the session limit) — 4 live agents (build:b-nodeps · verify:a-ajv · verify:c-table · judge) + 3 cached (seal-oracle · build:a-ajv · build:c-table); persona agents fh-meta:beginner ×2 reused from the map worktree
|
|
3503
|
+
invoked_by: FH governor session (Fable 5.1 medium, overnight autonomous drive — operator «야간 자율주행 돌려줘 … qasp fh 모두 잘 부탁한다»)
|
|
3504
|
+
task: "reconstruct archify's validate contract layer from the skeleton + verbatim schemas only (no source copy), three independent builds, verify each against the sealed 40-arm oracle (rc + code-set parity, copy-scan, fail-before), judge and write RECON_REPORT.md"
|
|
3505
|
+
context_card: yes (workflow prompt carried the no-copy rule, sealed-oracle paths, threat model)
|
|
3506
|
+
outcome: accepted
|
|
3507
|
+
evidence: "parity b-nodeps 40/40 (zero deps, 1,068 LOC) · a-ajv 38/40 · c-table 38/40 (single fixture: throw-first vs collect-all reference policy) · copy-scan 0 hits on all three (planted-file control 73 hits) · fail-before 3/3 · 2/3 (fixture shadowing) · 3/3 · judge re-ran all 120 rows and reproduced the verifier numbers · reps=1 per arm. Tokens: 1,770,716 (resume) + 1,008,983 (pre-limit partial) · wall 30.6 + 21.7 min · builds preserved under expedition/recon-build/"
|
|
3508
|
+
tokens_subagent: 2779699
|
|
3509
|
+
notes: "first measured number for the operator's «코드 층 역공학 재구성» capability question — contract layer only; geometry/router/SVG not attempted (named). Chamber archify-recon verdict left to the operator (HITL); governor proposes CURATED (net-new = the measurement protocol, not a product)"
|
|
3510
|
+
|
|
3511
|
+
- date: 2026-09-06
|
|
3512
|
+
agent: general-purpose ×4 (qasp 조사 · oracle_type 배선 · 웹 백그라운드 동치 조사 · 오라클 스텝 배선 · PlaywrightAdapter 생명주기) + codex sidecar ×2 (cross-family 감사 2라운드)
|
|
3513
|
+
invoked_by: FH governor session (Opus 5, 운영자 «qasp는 더 갈 부분있다면 그것도 시켜줘» → «모두 ㄱㄱ» → «검토 잘하고 머지»)
|
|
3514
|
+
task: "qasp 다음 슬라이스 조사 → oracle_type 생산자 배선 · 2막 오라클 스텝/back verb 배선 · PlaywrightAdapter background/resume 첫 실 능력 · 각 건 cross-family(codex) 감사"
|
|
3515
|
+
context_card: yes (레포 절대경로 · 정본 선독 지시 · 커밋 규율 · push/PR 금지 · 되돌림 컨트롤 요구)
|
|
3516
|
+
outcome: accepted
|
|
3517
|
+
evidence: "PR #264·265·266·268 전부 머지(main=01dafcd) · CI 6/6 × 4. cross-family 1차 A급 4건(3 수리 · 1 **반증** — needs_clarification 은 disposition 게이트가 이미 막는다) · 2차 S1+A4(전부 수리). 거버너 독립 되돌림 재검 4건 전부 적색 확인. 전체 스위트 1 failed/3996 passed(시간의존 픽스처 1, 기존)"
|
|
3518
|
+
tokens_subagent: 986241
|
|
3519
|
+
notes: "🟥 계기 확정 하나가 부수 수확: 「기존 실패 13건」은 코드가 아니라 venv 아티팩트였다(uv 3.11 위에 3.13 접목, pip 이 코드가 안 읽는 곳으로). 깨끗한 클론·라이브 트리 양팔 모두 1 failed. 세션마다 13/12/14/1 로 갈리던 원인. 🟥 그리고 codex 가 못 본 형제 경로(not-mapped 분기)를 거버너가 찾았다 — 사이드카는 지목자이지 판정자가 아니라는 계보 그대로"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chrono-meta/fh-gate",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.1.0",
|
|
4
4
|
"description": "FH runtime adapters — run FH governance, skills, and agents via Claude or Codex with machine-parseable gates.",
|
|
5
5
|
"homepage": "https://github.com/chrono-meta/forge-harness#readme",
|
|
6
6
|
"bugs": {
|
|
@@ -107,6 +107,9 @@
|
|
|
107
107
|
"docs/IDENTITIES.md",
|
|
108
108
|
"docs/GATE_DAY.md",
|
|
109
109
|
"docs/platform_sustainability.md",
|
|
110
|
+
"docs/model_tier_expectations.md",
|
|
111
|
+
"docs/USE_CASES.md",
|
|
112
|
+
"docs/STANDARDS_ALIGNMENT.md",
|
|
110
113
|
"knowledge/shared/GLOSSARY.md",
|
|
111
114
|
"knowledge/shared/patterns",
|
|
112
115
|
"knowledge/shared/plugin-catalog",
|
|
@@ -129,10 +132,15 @@
|
|
|
129
132
|
"scripts/test_marker_floor_lanes.sh",
|
|
130
133
|
"scripts/test_marker_defense_lanes.sh",
|
|
131
134
|
"scripts/test_marker_crossfamily_lanes.sh",
|
|
135
|
+
"scripts/residency_closure_scan.py",
|
|
136
|
+
"scripts/test_residency_closure_lanes.sh",
|
|
132
137
|
"scripts/test_marker_standpoint_lanes.sh",
|
|
133
138
|
"scripts/test_marker_thirdparty_lanes.sh",
|
|
134
139
|
"scripts/test_marker_axes_run_lanes.sh",
|
|
135
140
|
"scripts/test_marker_soul_check_lanes.sh",
|
|
141
|
+
"scripts/test_marker_affected_lanes.sh",
|
|
142
|
+
"scripts/test_marker_oracle_lanes.sh",
|
|
143
|
+
"scripts/test_gate_two_verdicts_lanes.sh",
|
|
136
144
|
"scripts/test_heavy_classifier_lanes.sh",
|
|
137
145
|
"scripts/residency_admission_check.sh",
|
|
138
146
|
"scripts/test_residency_admission_lanes.sh",
|
|
@@ -167,6 +175,7 @@
|
|
|
167
175
|
"scripts/test_leak_scan_control_lanes.sh",
|
|
168
176
|
"templates/predelete_check.sh",
|
|
169
177
|
"templates/PRE-PUBLISH-CHECKLIST.md",
|
|
178
|
+
"templates/RED_TEAM_REPORT.md",
|
|
170
179
|
"scripts/degrade_direction_scan.sh",
|
|
171
180
|
"scripts/degrade_probe_capability.sh",
|
|
172
181
|
"scripts/psa_probe_capability.sh",
|
|
@@ -178,6 +187,8 @@
|
|
|
178
187
|
"scripts/prepush_guard_check.sh",
|
|
179
188
|
"templates/predelete_check.test.sh",
|
|
180
189
|
"scripts/test_prepush_destructive_lanes.sh",
|
|
190
|
+
"scripts/push_zone_check.sh",
|
|
191
|
+
"scripts/test_push_zone_lanes.sh",
|
|
181
192
|
"scripts/fixture_guard_lib.sh",
|
|
182
193
|
"scripts/shell_name_boundary_scan.sh",
|
|
183
194
|
"scripts/test_verdict_watermark_lanes.sh",
|
|
@@ -202,6 +213,7 @@
|
|
|
202
213
|
"scripts/test_prepush_stdin_integrity.sh",
|
|
203
214
|
"scripts/public_surface_scan_files.sh",
|
|
204
215
|
".claude/rules/.public-surface-patterns.defaults",
|
|
216
|
+
".claude/rules/.residency-patterns.defaults",
|
|
205
217
|
"plugins/fh-meta/.claude-plugin/plugin.json",
|
|
206
218
|
"plugins/fh-meta/skills",
|
|
207
219
|
"plugins/fh-meta/agents",
|
|
@@ -234,6 +246,10 @@
|
|
|
234
246
|
"scripts/stale_clone_guard.sh",
|
|
235
247
|
"scripts/proposal_hook.sh",
|
|
236
248
|
"scripts/test_proposal_hook_lanes.sh",
|
|
249
|
+
"scripts/outbound_query_hook.sh",
|
|
250
|
+
"scripts/test_outbound_query_hook_lanes.sh",
|
|
251
|
+
"scripts/outbound_query_guard.sh",
|
|
252
|
+
"scripts/test_outbound_query_lanes.sh",
|
|
237
253
|
"scripts/test_revert_probe_lanes.sh",
|
|
238
254
|
"scripts/revert_probe.sh",
|
|
239
255
|
"scripts/test_preprep_drift_anchor_lanes.sh",
|
|
@@ -282,8 +298,30 @@
|
|
|
282
298
|
"scripts/test_preprep_adjacent_dup_lanes.sh",
|
|
283
299
|
"scripts/test_preprep_promise_lanes.sh",
|
|
284
300
|
"scripts/test_mapped_tracks_lanes.sh",
|
|
301
|
+
"scripts/map_postprocess.py",
|
|
302
|
+
"scripts/test_map_postprocess_lanes.sh",
|
|
285
303
|
"!**/__pycache__",
|
|
286
304
|
"!**/__pycache__/**",
|
|
287
|
-
"!**/*.pyc"
|
|
305
|
+
"!**/*.pyc",
|
|
306
|
+
"scripts/probe_live_eval.sh",
|
|
307
|
+
"scripts/probe_live_eval_lib.py",
|
|
308
|
+
"scripts/test_probe_live_eval_lanes.sh",
|
|
309
|
+
".claude/regression/probes_live.yaml",
|
|
310
|
+
"scripts/com.forge-harness.live-eval.plist",
|
|
311
|
+
"scripts/utterance_intake.sh",
|
|
312
|
+
"scripts/transcript_utterances.py",
|
|
313
|
+
"scripts/test_utterance_intake_lanes.sh",
|
|
314
|
+
"scripts/worktree_reclaim.sh",
|
|
315
|
+
"scripts/test_worktree_reclaim_lanes.sh",
|
|
316
|
+
"plugins/fh-qp/.claude-plugin/plugin.json",
|
|
317
|
+
"plugins/fh-qp/README.md",
|
|
318
|
+
"plugins/fh-qp/qp_profile.example.yaml",
|
|
319
|
+
"plugins/fh-qp/skills",
|
|
320
|
+
"plugins/fh-qp/scripts",
|
|
321
|
+
"plugins/fh-qp/fixtures",
|
|
322
|
+
"scripts/test_fh_qp_lanes.sh",
|
|
323
|
+
"scripts/test_preprep_diagram_lanes.sh",
|
|
324
|
+
"scripts/test_preprep_slide_refs_lanes.sh",
|
|
325
|
+
"scripts/test_action_yml_lanes.sh"
|
|
288
326
|
]
|
|
289
327
|
}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
8
|
mkdir -p ~/preprep && cd ~/preprep
|
|
9
|
-
cp <이 디렉터리>/{preprep.py,interslide_deps.py,lane_progression.py,lane_adjacent_dup.py,lane_promise.py} .
|
|
9
|
+
cp <이 디렉터리>/{preprep.py,interslide_deps.py,lane_progression.py,lane_adjacent_dup.py,lane_promise.py,lane_diagram.py,diagram_from_json.py} .
|
|
10
10
|
cp -r <이 디렉터리>/ooxml . # 덱(pptx)을 다룬다면. 아니면 생략
|
|
11
11
|
cp <이 디렉터리>/surfaces.example.yaml surfaces.yaml
|
|
12
12
|
cp <이 디렉터리>/canon_terms.example.yaml canon_terms.yaml
|
|
@@ -16,6 +16,9 @@ python3 preprep.py
|
|
|
16
16
|
```
|
|
17
17
|
|
|
18
18
|
의존: `pyyaml` · `python-pptx` 둘뿐이다(나머지는 표준 라이브러리). FH 도, 네트워크도 필요 없다.
|
|
19
|
+
도해를 JSON 에서 굽는 갈래(`diagram_from_json.py`)만 **선택 의존**이 둘 더 있다 — node ≥ 18 + 로컬 설치한
|
|
20
|
+
archify(`npx -y skills add tt-a1i/archify --skill archify --agent claude-code --copy --yes`, MIT) · headless Chrome.
|
|
21
|
+
없으면 그 스크립트만 exit 10 으로 죽고 레인 L12 는 영수증 없음을 UNMEASURED 로 낸다 — 나머지 레인은 그대로 돈다.
|
|
19
22
|
|
|
20
23
|
## 드리프트를 막는 법
|
|
21
24
|
|