Skip to content

feat: add InstrumentDocumentType with bank_statement - #194

Merged
armando-rodriguez-cko merged 1 commit into
masterfrom
feat/INT-1691-instrument-document-type-bank-statement
Aug 18, 2026
Merged

feat: add InstrumentDocumentType with bank_statement#194
armando-rodriguez-cko merged 1 commit into
masterfrom
feat/INT-1691-instrument-document-type-bank-statement

Conversation

@armando-rodriguez-cko

@armando-rodriguez-cko armando-rodriguez-cko commented Aug 17, 2026

Copy link
Copy Markdown
Contributor

What

Adds InstrumentDocumentType with the single value bank_statement, the document type for the bank account behind a platforms payment instrument.

Reported internally: the value is documented in the API reference but missing from the SDK, and it is blocking a merchant. Verified against the spec, where that document type is a single-value enum whose only accepted value (and default) is bank_statement.

Why a separate type instead of adding the value to the existing document type

The existing document type lists identity documents (passport, national identity card, driving license) and is used for entity onboarding. The API models the bank account document type as its own enum. Adding bank_statement alongside the identity values would offer it in every place the API rejects it, and would equally suggest the identity values are accepted on an instrument document, where they are not.

Tests

One of the tests asserts bank_statement is not in the identity document type. That is deliberate: it is what stops the two being merged the next time someone reports the value as missing from the identity enum.

Not breaking

Purely additive. No existing constant, field or signature changes.

Refs INT-1691.

@agent-wall-e

agent-wall-e Bot commented Aug 17, 2026

Copy link
Copy Markdown

🟢 Risk Classification: LOW

Approval route: AI Auto-Approval
Rollback controls: Automated Instant Rollback + feature flags

Classification reasons

  • no_low_class_matched
  • prod_source_modified
  • 2.2.6_logical_extension:Purely additive new constant module mirroring an existing pattern (DocumentType), no new endpoints, persisted data, auth changes, or external integrations.

Operational gates

  • ✅ jira_ticket (INT-1691)
  • ✅ independent_review

Files analysed: 3


wall-e 2026.06.19-02 · policy 376219bc71e6…

@agent-wall-e

agent-wall-e Bot commented Aug 17, 2026

Copy link
Copy Markdown
🔬 Debug — why this classification?

Each reason code emitted by the classifier, its source clause in the AI in SDLC Control Framework, and what it means.

Reason code Kind Clause Meaning
no_low_class_matched informational §2.2 (fall-through) None of the deterministic Low classes (§2.2.3, §2.2.4, §2.2.7, docs-only) applied; classifier fell through to LLM evaluation.
prod_source_modified informational §2.1 M7 (informational) At least one file is non-doc, non-test, non-IaC — i.e. application source code was modified.
2.2.6_logical_extensionPurely additive new constant module mirroring an existing pattern (DocumentType), no new endpoints, persisted data, auth changes, or external integrations. classifying §2.2.6 Sonnet 4.6 evaluator promoted minor → low: the change reuses existing code paths and does not cross a trust boundary.

Kinds:

  • classifying — this rule contributed to the chosen tier.
  • informational — context only; did not by itself decide the tier.

See issue #3 for the proposal to formalise this map as Appendix A of the standards doc.

wall-e 2026.06.19-02 · debug

Reported internally against the PHP SDK; the same gap exists here. Verified in the
spec, where PlatformsPaymentInstrumentBankAccount.document.type is a single-value
enum accepting only bank_statement, which is also its default.

Kept as its own module rather than added to DocumentType. That one lists identity
documents, and the API models the bank account document type separately, so putting
bank_statement there would offer it where the API rejects it.

One spec asserts bank_statement is NOT in DocumentType, which is what stops the two
being merged the next time someone reports it missing from the identity enum.

574 examples green, rubocop clean.

Refs INT-1691.
@armando-rodriguez-cko
armando-rodriguez-cko force-pushed the feat/INT-1691-instrument-document-type-bank-statement branch from 8f4b2d4 to ebdc8fd Compare August 17, 2026 15:55
@agent-wall-e

agent-wall-e Bot commented Aug 17, 2026

Copy link
Copy Markdown

🟢 Risk Classification: LOW

Approval route: AI Auto-Approval
Rollback controls: Automated Instant Rollback + feature flags

Classification reasons

  • no_low_class_matched
  • prod_source_modified
  • 2.2.6_logical_extension:The change is purely additive, introducing only a new constant module with a single string value and accompanying tests, reusing existing abstractions without touching auth, persistence, external integrations, or any existing signatures.

Operational gates

  • ✅ jira_ticket (INT-1691)
  • ✅ independent_review

Files analysed: 3


wall-e 2026.06.19-02 · policy 376219bc71e6…

@agent-wall-e

agent-wall-e Bot commented Aug 17, 2026

Copy link
Copy Markdown
🔬 Debug — why this classification?

Each reason code emitted by the classifier, its source clause in the AI in SDLC Control Framework, and what it means.

Reason code Kind Clause Meaning
no_low_class_matched informational §2.2 (fall-through) None of the deterministic Low classes (§2.2.3, §2.2.4, §2.2.7, docs-only) applied; classifier fell through to LLM evaluation.
prod_source_modified informational §2.1 M7 (informational) At least one file is non-doc, non-test, non-IaC — i.e. application source code was modified.
2.2.6_logical_extensionThe change is purely additive, introducing only a new constant module with a single string value and accompanying tests, reusing existing abstractions without touching auth, persistence, external integrations, or any existing signatures. classifying §2.2.6 Sonnet 4.6 evaluator promoted minor → low: the change reuses existing code paths and does not cross a trust boundary.

Kinds:

  • classifying — this rule contributed to the chosen tier.
  • informational — context only; did not by itself decide the tier.

See issue #3 for the proposal to formalise this map as Appendix A of the standards doc.

wall-e 2026.06.19-02 · debug

@sonarqubecloud

Copy link
Copy Markdown

@agent-wall-e agent-wall-e Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Auto-approved — this PR meets all Low-risk criteria.

All checks passed, no unresolved comments, and the change classification is:

  • no_low_class_matched
  • prod_source_modified
  • 2.2.6_logical_extension:Purely additive new constant module and spec mirroring an existing pattern (DocumentType), with no new endpoints, persisted data, auth changes, or external integrations.

wall-e 2026.06.19-02 · policy 376219bc71e6…

@armando-rodriguez-cko
armando-rodriguez-cko requested review from a team and removed request for a team August 18, 2026 14:48
@armando-rodriguez-cko
armando-rodriguez-cko merged commit 1b04b94 into master Aug 18, 2026
7 of 8 checks passed
@armando-rodriguez-cko
armando-rodriguez-cko deleted the feat/INT-1691-instrument-document-type-bank-statement branch August 18, 2026 15:24
armando-rodriguez-cko added a commit that referenced this pull request Aug 19, 2026
- Add InstrumentDocumentType with bank_statement for bank account payment instrument documents (#194)
- Add scheme_transaction_link_id to ProcessingData (#192)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants