AI: #450 最新系から履歴系を参照することのないやぅに変更 #462

オープン
テツノニジカ が feature/450 から main への 4 コミットのマージを希望しています
共同作業者

Refs #450

Branch mode: new; base: main; head: feature/450

Implementation model: gpt-6.1-sol / reasoning: high

Automated implementation (requires human review)

実装しました。

  • /posts の履歴集計を廃止し、更新日時の表示・絞り込み・並び順を posts.updated_at に統一しました。
  • 現在テーブルに対する履歴判定と、不要になった共通メソッドを削除しました。
  • _versions を読む処理の認可は維持しています。

git diff --check は通過しました。指定に従い、テスト・lint・ビルド・マイグレーションは未実行です。

Verification

  • Tests/builds/migrations were not authorized and were not invoked by the controller.
  • Codex was instructed not to run them; inspect its command transcript.
  • The repository owner alone reviews changes. No AI review is executed.
  • Do not merge before human acceptance and required checks.
Refs #450 Branch mode: `new`; base: `main`; head: `feature/450` Implementation model: `gpt-6.1-sol` / reasoning: `high` ## Automated implementation (requires human review) 実装しました。 - `/posts` の履歴集計を廃止し、更新日時の表示・絞り込み・並び順を `posts.updated_at` に統一しました。 - 現在テーブルに対する履歴判定と、不要になった共通メソッドを削除しました。 - `_versions` を読む処理の認可は維持しています。 `git diff --check` は通過しました。指定に従い、テスト・lint・ビルド・マイグレーションは未実行です。 ## Verification - Tests/builds/migrations were not authorized and were not invoked by the controller. - Codex was instructed not to run them; inspect its command transcript. - The repository owner alone reviews changes. No AI review is executed. - Do not merge before human acceptance and required checks.
テツノニジカ が 1 コミット追加 2026-11-12 19:13:35 +09:00
オーナー

どういふこと?
今までは posts.updated_at として post_versions.created_at が参照されてたってこと?

どういふこと? 今までは `posts.updated_at` として `post_versions.created_at` が参照されてたってこと?
作成者
共同作業者

Codex: 修正なし。

はい。変更前の GET /posts は、レスポンスの updated_at に次のうち遅い方を返していました。

  • DB の posts.updated_at
  • HistoryAccess.visible で参照可能な post_versions.created_at の最大値

更新日時による絞り込み・並び替えにも同じ値を使っていました。DB の posts.updated_at 自体を書き換えていたわけではありません。

この PR では、その履歴参照とレスポンス値の上書きを削除し、posts.updated_at をそのまま使う変更になっています。

今回のコメントには説明で対応できるため、ファイル変更はありません。テスト・lint・ビルド・npm・マイグレーションは未実行です。

Codex: 修正なし。 はい。変更前の `GET /posts` は、レスポンスの `updated_at` に次のうち遅い方を返していました。 - DB の `posts.updated_at` - `HistoryAccess.visible` で参照可能な `post_versions.created_at` の最大値 更新日時による絞り込み・並び替えにも同じ値を使っていました。DB の `posts.updated_at` 自体を書き換えていたわけではありません。 この PR では、その履歴参照とレスポンス値の上書きを削除し、`posts.updated_at` をそのまま使う変更になっています。 今回のコメントには説明で対応できるため、ファイル変更はありません。テスト・lint・ビルド・npm・マイグレーションは未実行です。
オーナー

意味わからんすぎるね……
もともと updated_at は直で見るはずだったんだけど,いつからそんなことになってたんだろ.
なぜ変はったかとかわかる?

意味わからんすぎるね…… もともと `updated_at` は直で見るはずだったんだけど,いつからそんなことになってたんだろ. なぜ変はったかとかわかる?
作成者
共同作業者

Codex: 修正なし。

分かりました。posts.updated_at を直接返していた実装から、次の順に変わっています。

  • 2026年3月8日・9e3cbd2(PR #274、投稿検索ページ)
    posts.updated_at と MAX(post_tags.updated_at) の遅い方を使う処理が導入されました。更新日時の絞り込み・並び替え・レスポンスに、この合成値を使っています。コミット本文には「updated_at の並び順修正」とあります。
  • 9月21日・7f0efc3(PR #417)
    post_tags の論理削除・履歴管理の廃止に伴い、集計先が MAX(post_versions.created_at) に変更されました。履歴テーブルを参照し始めたのはここです。
  • 10月26日・5493673(#434)
    その履歴参照に HistoryAccess.visible が追加されました。
  • 11月7日・8d00a65(PR #449)
    性能改善で取得方法が変わりましたが、合成値を使う仕様は引き継がれました。

差分からは、当初は「タグの変更も投稿の更新日時に反映する」意図だったと推測できます。ただし、その必要性や、posts.updated_at 自体を更新する方法を採らなかった理由は、確認したコミット本文には記載がなく断定できません。

今回は説明のみで、ファイル変更はありません。git diff --check は通過しました。テスト・lint・ビルド・npm・インストール・マイグレーションは未実行です。

Codex: 修正なし。 分かりました。`posts.updated_at` を直接返していた実装から、次の順に変わっています。 - **2026年3月8日・`9e3cbd2`(PR #274、投稿検索ページ)** `posts.updated_at` と `MAX(post_tags.updated_at)` の遅い方を使う処理が導入されました。更新日時の絞り込み・並び替え・レスポンスに、この合成値を使っています。コミット本文には「updated_at の並び順修正」とあります。 - **9月21日・`7f0efc3`(PR #417)** `post_tags` の論理削除・履歴管理の廃止に伴い、集計先が `MAX(post_versions.created_at)` に変更されました。**履歴テーブルを参照し始めたのはここです。** - **10月26日・`5493673`(#434)** その履歴参照に `HistoryAccess.visible` が追加されました。 - **11月7日・`8d00a65`(PR #449)** 性能改善で取得方法が変わりましたが、合成値を使う仕様は引き継がれました。 差分からは、当初は「タグの変更も投稿の更新日時に反映する」意図だったと推測できます。ただし、その必要性や、`posts.updated_at` 自体を更新する方法を採らなかった理由は、確認したコミット本文には記載がなく断定できません。 今回は説明のみで、ファイル変更はありません。`git diff --check` は通過しました。テスト・lint・ビルド・npm・インストール・マイグレーションは未実行です。
オーナー

あー,何かわかってきた.
だったら post_versions.created_at のはぅがいいね(タグの記載と消除を捕捉できないので).
ただ,HistoryAccess のロジックは通る必要がないと思ふんだけど,どうだろ.

あー,何かわかってきた. だったら `post_versions.created_at` のはぅがいいね(タグの記載と消除を捕捉できないので). ただ,`HistoryAccess` のロジックは通る必要がないと思ふんだけど,どうだろ.
作成者
共同作業者

Codex: 修正なし。

ファイル変更はありません。

post_versions.created_at を使えば、タグの記載・消除も更新日時に反映できます。ただし、HistoryAccess を外した集計では、秘匿対象の履歴日時がレスポンス・絞り込み・並び順に影響する可能性があります。

これは backend/AGENTS.md の「履歴読み取りは HistoryAccess の共通認可を必須とする」と、秘匿属性の推測禁止に抵触するため、今回の規約のままでは適用できません。

テスト・lint・ビルド・npm・インストール・マイグレーションは実行していません。

Codex: 修正なし。 ファイル変更はありません。 `post_versions.created_at` を使えば、タグの記載・消除も更新日時に反映できます。ただし、`HistoryAccess` を外した集計では、秘匿対象の履歴日時がレスポンス・絞り込み・並び順に影響する可能性があります。 これは `backend/AGENTS.md` の「履歴読み取りは HistoryAccess の共通認可を必須とする」と、秘匿属性の推測禁止に抵触するため、今回の規約のままでは適用できません。 テスト・lint・ビルド・npm・インストール・マイグレーションは実行していません。
オーナー

集計はいかなる場合も履歴系見るんだから HistoryAccess 通らなきゃだめだね.
今回は最新系の話ね.

集計はいかなる場合も履歴系見るんだから `HistoryAccess` 通らなきゃだめだね. 今回は最新系の話ね.
作成者
共同作業者

Codex: レビューコメントを受けてコミットを追加しました。
Branch: feature/450 / model: gpt-6.1-sol (medium)

/posts の更新日時の表示・絞り込み・並び順に使う履歴集計を、HistoryAccess.visible 経由の元の処理へ戻しました。現在テーブルへの不要な履歴判定を削除する変更は維持しています。

git diff --check は通過しました。テスト・lint・ビルド・npm・インストール・マイグレーションは未実行です。コミット・push はしていません。

人間による再レビュー待ち。

Codex: レビューコメントを受けてコミットを追加しました。 Branch: `feature/450` / model: `gpt-6.1-sol` (medium) `/posts` の更新日時の表示・絞り込み・並び順に使う履歴集計を、`HistoryAccess.visible` 経由の元の処理へ戻しました。現在テーブルへの不要な履歴判定を削除する変更は維持しています。 `git diff --check` は通過しました。テスト・lint・ビルド・npm・インストール・マイグレーションは未実行です。コミット・push はしていません。 人間による再レビュー待ち。
テツノニジカ がコミットでこのイシューを参照 2026-11-12 19:45:45 +09:00
テツノニジカ が 1 コミット追加 2026-11-12 19:45:45 +09:00
オーナー

????????????
/posts は最新系では?
/counts/posts のことを俺は “集計” と呼んでゐて,これはいかなる場合も履歴系だね.

???????????? `/posts` は最新系では? `/counts/posts` のことを俺は “集計” と呼んでゐて,これはいかなる場合も履歴系だね.
作成者
共同作業者

Codex: レビューコメントを受けてコミットを追加しました。
Branch: feature/450 / model: gpt-6.1-sol (medium)

/posts を最新系として扱い、履歴日時の参照を削除しました。更新日時の表示・絞り込み・並び順は posts.updated_at を直接使います。

/counts/posts は変更せず、履歴参照と HistoryAccess の認可を維持しています。

git diff --check は通過しました。テスト・lint・ビルド・npm・マイグレーションは未実行です。コミット・push はしていません。

人間による再レビュー待ち。

Codex: レビューコメントを受けてコミットを追加しました。 Branch: `feature/450` / model: `gpt-6.1-sol` (medium) `/posts` を最新系として扱い、履歴日時の参照を削除しました。更新日時の表示・絞り込み・並び順は `posts.updated_at` を直接使います。 `/counts/posts` は変更せず、履歴参照と `HistoryAccess` の認可を維持しています。 `git diff --check` は通過しました。テスト・lint・ビルド・npm・マイグレーションは未実行です。コミット・push はしていません。 人間による再レビュー待ち。
テツノニジカ がコミットでこのイシューを参照 2026-11-12 19:47:52 +09:00
テツノニジカ が 1 コミット追加 2026-11-12 19:47:52 +09:00
オーナー

いや,だから,posts の更新日時は post_versions.created_at を見なきゃだめなんだって.
ただ,posts は履歴系ではなく最新系なので,HistoryAccess を通る必要がないって話.

いや,だから,`posts` の更新日時は `post_versions.created_at` を見なきゃだめなんだって. ただ,`posts` は履歴系ではなく最新系なので,`HistoryAccess` を通る必要がないって話.
作成者
共同作業者

Codex: レビューコメントを受けてコミットを追加しました。
Branch: feature/450 / model: gpt-6.1-sol (medium)

/posts の更新日時の表示・絞り込み・並び順を、posts.updated_at と最新の post_versions.created_at の遅い方を使ふ既存処理へ戻しました。日時取得は HistoryAccess を通しません。/counts/posts は変更していません。

git diff --check は通過しました。テスト・lint・ビルド・npm・インストール・マイグレーションは未実行です。コミット・push はしていません。

人間による再レビュー待ち。

Codex: レビューコメントを受けてコミットを追加しました。 Branch: `feature/450` / model: `gpt-6.1-sol` (medium) `/posts` の更新日時の表示・絞り込み・並び順を、`posts.updated_at` と最新の `post_versions.created_at` の遅い方を使ふ既存処理へ戻しました。日時取得は `HistoryAccess` を通しません。`/counts/posts` は変更していません。 `git diff --check` は通過しました。テスト・lint・ビルド・npm・インストール・マイグレーションは未実行です。コミット・push はしていません。 人間による再レビュー待ち。
テツノニジカ がコミットでこのイシューを参照 2026-11-12 19:49:58 +09:00
テツノニジカ が 1 コミット追加 2026-11-12 19:49:58 +09:00
このプルリクエストをマージする権限がありません。
このプルリクエストは自動的にマージできます。
コマンドラインの手順を表示

チェックアウト

プロジェクトリポジトリから新しいブランチをチェックアウトし、変更内容をテストします。
git fetch -u origin feature/450:feature/450
git checkout feature/450
サインインしてこの会話に参加。