ap2_mandate_verifier 0.1.0.pre.3 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +56 -191
  3. data/docs/SUPPORT_CONTRACT.md +42 -15
  4. metadata +5 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c85486fb22395dab187304cc35ebe16102201ae8b175144d02d92d4d50e52e09
4
- data.tar.gz: 785a0256695f3f51ec5f02c3416cd904daaa84275b6765bc331a5ce84fb52ad3
3
+ metadata.gz: c34a0bd3cd87a6ed543aa7342e48561114dd87962ef7e191f0708818f5bb73f0
4
+ data.tar.gz: 93ac9fdc7ede629a930cdc62937c1261c07dafc4c9c5914fd769a1ed540d5602
5
5
  SHA512:
6
- metadata.gz: 6adc18edcb131b5407350d3171f58a0d81aa6aab77fdbd13ce93d72da31db61f51807ddb381431d3479b3d2f22173d8cf81aebc5dd364c3bb09d02e445e1d4e8
7
- data.tar.gz: 22e848eef3213e704a247d6f0dbd2857b1f18d35cc1a04d05171cec19c05bddc29bc6edffcfcd069a780bcce31da9d5533b3f72b195f698bd812360d522c9b3c
6
+ metadata.gz: 9d99c2fe1dbb1eb24cb884941e1c4bfccd2b3a8703f70e82777e3f848c134d2c209f2e1e1a1389f978262a08824365f1bbcf0911bd787a119791f9a2fb19e35e
7
+ data.tar.gz: a8d10488368acc7179457c38143cbeb4ac60a8e6ca973591084504c7abee73fd65afe18016d679a7c5a5ef151839db96946dcb1047623e302e2f8423b9e84572
data/README.md CHANGED
@@ -1,58 +1,57 @@
1
- # AP2 Mandate Verifier for Ruby
1
+ # AP2 Mandate Verifier — 0.1.0
2
2
 
3
- ## 固定profile・研究用途限定pre-release候補 — 0.1.0.pre.3
3
+ RubyでAP2の固定profileを検証する、Rails非依存のGemです。**署名の正しさだけで購入を許可しません。** 必要な検査が成立した場合に不変のEvidenceを返し、最終業務判断はHostが行います。
4
4
 
5
- MRI Ruby4.0.9向け、固定profile `ap2.checkout.single_merchant_sku` version1の
6
- stateless verifierです。署名・原Root全域開示・委任・購入原文・Host binding・固定制約・
7
- 有効期間がすべて成立したとき、opt-in `verify_research`が不変な研究Evidence v2を返します。
8
- **Evidenceは購入許可・nonce消費・決済完了ではありません。**
5
+ A Rails-independent Ruby Gem for a deliberately fixed AP2 verification profile. **A valid signature alone never authorizes a purchase.** Successful checks produce immutable Evidence; the Host makes the final business decision.
9
6
 
10
- 候補の対応契約・入力・API・依存・資源境界は[SUPPORT_CONTRACT](docs/SUPPORT_CONTRACT.md)を参照。
11
- GitHubでは固定profile・研究用途限定のpre2を公開済みです。RubyGemsへの公開と、このREADMEを含む新候補の実配布は別の明示承認待ちです。stable release・本番・Phase2-A全面合格・Phase2B・E10全面GOではありません。
7
+ ## 配布と導入 / Distribution and installation
12
8
 
13
- 支持範囲はES256/P256、Root Open1→Agent terminal内Closed1、3開示位置、単一Merchant/SKU、
14
- USD/EUR/JPY、空links。一般AP2/全Schema/任意Issuerの互換性は保証しません。
15
- 実Issuer/鍵/profile登録・最新性・信頼時計と、最新注文/challenge再照合+原子的nonce消費・
16
- 注文CAS・決済はHost責務です。GemはDB・ネットワーク・支払いを実行しません。
9
+ 配布状況は[公式RubyGems版一覧](https://rubygems.org/gems/ap2_mandate_verifier/versions)が正本です。この文書や版情報の存在だけでは公開済みを意味しません。次のコマンドは**0.1.0が公式一覧に掲載された後**に使用します。公開前は未登録エラーになり得ます。旧研究版pre3は別の成果物です。
17
10
 
18
- ## 導入方法 / Installation
11
+ The [official RubyGems version list](https://rubygems.org/gems/ap2_mandate_verifier/versions) is authoritative for availability. This document and version metadata alone do not establish publication. Use these commands **once0.1.0 is listed**; before publication they may fail because the version is absent. Research prerelease pre3 is a separate artifact.
19
12
 
20
- **研究用途限定・本番利用不可 / RESEARCH ONLY — NOT FOR PRODUCTION.**
13
+ 既存のMRI4.0.9環境と利用者が選ぶGem隔離環境で使用します。通常の導入は依存取得・JSON native buildを伴い得ます。依存衝突や未知providerを許容するために固定条件を緩めないでください。
21
14
 
22
- 現在入手できるのは[GitHub pre-release v0.1.0.pre.2](https://github.com/cuichangquan/ap2-mandate-verifier/releases/tag/v0.1.0.pre.2)の添付Gemです。RubyGems.orgでの公開は未確認・未実施のため、現時点で通常の `gem install ap2_mandate_verifier` により取得できるとは案内しません。このREADMEを含むpre3は未公開のローカル候補で、公開済みpre2の同梱文書を置き換えるものではありません。
15
+ Use an existing MRI4.0.9 environment and your chosen Gem isolation. Normal installation may fetch dependencies and build JSON native extensions. Stop on conflicts or unknown providers rather than relaxing pins.
23
16
 
24
- The available artifact is the attached Gem in the [GitHub v0.1.0.pre.2 prerelease](https://github.com/cuichangquan/ap2-mandate-verifier/releases/tag/v0.1.0.pre.2). RubyGems publication has not been performed or confirmed, so a normal remote `gem install ap2_mandate_verifier` is not currently an installation route. This README belongs to the unpublished local pre3 candidate; it does not replace the documentation inside the published pre2 artifact.
17
+ ```sh
18
+ ruby --version # MRI 4.0.9 required
19
+ gem install ap2_mandate_verifier --version 0.1.0
20
+ ```
25
21
 
26
- 必要条件 / Requirements:
22
+ BundlerのGemfile / Bundler Gemfile:
27
23
 
28
- | 項目 / Component | 条件 / Requirement |
29
- | --- | --- |
30
- | Ruby | MRI **4.0.9**。他のRuby版・engineは対象外 / Other versions and engines are outside this candidate's contract. |
31
- | Runtime Gems | `json = 2.19.9`, `jwt = 3.3.0`, `base64 = 0.3.0`, `openssl = 4.0.2`, `digest = 3.2.1` |
32
- | Native providers | 利用するRuby用のOpenSSL/JSON拡張が必要。Gem本体はnative binaryを含まない / Compatible OpenSSL and JSON extensions are required; this Gem contains no native binaries. |
33
- | 観測環境 / Observed systems | **pre3実パッケージ:MBA Darwin arm64のみ。pre3のLinux検証は未実施。** Ubuntu24.04 x86_64の成功run39939021098はpre2の歴史証拠であり、pre3の実行証拠ではない / **pre3 package: MBA Darwin arm64 only; pre3 Linux NOT_RUN.** Successful Ubuntu24.04 x86_64 run39939021098 is historical pre2 evidence, not a pre3 execution. No guarantee for every macOS/Linux configuration. |
24
+ ```ruby
25
+ gem "ap2_mandate_verifier", "= 0.1.0"
26
+ ```
34
27
 
35
- 以下は利用者が実行する手順例です。既存のRuby4.0.9環境を使い、global環境を変更したくない場合は任意のRuby環境管理・Gem隔離方法を先に選んでください。最後の `gem install --local` はローカルの本体・導入済み依存/キャッシュだけを使います。不足する依存は自動取得せず失敗するため、上記の正確な依存を別途用意してから進めてください。ローカルの依存アーカイブからnative buildが必要になる場合があります。チェックサム不一致なら導入しません。
28
+ 固定runtime依存 / Fixed runtime dependencies:
29
+ JSON2.19.9, JWT3.3.0, base640.3.0, OpenSSL gem4.0.2, Digest3.2.1.
30
+ Bundler4.0.20は既存resolver基準でruntime依存ではありません / Bundler4.0.20 is the observed resolver baseline, not a runtime dependency.
31
+ RubyGemsの版制約だけではMRI engine、OSや実native/providerの出所を保証しません / Gem version constraints alone do not enforce the MRI engine, OS or native-provider provenance.
36
32
 
37
- The following commands are for the user to run with an existing MRI4.0.9 environment. Choose your normal Ruby/Gem isolation method first if you do not want to modify your default Gem environment. `gem install --local` uses the local Gem and installed/cached dependencies only. Missing dependencies cause failure rather than automatic download; prepare the exact dependencies separately before continuing. Local dependency archives may require native builds. Stop if the checksum does not match.
33
+ ## 対応範囲 / Supported contract
38
34
 
39
- ```sh
40
- set -eu
41
- ruby --version # MRI 4.0.9 required; confirm before continuing
42
- curl --fail --location --proto '=https' --proto-redir '=https' \
43
- --output ap2_mandate_verifier-0.1.0.pre.2.gem \
44
- https://github.com/cuichangquan/ap2-mandate-verifier/releases/download/v0.1.0.pre.2/ap2_mandate_verifier-0.1.0.pre.2.gem
45
- printf '%s\n' 'e910659bbebda7aa5f00d63fb579f3b56819d59b5ee7d8b1734a6331f01d8de4 ap2_mandate_verifier-0.1.0.pre.2.gem' | shasum -a 256 -c -
46
- gem install --local ./ap2_mandate_verifier-0.1.0.pre.2.gem
47
- ```
35
+ - AP2固定source `b4587ac1d055888a73b4b21750973cffba961793`、登録profile `ap2.checkout.single_merchant_sku` v1の正確なbody/hash・7支持形状 / The exact registered profile v1 body/hash and seven supported shapes at the pinned AP2 source.
36
+ - ES256/P256、Open1→Closed1、固定3開示位置、単一Merchant/SKU/行、USD/EUR/JPY、empty links。未知/非対応形式は拒否 / ES256/P256, Open1→Closed1, three fixed disclosure positions, one Merchant/SKU/line, USD/EUR/JPY and empty links; unknown/unsupported forms are rejected.
37
+ - 厳格入力と有限上限、供給trust選択、Root原文署名と全域閉包、Agent/Merchant署名・委任・購入/Host binding、型/制約/期限をGemが検査 / The Gem checks strict bounded inputs, supplied trust selection, signed Root wire and full supported closure, Agent/Merchant signatures, delegation, purchase/Host binding, types, constraints and time.
38
+ - 入口は既存 `verify_research`。名前と `verified_research/scoped_research_verified`・Evidence v2契約を維持。安定版番号でも一般AP2対応やHost許可へ昇格しない / The existing entry, result names and Evidence v2 contract remain unchanged; a stable version does not imply generic AP2 support or Host authorization.
39
+
40
+ 正確な必須形状・全上限・失敗codeは[SUPPORT_CONTRACT](docs/SUPPORT_CONTRACT.md)を参照してください。 / See [SUPPORT_CONTRACT](docs/SUPPORT_CONTRACT.md) for exact required shapes, bounds and failure codes.
41
+
42
+ ## 環境・互換性・保守 / Environment, compatibility and maintenance
43
+
44
+ 対象はMRI4.0.9と固定依存、観測されたMBA/macOS arm64 (`arm64-darwin25`) およびUbuntu24.04/x86_64の正確な構成です。[現行版の包装・provider証拠](research/stable010_release_linux_package/README.md)と[過去の環境記録](docs/VERIFIER_CORE_COMPLETION_CRITERIA.md#初回の対応環境保証範囲owner採用済み)を区別してください。OS全版・他engine/architecture・任意provider更新は保証しません。
48
45
 
49
- Linuxで `shasum` がない場合は、上のチェック行末の `shasum -a 256 -c -` を `sha256sum -c -` に置き換えます。SHA256は配布bytesの同一性確認であり、Host信頼入力や実行環境の安全性を保証しません。
46
+ The baseline is MRI4.0.9 with fixed dependencies and the exact observed MBA/macOS arm64 and Ubuntu24.04/x86_64 configurations. Distinguish [release-package/provider evidence](research/stable010_release_linux_package/README.md) from [historical environment records](docs/VERIFIER_CORE_COMPLETION_CRITERIA.md#初回の対応環境保証範囲owner採用済み). Other OS versions, engines, architectures and arbitrary provider updates are not covered.
50
47
 
51
- On Linux without `shasum`, replace `shasum -a 256 -c -` with `sha256sum -c -`. The checksum identifies distribution bytes; it does not authenticate Host inputs or attest runtime safety.
48
+ 支持入力の判定意味・APIを黙って変更しません。安全性修正で受理を狭める場合は理由・影響・移行を明示し、破壊的なAPI/必須field/profile変更を区別します。依存更新は自動互換ではありません。
52
49
 
53
- RubyGems公開後には、新候補の確定版を明示した `gem install ap2_mandate_verifier --version '<published-version>' --prerelease` と、対応するGemfile指定を案内する予定です。`<published-version>` は実行可能な版番号ではありません。次版候補 `0.1.0.pre.3` の空き・所有権・公開はまだ確認/承認されていません。
50
+ Supported-input semantics and APIs do not change silently. Security-driven narrowing identifies reason, impact and migration; breaking API/required-field/profile changes are explicit. Dependency updates are not automatically compatible.
54
51
 
55
- After RubyGems publication, instructions will use an actual published version, for example `gem install ap2_mandate_verifier --version '<published-version>' --prerelease`, with a matching Gemfile entry. The placeholder is not an installable version. Availability, ownership and publication of a possible `0.1.0.pre.3` have not yet been confirmed or approved.
52
+ 初回安定系列の最新修正版のみを保守対象とし、月次・関連勧告判明時・次版前に手動確認します。旧版backport・固定保守年数・受付/修正期限・24時間対応は約束しません。[SECURITY](SECURITY.md)と[保守方針](docs/POST_RELEASE_MAINTENANCE.md)を参照し、秘密鍵・実Mandate・個人情報を報告しないでください。
53
+
54
+ Maintenance covers the latest patch in the initial stable series, with manual monthly/advisory/pre-release review. No old-series backport, fixed support term, response/fix deadline or24/7 promise. See [SECURITY](SECURITY.md) and [maintenance](docs/POST_RELEASE_MAINTENANCE.md); never report private keys, real Mandates or personal data.
56
55
 
57
56
  ## 保存済み合成入力で試す / Try the saved synthetic example
58
57
 
@@ -94,10 +93,10 @@ result = AP2MandateVerifier.verify_research(**inputs)
94
93
  puts "status=#{result.status} code=#{result.code}"
95
94
  if result.success?
96
95
  checked_facts = result.evidence.to_h # Detached, deeply frozen in-process facts.
97
- puts "Research verification succeeded; this is NOT purchase authorization."
96
+ puts "Scoped verification succeeded; this is NOT purchase authorization."
98
97
  # No payment, order update or nonce consumption is performed here.
99
98
  else
100
- raise "Research verification did not succeed; stop."
99
+ raise "Verification did not succeed; stop."
101
100
  end
102
101
  ```
103
102
 
@@ -125,6 +124,10 @@ See [SUPPORT_CONTRACT](docs/SUPPORT_CONTRACT.md#full-entry-and-required-inputs)
125
124
 
126
125
  A successful `verify_research` result establishes scoped verification facts. The Host still must recheck latest trust/revocation/order version/challenge/time and atomically consume the nonce with order CAS. The Gem does not perform those operations. Serializing Evidence to JSON does not preserve or reconstruct authenticity through this API. Legacy `verify(presentation_json:)` checks only the JSON syntax boundary and never returns successful Evidence.
127
126
 
127
+ 連携前に[Issuer登録前チェックリスト](docs/ISSUER_ONBOARDING_CHECKLIST.md)と[Issuer/Host最小契約](docs/ISSUER_HOST_MINIMUM_CONTRACT.md)を参照してください。実Issuerの信頼と特定Hostの本番運用GOは、このGemの版番号や検証成功では成立しません。契約と`research/`のHost/DBコードは合成研究の設計・限定観測であり、本番adapterとして提供するものではありません。
128
+
129
+ Before integration, consult the [Issuer onboarding checklist](docs/ISSUER_ONBOARDING_CHECKLIST.md) and [Issuer/Host minimum contract](docs/ISSUER_HOST_MINIMUM_CONTRACT.md). Real-Issuer trust and a specific Host's production GO are not established by this Gem version or verification success. The contract and Host/DB code under `research/` describe synthetic research designs and limited observations, not a production adapter.
130
+
128
131
  `inputs`はtrust_json/selection_json/host_json/root_presentation/terminal_jws/
129
132
  host_checkout_jws/verified_atです。前3つのJSONは認証済みの独立Host入力として渡し、
130
133
  提示tokenの自己申告から信頼を追加しません。raw nonceは入力専用、EvidenceにはSHA256だけを
@@ -133,168 +136,30 @@ host_checkout_jws/verified_atです。前3つのJSONは認証済みの独立Host
133
136
  旧`verify`はJSON構文境界だけで、その他の低レベルverify入口と共にsuccess?=false/
134
137
  evidence=nilを維持します。呼出し例のsuccess?を旧APIへ流用してはいけません。
135
138
 
136
- ## 支持環境・検証結果の区別
139
+ ## 非保証と安全な停止 / Exclusions and safe stopping
137
140
 
138
- 本候補はMRI Ruby4.0.9、JSON2.19.9、JWT3.3.0、base640.3.0、OpenSSL gem4.0.2、Digest3.2.1を固定。
139
- 以下のMBA409ランタイム導入・885回帰と後続Linuxの記録はpre2の歴史証拠です。pre3の包装/導入観測とは分けて扱います。
140
- The MBA409 runtime/885-regression records and subsequent Linux run below are historical pre2 evidence, separate from pre3 package/install observations.
141
+ 一般AP2/全Schema、任意の実Issuer互換性、発行/提示/Receipt生成、Rails adapter、実決済、実Host/DB/失効運用、最悪CPU/RSS/並行性能・数値SLAは対象外です。無欠陥や全パス安全性を証明したとは主張しません。既知重大問題やGem自身の検査欠落をこの非保証表示で補いません。
141
142
 
142
- MBAの新RubyでOpenSSLとDigestのdefault gem、libcrypto3.5.9、resolv0.7.2、zlib3.2.3をロード確認し、ソース回帰885件が合格しました。JSON2.19.9を別導入して同梱JSON2.18.0を使用しません。この候補はnative binaryを同梱しません。
143
- Rubyの任意DTrace/USDT診断プローブは公式--disable-dtrace構成で無効です。今回の記録は`MBA409-20261023-BUILD01`(configure中の一時ファイル競合で監視停止)、`BUILD02`(導入成功)、`VALIDATION01`(新ランタイムの885回帰)、`PACKAGE01`(元の包装・導入検査)、`PACKAGE02`(証拠参照訂正後の包装・導入検査)として区別します。対応するローカルreport/source manifestは[契約文書の証拠識別表](docs/SUPPORT_CONTRACT.md#evidence-identifiers-for-this-runtime-update)を参照してください。旧MBA408・Ruby4.0.1の結果は別の歴史証拠です。包装時点ではLinux4.0.9は未実施でした。その後[run39939021098 attempt1](https://github.com/cuichangquan/ap2-mandate-verifier/actions/runs/39939021098)で885回帰・installed52・13payload/10loadedが合格し、MBAとpayload/依存metadataが一致しました。これは保存MBA期待値の再入力であり、Linuxで独立Oracleを再実行したものではありません。Ubuntu実ロードlibssl/libcryptoは`libssl3t64:amd64 3.0.13-0ubuntu3.16`の所有権・整合性まで確認しています。
144
- The packaged pre2 documents describe the MBA packaging snapshot. Subsequent [Linux run39939021098 attempt1](https://github.com/cuichangquan/ap2-mandate-verifier/actions/runs/39939021098) passed885 source and52 installed checks,13 payload/10 loaded identities, with MBA payload/dependency metadata matching. These replayed saved MBA expectations; the Linux independent Oracle was not rerun. Actual mapped Ubuntu libraries were owned by verified `libssl3t64:amd64 3.0.13-0ubuntu3.16`. The attached Gem and tag remain unchanged.
143
+ General AP2/full Schema, arbitrary real-Issuer interoperability, issuance/presentation/Receipt generation, Rails adapters, real payments/Host/DB/revocation operations, worst CPU/RSS/concurrency and numerical SLAs are outside scope. No defect-free/all-path safety proof is claimed; exclusions do not excuse known major defects or missing Gem checks.
145
144
 
146
- 新候補の解決環境は同梱Bundler4.0.20です。Gemの追加runtime依存ではありません。Ruby4.0.1/Bundler4.0.3の保存観測は歴史証拠です。
147
- ライブラリのwall-clock/RSS/並行数上限はなく、Hostが運用上の制限を設ける必要があります。
145
+ Hostはtokenから独立した認証済みtrust/鍵/profile・最新失効/時計/注文/challengeを供給し、Evidence使用直前に再照合し、nonce原子消費+注文CAS・PENDING回復・最終ALLOWを担当します。Gemの既存検査をHostへ移す意味ではありません。Evidenceは同一の信頼Rubyプロセス内の検査事実で、JSON/Hashから真正性を再構成しません。不明・拒否・不能・例外・結果なしは許可せず、Hostが外側の時間/メモリ/同時実行制限を設けます。
148
146
 
149
- 基準main `8d9845ff4b5618b9e57eda86d3a1e447d4124b47`では、MBA Darwin arm64と
150
- Ubuntu24.04 x86_64で885回帰・42固定入力の再現を観測しました。
151
- [Linux run39774818984](https://github.com/cuichangquan/ap2-mandate-verifier/actions/runs/39774818984)は
152
- MBA独立期待値30+境界12のGem再入力であり、Linux Oracle再実行ではありません。
153
- 8Schema対照はMBA根拠です。これらは後にGitHub公開した0.1.0.pre.2の包装/導入結果とは別の観測で、
154
- 旧manifest/pin/結果は更新していません。候補の新結果はローカル別保存、配布物には含めません。
147
+ The Host supplies authenticated token-independent trust/keys/profile and current revocation/clock/order/challenge state, rechecks before use, atomically consumes nonce with order CAS, reconciles PENDING and decides ALLOW. Existing Gem checks remain Gem responsibilities. Evidence is in-process checked facts in trusted Ruby, not a transport credential. Unknown/rejected/unavailable/exception/missing results never authorize; the Host provides outer time/memory/concurrency limits.
155
148
 
156
- これまでの取得量未証明2件とLinux全通信128MiB未証明を保持します。今回のRuby4.0.9取得もHTTP/2送信ヘッダー量を計測できず、総HTTP量・128MiB遵守は未証明のまま、照合済み原本による後続処理だけ別途承認されました。追加Actionsは不許可。
157
- 研究資料はresearch/配下へ整理済みです。独自runtime/supervisorの開発へ戻りません。
149
+ ## 証拠と履歴 / Evidence and history
158
150
 
159
- 旧0.1.0.pre.2の実パッケージは[Stage18 run39869876461](https://github.com/cuichangquan/ap2-mandate-verifier/actions/runs/39869876461)で885回帰・installed52・13payload/10loadedを観測しました。[Stage21追補](https://github.com/cuichangquan/ap2-mandate-verifier/blob/c8d81eab49e37a1236a355d42cf667aab552392d/docs/STAGE21_VALIDATION_SUPPLEMENT.md)はMBAの7入力×3観測と既知の限界を記録しています。これらはRuby4.0.1での歴史観測で、新runtime候補のLinux実証ではありません。新候補のローカル報告は別保存し、旧artifactと同じSHAとは主張しません。
151
+ 現在の新archiveのSHA・環境別結果・制限は[版別検証記録](research/stable010_release_linux_package/README.md)を参照してください。archiveのSHAを同梱文書へ自己埋込せず、外部manifestで識別します。SHAは配布bytesを識別するもので、Host trustや全面安全性を保証しません。
160
152
 
161
- ## 研究資料(履歴)
153
+ See the [versioned validation record](research/stable010_release_linux_package/README.md) for this archive's external SHA, per-environment observations and limits. The archive hash is kept outside its payload to avoid self-reference. A hash identifies bytes, not Host trust or global safety.
162
154
 
163
- 以下の図・研究文書の状態欄やNOT_RUNは各作成時点の記録です。現在の候補契約に優先せず、
164
- 配布Gemには研究コード・fixture・図・過去結果を含めません。リンク先はリポジトリ上の資料です。
155
+ [旧0.1.0候補R1](research/stable010_candidate/README.md)、[公開pre3](https://rubygems.org/gems/ap2_mandate_verifier/versions/0.1.0.pre.3)、[pre2 Release](https://github.com/cuichangquan/ap2-mandate-verifier/releases/tag/v0.1.0.pre.2)は別archiveです。旧NOT_RUN/停止/成功は各時点の記録として保持し、新archiveの実測へ読み替えません。885回帰(147は内数)と旧Ruby4.0.1独立比較の再利用は、新たな885実行やLinux独立Oracleを意味しません。
165
156
 
166
- > 非公式・独立した研究プロジェクトです。Google、AP2 プロジェクト、FIDO Alliance とは関係ありません。
157
+ [Earlier0.1.0 candidateR1](research/stable010_candidate/README.md), [publishedpre3](https://rubygems.org/gems/ap2_mandate_verifier/versions/0.1.0.pre.3) and [pre2 Release](https://github.com/cuichangquan/ap2-mandate-verifier/releases/tag/v0.1.0.pre.2) are different archives. Historical NOT_RUN/stops/passes remain tied to their original bytes and time. Reusing885 regressions (including147) and Ruby4.0.1 independent comparisons is not a fresh885 run or Linux independent Oracle.
167
158
 
168
- ## AP2を図で理解する / Visual guides
169
-
170
- 手書きの学習用図解です。概念を理解するための資料であり、仕様の正式な要件は [AP2 v0.2 仕様基準点](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/SPEC_BASELINE.md) を参照してください。
171
-
172
- **まずは全体像**
173
-
174
- - [① AP2規格の全体像](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/assets/ap2-overview.png)
175
- - [② AP2の委任フローと信頼検証](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/assets/ap2-delegation-trust-flow.png)
176
-
177
- **次に内部構造と安全性**
178
-
179
- - [③ Mandateの内部構造](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/assets/mandate-anatomy.png)
180
- - [④ SD-JWTと委任チェーンの仕組み](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/assets/sd-jwt-delegation-chain.png)
181
- - [⑤ 攻撃パターンとFail Closed](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/assets/attack-patterns-fail-closed.png)
182
-
183
- ![AP2規格の全体像(手書き解説)](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/assets/ap2-overview.png)
184
-
185
- ## Why?
186
-
187
- A future personal AI could arrive at a web service carrying evidence of authority granted by a person, without that person pre-configuring every service. **A self-declared permission is not proof of authority.** The service needs verifiable evidence, an explicit trust policy, and its own final authorization decision.
188
-
189
- This project explores **AP2 v0.2 Checkout Mandate verification in Ruby**, initially on the merchant/verifier side, to see whether a small reusable Ruby Gem is justified.
190
-
191
- ```text
192
- Human user -- trusted consent/mandate --> Personal AI
193
- |
194
- | presents external mandate
195
- v
196
- Ruby service
197
- |
198
- [AP2 Mandate Verifier]
199
- |
200
- verified evidence / verification failure
201
- |
202
- Service's own authorization and controls
203
- |
204
- Business action or STOP
205
- ```
206
-
207
- A valid digital signature does **not** by itself establish that this Agent is authorized for this specific user, operation, merchant, price, or moment.
208
-
209
- ## Proposed initial scope
210
-
211
- - Study AP2 **v0.2** Agent Authorization and Checkout Mandate; do not mix in the earlier v0.1 model.
212
- - Explore cryptographic verification, trusted issuer/keys, holder/Agent binding, transaction binding, Open/Closed mandate constraints, audience, time, and failure cases.
213
- - Compare behavior and test vectors with the official AP2 Python implementation before claiming interoperability.
214
- - Expose verified evidence to the **host**; do not replace the host's authorization or payment controls.
215
- - The fixed-profile pre2 Gem is published as a GitHub research prerelease. RubyGems publication and distribution of a revised candidate require separate approval; production remains HOLD.
216
-
217
- ## Explicit non-goals
218
-
219
- - Building a wallet, user credential issuer, payment processor, trusted consent UI, Personal AI, MCP server, or A2A transport.
220
- - Supporting all AP2 flows or production payments in the first iteration.
221
- - Assuming all unknown issuers or self-asserted permissions are trustworthy.
222
- - Changing ActingFor Core, ActingFor Shopping Demo or a2a-rails.
223
-
224
- ## Research documentation
225
-
226
- - [Project scope and design decisions — Japanese](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/PROJECT.md)
227
- - [Official AP2 sources and standards watchlist](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/OFFICIAL_SOURCES.md)
228
- - [AP2 v0.2 frozen specification and Python SDK baseline](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/SPEC_BASELINE.md)
229
- - [AP2 Checkout Mandate verifier requirements and trust boundaries (P0-2)](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/VERIFIER_REQUIREMENTS.md)
230
- - [Official Python SDK and Ruby ecosystem research (P0-3)](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/ECOSYSTEM_RESEARCH.md)
231
- - [Minimal Checkout Verifier public API proposal — design only (P0-4)](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/API_PROPOSAL.md)
232
- - [Phase 0 research decision — initial HOLD, **P0-5b CONDITIONAL GO for a narrow offline PoC only**](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/RESEARCH_DECISION.md)
233
- - [Python baseline verification — P0-5a: official pytest 186 PASS / 2 FAIL, signed negative probes 12 PASS (plus earlier isolated 11 PASS)](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/PYTHON_BASELINE_VERIFICATION.md)
234
- - [Minimal Fail Closed Profile — strict two-hop autonomous Checkout and Host trust gates (P0-5b)](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/FAIL_CLOSED_PROFILE.md)
235
- - [Ruby interoperability feasibility — P1-0 ES256/JWK + Checkout Hash + official schema: 14 PASS](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/RUBY_FEASIBILITY_SPIKE.md)
236
- - [Ruby SD-JWT Root & Disclosure — P1-1 pinned Python SDK issuance, hidden constraint fail closed: 10 PASS](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/RUBY_SDJWT_RESEARCH.md)
237
- - [Ruby two-hop delegation — P1-2 pinned Python signed Open→Closed, cnf/sd_hash/aud/nonce: 15 PASS](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/RUBY_DELEGATION_SPIKE.md)
238
- - [Ruby Merchant Checkout binding — P1-3 signed Checkout JWT, Host exact bytes, hash, restricted merchant/SKU/quantity/amount: 18 PASS](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/RUBY_CHECKOUT_BINDING_SPIKE.md)
239
- - [Security Gap Review — P1-4 12 ranked risks, 6 gates, generic Gem implementation HOLD](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/SECURITY_GAP_REVIEW.md)
240
- - [Signed Security Negative Observations — P1-5 18 probes, **6 RED / 11 GREEN / 1 Host boundary**](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/SECURITY_NEGATIVE_TESTS.md)
241
- - [Security Hardening Research — P1-6 fixed six prior REDs: **0 RED, 17 GREEN, 43 historical regressions passed**](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/SECURITY_HARDENING_RESEARCH.md)
242
- - [Host Security Contract — P1-7 Host trust, VerifiedEvidence vs ALLOW, nonce atomicity, revocation and Receipt (design only)](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/HOST_SECURITY_CONTRACT.md)
243
- - [Host Security Test Plan — P1-7 34 planned race, trust, context and Receipt cases (NOT run)](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/HOST_SECURITY_TEST_PLAN.md)
244
- - [Host Replay Lab Design — P1-8 PostgreSQL 16, two workers, crash/retry test plan (DESIGN ONLY, NOT RUN)](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/HOST_REPLAY_LAB_DESIGN.md)
245
- - [Host Replay PG16 Evidence — P1-9a four isolated Host DB cases PASS; remaining 30 NOT RUN](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/HOST_REPLAY_P19A_EVIDENCE.md)
246
- - [Host Crash Recovery Evidence — P1-9b HR04/HR05 real SIGKILL and durable PG recovery; 6/34 Host cases exercised](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/HOST_REPLAY_P19B_EVIDENCE.md)
247
- - [Host Unknown COMMIT / Mock Provider Evidence — P1-9c HR06/HR07 offline only, 8/34 Host cases executed](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/HOST_REPLAY_P19C_EVIDENCE.md)
248
- - [Host Checkout/Revocation Race — P1-10a HR10 four PG16 interleavings PASS; 9/34 Host case IDs (research only)](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/HOST_REPLAY_P110A_EVIDENCE.md)
249
- - [HC06 External Revocation Design — P1-10b authority consistency, TOCTOU and negative tests (design only, NOT RUN)](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/HOST_EXTERNAL_REVOCATION_HC06_DESIGN.md)
250
- - [HC06 Offline Synthetic Evidence — P1-10c eight model tests, two expected unsafe counterexamples; not a full HC06 proof](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/HOST_EXTERNAL_REVOCATION_P110C_EVIDENCE.md)
251
- - [HC06 Cross-Service Protocol Design — P1-10d Authority reservations, durable Host COMMIT, revocation timing and failure matrix (DESIGN ONLY)](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/HOST_EXTERNAL_REVOCATION_P110D_PROTOCOL.md)
252
- - [HC06 Independent Failure-Injection Test Plan — P1-10e revocation during reservation, unknown COMMIT, reservation timeout (DESIGN ONLY, NOT RUN)](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/HOST_EXTERNAL_REVOCATION_P110E_TEST_PLAN.md)
253
- - [HC06 Minimal Independent Harness Decision — P1-10f E-R01/R02 local two-process/two-PG16 feasibility assessment (DESIGN ONLY, NOT RUN)](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/HOST_EXTERNAL_REVOCATION_P110F_HARNESS_DECISION.md)
254
- - [HC06 Independent PG16 Synthetic Evidence — P1-10g E-R01/R02 2 runs / 118 assertions, Host abort SIGKILL; distributed HC06 HOLD](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/HOST_EXTERNAL_REVOCATION_P110G_EVIDENCE.md)
255
- - [HC06 Authority Finalize Proof-Boundary Review — P1-10h trusted Host decision, forged/replayed reports and PENDING on uncertainty (DESIGN ONLY, NOT RUN)](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/HOST_EXTERNAL_REVOCATION_P110H_PROOF_BOUNDARY_REVIEW.md)
256
- - [HC06 Synthetic Authority Evidence Negatives — P1-10i H01 unsafe baseline + guarded STOP, H02–H06 limited checks (6 runs / 178 assertions, distributed HC06 HOLD)](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/HOST_EXTERNAL_REVOCATION_P110I_EVIDENCE.md)
257
- - [HC06 Independent Authority Proof Feasibility Decision — P1-10j no direct Host DB, authenticated durable decision prerequisites, anti-rollback and Fail Closed (DESIGN ONLY)](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/HOST_EXTERNAL_REVOCATION_P110J_DECISION.md)
258
- - [HC06 Host–Authority Contract Checklist — P1-10k C01–C12 roles, evidence required, hard STOP gates; all OPEN/UNCONFIRMED (DESIGN ONLY)](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/HOST_EXTERNAL_REVOCATION_P110K_CONTRACT_CHECKLIST.md)
259
- - [AP2 v0.2.0 Official Spec/SDK Mapping — P1-10l C01–C12 vs Mandate, Checkout, Receipt (fixed SHA; SUPPORTED vs NOT SPECIFIED vs UNKNOWN; READ-ONLY)](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/HOST_EXTERNAL_REVOCATION_P110L_AP2_SPEC_MAPPING.md)
260
- - [Verifier vs Host/Authority Revocation — P1-10m scope and GO/HOLD gates (A: cryptographic evidence; B: strong HC06 revocation; DESIGN ONLY)](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/VERIFIER_VS_REVOCATION_P110M_SCOPE.md)
261
- - [Strict A-only Offline Ruby PoC GO/HOLD Reassessment — P1-10n G01–G08 and 8 planned acceptance cases, unrun at that step (DESIGN ONLY)](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/VERIFIER_P110N_OFFLINE_POC_GATE.md)
262
- - [A-only Signed Offline Acceptance — P1-10o AN-P01/AN-N01–N07 (8 runs / 45 assertions, signed claim drift rejected, N07 HOST_BOUNDARY; SYNTHETIC ONLY)](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/VERIFIER_P110O_EVIDENCE.md)
263
- - [A-only Verifier Residual Gap Review — P1-10p issuer layout, unknown nested Constraint fields and GP01–GP09 priorities (DESIGN ONLY / all new tests NOT RUN at P1-10p)](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/VERIFIER_P110P_RESIDUAL_GAPS.md)
264
- - [GP01 Signed Unknown Nested Constraint — P1-10q historic pre-fix unexpected ACCEPT / RED-HOLD (1 synthetic run / 8 assertions)](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/VERIFIER_P110Q_GP01_EVIDENCE.md)
265
- - [GP01 Fixed-Issuer Nested Constraint Allowlist — P1-10r: historic RED to bounded REJECT + signed positive, dedicated 2 runs / 10 assertions (RESEARCH ONLY)](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/VERIFIER_P110R_GP01_FIX_EVIDENCE.md)
266
- - [Signed Constraint Shape and Value-Type Residual Gaps — P1-10s: S01–S08, including requirement ID and Merchant name types (DESIGN ONLY, all new cases NOT RUN)](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/VERIFIER_P110S_CONSTRAINT_SHAPE_TYPE_GAPS.md)
267
- - [S01 Signed Requirement ID Type Mismatch — P1-10t: latest corrected observer local Docker signature VALID, official Schema INVALID, Ruby ACCEPT / RED-HOLD (1 run / 6 assertions; earlier 1/7 historical; no CI)](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/VERIFIER_P110T_S01_PREPARED_NOT_RUN.md)
268
- - [P1-10u signed S01 String type check + separate signed positive regression — PR #42, Mac Docker 2 runs / 12 assertions / 0 failures: signed S01 exact-type REJECT and known-good evidence-only ACCEPT; dedicated CI NOT RUN, general Gem/production HOLD](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/VERIFIER_P110U_S01_TYPE_FIX_PREPARED_NOT_RUN.md)
269
- - [Research phases and release gates](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/RESEARCH_PLAN.md)
270
- - [Phase 1研究総括とPhase 2-A設計GO/HOLD判断 — 当時の引き継ぎ記録 / Historical handoff](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/PHASE1_RESEARCH_CLOSURE_PHASE2_GATE.md)
271
- - [Phase 2-A 最小Merchant Verifier設計パッケージ — Issue #45 / PROPOSED / DESIGN ONLY / 未実装・新規テストNOT RUN](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/PHASE2A_MINIMAL_VERIFIER_DESIGN.md)
272
- - [Phase 2-A Issuer/SD-JWT権限制約の開示完全性Gate — Issue #47 / DESIGN ONLY / 未検証・Phase 2-B HOLD](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/PHASE2A_DISCLOSURE_COMPLETENESS_GATE.md)
273
- - [Phase 2-A DC01–DC05 独立署名オラクル実験計画 — Issue #47 / DESIGN ONLY / 全ケースNOT RUN](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/PHASE2A_DC01_DC05_SIGNED_ORACLE_PLAN.md)
274
- - [Historical P1-10u signed S01 fixed-observer evidence and completed local Docker 2/12 (merged PR #42)](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/VERIFIER_P110U_S01_TYPE_FIX_PREPARED_NOT_RUN.md)
275
- - [Historical P1-10t new-chat handoff — proposes P1-10u and is now superseded; do not rerun as current instructions](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/VERIFIER_P110T_S01_PREPARED_NOT_RUN.md#5-新チャット引き継ぎ次の作業2026-10-12)
276
- - [Historical project-wide handoff — Japanese (P1-10r era; P1-10s next-task text not yet updated)](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/HANDOFF.md)
277
- - [Trust model and security boundaries](https://github.com/cuichangquan/ap2-mandate-verifier/blob/8d9845ff4b5618b9e57eda86d3a1e447d4124b47/docs/SECURITY_BOUNDARY.md)
278
-
279
- ## Primary official references
280
-
281
- - [AP2 Specification](https://ap2-protocol.org/ap2/specification/)
282
- - [AP2 Agent Authorization](https://ap2-protocol.org/ap2/agent_authorization/)
283
- - [AP2 Checkout Mandate](https://ap2-protocol.org/ap2/checkout_mandate/)
284
- - [AP2 official source / Python SDK](https://github.com/google-agentic-commerce/AP2)
285
- - [FIDO Alliance Agentic AI initiative](https://fidoalliance.org/fido-alliance-agentic-ai/)
286
-
287
- ## Relationship to other OSS
288
-
289
- - [ActingFor](https://github.com/cuichangquan/acting_for): Rails-native delegated authorization using host-resolved identities and locally stored delegations.
290
- - [a2a-rails](https://github.com/cuichangquan/a2a-rails): A2A protocol integration for Rails. It does not verify AP2 Mandates.
291
-
292
- Both are **separate projects**. Integration comes after the verification contract is proven.
293
-
294
- ## 日本語
295
-
296
- 分身AIが外部サービスに持ち込む**検証可能な委任証明**を、Ruby側でどこまで安全に検証できるかを研究するリポジトリです。AP2 v0.2のCheckout Mandateから調査します。署名確認だけで購入を許可したり、未知の発行者を無条件に信用したりしません。固定profileのpre2 GemはGitHubで研究用途限定公開済みです。RubyGems公開・改訂候補の配布は別承認待ちで、本番利用・Phase2BはHOLDです。
159
+ [過去READMEの研究資料一覧 / Historical research documentation](https://github.com/cuichangquan/ap2-mandate-verifier/blob/2546d112b4bd4eaaf0a55b502f1c40b1fd61be65/README.md#research-documentation)は履歴資料であり、現在の契約・公開状態より優先しません。将来のSDK構想は[PRODUCT_VISION](docs/PRODUCT_VISION.md)を参照してください。
297
160
 
298
161
  ## License
299
162
 
300
163
  MIT. See [LICENSE](LICENSE).
164
+
165
+
@@ -1,9 +1,30 @@
1
- # Fixed-profile research prerelease candidate — 0.1.0.pre.3
1
+ # Fixed-profile AP2 verification — 0.1.0
2
2
 
3
- The Owner accepted a fixed-profile research-only prerelease policy. GitHub pre2
4
- is published; this pre3 documentation/package revision is unpublished and requires
5
- separate distribution approval. RubyGems publication is not performed or confirmed. This
6
- is not a stable release, full Phase2-A PASS, production or Phase2B/E10 GO. Evidence is not Host ALLOW, payment authorization or proof of consumption.
3
+ **Fixed-profile verification contract; Evidence is not Host ALLOW or payment permission.**
4
+ Distribution availability is determined by the official RubyGems version listing, not by this document. Specific Host production GO remains separate.
5
+ Owner adopted the existing verification API and bounded stable-release conditions below. Publication and a specific Host's production operation are separate decisions; this contract does not authorize either.
6
+ Published research-only pre3 remains unchanged. Its historical observations below do not certify this new archive.
7
+
8
+ ## Verification contract
9
+
10
+ Preserve `verify_research`, its seven keyword inputs, existing status/code and Evidence v2 identifiers, and legacy APIs' non-success behavior. No API rename, new trust enrollment, remote lookup, DB or payment operation is added. Fixed AP2 commit b4587ac1d055888a73b4b21750973cffba961793 and the exact profile v1 body/hash, seven supported shapes, ES256/P256 and existing bounds remain unchanged.
11
+ Gem-owned signature/original-wire/closure, delegation, binding, supplied-trust selection, constraints, time intersection and fail-closed checks remain Gem responsibilities. Unsupported forms are rejected; do not claim generic AP2/full Schema conformance or real-Issuer interoperability.
12
+
13
+ Host inputs must be authenticated, independent of the token and current: trust/keys/profile/revocation/rollback protection, clock and order/challenge state. Recheck before use; atomically consume nonce with order CAS, reconcile unknown results as PENDING, and decide final ALLOW/payment separately.
14
+ Evidence is immutable checked facts in the same trusted Ruby process, not ALLOW or a transport credential. JSON/Hash reconstruction does not authenticate it. Rejection, unavailability, exceptions and no result never authorize an operation. Trusted Ruby is a precondition, not a malicious-Ruby sandbox.
15
+
16
+ No worst-case CPU/RSS/concurrency or numeric SLA is promised. Host process/time/memory/concurrency limits supplement, not replace, Gem finite input bounds. Issuance, presentation generation, Receipt, Rails adapter, real payments and Host DB operations are outside this verifier.
17
+ Supported-input semantics and existing API/status/code/Evidence contracts must not change silently. Security-driven acceptance narrowing requires impact/reason/migration disclosure; breaking required-field/profile/API changes must be explicit. Dependency updates are not automatically compatible.
18
+
19
+ The proposed baseline remains MRI4.0.9 plus JSON2.19.9/JWT3.3.0/base640.3.0/OpenSSL gem4.0.2/Digest3.2.1, with the exact observed MBA arm64-darwin25 and Ubuntu24.04/x86_64 configurations. RubyGems version constraints do not enforce MRI/OS/provider identity. All OS versions, other engines/architectures and arbitrary provider updates are not supported by past observations.
20
+ Historical D3 observed MBA component identities and four selected crypto symbol sources; OS dyld hashes/all symbol bindings/global runtime security remain unproved. JSON2.19.9 official IO-buffer fix/tag/source identity is adopted static evidence; inconsistent GHSA patched-version metadata remains recorded. Neither observation is global S3 PASS. The earlier R1 archive subsequently passed Mac/Ubuntu packaging checks. It is a different archive; see the separate release-package record for current bytes and observations.
21
+
22
+ Initial maintenance contact: Owner cuichangquan via repository Issues for ordinary bugs and private vulnerability reporting for vulnerabilities. No secrets, real Mandates or personal data in reports. Maintain only the latest patch in the selected initial stable series; no prerelease/old-series backport, fixed support years, response/fix/disclosure deadline or 24/7 promise.
23
+ Manual dependency/provider review is adopted monthly, on relevant advisories and before releases; no active automatic monitor is implied. Updates/deprecation/end of support must identify affected versions, reason and migration path without inventing a fixed notice period. Known major unaddressed issues or inability to maintain mean HOLD, not a blanket disclaimer.
24
+
25
+ ## Existing API/limits and historical evidence baseline
26
+
27
+ The API/limit specification below preserves the existing contract. All pre2/pre3/MBA409/R1 observations are historical, not proof of a newly built archive. Exact current source/archive/installed identities and observations are recorded externally in [release-package evidence](../research/stable010_release_linux_package/README.md); no old result is relabelled.
7
28
 
8
29
  ## Supported proposition and environment
9
30
 
@@ -28,8 +49,8 @@ Digest3.2.1/resolv0.7.2/zlib3.2.3/Bundler4.0.20;885 source regressions passed
28
49
  as MBA409-20261023-VALIDATION01. PACKAGE01 records the original validation snapshot's
29
50
  package/install checks; PACKAGE02 is the later evidence-reference correction.
30
51
  Linux4.0.9 was not yet observed at that packaging snapshot; the later pre2 run
31
- 39939021098 is identified below, separately from this pre3 candidate.
32
- The candidate contains no OpenSSL/JSON native binary and performs no dependency
52
+ 39939021098 is identified below as historical pre2 evidence.
53
+ The Gem contains no OpenSSL/JSON native binary and performs no dependency
33
54
  download/build itself. Missing fixed/native providers must stop an offline
34
55
  validation rather than trigger extra download/build. Actual native paths/hashes
35
56
  are environment observations, not proved by gem versions. Bundler4.0.20 is the
@@ -42,7 +63,7 @@ run39869876461 (885 source checks,52 installed checks,13 payload/10 loaded).
42
63
  Stage19 records MBA7inputs x3 observations. See the commit-pinned Stage21
43
64
  supplement below. Those Ruby4.0.1 observations do not validate this Ruby4.0.9
44
65
  candidate. The later pre2 Linux observation is separately identified below;
45
- this pre3 package has no Linux observation.
66
+ the old pre3 NOT_RUN wording was subsequently superseded by run40038620413. Neither earlier archive supplies new-archive evidence.
46
67
  Windows, Intel Mac, other Rubies/engines and all OS versions are unverified.
47
68
  No additional Actions run is authorized.
48
69
 
@@ -186,13 +207,18 @@ extensions are included. Repository research data/harnesses are now under
186
207
  research/; historical evidence bytes and logical pins were preserved.
187
208
  Local candidate installation can reuse existing fixed dependency homes/default
188
209
  OpenSSL: it proves installed candidate usability, not fresh offline installation
189
- of all dependencies or future download availability. Stable/public release,
190
- realIssuer/production/Phase2B/Stage16 GO require separate decisions.
191
-
192
- ## Current candidate versus historical evidence
193
-
194
- This unpublished README/package revision uses candidate version0.1.0.pre.3 pending
195
- an external same-version/ownership check; no claim of uploadability is made.
210
+ of all dependencies or future download availability. Stable release or further
211
+ public distribution, realIssuer/production/Phase2B/Stage16 GO require separate decisions.
212
+
213
+ ## Published pre3 versus historical evidence
214
+
215
+ The published version is0.1.0.pre.3 under RubyGems owner cuichangquan.
216
+ The Owner's completed publication check matched the official API, distributed
217
+ archive and MBA original:37888B, SHA256
218
+ 8ad627818dc69b450d0fba970dafaf368ec42dd64fb51eec631731027de3882c.
219
+ MBA409-PRE3PACKAGE02-20261023 observed13 payload/10 loaded/52 installed checks.
220
+ The post-release Mac mini audit could not independently refetch RubyGems;
221
+ that audit is not a second publication or package-validation observation.
196
222
  The historical MBA409 VALIDATION01/PACKAGE01/PACKAGE02 records below identify pre2,
197
223
  not new pre3 execution. Product lib and dependency requirements remain unchanged.
198
224
  The later pre2 Linux run39939021098 passed885/52 and13/10 at commit
@@ -282,3 +308,4 @@ https://github.com/cuichangquan/ap2-mandate-verifier/pull/173
282
308
  The summary must explicitly identify the completed observation; a missing,
283
309
  failed or mismatched report is not success. No local path is a public evidence
284
310
  URL. Raw local environment logs are not published by this package.
311
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ap2_mandate_verifier
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0.pre.3
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - AP2 Mandate Verifier contributors
@@ -79,9 +79,9 @@ dependencies:
79
79
  - - '='
80
80
  - !ruby/object:Gem::Version
81
81
  version: 3.2.1
82
- description: Stateless fixed-profile verification and immutable research Evidence;
83
- not Host authorization or payment permission. Research-only prerelease candidate;
84
- actual distribution requires separate Owner approval.
82
+ description: Stateless verification of the fixed AP2 profile with immutable Evidence
83
+ using the existing verify_research API. Requires trusted Host inputs and the documented
84
+ runtime; not Host authorization, payment permission or general AP2 conformance.
85
85
  executables: []
86
86
  extensions: []
87
87
  extra_rdoc_files: []
@@ -119,5 +119,5 @@ required_rubygems_version: !ruby/object:Gem::Requirement
119
119
  requirements: []
120
120
  rubygems_version: 4.0.20
121
121
  specification_version: 4
122
- summary: Fixed-profile AP2 research prerelease candidate
122
+ summary: Fixed-profile AP2 verification for Ruby
123
123
  test_files: []