| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
fix(ci): drift gate falls back to HEAD blob when working-tree binary is overwritten validate-plugin.yml's 'Build harness binary for validation scripts' step overwrites bin/harness-linux-amd64 with a plain dev build before check-consistency runs, so the gate compared its reproducible rebuild against the clobbered file and always failed on that job. The gate's contract is committed-binary == source: when the working-tree file mismatches, compare against git cat-file blob HEAD:<path> before declaring drift. A tampered commit still fails (neither copy matches). Verified locally by overwriting the binary with a plain go build and confirming the fallback path passes while the committed blob matches. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DJCgLmiCCCdfE7ptPftkzx | 3 个月前 | |
feat(gates): Phase 104.2/104.5/104.6/104.7 — Plans deps checker + branch-alignment ledger + binary drift gate + CI wiring 104.2: bin/harness plans check-deps (done task の Depends 閉包検証) + check-consistency [20/22] 104.5: docs/branch-alignment-ledger.md (main safety 11 commit を ported/waived で台帳化) + [21/22]。fa88d4cf autonomous-confirmation-scope.md を実 port 104.6: check-binary-source-drift.sh (決定論 -trimpath rebuild と SHA 比較) + [22/22] + 4 binary 再生成 104.7: validate-plugin.sh に test-hooks-sync + test-generate-skill-manifest を配線 Lead 修正: codex の workflows 変更を revert (保護対象、手動 patch 退避)、fa88d4cf を waived→ported 訂正、manifest test 配線補完。 Implemented-by: Codex (gpt-5.5), Lead-reviewed+corrected. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> | 3 个月前 | |
fix: resolve 22 pre-existing issues from Codex review (Phase 5) Security hardening (5.1): - pretooluse-guard.sh: symlink bypass protection via realpath + eval→jq - permission-request.sh: npm auto-approval → per-repo allowlist - userprompt-track-command.sh: prompt_preview umask 077 - session-monitor.sh: resume_token chmod 600 + umask 077 Documentation fixes (5.2): broken SSOT links, stale command refs, path mismatches across 5 docs files. Video maintenance (5.3): Remotion path updates, z.any()→z.unknown() in 4 schema files. Build tooling (5.6): empty gate logic, project-analyzer refs, commands/ empty directory handling, harness-ui catalog fallback, parse-work-flags.md consistency. Naming/routing (5.7): /planning→/plan-with-agent unification, verify user-invocable fix, Codex setup dedup, archived dangling refs. Mirror sync to codex/.codex/skills/ and opencode/skills/. validate-plugin.sh + check-consistency.sh: all pass. Reviewer: APPROVE Grade A (0 Critical/Major). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> | 7 个月前 | |
feat(guardrail): 配線漏れ検出ゲートと防御層の影響確認規約を追加する (132.4/132.5)、work-mode の土台を入れる (132.3 未完) 今日の一次原因は「skip 経路が実装済みなのに、それを立てる producer が repo 内に一つも無い」ことだった。個別修正だけでなく、同型欠陥を機械検知する 仕組みと、事故を繰り返さないための規約を同時に入れる。 ## 132.4 — 配線漏れ検出ゲート (新規) scripts/ci/check-config-knob-wiring.sh: go/internal/guardrail と go/internal/policy が os.Getenv で読む HARNESS_* / ULTRAWORK_* の各キーに producer があるか、templates/registry/operator-supplied-knobs.v1.yaml へ operator 供給として登録済みかを検証する。tests/validate-plugin.sh から実行。 初回実行で 13 キー中 10 件違反。判明済みの 2 件に加え、同型の未配線が 8 件 見つかった (HARNESS_BREEZING_ROLE / HARNESS_CODEX_MODE / HARNESS_ACTIVE_PHASE / HARNESS_ACTIVE_TASK / HARNESS_TDD_* 4 件)。とくに HARNESS_BREEZING_ROLE は R08 (breezing reviewer の書き込み禁止) が読むため、Reviewer 制約が発火して いない疑いがある。ゲートを green で着地させるため registry へ grandfather 登録したが、registry 本文に「追認ではなく一時退避」と明記し、triage は Plans.md 132.6 として起票した。 走査漏れの回帰網 (新規 os.Getenv を fixture に足して検出されること) を含む。 ## 132.5 — 防御層の影響確認規約 (新規) .claude/rules/defense-layer-blast-radius.md + CLAUDE.md からの参照。 2026-08-10 に同型の事故を 2 回起こした (sandbox の denyRead で gh CLI と git credential helper を破壊、sandbox 有効化で DNS と SSH 設定読取を遮断し 本番到達不能) ことを一次情報として codify。層ごとの影響範囲、強制力と 適用範囲の反比例、追加前 5 点チェック、excludedCommands がサブプロセスへ 継承されない事実、user scope 昇格前の 1 プロジェクト検証を定める。 check-consistency.sh に存在と必須フレーズ 4 件のチェックを追加し、 変異検査 (フレーズを削ると検知) で実効性を確認。 ## 132.3 — work-mode の土台 (未完、blocked) harness work-mode <on/off/status> と work_states の読み書きを実装。 session ID 未解決時は非ゼロ終了。work_states の FOREIGN KEY を満たすため 既存 sessions 行が無いときだけ最小行を作る (無条件 upsert は mode / context_json を潰す。この退行はテストで pin)。 ただし独立レビューと実測で、session ID の解決先が誤っていることが判明した。 ReadLocalSessionID が読む .claude/state/session.json はセッション監視の 状態ファイルで、内部生成の timestamp ベース ID を持つ。Claude Code が hook に 渡す実 session_id とは別物。実測: work-mode on 後も、実 ID の payload に対して R04 は ask のまま = 効いていない。 初回の DoD(a) 検証は CLI が書いた ID をそのまま hook へ渡していたため 自作自演だった。この点を含め work_mode.go 冒頭に KNOWN GAP として明記し、 Plans.md 132.3 は blocked、識別子の修正を 132.7 として起票した。 現時点で /breezing の停止を止めているのは operator が設定する HARNESS_WORK_MODE=1 (env)。 ## その他 - doctor_test.go に t.Setenv("CLAUDE_PLUGIN_DATA", "") を追加。 ResolveStatePath が同 env を最優先するため、Claude Code セッション内でのみ 失敗し CI では通る状態だった。アサーションは一切緩めていない (env 経路は TestDoctor_CheckStateDB_ViaEnv が別途カバー)。 - CHANGELOG の [Unreleased] に ### Added を二重に作っていたのを既存節へ統合。 - Plans.md の Status セルに未エスケープの | があり依存クロージャ検査が 壊れていたのを修正。 検証: go test ./... 47 パッケージ PASS (TestLeaseReclaim_ConcurrentSlowPath が 全体実行時に 1 度 FAIL したが単独では 3/3 PASS の flaky。hookhandler は未変更)、 gofmt/vet clean、check-consistency.sh 25/25、mirror in-sync、 配線漏れゲート 13 キー 0 違反、その契約テスト 4/4。binary 4 種を再ビルド。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PCi5GLAfya9aWYnDc7cmhs | 2 个月前 | |
feat(verification): Phase 134-137 — 検証チェーン配線修理 + writing lint + surface + ループ施策 Phase 134: 入口 (risk_flags→profile 自動昇格 + ratchet) / 中間 (PENDING_BROWSER fail-visible, pending_validations) / 出口 (accept-collect-evidence.sh による artifact 機械接続) の 3 継ぎ目を接続。scope leash 本配線 (warn 既定)、Playwright Screencast evidence、worker-report.v1 永続化、再調査ループ、検証の検証 (check-verification-chain-wiring.sh + 実効性契約テスト 3 本、RED→GREEN 実測)。 Phase 135: writinglint エンジン (辞書は個人層) + PostToolUse advisory + Stop 全体再検査 + 指摘→ルール自動ドラフト→人間承認ループ + config schema 正式化。 Phase 136: 3 surface スマホ viewport / 承認待ちキュー表示 / diagram-design 接続点。 Phase 137: 採点設計規律 (criteria 3 層翻訳) / blind 受け手検査 / 評価者 4 契約。 decisions.md D62-D68 に判断根拠を記録。worker 契約に NG-4 追加。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TFcsXBG95kTdxPfDaP7Vuu | 1 个月前 | |
feat(guardrail): 配線漏れ検出ゲートと防御層の影響確認規約を追加する (132.4/132.5)、work-mode の土台を入れる (132.3 未完) 今日の一次原因は「skip 経路が実装済みなのに、それを立てる producer が repo 内に一つも無い」ことだった。個別修正だけでなく、同型欠陥を機械検知する 仕組みと、事故を繰り返さないための規約を同時に入れる。 ## 132.4 — 配線漏れ検出ゲート (新規) scripts/ci/check-config-knob-wiring.sh: go/internal/guardrail と go/internal/policy が os.Getenv で読む HARNESS_* / ULTRAWORK_* の各キーに producer があるか、templates/registry/operator-supplied-knobs.v1.yaml へ operator 供給として登録済みかを検証する。tests/validate-plugin.sh から実行。 初回実行で 13 キー中 10 件違反。判明済みの 2 件に加え、同型の未配線が 8 件 見つかった (HARNESS_BREEZING_ROLE / HARNESS_CODEX_MODE / HARNESS_ACTIVE_PHASE / HARNESS_ACTIVE_TASK / HARNESS_TDD_* 4 件)。とくに HARNESS_BREEZING_ROLE は R08 (breezing reviewer の書き込み禁止) が読むため、Reviewer 制約が発火して いない疑いがある。ゲートを green で着地させるため registry へ grandfather 登録したが、registry 本文に「追認ではなく一時退避」と明記し、triage は Plans.md 132.6 として起票した。 走査漏れの回帰網 (新規 os.Getenv を fixture に足して検出されること) を含む。 ## 132.5 — 防御層の影響確認規約 (新規) .claude/rules/defense-layer-blast-radius.md + CLAUDE.md からの参照。 2026-08-10 に同型の事故を 2 回起こした (sandbox の denyRead で gh CLI と git credential helper を破壊、sandbox 有効化で DNS と SSH 設定読取を遮断し 本番到達不能) ことを一次情報として codify。層ごとの影響範囲、強制力と 適用範囲の反比例、追加前 5 点チェック、excludedCommands がサブプロセスへ 継承されない事実、user scope 昇格前の 1 プロジェクト検証を定める。 check-consistency.sh に存在と必須フレーズ 4 件のチェックを追加し、 変異検査 (フレーズを削ると検知) で実効性を確認。 ## 132.3 — work-mode の土台 (未完、blocked) harness work-mode <on/off/status> と work_states の読み書きを実装。 session ID 未解決時は非ゼロ終了。work_states の FOREIGN KEY を満たすため 既存 sessions 行が無いときだけ最小行を作る (無条件 upsert は mode / context_json を潰す。この退行はテストで pin)。 ただし独立レビューと実測で、session ID の解決先が誤っていることが判明した。 ReadLocalSessionID が読む .claude/state/session.json はセッション監視の 状態ファイルで、内部生成の timestamp ベース ID を持つ。Claude Code が hook に 渡す実 session_id とは別物。実測: work-mode on 後も、実 ID の payload に対して R04 は ask のまま = 効いていない。 初回の DoD(a) 検証は CLI が書いた ID をそのまま hook へ渡していたため 自作自演だった。この点を含め work_mode.go 冒頭に KNOWN GAP として明記し、 Plans.md 132.3 は blocked、識別子の修正を 132.7 として起票した。 現時点で /breezing の停止を止めているのは operator が設定する HARNESS_WORK_MODE=1 (env)。 ## その他 - doctor_test.go に t.Setenv("CLAUDE_PLUGIN_DATA", "") を追加。 ResolveStatePath が同 env を最優先するため、Claude Code セッション内でのみ 失敗し CI では通る状態だった。アサーションは一切緩めていない (env 経路は TestDoctor_CheckStateDB_ViaEnv が別途カバー)。 - CHANGELOG の [Unreleased] に ### Added を二重に作っていたのを既存節へ統合。 - Plans.md の Status セルに未エスケープの | があり依存クロージャ検査が 壊れていたのを修正。 検証: go test ./... 47 パッケージ PASS (TestLeaseReclaim_ConcurrentSlowPath が 全体実行時に 1 度 FAIL したが単独では 3/3 PASS の flaky。hookhandler は未変更)、 gofmt/vet clean、check-consistency.sh 25/25、mirror in-sync、 配線漏れゲート 13 キー 0 違反、その契約テスト 4/4。binary 4 種を再ビルド。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PCi5GLAfya9aWYnDc7cmhs | 2 个月前 | |
feat(i18n): complete hookhandler migration, promote gate to zero bare Japanese (106.2) 残り hookhandler 全ファイルを localizedHarnessMessage 経由へ移行し、 ratchet baseline 73 -> 0。gate を「裸日本語 0 件必須」へ昇格。 新規裸日本語で gate fail する test を追加。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0184cS3XYLitPZkhHp5KgYeq | 3 个月前 | |
fix(ci): git 管理外の Plans.md を自リポジトリの HEAD と照合しない (CodeRabbit 指摘) git root を解決できない時に $ROOT_DIR へ fallback していた。別の場所にある Plans.md を渡すと無関係なリポジトリの HEAD と照合され、hash がたまたま一致して gate が通る誤判定が起きる。検証不能なら落とす。 あわせて CHANGELOG の Phase 128 記録に Before/After 表を追加する (github-release.md の規約)。 実測: bash scripts/ci/check-plans-hash-reachability.sh <git 管理外の Plans.md> → exit 1 "git repository 内にありません" bash tests/test-plans-hash-reachability.sh → PASS=7 FAIL=0 (assertion (f) 追加) bash tests/validate-plugin.sh → 合格 134 / 失敗 0 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012ZBxNEtYJbtHkZcsAn8nsv | 2 个月前 | |
test(ci): report which pipeline seam failed, and skip an unobservable probe The gate said only 'failed', which costs a full CI round trip to diagnose. It now prints the NG/SKIP lines. The hermes gen probe also treated the shim's no-binary path as a failure; the shim exits 0 with no output when a platform has no matching binary, so that is not_observed, not a missing delivery. Replaces the temporary bash -x diagnostic from 027cf28b. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EcQecbVecCgAx5GdpgTvXb | 1 个月前 | |
fix(tests,scripts): pipefail 下の `producer | grep -q` 173 箇所を herestring へ一掃 (Phase 129) (#286) * fix(tests,scripts): pipefail 下の `producer | grep -q` 173 箇所を herestring へ一掃 PR #285 で実害 2 箇所を直したが、同じ書き方が 173 箇所残っていた。 `grep -q` は最初の一致で終了してパイプを閉じるため、分割書き込み中の producer が EPIPE で失敗する。`set -o pipefail` がその失敗をパイプライン 全体の結果へ昇格させるので、探す文字列が実在するのに「無い」と判定される。 一致が入力の前方にあるほど再現するため、合否が「探す文字列が何行目にあるか」 で決まる状態だった。 - tests/test-pipefail-grep-q-safety.sh を新設 (Phase 129.1)。 静的走査で該当箇所を検出し、fixture 8 件で除外条件を固定 (pipefail 無し / `|| true` / herestring / grep -c / コメント行 / 引用符内) - tests/ 39 ファイル 131 箇所、scripts/ 19 ファイル 42 箇所を変換 (Phase 129.2 / 129.3) - tests/validate-plugin.sh に節 19 を配線し、 tests/test-validate-plugin-wiring.sh の pin にも追加 (Phase 129.4)。 検査の除去には 2 つの独立したファイルの変更が必要になる 引用符認識を実装した過程で、旧パターンが取りこぼしていた 3 段パイプライン (`echo | jq | grep -qi`) を 1 件発見し、変数経由に分解した。 実測: - 検出件数 173 → 0 - 変換部分は追加 172 / 削除 172 の 1 対 1 (アサーション削除・期待値緩和ゼロ) - bash -n 全 58 ファイル OK (行末継続 `\` を壊した 4 箇所はここで検出し修正) - shellcheck warning は変換前後とも 29 件で同数、herestring 起因の新規指摘ゼロ - validate-plugin 132 合格 0 失敗 (131 + 新設 1 節) - check-consistency 全 24 通過 (変換対象に check-consistency.sh 自身を含む) - go test ./... 0 失敗、VERSION / plugin.json / harness.toml 非接触 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * docs(plan): Phase 129 完走 — 全 4 task を cc:done に更新 129.1 検出テスト新設 / 129.2 tests/ 131 箇所 / 129.3 scripts/ 42 箇所 / 129.4 配線 + closeout。各 task の Status に実測値を記録した。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * fix(tests): 検出器の 2 件の欠陥を修正 (CodeRabbit 指摘) いずれも実測で再現を確認してから修正した。 - 行継続を跨ぐパイプラインの検出漏れ: `perl -ne` が物理行ごとに走査するため、 行末の `\` で分割された `printf ... \ | grep -q ...` を見落としていた。 物理行を論理行へ畳んでから走査する。行番号は論理行の開始位置を報告する - 引用符内のエスケープの誤解釈: 二重引用符の中の `\"` を閉じ引用符と解釈し、 後続の `| grep -q` が引用符の外に見えて誤検出していた。二重引用符の中でのみ `\` をエスケープとして扱う (単一引用符の中では shell の仕様どおり扱わない) fixture は 8 件 → 10 件。CHANGELOG に Before/After 表を追加した。 改良後の検出器を変更前ツリーへ適用すると 168 箇所 (旧実装は 173)。差の 5 件は 行継続の畳み込みによる数え方の違いで、検出漏れではない。物理行 782・783 を 2 件と数えていたものが論理行の開始 781 の 1 件になる。該当箇所は目視で 変換の正しさを確認済み。 検証: validate-plugin 132 合格 0 失敗、check-consistency 全 24 通過。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: tachibanashuuta <tachibana@canai.jp> Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> | 2 个月前 | |
feat(verification): Phase 134-137 — 検証チェーン配線修理 + writing lint + surface + ループ施策 Phase 134: 入口 (risk_flags→profile 自動昇格 + ratchet) / 中間 (PENDING_BROWSER fail-visible, pending_validations) / 出口 (accept-collect-evidence.sh による artifact 機械接続) の 3 継ぎ目を接続。scope leash 本配線 (warn 既定)、Playwright Screencast evidence、worker-report.v1 永続化、再調査ループ、検証の検証 (check-verification-chain-wiring.sh + 実効性契約テスト 3 本、RED→GREEN 実測)。 Phase 135: writinglint エンジン (辞書は個人層) + PostToolUse advisory + Stop 全体再検査 + 指摘→ルール自動ドラフト→人間承認ループ + config schema 正式化。 Phase 136: 3 surface スマホ viewport / 承認待ちキュー表示 / diagram-design 接続点。 Phase 137: 採点設計規律 (criteria 3 層翻訳) / blind 受け手検査 / 評価者 4 契約。 decisions.md D62-D68 に判断根拠を記録。worker 契約に NG-4 追加。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TFcsXBG95kTdxPfDaP7Vuu | 1 个月前 | |
fix: rescue PR61 under release-only versioning policy | 6 个月前 | |
fix: rescue PR61 under release-only versioning policy | 6 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 3 个月前 | ||
| 3 个月前 | ||
| 7 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 3 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 6 个月前 | ||
| 6 个月前 |