Add billing receipt privacy guard#424
Conversation
|
Hardening update pushed in 094ae6e: nested allowed provider metadata values now scan through structured objects, so private project context cannot hide inside an allowlisted metadata key. Validation refreshed locally: npm run check, npm test (6 tests), git diff --check, and sensitive-term scan returned no matches. |
|
Hardening update pushed in 25e1c08: customer-facing line-item identifiers and units are now scanned and redacted when they carry restricted dataset context, so private dataset labels cannot leak through receipt fields outside the description/projectRef path. Verification refreshed:
|
|
Follow-up competitive hardening pass for the billing receipt privacy guard. What changed in 3408b06:
Validation:
|
|
Follow-up competitive hardening pass for the billing receipt privacy guard. What changed in
Validation refreshed locally:
|
|
Follow-up competitive hardening pass for the billing receipt privacy guard. What changed in
Validation refreshed locally:
|
|
Follow-up competitive hardening pass for the billing receipt privacy guard. What changed in
Why this matters:
Validation refreshed locally:
|
|
Follow-up competitive hardening pass for the billing receipt privacy guard. What changed in
Validation refreshed locally:
|
|
Follow-up competitive hardening pass for the billing receipt privacy guard. What changed in
Why this matters:
Validation refreshed locally:
|
|
Hardening update pushed in This tightens the customer-facing receipt gate: malformed or negative numeric fields now block delivery even when they do not contain private research text. The guard emits Fresh validation from
This keeps #424 distinct from #362: #424 protects customer-facing receipt/privacy delivery, while #362 focuses on analytics license seat roster renewal/true-up controls. |
|
Pushed a focused hardening commit for malformed sparse provider line items: Fresh verification from |
|
Pushed a focused hardening commit for malformed top-level billing provider packets: Fresh verification from |
|
Hi, just checking in on this bounty submission. The billing receipt privacy guard is still open and merge-clean; the current package covers malformed billing batches/line items and redacts payment-routing metadata before delivery with regenerated reviewer artifacts. Is there anything specific you would like me to change, simplify, or clarify to make review/selection easier? |
Portfolio Comparison Refresh (2026-06-27)
d8fa451; no GitHub check runs or status contexts are attached, and Algora remains Pending with Total paid$0./claim #20 ## Summary Adds a distinct
billing-receipt-privacy-guard/slice for Revenue Infrastructure issue #20. The guard validates customer-facing invoices, receipts, and payment-provider metadata before billing artifacts leave SCIBASE. It detects private research project context, restricted dataset references, collaborator identifiers, grant-sensitive phrases, unsafe receipt identifiers, unsafe customer-facing envelope fields, malformed monetary/quantity fields, malformed top-level billing batches, malformed line-item entries, unsafe line-item fields, unsafe provider metadata values, unsafe provider metadata key names, and sparse billing provider batches. Safe receipts remain deliverable, while unsafe receipts are held for finance review with redacted replacement identifiers, safe currency labels, replacement line items, redacted metadata-key handles, malformed-field repair actions, and deterministic audit evidence. ## Hardening Updates - Holds malformed top-level billing batches asmalformed-billing-batchfinance-repair evidence instead of crashing receipt review before any reviewer packet can be generated. - Holds malformed line-item entries asmalformed-line-itemfinance-repair evidence instead of crashing sparse billing provider payload review. - Holds receipts with malformed or negative customer-facing totals, quantities, or line-item amounts even when those fields do not contain private research text. - Redacts malformed customer-facing numeric fields tonulland emitsinvalid-billing-amount/invalid-billing-quantityfindings. - Redacts unsafe provider metadata key names when the key itself carries restricted dataset or private research context, preserving reviewer-safe handles such asmetadata-key-redacted-1. - Scans structured/nested allowed provider metadata values so private project context cannot hide behind safe metadata keys. - Redacts customer-facing line-item identifiers and units when they contain restricted dataset context. - Redacts receipt, invoice, and customer identifiers when they expose private project, dataset, or collaborator context while keeping distinct redacted handles for finance review correlation. - Treats missing provider metadata as an empty provider packet instead of crashing receipt review. - Treats omitted receipt and line-item collections as empty billing evidence instead of crashing receipt review. - Redacts unsafe customer-facing currency labels toXXXwhen malformed receipt envelope data carries restricted dataset context. - Redacts unsafe customer-facing totals, quantities, and line-item amounts tonullwhen billing fields carry restricted dataset context. ## Non-overlap This is scoped to privacy-safe billing artifacts before invoice, receipt, or payment-provider delivery. It does not duplicate subscription entitlement or renewal guards, usage metering, tax controls, dispute evidence, procurement controls, pricing experiments, payment rail failover, webhook entitlement, invoice acceptance, storage overage, analytics licensing, credit breakage, FX/reconciliation, or revenue-recognition slices. ## Validation - Added a red regression for a null top-level billing batch; before the fixevaluateReceiptPrivacy(null)crashed atbatch.receipts. - Addedreports/malformed-batch-privacy-packet.jsonso reviewers can inspect the held malformed-batch path. -cd billing-receipt-privacy-guard && npm run checkpassed: 18 tests plus deterministic demo and video generation. -node --checkpassed forindex.js,test.js, anddemo.js. - Parsed all report JSON successfully: malformed batch packet 1 held receipt, 1 remediation action, digestsha256:163469712907. -ffprobeverifiedbilling-receipt-privacy-guard/reports/demo.mp4as H.264, 1280x720, 4s, 30fps, 120 frames, 56,900 bytes. -git diff --check,git diff --cached --check, billing-guard-only staging, restricted-string scan, and generated report private-fixture scan passed. - GitHub PR merge state after push:CLEAN; no checks are reported for this branch. ## Demo Artifacts -billing-receipt-privacy-guard/reports/receipt-privacy-packet.json-billing-receipt-privacy-guard/reports/empty-receipt-privacy-packet.json-billing-receipt-privacy-guard/reports/malformed-receipt-privacy-packet.json-billing-receipt-privacy-guard/reports/malformed-line-item-privacy-packet.json-billing-receipt-privacy-guard/reports/malformed-batch-privacy-packet.json-billing-receipt-privacy-guard/reports/receipt-privacy-report.md-billing-receipt-privacy-guard/reports/summary.svg-billing-receipt-privacy-guard/reports/demo.mp4Synthetic data only. No credentials, payment processors, customer systems, private workspaces, institutional finance tools, payout systems, or external APIs are used. AI-assisted with OpenAI Codex; I reviewed and locally verified the diff before submitting.