porn-fun【評価・SEX DOLL】cronテンプレート v0.1.66 支社PC実運用版

スレッド立ち上げ依頼文

porn-fun【評価・SEX DOLL】の支社PC用cronテンプレート作成・設定スレッドを起動してください。

この立ち上げ文だけではautomationを作成しない。次に貼る一括作成依頼文または個別作成依頼文だけを対象にする。

対象:
- porn-fun Hubのみ
- workflow_id: `porn-fun-sex-doll-shops-ja`
- content_set: `porn_fun_sex_doll_shops`
- article_kind: `evaluation_score_dictionary_new_genre`
- Hub正本: `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun`
- cron実行cwd: `C:\Users\Public\Documents\LLC358\_codex_cron_threads`
- 最初に読む場所: `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun\startup_docs\current`
- Gate正本: `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun\gates\current`
- cron本文正本: `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun\cron_prompts\current\SEXDOLL`
- workflow scope正本: `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun\cron_prompts\current\WORKFLOW_SCOPE_MATRIX.md`
- validator成果物: `runtime\validator_results\porn-fun-sex-doll-shops-ja\{slug}\{stage}\validator_result.json`

触らない対象:
- AIfan Hub、AIfan active cron、AIfan記事
- porn-fun以外のサイトHub
- 既公開記事本文の勝手な編集
- キー、トークン、認証値
- 旧 `representative-work-gate`
- `_codex_cron_threads\AGENTS.md`
- 共有 `Autopost358\HUB\gates`

workflow混同防止:
- このcronは `workflow_id=porn-fun-sex-doll-shops-ja` / `content_set=porn_fun_sex_doll_shops` / `article_type=SEX_DOLL` だけを処理する。
- `agent_pack` / `agent_work_queue` / 保存readbackで別workflow、別content_set、別article_typeの候補が返った場合は処理しない。対象外として記録し、このcronの成功件数に数えない。
- 別workflowの収集元、カテゴリ、validator保存先、301/旧記事移行ルールを流用しない。
- validator成果物は `runtime\validator_results\porn-fun-sex-doll-shops-ja\{slug}\{stage}\validator_result.json` に保存する。別workflow用パスを使わない。
- 未実装API名や未登録API名を必須停止条件にしない。起動時確認は `api=status`、`agent_pack`、`agent_work_queue`、サイトHub内current正本で行う。

起動時に `api=status` で `hub_version` を確認し、ログに記録する。
作成時点の参考基準は `0.1.66-pornfun-internal-link-live-200-gate-20260607`。
ただしporn-fun Hubが別スレッドまたは別PCでバージョンアップされている場合は、その時点のlive Hub応答とサイトHub内の `startup_docs/current`、`gates/current`、`cron_prompts/current` を最新版として扱う。
`hub_version` が依頼文記載のバージョンと一致しないことだけを理由に停止しない。
停止するのは、Hub API取得不能、agent_pack/work_queue取得不能、保存API利用不可、保存後readback不成立、または必要なcurrent正本欠落の場合だけ。

実運用の1日の起動回数:
- 収集: 1回/日
- 検査: 4回/日
- 制作: 最大3回/日
- 高品質チェック: 最大5回/日
- 訂正: 1回/日
- 改善ハンドオフ: 週1回、または改善キュー発生時

起動時間設定ルール:
- 既存ACTIVE cronを確認してから設定する。
- 同時刻と前後10分を避ける。
- 00分固定を避ける。
- 分は 07 / 13 / 19 / 26 / 34 / 41 / 48 / 55 を優先候補にする。
- 朝・昼・夕・夜へ分散する。
- 制作cronは同一site/workflowの前回制作runから最低3時間あけ、同時並行させない。
- 空けられない場合は5分間隔、1分間隔、最後は同時刻の順で詰める。混雑だけで作成停止しない。
- cron実行cwdは `C:\Users\Public\Documents\LLC358\_codex_cron_threads`。
- 支社PCへ持っていく対象は `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun` だけ。このサイトHub内でGate、startup、cron prompt、runtime証跡を完結させる。

作成するcron:
- porn-fun【評価・SEX DOLL】収集: 1回/日 / `FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU;BYHOUR=4;BYMINUTE=13;BYSECOND=0` / model gpt-5.4
- porn-fun【評価・SEX DOLL】検査: 4回/日 / `FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU;BYHOUR=6,12,16,21;BYMINUTE=19;BYSECOND=0` / model gpt-5.5
- porn-fun【評価・SEX DOLL】制作: 最大3回/日 / `FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU;BYHOUR=9,15,22;BYMINUTE=34;BYSECOND=0` / model gpt-5.5
- porn-fun【評価・SEX DOLL】高品質チェック: 最大5回/日 / `FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU;BYHOUR=11,13,17,20,23;BYMINUTE=41;BYSECOND=0` / model gpt-5.5
- porn-fun【評価・SEX DOLL】訂正: 1回/日 / `FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU;BYHOUR=18;BYMINUTE=48;BYSECOND=0` / model gpt-5.4
- porn-fun【評価・SEX DOLL】改善ハンドオフ: 週1回、または改善キュー発生時 / `FREQ=WEEKLY;BYDAY=SU;BYHOUR=8;BYMINUTE=55;BYSECOND=0` / model gpt-5.4

カテゴリ/収集範囲:
- SEX DOLLは旧HUBの新ジャンル評価記事ルールに従う。収集起点URLは https://theporndude.com/sex-doll-shops 。この起点からSex Dollショップ候補を拾い、公式ショップ、配送、返品、素材、価格帯、支払い、安全性、海外対応、口コミ/評判を確認する。
- 旧HUB Candidate source policyに従い、Sex Doll Shops source は https://theporndude.com/sex-doll-shops とする。旧実行ログでは source_requested=https://theporndude.com/sex-doll-shops、direct pageが読めない場合は source_used=https://theporndude.net/ の現行一覧にある Sex Shops セクションを使っていた。今回もdirect pageが読めない場合はThePornDudeの現行一覧/ミラー上の該当セクションをsource_usedとして記録し、source_requested/source_used/source_access_noteを残す。ThePornDude と PornDudeAI はsource directory専用であり、記事候補にしてはいけない。候補名が PornDudeAI / ThePornDude、候補ドメインが porndudeai.com / theporndude.com のものは除外し、source_url/source_pageとしての引用だけ許可する。候補ごとに公式ショップ、公式FAQ、配送/返品/素材/支払いページ、公開レビュー、比較記事で裏取りする。実在性・公式性が弱いショップは未確認付箋で扱う。
- SEX DOLL評価記事で制作した記事のdirectory_categoryは `sex-doll-shops` 固定。勝手に新規カテゴリを作らない。公開後は `https://porn-fun.com/ja/directory-category/sex-doll-shops/` のreadbackで確認する。directory_collectionは `adult-services`。評価軸や機能名をdirectory_categoryに入れない。これは新ジャンル評価記事であり、単体移行、旧URL移行、旧投稿アイキャッチ移行、301、移行コピーは対象外。

更新時刻: 2026-06-08 00:25 JST
Marker: PORNFUN_CATEGORY_REALOPS_BRANCH_PC_CRON_TEMPLATE_20260607_561

cron一式作成依頼文

【cron一括作成依頼文】

以下を新規automationとして作成してください。名称に「テスト」を入れない。

- name: `porn-fun【評価・SEX DOLL】収集` / rrule: `FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU;BYHOUR=4;BYMINUTE=13;BYSECOND=0` / model: gpt-5.4 / runs: 1回/日
- name: `porn-fun【評価・SEX DOLL】検査` / rrule: `FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU;BYHOUR=6,12,16,21;BYMINUTE=19;BYSECOND=0` / model: gpt-5.5 / runs: 4回/日
- name: `porn-fun【評価・SEX DOLL】制作` / rrule: `FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU;BYHOUR=9,15,22;BYMINUTE=34;BYSECOND=0` / model: gpt-5.5 / runs: 最大3回/日
- name: `porn-fun【評価・SEX DOLL】高品質チェック` / rrule: `FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU;BYHOUR=11,13,17,20,23;BYMINUTE=41;BYSECOND=0` / model: gpt-5.5 / runs: 最大5回/日
- name: `porn-fun【評価・SEX DOLL】訂正` / rrule: `FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU;BYHOUR=18;BYMINUTE=48;BYSECOND=0` / model: gpt-5.4 / runs: 1回/日
- name: `porn-fun【評価・SEX DOLL】改善ハンドオフ` / rrule: `FREQ=WEEKLY;BYDAY=SU;BYHOUR=8;BYMINUTE=55;BYSECOND=0` / model: gpt-5.4 / runs: 週1回、または改善キュー発生時

共通設定:
- kind: cron
- status: ACTIVE
- executionEnvironment: local
- cwds: `C:\Users\Public\Documents\LLC358\_codex_cron_threads`
- reasoningEffort: high
- localEnvironmentConfigPath: null
- 既存ACTIVE cronを確認し、同時刻と前後10分を避ける。
- `hub_version` が依頼文記載のバージョンと一致しないことだけを理由に停止しない。
- workflow/content_set/article_typeは `porn-fun-sex-doll-shops-ja` / `porn_fun_sex_doll_shops` / `SEX_DOLL` に固定し、別workflowの候補、カテゴリ、validator保存先を流用しない。
- 作成後に、各cronの name / id / status / rrule / model / cwd を報告する。
- 秘密値・認証値・APIキーは表示しない。

個別cron作成依頼文

porn-fun【評価・SEX DOLL】 収集cron作成依頼文

【cron個別作成依頼文】

以下のautomationを1件だけ新規作成してください。

automation名:
porn-fun【評価・SEX DOLL】収集

対象:
- porn-fun Hubのみ
- workflow_id: `porn-fun-sex-doll-shops-ja`
- content_set: `porn_fun_sex_doll_shops`
- article_type: `SEX_DOLL`
- stage: collection
- validator成果物: `runtime\validator_results\porn-fun-sex-doll-shops-ja\{slug}\{stage}\validator_result.json`

触らない対象:
- AIfan Hub、AIfan active cron、AIfan記事
- porn-fun以外のサイトHub
- 既公開記事本文の勝手な編集
- キー、トークン、認証値
- 旧 `representative-work-gate`
- `_codex_cron_threads\AGENTS.md`
- 共有 `Autopost358\HUB\gates`

workflow混同防止:
- このcronは `workflow_id=porn-fun-sex-doll-shops-ja` / `content_set=porn_fun_sex_doll_shops` / `article_type=SEX_DOLL` だけを処理する。
- `agent_pack` / `agent_work_queue` / 保存readbackで別workflow、別content_set、別article_typeの候補が返った場合は処理しない。対象外として記録し、このcronの成功件数に数えない。
- 別workflowの収集元、カテゴリ、validator保存先、301/旧記事移行ルールを流用しない。
- validator成果物は `runtime\validator_results\porn-fun-sex-doll-shops-ja\{slug}\{stage}\validator_result.json` に保存する。別workflow用パスを使わない。
- 未実装API名や未登録API名を必須停止条件にしない。起動時確認は `api=status`、`agent_pack`、`agent_work_queue`、サイトHub内current正本で行う。

automation設定:
- kind: cron
- status: ACTIVE
- executionEnvironment: local
- cwd: `C:\Users\Public\Documents\LLC358\_codex_cron_threads`
- model: gpt-5.4
- reasoningEffort: high
- localEnvironmentConfigPath: null
- 起動回数: 1回/日
- 推奨RRULE: `FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU;BYHOUR=4;BYMINUTE=13;BYSECOND=0`
- 起動時間メモ: 候補: 04:13 JST。1日1回、早朝枠を基本にする。

最初に読む場所:
- `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun\startup_docs\current`
- `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun\gates\current`
- `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun\cron_prompts\current\SEXDOLL`
- `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun\cron_prompts\current\WORKFLOW_SCOPE_MATRIX.md`

起動時に `api=status` で `hub_version` を確認し、ログに記録する。
作成時点の参考基準は `0.1.66-pornfun-internal-link-live-200-gate-20260607`。
ただしporn-fun Hubが別スレッドまたは別PCでバージョンアップされている場合は、その時点のlive Hub応答とサイトHub内の `startup_docs/current`、`gates/current`、`cron_prompts/current` を最新版として扱う。
`hub_version` が依頼文記載のバージョンと一致しないことだけを理由に停止しない。
停止するのは、Hub API取得不能、agent_pack/work_queue取得不能、保存API利用不可、保存後readback不成立、または必要なcurrent正本欠落の場合だけ。

実運用の1日の起動回数:
- 収集: 1回/日
- 検査: 4回/日
- 制作: 最大3回/日
- 高品質チェック: 最大5回/日
- 訂正: 1回/日
- 改善ハンドオフ: 週1回、または改善キュー発生時

起動時間設定ルール:
- 既存ACTIVE cronを確認してから設定する。
- 同時刻と前後10分を避ける。
- 00分固定を避ける。
- 分は 07 / 13 / 19 / 26 / 34 / 41 / 48 / 55 を優先候補にする。
- 朝・昼・夕・夜へ分散する。
- 制作cronは同一site/workflowの前回制作runから最低3時間あけ、同時並行させない。
- 空けられない場合は5分間隔、1分間隔、最後は同時刻の順で詰める。混雑だけで作成停止しない。
- cron実行cwdは `C:\Users\Public\Documents\LLC358\_codex_cron_threads`。
- 支社PCへ持っていく対象は `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun` だけ。このサイトHub内でGate、startup、cron prompt、runtime証跡を完結させる。

カテゴリ/収集範囲:
- SEX DOLLは旧HUBの新ジャンル評価記事ルールに従う。収集起点URLは https://theporndude.com/sex-doll-shops 。この起点からSex Dollショップ候補を拾い、公式ショップ、配送、返品、素材、価格帯、支払い、安全性、海外対応、口コミ/評判を確認する。
- SEX DOLL評価記事で制作した記事のdirectory_categoryは `sex-doll-shops` 固定。勝手に新規カテゴリを作らない。公開後は `https://porn-fun.com/ja/directory-category/sex-doll-shops/` のreadbackで確認する。directory_collectionは `adult-services`。評価軸や機能名をdirectory_categoryに入れない。これは新ジャンル評価記事であり、単体移行、旧URL移行、旧投稿アイキャッチ移行、301、移行コピーは対象外。


収集cronの仕事:
- 旧HUB Candidate source policyに従い、Sex Doll Shops source は https://theporndude.com/sex-doll-shops とする。旧実行ログでは source_requested=https://theporndude.com/sex-doll-shops、direct pageが読めない場合は source_used=https://theporndude.net/ の現行一覧にある Sex Shops セクションを使っていた。今回もdirect pageが読めない場合はThePornDudeの現行一覧/ミラー上の該当セクションをsource_usedとして記録し、source_requested/source_used/source_access_noteを残す。ThePornDude と PornDudeAI はsource directory専用であり、記事候補にしてはいけない。候補名が PornDudeAI / ThePornDude、候補ドメインが porndudeai.com / theporndude.com のものは除外し、source_url/source_pageとしての引用だけ許可する。候補ごとに公式ショップ、公式FAQ、配送/返品/素材/支払いページ、公開レビュー、比較記事で裏取りする。実在性・公式性が弱いショップは未確認付箋で扱う。
- 候補在庫を集め、既存公開、重複、明らかな対象外、危険な権利/年齢/規約違反候補を分ける。
- 候補保存とreadbackを確認する。
- 単体移行で旧通常記事に `featured_media` がある場合は、media ID、画像URL、alt、title、引き継ぎ根拠を候補パックに保存する。
- 記事制作、品質判定、本文修正、カテゴリ作成はしない。





共通:
- 秘密値、APIキー、トークン、不要な個人情報を出力しない。
- `hub_version` が依頼文記載のバージョンと一致しないことだけを理由に停止しない。
- Hub API取得不能、必要なcurrent正本欠落、保存/readback不成立は報告して止める。
{workflow_scope_rules(page)}

収集専用Gate:
- 候補在庫と保存/readbackだけを行う。
- 記事制作、品質採点、本文修正、カテゴリ作成、301実行はしない。
- 候補ごとに公式URL、重複、既存公開、対象カテゴリ適合、除外理由を保存する。

作成後に name / id / status / rrule / model / cwd を報告する。
秘密値・認証値・APIキーは表示しない。

porn-fun【評価・SEX DOLL】 検査cron作成依頼文

【cron個別作成依頼文】

以下のautomationを1件だけ新規作成してください。

automation名:
porn-fun【評価・SEX DOLL】検査

対象:
- porn-fun Hubのみ
- workflow_id: `porn-fun-sex-doll-shops-ja`
- content_set: `porn_fun_sex_doll_shops`
- article_type: `SEX_DOLL`
- stage: inspection
- validator成果物: `runtime\validator_results\porn-fun-sex-doll-shops-ja\{slug}\{stage}\validator_result.json`

触らない対象:
- AIfan Hub、AIfan active cron、AIfan記事
- porn-fun以外のサイトHub
- 既公開記事本文の勝手な編集
- キー、トークン、認証値
- 旧 `representative-work-gate`
- `_codex_cron_threads\AGENTS.md`
- 共有 `Autopost358\HUB\gates`

workflow混同防止:
- このcronは `workflow_id=porn-fun-sex-doll-shops-ja` / `content_set=porn_fun_sex_doll_shops` / `article_type=SEX_DOLL` だけを処理する。
- `agent_pack` / `agent_work_queue` / 保存readbackで別workflow、別content_set、別article_typeの候補が返った場合は処理しない。対象外として記録し、このcronの成功件数に数えない。
- 別workflowの収集元、カテゴリ、validator保存先、301/旧記事移行ルールを流用しない。
- validator成果物は `runtime\validator_results\porn-fun-sex-doll-shops-ja\{slug}\{stage}\validator_result.json` に保存する。別workflow用パスを使わない。
- 未実装API名や未登録API名を必須停止条件にしない。起動時確認は `api=status`、`agent_pack`、`agent_work_queue`、サイトHub内current正本で行う。

automation設定:
- kind: cron
- status: ACTIVE
- executionEnvironment: local
- cwd: `C:\Users\Public\Documents\LLC358\_codex_cron_threads`
- model: gpt-5.5
- reasoningEffort: high
- localEnvironmentConfigPath: null
- 起動回数: 4回/日
- 推奨RRULE: `FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU;BYHOUR=6,12,16,21;BYMINUTE=19;BYSECOND=0`
- 起動時間メモ: 候補: 06:19 / 12:19 / 16:19 / 21:19 JST。朝・昼・夕・夜へ分散する。

最初に読む場所:
- `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun\startup_docs\current`
- `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun\gates\current`
- `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun\cron_prompts\current\SEXDOLL`
- `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun\cron_prompts\current\WORKFLOW_SCOPE_MATRIX.md`

起動時に `api=status` で `hub_version` を確認し、ログに記録する。
作成時点の参考基準は `0.1.66-pornfun-internal-link-live-200-gate-20260607`。
ただしporn-fun Hubが別スレッドまたは別PCでバージョンアップされている場合は、その時点のlive Hub応答とサイトHub内の `startup_docs/current`、`gates/current`、`cron_prompts/current` を最新版として扱う。
`hub_version` が依頼文記載のバージョンと一致しないことだけを理由に停止しない。
停止するのは、Hub API取得不能、agent_pack/work_queue取得不能、保存API利用不可、保存後readback不成立、または必要なcurrent正本欠落の場合だけ。

実運用の1日の起動回数:
- 収集: 1回/日
- 検査: 4回/日
- 制作: 最大3回/日
- 高品質チェック: 最大5回/日
- 訂正: 1回/日
- 改善ハンドオフ: 週1回、または改善キュー発生時

起動時間設定ルール:
- 既存ACTIVE cronを確認してから設定する。
- 同時刻と前後10分を避ける。
- 00分固定を避ける。
- 分は 07 / 13 / 19 / 26 / 34 / 41 / 48 / 55 を優先候補にする。
- 朝・昼・夕・夜へ分散する。
- 制作cronは同一site/workflowの前回制作runから最低3時間あけ、同時並行させない。
- 空けられない場合は5分間隔、1分間隔、最後は同時刻の順で詰める。混雑だけで作成停止しない。
- cron実行cwdは `C:\Users\Public\Documents\LLC358\_codex_cron_threads`。
- 支社PCへ持っていく対象は `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun` だけ。このサイトHub内でGate、startup、cron prompt、runtime証跡を完結させる。

カテゴリ/収集範囲:
- SEX DOLLは旧HUBの新ジャンル評価記事ルールに従う。収集起点URLは https://theporndude.com/sex-doll-shops 。この起点からSex Dollショップ候補を拾い、公式ショップ、配送、返品、素材、価格帯、支払い、安全性、海外対応、口コミ/評判を確認する。
- SEX DOLL評価記事で制作した記事のdirectory_categoryは `sex-doll-shops` 固定。勝手に新規カテゴリを作らない。公開後は `https://porn-fun.com/ja/directory-category/sex-doll-shops/` のreadbackで確認する。directory_collectionは `adult-services`。評価軸や機能名をdirectory_categoryに入れない。これは新ジャンル評価記事であり、単体移行、旧URL移行、旧投稿アイキャッチ移行、301、移行コピーは対象外。


検査cronの仕事:
- 候補の実在性、公式URL、料金、規約、プライバシー、年齢制限、禁止事項、口コミ/評判、比較記事上の言及を調査する。
- Search Compass、reader_intent_pack、検索意図、上位狙いの読者課題、自然に使える共起語、使わない語、H2/H3候補、評価項目、FAQ候補、公式CTAに使える確認済み情報、未確認付箋を作る。
- 明らかな架空サービスだけ除外する。以前あった、休止中、閉鎖済み、公式不通、悪評が多い、返金/解約トラブル、安全性への不満がある対象は除外せず、production_readyへ回してinspection_sticky_notesへ分離保存する。
- production_readyかつtask_code=2が0件のまま終了しない。未処理acceptedがあるなら処理する。




共通:
- 秘密値、APIキー、トークン、不要な個人情報を出力しない。
- `hub_version` が依頼文記載のバージョンと一致しないことだけを理由に停止しない。
- Hub API取得不能、必要なcurrent正本欠落、保存/readback不成立は報告して止める。
{workflow_scope_rules(page)}

検査専用Gate:
- Search Compass、reader_intent_pack、inspection_sticky_notes、制作素材パックを作る。
- 明らかな架空サービスだけ除外する。
- 休止、閉鎖、公式不通、悪評、返金/解約トラブル、安全性への不満は除外せず、production_readyにして付箋化する。

作成後に name / id / status / rrule / model / cwd を報告する。
秘密値・認証値・APIキーは表示しない。

porn-fun【評価・SEX DOLL】 制作cron作成依頼文

【cron個別作成依頼文】

以下のautomationを1件だけ新規作成してください。

automation名:
porn-fun【評価・SEX DOLL】制作

対象:
- porn-fun Hubのみ
- workflow_id: `porn-fun-sex-doll-shops-ja`
- content_set: `porn_fun_sex_doll_shops`
- article_type: `SEX_DOLL`
- stage: production
- validator成果物: `runtime\validator_results\porn-fun-sex-doll-shops-ja\{slug}\{stage}\validator_result.json`

触らない対象:
- AIfan Hub、AIfan active cron、AIfan記事
- porn-fun以外のサイトHub
- 既公開記事本文の勝手な編集
- キー、トークン、認証値
- 旧 `representative-work-gate`
- `_codex_cron_threads\AGENTS.md`
- 共有 `Autopost358\HUB\gates`

workflow混同防止:
- このcronは `workflow_id=porn-fun-sex-doll-shops-ja` / `content_set=porn_fun_sex_doll_shops` / `article_type=SEX_DOLL` だけを処理する。
- `agent_pack` / `agent_work_queue` / 保存readbackで別workflow、別content_set、別article_typeの候補が返った場合は処理しない。対象外として記録し、このcronの成功件数に数えない。
- 別workflowの収集元、カテゴリ、validator保存先、301/旧記事移行ルールを流用しない。
- validator成果物は `runtime\validator_results\porn-fun-sex-doll-shops-ja\{slug}\{stage}\validator_result.json` に保存する。別workflow用パスを使わない。
- 未実装API名や未登録API名を必須停止条件にしない。起動時確認は `api=status`、`agent_pack`、`agent_work_queue`、サイトHub内current正本で行う。

automation設定:
- kind: cron
- status: ACTIVE
- executionEnvironment: local
- cwd: `C:\Users\Public\Documents\LLC358\_codex_cron_threads`
- model: gpt-5.5
- reasoningEffort: high
- localEnvironmentConfigPath: null
- 起動回数: 最大3回/日
- 推奨RRULE: `FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU;BYHOUR=9,15,22;BYMINUTE=34;BYSECOND=0`
- 起動時間メモ: 候補: 09:34 / 15:34 / 22:34 JST。制作run同士は最低3時間あけ、同一site/workflowで同時並行させない。

最初に読む場所:
- `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun\startup_docs\current`
- `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun\gates\current`
- `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun\cron_prompts\current\SEXDOLL`
- `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun\cron_prompts\current\WORKFLOW_SCOPE_MATRIX.md`

起動時に `api=status` で `hub_version` を確認し、ログに記録する。
作成時点の参考基準は `0.1.66-pornfun-internal-link-live-200-gate-20260607`。
ただしporn-fun Hubが別スレッドまたは別PCでバージョンアップされている場合は、その時点のlive Hub応答とサイトHub内の `startup_docs/current`、`gates/current`、`cron_prompts/current` を最新版として扱う。
`hub_version` が依頼文記載のバージョンと一致しないことだけを理由に停止しない。
停止するのは、Hub API取得不能、agent_pack/work_queue取得不能、保存API利用不可、保存後readback不成立、または必要なcurrent正本欠落の場合だけ。

実運用の1日の起動回数:
- 収集: 1回/日
- 検査: 4回/日
- 制作: 最大3回/日
- 高品質チェック: 最大5回/日
- 訂正: 1回/日
- 改善ハンドオフ: 週1回、または改善キュー発生時

起動時間設定ルール:
- 既存ACTIVE cronを確認してから設定する。
- 同時刻と前後10分を避ける。
- 00分固定を避ける。
- 分は 07 / 13 / 19 / 26 / 34 / 41 / 48 / 55 を優先候補にする。
- 朝・昼・夕・夜へ分散する。
- 制作cronは同一site/workflowの前回制作runから最低3時間あけ、同時並行させない。
- 空けられない場合は5分間隔、1分間隔、最後は同時刻の順で詰める。混雑だけで作成停止しない。
- cron実行cwdは `C:\Users\Public\Documents\LLC358\_codex_cron_threads`。
- 支社PCへ持っていく対象は `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun` だけ。このサイトHub内でGate、startup、cron prompt、runtime証跡を完結させる。

カテゴリ/収集範囲:
- SEX DOLLは旧HUBの新ジャンル評価記事ルールに従う。収集起点URLは https://theporndude.com/sex-doll-shops 。この起点からSex Dollショップ候補を拾い、公式ショップ、配送、返品、素材、価格帯、支払い、安全性、海外対応、口コミ/評判を確認する。
- SEX DOLL評価記事で制作した記事のdirectory_categoryは `sex-doll-shops` 固定。勝手に新規カテゴリを作らない。公開後は `https://porn-fun.com/ja/directory-category/sex-doll-shops/` のreadbackで確認する。directory_collectionは `adult-services`。評価軸や機能名をdirectory_categoryに入れない。これは新ジャンル評価記事であり、単体移行、旧URL移行、旧投稿アイキャッチ移行、301、移行コピーは対象外。


制作cronの仕事:
- production_readyの新規1件だけを制作する。
- Search Compass、reader_intent_pack、inspection_sticky_notes、KW、共起語、関連語、公式情報、口コミ/評判、評価項目、FAQ候補を必ず読む。
- 既公開・task8 handoff済みslugは再制作/上書きしない。該当task2をdoneにして、終了せず次の未制作候補を探す。
- SEX DOLL評価記事で制作した記事のdirectory_categoryは `sex-doll-shops` 固定。勝手に新規カテゴリを作らない。公開後は `https://porn-fun.com/ja/directory-category/sex-doll-shops/` のreadbackで確認する。directory_collectionは `adult-services`。評価軸や機能名をdirectory_categoryに入れない。これは新ジャンル評価記事であり、単体移行、旧URL移行、旧投稿アイキャッチ移行、301、移行コピーは対象外。
- 単体移行で旧記事 `featured_media` 情報がある場合は、新辞書記事へできればアイキャッチを引き継ぎ、引き継ぎ結果または未引き継ぎ理由を保存する。
- 公開またはpreview後にvalidator_result.jsonを保存し、PASS条件を実測してから次工程へ渡す。
- 制作cronが必須FAILを残したまま作業を終了してはならない。必須FAILは全て直してTASK8へ渡すまでが仕事!!


【カテゴリ別差し替え】

この制作本文は添付TXT相当の詳細基準を、porn-fun【評価・SEX DOLL】 用に最適化して使う。
NSFW AI固有に見える語が残っている場合でも、制作時は以下のカテゴリ正本を優先して読み替える。

- workflow_id: `porn-fun-sex-doll-shops-ja`
- content_set: `porn_fun_sex_doll_shops`
- article_kind: `evaluation_score_dictionary_new_genre`
- 収集/制作対象: SEX DOLLは旧HUBの新ジャンル評価記事ルールに従う。収集起点URLは https://theporndude.com/sex-doll-shops 。この起点からSex Dollショップ候補を拾い、公式ショップ、配送、返品、素材、価格帯、支払い、安全性、海外対応、口コミ/評判を確認する。
- 公式/口コミ/比較の確認範囲: 旧HUB Candidate source policyに従い、Sex Doll Shops source は https://theporndude.com/sex-doll-shops とする。旧実行ログでは source_requested=https://theporndude.com/sex-doll-shops、direct pageが読めない場合は source_used=https://theporndude.net/ の現行一覧にある Sex Shops セクションを使っていた。今回もdirect pageが読めない場合はThePornDudeの現行一覧/ミラー上の該当セクションをsource_usedとして記録し、source_requested/source_used/source_access_noteを残す。ThePornDude と PornDudeAI はsource directory専用であり、記事候補にしてはいけない。候補名が PornDudeAI / ThePornDude、候補ドメインが porndudeai.com / theporndude.com のものは除外し、source_url/source_pageとしての引用だけ許可する。候補ごとに公式ショップ、公式FAQ、配送/返品/素材/支払いページ、公開レビュー、比較記事で裏取りする。実在性・公式性が弱いショップは未確認付箋で扱う。
- カテゴリ規則: SEX DOLL評価記事で制作した記事のdirectory_categoryは `sex-doll-shops` 固定。勝手に新規カテゴリを作らない。公開後は `https://porn-fun.com/ja/directory-category/sex-doll-shops/` のreadbackで確認する。directory_collectionは `adult-services`。評価軸や機能名をdirectory_categoryに入れない。これは新ジャンル評価記事であり、単体移行、旧URL移行、旧投稿アイキャッチ移行、301、移行コピーは対象外。
- Hub正本: `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun`
- cron実行cwd: `C:\Users\Public\Documents\LLC358\_codex_cron_threads`

制作cronは本文を新規制作する工程であり、高品質チェック、訂正、改善ハンドオフ、301実行を代行しない。
ただし、制作時にそれらの後工程で必ず落ちる条件を先に満たすため、下記のGate・FAIL条件・validator証跡は省略しない。

【Hub versionの扱い】

起動時に `api=status` で `hub_version` を確認し、ログに記録する。
作成時点の参考基準は `0.1.66-pornfun-internal-link-live-200-gate-20260607`。
ただしporn-fun Hubが別スレッドまたは別PCでバージョンアップされている場合は、その時点のlive Hub応答とサイトHub内の `startup_docs/current`、`gates/current`、`cron_prompts/current` を最新版として扱う。
`hub_version` が依頼文記載のバージョンと一致しないことだけを理由に停止しない。
停止するのは、Hub API取得不能、agent_pack/work_queue取得不能、保存API利用不可、保存後readback不成立、または必要なcurrent正本欠落の場合だけ。

# porn-fun【評価・SEX DOLL】制作

automation_id: porn-fun-nsfw-ai-3
site_id: porn-fun
workflow_id: porn-fun-sex-doll-shops-ja
content_set: porn_fun_sex_doll_shops
article_type: SEX_DOLL
role: 制作
updated_at: 20260606-v0151-portable-site-hub-contained

---

# porn-fun【評価・SEX DOLL】制作

porn-fun【評価・SEX DOLL】制作 cron v0.1.66。

対象は `site_id=porn-fun` / `workflow_id=porn-fun-sex-doll-shops-ja` / `content_set=porn_fun_sex_doll_shops`。正本は現行Pornfun Hub `https://pornfun-hub.secure358.com` と、このサイトHUBフォルダ内の `startup_docs/current` / `gates/current` / `cron_prompts/current` です。cron実行cwdはautomation設定に従いますが、読むファイル・保存するGate/cron成果物はこのサイトHUB内で完結させ、サイトHUB外のGate/起動文書を必須参照にしないでください。対象外のサイト、対象外記事、旧Hub、共有Gateは触らないでください。

起動時にHub status / agent_pack / agent_work_queue を読み、サイトHUB内の `ARTICLE_QUALITY_GATE.md` / `QUALITY_VALIDATOR_CONTRACT.md` / `REFERENCE_STYLE_GATE.md` / `ROLE_FAIL_CONDITION_GATE.md` / `PRODUCTION_EVIDENCE_AND_SCORING_GATE.md` / `JAPANESE_SYNTAX_GATE.md` / `PLAIN_STYLE_AND_QA_BOX_HOTFIX_GATE.md` / `PORNFUN_CRON_TEMPLATE_GATE.md` を必要範囲で読む。細かい数値、score_cap、証跡キー、成果物パスはGate正本に従う。

担当はSearch Compass / reader_intent_pack付き素材から新規記事を制作・公開し、task8へ渡すこと。収集・検査・高品質チェック・訂正・改善ハンドオフはしない。

制作cronは新規記事を書く。既存公開記事の本文修正、再公開、品質FAIL修正、訂正作業はしない。既存公開記事、task8以降の記事、高品質チェックでFAILになった記事、ready_for_correction記事、改善ハンドオフ候補を見つけた場合は、制作cronで直さず高品質チェック・訂正・改善ハンドオフへ渡す。制作cronが修正してよいのは、新規制作中で、まだ完了扱いにしていない同一run内の記事だけ。

制作順序は、素材確認、読者意図確認、装飾なし本文作成、自然化リライト、装飾付与、公開前確認、公開HTML実測、同一run内の新規記事修正、Hub保存、task8 handoffの順にする。作成した本文は読者が自然に読める文章へ直し、「評判は」「この評価レビューでは」型の不自然な入り方、評価軸羅列、作業メモ臭い文を残さない。

SEX DOLL記事では、生成機能、料金、無料範囲、商用利用、権利、プライバシー、年齢制限、安全性、禁止事項、他ツール比較、導入前の注意を読者目線で扱う。違法・未成年・実在人物なりすまし・無断性的生成を推奨しない。本文は煽情的にしない。

必須FAIL条件: Search Compassなし、公開HTML未取得、`validator_result.json`なし/JSON破損/必須キー欠落/未測定あり、自己採点だけのPASS、固定true、H1とSEOタイトル未区分、弱いSEOタイトル、リード文1文/短すぎ/500字超/改行なし/リード内マーカーなし、右寄せ公式CTAなし、辞書プラグイン評価スコア表がある記事で手書き評価項目・スコア・理由表を作る、辞書表と重複する手書き基本情報表、4000字未満、KW/共起語/関連語不足、常体違反、H2ばかりでH3不足、評価項目H3理由不足、Q&Aがqa-box5個未満、qa-question/qa-answer不足、Q&A回答の敬体、本文内FAQ JSON-LD/JavaScript/カスタムコード挿入、内部リンク1〜3本以外、外部リンク過多、有効装飾BOX3個未満、先に結論が有効BOXでない、装飾黄金比率不備、最低足切り未満、件数だけでPASS、重要でない箇所への装飾、読みづらい装飾、✅/⚠️混在長文、1行に複数✅/⚠️、文字化け、公式主機能未確認のカテゴリ選択、主機能と違うWPカテゴリ、曖昧カテゴリへの推測投入、カテゴリreadback未確認、NSFW/年齢/権利/プライバシー注意の欠落。

validator必須キーはGate正本に従う。特に `public_html_checked`、`validator_result_json_present`、`validator_json_parse_gate`、`validator_unmeasured_items`、`failed_gate_names`、`required_gate_failures`、`mandatory_gate_fail_count`、`quality_delta_items`、`pass_allowed`、`correction_required`、`naturalization_rewrite_gate`、`reference_style_gate`、`plain_style_gate`、`lead_plain_style_gate`、`body_plain_style_gate`、`qa_plain_style_gate`、`qa_box_exact_class_count`、`qa_box_required_structure_gate`、`body_internal_link_count`、`dictionary_score_table_present`、`manual_score_table_count`、`valid_style_box_count`、`first_conclusion_box_present`、`qa_box_count`、`decoration_golden_ratio_gate`、`official_primary_function`、`selected_wp_category_names`、`category_selection_gate`、`wp_category_readback_confirmed` は欠落があればFAIL。

品質スコア証跡は `PRODUCTION_EVIDENCE_AND_SCORING_GATE.md` に従う。task8へ渡せるのは `final_quality_score>=90`、`score_cap=100`、必須FAIL0件の場合だけ。

本文構成は、評価スコア表、完結リード、右寄せ公式/アフィリエイトCTA、最初のH2の順にする。公式CTAは `<p style="text-align: right;"><span class="badge badge-red">公式</span><b>:<a href="公式URL" target="_blank" rel="nofollow noopener">サービス名</a></b></p>` を基本にする。

本文リンクは本文領域だけで測る。サイドバー、フッター、関連記事、タグ、カテゴリ、Directory、TOC、プラグイン生成部品を内部リンク数に含めない。手書き外部リンクは原則リード後CTA1本を中心にし、公式サブページ直リンクは必要時のみ最大1〜2本程度にする。

カテゴリは公開前に公式サイト、機能ページ、料金ページ、ヘルプ、公式LP等から主機能を確認して選ぶ。SEX DOLLでは `nsfw-ai` 系カテゴリを基本候補にするが、主機能が違う場合はPornfun Hubの許可カテゴリに従う。保存後はWP readbackで実カテゴリ一致を確認する。

validatorは全Gateを最後まで測り、全FAILを保存する。新規制作中の記事でFAILが残る限りtask8へ渡さず、制作内で直して再測定する。既存公開記事のFAILを見つけた場合は制作内で直さず、該当cronへ渡す。

報告は日本語のみで、対象記事、公開URL、保存行数、validator結果、task8 handoff、readback結果だけを書く。英語の内部メモや思考文を報告に混ぜない。FAILが残る場合は公開完了報告をしない。

追加必須装飾BOX Gate(Marker: 2026-06-05_REQUIRED_DECORATIVE_BOX_CLASS_GATE): Pornfun以降の記事では、本文内の有効スタイルBOXとして `blank-box bb-tab bb-check bb-yellow`、`information-box`、`warning-box` をそれぞれ1個以上置く。いずれかが0件、本文外のみ、Q&A/表/目次/辞書プラグイン/関連記事/サイドバー/フッターのみ、空div、読者判断を助けない内容の場合はFAIL。validatorでは `required_decorative_box_class_gate`、`blank_box_bb_check_bb_yellow_count`、`information_box_count`、`warning_box_count`、`required_decorative_box_class_failures` を保存し、欠落時はPASS禁止。

## v0.1.46 流用Gate追加

Marker: 2026-06-06_PORNFUN_LEGACY_GATE_UPGRADE

公開本文境界を必ず守る。記事本文・見出し・FAQ・CTAには、Hub、cron、Gate、PASS/FAIL、Work Queue、agent_pack、作業ログ、タスク番号、301/移行などの内部運用語を書かない。これらはHub保存物とvalidator証跡へ残し、公開本文ではサービス内容に直接関係する読者向け表現へ置き換える。

SEX DOLL記事では、公式URL、料金、無料範囲、プラン、クレジット/サブスク、決済、退会、年齢制限、規約、禁止事項、権利/商用利用、実在人物、無断性的生成、プライバシー、データ取扱い、アカウント停止リスクを確認してから本文化する。違法、未成年、非同意生成、実在人物なりすましを推奨しない。

評価項目は表だけで終わらせず、H2/H3本文でスコア理由、読者が確認すべき点、向いている人/注意点を書く。Directory Core/辞書プラグイン表と本文HTML手書き評価表・基本情報表を二重表示しない。

## v0.1.47 検査付箋素材の利用

Marker: 2026-06-06_PORNFUN_INSPECTION_RESEARCH_STICKY

制作cronは、検査cronが保存した共起語、関連語、KW、公式情報、口コミ情報、未確認付箋を読みます。これらを機械的に本文へ詰め込まず、読者向けの構成、注意点、FAQ、比較観点へ自然に反映してください。

口コミ、レビュー、評判、利用者の反応は公式情報と分けて扱い、断定しない表現にしてください。未確認付箋は断定せず、確認ポイントや注意点として扱ってください。

## v0.1.48 検査付箋の制作利用

Marker: 2026-06-06_PORNFUN_INSPECTION_PRODUCTION_READY_GATE

制作cronは `production_ready` だけを処理し、`inspection_sticky_notes` を本文制作の注意素材として読んでください。

`inspection_sticky_notes` にある現在状態、根拠URL、口コミ/悪評、未確認点、制作時の注意を確認し、口コミは断定せず、本文制作では根拠の弱さがわかる表現にしてください。

## v0.1.66 制作以降Fail-first品質Gate

Marker: 2026-06-06_PORNFUN_PRODUCTION_ONWARD_QUALITY_CHAIN_GATE

制作cronは、上記v0.1.66 Gateを新規制作中の記事に必ず適用する。Search Compass、reader_intent_pack、KW、共起語、関連語、公式情報、口コミ/評判、inspection_sticky_notes、評価項目、FAQ候補を読まずに制作へ入らない。

評価スコア、基本情報、KW、共起語、関連語、Search Compass、reader_intent_pack、inspection_sticky_notes、公式情報、口コミ/評判を使っていない記事は保存しない。Directory Core/辞書プラグインが評価スコア表や基本情報表を表示する場合は、本文手書き表で二重表示しない。ただし公開HTMLまたはreadbackで読者に見えている証跡を残す。

公開前/公開後validatorで、4000字、冒頭構造、リード文、H2/H3評価理由、Q&A5件、✅/⚠️、必須box、KW/共起語/関連語、常体、H1/SEO、成人向け注意、公開本文境界を全部測る。FAIL、REPAIR、REVIEW、未測定、キー欠落があればtask8へ渡さず、同一run内で修正して再測定する。

## v0.1.66 制作 validator Gate Hotfix

Marker: 2026-06-06_PORNFUN_PRODUCTION_VALIDATOR_GATE_HOTFIX

制作cronの自己採点は信用しません。制作cronは公開HTMLまたはプレビューHTMLを取得して品質バリデータを必ず実行し、`validator_result.json` を保存してください。`validator_result.json` がない場合はPASS禁止です。task8へ渡す前に `validator_result_json_present=true` を確認してください。

制作cron以降の `validator_result.json` は、porn-funサイトHUBフォルダ内で完結させてください。支社PCへ持っていく対象は `HUB\porn-fun` フォルダだけです。成果物をこのフォルダ外へ出さないでください。

site Hub相対パス:

`runtime\validator_results\porn-fun-sex-doll-shops-ja\{slug}\{stage}\validator_result.json`

絶対パスとして扱う場合:

`{porn_fun_site_hub_root}\runtime\validator_results\porn-fun-sex-doll-shops-ja\{slug}\{stage}\validator_result.json`

`stage` は `production` / `quality_check` / `correction` / `improvement_handoff` のいずれかです。他サイト用パス、共有Hubパスへ保存しないでください。

制作cronは、本文制作・保存・task8 handoffの前にGate通過前提を機械的に確認してください。Gate正本に条件があるだけでは完了扱いしません。Gateを読んだ証跡、agent_pack上の機械Gate存在、validator必須キー、公開HTMLまたはプレビューHTML実測が揃わない場合は、制作を開始せず `BLOCKED_PRODUCTION_GATE_PREFLIGHT` として止めてください。

制作開始前に必ず読むGate:

- ARTICLE_QUALITY_GATE.md
- QUALITY_VALIDATOR_CONTRACT.md
- PRODUCTION_EVIDENCE_AND_SCORING_GATE.md
- ROLE_FAIL_CONDITION_GATE.md
- JAPANESE_SYNTAX_GATE.md
- PLAIN_STYLE_AND_QA_BOX_HOTFIX_GATE.md
- PORNFUN_CRON_TEMPLATE_GATE.md

制作開始前に残す証跡:

- gate_preflight_checked=true
- gate_preflight_status=PASS|BLOCKED
- gate_files_read
- gate_marker_versions_found
- agent_pack_v0149_gate_ids_found
- missing_gate_files
- missing_gate_markers
- blocked_reason

agent_pack上で少なくとも次のIDを確認してください。

- pornfun-v0149-production-onward-quality-chain-manual
- pornfun-v0149-fail-first-quality-rule
- pornfun-v0149-visible-qa-lead-marker-rule
- pornfun-v0149-score-axis-h3-keyword-rule
- pornfun-v0149-production-onward-validator-key-check

読めないGateや見つからないIDがある場合、本文生成、保存、公開、task8 handoffをしないでください。Search Compass、reader_intent_pack、production_material_pack、inspection_sticky_notesを読んでいない場合も制作開始禁止です。

保存前にはvalidator_result.jsonを作り、公開HTMLまたはプレビューHTMLで、評価スコア、基本情報、4000字、H2/H3評価理由、KW/共起語/関連語、Search Compass、reader_intent_pack、inspection_sticky_notes、Q&A5件、必須box、✅/⚠️、常体、H1/SEO、NSFW注意、公開本文境界を実測してください。未測定、空値、REVIEW、REPAIR、FAIL、キー欠落がある場合はPASS禁止です。

常体Strictは機械判定にしてください。公開HTML本文から「です・ます・でした・ました・でしょう・ください・ません」等を数え、常体でない文末が残る場合はREPAIRまたはFAILにしてください。自己申告の「常体OK」だけではPASSにしません。`desu_masu_count` と `joutai_strict_machine_result` を必ず保存してください。

代表から「何点?」「Gate何点だった?」「100点なのか?」と聞かれた場合でも、作業ログ上の自己採点だけで回答しないでください。公開HTMLまたはプレビューHTMLを再取得し、title/H1、文体、リード文、リンク、FAQ JSON-LD、装飾、Hub readbackを実測してから `raw_quality_score` / `score_cap` / `final_quality_score` を答えてください。実測できない場合は「未実測のため点数確定不可」と答え、100点/PASSを断定しないでください。

必須証跡として、`artifact_path_gate_version`、`artifact_root`、`artifact_stage`、`artifact_type`、`artifact_key`、`artifact_json_path`、`artifact_json_present`、`artifact_sha256`、`artifact_saved_at`、`accepted`、`readback_confirmed`、`lead_pattern_model`、`reference_urls_checked`、`lead_candidate_a_service_definition`、`lead_candidate_b_reader_decision`、`lead_candidate_c_value_plus_condition`、`selected_lead`、`selected_reason`、`lead_chars`、`lead_sentence_count`、`body_natural_language_result`、`awkward_public_phrases`、`reader_facing_rewrite_examples`、`quality_answer_gate_version`、`public_or_preview_html_refetched`、`validator_result_json_present`、`validator_result_json_path`、`validator_final_score`、`validator_fail_items`、`desu_masu_count`、`joutai_strict_machine_result`、`quality_delta_items`、`score_cap_reasons` を保存してください。

報告には gate_preflight_status、読んだGateファイル数、v0.1.66機械Gate ID確認数、validator必須キー確認結果、公開HTMLまたはプレビューHTML実測結果を必ず含めてください。これらがない報告は、制作成功報告ではありません。

## v0.1.66 portable site Hub contained hotfix

Marker: 2026-06-06_PORNFUN_PORTABLE_SITE_HUB_CONTAINED

Branch PC transfer assumes only this folder is carried:
`C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun`

Required startup, Gate, cron prompt, validator artifact, and runtime evidence paths must be resolvable from this site Hub folder. The automation working directory may be set outside this folder, but files that a cron must read as正本 and files that a cron must save as Gate/validator evidence must not require any external Gate mirror, representative-only path, or another site Hub.

For production onward validator artifacts, use the site-Hub-relative path:
`runtime\validator_results\porn-fun-sex-doll-shops-ja\{slug}\{stage}\validator_result.json`

Stage is one of `production`, `quality_check`, `correction`, or `improvement_handoff`.

## v0.1.66 Directory Core / 辞書プラグイン評価表 必読Gate

Marker: 2026-06-06_PORNFUN_DIRECTORY_CORE_EXPLICIT_READ_GATE

制作以降cron(production / quality_check / correction / improvement_handoff)は、起動時Gate確認で以下4資料を `gates/current` から必ず読む。読めない場合は本文制作・PASS・task8/handoffを進めず、`BLOCKED_DIRECTORY_CORE_GATE_NOT_READ` とする。

- `directory-core-full-input-public-row-gate-v1.23.md`
- `V1_23_CRON_REQUEST_RULES.md`
- `V1_24_CRON_REQUEST_RULES.md`
- `Apply-HubDirectoryCoreRatingGate.ps1`

Directory Core / 辞書プラグイン評価表が公開HTMLまたはreadbackで有効な場合、評価スコア表・基本情報表はその表示を正本として扱い、本文HTML側で手書きの評価項目表・スコア表・基本情報表を重複作成しない。ただし読者に見えている証跡は validator_result.json に保存する。

validator_result.json には、少なくとも `directory_core_gate_files_read`、`directory_core_gate_read_result`、`dictionary_score_table_present`、`manual_score_table_count`、`directory_core_public_row_gate_result`、`directory_core_rating_gate_result` を保存する。辞書表があるのに手書き表を重複作成した場合、または4資料を読まずにPASSした場合はFAILにする。

## v0.1.66 必須FAIL条件 全文明示Gate

Marker: 2026-06-06_PORNFUN_FULL_REQUIRED_FAIL_CONDITIONS_GATE

制作以降cron(production / quality_check / correction / improvement_handoff)は、以下のいずれかがある場合にPASS、task8、完了扱い、改善ハンドオフ完了扱いをしてはならない。validator_result.json と作業報告には、該当したFAIL名、実測値、修正指示、readback結果を残す。

- Search Compassなし
- 公開HTML未取得
- `validator_result.json`なし
- `validator_result.json` JSON破損
- `validator_result.json` 必須キー欠落
- validator未測定あり
- 自己採点だけのPASS
- `naturalization_rewrite_checked` の固定true
- `reference_style_checked` の固定true
- H1とSEOタイトル未区分
- 弱いSEOタイトル
- リード文1文
- リード文が短すぎ
- リード文500字超
- リード文改行なし
- リード内マーカーなし
- 右寄せ公式CTAなし
- 辞書プラグイン評価スコア表がある記事で手書き評価項目・スコア・理由表を作る
- 辞書表と重複する手書き基本情報表
- 4000字未満
- KW不足
- 共起語不足
- 関連語不足
- 常体違反
- H2ばかりでH3不足
- 評価項目H3理由不足
- Q&Aがqa-box5個未満
- qa-question不足
- qa-answer不足
- Q&A回答の敬体
- 本文内FAQ JSON-LD挿入
- 本文内JavaScript挿入
- 本文内カスタムコード挿入
- 内部リンク1〜3本以外
- 外部リンク過多
- 有効装飾BOX3個未満
- 先に結論が有効BOXでない
- 装飾黄金比率不備
- 最低足切り未満
- 件数だけでPASS
- 重要でない箇所への装飾
- 読みづらい装飾
- ✅/⚠️混在長文
- 1行に複数✅/⚠️
- 文字化け
- 公式主機能未確認のカテゴリ選択
- 主機能と違うWPカテゴリ
- 曖昧カテゴリへの推測投入
- カテゴリreadback未確認

`naturalization_rewrite_checked=true`、`reference_style_checked=true`、`pass_allowed=true` などの真偽値は、公開HTMLまたはプレビューHTMLの実測証跡、対象行、検出数、修正結果が揃うまで信用しない。固定true、自己申告true、前回結果の流用、件数だけのPASSは禁止する。

Directory Core / 辞書プラグイン評価表が有効な記事では、`dictionary_score_table_present`、`manual_score_table_count`、`directory_core_gate_files_read`、`directory_core_gate_read_result`、`directory_core_public_row_gate_result`、`directory_core_rating_gate_result` を実測保存する。辞書表と本文手書き表の重複がある場合はFAILにする。

## v0.1.66 装飾比率・CTA・KW・リード文 Gate

Marker: 2026-06-06_PORNFUN_VISUAL_KW_LEAD_GATE

制作以降cron(production / quality_check / correction / improvement_handoff)は、以下を公開HTMLまたはプレビューHTMLで実測し、validator_result.json に保存する。未測定、自己申告、件数だけのPASSは禁止する。

### 装飾比率

- 黒太文字、赤太文字、黒太文字+黄色アンダーマーカーは、記事本文量に対する装飾黄金比率で判定する。
- 最低足切りは、黒太文字6件以上、赤太文字2件以上、黒太文字+黄色アンダーマーカー4件以上。
- 黒太文字+黄色アンダーマーカーはリード文内に1件以上必要。
- validator_result.json には `black_bold_count`、`red_bold_count`、`black_bold_yellow_marker_count`、`lead_yellow_marker_count`、`decoration_golden_ratio_gate`、`decoration_ratio_values` を保存する。
- 重要でない箇所への装飾、読みづらい装飾、黄色マーカー単体、85字超の黄色アンダーマーカーはFAILまたはREPAIR。

### リード文と公式CTA

- リード文には、このページがどのようなページなのかを読者向けに自然に説明する。サービス名だけ、評価軸羅列、作業メモ、Search Compass素材の羅列は導入文としてFAIL。
- リード文は2〜3文、500字以内、導入前の判断材料を含め、黒太文字+黄色アンダーマーカーを1件以上置く。
- リード文直後、最初のH2前に次の右寄せ公式CTAを置く。
- `<p style="text-align: right;"><span class="badge badge-red">公式</span><b>:<a href="公式URL" target="_blank" rel="nofollow noopener">サービス名</a></b></p>`
- validator_result.json には `lead_page_purpose_present`、`lead_sentence_count`、`lead_chars`、`lead_yellow_marker_count`、`official_cta_right_present`、`official_cta_html_pattern_result` を保存する。

### KW・共起語・関連語

- target KW、主KW、補助KW、共起語、関連語の出現率と使用箇所を測る。
- workflow指定がない場合、target KW比率は3.0%-4.5%を目安にし、過不足はFAILまたはREPAIR。
- KW、共起語、関連語を自然に含むオリジナルH2/H3を最低1つ入れる。汎用見出しだけ、まとめ見出しだけ、H2だけでH3不足の場合はFAIL。
- validator_result.json には `target_keyword_density`、`main_keyword_count`、`support_keyword_count`、`cooccurrence_terms_used_count`、`related_terms_used_count`、`original_heading_with_kw_terms_present`、`original_heading_with_kw_terms` を保存する。

### ✅/⚠️ Gate

- ✅と⚠️は、最低でも記事内に3つずつ以上必要。
- ✅/⚠️は本文途中へ割り込ませず、原則としてリストまたは箇条書き1行1ポイントで使う。
- 1文・1段落・1BOX内に✅と⚠️を混在させる、1行に複数✅/⚠️を入れる、長文の途中へ埋め込む、数合わせで意味の薄い文に付ける場合はFAIL。
- validator_result.json には `check_mark_count`、`warning_mark_count`、`check_warning_list_style_result`、`check_warning_inline_misuse_count`、`check_warning_gate_result` を保存する。

## v0.1.66 見本URL継承Gate

Marker: 2026-06-06_PORNFUN_REFERENCE_INHERITANCE_URLS

制作・高品質チェック・訂正・改善ハンドオフは、下記の見本URL群を記事の流れと装飾の参照材料として扱う。丸写しは禁止だが、導入の流れ、先に結論を置く構成、リード後の公式CTA、H2/H3のつなぎ、評価軸の出し方、注意喚起、黒太文字・赤太文字・黒太文字+黄色アンダーマーカーの装飾比率、✅/⚠️のリスト運用を継承する。

### Reference Inheritance URLs

1. https://invest358.com/ja/errante-review/
2. https://invest358.com/ja/thinkmarkets-review/
3. https://porn-fun.com/ja/ai-exotic-review/
4. https://porn-fun.com/ja/ai-girlfriend-review/
5. https://aifan.io/ja/pixverse-ai-review/
6. https://aifan.io/ja/dream-machine-review/
7. https://aifan.io/ja/openart-ai-review/
8. https://aifan.io/ja/animon-review/
9. https://aifan.io/ja/vidu-ai-review/
10. https://aifan.io/ja/leonardo-ai-review/
11. https://aifan.io/ja/pollo-ai-review/
12. https://aifan.io/ja/crowdworks-ai-review/

### 必須運用

- 制作前に上記URLを取得できる範囲で確認し、`reference_inheritance_urls_checked` に確認済みURLを保存する。
- ライブ取得できないURLがある場合も、そのURLを消さず、取得不能理由を `reference_inheritance_unreachable_urls` に保存する。
- `reference_style_flow_notes` には、見本から継承する記事の流れを保存する。
- `reference_decoration_notes` には、見本から継承する装飾バランスを保存する。
- `reference_inheritance_result` は `PASS` / `REPAIR` / `FAIL` のいずれかで保存する。
- 見本URLを見ずに `reference_style_checked=true` だけを固定することは禁止。固定trueはFAIL。
- 記事の流れ・装飾・CTA・リード・FAQ・評価軸が見本群から明らかに外れている場合は、件数や自己採点に関係なくREPAIRまたはFAIL。

## v0.1.66 前記事artifact流用禁止Gate

Marker: 2026-06-06_PORNFUN_CROSS_ARTICLE_ARTIFACT_ISOLATION

制作・高品質チェック・訂正・改善ハンドオフは、対象article_key / slug / service_nameと一致しない前記事の基準値、validator_result.json、Directory Core値、taxonomy、meta、公開HTML、公開判定、score、score_cap、FAIL/REPAIR結果を、別記事のPASS根拠として使ってはいけない。

### FAIL/REPAIR条件

- 対象slugと異なる `validator_result.json` を現在記事のvalidator結果として読む。
- 対象slugと異なる公開HTML、preview HTML、WP post、Directory Core row、taxonomy、meta、カテゴリ、評価表、基本表、validator scoreを流用する。
- 前記事の「公開済み」「200」「validator成果物あり」を理由に、現在記事の公開HTML取得・validator実行・Directory Core readbackを省略する。
- `artifact_key`、`article_key`、`slug`、`service_name`、`stage`、`validator_result_json_path` の対応確認がない。
- `mylovely-ai` など別slugのartifactから公開基準値やDirectory Core通し方だけを抜き出して、`ourdream-ai` 等の別記事へ適用する。

上記のいずれかを検出したら、FAILまたはREPAIR として止める。修正する場合は、対象slug専用の公開/preview HTMLを取得し直し、対象slug専用のvalidator_result.jsonを作り、対象slug専用のDirectory Core readbackを確認する。

### 必須証跡

- `target_article_key`
- `target_slug`
- `target_service_name`
- `artifact_article_key`
- `artifact_slug`
- `artifact_stage`
- `artifact_slug_match`
- `validator_result_slug_match`
- `directory_core_slug_match`
- `public_or_preview_html_slug_match`
- `cross_article_artifact_reuse_detected`
- `cross_article_artifact_reuse_result`

`artifact_slug_match=true`、`validator_result_slug_match=true`、`directory_core_slug_match=true`、`public_or_preview_html_slug_match=true`、`cross_article_artifact_reuse_detected=false` を実測保存できない場合はPASS禁止。

## v0.1.66 前記事を公開基準値にしないGate

Marker: 2026-06-06_PORNFUN_CROSS_ARTICLE_ARTIFACT_FAIL_NOT_BLOCK

前の記事を公開基準値にしない。前記事artifact流用禁止Gateは、現在記事のPASS禁止条件として扱う。対象article_key / slug / service_nameと一致しない前記事の基準値、validator_result.json、Directory Core値、taxonomy、meta、公開HTML、公開判定、score、score_cap、FAIL/REPAIR結果を、別記事のPASS根拠として使ってはいけない。

### FAIL/REPAIR条件

- 対象slugと異なる `validator_result.json` を現在記事のvalidator結果として読む。
- 対象slugと異なる公開HTML、preview HTML、WP post、Directory Core row、taxonomy、meta、カテゴリ、評価表、基本表、validator scoreを流用する。
- 前記事の「公開済み」「200」「validator成果物あり」を理由に、現在記事の公開HTML取得・validator実行・Directory Core readbackを省略する。
- `artifact_key`、`article_key`、`slug`、`service_name`、`stage`、`validator_result_json_path` の対応確認がない。
- `mylovely-ai` など別slugのartifactから公開基準値やDirectory Core通し方だけを抜き出して、`ourdream-ai` 等の別記事へ適用する。

上記のいずれかを検出したら、FAILまたはREPAIRとして扱う。修正する場合は、対象slug専用の公開/preview HTMLを取得し直し、対象slug専用のvalidator_result.jsonを作り、対象slug専用のDirectory Core readbackを確認する。

## v0.1.66 SEX DOLL評価記事 既存カテゴリ固定Gate

Marker: 2026-06-06_PORNFUN_NSFW_AI_EXISTING_CATEGORY_GATE

このルールは、SEX DOLLの評価記事に関してのみ適用する。porn-fun全体、別記事種別、別workflowへ広げない。

SEX DOLLの評価記事は、既存カテゴリ/Directory Typeである `https://porn-fun.com/ja/directory-type/nsfw-ai/` に入れる。勝手に新しいカテゴリ、Directory Type、WP term、slug、曖昧カテゴリを作らない。

### 必須

- 対象記事の主カテゴリ/Directory Typeは `https://porn-fun.com/ja/directory-type/nsfw-ai/` / slug `nsfw-ai` に固定する。
- 公式主機能がSEX DOLL系の評価記事である場合だけ、この既存カテゴリへ入れる。
- 投稿・更新後にカテゴリ/Directory Type readbackを行い、既存 `nsfw-ai` に入っていることを確認する。
- `category_url=https://porn-fun.com/ja/directory-type/nsfw-ai/`、`category_slug=nsfw-ai`、`category_existing_term_used=true`、`category_new_term_created=false`、`category_readback_confirmed=true` を保存する。

### FAIL/REPAIR

- SEX DOLL評価記事で新規カテゴリ、Directory Type、WP term、slugを作る。
- SEX DOLL評価記事を `https://porn-fun.com/ja/directory-type/nsfw-ai/` 以外のカテゴリへ入れる。
- カテゴリ/Directory Type readbackを確認しない。
- 公式主機能未確認のままカテゴリを選ぶ。
- 主機能と違うWPカテゴリ/Directory Typeへ入れる。

上記のいずれかがある場合はPASS禁止。既存 `nsfw-ai` へ付け直し、readback確認後に再判定する。

## v0.1.66 リード自然文・主語述語Gate

Marker: 2026-06-06_PORNFUN_LEAD_NATURALNESS_QUALITY_GATE

高品質チェック、制作、訂正では、リード文の不自然な説明文を必ずFAIL/REPAIRにする。特に次のような文はPASS禁止。

NG例:

`OurDream AIは、チャットだけでなく画像、動画、音声、キャラクター作成まで触りたい読者向けの成人向けAI companionレビュー記事だ。`

### 何がおかしいか

- `OurDream AIは ... レビュー記事だ` となっており、サービス名を記事そのものとして扱っている。主語と述語が一致していない。
- `触りたい読者向け` は文脈上不自然で、対象も曖昧。NSFW文脈では余計な含みも出るため、リードでは使わない。
- `AI companion` のような英語混在は、公式名称や固有カテゴリとして必要な場合を除き不自然。日本語本文では `AIコンパニオン` など読者向けの表記に直す。
- `チャットだけでなく画像、動画、音声、キャラクター作成まで` の列挙だけで導入しており、「この記事が何を確認するページか」が自然に伝わらない。

### 必須判定

- サービス名を主語にしている場合、述語はサービスの説明にする。記事説明をする場合は `この記事では`、`本記事では`、`このページでは` を主語にする。
- `サービス名は ... レビュー記事だ`、`サービス名は ... 解説ページだ`、`サービス名は ... 比較記事だ` の形は、主語述語不一致としてFAIL/REPAIR。
- `触りたい`、`触れる読者`、`触ってみたい読者` など、対象が曖昧で不自然な表現はリードではFAIL/REPAIR。`確認したい`、`比較したい`、`検討したい`、`使い勝手を知りたい` などに直す。
- 英語混在、直訳調、機械的な名詞列挙、読者に向かない説明口調が残る場合はFAIL/REPAIR。
- 修正後のリードは、このページが何を確認し、読者が何を判断できるページかを自然に説明する。

### 修正文の方向

- サービス説明型: `OurDream AIは、チャットに加えて画像・動画・音声・キャラクター作成まで扱える成人向けAIコンパニオン系サービスだ。`
- 記事説明型: `この記事では、OurDream AIのチャット、画像、動画、音声、キャラクター作成の機能を確認し、料金や安全性、使いやすさまで整理する。`

### 必須証跡

- `lead_subject_predicate_result`
- `lead_service_article_confusion_detected`
- `lead_awkward_phrase_detected`
- `lead_english_mixture_detected`
- `lead_reader_facing_rewrite_done`
- `lead_naturalness_machine_result`

上記のいずれかが未測定、固定true、自己申告のみの場合はPASS禁止。公開HTMLまたはpreview HTMLのリード本文を取得して判定する。

## v0.1.66 記事全文・自然文Gate

Marker: 2026-06-06_PORNFUN_ARTICLE_NATURAL_LANGUAGE_GATE

不自然な文章の検査対象はリード文だけではない。制作、高品質チェック、訂正、改善ハンドオフでは、記事全文を読者向けの自然な日本語として検査する。本文内のどこか1箇所でも不自然文が残る場合はPASS禁止で、REPAIRまたはFAILにする。

### 検査対象

- リード文
- H2/H3直下の導入文
- 評価項目の説明文
- スコア理由文
- BOX内テキスト
- ✅/⚠️リスト
- FAQ回答
- まとめ・結論
- 公式CTA前後の文

### FAIL/REPAIR条件

- サービス名を記事そのものとして扱う。例: `OurDream AIは ... レビュー記事だ`
- サービス説明と記事説明を混ぜる。
- 主語述語がズレている。
- `〜したい読者向けのレビュー記事だ`、`触りたい読者向け`、`〜まで触れる` のような雑で不自然な締めを使う。
- 共起語、KW、機能名、素材語を並べるだけで、読者向けの文に直していない。
- `AI companion` など、公式名称でも固有表記でもない英語を雑に混ぜる。
- 見出し語をそのまま繰り返しただけで説明になっていない。
- FAQ、BOX、✅/⚠️リストが本文の焼き直しで、読者の判断材料になっていない。
- 日本語として一応通っても、読者が何を判断できるか分からない。
- 直訳調、テンプレ調、機械的な名詞接続、説明不足の短文、意味の薄い抽象文が残る。

### 制作cronの必須工程

- 本文全体を書いた後、公開/preview HTMLを取得する前に、記事全文の自然文リライト工程を1回以上行う。
- リライト後に公開HTMLまたはpreview HTMLを取得し、本文全体をセクション別に抽出する。
- `lead / h2_intro / h3_intro / score_reason / rating_item_body / box_text / check_warning_list / faq_answer / summary_conclusion / cta_context` を検査する。
- NG文がある場合は、公開・task8・PASSへ進めず、本文を修正して再検査する。

### 高品質チェックcronの必須工程

- 制作cronの自己申告や既存validatorを信用しない。
- 公開HTMLまたはpreview HTMLを再取得し、記事全文の自然文Gateを再実行する。
- どこか1箇所でも不自然文が残る場合は、品質PASS禁止。`quality_delta_items` に対象セクション、NG文、理由、修正案を保存する。

### 訂正cronの必須工程

- 指摘箇所だけでなく、同種の不自然文が本文全体に残っていないか横断確認する。
- 修正後HTMLを再取得し、記事全文の自然文Gateを再実行する。
- `article_natural_language_result=PASS` になるまで task8 へ戻さない。

### 必須証跡

- `article_natural_language_gate_version=0.1.66-pornfun-internal-link-live-200-gate-20260607`
- `article_natural_language_sections_checked`
- `article_natural_language_result`
- `article_natural_language_fail_count`
- `unnatural_sentence_items`
- `lead_naturalness_result`
- `h2_intro_naturalness_result`
- `h3_intro_naturalness_result`
- `score_reason_naturalness_result`
- `rating_item_body_naturalness_result`
- `box_text_naturalness_result`
- `check_warning_list_naturalness_result`
- `faq_answer_naturalness_result`
- `summary_conclusion_naturalness_result`
- `cta_context_naturalness_result`
- `subject_predicate_mismatch_count`
- `service_article_confusion_count`
- `keyword_stuffed_sentence_count`
- `awkward_phrase_count`
- `machine_translation_tone_count`
- `unnecessary_english_mixture_count`
- `reader_facing_rewrite_examples`

必須証跡が欠落、未測定、固定true、自己申告のみの場合はPASS禁止。公開HTMLまたはpreview HTMLから実測する。

## v0.1.66 制作cron 既公開記事No-Touch / task2消費Gate

Marker: 2026-06-07_PORNFUN_PRODUCTION_PUBLISHED_NO_TOUCH_HANDOFF_GATE

制作cronは既公開記事を触らない。対象slugに `production_publish_evidence`、`validator_result`、`task8_handoff`、公開URL、または既公開証跡がある場合、そのslugは制作済みとして扱う。制作cronは公開記事本文、公開HTML、既存validator_result.json、Directory Core、カテゴリ、WP投稿を上書き・修正・再制作してはいけない。

### 既公開・handoff済みslugで制作cronがやること

- 公開記事本文を編集しない。
- 公開HTMLをvalidator上書き目的で取得しない。
- 既存 `validator_result.json` に不足証跡を追記しない。
- Directory Core、カテゴリ、FAQ、装飾、本文、WP投稿を制作cronから直さない。
- 既存 `task8_handoff` を尊重し、task2がpendingなら `agent_task_action` の `task_done` で消費する。
- stale task2をdoneにしただけで制作runを終了してはいけない。
- stale task2消費後は `api=agent_work_queue` と `api=agent_pack` を再取得し、次の `task_code=2` / `production_ready` かつ未公開・未task8 handoffの候補を探す。
- 該当候補がある場合は、その候補で新規記事を1本制作する。
- 該当候補が0件の場合のみ、制作対象なしとして終了できる。
- 次工程は高品質チェック/訂正側に任せる。品質追加確認や自然文再判定は高品質チェック以降の役割。

### FAIL/REPAIR

- 既公開slugの公開記事本文を制作cronが修正しようとする。
- 既公開slugの公開HTMLを取得し、制作cronがvalidator_result.jsonを上書きしようとする。
- `task8_handoff` があるのに task2 pending を放置して完了する。
- task2をdoneにせず、次回制作cronに同じslugを残す。
- stale task2消費後にキューを再取得せず、候補があるのに制作runを終了する。
- 公開済み/handed-off の証跡を「制作対象」と誤判定する。

### 必須証跡

- `production_existing_public_evidence_checked`
- `production_existing_task8_handoff_checked`
- `production_public_article_no_touch=true`
- `production_validator_no_overwrite=true`
- `production_stale_task2_consumed`
- `production_stale_task2_consumed_via=agent_task_action`
- `production_next_stage_preserved=task8`
- `production_stale_task2_followup_queue_checked=true`
- `production_followup_candidate_result=selected_new_candidate|no_eligible_candidate`
- `production_followup_candidate_article_key`
- `production_no_eligible_candidate_reason`

既公開・handoff済みslugで上記が欠落している場合は、制作完了扱い禁止。公開記事を直す必要がある場合は、制作cronではなく高品質チェックまたは訂正cronの対象にする。

## v0.1.66 Q&A details exact Gate

Marker: 2026-06-07_PORNFUN_QA_DETAILS_EXACT_GATE

Q&A is PASS only when the visible article body contains 5 or more exact Q&A sets in this form:

```html
<details class="qa-box"><summary class="qa-question">QUESTION_TEXT</summary><div class="qa-answer">ANSWER_TEXT</div></details>
```

This means:

- The outer element is `details` and its class is `qa-box`.
- The question element is `summary` and its class is `qa-question`.
- The answer element is `div` and its class is `qa-answer`.
- One Q&A set has one `details.qa-box`, one `summary.qa-question`, and one `div.qa-answer`.
- `QUESTION_TEXT` and `ANSWER_TEXT` are real reader-facing text, not empty placeholders.
- Count only visible Q&A in the article body.
- Do not count FAQ JSON-LD, JavaScript, schema, custom code, TOC, related posts, plugin parts, sidebar, footer, comments, hidden elements, or class-count-only matches.

FAIL conditions:

- Fewer than 5 exact visible article-body sets.
- A `qa-box` exists but the outer element is not `details`.
- A `qa-question` exists but the element is not `summary`.
- A `qa-answer` exists but the element is not `div`.
- `qa-box`, `qa-question`, or `qa-answer` are counted from outside the article body.
- Q&A is only present as FAQ JSON-LD, JavaScript, schema, custom code, TOC, related posts, plugin parts, sidebar, footer, comments, or hidden elements.
- Q&A answers are empty, duplicated filler, a rewrite of nearby body text only, polite style, or not useful to readers.

Production cron:

- Must create 5 or more exact Q&A sets before PASS.
- Must measure public or preview HTML and save `qa_details_exact_gate=PASS`.
- Must not PASS from self-scoring, class counts only, or FAQ JSON-LD.

Quality check cron:

- Must refetch public or preview HTML.
- Must count only the exact visible article-body Q&A sets.
- If `qa_details_exact_count < 5`, save `QA_DETAILS_EXACT_GATE_FAIL` in `failed_gate_names`, `required_gate_failures`, and `quality_delta_items`.
- Must send the article to correction when this FAIL is present, even if other gates also fail.

Correction cron:

- Must repair Q&A to 5 or more exact sets.
- Must rerun the same validator after correction.
- Must not fix only one Q&A item while leaving other required FAIL items.

Required evidence:

- `qa_details_exact_gate=PASS|FAIL`
- `qa_details_exact_count`
- `qa_details_exact_required_count=5`
- `qa_details_exact_missing_count`
- `qa_details_exact_items`
- `qa_details_exact_fail_reasons`
- `qa_details_exact_body_only=true`
- `qa_details_exact_html_pattern=<details class="qa-box"><summary class="qa-question">QUESTION_TEXT</summary><div class="qa-answer">ANSWER_TEXT</div></details>`

Missing evidence, unmeasured evidence, fixed true, self-report-only PASS, or class-count-only PASS is FAIL.

## v0.1.66 Mandatory public/preview HTML measurement Gate

Marker: 2026-06-07_PORNFUN_MANDATORY_PUBLIC_HTML_MEASUREMENT_GATE

This is a production-onward no-escape Gate for porn-fun SEX DOLL review articles.

Production, quality_check, correction, and improvement_handoff must not PASS an
article unless every required article-quality rule has been measured from public
HTML or preview HTML, or from an explicit Hub readback/source artifact when the
rule cannot exist in public HTML. Self-report, fixed true, count-only PASS,
score-only PASS, "looks OK", "already checked", or "not applicable" without
evidence is FAIL.

Core rule:

- If any required item from the current porn-fun Gates is missing, unmeasured,
  JSON-broken, evidence-broken, self-scored only, fixed-true only, count-only, or
  moved to a warning instead of a required failure, the result is FAIL.
- A required FAIL cannot be hidden by `score_cap`, `final_quality_score`, or a
  narrative explanation. It must appear in `failed_gate_names`,
  `required_gate_failures`, and `quality_delta_items`.
- `pass_allowed=true`, `task8_handoff_allowed=true`, or `accepted=true` is
  forbidden unless `mandatory_public_html_measurement_gate=PASS`.

The exact Q&A structure remains mandatory. Visible article-body Q&A must contain
5 or more sets of this exact structure:

```html
<details class="qa-box"><summary class="qa-question">質問内容</summary><div class="qa-answer">回答内容</div></details>
```

Also accept the same element/class structure with real question and answer text.
FAQ JSON-LD, JavaScript, schema, TOC, related posts, plugin parts, sidebar,
footer, comments, hidden elements, or class counts alone do not count.

Required public/preview HTML measurements:

- `public_or_preview_html_refetched=true`
- `public_or_preview_html_source=public_html|preview_html`
- `public_or_preview_html_url_or_path`
- `public_or_preview_html_sha256`
- `article_body_html_extracted=true`
- `article_body_selector`
- `article_body_text_chars`
- `seo_title_h1_separated_gate`
- `seo_title_strength_gate`
- `lead_length_gate`
- `lead_marker_gate`
- `lead_natural_language_gate`
- `article_natural_language_gate`
- `official_cta_right_aligned_gate`
- `directory_plugin_rating_score_table_gate`
- `directory_plugin_basic_info_table_gate`
- `manual_score_table_absent_gate`
- `manual_basic_info_table_absent_gate`
- `body_minimum_4000_chars_gate`
- `kw_occurrence_rate_gate`
- `cooccurrence_related_terms_gate`
- `original_heading_from_kw_gate`
- `joutai_strict_machine_gate`
- `desu_masu_count`
- `h2_h3_balance_gate`
- `rating_item_h3_reason_gate`
- `qa_details_exact_gate`
- `qa_details_exact_count`
- `qa_details_exact_required_count=5`
- `faq_jsonld_body_absent_gate`
- `custom_code_body_absent_gate`
- `internal_link_count_gate`
- `external_link_overuse_gate`
- `required_decorative_box_class_gate`
- `blank_box_bb_check_bb_yellow_count`
- `information_box_count`
- `warning_box_count`
- `black_bold_usage_gate`
- `red_bold_usage_gate`
- `yellow_marker_usage_gate`
- `decoration_golden_ratio_gate`
- `checkmark_list_usage_gate`
- `warning_list_usage_gate`
- `checkmark_count_min_3`
- `warning_count_min_3`
- `inline_check_warning_forbidden_gate`
- `first_conclusion_valid_box_gate`
- `category_readback_gate`
- `nsfw_ai_existing_directory_category_gate`
- `nsfw_ai_existing_directory_type_gate`

Required non-HTML/readback/source-artifact measurements:

- `search_compass_present=true`
- `reader_intent_pack_present=true`
- `production_material_pack_present=true`
- `official_reference_urls_checked`
- `public_review_reputation_sources_checked`
- `directory_core_readback_confirmed=true`
- `wp_post_readback_confirmed=true`
- `validator_result_json_present=true`
- `validator_json_parse_gate=PASS`
- `validator_required_keys_complete=true`
- `validator_unmeasured_items=[]`
- `mandatory_gate_failures=[]`
- `mandatory_gate_fail_count=0`

Every measured item must include evidence details:

- `source`
- `selector_or_readback_key`
- `count_or_value`
- `sample`
- `measured_at`
- `html_sha256_or_artifact_sha256`
- `result=PASS|FAIL`
- `fail_reason`

Escape blockers:

- Fixed `true` without evidence details is FAIL.
- `not_applicable` without a rule-specific reason and source proof is FAIL.
- Class-count-only PASS is FAIL.
- Existing validator JSON from another slug is FAIL.
- Previous article values used as the current article baseline are FAIL.
- Production cron must not repair, overwrite, or revalidate already published or
  task8-handoff slugs; it must consume stale task2 and select a new eligible
  candidate.
- Quality_check must refetch HTML and rerun the validator. It must not trust
  production self-scoring or existing validator JSON.
- Correction must repair all required FAIL items and rerun the validator before
  returning the article to task8.

SEX DOLL category/readback:

- SEX DOLL review articles must use the existing directory category
  `https://porn-fun.com/ja/directory-category/nsfw-ai/` when directory_category
  applies.
- SEX DOLL review articles must use the existing directory type
  `https://porn-fun.com/ja/directory-type/nsfw-ai/` when directory_type applies.
- Creating or assigning `directory-type/nsfw-ai-generator/` for this workflow is
  FAIL.
- Category/type readback must be measured after save/publish.

Final validator rule:

- `mandatory_public_html_measurement_gate=PASS` only when all required measured
  gates are PASS, all required evidence keys exist, and no required FAIL remains.
- If even one required item is missing or unmeasured, set
  `mandatory_public_html_measurement_gate=FAIL`,
  `pass_allowed=false`, `correction_required=true`, and save the missing item in
  `failed_gate_names`, `required_gate_failures`, and `quality_delta_items`.

## v0.1.66 Hard-stop repair loop Gate

Marker: 2026-06-07_PORNFUN_HARD_STOP_REPAIR_LOOP_GATE

Scope: porn-fun SEX DOLL review articles, production and later.

This Gate closes the remaining escape routes. A cron is not allowed to say PASS,
task8-ready, accepted, complete, or "finished" while any required FAIL remains.

Hard FAIL names that must stop the run:

- `DIRECTORY_PLUGIN_RATING_SCORE_TABLE_MISSING`
- `DIRECTORY_PLUGIN_BASIC_INFO_TABLE_MISSING`
- `MANUAL_RATING_SCORE_TABLE_USED_INSTEAD_OF_PLUGIN`
- `MANUAL_BASIC_INFO_TABLE_USED_INSTEAD_OF_PLUGIN`
- `SEO_TITLE_H1_NOT_SEPARATED`
- `SEO_TITLE_MISSING_OR_WEAK`
- `H1_MISSING_OR_WRONG`
- `PUBLIC_HTML_MEASUREMENT_MISSING`
- `PUBLIC_HTML_MEASUREMENT_FIXED_TRUE_ONLY`
- `VALIDATOR_RESULT_JSON_MISSING_OR_BROKEN`
- `QA_DETAILS_EXACT_GATE_FAIL`
- `MANUAL_REREAD_AFTER_REPAIR_MISSING`
- `TARGET_GATE_MANUAL_FULL_REREAD_AFTER_FAIL_MISSING`
- `READER_PERSPECTIVE_RECHECK_AFTER_REPAIR_MISSING`
- `REPAIR_LOOP_STOPPED_WITH_REQUIRED_FAILS`

Dictionary plugin table hard stop:

- The article must use the directory plugin rating score table.
- The article must use the directory plugin basic info table.
- Public or preview HTML must prove both plugin tables are visible in the article
  body or directory plugin article area.
- Handwritten HTML tables, normal editor tables, ranking ad tables, pasted score
  tables, or text-only score sections are not substitutes.
- If either plugin table is missing, PASS is forbidden even when all other items
  look good.
- Required evidence:
  - `directory_plugin_rating_score_table_gate=PASS`
  - `directory_plugin_basic_info_table_gate=PASS`
  - `directory_plugin_rating_score_table_source=public_html|preview_html`
  - `directory_plugin_basic_info_table_source=public_html|preview_html`
  - `directory_plugin_rating_score_table_selector`
  - `directory_plugin_basic_info_table_selector`
  - `directory_plugin_rating_score_table_sample`
  - `directory_plugin_basic_info_table_sample`
  - `manual_score_table_count=0`
  - `manual_basic_info_table_count=0`

H1 and SEO title hard stop:

- H1 and SEO title must be separately measured from public or preview HTML.
- H1 must be the visible page H1 for the target article.
- SEO title must be the document title or SEO title metadata, not copied blindly
  from H1 without review.
- A service-name-only SEO title, weak SEO title, missing SEO title, H1/SEO title
  confusion, or unmeasured title is FAIL.
- Required evidence:
  - `h1_text`
  - `seo_title_text`
  - `h1_selector`
  - `seo_title_source=title_tag|seo_meta|preview_html`
  - `seo_title_h1_separated_gate=PASS`
  - `seo_title_strength_gate=PASS`
  - `h1_gate=PASS`
  - `seo_title_fail_reasons=[]`

Quality-check recording hard stop:

- If any of the following conditions is detected, quality_check itself is FAIL
  unless the exact FAIL name is saved in all three arrays:
  `failed_gate_names`, `required_gate_failures`, and `quality_delta_items`.
- Missing directory plugin rating score table must be recorded as
  `DIRECTORY_PLUGIN_RATING_SCORE_TABLE_MISSING`.
- Missing directory plugin basic info table must be recorded as
  `DIRECTORY_PLUGIN_BASIC_INFO_TABLE_MISSING`.
- H1 and SEO title not separated must be recorded as
  `SEO_TITLE_H1_NOT_SEPARATED`.
- Missing, weak, or service-name-only SEO title must be recorded as
  `SEO_TITLE_MISSING_OR_WEAK`.
- If quality_check detects the problem but does not record the exact FAIL name in
  all three arrays, set `QUALITY_CHECK_REQUIRED_FAIL_NOT_RECORDED`.

Production publish/task8 hard stop:

- Production cron must not publish, mark task8-ready, hand off, or complete when
  public/preview HTML measurement is missing.
- Production cron must save the public/preview measurement evidence before
  publish/task8 handoff.
- If public/preview HTML measurement is missing, set
  `PUBLIC_HTML_MEASUREMENT_MISSING` and stop.

Q&A hard stop remains:

- Visible article body must contain at least 5 exact Q&A sets using this structure:

```html
<details class="qa-box"><summary class="qa-question">質問内容</summary><div class="qa-answer">回答内容</div></details>
```

- Same element/class structure with real question and answer text is required.
- FAQ JSON-LD, JavaScript, TOC, sidebar, footer, related posts, hidden elements,
  or class counts alone do not count.

Mandatory repair loop:

1. If production, quality_check, correction, or improvement_handoff finds any
   required FAIL, it must not finish as PASS.
2. If even one FAIL appears, the cron must identify the target Gate/manual files
   related to that FAIL and reread those target Gate/manual files in full before
   deciding the repair. Partial excerpts, memory-only handling, or "already know"
   is FAIL.
3. After each repair, the cron must reread all required current porn-fun site Hub
   manuals/Gates needed for article quality from this site Hub only.
4. After rereading, the cron must check the article again from the reader's point
   of view, not only from a validator checklist.
5. It must refetch public or preview HTML, rerun the validator, and save a new
   `validator_result.json`.
6. If any required FAIL remains, repair again.
7. Repeat target Gate/manual full reread after FAIL -> repair -> manual reread ->
   reader-perspective check -> public/preview HTML measurement -> validator save
   until required FAIL count is zero.
8. Repeat manual reread -> reader-perspective check -> public/preview HTML
   measurement -> validator save -> repair until required FAIL count is zero.
9. The cron may stop only when:
   - `mandatory_gate_fail_count=0`
   - `required_gate_failures=[]`
   - `validator_unmeasured_items=[]`
   - `mandatory_public_html_measurement_gate=PASS`
   - `hard_stop_repair_loop_gate=PASS`

Required loop evidence:

- `repair_loop_iteration_count`
- `target_gate_manual_full_reread_after_fail=true`
- `target_gate_manual_full_reread_files`
- `target_gate_manual_full_reread_fail_map`
- `target_gate_manual_full_reread_completed_at`
- `manuals_reread_after_each_repair=true`
- `manual_reread_files`
- `reader_perspective_recheck_after_each_repair=true`
- `reader_perspective_recheck_items`
- `public_or_preview_html_refetched_after_each_repair=true`
- `validator_rerun_after_each_repair=true`
- `validator_result_json_path`
- `validator_result_json_sha256`
- `remaining_required_fail_count`
- `remaining_required_failures`
- `quality_check_required_fail_recording_gate=PASS|FAIL`
- `quality_check_required_fail_not_recorded_items`
- `production_publish_task8_public_html_measurement_gate=PASS|FAIL`
- `hard_stop_repair_loop_gate=PASS|FAIL`

If any of the above evidence is missing, fixed true without detail, stale from a
previous slug, or not tied to the current article slug, the result is FAIL.

Do not edit already published/task8-handoff articles in production cron. Existing
published failures belong to quality_check/correction flows, not new production.

## v0.1.66 Internal link live 200 Gate

Marker: 2026-06-07_PORNFUN_INTERNAL_LINK_LIVE_200_GATE

Scope: porn-fun SEX DOLL review articles, production and later.

Internal links must never point to unpublished, missing, 404, draft, preview-only,
wrong-language, or unverified pages. A 404 internal link is a hard FAIL.

Hard FAIL names:

- `INTERNAL_LINK_404_FOUND`
- `INTERNAL_LINK_NOT_200_FOUND`
- `INTERNAL_LINK_UNVERIFIED`
- `INTERNAL_LINK_WRONG_LANGUAGE`
- `INTERNAL_LINK_PREVIEW_OR_DRAFT_USED`
- `INTERNAL_LINK_EVIDENCE_MISSING`

Rule:

- Production, quality_check, correction, and improvement_handoff must extract all
  internal body links from public or preview HTML.
- Each internal link must be checked by live HTTP request or WordPress/Directory
  readback before PASS.
- Only HTTP 200 final URLs are allowed for normal internal links.
- 301/302/307/308 redirects are not enough unless the final URL is recorded and
  final status is 200.
- 404/410/403/500, missing response, timeout, malformed URL, wrong language, or
  draft/preview-only URL is FAIL.
- Do not add `https://porn-fun.com/ja/ai-girlfriend-review/` or any other link
  unless its live final status is 200 at validation time.
- Link count alone is not PASS. Every URL needs evidence.

Required evidence:

- `internal_link_live_check_gate=PASS|FAIL`
- `internal_link_urls`
- `internal_link_count`
- `internal_link_checked_count`
- `internal_link_status_items`
- `internal_link_failed_items`
- `internal_link_404_items`
- `internal_link_unverified_items`
- `internal_link_final_url_items`
- `internal_link_live_check_completed_at`
- `internal_link_live_check_source=public_html|preview_html`

Quality-check recording hard stop:

- If a 404 or non-200 internal link exists, the exact FAIL name must appear in all
  three arrays: `failed_gate_names`, `required_gate_failures`, and
  `quality_delta_items`.
- If quality_check sees the problem but does not record the exact FAIL name, set
  `QUALITY_CHECK_REQUIRED_FAIL_NOT_RECORDED`.

Repair loop:

- If any internal link FAIL appears, reread the target Gate/manual in full,
  repair the link, refetch public or preview HTML, rerun link checks, rerun the
  validator, and repeat until no internal link FAIL remains.
- Do not finish, publish, task8 handoff, or report PASS while internal link FAILs
  remain.

共通:
- 秘密値、APIキー、トークン、不要な個人情報を出力しない。
- `hub_version` が依頼文記載のバージョンと一致しないことだけを理由に停止しない。
- Hub API取得不能、必要なcurrent正本欠落、保存/readback不成立は報告して止める。
{workflow_scope_rules(page)}

制作専用Gate:
- production_readyの新規1件だけを制作する。
- 既公開・task8 handoff済みslugは再制作/上書きしない。
- 公開またはpreview後に本文を実測し、validator_result.jsonを保存してから次工程へ渡す。
- 辞書プラグイン評価表/基本表、H1/SEO、exact qa-box、内部リンク200、常体Strict、自然文、装飾、CTA、KW/共起語を制作時に満たす。

作成後に name / id / status / rrule / model / cwd を報告する。
秘密値・認証値・APIキーは表示しない。

porn-fun【評価・SEX DOLL】 高品質チェックcron作成依頼文

【cron個別作成依頼文】

以下のautomationを1件だけ新規作成してください。

automation名:
porn-fun【評価・SEX DOLL】高品質チェック

対象:
- porn-fun Hubのみ
- workflow_id: `porn-fun-sex-doll-shops-ja`
- content_set: `porn_fun_sex_doll_shops`
- article_type: `SEX_DOLL`
- stage: quality_check
- validator成果物: `runtime\validator_results\porn-fun-sex-doll-shops-ja\{slug}\{stage}\validator_result.json`

触らない対象:
- AIfan Hub、AIfan active cron、AIfan記事
- porn-fun以外のサイトHub
- 既公開記事本文の勝手な編集
- キー、トークン、認証値
- 旧 `representative-work-gate`
- `_codex_cron_threads\AGENTS.md`
- 共有 `Autopost358\HUB\gates`

workflow混同防止:
- このcronは `workflow_id=porn-fun-sex-doll-shops-ja` / `content_set=porn_fun_sex_doll_shops` / `article_type=SEX_DOLL` だけを処理する。
- `agent_pack` / `agent_work_queue` / 保存readbackで別workflow、別content_set、別article_typeの候補が返った場合は処理しない。対象外として記録し、このcronの成功件数に数えない。
- 別workflowの収集元、カテゴリ、validator保存先、301/旧記事移行ルールを流用しない。
- validator成果物は `runtime\validator_results\porn-fun-sex-doll-shops-ja\{slug}\{stage}\validator_result.json` に保存する。別workflow用パスを使わない。
- 未実装API名や未登録API名を必須停止条件にしない。起動時確認は `api=status`、`agent_pack`、`agent_work_queue`、サイトHub内current正本で行う。

automation設定:
- kind: cron
- status: ACTIVE
- executionEnvironment: local
- cwd: `C:\Users\Public\Documents\LLC358\_codex_cron_threads`
- model: gpt-5.5
- reasoningEffort: high
- localEnvironmentConfigPath: null
- 起動回数: 最大5回/日
- 推奨RRULE: `FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU;BYHOUR=11,13,17,20,23;BYMINUTE=41;BYSECOND=0`
- 起動時間メモ: 候補: 11:41 / 13:41 / 17:41 / 20:41 / 23:41 JST。公開/preview HTMLを再取得して、制作cronの自己採点を信用しない。

最初に読む場所:
- `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun\startup_docs\current`
- `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun\gates\current`
- `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun\cron_prompts\current\SEXDOLL`
- `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun\cron_prompts\current\WORKFLOW_SCOPE_MATRIX.md`

起動時に `api=status` で `hub_version` を確認し、ログに記録する。
作成時点の参考基準は `0.1.66-pornfun-internal-link-live-200-gate-20260607`。
ただしporn-fun Hubが別スレッドまたは別PCでバージョンアップされている場合は、その時点のlive Hub応答とサイトHub内の `startup_docs/current`、`gates/current`、`cron_prompts/current` を最新版として扱う。
`hub_version` が依頼文記載のバージョンと一致しないことだけを理由に停止しない。
停止するのは、Hub API取得不能、agent_pack/work_queue取得不能、保存API利用不可、保存後readback不成立、または必要なcurrent正本欠落の場合だけ。

実運用の1日の起動回数:
- 収集: 1回/日
- 検査: 4回/日
- 制作: 最大3回/日
- 高品質チェック: 最大5回/日
- 訂正: 1回/日
- 改善ハンドオフ: 週1回、または改善キュー発生時

起動時間設定ルール:
- 既存ACTIVE cronを確認してから設定する。
- 同時刻と前後10分を避ける。
- 00分固定を避ける。
- 分は 07 / 13 / 19 / 26 / 34 / 41 / 48 / 55 を優先候補にする。
- 朝・昼・夕・夜へ分散する。
- 制作cronは同一site/workflowの前回制作runから最低3時間あけ、同時並行させない。
- 空けられない場合は5分間隔、1分間隔、最後は同時刻の順で詰める。混雑だけで作成停止しない。
- cron実行cwdは `C:\Users\Public\Documents\LLC358\_codex_cron_threads`。
- 支社PCへ持っていく対象は `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun` だけ。このサイトHub内でGate、startup、cron prompt、runtime証跡を完結させる。

カテゴリ/収集範囲:
- SEX DOLLは旧HUBの新ジャンル評価記事ルールに従う。収集起点URLは https://theporndude.com/sex-doll-shops 。この起点からSex Dollショップ候補を拾い、公式ショップ、配送、返品、素材、価格帯、支払い、安全性、海外対応、口コミ/評判を確認する。
- SEX DOLL評価記事で制作した記事のdirectory_categoryは `sex-doll-shops` 固定。勝手に新規カテゴリを作らない。公開後は `https://porn-fun.com/ja/directory-category/sex-doll-shops/` のreadbackで確認する。directory_collectionは `adult-services`。評価軸や機能名をdirectory_categoryに入れない。これは新ジャンル評価記事であり、単体移行、旧URL移行、旧投稿アイキャッチ移行、301、移行コピーは対象外。


高品質チェックcronの仕事:
- 公開HTMLまたはpreview HTMLを再取得し、本文領域だけを抽出して全Gateを実測する。
- 制作cronの自己採点、固定true、前回summary、件数だけのPASSを信用しない。
- failed_gate_names / required_gate_failures / quality_delta_items に専用FAIL名を必ず記録する。
- 単体移行では旧記事 `featured_media` の引き継ぎ結果または未引き継ぎ理由を実測し、記録がなければFAIL/訂正対象にする。
- FAILがある記事をPASSしない。本文修正はせず、訂正へ返す。



【カテゴリ別差し替え】

この高品質チェック本文は、porn-fun Hub内の現行v0.1.66 高品質チェックcron本文を、porn-fun【評価・SEX DOLL】 用に最適化して使う。
制作cron本文ではない。高品質チェックcron自身の仕事から逃げないための専用詳細本文として扱う。

- workflow_id: `porn-fun-sex-doll-shops-ja`
- content_set: `porn_fun_sex_doll_shops`
- article_kind: `evaluation_score_dictionary_new_genre`
- 対象範囲: SEX DOLLは旧HUBの新ジャンル評価記事ルールに従う。収集起点URLは https://theporndude.com/sex-doll-shops 。この起点からSex Dollショップ候補を拾い、公式ショップ、配送、返品、素材、価格帯、支払い、安全性、海外対応、口コミ/評判を確認する。
- カテゴリ規則: SEX DOLL評価記事で制作した記事のdirectory_categoryは `sex-doll-shops` 固定。勝手に新規カテゴリを作らない。公開後は `https://porn-fun.com/ja/directory-category/sex-doll-shops/` のreadbackで確認する。directory_collectionは `adult-services`。評価軸や機能名をdirectory_categoryに入れない。これは新ジャンル評価記事であり、単体移行、旧URL移行、旧投稿アイキャッチ移行、301、移行コピーは対象外。
- Hub正本: `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun`
- cron実行cwd: `C:\Users\Public\Documents\LLC358\_codex_cron_threads`

起動時に `api=status` で `hub_version` を確認し、ログに記録する。
作成時点の参考基準は `0.1.66-pornfun-internal-link-live-200-gate-20260607`。
ただしporn-fun Hubが別スレッドまたは別PCでバージョンアップされている場合は、その時点のlive Hub応答とサイトHub内の `startup_docs/current`、`gates/current`、`cron_prompts/current` を最新版として扱う。
`hub_version` が依頼文記載のバージョンと一致しないことだけを理由に停止しない。
停止するのは、Hub API取得不能、agent_pack/work_queue取得不能、保存API利用不可、保存後readback不成立、または必要なcurrent正本欠落の場合だけ。

# porn-fun【評価・SEX DOLL】高品質チェック

automation_id: porn-fun-nsfw-ai-4
site_id: porn-fun
workflow_id: porn-fun-sex-doll-shops-ja
content_set: porn_fun_sex_doll_shops
article_type: SEX_DOLL
role: 高品質チェック
updated_at: 20260606-v0151-portable-site-hub-contained

---

# porn-fun【評価・SEX DOLL】高品質チェック

porn-fun【評価・SEX DOLL】高品質チェック cron v0.1.66。

対象は `site_id=porn-fun` / `workflow_id=porn-fun-sex-doll-shops-ja` / `content_set=porn_fun_sex_doll_shops`。正本は現行Pornfun Hub `https://pornfun-hub.secure358.com` と、このサイトHUBフォルダ内の `startup_docs/current` / `gates/current` / `cron_prompts/current` です。cron実行cwdはautomation設定に従いますが、読むファイル・保存するGate/cron成果物はこのサイトHUB内で完結させ、サイトHUB外のGate/起動文書を必須参照にしないでください。対象外のサイト、対象外記事、旧Hub、共有Gateは触らないでください。

起動時にHub status / agent_pack / agent_work_queue を読み、サイトHUB内の `ARTICLE_QUALITY_GATE.md` / `QUALITY_VALIDATOR_CONTRACT.md` / `REFERENCE_STYLE_GATE.md` / `ROLE_FAIL_CONDITION_GATE.md` / `PRODUCTION_EVIDENCE_AND_SCORING_GATE.md` / `JAPANESE_SYNTAX_GATE.md` / `PLAIN_STYLE_AND_QA_BOX_HOTFIX_GATE.md` / `PORNFUN_CRON_TEMPLATE_GATE.md` を必要範囲で読む。細かい数値、score_cap、証跡キー、成果物パスはGate正本に従う。

担当はtask8対象の公開HTML品質チェックだけ。収集・検査・新規制作・本文修正・再公開・訂正・改善ハンドオフはしない。

高品質チェックcronは公開HTMLを再取得し、本文領域だけを抽出して全Gateを最後まで実測する。制作cronの自己採点100点、固定true、前回summaryだけを信用しない。`validator_result.json` がない、JSONが壊れている、必須キー欠落、未測定がある場合はPASS禁止。

FAILは最初の1件だけで止めない。文字数、KW、共起語、関連語、常体、SEO/H1、リード、CTA、H2/H3、Q&A、装飾、BOX、内部/外部リンク、手書き評価表、カテゴリ、保存/readback、日本語構文、NSFW/年齢/権利/プライバシー注意をすべて測定し、全FAILを `failed_gate_names` / `required_gate_failures` / `quality_delta_items` に保存する。

常体Strict: 本文・リード・Q&A・BOXに敬体が残り、公式引用やUIラベル等の例外でない場合はFAIL。`plain_style_gate` / `lead_plain_style_gate` / `body_plain_style_gate` / `qa_plain_style_gate` / `polite_form_hits_count` / `polite_form_hits` / `qa_box_exact_class_count` / `qa_box_required_structure_gate` / `validator_required_keys_present` を確認する。`japanese_syntax_gate=PASS` だけではPASSにしない。

Q&Aは公開HTML本文に `qa-box` / `qa-question` / `qa-answer` を持つ5個以上が必要。FAQ JSON-LD、JavaScript、schema、カスタムコードだけを本文Q&Aに数えない。

内部リンク数は本文手書き領域で数え、サイドバー、フッター、タグ、カテゴリ、TOC、関連記事、プラグイン生成部品を含めない。BOX数は有効な本文スタイルBOXだけを数え、Q&A、通常表、目次、辞書プラグイン表、関連記事、サイドバー、フッターを含めない。

SEX DOLL記事では、成人向けサービスとしての注意、年齢制限、権利/商用利用、プライバシー、禁止事項、決済やアカウント停止リスクの説明が読者向けに置かれているか確認する。違法・未成年・実在人物なりすまし・無断性的生成を推奨する表現はFAIL。

既存公開記事の不備を見つけても高品質チェックcronでは本文修正しない。FAIL時は訂正cron用に、全FAIL名、実測値、該当文、該当Q&A番号、修正指示、次工程、`correction_required=true` をHubへ保存する。PASS時だけtask8完了または次工程へ進める。

報告は日本語のみで、対象記事、判定、score_cap、FAIL件数、主なFAIL、保存行数、readback結果、次工程を書く。英語の内部メモや思考文を報告に混ぜない。

追加必須装飾BOX Gate(Marker: 2026-06-05_REQUIRED_DECORATIVE_BOX_CLASS_GATE): Pornfun以降の記事では、本文内の有効スタイルBOXとして `blank-box bb-tab bb-check bb-yellow`、`information-box`、`warning-box` をそれぞれ1個以上置く。いずれかが0件、本文外のみ、Q&A/表/目次/辞書プラグイン/関連記事/サイドバー/フッターのみ、空div、読者判断を助けない内容の場合はFAIL。validatorでは `required_decorative_box_class_gate`、`blank_box_bb_check_bb_yellow_count`、`information_box_count`、`warning_box_count`、`required_decorative_box_class_failures` を保存し、欠落時はPASS禁止。

## v0.1.46 後工程Gate追加

Marker: 2026-06-06_PORNFUN_LEGACY_GATE_UPGRADE

公開HTML本文領域から、公開本文境界と成人向け評価軸を実測する。Hub、cron、Gate、PASS/FAIL、Work Queue、agent_pack、作業ログ、タスク番号、301/移行などの内部運用語が本文・FAQ・CTAに出ていればFAILにする。

SEX DOLL記事で、年齢制限、料金/無料範囲、決済/退会、規約/禁止事項、権利/商用利用、プライバシー、NSFW注意が不足している場合はFAILにする。評価項目本文不足、手書き評価表/基本情報表の二重表示も訂正cronへ渡す。

FAIL時は `public_content_boundary_gate`、`forbidden_public_workflow_terms`、`adult_service_missing_items`、`quality_delta_items`、修正指示、`correction_required=true` を保存する。最初のFAILだけで止まらない。

## v0.1.66 制作以降Fail-first品質Gate

Marker: 2026-06-06_PORNFUN_PRODUCTION_ONWARD_QUALITY_CHAIN_GATE

高品質チェックcronは、上記v0.1.66 Gateを公開HTMLから再測定する。制作cronの自己採点、固定true、前回summary、件数だけのPASSを信用しない。

最初のFAILだけで止めず、4000字、リード文、Q&A、✅/⚠️、KW/共起語/関連語、H2/H3評価理由、評価スコア/基本情報の可視状態、二重手書き表、常体、H1/SEO、カテゴリ、成人向け注意、公開本文境界、必須boxを全部測る。全FAILを `failed_gate_names`、`required_gate_failures`、`quality_delta_items`、実測値、該当文、修正指示として保存する。

必須Gate違反は軽微メモにしない。PASSできない記事は `correction_required=true` として訂正cronへ渡す。

## v0.1.66 高品質チェック validator Gate Hotfix

Marker: 2026-06-06_PORNFUN_PRODUCTION_VALIDATOR_GATE_HOTFIX

高品質チェックcronも制作cronと同じバリデータを再実行してください。制作cronの100点自己申告や既存 `validator_result.json` を鵜呑みにせず、公開HTMLを読み直して差分を `quality_delta_items` に保存してください。

`validator_result.json` は porn-funサイトHUB内の `runtime\validator_results\porn-fun-sex-doll-shops-ja\{slug}\{stage}\validator_result.json` に保存してください。`stage` は `quality_check` です。

常体Strictは機械判定にしてください。公開HTML本文から「です・ます・でした・ました・でしょう・ください・ません」等を数え、`desu_masu_count` と `joutai_strict_machine_result` を保存してください。自己申告の「常体OK」だけではPASSにしません。

公開HTMLまたはプレビューHTMLを再取得し、title/H1、文体、リード文、リンク、FAQ JSON-LD、装飾、Hub readback、raw_quality_score、score_cap、final_quality_score、score_cap_reasonsを実測してください。未実測の場合はPASS禁止です。

## v0.1.66 portable site Hub contained hotfix

Marker: 2026-06-06_PORNFUN_PORTABLE_SITE_HUB_CONTAINED

Branch PC transfer assumes only this folder is carried:
`C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun`

Required startup, Gate, cron prompt, validator artifact, and runtime evidence paths must be resolvable from this site Hub folder. The automation working directory may be set outside this folder, but files that a cron must read as正本 and files that a cron must save as Gate/validator evidence must not require any external Gate mirror, representative-only path, or another site Hub.

For production onward validator artifacts, use the site-Hub-relative path:
`runtime\validator_results\porn-fun-sex-doll-shops-ja\{slug}\{stage}\validator_result.json`

Stage is one of `production`, `quality_check`, `correction`, or `improvement_handoff`.

## v0.1.66 Directory Core / 辞書プラグイン評価表 必読Gate

Marker: 2026-06-06_PORNFUN_DIRECTORY_CORE_EXPLICIT_READ_GATE

制作以降cron(production / quality_check / correction / improvement_handoff)は、起動時Gate確認で以下4資料を `gates/current` から必ず読む。読めない場合は本文制作・PASS・task8/handoffを進めず、`BLOCKED_DIRECTORY_CORE_GATE_NOT_READ` とする。

- `directory-core-full-input-public-row-gate-v1.23.md`
- `V1_23_CRON_REQUEST_RULES.md`
- `V1_24_CRON_REQUEST_RULES.md`
- `Apply-HubDirectoryCoreRatingGate.ps1`

Directory Core / 辞書プラグイン評価表が公開HTMLまたはreadbackで有効な場合、評価スコア表・基本情報表はその表示を正本として扱い、本文HTML側で手書きの評価項目表・スコア表・基本情報表を重複作成しない。ただし読者に見えている証跡は validator_result.json に保存する。

validator_result.json には、少なくとも `directory_core_gate_files_read`、`directory_core_gate_read_result`、`dictionary_score_table_present`、`manual_score_table_count`、`directory_core_public_row_gate_result`、`directory_core_rating_gate_result` を保存する。辞書表があるのに手書き表を重複作成した場合、または4資料を読まずにPASSした場合はFAILにする。

## v0.1.66 必須FAIL条件 全文明示Gate

Marker: 2026-06-06_PORNFUN_FULL_REQUIRED_FAIL_CONDITIONS_GATE

制作以降cron(production / quality_check / correction / improvement_handoff)は、以下のいずれかがある場合にPASS、task8、完了扱い、改善ハンドオフ完了扱いをしてはならない。validator_result.json と作業報告には、該当したFAIL名、実測値、修正指示、readback結果を残す。

- Search Compassなし
- 公開HTML未取得
- `validator_result.json`なし
- `validator_result.json` JSON破損
- `validator_result.json` 必須キー欠落
- validator未測定あり
- 自己採点だけのPASS
- `naturalization_rewrite_checked` の固定true
- `reference_style_checked` の固定true
- H1とSEOタイトル未区分
- 弱いSEOタイトル
- リード文1文
- リード文が短すぎ
- リード文500字超
- リード文改行なし
- リード内マーカーなし
- 右寄せ公式CTAなし
- 辞書プラグイン評価スコア表がある記事で手書き評価項目・スコア・理由表を作る
- 辞書表と重複する手書き基本情報表
- 4000字未満
- KW不足
- 共起語不足
- 関連語不足
- 常体違反
- H2ばかりでH3不足
- 評価項目H3理由不足
- Q&Aがqa-box5個未満
- qa-question不足
- qa-answer不足
- Q&A回答の敬体
- 本文内FAQ JSON-LD挿入
- 本文内JavaScript挿入
- 本文内カスタムコード挿入
- 内部リンク1〜3本以外
- 外部リンク過多
- 有効装飾BOX3個未満
- 先に結論が有効BOXでない
- 装飾黄金比率不備
- 最低足切り未満
- 件数だけでPASS
- 重要でない箇所への装飾
- 読みづらい装飾
- ✅/⚠️混在長文
- 1行に複数✅/⚠️
- 文字化け
- 公式主機能未確認のカテゴリ選択
- 主機能と違うWPカテゴリ
- 曖昧カテゴリへの推測投入
- カテゴリreadback未確認

`naturalization_rewrite_checked=true`、`reference_style_checked=true`、`pass_allowed=true` などの真偽値は、公開HTMLまたはプレビューHTMLの実測証跡、対象行、検出数、修正結果が揃うまで信用しない。固定true、自己申告true、前回結果の流用、件数だけのPASSは禁止する。

Directory Core / 辞書プラグイン評価表が有効な記事では、`dictionary_score_table_present`、`manual_score_table_count`、`directory_core_gate_files_read`、`directory_core_gate_read_result`、`directory_core_public_row_gate_result`、`directory_core_rating_gate_result` を実測保存する。辞書表と本文手書き表の重複がある場合はFAILにする。

## v0.1.66 装飾比率・CTA・KW・リード文 Gate

Marker: 2026-06-06_PORNFUN_VISUAL_KW_LEAD_GATE

制作以降cron(production / quality_check / correction / improvement_handoff)は、以下を公開HTMLまたはプレビューHTMLで実測し、validator_result.json に保存する。未測定、自己申告、件数だけのPASSは禁止する。

### 装飾比率

- 黒太文字、赤太文字、黒太文字+黄色アンダーマーカーは、記事本文量に対する装飾黄金比率で判定する。
- 最低足切りは、黒太文字6件以上、赤太文字2件以上、黒太文字+黄色アンダーマーカー4件以上。
- 黒太文字+黄色アンダーマーカーはリード文内に1件以上必要。
- validator_result.json には `black_bold_count`、`red_bold_count`、`black_bold_yellow_marker_count`、`lead_yellow_marker_count`、`decoration_golden_ratio_gate`、`decoration_ratio_values` を保存する。
- 重要でない箇所への装飾、読みづらい装飾、黄色マーカー単体、85字超の黄色アンダーマーカーはFAILまたはREPAIR。

### リード文と公式CTA

- リード文には、このページがどのようなページなのかを読者向けに自然に説明する。サービス名だけ、評価軸羅列、作業メモ、Search Compass素材の羅列は導入文としてFAIL。
- リード文は2〜3文、500字以内、導入前の判断材料を含め、黒太文字+黄色アンダーマーカーを1件以上置く。
- リード文直後、最初のH2前に次の右寄せ公式CTAを置く。
- `<p style="text-align: right;"><span class="badge badge-red">公式</span><b>:<a href="公式URL" target="_blank" rel="nofollow noopener">サービス名</a></b></p>`
- validator_result.json には `lead_page_purpose_present`、`lead_sentence_count`、`lead_chars`、`lead_yellow_marker_count`、`official_cta_right_present`、`official_cta_html_pattern_result` を保存する。

### KW・共起語・関連語

- target KW、主KW、補助KW、共起語、関連語の出現率と使用箇所を測る。
- workflow指定がない場合、target KW比率は3.0%-4.5%を目安にし、過不足はFAILまたはREPAIR。
- KW、共起語、関連語を自然に含むオリジナルH2/H3を最低1つ入れる。汎用見出しだけ、まとめ見出しだけ、H2だけでH3不足の場合はFAIL。
- validator_result.json には `target_keyword_density`、`main_keyword_count`、`support_keyword_count`、`cooccurrence_terms_used_count`、`related_terms_used_count`、`original_heading_with_kw_terms_present`、`original_heading_with_kw_terms` を保存する。

### ✅/⚠️ Gate

- ✅と⚠️は、最低でも記事内に3つずつ以上必要。
- ✅/⚠️は本文途中へ割り込ませず、原則としてリストまたは箇条書き1行1ポイントで使う。
- 1文・1段落・1BOX内に✅と⚠️を混在させる、1行に複数✅/⚠️を入れる、長文の途中へ埋め込む、数合わせで意味の薄い文に付ける場合はFAIL。
- validator_result.json には `check_mark_count`、`warning_mark_count`、`check_warning_list_style_result`、`check_warning_inline_misuse_count`、`check_warning_gate_result` を保存する。

## v0.1.66 見本URL継承Gate

Marker: 2026-06-06_PORNFUN_REFERENCE_INHERITANCE_URLS

制作・高品質チェック・訂正・改善ハンドオフは、下記の見本URL群を記事の流れと装飾の参照材料として扱う。丸写しは禁止だが、導入の流れ、先に結論を置く構成、リード後の公式CTA、H2/H3のつなぎ、評価軸の出し方、注意喚起、黒太文字・赤太文字・黒太文字+黄色アンダーマーカーの装飾比率、✅/⚠️のリスト運用を継承する。

### Reference Inheritance URLs

1. https://invest358.com/ja/errante-review/
2. https://invest358.com/ja/thinkmarkets-review/
3. https://porn-fun.com/ja/ai-exotic-review/
4. https://porn-fun.com/ja/ai-girlfriend-review/
5. https://aifan.io/ja/pixverse-ai-review/
6. https://aifan.io/ja/dream-machine-review/
7. https://aifan.io/ja/openart-ai-review/
8. https://aifan.io/ja/animon-review/
9. https://aifan.io/ja/vidu-ai-review/
10. https://aifan.io/ja/leonardo-ai-review/
11. https://aifan.io/ja/pollo-ai-review/
12. https://aifan.io/ja/crowdworks-ai-review/

### 必須運用

- 制作前に上記URLを取得できる範囲で確認し、`reference_inheritance_urls_checked` に確認済みURLを保存する。
- ライブ取得できないURLがある場合も、そのURLを消さず、取得不能理由を `reference_inheritance_unreachable_urls` に保存する。
- `reference_style_flow_notes` には、見本から継承する記事の流れを保存する。
- `reference_decoration_notes` には、見本から継承する装飾バランスを保存する。
- `reference_inheritance_result` は `PASS` / `REPAIR` / `FAIL` のいずれかで保存する。
- 見本URLを見ずに `reference_style_checked=true` だけを固定することは禁止。固定trueはFAIL。
- 記事の流れ・装飾・CTA・リード・FAQ・評価軸が見本群から明らかに外れている場合は、件数や自己採点に関係なくREPAIRまたはFAIL。

## v0.1.66 前記事artifact流用禁止Gate

Marker: 2026-06-06_PORNFUN_CROSS_ARTICLE_ARTIFACT_ISOLATION

制作・高品質チェック・訂正・改善ハンドオフは、対象article_key / slug / service_nameと一致しない前記事の基準値、validator_result.json、Directory Core値、taxonomy、meta、公開HTML、公開判定、score、score_cap、FAIL/REPAIR結果を、別記事のPASS根拠として使ってはいけない。

### FAIL/REPAIR条件

- 対象slugと異なる `validator_result.json` を現在記事のvalidator結果として読む。
- 対象slugと異なる公開HTML、preview HTML、WP post、Directory Core row、taxonomy、meta、カテゴリ、評価表、基本表、validator scoreを流用する。
- 前記事の「公開済み」「200」「validator成果物あり」を理由に、現在記事の公開HTML取得・validator実行・Directory Core readbackを省略する。
- `artifact_key`、`article_key`、`slug`、`service_name`、`stage`、`validator_result_json_path` の対応確認がない。
- `mylovely-ai` など別slugのartifactから公開基準値やDirectory Core通し方だけを抜き出して、`ourdream-ai` 等の別記事へ適用する。

上記のいずれかを検出したら、FAILまたはREPAIR として止める。修正する場合は、対象slug専用の公開/preview HTMLを取得し直し、対象slug専用のvalidator_result.jsonを作り、対象slug専用のDirectory Core readbackを確認する。

### 必須証跡

- `target_article_key`
- `target_slug`
- `target_service_name`
- `artifact_article_key`
- `artifact_slug`
- `artifact_stage`
- `artifact_slug_match`
- `validator_result_slug_match`
- `directory_core_slug_match`
- `public_or_preview_html_slug_match`
- `cross_article_artifact_reuse_detected`
- `cross_article_artifact_reuse_result`

`artifact_slug_match=true`、`validator_result_slug_match=true`、`directory_core_slug_match=true`、`public_or_preview_html_slug_match=true`、`cross_article_artifact_reuse_detected=false` を実測保存できない場合はPASS禁止。

## v0.1.66 前記事を公開基準値にしないGate

Marker: 2026-06-06_PORNFUN_CROSS_ARTICLE_ARTIFACT_FAIL_NOT_BLOCK

前の記事を公開基準値にしない。前記事artifact流用禁止Gateは、現在記事のPASS禁止条件として扱う。対象article_key / slug / service_nameと一致しない前記事の基準値、validator_result.json、Directory Core値、taxonomy、meta、公開HTML、公開判定、score、score_cap、FAIL/REPAIR結果を、別記事のPASS根拠として使ってはいけない。

### FAIL/REPAIR条件

- 対象slugと異なる `validator_result.json` を現在記事のvalidator結果として読む。
- 対象slugと異なる公開HTML、preview HTML、WP post、Directory Core row、taxonomy、meta、カテゴリ、評価表、基本表、validator scoreを流用する。
- 前記事の「公開済み」「200」「validator成果物あり」を理由に、現在記事の公開HTML取得・validator実行・Directory Core readbackを省略する。
- `artifact_key`、`article_key`、`slug`、`service_name`、`stage`、`validator_result_json_path` の対応確認がない。
- `mylovely-ai` など別slugのartifactから公開基準値やDirectory Core通し方だけを抜き出して、`ourdream-ai` 等の別記事へ適用する。

上記のいずれかを検出したら、FAILまたはREPAIRとして扱う。修正する場合は、対象slug専用の公開/preview HTMLを取得し直し、対象slug専用のvalidator_result.jsonを作り、対象slug専用のDirectory Core readbackを確認する。

## v0.1.66 SEX DOLL評価記事 既存カテゴリ固定Gate

Marker: 2026-06-06_PORNFUN_NSFW_AI_EXISTING_CATEGORY_GATE

このルールは、SEX DOLLの評価記事に関してのみ適用する。porn-fun全体、別記事種別、別workflowへ広げない。

SEX DOLLの評価記事は、既存カテゴリ/Directory Typeである `https://porn-fun.com/ja/directory-type/nsfw-ai/` に入れる。勝手に新しいカテゴリ、Directory Type、WP term、slug、曖昧カテゴリを作らない。

### 必須

- 対象記事の主カテゴリ/Directory Typeは `https://porn-fun.com/ja/directory-type/nsfw-ai/` / slug `nsfw-ai` に固定する。
- 公式主機能がSEX DOLL系の評価記事である場合だけ、この既存カテゴリへ入れる。
- 投稿・更新後にカテゴリ/Directory Type readbackを行い、既存 `nsfw-ai` に入っていることを確認する。
- `category_url=https://porn-fun.com/ja/directory-type/nsfw-ai/`、`category_slug=nsfw-ai`、`category_existing_term_used=true`、`category_new_term_created=false`、`category_readback_confirmed=true` を保存する。

### FAIL/REPAIR

- SEX DOLL評価記事で新規カテゴリ、Directory Type、WP term、slugを作る。
- SEX DOLL評価記事を `https://porn-fun.com/ja/directory-type/nsfw-ai/` 以外のカテゴリへ入れる。
- カテゴリ/Directory Type readbackを確認しない。
- 公式主機能未確認のままカテゴリを選ぶ。
- 主機能と違うWPカテゴリ/Directory Typeへ入れる。

上記のいずれかがある場合はPASS禁止。既存 `nsfw-ai` へ付け直し、readback確認後に再判定する。

## v0.1.66 リード自然文・主語述語Gate

Marker: 2026-06-06_PORNFUN_LEAD_NATURALNESS_QUALITY_GATE

高品質チェック、制作、訂正では、リード文の不自然な説明文を必ずFAIL/REPAIRにする。特に次のような文はPASS禁止。

NG例:

`OurDream AIは、チャットだけでなく画像、動画、音声、キャラクター作成まで触りたい読者向けの成人向けAI companionレビュー記事だ。`

### 何がおかしいか

- `OurDream AIは ... レビュー記事だ` となっており、サービス名を記事そのものとして扱っている。主語と述語が一致していない。
- `触りたい読者向け` は文脈上不自然で、対象も曖昧。NSFW文脈では余計な含みも出るため、リードでは使わない。
- `AI companion` のような英語混在は、公式名称や固有カテゴリとして必要な場合を除き不自然。日本語本文では `AIコンパニオン` など読者向けの表記に直す。
- `チャットだけでなく画像、動画、音声、キャラクター作成まで` の列挙だけで導入しており、「この記事が何を確認するページか」が自然に伝わらない。

### 必須判定

- サービス名を主語にしている場合、述語はサービスの説明にする。記事説明をする場合は `この記事では`、`本記事では`、`このページでは` を主語にする。
- `サービス名は ... レビュー記事だ`、`サービス名は ... 解説ページだ`、`サービス名は ... 比較記事だ` の形は、主語述語不一致としてFAIL/REPAIR。
- `触りたい`、`触れる読者`、`触ってみたい読者` など、対象が曖昧で不自然な表現はリードではFAIL/REPAIR。`確認したい`、`比較したい`、`検討したい`、`使い勝手を知りたい` などに直す。
- 英語混在、直訳調、機械的な名詞列挙、読者に向かない説明口調が残る場合はFAIL/REPAIR。
- 修正後のリードは、このページが何を確認し、読者が何を判断できるページかを自然に説明する。

### 修正文の方向

- サービス説明型: `OurDream AIは、チャットに加えて画像・動画・音声・キャラクター作成まで扱える成人向けAIコンパニオン系サービスだ。`
- 記事説明型: `この記事では、OurDream AIのチャット、画像、動画、音声、キャラクター作成の機能を確認し、料金や安全性、使いやすさまで整理する。`

### 必須証跡

- `lead_subject_predicate_result`
- `lead_service_article_confusion_detected`
- `lead_awkward_phrase_detected`
- `lead_english_mixture_detected`
- `lead_reader_facing_rewrite_done`
- `lead_naturalness_machine_result`

上記のいずれかが未測定、固定true、自己申告のみの場合はPASS禁止。公開HTMLまたはpreview HTMLのリード本文を取得して判定する。

## v0.1.66 記事全文・自然文Gate

Marker: 2026-06-06_PORNFUN_ARTICLE_NATURAL_LANGUAGE_GATE

不自然な文章の検査対象はリード文だけではない。制作、高品質チェック、訂正、改善ハンドオフでは、記事全文を読者向けの自然な日本語として検査する。本文内のどこか1箇所でも不自然文が残る場合はPASS禁止で、REPAIRまたはFAILにする。

### 検査対象

- リード文
- H2/H3直下の導入文
- 評価項目の説明文
- スコア理由文
- BOX内テキスト
- ✅/⚠️リスト
- FAQ回答
- まとめ・結論
- 公式CTA前後の文

### FAIL/REPAIR条件

- サービス名を記事そのものとして扱う。例: `OurDream AIは ... レビュー記事だ`
- サービス説明と記事説明を混ぜる。
- 主語述語がズレている。
- `〜したい読者向けのレビュー記事だ`、`触りたい読者向け`、`〜まで触れる` のような雑で不自然な締めを使う。
- 共起語、KW、機能名、素材語を並べるだけで、読者向けの文に直していない。
- `AI companion` など、公式名称でも固有表記でもない英語を雑に混ぜる。
- 見出し語をそのまま繰り返しただけで説明になっていない。
- FAQ、BOX、✅/⚠️リストが本文の焼き直しで、読者の判断材料になっていない。
- 日本語として一応通っても、読者が何を判断できるか分からない。
- 直訳調、テンプレ調、機械的な名詞接続、説明不足の短文、意味の薄い抽象文が残る。

### 制作cronの必須工程

- 本文全体を書いた後、公開/preview HTMLを取得する前に、記事全文の自然文リライト工程を1回以上行う。
- リライト後に公開HTMLまたはpreview HTMLを取得し、本文全体をセクション別に抽出する。
- `lead / h2_intro / h3_intro / score_reason / rating_item_body / box_text / check_warning_list / faq_answer / summary_conclusion / cta_context` を検査する。
- NG文がある場合は、公開・task8・PASSへ進めず、本文を修正して再検査する。

### 高品質チェックcronの必須工程

- 制作cronの自己申告や既存validatorを信用しない。
- 公開HTMLまたはpreview HTMLを再取得し、記事全文の自然文Gateを再実行する。
- どこか1箇所でも不自然文が残る場合は、品質PASS禁止。`quality_delta_items` に対象セクション、NG文、理由、修正案を保存する。

### 訂正cronの必須工程

- 指摘箇所だけでなく、同種の不自然文が本文全体に残っていないか横断確認する。
- 修正後HTMLを再取得し、記事全文の自然文Gateを再実行する。
- `article_natural_language_result=PASS` になるまで task8 へ戻さない。

### 必須証跡

- `article_natural_language_gate_version=0.1.66-pornfun-internal-link-live-200-gate-20260607`
- `article_natural_language_sections_checked`
- `article_natural_language_result`
- `article_natural_language_fail_count`
- `unnatural_sentence_items`
- `lead_naturalness_result`
- `h2_intro_naturalness_result`
- `h3_intro_naturalness_result`
- `score_reason_naturalness_result`
- `rating_item_body_naturalness_result`
- `box_text_naturalness_result`
- `check_warning_list_naturalness_result`
- `faq_answer_naturalness_result`
- `summary_conclusion_naturalness_result`
- `cta_context_naturalness_result`
- `subject_predicate_mismatch_count`
- `service_article_confusion_count`
- `keyword_stuffed_sentence_count`
- `awkward_phrase_count`
- `machine_translation_tone_count`
- `unnecessary_english_mixture_count`
- `reader_facing_rewrite_examples`

必須証跡が欠落、未測定、固定true、自己申告のみの場合はPASS禁止。公開HTMLまたはpreview HTMLから実測する。

## v0.1.66 制作cron 既公開記事No-Touch / task2消費Gate

Marker: 2026-06-07_PORNFUN_PRODUCTION_PUBLISHED_NO_TOUCH_HANDOFF_GATE

制作cronは既公開記事を触らない。対象slugに `production_publish_evidence`、`validator_result`、`task8_handoff`、公開URL、または既公開証跡がある場合、そのslugは制作済みとして扱う。制作cronは公開記事本文、公開HTML、既存validator_result.json、Directory Core、カテゴリ、WP投稿を上書き・修正・再制作してはいけない。

### 既公開・handoff済みslugで制作cronがやること

- 公開記事本文を編集しない。
- 公開HTMLをvalidator上書き目的で取得しない。
- 既存 `validator_result.json` に不足証跡を追記しない。
- Directory Core、カテゴリ、FAQ、装飾、本文、WP投稿を制作cronから直さない。
- 既存 `task8_handoff` を尊重し、task2がpendingなら `agent_task_action` の `task_done` で消費する。
- stale task2をdoneにしただけで制作runを終了してはいけない。
- stale task2消費後は `api=agent_work_queue` と `api=agent_pack` を再取得し、次の `task_code=2` / `production_ready` かつ未公開・未task8 handoffの候補を探す。
- 該当候補がある場合は、その候補で新規記事を1本制作する。
- 該当候補が0件の場合のみ、制作対象なしとして終了できる。
- 次工程は高品質チェック/訂正側に任せる。品質追加確認や自然文再判定は高品質チェック以降の役割。

### FAIL/REPAIR

- 既公開slugの公開記事本文を制作cronが修正しようとする。
- 既公開slugの公開HTMLを取得し、制作cronがvalidator_result.jsonを上書きしようとする。
- `task8_handoff` があるのに task2 pending を放置して完了する。
- task2をdoneにせず、次回制作cronに同じslugを残す。
- stale task2消費後にキューを再取得せず、候補があるのに制作runを終了する。
- 公開済み/handed-off の証跡を「制作対象」と誤判定する。

### 必須証跡

- `production_existing_public_evidence_checked`
- `production_existing_task8_handoff_checked`
- `production_public_article_no_touch=true`
- `production_validator_no_overwrite=true`
- `production_stale_task2_consumed`
- `production_stale_task2_consumed_via=agent_task_action`
- `production_next_stage_preserved=task8`
- `production_stale_task2_followup_queue_checked=true`
- `production_followup_candidate_result=selected_new_candidate|no_eligible_candidate`
- `production_followup_candidate_article_key`
- `production_no_eligible_candidate_reason`

既公開・handoff済みslugで上記が欠落している場合は、制作完了扱い禁止。公開記事を直す必要がある場合は、制作cronではなく高品質チェックまたは訂正cronの対象にする。

## v0.1.66 Q&A details exact Gate

Marker: 2026-06-07_PORNFUN_QA_DETAILS_EXACT_GATE

Q&A is PASS only when the visible article body contains 5 or more exact Q&A sets in this form:

```html
<details class="qa-box"><summary class="qa-question">QUESTION_TEXT</summary><div class="qa-answer">ANSWER_TEXT</div></details>
```

This means:

- The outer element is `details` and its class is `qa-box`.
- The question element is `summary` and its class is `qa-question`.
- The answer element is `div` and its class is `qa-answer`.
- One Q&A set has one `details.qa-box`, one `summary.qa-question`, and one `div.qa-answer`.
- `QUESTION_TEXT` and `ANSWER_TEXT` are real reader-facing text, not empty placeholders.
- Count only visible Q&A in the article body.
- Do not count FAQ JSON-LD, JavaScript, schema, custom code, TOC, related posts, plugin parts, sidebar, footer, comments, hidden elements, or class-count-only matches.

FAIL conditions:

- Fewer than 5 exact visible article-body sets.
- A `qa-box` exists but the outer element is not `details`.
- A `qa-question` exists but the element is not `summary`.
- A `qa-answer` exists but the element is not `div`.
- `qa-box`, `qa-question`, or `qa-answer` are counted from outside the article body.
- Q&A is only present as FAQ JSON-LD, JavaScript, schema, custom code, TOC, related posts, plugin parts, sidebar, footer, comments, or hidden elements.
- Q&A answers are empty, duplicated filler, a rewrite of nearby body text only, polite style, or not useful to readers.

Production cron:

- Must create 5 or more exact Q&A sets before PASS.
- Must measure public or preview HTML and save `qa_details_exact_gate=PASS`.
- Must not PASS from self-scoring, class counts only, or FAQ JSON-LD.

Quality check cron:

- Must refetch public or preview HTML.
- Must count only the exact visible article-body Q&A sets.
- If `qa_details_exact_count < 5`, save `QA_DETAILS_EXACT_GATE_FAIL` in `failed_gate_names`, `required_gate_failures`, and `quality_delta_items`.
- Must send the article to correction when this FAIL is present, even if other gates also fail.

Correction cron:

- Must repair Q&A to 5 or more exact sets.
- Must rerun the same validator after correction.
- Must not fix only one Q&A item while leaving other required FAIL items.

Required evidence:

- `qa_details_exact_gate=PASS|FAIL`
- `qa_details_exact_count`
- `qa_details_exact_required_count=5`
- `qa_details_exact_missing_count`
- `qa_details_exact_items`
- `qa_details_exact_fail_reasons`
- `qa_details_exact_body_only=true`
- `qa_details_exact_html_pattern=<details class="qa-box"><summary class="qa-question">QUESTION_TEXT</summary><div class="qa-answer">ANSWER_TEXT</div></details>`

Missing evidence, unmeasured evidence, fixed true, self-report-only PASS, or class-count-only PASS is FAIL.

## v0.1.66 Mandatory public/preview HTML measurement Gate

Marker: 2026-06-07_PORNFUN_MANDATORY_PUBLIC_HTML_MEASUREMENT_GATE

This is a production-onward no-escape Gate for porn-fun SEX DOLL review articles.

Production, quality_check, correction, and improvement_handoff must not PASS an
article unless every required article-quality rule has been measured from public
HTML or preview HTML, or from an explicit Hub readback/source artifact when the
rule cannot exist in public HTML. Self-report, fixed true, count-only PASS,
score-only PASS, "looks OK", "already checked", or "not applicable" without
evidence is FAIL.

Core rule:

- If any required item from the current porn-fun Gates is missing, unmeasured,
  JSON-broken, evidence-broken, self-scored only, fixed-true only, count-only, or
  moved to a warning instead of a required failure, the result is FAIL.
- A required FAIL cannot be hidden by `score_cap`, `final_quality_score`, or a
  narrative explanation. It must appear in `failed_gate_names`,
  `required_gate_failures`, and `quality_delta_items`.
- `pass_allowed=true`, `task8_handoff_allowed=true`, or `accepted=true` is
  forbidden unless `mandatory_public_html_measurement_gate=PASS`.

The exact Q&A structure remains mandatory. Visible article-body Q&A must contain
5 or more sets of this exact structure:

```html
<details class="qa-box"><summary class="qa-question">質問内容</summary><div class="qa-answer">回答内容</div></details>
```

Also accept the same element/class structure with real question and answer text.
FAQ JSON-LD, JavaScript, schema, TOC, related posts, plugin parts, sidebar,
footer, comments, hidden elements, or class counts alone do not count.

Required public/preview HTML measurements:

- `public_or_preview_html_refetched=true`
- `public_or_preview_html_source=public_html|preview_html`
- `public_or_preview_html_url_or_path`
- `public_or_preview_html_sha256`
- `article_body_html_extracted=true`
- `article_body_selector`
- `article_body_text_chars`
- `seo_title_h1_separated_gate`
- `seo_title_strength_gate`
- `lead_length_gate`
- `lead_marker_gate`
- `lead_natural_language_gate`
- `article_natural_language_gate`
- `official_cta_right_aligned_gate`
- `directory_plugin_rating_score_table_gate`
- `directory_plugin_basic_info_table_gate`
- `manual_score_table_absent_gate`
- `manual_basic_info_table_absent_gate`
- `body_minimum_4000_chars_gate`
- `kw_occurrence_rate_gate`
- `cooccurrence_related_terms_gate`
- `original_heading_from_kw_gate`
- `joutai_strict_machine_gate`
- `desu_masu_count`
- `h2_h3_balance_gate`
- `rating_item_h3_reason_gate`
- `qa_details_exact_gate`
- `qa_details_exact_count`
- `qa_details_exact_required_count=5`
- `faq_jsonld_body_absent_gate`
- `custom_code_body_absent_gate`
- `internal_link_count_gate`
- `external_link_overuse_gate`
- `required_decorative_box_class_gate`
- `blank_box_bb_check_bb_yellow_count`
- `information_box_count`
- `warning_box_count`
- `black_bold_usage_gate`
- `red_bold_usage_gate`
- `yellow_marker_usage_gate`
- `decoration_golden_ratio_gate`
- `checkmark_list_usage_gate`
- `warning_list_usage_gate`
- `checkmark_count_min_3`
- `warning_count_min_3`
- `inline_check_warning_forbidden_gate`
- `first_conclusion_valid_box_gate`
- `category_readback_gate`
- `nsfw_ai_existing_directory_category_gate`
- `nsfw_ai_existing_directory_type_gate`

Required non-HTML/readback/source-artifact measurements:

- `search_compass_present=true`
- `reader_intent_pack_present=true`
- `production_material_pack_present=true`
- `official_reference_urls_checked`
- `public_review_reputation_sources_checked`
- `directory_core_readback_confirmed=true`
- `wp_post_readback_confirmed=true`
- `validator_result_json_present=true`
- `validator_json_parse_gate=PASS`
- `validator_required_keys_complete=true`
- `validator_unmeasured_items=[]`
- `mandatory_gate_failures=[]`
- `mandatory_gate_fail_count=0`

Every measured item must include evidence details:

- `source`
- `selector_or_readback_key`
- `count_or_value`
- `sample`
- `measured_at`
- `html_sha256_or_artifact_sha256`
- `result=PASS|FAIL`
- `fail_reason`

Escape blockers:

- Fixed `true` without evidence details is FAIL.
- `not_applicable` without a rule-specific reason and source proof is FAIL.
- Class-count-only PASS is FAIL.
- Existing validator JSON from another slug is FAIL.
- Previous article values used as the current article baseline are FAIL.
- Production cron must not repair, overwrite, or revalidate already published or
  task8-handoff slugs; it must consume stale task2 and select a new eligible
  candidate.
- Quality_check must refetch HTML and rerun the validator. It must not trust
  production self-scoring or existing validator JSON.
- Correction must repair all required FAIL items and rerun the validator before
  returning the article to task8.

SEX DOLL category/readback:

- SEX DOLL review articles must use the existing directory category
  `https://porn-fun.com/ja/directory-category/nsfw-ai/` when directory_category
  applies.
- SEX DOLL review articles must use the existing directory type
  `https://porn-fun.com/ja/directory-type/nsfw-ai/` when directory_type applies.
- Creating or assigning `directory-type/nsfw-ai-generator/` for this workflow is
  FAIL.
- Category/type readback must be measured after save/publish.

Final validator rule:

- `mandatory_public_html_measurement_gate=PASS` only when all required measured
  gates are PASS, all required evidence keys exist, and no required FAIL remains.
- If even one required item is missing or unmeasured, set
  `mandatory_public_html_measurement_gate=FAIL`,
  `pass_allowed=false`, `correction_required=true`, and save the missing item in
  `failed_gate_names`, `required_gate_failures`, and `quality_delta_items`.

## v0.1.66 Hard-stop repair loop Gate

Marker: 2026-06-07_PORNFUN_HARD_STOP_REPAIR_LOOP_GATE

Scope: porn-fun SEX DOLL review articles, production and later.

This Gate closes the remaining escape routes. A cron is not allowed to say PASS,
task8-ready, accepted, complete, or "finished" while any required FAIL remains.

Hard FAIL names that must stop the run:

- `DIRECTORY_PLUGIN_RATING_SCORE_TABLE_MISSING`
- `DIRECTORY_PLUGIN_BASIC_INFO_TABLE_MISSING`
- `MANUAL_RATING_SCORE_TABLE_USED_INSTEAD_OF_PLUGIN`
- `MANUAL_BASIC_INFO_TABLE_USED_INSTEAD_OF_PLUGIN`
- `SEO_TITLE_H1_NOT_SEPARATED`
- `SEO_TITLE_MISSING_OR_WEAK`
- `H1_MISSING_OR_WRONG`
- `PUBLIC_HTML_MEASUREMENT_MISSING`
- `PUBLIC_HTML_MEASUREMENT_FIXED_TRUE_ONLY`
- `VALIDATOR_RESULT_JSON_MISSING_OR_BROKEN`
- `QA_DETAILS_EXACT_GATE_FAIL`
- `MANUAL_REREAD_AFTER_REPAIR_MISSING`
- `TARGET_GATE_MANUAL_FULL_REREAD_AFTER_FAIL_MISSING`
- `READER_PERSPECTIVE_RECHECK_AFTER_REPAIR_MISSING`
- `REPAIR_LOOP_STOPPED_WITH_REQUIRED_FAILS`

Dictionary plugin table hard stop:

- The article must use the directory plugin rating score table.
- The article must use the directory plugin basic info table.
- Public or preview HTML must prove both plugin tables are visible in the article
  body or directory plugin article area.
- Handwritten HTML tables, normal editor tables, ranking ad tables, pasted score
  tables, or text-only score sections are not substitutes.
- If either plugin table is missing, PASS is forbidden even when all other items
  look good.
- Required evidence:
  - `directory_plugin_rating_score_table_gate=PASS`
  - `directory_plugin_basic_info_table_gate=PASS`
  - `directory_plugin_rating_score_table_source=public_html|preview_html`
  - `directory_plugin_basic_info_table_source=public_html|preview_html`
  - `directory_plugin_rating_score_table_selector`
  - `directory_plugin_basic_info_table_selector`
  - `directory_plugin_rating_score_table_sample`
  - `directory_plugin_basic_info_table_sample`
  - `manual_score_table_count=0`
  - `manual_basic_info_table_count=0`

H1 and SEO title hard stop:

- H1 and SEO title must be separately measured from public or preview HTML.
- H1 must be the visible page H1 for the target article.
- SEO title must be the document title or SEO title metadata, not copied blindly
  from H1 without review.
- A service-name-only SEO title, weak SEO title, missing SEO title, H1/SEO title
  confusion, or unmeasured title is FAIL.
- Required evidence:
  - `h1_text`
  - `seo_title_text`
  - `h1_selector`
  - `seo_title_source=title_tag|seo_meta|preview_html`
  - `seo_title_h1_separated_gate=PASS`
  - `seo_title_strength_gate=PASS`
  - `h1_gate=PASS`
  - `seo_title_fail_reasons=[]`

Quality-check recording hard stop:

- If any of the following conditions is detected, quality_check itself is FAIL
  unless the exact FAIL name is saved in all three arrays:
  `failed_gate_names`, `required_gate_failures`, and `quality_delta_items`.
- Missing directory plugin rating score table must be recorded as
  `DIRECTORY_PLUGIN_RATING_SCORE_TABLE_MISSING`.
- Missing directory plugin basic info table must be recorded as
  `DIRECTORY_PLUGIN_BASIC_INFO_TABLE_MISSING`.
- H1 and SEO title not separated must be recorded as
  `SEO_TITLE_H1_NOT_SEPARATED`.
- Missing, weak, or service-name-only SEO title must be recorded as
  `SEO_TITLE_MISSING_OR_WEAK`.
- If quality_check detects the problem but does not record the exact FAIL name in
  all three arrays, set `QUALITY_CHECK_REQUIRED_FAIL_NOT_RECORDED`.

Production publish/task8 hard stop:

- Production cron must not publish, mark task8-ready, hand off, or complete when
  public/preview HTML measurement is missing.
- Production cron must save the public/preview measurement evidence before
  publish/task8 handoff.
- If public/preview HTML measurement is missing, set
  `PUBLIC_HTML_MEASUREMENT_MISSING` and stop.

Q&A hard stop remains:

- Visible article body must contain at least 5 exact Q&A sets using this structure:

```html
<details class="qa-box"><summary class="qa-question">質問内容</summary><div class="qa-answer">回答内容</div></details>
```

- Same element/class structure with real question and answer text is required.
- FAQ JSON-LD, JavaScript, TOC, sidebar, footer, related posts, hidden elements,
  or class counts alone do not count.

Mandatory repair loop:

1. If production, quality_check, correction, or improvement_handoff finds any
   required FAIL, it must not finish as PASS.
2. If even one FAIL appears, the cron must identify the target Gate/manual files
   related to that FAIL and reread those target Gate/manual files in full before
   deciding the repair. Partial excerpts, memory-only handling, or "already know"
   is FAIL.
3. After each repair, the cron must reread all required current porn-fun site Hub
   manuals/Gates needed for article quality from this site Hub only.
4. After rereading, the cron must check the article again from the reader's point
   of view, not only from a validator checklist.
5. It must refetch public or preview HTML, rerun the validator, and save a new
   `validator_result.json`.
6. If any required FAIL remains, repair again.
7. Repeat target Gate/manual full reread after FAIL -> repair -> manual reread ->
   reader-perspective check -> public/preview HTML measurement -> validator save
   until required FAIL count is zero.
8. Repeat manual reread -> reader-perspective check -> public/preview HTML
   measurement -> validator save -> repair until required FAIL count is zero.
9. The cron may stop only when:
   - `mandatory_gate_fail_count=0`
   - `required_gate_failures=[]`
   - `validator_unmeasured_items=[]`
   - `mandatory_public_html_measurement_gate=PASS`
   - `hard_stop_repair_loop_gate=PASS`

Required loop evidence:

- `repair_loop_iteration_count`
- `target_gate_manual_full_reread_after_fail=true`
- `target_gate_manual_full_reread_files`
- `target_gate_manual_full_reread_fail_map`
- `target_gate_manual_full_reread_completed_at`
- `manuals_reread_after_each_repair=true`
- `manual_reread_files`
- `reader_perspective_recheck_after_each_repair=true`
- `reader_perspective_recheck_items`
- `public_or_preview_html_refetched_after_each_repair=true`
- `validator_rerun_after_each_repair=true`
- `validator_result_json_path`
- `validator_result_json_sha256`
- `remaining_required_fail_count`
- `remaining_required_failures`
- `quality_check_required_fail_recording_gate=PASS|FAIL`
- `quality_check_required_fail_not_recorded_items`
- `production_publish_task8_public_html_measurement_gate=PASS|FAIL`
- `hard_stop_repair_loop_gate=PASS|FAIL`

If any of the above evidence is missing, fixed true without detail, stale from a
previous slug, or not tied to the current article slug, the result is FAIL.

Do not edit already published/task8-handoff articles in production cron. Existing
published failures belong to quality_check/correction flows, not new production.

## v0.1.66 Internal link live 200 Gate

Marker: 2026-06-07_PORNFUN_INTERNAL_LINK_LIVE_200_GATE

Scope: porn-fun SEX DOLL review articles, production and later.

Internal links must never point to unpublished, missing, 404, draft, preview-only,
wrong-language, or unverified pages. A 404 internal link is a hard FAIL.

Hard FAIL names:

- `INTERNAL_LINK_404_FOUND`
- `INTERNAL_LINK_NOT_200_FOUND`
- `INTERNAL_LINK_UNVERIFIED`
- `INTERNAL_LINK_WRONG_LANGUAGE`
- `INTERNAL_LINK_PREVIEW_OR_DRAFT_USED`
- `INTERNAL_LINK_EVIDENCE_MISSING`

Rule:

- Production, quality_check, correction, and improvement_handoff must extract all
  internal body links from public or preview HTML.
- Each internal link must be checked by live HTTP request or WordPress/Directory
  readback before PASS.
- Only HTTP 200 final URLs are allowed for normal internal links.
- 301/302/307/308 redirects are not enough unless the final URL is recorded and
  final status is 200.
- 404/410/403/500, missing response, timeout, malformed URL, wrong language, or
  draft/preview-only URL is FAIL.
- Do not add `https://porn-fun.com/ja/ai-girlfriend-review/` or any other link
  unless its live final status is 200 at validation time.
- Link count alone is not PASS. Every URL needs evidence.

Required evidence:

- `internal_link_live_check_gate=PASS|FAIL`
- `internal_link_urls`
- `internal_link_count`
- `internal_link_checked_count`
- `internal_link_status_items`
- `internal_link_failed_items`
- `internal_link_404_items`
- `internal_link_unverified_items`
- `internal_link_final_url_items`
- `internal_link_live_check_completed_at`
- `internal_link_live_check_source=public_html|preview_html`

Quality-check recording hard stop:

- If a 404 or non-200 internal link exists, the exact FAIL name must appear in all
  three arrays: `failed_gate_names`, `required_gate_failures`, and
  `quality_delta_items`.
- If quality_check sees the problem but does not record the exact FAIL name, set
  `QUALITY_CHECK_REQUIRED_FAIL_NOT_RECORDED`.

Repair loop:

- If any internal link FAIL appears, reread the target Gate/manual in full,
  repair the link, refetch public or preview HTML, rerun link checks, rerun the
  validator, and repeat until no internal link FAIL remains.
- Do not finish, publish, task8 handoff, or report PASS while internal link FAILs
  remain.

共通:
- 秘密値、APIキー、トークン、不要な個人情報を出力しない。
- `hub_version` が依頼文記載のバージョンと一致しないことだけを理由に停止しない。
- Hub API取得不能、必要なcurrent正本欠落、保存/readback不成立は報告して止める。
{workflow_scope_rules(page)}

高品質チェック専用Gate:
- 公開HTMLまたはpreview HTMLを再取得し、本文領域だけを実測する。
- 制作cronの自己採点、固定true、前回summary、件数だけのPASSを信用しない。
- validator_result.jsonなし、JSON破損、必須キー欠落、未測定項目ありはFAIL。
- 専用FAIL名を failed_gate_names / required_gate_failures / quality_delta_items に記録する。
- 本文修正・再公開はしない。FAILがある場合は訂正対象として返す。

作成後に name / id / status / rrule / model / cwd を報告する。
秘密値・認証値・APIキーは表示しない。

porn-fun【評価・SEX DOLL】 訂正cron作成依頼文

【cron個別作成依頼文】

以下のautomationを1件だけ新規作成してください。

automation名:
porn-fun【評価・SEX DOLL】訂正

対象:
- porn-fun Hubのみ
- workflow_id: `porn-fun-sex-doll-shops-ja`
- content_set: `porn_fun_sex_doll_shops`
- article_type: `SEX_DOLL`
- stage: correction
- validator成果物: `runtime\validator_results\porn-fun-sex-doll-shops-ja\{slug}\{stage}\validator_result.json`

触らない対象:
- AIfan Hub、AIfan active cron、AIfan記事
- porn-fun以外のサイトHub
- 既公開記事本文の勝手な編集
- キー、トークン、認証値
- 旧 `representative-work-gate`
- `_codex_cron_threads\AGENTS.md`
- 共有 `Autopost358\HUB\gates`

workflow混同防止:
- このcronは `workflow_id=porn-fun-sex-doll-shops-ja` / `content_set=porn_fun_sex_doll_shops` / `article_type=SEX_DOLL` だけを処理する。
- `agent_pack` / `agent_work_queue` / 保存readbackで別workflow、別content_set、別article_typeの候補が返った場合は処理しない。対象外として記録し、このcronの成功件数に数えない。
- 別workflowの収集元、カテゴリ、validator保存先、301/旧記事移行ルールを流用しない。
- validator成果物は `runtime\validator_results\porn-fun-sex-doll-shops-ja\{slug}\{stage}\validator_result.json` に保存する。別workflow用パスを使わない。
- 未実装API名や未登録API名を必須停止条件にしない。起動時確認は `api=status`、`agent_pack`、`agent_work_queue`、サイトHub内current正本で行う。

automation設定:
- kind: cron
- status: ACTIVE
- executionEnvironment: local
- cwd: `C:\Users\Public\Documents\LLC358\_codex_cron_threads`
- model: gpt-5.4
- reasoningEffort: high
- localEnvironmentConfigPath: null
- 起動回数: 1回/日
- 推奨RRULE: `FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU;BYHOUR=18;BYMINUTE=48;BYSECOND=0`
- 起動時間メモ: 候補: 18:48 JST。FAIL修正後は対象Gate/マニュアル全文再読、読者目線再チェック、validator再実行をFAILゼロまで繰り返す。

最初に読む場所:
- `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun\startup_docs\current`
- `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun\gates\current`
- `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun\cron_prompts\current\SEXDOLL`
- `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun\cron_prompts\current\WORKFLOW_SCOPE_MATRIX.md`

起動時に `api=status` で `hub_version` を確認し、ログに記録する。
作成時点の参考基準は `0.1.66-pornfun-internal-link-live-200-gate-20260607`。
ただしporn-fun Hubが別スレッドまたは別PCでバージョンアップされている場合は、その時点のlive Hub応答とサイトHub内の `startup_docs/current`、`gates/current`、`cron_prompts/current` を最新版として扱う。
`hub_version` が依頼文記載のバージョンと一致しないことだけを理由に停止しない。
停止するのは、Hub API取得不能、agent_pack/work_queue取得不能、保存API利用不可、保存後readback不成立、または必要なcurrent正本欠落の場合だけ。

実運用の1日の起動回数:
- 収集: 1回/日
- 検査: 4回/日
- 制作: 最大3回/日
- 高品質チェック: 最大5回/日
- 訂正: 1回/日
- 改善ハンドオフ: 週1回、または改善キュー発生時

起動時間設定ルール:
- 既存ACTIVE cronを確認してから設定する。
- 同時刻と前後10分を避ける。
- 00分固定を避ける。
- 分は 07 / 13 / 19 / 26 / 34 / 41 / 48 / 55 を優先候補にする。
- 朝・昼・夕・夜へ分散する。
- 制作cronは同一site/workflowの前回制作runから最低3時間あけ、同時並行させない。
- 空けられない場合は5分間隔、1分間隔、最後は同時刻の順で詰める。混雑だけで作成停止しない。
- cron実行cwdは `C:\Users\Public\Documents\LLC358\_codex_cron_threads`。
- 支社PCへ持っていく対象は `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun` だけ。このサイトHub内でGate、startup、cron prompt、runtime証跡を完結させる。

カテゴリ/収集範囲:
- SEX DOLLは旧HUBの新ジャンル評価記事ルールに従う。収集起点URLは https://theporndude.com/sex-doll-shops 。この起点からSex Dollショップ候補を拾い、公式ショップ、配送、返品、素材、価格帯、支払い、安全性、海外対応、口コミ/評判を確認する。
- SEX DOLL評価記事で制作した記事のdirectory_categoryは `sex-doll-shops` 固定。勝手に新規カテゴリを作らない。公開後は `https://porn-fun.com/ja/directory-category/sex-doll-shops/` のreadbackで確認する。directory_collectionは `adult-services`。評価軸や機能名をdirectory_categoryに入れない。これは新ジャンル評価記事であり、単体移行、旧URL移行、旧投稿アイキャッチ移行、301、移行コピーは対象外。


訂正cronの仕事:
- 高品質チェックで返されたFAILを修正する。
- 1つでもFAILが出たら、該当FAILに関係する対象Gate/マニュアルを全文読み直した証跡なしで修正・PASS・完了しない。
- 修正後、公開/preview HTMLを再取得し、validatorを再実行し、FAILゼロまで繰り返す。


【カテゴリ別差し替え】

この訂正本文は、porn-fun Hub内の現行v0.1.66 訂正cron本文を、porn-fun【評価・SEX DOLL】 用に最適化して使う。
制作cron本文ではない。訂正cron自身の仕事から逃げないための専用詳細本文として扱う。

- workflow_id: `porn-fun-sex-doll-shops-ja`
- content_set: `porn_fun_sex_doll_shops`
- article_kind: `evaluation_score_dictionary_new_genre`
- 対象範囲: SEX DOLLは旧HUBの新ジャンル評価記事ルールに従う。収集起点URLは https://theporndude.com/sex-doll-shops 。この起点からSex Dollショップ候補を拾い、公式ショップ、配送、返品、素材、価格帯、支払い、安全性、海外対応、口コミ/評判を確認する。
- カテゴリ規則: SEX DOLL評価記事で制作した記事のdirectory_categoryは `sex-doll-shops` 固定。勝手に新規カテゴリを作らない。公開後は `https://porn-fun.com/ja/directory-category/sex-doll-shops/` のreadbackで確認する。directory_collectionは `adult-services`。評価軸や機能名をdirectory_categoryに入れない。これは新ジャンル評価記事であり、単体移行、旧URL移行、旧投稿アイキャッチ移行、301、移行コピーは対象外。
- Hub正本: `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun`
- cron実行cwd: `C:\Users\Public\Documents\LLC358\_codex_cron_threads`

起動時に `api=status` で `hub_version` を確認し、ログに記録する。
作成時点の参考基準は `0.1.66-pornfun-internal-link-live-200-gate-20260607`。
ただしporn-fun Hubが別スレッドまたは別PCでバージョンアップされている場合は、その時点のlive Hub応答とサイトHub内の `startup_docs/current`、`gates/current`、`cron_prompts/current` を最新版として扱う。
`hub_version` が依頼文記載のバージョンと一致しないことだけを理由に停止しない。
停止するのは、Hub API取得不能、agent_pack/work_queue取得不能、保存API利用不可、保存後readback不成立、または必要なcurrent正本欠落の場合だけ。

# porn-fun【評価・SEX DOLL】訂正

automation_id: porn-fun-nsfw-ai-5
site_id: porn-fun
workflow_id: porn-fun-sex-doll-shops-ja
content_set: porn_fun_sex_doll_shops
article_type: SEX_DOLL
role: 訂正
updated_at: 20260606-v0151-portable-site-hub-contained

---

# porn-fun【評価・SEX DOLL】訂正

porn-fun【評価・SEX DOLL】訂正 cron v0.1.66。

対象は `site_id=porn-fun` / `workflow_id=porn-fun-sex-doll-shops-ja` / `content_set=porn_fun_sex_doll_shops`。正本は現行Pornfun Hub `https://pornfun-hub.secure358.com` と、このサイトHUBフォルダ内の `startup_docs/current` / `gates/current` / `cron_prompts/current` です。cron実行cwdはautomation設定に従いますが、読むファイル・保存するGate/cron成果物はこのサイトHUB内で完結させ、サイトHUB外のGate/起動文書を必須参照にしないでください。対象外のサイト、対象外記事、旧Hub、共有Gateは触らないでください。

起動時にHub status / agent_pack / agent_work_queue を読み、サイトHUB内の `ARTICLE_QUALITY_GATE.md` / `QUALITY_VALIDATOR_CONTRACT.md` / `REFERENCE_STYLE_GATE.md` / `ROLE_FAIL_CONDITION_GATE.md` / `PRODUCTION_EVIDENCE_AND_SCORING_GATE.md` / `JAPANESE_SYNTAX_GATE.md` / `PLAIN_STYLE_AND_QA_BOX_HOTFIX_GATE.md` / `PORNFUN_CRON_TEMPLATE_GATE.md` を必要範囲で読む。細かい数値、score_cap、証跡キー、成果物パスはGate正本に従う。

担当は高品質チェックまたは改善ハンドオフから渡された既存公開記事の訂正だけ。収集・検査・新規制作・新規公開・改善ハンドオフはしない。

訂正cronは既存公開記事を修正できる唯一の本文修正担当である。ただし、訂正対象は `quality_delta_items` / `failed_gate_names` / `required_gate_failures` / `correction_required=true` で渡されたものに限る。制作cronが担当すべき新規記事作成はしない。

訂正対象は `quality_delta_items` の全件。1件だけ直して終わらない。手書き評価表、リード文、日本語構文、装飾、BOX、Q&A、内部リンク、KW、常体、SEO/H1、H2/H3、カテゴリ、外部リンク、NSFW/年齢/権利/プライバシー注意、保存/readbackの残FAILを同じ記事内でまとめて直す。

常体Strict: 本文・リード・Q&A・BOXに敬体が残り、公式引用やUIラベル等の例外でない場合は修正必須。1文だけでなく、該当段落全体を読者目線の常体へ直す。

Q&Aは公開HTML本文に `qa-box` / `qa-question` / `qa-answer` を持つ5個以上が必要。FAQ JSON-LD、JavaScript、schema、カスタムコードだけを本文Q&Aに数えない。Q&A回答も常体に直す。

装飾やBOXは数合わせで増やさず、読者の判断を助ける内容にする。手書き評価表は禁止。辞書プラグインの評価スコア表がある記事では、評価項目・スコア・理由を表形式で再掲しない。評価理由はH2/H3本文の文章で説明する。

SEX DOLLでは、違法・未成年・実在人物なりすまし・無断性的生成を推奨しない。年齢制限、権利、プライバシー、禁止事項、決済/アカウントリスクなどの注意を自然な読者向け表現へ直す。

修正後は公開HTML validatorを再実行し、`validator_result.json`、修正差分、accepted/readbackを保存する。必須GateがPASSでない場合は完了扱いにしない。必須FAILが残る場合は再訂正または改善ハンドオフへ渡す。

報告は日本語のみで、対象記事、修正内容、修正前後の主なFAIL、validator結果、保存行数、readback結果、次工程を書く。英語の内部メモや思考文を報告に混ぜない。

追加必須装飾BOX Gate(Marker: 2026-06-05_REQUIRED_DECORATIVE_BOX_CLASS_GATE): Pornfun以降の記事では、本文内の有効スタイルBOXとして `blank-box bb-tab bb-check bb-yellow`、`information-box`、`warning-box` をそれぞれ1個以上置く。いずれかが0件、本文外のみ、Q&A/表/目次/辞書プラグイン/関連記事/サイドバー/フッターのみ、空div、読者判断を助けない内容の場合はFAIL。validatorでは `required_decorative_box_class_gate`、`blank_box_bb_check_bb_yellow_count`、`information_box_count`、`warning_box_count`、`required_decorative_box_class_failures` を保存し、欠落時はPASS禁止。

## v0.1.46 Task10/訂正Gate追加

Marker: 2026-06-06_PORNFUN_LEGACY_GATE_UPGRADE

訂正対象は `task10/FAILキュー` という名前だけで0件判定しない。Work Queue、Tasks、References、FactChecks、9-A/9-B returned、`quality_fail`、`correction_required`、`check_status=ready/fail/failed` を、site/workflow/content_setで絞って横断確認する。

FAIL原因が本文、FAQ、冒頭構成、内部運用語混入、成人向け注意不足にある場合、第一手は本文修正にする。設定側変更だけで終わらない。Hub、cron、Gate、PASS/FAIL、Work Queue、agent_pack、作業ログ、タスク番号、301/移行などの内部運用語は公開本文から削除し、読者向け表現へ直す。

修正後は公開HTML validatorを再実行し、`validator_result.json`、修正差分、accepted/readback、残FAIL有無を保存する。終了状態は PASS / FAIL_REQUEUED / BLOCKED_HUB_AUTH / BLOCKED_WP_AUTH / BLOCKED_WP_WRITE / BLOCKED_LAYOUT_RISK / BLOCKED_MISSING_TARGET のいずれかにし、ローディング継続や対象なし誤判定で終わらない。

## v0.1.66 制作以降Fail-first品質Gate

Marker: 2026-06-06_PORNFUN_PRODUCTION_ONWARD_QUALITY_CHAIN_GATE

訂正cronは、上記v0.1.66 Gateで落ちた既存公開記事だけを訂正する。`quality_delta_items` / `failed_gate_names` / `required_gate_failures` / `correction_required=true` で渡された全項目を、同じ記事内でまとめて直す。

1件だけ、1文だけ、1Gateだけ直して完了しない。4000字、リード文、Q&A、✅/⚠️、KW/共起語/関連語、H2/H3評価理由、評価スコア/基本情報の可視状態、二重手書き表、常体、H1/SEO、成人向け注意、公開本文境界、必須boxを再測定する。

修正後は公開HTML validatorを再実行し、`validator_result.json`、修正差分、accepted/readback、残FAIL有無を保存する。必須GateがPASSでない場合は完了扱いにしない。

## v0.1.66 訂正 validator Gate Hotfix

Marker: 2026-06-06_PORNFUN_PRODUCTION_VALIDATOR_GATE_HOTFIX

訂正cronも修正後に同じバリデータを再実行してください。修正済みHTMLの `validator_result.json` をHubへ保存し、`validator_final_score` と FAIL/REPAIR 残件を確認してから task8 へ戻してください。

`validator_result.json` は porn-funサイトHUB内の `runtime\validator_results\porn-fun-sex-doll-shops-ja\{slug}\{stage}\validator_result.json` に保存してください。`stage` は `correction` です。

常体Strictは機械判定にしてください。公開HTML本文から「です・ます・でした・ました・でしょう・ください・ません」等を数え、`desu_masu_count` と `joutai_strict_machine_result` を保存してください。自己申告の「常体OK」だけではPASSにしません。

必須証跡キーが欠ける、`validator_result_json_present=true` でない、`validator_final_score` が未測定、FAIL/REPAIR残件がある場合、task8へ戻さないでください。

## v0.1.66 portable site Hub contained hotfix

Marker: 2026-06-06_PORNFUN_PORTABLE_SITE_HUB_CONTAINED

Branch PC transfer assumes only this folder is carried:
`C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun`

Required startup, Gate, cron prompt, validator artifact, and runtime evidence paths must be resolvable from this site Hub folder. The automation working directory may be set outside this folder, but files that a cron must read as正本 and files that a cron must save as Gate/validator evidence must not require any external Gate mirror, representative-only path, or another site Hub.

For production onward validator artifacts, use the site-Hub-relative path:
`runtime\validator_results\porn-fun-sex-doll-shops-ja\{slug}\{stage}\validator_result.json`

Stage is one of `production`, `quality_check`, `correction`, or `improvement_handoff`.

## v0.1.66 Directory Core / 辞書プラグイン評価表 必読Gate

Marker: 2026-06-06_PORNFUN_DIRECTORY_CORE_EXPLICIT_READ_GATE

制作以降cron(production / quality_check / correction / improvement_handoff)は、起動時Gate確認で以下4資料を `gates/current` から必ず読む。読めない場合は本文制作・PASS・task8/handoffを進めず、`BLOCKED_DIRECTORY_CORE_GATE_NOT_READ` とする。

- `directory-core-full-input-public-row-gate-v1.23.md`
- `V1_23_CRON_REQUEST_RULES.md`
- `V1_24_CRON_REQUEST_RULES.md`
- `Apply-HubDirectoryCoreRatingGate.ps1`

Directory Core / 辞書プラグイン評価表が公開HTMLまたはreadbackで有効な場合、評価スコア表・基本情報表はその表示を正本として扱い、本文HTML側で手書きの評価項目表・スコア表・基本情報表を重複作成しない。ただし読者に見えている証跡は validator_result.json に保存する。

validator_result.json には、少なくとも `directory_core_gate_files_read`、`directory_core_gate_read_result`、`dictionary_score_table_present`、`manual_score_table_count`、`directory_core_public_row_gate_result`、`directory_core_rating_gate_result` を保存する。辞書表があるのに手書き表を重複作成した場合、または4資料を読まずにPASSした場合はFAILにする。

## v0.1.66 必須FAIL条件 全文明示Gate

Marker: 2026-06-06_PORNFUN_FULL_REQUIRED_FAIL_CONDITIONS_GATE

制作以降cron(production / quality_check / correction / improvement_handoff)は、以下のいずれかがある場合にPASS、task8、完了扱い、改善ハンドオフ完了扱いをしてはならない。validator_result.json と作業報告には、該当したFAIL名、実測値、修正指示、readback結果を残す。

- Search Compassなし
- 公開HTML未取得
- `validator_result.json`なし
- `validator_result.json` JSON破損
- `validator_result.json` 必須キー欠落
- validator未測定あり
- 自己採点だけのPASS
- `naturalization_rewrite_checked` の固定true
- `reference_style_checked` の固定true
- H1とSEOタイトル未区分
- 弱いSEOタイトル
- リード文1文
- リード文が短すぎ
- リード文500字超
- リード文改行なし
- リード内マーカーなし
- 右寄せ公式CTAなし
- 辞書プラグイン評価スコア表がある記事で手書き評価項目・スコア・理由表を作る
- 辞書表と重複する手書き基本情報表
- 4000字未満
- KW不足
- 共起語不足
- 関連語不足
- 常体違反
- H2ばかりでH3不足
- 評価項目H3理由不足
- Q&Aがqa-box5個未満
- qa-question不足
- qa-answer不足
- Q&A回答の敬体
- 本文内FAQ JSON-LD挿入
- 本文内JavaScript挿入
- 本文内カスタムコード挿入
- 内部リンク1〜3本以外
- 外部リンク過多
- 有効装飾BOX3個未満
- 先に結論が有効BOXでない
- 装飾黄金比率不備
- 最低足切り未満
- 件数だけでPASS
- 重要でない箇所への装飾
- 読みづらい装飾
- ✅/⚠️混在長文
- 1行に複数✅/⚠️
- 文字化け
- 公式主機能未確認のカテゴリ選択
- 主機能と違うWPカテゴリ
- 曖昧カテゴリへの推測投入
- カテゴリreadback未確認

`naturalization_rewrite_checked=true`、`reference_style_checked=true`、`pass_allowed=true` などの真偽値は、公開HTMLまたはプレビューHTMLの実測証跡、対象行、検出数、修正結果が揃うまで信用しない。固定true、自己申告true、前回結果の流用、件数だけのPASSは禁止する。

Directory Core / 辞書プラグイン評価表が有効な記事では、`dictionary_score_table_present`、`manual_score_table_count`、`directory_core_gate_files_read`、`directory_core_gate_read_result`、`directory_core_public_row_gate_result`、`directory_core_rating_gate_result` を実測保存する。辞書表と本文手書き表の重複がある場合はFAILにする。

## v0.1.66 装飾比率・CTA・KW・リード文 Gate

Marker: 2026-06-06_PORNFUN_VISUAL_KW_LEAD_GATE

制作以降cron(production / quality_check / correction / improvement_handoff)は、以下を公開HTMLまたはプレビューHTMLで実測し、validator_result.json に保存する。未測定、自己申告、件数だけのPASSは禁止する。

### 装飾比率

- 黒太文字、赤太文字、黒太文字+黄色アンダーマーカーは、記事本文量に対する装飾黄金比率で判定する。
- 最低足切りは、黒太文字6件以上、赤太文字2件以上、黒太文字+黄色アンダーマーカー4件以上。
- 黒太文字+黄色アンダーマーカーはリード文内に1件以上必要。
- validator_result.json には `black_bold_count`、`red_bold_count`、`black_bold_yellow_marker_count`、`lead_yellow_marker_count`、`decoration_golden_ratio_gate`、`decoration_ratio_values` を保存する。
- 重要でない箇所への装飾、読みづらい装飾、黄色マーカー単体、85字超の黄色アンダーマーカーはFAILまたはREPAIR。

### リード文と公式CTA

- リード文には、このページがどのようなページなのかを読者向けに自然に説明する。サービス名だけ、評価軸羅列、作業メモ、Search Compass素材の羅列は導入文としてFAIL。
- リード文は2〜3文、500字以内、導入前の判断材料を含め、黒太文字+黄色アンダーマーカーを1件以上置く。
- リード文直後、最初のH2前に次の右寄せ公式CTAを置く。
- `<p style="text-align: right;"><span class="badge badge-red">公式</span><b>:<a href="公式URL" target="_blank" rel="nofollow noopener">サービス名</a></b></p>`
- validator_result.json には `lead_page_purpose_present`、`lead_sentence_count`、`lead_chars`、`lead_yellow_marker_count`、`official_cta_right_present`、`official_cta_html_pattern_result` を保存する。

### KW・共起語・関連語

- target KW、主KW、補助KW、共起語、関連語の出現率と使用箇所を測る。
- workflow指定がない場合、target KW比率は3.0%-4.5%を目安にし、過不足はFAILまたはREPAIR。
- KW、共起語、関連語を自然に含むオリジナルH2/H3を最低1つ入れる。汎用見出しだけ、まとめ見出しだけ、H2だけでH3不足の場合はFAIL。
- validator_result.json には `target_keyword_density`、`main_keyword_count`、`support_keyword_count`、`cooccurrence_terms_used_count`、`related_terms_used_count`、`original_heading_with_kw_terms_present`、`original_heading_with_kw_terms` を保存する。

### ✅/⚠️ Gate

- ✅と⚠️は、最低でも記事内に3つずつ以上必要。
- ✅/⚠️は本文途中へ割り込ませず、原則としてリストまたは箇条書き1行1ポイントで使う。
- 1文・1段落・1BOX内に✅と⚠️を混在させる、1行に複数✅/⚠️を入れる、長文の途中へ埋め込む、数合わせで意味の薄い文に付ける場合はFAIL。
- validator_result.json には `check_mark_count`、`warning_mark_count`、`check_warning_list_style_result`、`check_warning_inline_misuse_count`、`check_warning_gate_result` を保存する。

## v0.1.66 見本URL継承Gate

Marker: 2026-06-06_PORNFUN_REFERENCE_INHERITANCE_URLS

制作・高品質チェック・訂正・改善ハンドオフは、下記の見本URL群を記事の流れと装飾の参照材料として扱う。丸写しは禁止だが、導入の流れ、先に結論を置く構成、リード後の公式CTA、H2/H3のつなぎ、評価軸の出し方、注意喚起、黒太文字・赤太文字・黒太文字+黄色アンダーマーカーの装飾比率、✅/⚠️のリスト運用を継承する。

### Reference Inheritance URLs

1. https://invest358.com/ja/errante-review/
2. https://invest358.com/ja/thinkmarkets-review/
3. https://porn-fun.com/ja/ai-exotic-review/
4. https://porn-fun.com/ja/ai-girlfriend-review/
5. https://aifan.io/ja/pixverse-ai-review/
6. https://aifan.io/ja/dream-machine-review/
7. https://aifan.io/ja/openart-ai-review/
8. https://aifan.io/ja/animon-review/
9. https://aifan.io/ja/vidu-ai-review/
10. https://aifan.io/ja/leonardo-ai-review/
11. https://aifan.io/ja/pollo-ai-review/
12. https://aifan.io/ja/crowdworks-ai-review/

### 必須運用

- 制作前に上記URLを取得できる範囲で確認し、`reference_inheritance_urls_checked` に確認済みURLを保存する。
- ライブ取得できないURLがある場合も、そのURLを消さず、取得不能理由を `reference_inheritance_unreachable_urls` に保存する。
- `reference_style_flow_notes` には、見本から継承する記事の流れを保存する。
- `reference_decoration_notes` には、見本から継承する装飾バランスを保存する。
- `reference_inheritance_result` は `PASS` / `REPAIR` / `FAIL` のいずれかで保存する。
- 見本URLを見ずに `reference_style_checked=true` だけを固定することは禁止。固定trueはFAIL。
- 記事の流れ・装飾・CTA・リード・FAQ・評価軸が見本群から明らかに外れている場合は、件数や自己採点に関係なくREPAIRまたはFAIL。

## v0.1.66 前記事artifact流用禁止Gate

Marker: 2026-06-06_PORNFUN_CROSS_ARTICLE_ARTIFACT_ISOLATION

制作・高品質チェック・訂正・改善ハンドオフは、対象article_key / slug / service_nameと一致しない前記事の基準値、validator_result.json、Directory Core値、taxonomy、meta、公開HTML、公開判定、score、score_cap、FAIL/REPAIR結果を、別記事のPASS根拠として使ってはいけない。

### FAIL/REPAIR条件

- 対象slugと異なる `validator_result.json` を現在記事のvalidator結果として読む。
- 対象slugと異なる公開HTML、preview HTML、WP post、Directory Core row、taxonomy、meta、カテゴリ、評価表、基本表、validator scoreを流用する。
- 前記事の「公開済み」「200」「validator成果物あり」を理由に、現在記事の公開HTML取得・validator実行・Directory Core readbackを省略する。
- `artifact_key`、`article_key`、`slug`、`service_name`、`stage`、`validator_result_json_path` の対応確認がない。
- `mylovely-ai` など別slugのartifactから公開基準値やDirectory Core通し方だけを抜き出して、`ourdream-ai` 等の別記事へ適用する。

上記のいずれかを検出したら、FAILまたはREPAIR として止める。修正する場合は、対象slug専用の公開/preview HTMLを取得し直し、対象slug専用のvalidator_result.jsonを作り、対象slug専用のDirectory Core readbackを確認する。

### 必須証跡

- `target_article_key`
- `target_slug`
- `target_service_name`
- `artifact_article_key`
- `artifact_slug`
- `artifact_stage`
- `artifact_slug_match`
- `validator_result_slug_match`
- `directory_core_slug_match`
- `public_or_preview_html_slug_match`
- `cross_article_artifact_reuse_detected`
- `cross_article_artifact_reuse_result`

`artifact_slug_match=true`、`validator_result_slug_match=true`、`directory_core_slug_match=true`、`public_or_preview_html_slug_match=true`、`cross_article_artifact_reuse_detected=false` を実測保存できない場合はPASS禁止。

## v0.1.66 前記事を公開基準値にしないGate

Marker: 2026-06-06_PORNFUN_CROSS_ARTICLE_ARTIFACT_FAIL_NOT_BLOCK

前の記事を公開基準値にしない。前記事artifact流用禁止Gateは、現在記事のPASS禁止条件として扱う。対象article_key / slug / service_nameと一致しない前記事の基準値、validator_result.json、Directory Core値、taxonomy、meta、公開HTML、公開判定、score、score_cap、FAIL/REPAIR結果を、別記事のPASS根拠として使ってはいけない。

### FAIL/REPAIR条件

- 対象slugと異なる `validator_result.json` を現在記事のvalidator結果として読む。
- 対象slugと異なる公開HTML、preview HTML、WP post、Directory Core row、taxonomy、meta、カテゴリ、評価表、基本表、validator scoreを流用する。
- 前記事の「公開済み」「200」「validator成果物あり」を理由に、現在記事の公開HTML取得・validator実行・Directory Core readbackを省略する。
- `artifact_key`、`article_key`、`slug`、`service_name`、`stage`、`validator_result_json_path` の対応確認がない。
- `mylovely-ai` など別slugのartifactから公開基準値やDirectory Core通し方だけを抜き出して、`ourdream-ai` 等の別記事へ適用する。

上記のいずれかを検出したら、FAILまたはREPAIRとして扱う。修正する場合は、対象slug専用の公開/preview HTMLを取得し直し、対象slug専用のvalidator_result.jsonを作り、対象slug専用のDirectory Core readbackを確認する。

## v0.1.66 SEX DOLL評価記事 既存カテゴリ固定Gate

Marker: 2026-06-06_PORNFUN_NSFW_AI_EXISTING_CATEGORY_GATE

このルールは、SEX DOLLの評価記事に関してのみ適用する。porn-fun全体、別記事種別、別workflowへ広げない。

SEX DOLLの評価記事は、既存カテゴリ/Directory Typeである `https://porn-fun.com/ja/directory-type/nsfw-ai/` に入れる。勝手に新しいカテゴリ、Directory Type、WP term、slug、曖昧カテゴリを作らない。

### 必須

- 対象記事の主カテゴリ/Directory Typeは `https://porn-fun.com/ja/directory-type/nsfw-ai/` / slug `nsfw-ai` に固定する。
- 公式主機能がSEX DOLL系の評価記事である場合だけ、この既存カテゴリへ入れる。
- 投稿・更新後にカテゴリ/Directory Type readbackを行い、既存 `nsfw-ai` に入っていることを確認する。
- `category_url=https://porn-fun.com/ja/directory-type/nsfw-ai/`、`category_slug=nsfw-ai`、`category_existing_term_used=true`、`category_new_term_created=false`、`category_readback_confirmed=true` を保存する。

### FAIL/REPAIR

- SEX DOLL評価記事で新規カテゴリ、Directory Type、WP term、slugを作る。
- SEX DOLL評価記事を `https://porn-fun.com/ja/directory-type/nsfw-ai/` 以外のカテゴリへ入れる。
- カテゴリ/Directory Type readbackを確認しない。
- 公式主機能未確認のままカテゴリを選ぶ。
- 主機能と違うWPカテゴリ/Directory Typeへ入れる。

上記のいずれかがある場合はPASS禁止。既存 `nsfw-ai` へ付け直し、readback確認後に再判定する。

## v0.1.66 リード自然文・主語述語Gate

Marker: 2026-06-06_PORNFUN_LEAD_NATURALNESS_QUALITY_GATE

高品質チェック、制作、訂正では、リード文の不自然な説明文を必ずFAIL/REPAIRにする。特に次のような文はPASS禁止。

NG例:

`OurDream AIは、チャットだけでなく画像、動画、音声、キャラクター作成まで触りたい読者向けの成人向けAI companionレビュー記事だ。`

### 何がおかしいか

- `OurDream AIは ... レビュー記事だ` となっており、サービス名を記事そのものとして扱っている。主語と述語が一致していない。
- `触りたい読者向け` は文脈上不自然で、対象も曖昧。NSFW文脈では余計な含みも出るため、リードでは使わない。
- `AI companion` のような英語混在は、公式名称や固有カテゴリとして必要な場合を除き不自然。日本語本文では `AIコンパニオン` など読者向けの表記に直す。
- `チャットだけでなく画像、動画、音声、キャラクター作成まで` の列挙だけで導入しており、「この記事が何を確認するページか」が自然に伝わらない。

### 必須判定

- サービス名を主語にしている場合、述語はサービスの説明にする。記事説明をする場合は `この記事では`、`本記事では`、`このページでは` を主語にする。
- `サービス名は ... レビュー記事だ`、`サービス名は ... 解説ページだ`、`サービス名は ... 比較記事だ` の形は、主語述語不一致としてFAIL/REPAIR。
- `触りたい`、`触れる読者`、`触ってみたい読者` など、対象が曖昧で不自然な表現はリードではFAIL/REPAIR。`確認したい`、`比較したい`、`検討したい`、`使い勝手を知りたい` などに直す。
- 英語混在、直訳調、機械的な名詞列挙、読者に向かない説明口調が残る場合はFAIL/REPAIR。
- 修正後のリードは、このページが何を確認し、読者が何を判断できるページかを自然に説明する。

### 修正文の方向

- サービス説明型: `OurDream AIは、チャットに加えて画像・動画・音声・キャラクター作成まで扱える成人向けAIコンパニオン系サービスだ。`
- 記事説明型: `この記事では、OurDream AIのチャット、画像、動画、音声、キャラクター作成の機能を確認し、料金や安全性、使いやすさまで整理する。`

### 必須証跡

- `lead_subject_predicate_result`
- `lead_service_article_confusion_detected`
- `lead_awkward_phrase_detected`
- `lead_english_mixture_detected`
- `lead_reader_facing_rewrite_done`
- `lead_naturalness_machine_result`

上記のいずれかが未測定、固定true、自己申告のみの場合はPASS禁止。公開HTMLまたはpreview HTMLのリード本文を取得して判定する。

## v0.1.66 記事全文・自然文Gate

Marker: 2026-06-06_PORNFUN_ARTICLE_NATURAL_LANGUAGE_GATE

不自然な文章の検査対象はリード文だけではない。制作、高品質チェック、訂正、改善ハンドオフでは、記事全文を読者向けの自然な日本語として検査する。本文内のどこか1箇所でも不自然文が残る場合はPASS禁止で、REPAIRまたはFAILにする。

### 検査対象

- リード文
- H2/H3直下の導入文
- 評価項目の説明文
- スコア理由文
- BOX内テキスト
- ✅/⚠️リスト
- FAQ回答
- まとめ・結論
- 公式CTA前後の文

### FAIL/REPAIR条件

- サービス名を記事そのものとして扱う。例: `OurDream AIは ... レビュー記事だ`
- サービス説明と記事説明を混ぜる。
- 主語述語がズレている。
- `〜したい読者向けのレビュー記事だ`、`触りたい読者向け`、`〜まで触れる` のような雑で不自然な締めを使う。
- 共起語、KW、機能名、素材語を並べるだけで、読者向けの文に直していない。
- `AI companion` など、公式名称でも固有表記でもない英語を雑に混ぜる。
- 見出し語をそのまま繰り返しただけで説明になっていない。
- FAQ、BOX、✅/⚠️リストが本文の焼き直しで、読者の判断材料になっていない。
- 日本語として一応通っても、読者が何を判断できるか分からない。
- 直訳調、テンプレ調、機械的な名詞接続、説明不足の短文、意味の薄い抽象文が残る。

### 制作cronの必須工程

- 本文全体を書いた後、公開/preview HTMLを取得する前に、記事全文の自然文リライト工程を1回以上行う。
- リライト後に公開HTMLまたはpreview HTMLを取得し、本文全体をセクション別に抽出する。
- `lead / h2_intro / h3_intro / score_reason / rating_item_body / box_text / check_warning_list / faq_answer / summary_conclusion / cta_context` を検査する。
- NG文がある場合は、公開・task8・PASSへ進めず、本文を修正して再検査する。

### 高品質チェックcronの必須工程

- 制作cronの自己申告や既存validatorを信用しない。
- 公開HTMLまたはpreview HTMLを再取得し、記事全文の自然文Gateを再実行する。
- どこか1箇所でも不自然文が残る場合は、品質PASS禁止。`quality_delta_items` に対象セクション、NG文、理由、修正案を保存する。

### 訂正cronの必須工程

- 指摘箇所だけでなく、同種の不自然文が本文全体に残っていないか横断確認する。
- 修正後HTMLを再取得し、記事全文の自然文Gateを再実行する。
- `article_natural_language_result=PASS` になるまで task8 へ戻さない。

### 必須証跡

- `article_natural_language_gate_version=0.1.66-pornfun-internal-link-live-200-gate-20260607`
- `article_natural_language_sections_checked`
- `article_natural_language_result`
- `article_natural_language_fail_count`
- `unnatural_sentence_items`
- `lead_naturalness_result`
- `h2_intro_naturalness_result`
- `h3_intro_naturalness_result`
- `score_reason_naturalness_result`
- `rating_item_body_naturalness_result`
- `box_text_naturalness_result`
- `check_warning_list_naturalness_result`
- `faq_answer_naturalness_result`
- `summary_conclusion_naturalness_result`
- `cta_context_naturalness_result`
- `subject_predicate_mismatch_count`
- `service_article_confusion_count`
- `keyword_stuffed_sentence_count`
- `awkward_phrase_count`
- `machine_translation_tone_count`
- `unnecessary_english_mixture_count`
- `reader_facing_rewrite_examples`

必須証跡が欠落、未測定、固定true、自己申告のみの場合はPASS禁止。公開HTMLまたはpreview HTMLから実測する。

## v0.1.66 制作cron 既公開記事No-Touch / task2消費Gate

Marker: 2026-06-07_PORNFUN_PRODUCTION_PUBLISHED_NO_TOUCH_HANDOFF_GATE

制作cronは既公開記事を触らない。対象slugに `production_publish_evidence`、`validator_result`、`task8_handoff`、公開URL、または既公開証跡がある場合、そのslugは制作済みとして扱う。制作cronは公開記事本文、公開HTML、既存validator_result.json、Directory Core、カテゴリ、WP投稿を上書き・修正・再制作してはいけない。

### 既公開・handoff済みslugで制作cronがやること

- 公開記事本文を編集しない。
- 公開HTMLをvalidator上書き目的で取得しない。
- 既存 `validator_result.json` に不足証跡を追記しない。
- Directory Core、カテゴリ、FAQ、装飾、本文、WP投稿を制作cronから直さない。
- 既存 `task8_handoff` を尊重し、task2がpendingなら `agent_task_action` の `task_done` で消費する。
- stale task2をdoneにしただけで制作runを終了してはいけない。
- stale task2消費後は `api=agent_work_queue` と `api=agent_pack` を再取得し、次の `task_code=2` / `production_ready` かつ未公開・未task8 handoffの候補を探す。
- 該当候補がある場合は、その候補で新規記事を1本制作する。
- 該当候補が0件の場合のみ、制作対象なしとして終了できる。
- 次工程は高品質チェック/訂正側に任せる。品質追加確認や自然文再判定は高品質チェック以降の役割。

### FAIL/REPAIR

- 既公開slugの公開記事本文を制作cronが修正しようとする。
- 既公開slugの公開HTMLを取得し、制作cronがvalidator_result.jsonを上書きしようとする。
- `task8_handoff` があるのに task2 pending を放置して完了する。
- task2をdoneにせず、次回制作cronに同じslugを残す。
- stale task2消費後にキューを再取得せず、候補があるのに制作runを終了する。
- 公開済み/handed-off の証跡を「制作対象」と誤判定する。

### 必須証跡

- `production_existing_public_evidence_checked`
- `production_existing_task8_handoff_checked`
- `production_public_article_no_touch=true`
- `production_validator_no_overwrite=true`
- `production_stale_task2_consumed`
- `production_stale_task2_consumed_via=agent_task_action`
- `production_next_stage_preserved=task8`
- `production_stale_task2_followup_queue_checked=true`
- `production_followup_candidate_result=selected_new_candidate|no_eligible_candidate`
- `production_followup_candidate_article_key`
- `production_no_eligible_candidate_reason`

既公開・handoff済みslugで上記が欠落している場合は、制作完了扱い禁止。公開記事を直す必要がある場合は、制作cronではなく高品質チェックまたは訂正cronの対象にする。

## v0.1.66 Q&A details exact Gate

Marker: 2026-06-07_PORNFUN_QA_DETAILS_EXACT_GATE

Q&A is PASS only when the visible article body contains 5 or more exact Q&A sets in this form:

```html
<details class="qa-box"><summary class="qa-question">QUESTION_TEXT</summary><div class="qa-answer">ANSWER_TEXT</div></details>
```

This means:

- The outer element is `details` and its class is `qa-box`.
- The question element is `summary` and its class is `qa-question`.
- The answer element is `div` and its class is `qa-answer`.
- One Q&A set has one `details.qa-box`, one `summary.qa-question`, and one `div.qa-answer`.
- `QUESTION_TEXT` and `ANSWER_TEXT` are real reader-facing text, not empty placeholders.
- Count only visible Q&A in the article body.
- Do not count FAQ JSON-LD, JavaScript, schema, custom code, TOC, related posts, plugin parts, sidebar, footer, comments, hidden elements, or class-count-only matches.

FAIL conditions:

- Fewer than 5 exact visible article-body sets.
- A `qa-box` exists but the outer element is not `details`.
- A `qa-question` exists but the element is not `summary`.
- A `qa-answer` exists but the element is not `div`.
- `qa-box`, `qa-question`, or `qa-answer` are counted from outside the article body.
- Q&A is only present as FAQ JSON-LD, JavaScript, schema, custom code, TOC, related posts, plugin parts, sidebar, footer, comments, or hidden elements.
- Q&A answers are empty, duplicated filler, a rewrite of nearby body text only, polite style, or not useful to readers.

Production cron:

- Must create 5 or more exact Q&A sets before PASS.
- Must measure public or preview HTML and save `qa_details_exact_gate=PASS`.
- Must not PASS from self-scoring, class counts only, or FAQ JSON-LD.

Quality check cron:

- Must refetch public or preview HTML.
- Must count only the exact visible article-body Q&A sets.
- If `qa_details_exact_count < 5`, save `QA_DETAILS_EXACT_GATE_FAIL` in `failed_gate_names`, `required_gate_failures`, and `quality_delta_items`.
- Must send the article to correction when this FAIL is present, even if other gates also fail.

Correction cron:

- Must repair Q&A to 5 or more exact sets.
- Must rerun the same validator after correction.
- Must not fix only one Q&A item while leaving other required FAIL items.

Required evidence:

- `qa_details_exact_gate=PASS|FAIL`
- `qa_details_exact_count`
- `qa_details_exact_required_count=5`
- `qa_details_exact_missing_count`
- `qa_details_exact_items`
- `qa_details_exact_fail_reasons`
- `qa_details_exact_body_only=true`
- `qa_details_exact_html_pattern=<details class="qa-box"><summary class="qa-question">QUESTION_TEXT</summary><div class="qa-answer">ANSWER_TEXT</div></details>`

Missing evidence, unmeasured evidence, fixed true, self-report-only PASS, or class-count-only PASS is FAIL.

## v0.1.66 Mandatory public/preview HTML measurement Gate

Marker: 2026-06-07_PORNFUN_MANDATORY_PUBLIC_HTML_MEASUREMENT_GATE

This is a production-onward no-escape Gate for porn-fun SEX DOLL review articles.

Production, quality_check, correction, and improvement_handoff must not PASS an
article unless every required article-quality rule has been measured from public
HTML or preview HTML, or from an explicit Hub readback/source artifact when the
rule cannot exist in public HTML. Self-report, fixed true, count-only PASS,
score-only PASS, "looks OK", "already checked", or "not applicable" without
evidence is FAIL.

Core rule:

- If any required item from the current porn-fun Gates is missing, unmeasured,
  JSON-broken, evidence-broken, self-scored only, fixed-true only, count-only, or
  moved to a warning instead of a required failure, the result is FAIL.
- A required FAIL cannot be hidden by `score_cap`, `final_quality_score`, or a
  narrative explanation. It must appear in `failed_gate_names`,
  `required_gate_failures`, and `quality_delta_items`.
- `pass_allowed=true`, `task8_handoff_allowed=true`, or `accepted=true` is
  forbidden unless `mandatory_public_html_measurement_gate=PASS`.

The exact Q&A structure remains mandatory. Visible article-body Q&A must contain
5 or more sets of this exact structure:

```html
<details class="qa-box"><summary class="qa-question">質問内容</summary><div class="qa-answer">回答内容</div></details>
```

Also accept the same element/class structure with real question and answer text.
FAQ JSON-LD, JavaScript, schema, TOC, related posts, plugin parts, sidebar,
footer, comments, hidden elements, or class counts alone do not count.

Required public/preview HTML measurements:

- `public_or_preview_html_refetched=true`
- `public_or_preview_html_source=public_html|preview_html`
- `public_or_preview_html_url_or_path`
- `public_or_preview_html_sha256`
- `article_body_html_extracted=true`
- `article_body_selector`
- `article_body_text_chars`
- `seo_title_h1_separated_gate`
- `seo_title_strength_gate`
- `lead_length_gate`
- `lead_marker_gate`
- `lead_natural_language_gate`
- `article_natural_language_gate`
- `official_cta_right_aligned_gate`
- `directory_plugin_rating_score_table_gate`
- `directory_plugin_basic_info_table_gate`
- `manual_score_table_absent_gate`
- `manual_basic_info_table_absent_gate`
- `body_minimum_4000_chars_gate`
- `kw_occurrence_rate_gate`
- `cooccurrence_related_terms_gate`
- `original_heading_from_kw_gate`
- `joutai_strict_machine_gate`
- `desu_masu_count`
- `h2_h3_balance_gate`
- `rating_item_h3_reason_gate`
- `qa_details_exact_gate`
- `qa_details_exact_count`
- `qa_details_exact_required_count=5`
- `faq_jsonld_body_absent_gate`
- `custom_code_body_absent_gate`
- `internal_link_count_gate`
- `external_link_overuse_gate`
- `required_decorative_box_class_gate`
- `blank_box_bb_check_bb_yellow_count`
- `information_box_count`
- `warning_box_count`
- `black_bold_usage_gate`
- `red_bold_usage_gate`
- `yellow_marker_usage_gate`
- `decoration_golden_ratio_gate`
- `checkmark_list_usage_gate`
- `warning_list_usage_gate`
- `checkmark_count_min_3`
- `warning_count_min_3`
- `inline_check_warning_forbidden_gate`
- `first_conclusion_valid_box_gate`
- `category_readback_gate`
- `nsfw_ai_existing_directory_category_gate`
- `nsfw_ai_existing_directory_type_gate`

Required non-HTML/readback/source-artifact measurements:

- `search_compass_present=true`
- `reader_intent_pack_present=true`
- `production_material_pack_present=true`
- `official_reference_urls_checked`
- `public_review_reputation_sources_checked`
- `directory_core_readback_confirmed=true`
- `wp_post_readback_confirmed=true`
- `validator_result_json_present=true`
- `validator_json_parse_gate=PASS`
- `validator_required_keys_complete=true`
- `validator_unmeasured_items=[]`
- `mandatory_gate_failures=[]`
- `mandatory_gate_fail_count=0`

Every measured item must include evidence details:

- `source`
- `selector_or_readback_key`
- `count_or_value`
- `sample`
- `measured_at`
- `html_sha256_or_artifact_sha256`
- `result=PASS|FAIL`
- `fail_reason`

Escape blockers:

- Fixed `true` without evidence details is FAIL.
- `not_applicable` without a rule-specific reason and source proof is FAIL.
- Class-count-only PASS is FAIL.
- Existing validator JSON from another slug is FAIL.
- Previous article values used as the current article baseline are FAIL.
- Production cron must not repair, overwrite, or revalidate already published or
  task8-handoff slugs; it must consume stale task2 and select a new eligible
  candidate.
- Quality_check must refetch HTML and rerun the validator. It must not trust
  production self-scoring or existing validator JSON.
- Correction must repair all required FAIL items and rerun the validator before
  returning the article to task8.

SEX DOLL category/readback:

- SEX DOLL review articles must use the existing directory category
  `https://porn-fun.com/ja/directory-category/nsfw-ai/` when directory_category
  applies.
- SEX DOLL review articles must use the existing directory type
  `https://porn-fun.com/ja/directory-type/nsfw-ai/` when directory_type applies.
- Creating or assigning `directory-type/nsfw-ai-generator/` for this workflow is
  FAIL.
- Category/type readback must be measured after save/publish.

Final validator rule:

- `mandatory_public_html_measurement_gate=PASS` only when all required measured
  gates are PASS, all required evidence keys exist, and no required FAIL remains.
- If even one required item is missing or unmeasured, set
  `mandatory_public_html_measurement_gate=FAIL`,
  `pass_allowed=false`, `correction_required=true`, and save the missing item in
  `failed_gate_names`, `required_gate_failures`, and `quality_delta_items`.

## v0.1.66 Hard-stop repair loop Gate

Marker: 2026-06-07_PORNFUN_HARD_STOP_REPAIR_LOOP_GATE

Scope: porn-fun SEX DOLL review articles, production and later.

This Gate closes the remaining escape routes. A cron is not allowed to say PASS,
task8-ready, accepted, complete, or "finished" while any required FAIL remains.

Hard FAIL names that must stop the run:

- `DIRECTORY_PLUGIN_RATING_SCORE_TABLE_MISSING`
- `DIRECTORY_PLUGIN_BASIC_INFO_TABLE_MISSING`
- `MANUAL_RATING_SCORE_TABLE_USED_INSTEAD_OF_PLUGIN`
- `MANUAL_BASIC_INFO_TABLE_USED_INSTEAD_OF_PLUGIN`
- `SEO_TITLE_H1_NOT_SEPARATED`
- `SEO_TITLE_MISSING_OR_WEAK`
- `H1_MISSING_OR_WRONG`
- `PUBLIC_HTML_MEASUREMENT_MISSING`
- `PUBLIC_HTML_MEASUREMENT_FIXED_TRUE_ONLY`
- `VALIDATOR_RESULT_JSON_MISSING_OR_BROKEN`
- `QA_DETAILS_EXACT_GATE_FAIL`
- `MANUAL_REREAD_AFTER_REPAIR_MISSING`
- `TARGET_GATE_MANUAL_FULL_REREAD_AFTER_FAIL_MISSING`
- `READER_PERSPECTIVE_RECHECK_AFTER_REPAIR_MISSING`
- `REPAIR_LOOP_STOPPED_WITH_REQUIRED_FAILS`

Dictionary plugin table hard stop:

- The article must use the directory plugin rating score table.
- The article must use the directory plugin basic info table.
- Public or preview HTML must prove both plugin tables are visible in the article
  body or directory plugin article area.
- Handwritten HTML tables, normal editor tables, ranking ad tables, pasted score
  tables, or text-only score sections are not substitutes.
- If either plugin table is missing, PASS is forbidden even when all other items
  look good.
- Required evidence:
  - `directory_plugin_rating_score_table_gate=PASS`
  - `directory_plugin_basic_info_table_gate=PASS`
  - `directory_plugin_rating_score_table_source=public_html|preview_html`
  - `directory_plugin_basic_info_table_source=public_html|preview_html`
  - `directory_plugin_rating_score_table_selector`
  - `directory_plugin_basic_info_table_selector`
  - `directory_plugin_rating_score_table_sample`
  - `directory_plugin_basic_info_table_sample`
  - `manual_score_table_count=0`
  - `manual_basic_info_table_count=0`

H1 and SEO title hard stop:

- H1 and SEO title must be separately measured from public or preview HTML.
- H1 must be the visible page H1 for the target article.
- SEO title must be the document title or SEO title metadata, not copied blindly
  from H1 without review.
- A service-name-only SEO title, weak SEO title, missing SEO title, H1/SEO title
  confusion, or unmeasured title is FAIL.
- Required evidence:
  - `h1_text`
  - `seo_title_text`
  - `h1_selector`
  - `seo_title_source=title_tag|seo_meta|preview_html`
  - `seo_title_h1_separated_gate=PASS`
  - `seo_title_strength_gate=PASS`
  - `h1_gate=PASS`
  - `seo_title_fail_reasons=[]`

Quality-check recording hard stop:

- If any of the following conditions is detected, quality_check itself is FAIL
  unless the exact FAIL name is saved in all three arrays:
  `failed_gate_names`, `required_gate_failures`, and `quality_delta_items`.
- Missing directory plugin rating score table must be recorded as
  `DIRECTORY_PLUGIN_RATING_SCORE_TABLE_MISSING`.
- Missing directory plugin basic info table must be recorded as
  `DIRECTORY_PLUGIN_BASIC_INFO_TABLE_MISSING`.
- H1 and SEO title not separated must be recorded as
  `SEO_TITLE_H1_NOT_SEPARATED`.
- Missing, weak, or service-name-only SEO title must be recorded as
  `SEO_TITLE_MISSING_OR_WEAK`.
- If quality_check detects the problem but does not record the exact FAIL name in
  all three arrays, set `QUALITY_CHECK_REQUIRED_FAIL_NOT_RECORDED`.

Production publish/task8 hard stop:

- Production cron must not publish, mark task8-ready, hand off, or complete when
  public/preview HTML measurement is missing.
- Production cron must save the public/preview measurement evidence before
  publish/task8 handoff.
- If public/preview HTML measurement is missing, set
  `PUBLIC_HTML_MEASUREMENT_MISSING` and stop.

Q&A hard stop remains:

- Visible article body must contain at least 5 exact Q&A sets using this structure:

```html
<details class="qa-box"><summary class="qa-question">質問内容</summary><div class="qa-answer">回答内容</div></details>
```

- Same element/class structure with real question and answer text is required.
- FAQ JSON-LD, JavaScript, TOC, sidebar, footer, related posts, hidden elements,
  or class counts alone do not count.

Mandatory repair loop:

1. If production, quality_check, correction, or improvement_handoff finds any
   required FAIL, it must not finish as PASS.
2. If even one FAIL appears, the cron must identify the target Gate/manual files
   related to that FAIL and reread those target Gate/manual files in full before
   deciding the repair. Partial excerpts, memory-only handling, or "already know"
   is FAIL.
3. After each repair, the cron must reread all required current porn-fun site Hub
   manuals/Gates needed for article quality from this site Hub only.
4. After rereading, the cron must check the article again from the reader's point
   of view, not only from a validator checklist.
5. It must refetch public or preview HTML, rerun the validator, and save a new
   `validator_result.json`.
6. If any required FAIL remains, repair again.
7. Repeat target Gate/manual full reread after FAIL -> repair -> manual reread ->
   reader-perspective check -> public/preview HTML measurement -> validator save
   until required FAIL count is zero.
8. Repeat manual reread -> reader-perspective check -> public/preview HTML
   measurement -> validator save -> repair until required FAIL count is zero.
9. The cron may stop only when:
   - `mandatory_gate_fail_count=0`
   - `required_gate_failures=[]`
   - `validator_unmeasured_items=[]`
   - `mandatory_public_html_measurement_gate=PASS`
   - `hard_stop_repair_loop_gate=PASS`

Required loop evidence:

- `repair_loop_iteration_count`
- `target_gate_manual_full_reread_after_fail=true`
- `target_gate_manual_full_reread_files`
- `target_gate_manual_full_reread_fail_map`
- `target_gate_manual_full_reread_completed_at`
- `manuals_reread_after_each_repair=true`
- `manual_reread_files`
- `reader_perspective_recheck_after_each_repair=true`
- `reader_perspective_recheck_items`
- `public_or_preview_html_refetched_after_each_repair=true`
- `validator_rerun_after_each_repair=true`
- `validator_result_json_path`
- `validator_result_json_sha256`
- `remaining_required_fail_count`
- `remaining_required_failures`
- `quality_check_required_fail_recording_gate=PASS|FAIL`
- `quality_check_required_fail_not_recorded_items`
- `production_publish_task8_public_html_measurement_gate=PASS|FAIL`
- `hard_stop_repair_loop_gate=PASS|FAIL`

If any of the above evidence is missing, fixed true without detail, stale from a
previous slug, or not tied to the current article slug, the result is FAIL.

Do not edit already published/task8-handoff articles in production cron. Existing
published failures belong to quality_check/correction flows, not new production.

## v0.1.66 Internal link live 200 Gate

Marker: 2026-06-07_PORNFUN_INTERNAL_LINK_LIVE_200_GATE

Scope: porn-fun SEX DOLL review articles, production and later.

Internal links must never point to unpublished, missing, 404, draft, preview-only,
wrong-language, or unverified pages. A 404 internal link is a hard FAIL.

Hard FAIL names:

- `INTERNAL_LINK_404_FOUND`
- `INTERNAL_LINK_NOT_200_FOUND`
- `INTERNAL_LINK_UNVERIFIED`
- `INTERNAL_LINK_WRONG_LANGUAGE`
- `INTERNAL_LINK_PREVIEW_OR_DRAFT_USED`
- `INTERNAL_LINK_EVIDENCE_MISSING`

Rule:

- Production, quality_check, correction, and improvement_handoff must extract all
  internal body links from public or preview HTML.
- Each internal link must be checked by live HTTP request or WordPress/Directory
  readback before PASS.
- Only HTTP 200 final URLs are allowed for normal internal links.
- 301/302/307/308 redirects are not enough unless the final URL is recorded and
  final status is 200.
- 404/410/403/500, missing response, timeout, malformed URL, wrong language, or
  draft/preview-only URL is FAIL.
- Do not add `https://porn-fun.com/ja/ai-girlfriend-review/` or any other link
  unless its live final status is 200 at validation time.
- Link count alone is not PASS. Every URL needs evidence.

Required evidence:

- `internal_link_live_check_gate=PASS|FAIL`
- `internal_link_urls`
- `internal_link_count`
- `internal_link_checked_count`
- `internal_link_status_items`
- `internal_link_failed_items`
- `internal_link_404_items`
- `internal_link_unverified_items`
- `internal_link_final_url_items`
- `internal_link_live_check_completed_at`
- `internal_link_live_check_source=public_html|preview_html`

Quality-check recording hard stop:

- If a 404 or non-200 internal link exists, the exact FAIL name must appear in all
  three arrays: `failed_gate_names`, `required_gate_failures`, and
  `quality_delta_items`.
- If quality_check sees the problem but does not record the exact FAIL name, set
  `QUALITY_CHECK_REQUIRED_FAIL_NOT_RECORDED`.

Repair loop:

- If any internal link FAIL appears, reread the target Gate/manual in full,
  repair the link, refetch public or preview HTML, rerun link checks, rerun the
  validator, and repeat until no internal link FAIL remains.
- Do not finish, publish, task8 handoff, or report PASS while internal link FAILs
  remain.

共通:
- 秘密値、APIキー、トークン、不要な個人情報を出力しない。
- `hub_version` が依頼文記載のバージョンと一致しないことだけを理由に停止しない。
- Hub API取得不能、必要なcurrent正本欠落、保存/readback不成立は報告して止める。
{workflow_scope_rules(page)}

訂正専用Gate:
- 高品質チェックで返された対象記事だけを修正する。
- 1つでもFAILが出たら、該当FAILのGate/マニュアル全文再読証跡なしで修正・PASS・完了しない。
- 修正後は公開HTMLまたはpreview HTMLを再取得し、validatorを再実行する。
- FAILゼロ、readback成立、validator_result.json保存まで完了扱いにしない。

作成後に name / id / status / rrule / model / cwd を報告する。
秘密値・認証値・APIキーは表示しない。

porn-fun【評価・SEX DOLL】 改善ハンドオフcron作成依頼文

【cron個別作成依頼文】

以下のautomationを1件だけ新規作成してください。

automation名:
porn-fun【評価・SEX DOLL】改善ハンドオフ

対象:
- porn-fun Hubのみ
- workflow_id: `porn-fun-sex-doll-shops-ja`
- content_set: `porn_fun_sex_doll_shops`
- article_type: `SEX_DOLL`
- stage: improvement_handoff
- validator成果物: `runtime\validator_results\porn-fun-sex-doll-shops-ja\{slug}\{stage}\validator_result.json`

触らない対象:
- AIfan Hub、AIfan active cron、AIfan記事
- porn-fun以外のサイトHub
- 既公開記事本文の勝手な編集
- キー、トークン、認証値
- 旧 `representative-work-gate`
- `_codex_cron_threads\AGENTS.md`
- 共有 `Autopost358\HUB\gates`

workflow混同防止:
- このcronは `workflow_id=porn-fun-sex-doll-shops-ja` / `content_set=porn_fun_sex_doll_shops` / `article_type=SEX_DOLL` だけを処理する。
- `agent_pack` / `agent_work_queue` / 保存readbackで別workflow、別content_set、別article_typeの候補が返った場合は処理しない。対象外として記録し、このcronの成功件数に数えない。
- 別workflowの収集元、カテゴリ、validator保存先、301/旧記事移行ルールを流用しない。
- validator成果物は `runtime\validator_results\porn-fun-sex-doll-shops-ja\{slug}\{stage}\validator_result.json` に保存する。別workflow用パスを使わない。
- 未実装API名や未登録API名を必須停止条件にしない。起動時確認は `api=status`、`agent_pack`、`agent_work_queue`、サイトHub内current正本で行う。

automation設定:
- kind: cron
- status: ACTIVE
- executionEnvironment: local
- cwd: `C:\Users\Public\Documents\LLC358\_codex_cron_threads`
- model: gpt-5.4
- reasoningEffort: high
- localEnvironmentConfigPath: null
- 起動回数: 週1回、または改善キュー発生時
- 推奨RRULE: `FREQ=WEEKLY;BYDAY=SU;BYHOUR=8;BYMINUTE=55;BYSECOND=0`
- 起動時間メモ: 候補: 日曜 08:55 JST。改善キュー発生時は代表の指示または追加単発起動で処理する。

最初に読む場所:
- `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun\startup_docs\current`
- `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun\gates\current`
- `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun\cron_prompts\current\SEXDOLL`
- `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun\cron_prompts\current\WORKFLOW_SCOPE_MATRIX.md`

起動時に `api=status` で `hub_version` を確認し、ログに記録する。
作成時点の参考基準は `0.1.66-pornfun-internal-link-live-200-gate-20260607`。
ただしporn-fun Hubが別スレッドまたは別PCでバージョンアップされている場合は、その時点のlive Hub応答とサイトHub内の `startup_docs/current`、`gates/current`、`cron_prompts/current` を最新版として扱う。
`hub_version` が依頼文記載のバージョンと一致しないことだけを理由に停止しない。
停止するのは、Hub API取得不能、agent_pack/work_queue取得不能、保存API利用不可、保存後readback不成立、または必要なcurrent正本欠落の場合だけ。

実運用の1日の起動回数:
- 収集: 1回/日
- 検査: 4回/日
- 制作: 最大3回/日
- 高品質チェック: 最大5回/日
- 訂正: 1回/日
- 改善ハンドオフ: 週1回、または改善キュー発生時

起動時間設定ルール:
- 既存ACTIVE cronを確認してから設定する。
- 同時刻と前後10分を避ける。
- 00分固定を避ける。
- 分は 07 / 13 / 19 / 26 / 34 / 41 / 48 / 55 を優先候補にする。
- 朝・昼・夕・夜へ分散する。
- 制作cronは同一site/workflowの前回制作runから最低3時間あけ、同時並行させない。
- 空けられない場合は5分間隔、1分間隔、最後は同時刻の順で詰める。混雑だけで作成停止しない。
- cron実行cwdは `C:\Users\Public\Documents\LLC358\_codex_cron_threads`。
- 支社PCへ持っていく対象は `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun` だけ。このサイトHub内でGate、startup、cron prompt、runtime証跡を完結させる。

カテゴリ/収集範囲:
- SEX DOLLは旧HUBの新ジャンル評価記事ルールに従う。収集起点URLは https://theporndude.com/sex-doll-shops 。この起点からSex Dollショップ候補を拾い、公式ショップ、配送、返品、素材、価格帯、支払い、安全性、海外対応、口コミ/評判を確認する。
- SEX DOLL評価記事で制作した記事のdirectory_categoryは `sex-doll-shops` 固定。勝手に新規カテゴリを作らない。公開後は `https://porn-fun.com/ja/directory-category/sex-doll-shops/` のreadbackで確認する。directory_collectionは `adult-services`。評価軸や機能名をdirectory_categoryに入れない。これは新ジャンル評価記事であり、単体移行、旧URL移行、旧投稿アイキャッチ移行、301、移行コピーは対象外。


改善ハンドオフcronの仕事:
- 本文を直接直さない。
- Gate不足、素材不足、運用不足、再発防止、次回改善案を分けて保存する。
- 改善キューが残る場合は、remaining候補数を残して完了扱いにしない。


【カテゴリ別差し替え】

この改善ハンドオフ本文は、porn-fun Hub内の現行v0.1.66 改善ハンドオフcron本文を、porn-fun【評価・SEX DOLL】 用に最適化して使う。
制作cron本文ではない。改善ハンドオフcron自身の仕事から逃げないための専用詳細本文として扱う。

- workflow_id: `porn-fun-sex-doll-shops-ja`
- content_set: `porn_fun_sex_doll_shops`
- article_kind: `evaluation_score_dictionary_new_genre`
- 対象範囲: SEX DOLLは旧HUBの新ジャンル評価記事ルールに従う。収集起点URLは https://theporndude.com/sex-doll-shops 。この起点からSex Dollショップ候補を拾い、公式ショップ、配送、返品、素材、価格帯、支払い、安全性、海外対応、口コミ/評判を確認する。
- カテゴリ規則: SEX DOLL評価記事で制作した記事のdirectory_categoryは `sex-doll-shops` 固定。勝手に新規カテゴリを作らない。公開後は `https://porn-fun.com/ja/directory-category/sex-doll-shops/` のreadbackで確認する。directory_collectionは `adult-services`。評価軸や機能名をdirectory_categoryに入れない。これは新ジャンル評価記事であり、単体移行、旧URL移行、旧投稿アイキャッチ移行、301、移行コピーは対象外。
- Hub正本: `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun`
- cron実行cwd: `C:\Users\Public\Documents\LLC358\_codex_cron_threads`

起動時に `api=status` で `hub_version` を確認し、ログに記録する。
作成時点の参考基準は `0.1.66-pornfun-internal-link-live-200-gate-20260607`。
ただしporn-fun Hubが別スレッドまたは別PCでバージョンアップされている場合は、その時点のlive Hub応答とサイトHub内の `startup_docs/current`、`gates/current`、`cron_prompts/current` を最新版として扱う。
`hub_version` が依頼文記載のバージョンと一致しないことだけを理由に停止しない。
停止するのは、Hub API取得不能、agent_pack/work_queue取得不能、保存API利用不可、保存後readback不成立、または必要なcurrent正本欠落の場合だけ。

# porn-fun【評価・SEX DOLL】改善ハンドオフ

automation_id: porn-fun-nsfw-ai-6
site_id: porn-fun
workflow_id: porn-fun-sex-doll-shops-ja
content_set: porn_fun_sex_doll_shops
article_type: SEX_DOLL
role: 改善ハンドオフ
updated_at: 20260606-v0151-portable-site-hub-contained

---

# porn-fun【評価・SEX DOLL】改善ハンドオフ

porn-fun【評価・SEX DOLL】改善ハンドオフ cron v0.1.66。

対象は `site_id=porn-fun` / `workflow_id=porn-fun-sex-doll-shops-ja` / `content_set=porn_fun_sex_doll_shops`。正本は現行Pornfun Hub `https://pornfun-hub.secure358.com` と、このサイトHUBフォルダ内の `startup_docs/current` / `gates/current` / `cron_prompts/current` です。cron実行cwdはautomation設定に従いますが、読むファイル・保存するGate/cron成果物はこのサイトHUB内で完結させ、サイトHUB外のGate/起動文書を必須参照にしないでください。対象外のサイト、対象外記事、旧Hub、共有Gateは触らないでください。

起動時にHub status / agent_pack / agent_work_queue を読み、サイトHUB内の `ARTICLE_QUALITY_GATE.md` / `QUALITY_VALIDATOR_CONTRACT.md` / `REFERENCE_STYLE_GATE.md` / `ROLE_FAIL_CONDITION_GATE.md` / `PRODUCTION_EVIDENCE_AND_SCORING_GATE.md` / `JAPANESE_SYNTAX_GATE.md` / `PLAIN_STYLE_AND_QA_BOX_HOTFIX_GATE.md` / `PORNFUN_CRON_TEMPLATE_GATE.md` を必要範囲で読む。細かい数値、score_cap、証跡キー、成果物パスはGate正本に従う。

担当は高品質チェック後、訂正後、監視中の記事を確認し、訂正送り・改善メモ・監視対象へ振り分けること。収集・検査・新規制作・直接本文修正・公開はしない。

改善ハンドオフcronは本文を直さない。候補が複数ある場合は1件だけ処理して止まらない。公開HTMLとvalidator_result.jsonを確認し、構文FAIL、常体Strict、qa-box構造、手書き評価表、BOX不足、Q&A不足、装飾不足、内部リンク不足、KW過多/不足、カテゴリ不一致、NSFW/年齢/権利/プライバシー注意不足などを軽微メモに逃がさない。

常体Strict/Q&A構造のFAILは訂正送り対象。本文・リード・Q&A・BOXに敬体が残る、または `qa-box` / `qa-question` / `qa-answer` 構造が5個未満、FAQ JSON-LDやJavaScriptだけをQ&Aに数えている場合は、該当文・該当Q&A番号・欠落キー・実測値を保存する。

SEX DOLLでは、違法・未成年・実在人物なりすまし・無断性的生成を推奨する表現、年齢制限/権利/プライバシー/禁止事項/決済リスクの説明不足を訂正送り対象にする。

訂正送りにする場合は、記事key、公開URL、failed_gate_names、quality_delta_items、実測値、修正指示、優先度、次工程、correction_required=trueを保存する。改善メモにする場合も、なぜ訂正ではなく監視/改善メモなのかを書く。

制作cronへ戻すのは、新規制作対象の素材不足・Search Compass不足・reader_intent_pack不足など、制作開始前の素材整備が必要な場合だけ。既存公開記事の本文修正は訂正cronへ渡す。

報告は日本語のみで、処理候補数、訂正送り数、改善メモ数、監視対象数、残候補数、保存行数、readback結果を書く。英語の内部メモや思考文を報告に混ぜない。

追加必須装飾BOX Gate(Marker: 2026-06-05_REQUIRED_DECORATIVE_BOX_CLASS_GATE): Pornfun以降の記事では、本文内の有効スタイルBOXとして `blank-box bb-tab bb-check bb-yellow`、`information-box`、`warning-box` をそれぞれ1個以上置く。いずれかが0件、本文外のみ、Q&A/表/目次/辞書プラグイン/関連記事/サイドバー/フッターのみ、空div、読者判断を助けない内容の場合はFAIL。validatorでは `required_decorative_box_class_gate`、`blank_box_bb_check_bb_yellow_count`、`information_box_count`、`warning_box_count`、`required_decorative_box_class_failures` を保存し、欠落時はPASS禁止。

## v0.1.46 後工程ハンドオフGate追加

Marker: 2026-06-06_PORNFUN_LEGACY_GATE_UPGRADE

改善ハンドオフでは、公開本文境界、成人向け確認不足、評価項目本文不足、手書き表二重表示、Task10訂正対象を軽微メモに逃がさない。訂正送りにする場合は、記事key、公開URL、failed_gate_names、quality_delta_items、実測値、修正指示、優先度、次工程、`correction_required=true` を保存する。

候補が複数ある場合は1件だけ処理して止まらず、訂正送り数、改善メモ数、監視対象数、残候補数を報告する。`improvement_status=handed_off` かつ `improvement_lock=true` の間は、返却されるまで本文を主観的に書き直さない。

## v0.1.66 制作以降Fail-first品質Gate

Marker: 2026-06-06_PORNFUN_PRODUCTION_ONWARD_QUALITY_CHAIN_GATE

改善ハンドオフcronは、上記v0.1.66 Gate違反を軽微メモに逃がさない。本文を直接直さず、訂正送り、改善メモ、監視対象を分けて保存する。

候補が複数ある場合は1件だけ処理して止まらない。起動時にHub status / agent_pack / agent_work_queueを読み、改善ハンドオフ対象候補を全件列挙する。`remaining_improvement_handoff_candidates_count=0` になるまで完了扱いにしない。

改善不可または必須Gate未達の場合は、候補ごとに `correction_required=true`、`next_task_code=10-correction`、`handoff_status=queued_to_correction`、`failed_gate_names`、`measured_values`、`fix_instructions`、`public_url`、`article_key` を保存する。候補が残る場合は完了と報告しない。

## v0.1.66 改善ハンドオフ validator Gate Hotfix

Marker: 2026-06-06_PORNFUN_PRODUCTION_VALIDATOR_GATE_HOTFIX

改善ハンドオフcronは、制作・高品質チェック・訂正のvalidator結果を軽微メモに逃がさず、公開HTMLまたはプレビューHTMLを必要に応じて再取得し、`quality_delta_items`、`validator_final_score`、FAIL/REPAIR残件、`score_cap_reasons` を確認してください。

`validator_result.json` を作る場合は porn-funサイトHUB内の `runtime\validator_results\porn-fun-sex-doll-shops-ja\{slug}\{stage}\validator_result.json` に保存してください。`stage` は `improvement_handoff` です。

代表から「何点?」「Gate何点だった?」「100点なのか?」と聞かれた場合でも、作業ログ上の自己採点だけで回答しないでください。実測できない場合は「未実測のため点数確定不可」と答え、100点/PASSを断定しないでください。

## v0.1.66 portable site Hub contained hotfix

Marker: 2026-06-06_PORNFUN_PORTABLE_SITE_HUB_CONTAINED

Branch PC transfer assumes only this folder is carried:
`C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun`

Required startup, Gate, cron prompt, validator artifact, and runtime evidence paths must be resolvable from this site Hub folder. The automation working directory may be set outside this folder, but files that a cron must read as正本 and files that a cron must save as Gate/validator evidence must not require any external Gate mirror, representative-only path, or another site Hub.

For production onward validator artifacts, use the site-Hub-relative path:
`runtime\validator_results\porn-fun-sex-doll-shops-ja\{slug}\{stage}\validator_result.json`

Stage is one of `production`, `quality_check`, `correction`, or `improvement_handoff`.

## v0.1.66 Directory Core / 辞書プラグイン評価表 必読Gate

Marker: 2026-06-06_PORNFUN_DIRECTORY_CORE_EXPLICIT_READ_GATE

制作以降cron(production / quality_check / correction / improvement_handoff)は、起動時Gate確認で以下4資料を `gates/current` から必ず読む。読めない場合は本文制作・PASS・task8/handoffを進めず、`BLOCKED_DIRECTORY_CORE_GATE_NOT_READ` とする。

- `directory-core-full-input-public-row-gate-v1.23.md`
- `V1_23_CRON_REQUEST_RULES.md`
- `V1_24_CRON_REQUEST_RULES.md`
- `Apply-HubDirectoryCoreRatingGate.ps1`

Directory Core / 辞書プラグイン評価表が公開HTMLまたはreadbackで有効な場合、評価スコア表・基本情報表はその表示を正本として扱い、本文HTML側で手書きの評価項目表・スコア表・基本情報表を重複作成しない。ただし読者に見えている証跡は validator_result.json に保存する。

validator_result.json には、少なくとも `directory_core_gate_files_read`、`directory_core_gate_read_result`、`dictionary_score_table_present`、`manual_score_table_count`、`directory_core_public_row_gate_result`、`directory_core_rating_gate_result` を保存する。辞書表があるのに手書き表を重複作成した場合、または4資料を読まずにPASSした場合はFAILにする。

## v0.1.66 必須FAIL条件 全文明示Gate

Marker: 2026-06-06_PORNFUN_FULL_REQUIRED_FAIL_CONDITIONS_GATE

制作以降cron(production / quality_check / correction / improvement_handoff)は、以下のいずれかがある場合にPASS、task8、完了扱い、改善ハンドオフ完了扱いをしてはならない。validator_result.json と作業報告には、該当したFAIL名、実測値、修正指示、readback結果を残す。

- Search Compassなし
- 公開HTML未取得
- `validator_result.json`なし
- `validator_result.json` JSON破損
- `validator_result.json` 必須キー欠落
- validator未測定あり
- 自己採点だけのPASS
- `naturalization_rewrite_checked` の固定true
- `reference_style_checked` の固定true
- H1とSEOタイトル未区分
- 弱いSEOタイトル
- リード文1文
- リード文が短すぎ
- リード文500字超
- リード文改行なし
- リード内マーカーなし
- 右寄せ公式CTAなし
- 辞書プラグイン評価スコア表がある記事で手書き評価項目・スコア・理由表を作る
- 辞書表と重複する手書き基本情報表
- 4000字未満
- KW不足
- 共起語不足
- 関連語不足
- 常体違反
- H2ばかりでH3不足
- 評価項目H3理由不足
- Q&Aがqa-box5個未満
- qa-question不足
- qa-answer不足
- Q&A回答の敬体
- 本文内FAQ JSON-LD挿入
- 本文内JavaScript挿入
- 本文内カスタムコード挿入
- 内部リンク1〜3本以外
- 外部リンク過多
- 有効装飾BOX3個未満
- 先に結論が有効BOXでない
- 装飾黄金比率不備
- 最低足切り未満
- 件数だけでPASS
- 重要でない箇所への装飾
- 読みづらい装飾
- ✅/⚠️混在長文
- 1行に複数✅/⚠️
- 文字化け
- 公式主機能未確認のカテゴリ選択
- 主機能と違うWPカテゴリ
- 曖昧カテゴリへの推測投入
- カテゴリreadback未確認

`naturalization_rewrite_checked=true`、`reference_style_checked=true`、`pass_allowed=true` などの真偽値は、公開HTMLまたはプレビューHTMLの実測証跡、対象行、検出数、修正結果が揃うまで信用しない。固定true、自己申告true、前回結果の流用、件数だけのPASSは禁止する。

Directory Core / 辞書プラグイン評価表が有効な記事では、`dictionary_score_table_present`、`manual_score_table_count`、`directory_core_gate_files_read`、`directory_core_gate_read_result`、`directory_core_public_row_gate_result`、`directory_core_rating_gate_result` を実測保存する。辞書表と本文手書き表の重複がある場合はFAILにする。

## v0.1.66 装飾比率・CTA・KW・リード文 Gate

Marker: 2026-06-06_PORNFUN_VISUAL_KW_LEAD_GATE

制作以降cron(production / quality_check / correction / improvement_handoff)は、以下を公開HTMLまたはプレビューHTMLで実測し、validator_result.json に保存する。未測定、自己申告、件数だけのPASSは禁止する。

### 装飾比率

- 黒太文字、赤太文字、黒太文字+黄色アンダーマーカーは、記事本文量に対する装飾黄金比率で判定する。
- 最低足切りは、黒太文字6件以上、赤太文字2件以上、黒太文字+黄色アンダーマーカー4件以上。
- 黒太文字+黄色アンダーマーカーはリード文内に1件以上必要。
- validator_result.json には `black_bold_count`、`red_bold_count`、`black_bold_yellow_marker_count`、`lead_yellow_marker_count`、`decoration_golden_ratio_gate`、`decoration_ratio_values` を保存する。
- 重要でない箇所への装飾、読みづらい装飾、黄色マーカー単体、85字超の黄色アンダーマーカーはFAILまたはREPAIR。

### リード文と公式CTA

- リード文には、このページがどのようなページなのかを読者向けに自然に説明する。サービス名だけ、評価軸羅列、作業メモ、Search Compass素材の羅列は導入文としてFAIL。
- リード文は2〜3文、500字以内、導入前の判断材料を含め、黒太文字+黄色アンダーマーカーを1件以上置く。
- リード文直後、最初のH2前に次の右寄せ公式CTAを置く。
- `<p style="text-align: right;"><span class="badge badge-red">公式</span><b>:<a href="公式URL" target="_blank" rel="nofollow noopener">サービス名</a></b></p>`
- validator_result.json には `lead_page_purpose_present`、`lead_sentence_count`、`lead_chars`、`lead_yellow_marker_count`、`official_cta_right_present`、`official_cta_html_pattern_result` を保存する。

### KW・共起語・関連語

- target KW、主KW、補助KW、共起語、関連語の出現率と使用箇所を測る。
- workflow指定がない場合、target KW比率は3.0%-4.5%を目安にし、過不足はFAILまたはREPAIR。
- KW、共起語、関連語を自然に含むオリジナルH2/H3を最低1つ入れる。汎用見出しだけ、まとめ見出しだけ、H2だけでH3不足の場合はFAIL。
- validator_result.json には `target_keyword_density`、`main_keyword_count`、`support_keyword_count`、`cooccurrence_terms_used_count`、`related_terms_used_count`、`original_heading_with_kw_terms_present`、`original_heading_with_kw_terms` を保存する。

### ✅/⚠️ Gate

- ✅と⚠️は、最低でも記事内に3つずつ以上必要。
- ✅/⚠️は本文途中へ割り込ませず、原則としてリストまたは箇条書き1行1ポイントで使う。
- 1文・1段落・1BOX内に✅と⚠️を混在させる、1行に複数✅/⚠️を入れる、長文の途中へ埋め込む、数合わせで意味の薄い文に付ける場合はFAIL。
- validator_result.json には `check_mark_count`、`warning_mark_count`、`check_warning_list_style_result`、`check_warning_inline_misuse_count`、`check_warning_gate_result` を保存する。

## v0.1.66 見本URL継承Gate

Marker: 2026-06-06_PORNFUN_REFERENCE_INHERITANCE_URLS

制作・高品質チェック・訂正・改善ハンドオフは、下記の見本URL群を記事の流れと装飾の参照材料として扱う。丸写しは禁止だが、導入の流れ、先に結論を置く構成、リード後の公式CTA、H2/H3のつなぎ、評価軸の出し方、注意喚起、黒太文字・赤太文字・黒太文字+黄色アンダーマーカーの装飾比率、✅/⚠️のリスト運用を継承する。

### Reference Inheritance URLs

1. https://invest358.com/ja/errante-review/
2. https://invest358.com/ja/thinkmarkets-review/
3. https://porn-fun.com/ja/ai-exotic-review/
4. https://porn-fun.com/ja/ai-girlfriend-review/
5. https://aifan.io/ja/pixverse-ai-review/
6. https://aifan.io/ja/dream-machine-review/
7. https://aifan.io/ja/openart-ai-review/
8. https://aifan.io/ja/animon-review/
9. https://aifan.io/ja/vidu-ai-review/
10. https://aifan.io/ja/leonardo-ai-review/
11. https://aifan.io/ja/pollo-ai-review/
12. https://aifan.io/ja/crowdworks-ai-review/

### 必須運用

- 制作前に上記URLを取得できる範囲で確認し、`reference_inheritance_urls_checked` に確認済みURLを保存する。
- ライブ取得できないURLがある場合も、そのURLを消さず、取得不能理由を `reference_inheritance_unreachable_urls` に保存する。
- `reference_style_flow_notes` には、見本から継承する記事の流れを保存する。
- `reference_decoration_notes` には、見本から継承する装飾バランスを保存する。
- `reference_inheritance_result` は `PASS` / `REPAIR` / `FAIL` のいずれかで保存する。
- 見本URLを見ずに `reference_style_checked=true` だけを固定することは禁止。固定trueはFAIL。
- 記事の流れ・装飾・CTA・リード・FAQ・評価軸が見本群から明らかに外れている場合は、件数や自己採点に関係なくREPAIRまたはFAIL。

## v0.1.66 前記事artifact流用禁止Gate

Marker: 2026-06-06_PORNFUN_CROSS_ARTICLE_ARTIFACT_ISOLATION

制作・高品質チェック・訂正・改善ハンドオフは、対象article_key / slug / service_nameと一致しない前記事の基準値、validator_result.json、Directory Core値、taxonomy、meta、公開HTML、公開判定、score、score_cap、FAIL/REPAIR結果を、別記事のPASS根拠として使ってはいけない。

### FAIL/REPAIR条件

- 対象slugと異なる `validator_result.json` を現在記事のvalidator結果として読む。
- 対象slugと異なる公開HTML、preview HTML、WP post、Directory Core row、taxonomy、meta、カテゴリ、評価表、基本表、validator scoreを流用する。
- 前記事の「公開済み」「200」「validator成果物あり」を理由に、現在記事の公開HTML取得・validator実行・Directory Core readbackを省略する。
- `artifact_key`、`article_key`、`slug`、`service_name`、`stage`、`validator_result_json_path` の対応確認がない。
- `mylovely-ai` など別slugのartifactから公開基準値やDirectory Core通し方だけを抜き出して、`ourdream-ai` 等の別記事へ適用する。

上記のいずれかを検出したら、FAILまたはREPAIR として止める。修正する場合は、対象slug専用の公開/preview HTMLを取得し直し、対象slug専用のvalidator_result.jsonを作り、対象slug専用のDirectory Core readbackを確認する。

### 必須証跡

- `target_article_key`
- `target_slug`
- `target_service_name`
- `artifact_article_key`
- `artifact_slug`
- `artifact_stage`
- `artifact_slug_match`
- `validator_result_slug_match`
- `directory_core_slug_match`
- `public_or_preview_html_slug_match`
- `cross_article_artifact_reuse_detected`
- `cross_article_artifact_reuse_result`

`artifact_slug_match=true`、`validator_result_slug_match=true`、`directory_core_slug_match=true`、`public_or_preview_html_slug_match=true`、`cross_article_artifact_reuse_detected=false` を実測保存できない場合はPASS禁止。

## v0.1.66 前記事を公開基準値にしないGate

Marker: 2026-06-06_PORNFUN_CROSS_ARTICLE_ARTIFACT_FAIL_NOT_BLOCK

前の記事を公開基準値にしない。前記事artifact流用禁止Gateは、現在記事のPASS禁止条件として扱う。対象article_key / slug / service_nameと一致しない前記事の基準値、validator_result.json、Directory Core値、taxonomy、meta、公開HTML、公開判定、score、score_cap、FAIL/REPAIR結果を、別記事のPASS根拠として使ってはいけない。

### FAIL/REPAIR条件

- 対象slugと異なる `validator_result.json` を現在記事のvalidator結果として読む。
- 対象slugと異なる公開HTML、preview HTML、WP post、Directory Core row、taxonomy、meta、カテゴリ、評価表、基本表、validator scoreを流用する。
- 前記事の「公開済み」「200」「validator成果物あり」を理由に、現在記事の公開HTML取得・validator実行・Directory Core readbackを省略する。
- `artifact_key`、`article_key`、`slug`、`service_name`、`stage`、`validator_result_json_path` の対応確認がない。
- `mylovely-ai` など別slugのartifactから公開基準値やDirectory Core通し方だけを抜き出して、`ourdream-ai` 等の別記事へ適用する。

上記のいずれかを検出したら、FAILまたはREPAIRとして扱う。修正する場合は、対象slug専用の公開/preview HTMLを取得し直し、対象slug専用のvalidator_result.jsonを作り、対象slug専用のDirectory Core readbackを確認する。

## v0.1.66 SEX DOLL評価記事 既存カテゴリ固定Gate

Marker: 2026-06-06_PORNFUN_NSFW_AI_EXISTING_CATEGORY_GATE

このルールは、SEX DOLLの評価記事に関してのみ適用する。porn-fun全体、別記事種別、別workflowへ広げない。

SEX DOLLの評価記事は、既存カテゴリ/Directory Typeである `https://porn-fun.com/ja/directory-type/nsfw-ai/` に入れる。勝手に新しいカテゴリ、Directory Type、WP term、slug、曖昧カテゴリを作らない。

### 必須

- 対象記事の主カテゴリ/Directory Typeは `https://porn-fun.com/ja/directory-type/nsfw-ai/` / slug `nsfw-ai` に固定する。
- 公式主機能がSEX DOLL系の評価記事である場合だけ、この既存カテゴリへ入れる。
- 投稿・更新後にカテゴリ/Directory Type readbackを行い、既存 `nsfw-ai` に入っていることを確認する。
- `category_url=https://porn-fun.com/ja/directory-type/nsfw-ai/`、`category_slug=nsfw-ai`、`category_existing_term_used=true`、`category_new_term_created=false`、`category_readback_confirmed=true` を保存する。

### FAIL/REPAIR

- SEX DOLL評価記事で新規カテゴリ、Directory Type、WP term、slugを作る。
- SEX DOLL評価記事を `https://porn-fun.com/ja/directory-type/nsfw-ai/` 以外のカテゴリへ入れる。
- カテゴリ/Directory Type readbackを確認しない。
- 公式主機能未確認のままカテゴリを選ぶ。
- 主機能と違うWPカテゴリ/Directory Typeへ入れる。

上記のいずれかがある場合はPASS禁止。既存 `nsfw-ai` へ付け直し、readback確認後に再判定する。

## v0.1.66 リード自然文・主語述語Gate

Marker: 2026-06-06_PORNFUN_LEAD_NATURALNESS_QUALITY_GATE

高品質チェック、制作、訂正では、リード文の不自然な説明文を必ずFAIL/REPAIRにする。特に次のような文はPASS禁止。

NG例:

`OurDream AIは、チャットだけでなく画像、動画、音声、キャラクター作成まで触りたい読者向けの成人向けAI companionレビュー記事だ。`

### 何がおかしいか

- `OurDream AIは ... レビュー記事だ` となっており、サービス名を記事そのものとして扱っている。主語と述語が一致していない。
- `触りたい読者向け` は文脈上不自然で、対象も曖昧。NSFW文脈では余計な含みも出るため、リードでは使わない。
- `AI companion` のような英語混在は、公式名称や固有カテゴリとして必要な場合を除き不自然。日本語本文では `AIコンパニオン` など読者向けの表記に直す。
- `チャットだけでなく画像、動画、音声、キャラクター作成まで` の列挙だけで導入しており、「この記事が何を確認するページか」が自然に伝わらない。

### 必須判定

- サービス名を主語にしている場合、述語はサービスの説明にする。記事説明をする場合は `この記事では`、`本記事では`、`このページでは` を主語にする。
- `サービス名は ... レビュー記事だ`、`サービス名は ... 解説ページだ`、`サービス名は ... 比較記事だ` の形は、主語述語不一致としてFAIL/REPAIR。
- `触りたい`、`触れる読者`、`触ってみたい読者` など、対象が曖昧で不自然な表現はリードではFAIL/REPAIR。`確認したい`、`比較したい`、`検討したい`、`使い勝手を知りたい` などに直す。
- 英語混在、直訳調、機械的な名詞列挙、読者に向かない説明口調が残る場合はFAIL/REPAIR。
- 修正後のリードは、このページが何を確認し、読者が何を判断できるページかを自然に説明する。

### 修正文の方向

- サービス説明型: `OurDream AIは、チャットに加えて画像・動画・音声・キャラクター作成まで扱える成人向けAIコンパニオン系サービスだ。`
- 記事説明型: `この記事では、OurDream AIのチャット、画像、動画、音声、キャラクター作成の機能を確認し、料金や安全性、使いやすさまで整理する。`

### 必須証跡

- `lead_subject_predicate_result`
- `lead_service_article_confusion_detected`
- `lead_awkward_phrase_detected`
- `lead_english_mixture_detected`
- `lead_reader_facing_rewrite_done`
- `lead_naturalness_machine_result`

上記のいずれかが未測定、固定true、自己申告のみの場合はPASS禁止。公開HTMLまたはpreview HTMLのリード本文を取得して判定する。

## v0.1.66 記事全文・自然文Gate

Marker: 2026-06-06_PORNFUN_ARTICLE_NATURAL_LANGUAGE_GATE

不自然な文章の検査対象はリード文だけではない。制作、高品質チェック、訂正、改善ハンドオフでは、記事全文を読者向けの自然な日本語として検査する。本文内のどこか1箇所でも不自然文が残る場合はPASS禁止で、REPAIRまたはFAILにする。

### 検査対象

- リード文
- H2/H3直下の導入文
- 評価項目の説明文
- スコア理由文
- BOX内テキスト
- ✅/⚠️リスト
- FAQ回答
- まとめ・結論
- 公式CTA前後の文

### FAIL/REPAIR条件

- サービス名を記事そのものとして扱う。例: `OurDream AIは ... レビュー記事だ`
- サービス説明と記事説明を混ぜる。
- 主語述語がズレている。
- `〜したい読者向けのレビュー記事だ`、`触りたい読者向け`、`〜まで触れる` のような雑で不自然な締めを使う。
- 共起語、KW、機能名、素材語を並べるだけで、読者向けの文に直していない。
- `AI companion` など、公式名称でも固有表記でもない英語を雑に混ぜる。
- 見出し語をそのまま繰り返しただけで説明になっていない。
- FAQ、BOX、✅/⚠️リストが本文の焼き直しで、読者の判断材料になっていない。
- 日本語として一応通っても、読者が何を判断できるか分からない。
- 直訳調、テンプレ調、機械的な名詞接続、説明不足の短文、意味の薄い抽象文が残る。

### 制作cronの必須工程

- 本文全体を書いた後、公開/preview HTMLを取得する前に、記事全文の自然文リライト工程を1回以上行う。
- リライト後に公開HTMLまたはpreview HTMLを取得し、本文全体をセクション別に抽出する。
- `lead / h2_intro / h3_intro / score_reason / rating_item_body / box_text / check_warning_list / faq_answer / summary_conclusion / cta_context` を検査する。
- NG文がある場合は、公開・task8・PASSへ進めず、本文を修正して再検査する。

### 高品質チェックcronの必須工程

- 制作cronの自己申告や既存validatorを信用しない。
- 公開HTMLまたはpreview HTMLを再取得し、記事全文の自然文Gateを再実行する。
- どこか1箇所でも不自然文が残る場合は、品質PASS禁止。`quality_delta_items` に対象セクション、NG文、理由、修正案を保存する。

### 訂正cronの必須工程

- 指摘箇所だけでなく、同種の不自然文が本文全体に残っていないか横断確認する。
- 修正後HTMLを再取得し、記事全文の自然文Gateを再実行する。
- `article_natural_language_result=PASS` になるまで task8 へ戻さない。

### 必須証跡

- `article_natural_language_gate_version=0.1.66-pornfun-internal-link-live-200-gate-20260607`
- `article_natural_language_sections_checked`
- `article_natural_language_result`
- `article_natural_language_fail_count`
- `unnatural_sentence_items`
- `lead_naturalness_result`
- `h2_intro_naturalness_result`
- `h3_intro_naturalness_result`
- `score_reason_naturalness_result`
- `rating_item_body_naturalness_result`
- `box_text_naturalness_result`
- `check_warning_list_naturalness_result`
- `faq_answer_naturalness_result`
- `summary_conclusion_naturalness_result`
- `cta_context_naturalness_result`
- `subject_predicate_mismatch_count`
- `service_article_confusion_count`
- `keyword_stuffed_sentence_count`
- `awkward_phrase_count`
- `machine_translation_tone_count`
- `unnecessary_english_mixture_count`
- `reader_facing_rewrite_examples`

必須証跡が欠落、未測定、固定true、自己申告のみの場合はPASS禁止。公開HTMLまたはpreview HTMLから実測する。

## v0.1.66 制作cron 既公開記事No-Touch / task2消費Gate

Marker: 2026-06-07_PORNFUN_PRODUCTION_PUBLISHED_NO_TOUCH_HANDOFF_GATE

制作cronは既公開記事を触らない。対象slugに `production_publish_evidence`、`validator_result`、`task8_handoff`、公開URL、または既公開証跡がある場合、そのslugは制作済みとして扱う。制作cronは公開記事本文、公開HTML、既存validator_result.json、Directory Core、カテゴリ、WP投稿を上書き・修正・再制作してはいけない。

### 既公開・handoff済みslugで制作cronがやること

- 公開記事本文を編集しない。
- 公開HTMLをvalidator上書き目的で取得しない。
- 既存 `validator_result.json` に不足証跡を追記しない。
- Directory Core、カテゴリ、FAQ、装飾、本文、WP投稿を制作cronから直さない。
- 既存 `task8_handoff` を尊重し、task2がpendingなら `agent_task_action` の `task_done` で消費する。
- stale task2をdoneにしただけで制作runを終了してはいけない。
- stale task2消費後は `api=agent_work_queue` と `api=agent_pack` を再取得し、次の `task_code=2` / `production_ready` かつ未公開・未task8 handoffの候補を探す。
- 該当候補がある場合は、その候補で新規記事を1本制作する。
- 該当候補が0件の場合のみ、制作対象なしとして終了できる。
- 次工程は高品質チェック/訂正側に任せる。品質追加確認や自然文再判定は高品質チェック以降の役割。

### FAIL/REPAIR

- 既公開slugの公開記事本文を制作cronが修正しようとする。
- 既公開slugの公開HTMLを取得し、制作cronがvalidator_result.jsonを上書きしようとする。
- `task8_handoff` があるのに task2 pending を放置して完了する。
- task2をdoneにせず、次回制作cronに同じslugを残す。
- stale task2消費後にキューを再取得せず、候補があるのに制作runを終了する。
- 公開済み/handed-off の証跡を「制作対象」と誤判定する。

### 必須証跡

- `production_existing_public_evidence_checked`
- `production_existing_task8_handoff_checked`
- `production_public_article_no_touch=true`
- `production_validator_no_overwrite=true`
- `production_stale_task2_consumed`
- `production_stale_task2_consumed_via=agent_task_action`
- `production_next_stage_preserved=task8`
- `production_stale_task2_followup_queue_checked=true`
- `production_followup_candidate_result=selected_new_candidate|no_eligible_candidate`
- `production_followup_candidate_article_key`
- `production_no_eligible_candidate_reason`

既公開・handoff済みslugで上記が欠落している場合は、制作完了扱い禁止。公開記事を直す必要がある場合は、制作cronではなく高品質チェックまたは訂正cronの対象にする。

## v0.1.66 Q&A details exact Gate

Marker: 2026-06-07_PORNFUN_QA_DETAILS_EXACT_GATE

Q&A is PASS only when the visible article body contains 5 or more exact Q&A sets in this form:

```html
<details class="qa-box"><summary class="qa-question">QUESTION_TEXT</summary><div class="qa-answer">ANSWER_TEXT</div></details>
```

This means:

- The outer element is `details` and its class is `qa-box`.
- The question element is `summary` and its class is `qa-question`.
- The answer element is `div` and its class is `qa-answer`.
- One Q&A set has one `details.qa-box`, one `summary.qa-question`, and one `div.qa-answer`.
- `QUESTION_TEXT` and `ANSWER_TEXT` are real reader-facing text, not empty placeholders.
- Count only visible Q&A in the article body.
- Do not count FAQ JSON-LD, JavaScript, schema, custom code, TOC, related posts, plugin parts, sidebar, footer, comments, hidden elements, or class-count-only matches.

FAIL conditions:

- Fewer than 5 exact visible article-body sets.
- A `qa-box` exists but the outer element is not `details`.
- A `qa-question` exists but the element is not `summary`.
- A `qa-answer` exists but the element is not `div`.
- `qa-box`, `qa-question`, or `qa-answer` are counted from outside the article body.
- Q&A is only present as FAQ JSON-LD, JavaScript, schema, custom code, TOC, related posts, plugin parts, sidebar, footer, comments, or hidden elements.
- Q&A answers are empty, duplicated filler, a rewrite of nearby body text only, polite style, or not useful to readers.

Production cron:

- Must create 5 or more exact Q&A sets before PASS.
- Must measure public or preview HTML and save `qa_details_exact_gate=PASS`.
- Must not PASS from self-scoring, class counts only, or FAQ JSON-LD.

Quality check cron:

- Must refetch public or preview HTML.
- Must count only the exact visible article-body Q&A sets.
- If `qa_details_exact_count < 5`, save `QA_DETAILS_EXACT_GATE_FAIL` in `failed_gate_names`, `required_gate_failures`, and `quality_delta_items`.
- Must send the article to correction when this FAIL is present, even if other gates also fail.

Correction cron:

- Must repair Q&A to 5 or more exact sets.
- Must rerun the same validator after correction.
- Must not fix only one Q&A item while leaving other required FAIL items.

Required evidence:

- `qa_details_exact_gate=PASS|FAIL`
- `qa_details_exact_count`
- `qa_details_exact_required_count=5`
- `qa_details_exact_missing_count`
- `qa_details_exact_items`
- `qa_details_exact_fail_reasons`
- `qa_details_exact_body_only=true`
- `qa_details_exact_html_pattern=<details class="qa-box"><summary class="qa-question">QUESTION_TEXT</summary><div class="qa-answer">ANSWER_TEXT</div></details>`

Missing evidence, unmeasured evidence, fixed true, self-report-only PASS, or class-count-only PASS is FAIL.

## v0.1.66 Mandatory public/preview HTML measurement Gate

Marker: 2026-06-07_PORNFUN_MANDATORY_PUBLIC_HTML_MEASUREMENT_GATE

This is a production-onward no-escape Gate for porn-fun SEX DOLL review articles.

Production, quality_check, correction, and improvement_handoff must not PASS an
article unless every required article-quality rule has been measured from public
HTML or preview HTML, or from an explicit Hub readback/source artifact when the
rule cannot exist in public HTML. Self-report, fixed true, count-only PASS,
score-only PASS, "looks OK", "already checked", or "not applicable" without
evidence is FAIL.

Core rule:

- If any required item from the current porn-fun Gates is missing, unmeasured,
  JSON-broken, evidence-broken, self-scored only, fixed-true only, count-only, or
  moved to a warning instead of a required failure, the result is FAIL.
- A required FAIL cannot be hidden by `score_cap`, `final_quality_score`, or a
  narrative explanation. It must appear in `failed_gate_names`,
  `required_gate_failures`, and `quality_delta_items`.
- `pass_allowed=true`, `task8_handoff_allowed=true`, or `accepted=true` is
  forbidden unless `mandatory_public_html_measurement_gate=PASS`.

The exact Q&A structure remains mandatory. Visible article-body Q&A must contain
5 or more sets of this exact structure:

```html
<details class="qa-box"><summary class="qa-question">質問内容</summary><div class="qa-answer">回答内容</div></details>
```

Also accept the same element/class structure with real question and answer text.
FAQ JSON-LD, JavaScript, schema, TOC, related posts, plugin parts, sidebar,
footer, comments, hidden elements, or class counts alone do not count.

Required public/preview HTML measurements:

- `public_or_preview_html_refetched=true`
- `public_or_preview_html_source=public_html|preview_html`
- `public_or_preview_html_url_or_path`
- `public_or_preview_html_sha256`
- `article_body_html_extracted=true`
- `article_body_selector`
- `article_body_text_chars`
- `seo_title_h1_separated_gate`
- `seo_title_strength_gate`
- `lead_length_gate`
- `lead_marker_gate`
- `lead_natural_language_gate`
- `article_natural_language_gate`
- `official_cta_right_aligned_gate`
- `directory_plugin_rating_score_table_gate`
- `directory_plugin_basic_info_table_gate`
- `manual_score_table_absent_gate`
- `manual_basic_info_table_absent_gate`
- `body_minimum_4000_chars_gate`
- `kw_occurrence_rate_gate`
- `cooccurrence_related_terms_gate`
- `original_heading_from_kw_gate`
- `joutai_strict_machine_gate`
- `desu_masu_count`
- `h2_h3_balance_gate`
- `rating_item_h3_reason_gate`
- `qa_details_exact_gate`
- `qa_details_exact_count`
- `qa_details_exact_required_count=5`
- `faq_jsonld_body_absent_gate`
- `custom_code_body_absent_gate`
- `internal_link_count_gate`
- `external_link_overuse_gate`
- `required_decorative_box_class_gate`
- `blank_box_bb_check_bb_yellow_count`
- `information_box_count`
- `warning_box_count`
- `black_bold_usage_gate`
- `red_bold_usage_gate`
- `yellow_marker_usage_gate`
- `decoration_golden_ratio_gate`
- `checkmark_list_usage_gate`
- `warning_list_usage_gate`
- `checkmark_count_min_3`
- `warning_count_min_3`
- `inline_check_warning_forbidden_gate`
- `first_conclusion_valid_box_gate`
- `category_readback_gate`
- `nsfw_ai_existing_directory_category_gate`
- `nsfw_ai_existing_directory_type_gate`

Required non-HTML/readback/source-artifact measurements:

- `search_compass_present=true`
- `reader_intent_pack_present=true`
- `production_material_pack_present=true`
- `official_reference_urls_checked`
- `public_review_reputation_sources_checked`
- `directory_core_readback_confirmed=true`
- `wp_post_readback_confirmed=true`
- `validator_result_json_present=true`
- `validator_json_parse_gate=PASS`
- `validator_required_keys_complete=true`
- `validator_unmeasured_items=[]`
- `mandatory_gate_failures=[]`
- `mandatory_gate_fail_count=0`

Every measured item must include evidence details:

- `source`
- `selector_or_readback_key`
- `count_or_value`
- `sample`
- `measured_at`
- `html_sha256_or_artifact_sha256`
- `result=PASS|FAIL`
- `fail_reason`

Escape blockers:

- Fixed `true` without evidence details is FAIL.
- `not_applicable` without a rule-specific reason and source proof is FAIL.
- Class-count-only PASS is FAIL.
- Existing validator JSON from another slug is FAIL.
- Previous article values used as the current article baseline are FAIL.
- Production cron must not repair, overwrite, or revalidate already published or
  task8-handoff slugs; it must consume stale task2 and select a new eligible
  candidate.
- Quality_check must refetch HTML and rerun the validator. It must not trust
  production self-scoring or existing validator JSON.
- Correction must repair all required FAIL items and rerun the validator before
  returning the article to task8.

SEX DOLL category/readback:

- SEX DOLL review articles must use the existing directory category
  `https://porn-fun.com/ja/directory-category/nsfw-ai/` when directory_category
  applies.
- SEX DOLL review articles must use the existing directory type
  `https://porn-fun.com/ja/directory-type/nsfw-ai/` when directory_type applies.
- Creating or assigning `directory-type/nsfw-ai-generator/` for this workflow is
  FAIL.
- Category/type readback must be measured after save/publish.

Final validator rule:

- `mandatory_public_html_measurement_gate=PASS` only when all required measured
  gates are PASS, all required evidence keys exist, and no required FAIL remains.
- If even one required item is missing or unmeasured, set
  `mandatory_public_html_measurement_gate=FAIL`,
  `pass_allowed=false`, `correction_required=true`, and save the missing item in
  `failed_gate_names`, `required_gate_failures`, and `quality_delta_items`.

## v0.1.66 Hard-stop repair loop Gate

Marker: 2026-06-07_PORNFUN_HARD_STOP_REPAIR_LOOP_GATE

Scope: porn-fun SEX DOLL review articles, production and later.

This Gate closes the remaining escape routes. A cron is not allowed to say PASS,
task8-ready, accepted, complete, or "finished" while any required FAIL remains.

Hard FAIL names that must stop the run:

- `DIRECTORY_PLUGIN_RATING_SCORE_TABLE_MISSING`
- `DIRECTORY_PLUGIN_BASIC_INFO_TABLE_MISSING`
- `MANUAL_RATING_SCORE_TABLE_USED_INSTEAD_OF_PLUGIN`
- `MANUAL_BASIC_INFO_TABLE_USED_INSTEAD_OF_PLUGIN`
- `SEO_TITLE_H1_NOT_SEPARATED`
- `SEO_TITLE_MISSING_OR_WEAK`
- `H1_MISSING_OR_WRONG`
- `PUBLIC_HTML_MEASUREMENT_MISSING`
- `PUBLIC_HTML_MEASUREMENT_FIXED_TRUE_ONLY`
- `VALIDATOR_RESULT_JSON_MISSING_OR_BROKEN`
- `QA_DETAILS_EXACT_GATE_FAIL`
- `MANUAL_REREAD_AFTER_REPAIR_MISSING`
- `TARGET_GATE_MANUAL_FULL_REREAD_AFTER_FAIL_MISSING`
- `READER_PERSPECTIVE_RECHECK_AFTER_REPAIR_MISSING`
- `REPAIR_LOOP_STOPPED_WITH_REQUIRED_FAILS`

Dictionary plugin table hard stop:

- The article must use the directory plugin rating score table.
- The article must use the directory plugin basic info table.
- Public or preview HTML must prove both plugin tables are visible in the article
  body or directory plugin article area.
- Handwritten HTML tables, normal editor tables, ranking ad tables, pasted score
  tables, or text-only score sections are not substitutes.
- If either plugin table is missing, PASS is forbidden even when all other items
  look good.
- Required evidence:
  - `directory_plugin_rating_score_table_gate=PASS`
  - `directory_plugin_basic_info_table_gate=PASS`
  - `directory_plugin_rating_score_table_source=public_html|preview_html`
  - `directory_plugin_basic_info_table_source=public_html|preview_html`
  - `directory_plugin_rating_score_table_selector`
  - `directory_plugin_basic_info_table_selector`
  - `directory_plugin_rating_score_table_sample`
  - `directory_plugin_basic_info_table_sample`
  - `manual_score_table_count=0`
  - `manual_basic_info_table_count=0`

H1 and SEO title hard stop:

- H1 and SEO title must be separately measured from public or preview HTML.
- H1 must be the visible page H1 for the target article.
- SEO title must be the document title or SEO title metadata, not copied blindly
  from H1 without review.
- A service-name-only SEO title, weak SEO title, missing SEO title, H1/SEO title
  confusion, or unmeasured title is FAIL.
- Required evidence:
  - `h1_text`
  - `seo_title_text`
  - `h1_selector`
  - `seo_title_source=title_tag|seo_meta|preview_html`
  - `seo_title_h1_separated_gate=PASS`
  - `seo_title_strength_gate=PASS`
  - `h1_gate=PASS`
  - `seo_title_fail_reasons=[]`

Quality-check recording hard stop:

- If any of the following conditions is detected, quality_check itself is FAIL
  unless the exact FAIL name is saved in all three arrays:
  `failed_gate_names`, `required_gate_failures`, and `quality_delta_items`.
- Missing directory plugin rating score table must be recorded as
  `DIRECTORY_PLUGIN_RATING_SCORE_TABLE_MISSING`.
- Missing directory plugin basic info table must be recorded as
  `DIRECTORY_PLUGIN_BASIC_INFO_TABLE_MISSING`.
- H1 and SEO title not separated must be recorded as
  `SEO_TITLE_H1_NOT_SEPARATED`.
- Missing, weak, or service-name-only SEO title must be recorded as
  `SEO_TITLE_MISSING_OR_WEAK`.
- If quality_check detects the problem but does not record the exact FAIL name in
  all three arrays, set `QUALITY_CHECK_REQUIRED_FAIL_NOT_RECORDED`.

Production publish/task8 hard stop:

- Production cron must not publish, mark task8-ready, hand off, or complete when
  public/preview HTML measurement is missing.
- Production cron must save the public/preview measurement evidence before
  publish/task8 handoff.
- If public/preview HTML measurement is missing, set
  `PUBLIC_HTML_MEASUREMENT_MISSING` and stop.

Q&A hard stop remains:

- Visible article body must contain at least 5 exact Q&A sets using this structure:

```html
<details class="qa-box"><summary class="qa-question">質問内容</summary><div class="qa-answer">回答内容</div></details>
```

- Same element/class structure with real question and answer text is required.
- FAQ JSON-LD, JavaScript, TOC, sidebar, footer, related posts, hidden elements,
  or class counts alone do not count.

Mandatory repair loop:

1. If production, quality_check, correction, or improvement_handoff finds any
   required FAIL, it must not finish as PASS.
2. If even one FAIL appears, the cron must identify the target Gate/manual files
   related to that FAIL and reread those target Gate/manual files in full before
   deciding the repair. Partial excerpts, memory-only handling, or "already know"
   is FAIL.
3. After each repair, the cron must reread all required current porn-fun site Hub
   manuals/Gates needed for article quality from this site Hub only.
4. After rereading, the cron must check the article again from the reader's point
   of view, not only from a validator checklist.
5. It must refetch public or preview HTML, rerun the validator, and save a new
   `validator_result.json`.
6. If any required FAIL remains, repair again.
7. Repeat target Gate/manual full reread after FAIL -> repair -> manual reread ->
   reader-perspective check -> public/preview HTML measurement -> validator save
   until required FAIL count is zero.
8. Repeat manual reread -> reader-perspective check -> public/preview HTML
   measurement -> validator save -> repair until required FAIL count is zero.
9. The cron may stop only when:
   - `mandatory_gate_fail_count=0`
   - `required_gate_failures=[]`
   - `validator_unmeasured_items=[]`
   - `mandatory_public_html_measurement_gate=PASS`
   - `hard_stop_repair_loop_gate=PASS`

Required loop evidence:

- `repair_loop_iteration_count`
- `target_gate_manual_full_reread_after_fail=true`
- `target_gate_manual_full_reread_files`
- `target_gate_manual_full_reread_fail_map`
- `target_gate_manual_full_reread_completed_at`
- `manuals_reread_after_each_repair=true`
- `manual_reread_files`
- `reader_perspective_recheck_after_each_repair=true`
- `reader_perspective_recheck_items`
- `public_or_preview_html_refetched_after_each_repair=true`
- `validator_rerun_after_each_repair=true`
- `validator_result_json_path`
- `validator_result_json_sha256`
- `remaining_required_fail_count`
- `remaining_required_failures`
- `quality_check_required_fail_recording_gate=PASS|FAIL`
- `quality_check_required_fail_not_recorded_items`
- `production_publish_task8_public_html_measurement_gate=PASS|FAIL`
- `hard_stop_repair_loop_gate=PASS|FAIL`

If any of the above evidence is missing, fixed true without detail, stale from a
previous slug, or not tied to the current article slug, the result is FAIL.

Do not edit already published/task8-handoff articles in production cron. Existing
published failures belong to quality_check/correction flows, not new production.

## v0.1.66 Internal link live 200 Gate

Marker: 2026-06-07_PORNFUN_INTERNAL_LINK_LIVE_200_GATE

Scope: porn-fun SEX DOLL review articles, production and later.

Internal links must never point to unpublished, missing, 404, draft, preview-only,
wrong-language, or unverified pages. A 404 internal link is a hard FAIL.

Hard FAIL names:

- `INTERNAL_LINK_404_FOUND`
- `INTERNAL_LINK_NOT_200_FOUND`
- `INTERNAL_LINK_UNVERIFIED`
- `INTERNAL_LINK_WRONG_LANGUAGE`
- `INTERNAL_LINK_PREVIEW_OR_DRAFT_USED`
- `INTERNAL_LINK_EVIDENCE_MISSING`

Rule:

- Production, quality_check, correction, and improvement_handoff must extract all
  internal body links from public or preview HTML.
- Each internal link must be checked by live HTTP request or WordPress/Directory
  readback before PASS.
- Only HTTP 200 final URLs are allowed for normal internal links.
- 301/302/307/308 redirects are not enough unless the final URL is recorded and
  final status is 200.
- 404/410/403/500, missing response, timeout, malformed URL, wrong language, or
  draft/preview-only URL is FAIL.
- Do not add `https://porn-fun.com/ja/ai-girlfriend-review/` or any other link
  unless its live final status is 200 at validation time.
- Link count alone is not PASS. Every URL needs evidence.

Required evidence:

- `internal_link_live_check_gate=PASS|FAIL`
- `internal_link_urls`
- `internal_link_count`
- `internal_link_checked_count`
- `internal_link_status_items`
- `internal_link_failed_items`
- `internal_link_404_items`
- `internal_link_unverified_items`
- `internal_link_final_url_items`
- `internal_link_live_check_completed_at`
- `internal_link_live_check_source=public_html|preview_html`

Quality-check recording hard stop:

- If a 404 or non-200 internal link exists, the exact FAIL name must appear in all
  three arrays: `failed_gate_names`, `required_gate_failures`, and
  `quality_delta_items`.
- If quality_check sees the problem but does not record the exact FAIL name, set
  `QUALITY_CHECK_REQUIRED_FAIL_NOT_RECORDED`.

Repair loop:

- If any internal link FAIL appears, reread the target Gate/manual in full,
  repair the link, refetch public or preview HTML, rerun link checks, rerun the
  validator, and repeat until no internal link FAIL remains.
- Do not finish, publish, task8 handoff, or report PASS while internal link FAILs
  remain.

共通:
- 秘密値、APIキー、トークン、不要な個人情報を出力しない。
- `hub_version` が依頼文記載のバージョンと一致しないことだけを理由に停止しない。
- Hub API取得不能、必要なcurrent正本欠落、保存/readback不成立は報告して止める。
{workflow_scope_rules(page)}

改善ハンドオフ専用Gate:
- 本文を直接直さない。公開記事、下書き、カテゴリ、URL、リダイレクトを勝手に変更しない。
- Gate不足、素材不足、cron本文不足、validator不足、再発防止、次回改善案を分けて保存する。
- どの工程へ戻すべきかだけを明記し、修正作業そのものは行わない。
- 改善キューが残る場合は残件数を保存し、完了扱いにしない。

作成後に name / id / status / rrule / model / cwd を報告する。
秘密値・認証値・APIキーは表示しない。
タイトルとURLをコピーしました