Skip to content

Commit 9ade982

Browse files
hongwei1claude
andcommitted
docs: allowlist real doc/behaviour drift from the develop merge
Merging origin/develop brought in 18 new parity differences across v3.0.0/v3.1.0/v5.1.0/v6.0.0 plus 5 previously-allowlisted v6.0.0 descriptions whose digest moved again. Reviewed each against the live source before allowlisting, not just the doc text: - createConsentEmail/Implicit/Sms (v3.1.0) and createConsent (v5.1.0): errorResponseBodies gained RolesForbiddenInConsent. Read the handler (Http4s310.scala/Http4s510.scala) -- it's a real new check rejecting a requested canCreateEntitlementAtAnyBank entitlement in the consent body, not a doc-only change. - createConsent (v6.0.0): now has its own explicit ResourceDoc (previously only reachable via v5.1.0's through version aggregation); confirmed the registration exists in Http4s600.scala. - getEntitlementsForCurrentUser (v3.0.0) / getCurrentUser (v6.0.0): description expanded to document stored vs virtual Entitlements and on_behalf_of consent semantics; getCurrentUser's own comment marks this as a deliberate extension, read in full to confirm nothing was dropped. - createApiProduct/createCallLimits/deleteCallLimits/ getActiveRateLimitsAtDate/getActiveRateLimitsNow/updateRateLimits (v6.0.0): description expanded for the new Api Product Subscription and rate-limit call-count features; spot-checked createApiProduct in full, opening sentence and auth note preserved verbatim. - The 5 dynamic-entity endpoints already allowlisted in Card 2 gained further description text for the new write_role_required/ read_role_required/write_role/read_role field-level access control (DynamicEntityAuthModeTest.scala) on top of what was already reviewed; confirmed the fields are real, then refreshed their digests in place rather than appending a second entry under the same key (which the audit's first-match lookup would have ignored, leaving the stale digest live). check_lift_http4s_resource_doc_parity.py --report-stale-allowlist-entries exits 0 with zero unallowlisted differences and zero stale entries. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
1 parent 92cb06e commit 9ade982

1 file changed

Lines changed: 141 additions & 39 deletions

File tree

‎scripts/resource_doc_baseline/parity_allowlist.json‎

Lines changed: 141 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,12 @@
122122
"endpoint": "createWebUiProps",
123123
"reason": "New in http4s v6.0.0, no Lift predecessor",
124124
"identity_digest": "14a08784273c1af4165296c2f246d7544e5aae28208a5f02591b115aa032623e"
125+
},
126+
{
127+
"version": "v6_0_0",
128+
"endpoint": "createConsent",
129+
"reason": "v6.0.0 now registers its own explicit ResourceDoc for POST /my/consents/IMPLICIT (previously served only via the v5.1.0 doc through version aggregation); real, deliberate addition, not drift.",
130+
"identity_digest": "c02bfcf72b542dc309204ecebda8155e0bdbafdc6d9515cd609c1e3ec87f1969"
125131
}
126132
],
127133
"field_mismatches": [
@@ -933,14 +939,6 @@
933939
"lift_digest": "172ecd180e7c87fd9080d231736f8ea1e5d130fdc9224adb017d69494edba066",
934940
"http4s_digest": "5f61128bd66efed0f37498698f7819d75cc2dcbb4501d09e96fd74769eeb4c55"
935941
},
936-
{
937-
"version": "v6_0_0",
938-
"endpoint": "createBankLevelDynamicEntity",
939-
"field": "description",
940-
"reason": "Documents real, verified new fields (indexed/index, write_role_required/read_role_required/write_role/read_role) present in DynamicEntityProvider.scala/DynamicEntityHelper.scala.",
941-
"lift_digest": "2e7c649041362776f7eec66ccbb9f025f3edfead992108d0fd5864af76e93961",
942-
"http4s_digest": "012d3dac115f98f7cc0dd068b4a19ea71cec2b0baace4fbe8699c8a0c1c66286"
943-
},
944942
{
945943
"version": "v6_0_0",
946944
"endpoint": "createCounterpartyAttribute",
@@ -957,14 +955,6 @@
957955
"lift_digest": "4cc47e93f3737a605729f4aaf7b439d5ee8e99b737185fe1239487b30980d412",
958956
"http4s_digest": "ae08eb6afbbace39d0834e20610b06ac5d4e50422f84dad91c471a3370267788"
959957
},
960-
{
961-
"version": "v6_0_0",
962-
"endpoint": "createSystemDynamicEntity",
963-
"field": "description",
964-
"reason": "Same real-feature doc addition as createBankLevelDynamicEntity.",
965-
"lift_digest": "81310cdd2be1c2b33d465cabd1604cedee38bfa1ecccae4b016d0f99aa443ab6",
966-
"http4s_digest": "c1e0aa2666de3b04a979bb6ffa669b3767317a3cf5d386c1dcc6a89526aa1f9a"
967-
},
968958
{
969959
"version": "v6_0_0",
970960
"endpoint": "createTransactionRequestCardano",
@@ -1165,14 +1155,6 @@
11651155
"lift_digest": "dca0922381fb4c5f1fb34ab5a531d440b068f2170fd933c3c2eeddb4c52eaf94",
11661156
"http4s_digest": "f0bea922b31c331bae138d58990bf31a6bc5ca0099055f4cff4fdaf62c0a6263"
11671157
},
1168-
{
1169-
"version": "v6_0_0",
1170-
"endpoint": "updateBankLevelDynamicEntity",
1171-
"field": "description",
1172-
"reason": "Real field-level-access-control feature doc addition, same pattern as createBankLevelDynamicEntity.",
1173-
"lift_digest": "2d18665f9db52506a1b043ad7575b16ac52cedf0d11f036afd4a96b353eb8ddd",
1174-
"http4s_digest": "dbd05ceaae5129f8ff61655a0007b2d715f5ef45eb7fcaf7e6261fd3a47e08a6"
1175-
},
11761158
{
11771159
"version": "v6_0_0",
11781160
"endpoint": "updateCounterpartyAttribute",
@@ -1181,14 +1163,6 @@
11811163
"lift_digest": "6be19ba2409dbba4ae9f6ed783f5a2068645dd189761c83af8cd0d9f107a22f4",
11821164
"http4s_digest": "2cb204a9cd0b15471f6fdbe274209d3f4cce2a4d016f0fd8526b0b24fa640d8a"
11831165
},
1184-
{
1185-
"version": "v6_0_0",
1186-
"endpoint": "updateMyDynamicEntity",
1187-
"field": "description",
1188-
"reason": "Real feature doc addition, same pattern as createBankLevelDynamicEntity.",
1189-
"lift_digest": "97f0c97cc592f89f4dba8a6641ad4b41f6ffa6f4f6e78bf3d3cc34a6a11f76e7",
1190-
"http4s_digest": "c9c75c8112aea6fd914b131e0b81a79b149d4885c82d272016259af40f8207d4"
1191-
},
11921166
{
11931167
"version": "v6_0_0",
11941168
"endpoint": "updatePersonalDataField",
@@ -1197,21 +1171,149 @@
11971171
"lift_digest": "b2a8abcba137c01ec9e67c4c58eb5d7c6596508a12219f87092c5773c29916b3",
11981172
"http4s_digest": "85090153d93338f56d26c549900bdba3c2467269c740ef4f9752c7ad88d806dc"
11991173
},
1174+
{
1175+
"version": "v6_0_0",
1176+
"endpoint": "updateSystemView",
1177+
"field": "requestUrl",
1178+
"reason": "VIEW_ID -> UPD_VIEW_ID convention.",
1179+
"lift_digest": "0b18308242af8b26c8ed51c3dda373102a35ddc0fc88a0512f972788cc1c410c",
1180+
"http4s_digest": "dad3bc411251667d1a364b7fd8e45c54de3ef9d4d3d54f52e90e6264d53a948d"
1181+
},
1182+
{
1183+
"version": "v6_0_0",
1184+
"endpoint": "createBankLevelDynamicEntity",
1185+
"field": "description",
1186+
"reason": "Digest refresh: description further extended with write_role_required/read_role_required/write_role/read_role field-level access control docs (real feature, per DynamicEntityAuthModeTest.scala/DynamicEntityProvider.scala) on top of the indexed/index docs already reviewed in Card 2.",
1187+
"lift_digest": "2e7c649041362776f7eec66ccbb9f025f3edfead992108d0fd5864af76e93961",
1188+
"http4s_digest": "0e74005a596c6d3fe6cf4a0372b7c26a8df71a64ed261dae9952acf38dad9681"
1189+
},
1190+
{
1191+
"version": "v6_0_0",
1192+
"endpoint": "createSystemDynamicEntity",
1193+
"field": "description",
1194+
"reason": "Digest refresh: description further extended with write_role_required/read_role_required/write_role/read_role field-level access control docs (real feature, per DynamicEntityAuthModeTest.scala/DynamicEntityProvider.scala) on top of the indexed/index docs already reviewed in Card 2.",
1195+
"lift_digest": "81310cdd2be1c2b33d465cabd1604cedee38bfa1ecccae4b016d0f99aa443ab6",
1196+
"http4s_digest": "a04f57e1840396c8b740ed334710ae8f40a7386daf194bdd2e6e2276de80c6ff"
1197+
},
1198+
{
1199+
"version": "v6_0_0",
1200+
"endpoint": "updateBankLevelDynamicEntity",
1201+
"field": "description",
1202+
"reason": "Digest refresh: description further extended with write_role_required/read_role_required/write_role/read_role field-level access control docs (real feature, per DynamicEntityAuthModeTest.scala/DynamicEntityProvider.scala) on top of the indexed/index docs already reviewed in Card 2.",
1203+
"lift_digest": "2d18665f9db52506a1b043ad7575b16ac52cedf0d11f036afd4a96b353eb8ddd",
1204+
"http4s_digest": "2d9a3632bcd0ef2d6211e26bdcbed1671a2c1919b5e57a4dfbcbfe276d2c960f"
1205+
},
1206+
{
1207+
"version": "v6_0_0",
1208+
"endpoint": "updateMyDynamicEntity",
1209+
"field": "description",
1210+
"reason": "Digest refresh: description further extended with write_role_required/read_role_required/write_role/read_role field-level access control docs (real feature, per DynamicEntityAuthModeTest.scala/DynamicEntityProvider.scala) on top of the indexed/index docs already reviewed in Card 2.",
1211+
"lift_digest": "97f0c97cc592f89f4dba8a6641ad4b41f6ffa6f4f6e78bf3d3cc34a6a11f76e7",
1212+
"http4s_digest": "f3afa0db1a4fa3d9cb51755653a847fd316ebdbd6629599a01758b2adb2a0ed0"
1213+
},
12001214
{
12011215
"version": "v6_0_0",
12021216
"endpoint": "updateSystemDynamicEntity",
12031217
"field": "description",
1204-
"reason": "Real feature doc addition, same pattern as createBankLevelDynamicEntity.",
1218+
"reason": "Digest refresh: description further extended with write_role_required/read_role_required/write_role/read_role field-level access control docs (real feature, per DynamicEntityAuthModeTest.scala/DynamicEntityProvider.scala) on top of the indexed/index docs already reviewed in Card 2.",
12051219
"lift_digest": "e28c2996f3fd54842534fd54d45d7ba49df8b346e65f541353be4fb5311b550c",
1206-
"http4s_digest": "0e2017ebada85365b83b8d0fd9a3d14ce992e58276fe0a8770f04a8b7cac0b42"
1220+
"http4s_digest": "e7578c9f3348cc71091e23a11f3837f421ff8139891b71f53f7a5a0d243a3d4f"
1221+
},
1222+
{
1223+
"version": "v3_0_0",
1224+
"endpoint": "getEntitlementsForCurrentUser",
1225+
"field": "description",
1226+
"reason": "Expanded to document virtual entitlements (super_admin_user_ids/oidc_operator_user_ids) alongside stored ones; same feature as getCurrentUser's entitlements.list doc.",
1227+
"lift_digest": "2fd8ababd5a262cd46adacf29ab76aff060291bc9d7d2a48e90d7e316b613a1a",
1228+
"http4s_digest": "582926a1182a2409d05f72678949e700822e24fcd013aadcaec229d8c2a72727"
1229+
},
1230+
{
1231+
"version": "v3_1_0",
1232+
"endpoint": "createConsentEmail",
1233+
"field": "errorResponseBodies",
1234+
"reason": "RolesForbiddenInConsent added: the handler now rejects a requested canCreateEntitlementAtAnyBank entitlement in the consent body (real check, verified in source) instead of silently dropping it.",
1235+
"lift_digest": "73f681411b6caa8d703781d5e2ffa8d4adc252fe915861d9620d52ba70157489",
1236+
"http4s_digest": "f8b17b4d7af9672c5a18db6530fb69dc9cf1e0ee381bb9704c21d9275b7c8740"
1237+
},
1238+
{
1239+
"version": "v3_1_0",
1240+
"endpoint": "createConsentImplicit",
1241+
"field": "errorResponseBodies",
1242+
"reason": "RolesForbiddenInConsent added: the handler now rejects a requested canCreateEntitlementAtAnyBank entitlement in the consent body (real check, verified in source) instead of silently dropping it.",
1243+
"lift_digest": "12f4455621efe01d60de9117bf41688146dd5d1e432d86d2c732f3bbe02dfbdd",
1244+
"http4s_digest": "e37f7a4dc30ad082a361fb63766cf3548e83dd5fb6c5e1d5c1b7b54e76d74a9f"
1245+
},
1246+
{
1247+
"version": "v3_1_0",
1248+
"endpoint": "createConsentSms",
1249+
"field": "errorResponseBodies",
1250+
"reason": "RolesForbiddenInConsent added: the handler now rejects a requested canCreateEntitlementAtAnyBank entitlement in the consent body (real check, verified in source) instead of silently dropping it.",
1251+
"lift_digest": "12f4455621efe01d60de9117bf41688146dd5d1e432d86d2c732f3bbe02dfbdd",
1252+
"http4s_digest": "e37f7a4dc30ad082a361fb63766cf3548e83dd5fb6c5e1d5c1b7b54e76d74a9f"
1253+
},
1254+
{
1255+
"version": "v5_1_0",
1256+
"endpoint": "createConsent",
1257+
"field": "errorResponseBodies",
1258+
"reason": "Same RolesForbiddenInConsent addition as the v3.1.0 consent-creation endpoints (real check, verified in source). Digest computed against the rename-paired Lift name createConsentImplicit.",
1259+
"lift_digest": "12f4455621efe01d60de9117bf41688146dd5d1e432d86d2c732f3bbe02dfbdd",
1260+
"http4s_digest": "e37f7a4dc30ad082a361fb63766cf3548e83dd5fb6c5e1d5c1b7b54e76d74a9f"
12071261
},
12081262
{
12091263
"version": "v6_0_0",
1210-
"endpoint": "updateSystemView",
1211-
"field": "requestUrl",
1212-
"reason": "VIEW_ID -> UPD_VIEW_ID convention.",
1213-
"lift_digest": "0b18308242af8b26c8ed51c3dda373102a35ddc0fc88a0512f972788cc1c410c",
1214-
"http4s_digest": "dad3bc411251667d1a364b7fd8e45c54de3ef9d4d3d54f52e90e6264d53a948d"
1264+
"endpoint": "createApiProduct",
1265+
"field": "description",
1266+
"reason": "Documents the six call-limit semantics, tiering and recognised Api Product Attribute names (SELF_SUBSCRIBE/BILLING_SYSTEM/etc) — real feature per code.apiproductsubscription.*, opening sentence and auth note preserved verbatim.",
1267+
"lift_digest": "a0a19cc5100424e4e1824f1d1c70dc4329971051689338c8559c988e334ddab7",
1268+
"http4s_digest": "585ffe0ecaab1b7ee5d333fffc55aca0016497dba502ad9ebc446dd3a4c92ade"
1269+
},
1270+
{
1271+
"version": "v6_0_0",
1272+
"endpoint": "createCallLimits",
1273+
"field": "description",
1274+
"reason": "Documents the six-limit semantics (0=blocked, summed across records); same rate-limiting feature expansion as the other rate-limit endpoints below.",
1275+
"lift_digest": "668028ad86321b68b01406fb570d1dafca545c3c45bc2a3e3c0d04dd1a5b69af",
1276+
"http4s_digest": "a70426ea3f7d3e3305f066057d548d5f810f4920a78ea5c1cc02fce5afd74208"
1277+
},
1278+
{
1279+
"version": "v6_0_0",
1280+
"endpoint": "deleteCallLimits",
1281+
"field": "description",
1282+
"reason": "Notes that a record created by an Api Product Subscription is recreated on the subscription's next status change; cross-references the new subscription feature.",
1283+
"lift_digest": "ee5101d21cd7e4c75dc6a13247504bd50b6f5d9bc990d0040df4688351ddd06c",
1284+
"http4s_digest": "d3615986ed35f67bd8b5f61f28421b4420324436dde9554f011a7cfb3f38ab82"
1285+
},
1286+
{
1287+
"version": "v6_0_0",
1288+
"endpoint": "getActiveRateLimitsAtDate",
1289+
"field": "description",
1290+
"reason": "Documents the 0=blocked semantics for the aggregated rate-limit value; same rate-limiting doc expansion.",
1291+
"lift_digest": "f76972227ab4e68e210c189294d83c2e93c21fa731448b98b44c47f804f9a124",
1292+
"http4s_digest": "e5e0a64387460166429b531b7f18bbe270a2a68065947084c69b4f2955a69f96"
1293+
},
1294+
{
1295+
"version": "v6_0_0",
1296+
"endpoint": "getActiveRateLimitsNow",
1297+
"field": "description",
1298+
"reason": "Same rate-limiting doc expansion as getActiveRateLimitsAtDate.",
1299+
"lift_digest": "2f93ab9f7422c605789f3c006f57ab363a1dd25adb98c57b7ee5b76aa4a27f78",
1300+
"http4s_digest": "c815f6f640d20e3e883f4e4e06a6d5755d087ca651f0f5c2b39e22110abb8ef7"
1301+
},
1302+
{
1303+
"version": "v6_0_0",
1304+
"endpoint": "getCurrentUser",
1305+
"field": "description",
1306+
"reason": "Documents stored vs virtual Entitlements (created_by_process, super_admin_user_ids/oidc_operator_user_ids) and on_behalf_of consent semantics; file's own comment marks this as a deliberate extension of the Lift text. Verified in full against the live source.",
1307+
"lift_digest": "03774e46d0c75b2f68bf848a5aa16c0aa1239b007e345d7bb6093773744934b1",
1308+
"http4s_digest": "a132b82d8380cef202e8e5aefe5c20bde8d4537ad5f1c50735eaa05a2f11674d"
1309+
},
1310+
{
1311+
"version": "v6_0_0",
1312+
"endpoint": "updateRateLimits",
1313+
"field": "description",
1314+
"reason": "Same rate-limiting doc expansion as the other call-limit endpoints.",
1315+
"lift_digest": "b4a18cf966d2dbdd3760c86771869b584cd10286dac49620d075a7cbfdca4996",
1316+
"http4s_digest": "229b587b60d0eec166b7f962703514c81e5d176ee65dd70de0c131efc221bd8c"
12151317
}
12161318
]
12171319
}

0 commit comments

Comments
 (0)