Repository navigation
fix: harden service boundaries, persistence, and dashboard synchronization - #16
Conversation
Validate request framing and percent escapes, bound chunk metadata without rejecting valid small chunks, and recover GCS resumable checkpoints and S3 bucket creation after interrupted persistence. Add focused regressions and explicit Tokio features for independent service builds.
Validate reset/init paths and symlinks before touching storage. Recheck Cloud Run invocation authorization after slot waits and reclaim cancelled resources. Honor external Redis targets and graceful child shutdown. Protect Mail/Redis control HTTP and forward strict dashboard credentials. Keep relay handshakes from blocking other clients or shutdown.
Decode the relay event envelope and refresh snapshots on every hello and resync. Cancel obsolete sockets and protect all service snapshots from out-of-order responses. Fix GCS bucket and inspector races, add React and real-browser regression coverage, and rebuild embedded dashboard assets.
Run formatting, independent crate checks, workspace tests, Clippy, browser smoke verification, generated-asset checks, and Rust/npm audits. Update h2 and anyhow, document reproducible verification, and accept successful 204 responses in the Mail E2E helper.
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
@codex security review 保存先の制約、Cloud Runの認可、Mail / Redis HTTPのブラウザ境界、資格情報の転送・表示を含むため、通常のコードレビューと併せて確認をお願いします。 |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 90c4844e7f
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review 最新 head GCS は object commit と同時に保存する内部 ID、後続変更前の完了 receipt 保全、通知の一度だけの claim で回復を扱います。共有 S3 ストアの version・metadata・削除経路も回帰で確認済みです。ローカル workspace 1,558件、Node/React 12件が成功しています。差分全体について、追加の不具合・回帰・セキュリティ境界を確認してください。 |
|
Codex Review: Didn't find any major issues. Swish! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
|
@codex review Please re-review the complete PR at The latest commit fixes an additional reproduced S3/GCS race: both create-only writes could return 200 and the GCS commit overwrote the successful S3 write. GCS mutation predicates now run under the shared store write lock, including generation selectors and same-key copy/compose source conditions. Snapshot reads keep metadata/body together, and completed resumable receipts are replayed before evaluating conditions. Validation of this commit: 192 S3/GCS tests passed; the local workspace passed 1,567 tests (one existing ignored doctest and the previously documented local /proc-only skip). Ten real CLI races each produced exactly one 200 and one 412, with both services winning across the trials. The losing GCS final chunk retained its checkpoint and succeeded on retry after the competing object was deleted. GCS E2E also passed. The latest CI run will execute the workspace without the local skip. The two earlier P2 review threads remain fixed and resolved. Please report any further issues you find in the latest head. |
|
Codex Review: Didn't find any major issues. Can't wait for the next one! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
変更の目的
サービス境界、保存の失敗・再起動、子プロセスの終了、ダッシュボードの同期を横断してレビューし、再現できた不具合を修正しました。担当を入れ替えた独立レビュー、実際のCLIと通信を使った再現、CodexのPRレビューを行い、検出した問題には回帰テストを追加しています。
主な変更
init/resetが親ディレクトリ参照やsymlinkを通して.devcloud外を変更する経路を拒否。削除前にすべての保存先を検証します。変更は8コミットに分けています。既存の Redis終了処理の設計 と GCS共有Object Coreの設計 に沿う範囲で修正しています。GCS条件の確認には 公式precondition仕様 も参照しました。
PRレビューでの指摘への対応
最新コミットのローカル検証
対象:
9a04677f059efd764e2652056ab3295759896b87実通信の競合検証は、GCSで96 MiBを途中受信した後に最終1バイトを送り、同じキーへのS3
If-None-Match: *PUTを競合させています。修正前は両方200となり、成功済みのS3本文が上書きされることを再現しました。修正後は両サービスが勝つ場合を含め、一方だけが成功しています。ローカル環境に
/procがないため、workspace実行ではそれを必須とする既存テスト1件だけを除外しました。CIではこの除外を使いません。 既存のdoctest 1件は元からignore指定です。前段の変更についてはDashboard Node/React回帰12件、TypeScript/Vite build、MailのSMTP→API→raw→delete E2Eも確認しています。最新CIのbrowser検証では実CLIとprovider APIを使い、有効サービスの表示、初回snapshot、liveイベント、再接続後のsnapshot、object inspectorを確認し、すべて成功しました。
最新コミットの最終CI・再レビュー結果
CI run 38199189481 は completed / success です。対象headは
9a04677f059efd764e2652056ab3295759896b87、mainとの検証用merge commitは64bcbcfba3c54add6fd3da80ff04ea38e6d5d75cです。60c8ed2からの追加は0ローカルで除外した
readiness_requires_the_child_to_own_its_listenerもCIでは成功しています。ignored 1件は既存のevent-relayのdoctestです。Clippyはwarningをerrorとして扱う設定ではないため、成功とwarningなしを区別しています。ブラウザartifactのdigestを照合し、スクリーンショットも確認しました。GCSだけがrunning、上部が
1/12 running、他11サービスがdisabledとなり、接続前・接続中・切断中に作成した3オブジェクトと、再接続後のInspectorが正しく表示されています。Codexの最新head再レビューは2026-10-12 03:22:09 UTCにCompleted。追加指摘はなく、PRに👍が付いています。 結果コメント は対象commit
9a04677f05を明示しています。既存2件のreview threadは両方解決済みで、未解決threadは 0件 です。PRはopen・未マージです。