P0 Stripe surface to 100% + coverage baselines + public polish - #77
Merged
Conversation
Re-measured the OpenAPI inventory against the pinned 2026-04-22.dahlia snapshot (stripe/openapi v2261): 175/587 operations, 29.8% L1+. Updates README, the 90% target family table, tracking docs, and gate evidence; documents the tax-rate/tax-ID and invoice-depth surface in COMPATIBILITY.md; and corrects stale subscription-item ID risk text in the claim registry.
…ed discount routes Adds billing portal configuration CRUD as local evidence (first configuration becomes the run default), subscription item list/retrieve and update (price/quantity with the shared proration path), and customer-scoped nested subscription discount retrieve/delete. Claims the already-tested invoice void, invoice mark_uncollectible, and checkout expire routes, retiring the implementedWithoutCompatClaim fallback carve-out. Fixes subscription discount deletion: the delete patch removed discount metadata keys, but subscription metadata patches merge, so the discount survived its own deletion. OpenAPI inventory: 175/587 (29.8%) -> 187/587 (31.9%); billing_portal closes to 5/5, billing 31/39, checkout 4/6.
…, product delete
GET /v1/checkout/sessions/{id}/line_items returns expanded Stripe item
objects, and POST /v1/checkout/sessions/{id} updates open sessions
(metadata merge plus line_items[N][quantity] overrides, prices immutable).
Checkout closes to 6/6 OpenAPI operations.
Draft invoices gain POST /v1/invoices/{id} (description, days_until_due,
default_payment_method, metadata), DELETE /v1/invoices/{id} (removes
attached lines and timeline evidence), and add_lines/update_lines/
remove_lines through the invoice-item path with subtotal/total/amount_due
recomputation. DELETE /v1/products/{id} removes local product evidence;
prices keep referencing the deleted id.
Repository gains DeleteInvoice, UpdateInvoiceItem, DeleteInvoiceItem, and
DeleteProduct; UpdateCheckoutSession now persists line_items so quantity
overrides survive reloads.
OpenAPI inventory: 187/587 (31.9%) -> 195/587 (33.2%); billing 36/39,
catalog 28/54.
POST /v1/invoices/{id}/lines/{line_item_id} updates one draft line
(amount/description/metadata) with the update_lines totals recomputation;
attach_payment records a customer-matched PaymentIntent or payment record
on a draft invoice as evidence while collection still runs through
finalize/pay; POST /v1/subscriptions/{id}/migrate records
billing_mode=flexible as subscription metadata evidence.
POST /v1/payment_intents/{id} merges metadata and an evidenced
description (amount/currency/status immutable), and
GET /v1/credit_notes/{id}/lines returns one line derived from the stored
note amount and memo/reason.
OpenAPI inventory: 195/587 (33.2%) -> 200/587 (34.1%). Billing closes
to 39/39, so all four P0 families (webhooks, checkout, billing,
billing_portal) are now at 100%.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Verification
go test ./...passes (full suite, three consecutive runs)go run ./cmd/billtap compatibility scorecard→imported=50 skipped=1 unsupported=1 mismatch=0 error=0go run ./cmd/billtap compatibility inventory --openapi <dahlia spec>→operations=587 implemented=200 inventory_only=387 implemented_percent=34.1gofmt -l .clean; registry claim-count guard updated to 206Family deltas (generated inventory)
Open risks
POST /v1/subscriptions/{id}/migrate) and invoiceattach_paymentare evidence-level (metadata) implementations; risks documented in claims and COMPATIBILITY.md.Gate status
G13/G14 in progress; no gate regressions — evidence in docs/GATE_STATUS.md re-measured on 2026-08-29.