Skip to content

起動漏れの見張り役を足す(BACKLOG 53) - #259

Merged
suminot merged 280 commits into
mainfrom
claude/git-development-qksjy5
Nov 8, 2026
Merged

suminot merged 280 commits into
mainfrom
claude/git-development-qksjy5

Conversation

@suminot

@suminot suminot commented Nov 8, 2026

Copy link
Copy Markdown
Owner

補充や月次計測が起動しないまま止まることがある:

  • GitHub の schedule は遅れたり落ちたりする(補充の毎時の schedule が 30 時間で4回、2026-11-02)
  • 同じ concurrency グループで待てる依頼は1本で、後の依頼が前を取り消す(2026-11-08、補充の依頼が取り消された)
  • 補充の連鎖は積み残しがある間しか続かないが、CertSpotter の枠は1時間ごとに戻るので、毎時1回は回したい

見張り役のワークフロー(watchdog.yml)を足す。1時間に2回(11 分・46 分、補充の 41 分とずらす)起動し、実行の一覧と gold を見て、来ているはずの起動が無ければ頼む。何も測らない。

  • 補充:走っている・待っているものが無く、最後の起動から 50 分を過ぎていれば頼む
  • 月次計測:その月の gold に国内・米国・グループ会社のどれかが無く、来ているはずの時刻(国内は月初から 14 時間、米国は 1 日 14 時間、グループ会社は 1 日 20 時間)を過ぎていれば、1本だけ頼む。月次計測が走っている間は頼まない。同じ母集団を頼み直すのは 12 時間あけてから(落ち続ける実行を頼み続けない)。グループ会社は子会社の一覧があるときだけ
  • 判断は mailauth.watchdog.decide(純粋な関数、検査 8 件)。CLI mailauth watchdog --runs が頼むべき起動を JSON で出し、ワークフローが gh workflow run で頼む

重ねる仕組み:補充の毎時の schedule・補充と月次計測の連鎖・見張り役・作業セッションの定期チェック(GitHub の schedule とは別)。どれか1つが動けば止まらない。

今のデータで試すと「頼むべき起動なし」(補充は走っていて、今月の gold は3つともある)。

テスト:1989 passed, 1 skipped


Generated by Claude Code

claude added 30 commits November 2, 2026 22:19
CT_FETCH_BUDGET_SPENT は相手が答えていたのに P2 の持ち時間で引き切れな
かった印。同じ持ち時間で流し直しても同じ所で止まるので、次の一手は CT の
補充(残り 2% を切ると補充の方から月次計測を頼み直す)。両方出ていれば
落ちていた方を言う。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BEuQ2fvkN8GXzLtA5ohWtL
国内 2026-11 で起点の無い 341 社に ricksoft.jp・modalis.com のような
.co.jp を持たない会社が並んでいた。.jp・.com は1組織1つの決まりが無い
ので、社名の長さに関わらずタイトルに商号の形を求める。採ったものは
sample_found_other_tld に残す。確かめられなかった理由は1社1つに数える。

probe-official-site.yml は前の実行の silver から起点の無い会社だけを
取り、P1 と同じ推測を流して件数を出す(月次の流し直しをしない)。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BEuQ2fvkN8GXzLtA5ohWtL
国内 2026-11 は1回目の流し直しのあとに残った数件を補充で埋めただけで、
2回目の月次計測(2時間半、その間は補充も止まる)を頼んでいた。2回目から
は起点全部の 0.5% か 10 件の大きい方が新しく取れたときに限り、見送った
ときは理由を populations.<pop>.rerun_held に書く。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BEuQ2fvkN8GXzLtA5ohWtL
国内 2026-11 で「読めて社名が無かった」見本 20 件のうち 3 件はタイトルが
空だった(sukegawa.co.jp・medialinks.co.jp・kyoritsu.co.jp)。別のドメインへ
飛ぶもの(駐車ページ・グループ会社)は追わない。読んだ数を
meta_refresh_followed に残す。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BEuQ2fvkN8GXzLtA5ohWtL
httpx の timeout は接続・読み1回ごとの上限で、少しずつ送り続ける相手には
効かない。8 本の作業のうち1本でも掴まれると全体が遅れる。上限を過ぎたら
読めた分で確かめる(商号はたいてい先頭の <title> にある)。国内の流し直し
(run 41540374374)の P1 が前回の 9 分に対し1時間を超えていた。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BEuQ2fvkN8GXzLtA5ohWtL
国内の流し直し(run 41540374374)は WDQS の StreamReset 1回で Wikidata の
1,207 社分を失い、公式サイトの欠けが 405 → 1,021 社になった。P7 はこれを
劣化と見ておらず、公開中の 2026-11 を小さく上書きしかけたので止めた。

- 接続の切断・429・5xx は 10 秒・30 秒待って引き直す
- それでも引けなければ 40 日以内に引いた結果を使い ENRICH_WIKIDATA_FROM_CACHE
  を出す(data/cache/wikidata を補完のキャッシュに乗せる)
- P7:P1 の ENRICH_FAILED_WIKIDATA も劣化に数える

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BEuQ2fvkN8GXzLtA5ohWtL
米国 2026-11 で年次報告書から自社サイトが取れなかった会社(not_stated 487)
に OGE Energy・Telephone & Data Systems のような老舗が並んでいた。読む先頭
4 MB に該当の節が入っていないのか、書き方を拾えていないのかを分ける。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BEuQ2fvkN8GXzLtA5ohWtL
probe(run 41552957745、起点の無い 150 社)で、15 社は先頭 4 MB より後ろに
だけ、123 社は今の型に合わない書き方で自社サイトを書いていた。

- MAX_BYTES 4 MB → 24 MB(inline XBRL の隠し見出し)
- 「We maintain a website at」など主語が自社の書き方、「Our main corporate
  website」、「The Corporation's / The Bank's website」、自社の名前の所有格
  (所有者の語が社名の語だけのとき)を足した
- 版 3。版 2 で取れていた結果は読み直さない

probe の抜き書きでは 150 社中 79 社が取れる見込み。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BEuQ2fvkN8GXzLtA5ohWtL
補充の毎時の schedule は 30 時間で4回しか起動していない。22:02 の回が国内の
流し直しを頼んで鎖を止め、その流し直しを止めたあと、米国の積み残し 4,500 件余り
の補充が3時間止まっていた。

- ct-backfill:crt.sh から取れなかった回も、20 分待ってから1回だけ次を頼む
  (timeout 80 分)。qps は変えない
- monthly:補充を頼むかを、この母集団ではなくその月の積み残し全部で決める

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BEuQ2fvkN8GXzLtA5ohWtL
米国 2026-11 の起点なし 220 社に「Iron Horse Acquisition II Corp.」
「ARC Group Acquisition I Corp.」「Black Spade Acquisition III Co」
「Newbridge Acquisition Ltd」(SPAC)と「Bitwise Ethereum ETF」「Fidelity
Ethereum Fund」(SIC 6199)が残っていた。いまの母集団に当てると、新たに
外れるのはこの 6 社だけ。

- SPAC の社名:Acquisition と Corp/Co/Company の間の回数(I〜IV・数字)と、
  Ltd/Limited を認める
- 6199 で社名が ETF / ETP / Fund なら商品・暗号資産の上場信託(Trust は
  見ない。6199 には Coinbase などの事業会社も入る)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BEuQ2fvkN8GXzLtA5ohWtL
米国の母集団に、業種コードが無く社名が Fund のもの(NUVEEN MUNICIPAL VALUE
FUND INC など)が残っている。submissions の recent に何が入っているかを見る。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BEuQ2fvkN8GXzLtA5ohWtL
claude added 29 commits November 7, 2026 17:52
- ctlog:引いたドメインの配下で左端が MAIL_NAME_LABELS の FQDN をキャッシュに残す(crt.sh・CertSpotter)
- P2:所有の裏付けのある apex の配下だけ、ct_mail_name としてサブドメインの候補に(候補の枠は従来どおり)
- 独立の経路・所有の根拠は certificate として扱う
- 方法の説明・変更履歴(日英)・BACKLOG

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BEuQ2fvkN8GXzLtA5ohWtL
- exist_flg=true は「法人活動情報がある」に絞るパラメータで、子会社の多くが not_found になっていた
- limit 50 → 1000、corporate_type(株式会社・有限会社・合同会社)で絞る、閉鎖した法人は採らない
- 一覧に引き方の版(query 列)。古ければ found 以外を引き直す
- 子会社名の住所・末尾の助詞・「の決算日」を切り離す(読み方の版 3)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BEuQ2fvkN8GXzLtA5ohWtL
補充は crt.sh が遅く 15 分で 40 件ほど(2026-11-07、積み残し 3,372 件)。P2 が積み残しを書くとき、
派生の母集団(日経225)の会社を前に置き、補充は前から引く(qps・同時本数は変えない)。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BEuQ2fvkN8GXzLtA5ohWtL
no_url 3,035 件(2 回目の読み取り)。商号の一致は gBizINFO で確かめ済みで、法人番号は一意。
上場会社と同じ SPARQL(P3225 → P856、CC0、1回で全件)。出典に Wikidata を足す。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BEuQ2fvkN8GXzLtA5ohWtL
- 子会社名の次の欄(住所)から都道府県を読む(政令指定都市・都府県の省略にも対応)。一覧に prefecture 列
- gBizINFO で同じ商号が複数なら、所在地がその都道府県の法人だけに絞り、1つに決まれば採る
- 読み方の版 4(節の本文はキャッシュから読み直す)、引き方の版 3(ambiguous・not_found だけ引き直す)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BEuQ2fvkN8GXzLtA5ohWtL
gBizINFO で見つからなかった 2,037 件に「4.日創エンジニアリング株式会社」「2025年6月2日に行われた東芝マテリアル株式会社」
「株式会社ニチビ常務取締役」「株式会社GKIと協業を開始」などが残っていた。切り離せば引き直しで当たる。
助詞で始まるもの・一般名詞だけのもの(「銀行株式会社」)は名前として採らない。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BEuQ2fvkN8GXzLtA5ohWtL
グループ会社は per_population で CT を切っているのに、P2 の前で 24 分待っていた(P2 そのものは 6 分)。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BEuQ2fvkN8GXzLtA5ohWtL
日本カストディ銀行が 27 社、三菱UFJ の銀行が 29 社、三井住友信託が 24 社の親の下に出ていた。
有報の注記に出てくる借入先・信託口の銀行で、子会社ではない。合弁でも親は2社まで。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BEuQ2fvkN8GXzLtA5ohWtL
nissan-global.com(6社)・aeon.info(7社)・japanpost.jp(7社)など。子会社自身のドメインではなく、
測ると同じドメインを子会社の数だけ数える。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BEuQ2fvkN8GXzLtA5ohWtL
- 起点ドメインの補充は名前1つの検索(100 本/時の枠、match_wildcards 付き)に移す
- サブドメイン込みの検索(10 本/時の枠)は、メール用らしいサブドメインの名前を取る専用に。
  1本 = 1ページ、日経225 の会社を前に。続きの位置を月の CT キャッシュに書いて回をまたぐ
- P2 が順番(_mail_queue)を書く。今月は補充が silver から作る(ct-mail-queue)
- 応答の x-ratelimit-limit を補充の報告に出す。使い切ったら止める(従来どおり)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BEuQ2fvkN8GXzLtA5ohWtL
Small プランの名前1つの検索の枠は、crt.sh の積み残しが無く空いていた(2026-11-08 実測)。
- P2:per_population の ct.cache_only で、グループ会社は CT を月のキャッシュだけ読む(CacheOnlyCt)。
  無い起点は積み残し(via: certspotter)に書く。取りにいっていないので失敗には数えない
- 補充:via: certspotter の積み残しは crt.sh に投げず、CertSpotter の名前1つの検索で埋める
- 月次計測:キャッシュだけを読む母集団は CT の補充を待たない

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BEuQ2fvkN8GXzLtA5ohWtL
GitHub の schedule の抜け・待ちの依頼の取り消し・連鎖の切れで、補充や月次計測が起動しない
ことがある。見張り役(watchdog.yml、1時間に2回、補充と違う分)が実行の一覧と gold を見て、
補充が 50 分より長く起動していない・その月の gold に母集団が無い、なら頼む。判断は
watchdog.decide(純粋な関数、検査あり)。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BEuQ2fvkN8GXzLtA5ohWtL
@suminot
suminot merged commit 5ecf55a into main Nov 8, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants