[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
