Loading...

[Update] MBC CQRS サーバーレス フレームワーク v1.2.6 をリリース

MBC CQRS サーバーレス フレームワーク v1.2.6 をリリースしました。

本リリースは、Read-Your-Writes(RYW)一貫性機能の改善、新たなアンチパターン検出器の追加、MCPサーバーの内部整合性向上を中心とした機能強化リリースです。既存プロジェクトへの破壊的変更はなく、移行作業は不要です。

主な変更点

新機能

core: Repository RYW(Read-Your-Writes)の改善

v1.2.6以前は、書き込んだ本人のRYWセッションがTTL切れまで残存していたため、他のユーザーや外部システムが同じアイテムをさらに新しいバージョンへ更新しても、書き込んだ本人だけが古い自分のコマンドを見続けてしまう「stale override」のウィンドウが存在していました。

v1.2.6では、データテーブルがセッションバージョンに追いついた/追い越した時点で Repository がバックグラウンドで自動的にセッションをパージするようになりました。Stream同期が完了すれば即座に最新データが見えるようになり、stale-overrideウィンドウは消滅します。

  • getItem: existing.version >= session.version の場合、バックグラウンドでセッションをパージし、永続化済みデータを直接返却(不要な Command テーブル読み取りをスキップ)
  • listItemsByPk: マージループ中に同期済みセッションをその場でクリーンアップ
  • listItems(RDSパス): セッションごとのチェックを Promise.all で並列化し、直列N+1のレイテンシを解消
  • 新しいオプション mergeOptions.getVersion により、RDS行が既に追いついていることを証明できる場合は追加のDynamoDB GetItemをスキップ可能
  • SessionService.delete()DynamoDbService.deleteItem() を追加(fire-and-forgetでの利用に安全)

後方互換性: getVersion はオプション。RYW_SESSION_TTL_MINUTES 未設定のプロジェクトは影響を受けません。

mcp-server: AP021 アンチパターン検出器を追加

mbc_check_anti_patterns ツールに新たなアンチパターン検出器 AP021: CommandService 内で publishAsync 直後にイベントをemit(Severity: High)を追加しました。

  • commandService.publishAsync/publishSync から200文字以内の eventEmitter.emit() 呼び出しを検出
  • 推奨: publishAsync 後はDynamoDB Streams経由で非同期にデータテーブルが書き込まれるため、イベント発行は IDataSyncHandler.up()/down() 内で行うこと

mcp-server: 検出器AP番号と skill-doc AP番号のクロスリファレンス表を追加

これまで mbc_check_anti_patterns ツールが出力する 検出器AP番号 と、/mbc-review スキルドキュメントの skill-doc AP番号 が独立した番号体系で運用されており、同じ AP005 でも両者で意味が異なるという混乱がありました。

  • 検出器の出力に対応する skill-doc AP番号を併記するよう変更(例: AP005: Hardcoded Tenant (skill-doc: AP002)
  • mbc-migrate スキル: v1.2.5・v1.2.6セクションとマイグレーションマトリクスのエントリを追加
  • mbc-debug スキル: v1.2.6での(意図的な)RYWセッション早期パージに関するトラブルシューティング項目を追加

バグ修正

  • mcp-server: server.ts がパッケージバージョンをハードコードしており、lerna version のたびにサイレントにずれていた問題を修正。実行時に package.json から読み込むように変更

アップグレード方法

移行作業は不要です。npm install で最新バージョンに更新するだけで適用されます。

npm install @mbc-cqrs-serverless/core@1.2.6

関連リンク

Top