Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
124 commits
Select commit Hold shift + click to select a range
e590c29
feat(payments): prepare and authenticate bounded BRC-118 requests
ty-everett Sep 23, 2026
2aea363
feat(wallet): resume bounded sync with fair access and canonical proo…
ty-everett Sep 23, 2026
1fe0a99
fix(messagebox): accept bounded canonical base64 PeerPay transactions
ty-everett Sep 23, 2026
ce80627
docs(release): record next interoperability candidates and validation…
ty-everett Sep 23, 2026
94b0133
ci: scan the independent BRC-118 Python oracle with CodeQL
ty-everett Sep 23, 2026
1d0fe1e
refactor: simplify payment and sync boundaries and resolve security f…
ty-everett Sep 23, 2026
ca183ec
refactor(payments): separate settlement and bound the raw byte span
ty-everett Sep 23, 2026
7f72915
fix(templates): preserve SDK classes in CommonJS consumers
ty-everett Sep 23, 2026
730dbd5
fix(ci): provision compiler for patch coverage aggregation
ty-everett Sep 23, 2026
566cbe3
test(templates): make fixture allocation explicit
ty-everett Sep 23, 2026
a67ed37
docs(wallet): clarify required live sync chain declarations
ty-everett Sep 23, 2026
7ebceac
fix(sync): own byte snapshots and streamline page cost calculation
ty-everett Sep 23, 2026
9646645
test(templates): pin published SDK consumer artifact integrity
ty-everett Sep 23, 2026
2ac2a2e
test(templates): fetch pinned SDK through npm package tooling
ty-everett Sep 23, 2026
e88f5f4
test(auth): cover raw-body verification and application handoff
ty-everett Sep 23, 2026
651eab4
fix(mobile): reproduce Hermes output and reduce sync callback overhead
ty-everett Sep 23, 2026
2a23270
test(auth): cover absent bodies and configured raw request limits
ty-everett Sep 23, 2026
a4d625a
merge: reconcile current main and newly published package baselines
ty-everett Sep 24, 2026
94eccbe
fix(auth): align empty binary request preimages after Express parsing
ty-everett Sep 24, 2026
d76d7b8
perf(wallet): reduce storage forwarding overhead within mobile budgets
ty-everett Sep 24, 2026
dcf3163
fix(auth): frame byte views from the copied payload
ty-everett Sep 24, 2026
7547650
refactor(wallet-toolbox): share storage admission and normalization
ty-everett Sep 24, 2026
f9fc2c3
Merge current main with wallet discovery and signed history fixes
ty-everett Sep 24, 2026
893f632
perf(wallet-toolbox): reduce forwarding and normalization allocations
ty-everett Sep 24, 2026
13f3738
Merge current main with durable Message Box replay migration
ty-everett Sep 24, 2026
83a24fe
perf(wallet-toolbox): document reviewed mobile budget and sync evidence
ty-everett Sep 24, 2026
8c5810a
fix(wallet-toolbox): keep RPC forwarding explicitly asynchronous
ty-everett Sep 24, 2026
1a97456
fix(wallet-toolbox): isolate remote entity keys in descriptor maps
ty-everett Sep 24, 2026
f02333a
Merge current main with published SDK consumer baseline
ty-everett Sep 24, 2026
4dbb5f3
Merge current main and preserve native AuthFetch fallback bodies
ty-everett Sep 28, 2026
1525ac0
Merge main BRC-100 compatibility fixes into PR 569
ty-everett Sep 29, 2026
61aaff3
Clarify recovery source selection and application data coverage
ty-everett Sep 29, 2026
fe9978d
Refresh compatible audited dependencies for PR 569
ty-everett Sep 29, 2026
e48fc01
Merge main no-send ownership cleanup into PR 569
ty-everett Sep 29, 2026
0355ddb
fix: preserve async contracts in analyzer follow-up
ty-everett Sep 29, 2026
ec12ee7
fix(wallet): consume sequential operation promises lazily
ty-everett Sep 29, 2026
de912e7
Capture portable wallet data from a coherent provider read view
ty-everett Sep 30, 2026
bd7043a
Qualify MySQL snapshot setup and failure cleanup
ty-everett Sep 30, 2026
ca31973
Add bounded retained SQL read views for wallet sync
ty-everett Sep 30, 2026
dac9af3
Observe cancelled snapshot openings until their consumers resume
ty-everett Sep 30, 2026
6dcfead
fix(deps): reconcile patched audit resolutions
ty-everett Sep 30, 2026
bd1edc7
feat(wallet): add bounded profile snapshot keyset pages
ty-everett Sep 30, 2026
1a611ee
docs(deps): link verified brace-expansion source review
ty-everett Sep 30, 2026
8556930
refactor(wallet): simplify snapshot page internals
ty-everett Sep 30, 2026
09d5d8d
fix(ci): classify newly added erased declarations by emitted code
ty-everett Sep 30, 2026
38dba47
fix(wab): use the approved Docker Hub base at the same digest
ty-everett Sep 30, 2026
fa72b4a
fix(infra): refresh available Alpine OpenSSL security pins
ty-everett Sep 30, 2026
6d1493f
feat(wallet-toolbox): persist bounded local snapshot sync
ty-everett Sep 30, 2026
9af6fb6
fix(wallet-toolbox): preserve sync primary metadata by direction
ty-everett Sep 30, 2026
3129626
docs(wallet-toolbox): distinguish retained primitive from backup inte…
ty-everett Sep 30, 2026
6368cd3
test(wallet-toolbox): cover malformed packed proof admission
ty-everett Sep 30, 2026
3446878
refactor(wallet-toolbox): make snapshot sequencing explicit
ty-everett Sep 30, 2026
3f7072c
ci: bound complete wallet snapshot mutation campaigns
ty-everett Sep 30, 2026
44ee31c
feat(wallet): persist bounded snapshot archive staging
ty-everett Sep 30, 2026
32c6b41
feat(wallet): capture coherent snapshots in durable SQL staging
ty-everett Sep 30, 2026
d5b2678
fix(infra): refresh audited Axios resolutions without graph drift
ty-everett Sep 30, 2026
ff352a0
fix(wallet): qualify bounded capture and isolated recovery fixtures
ty-everett Sep 30, 2026
34956f4
feat(wallet): verify bounded snapshot receipt directories
ty-everett Sep 30, 2026
660fe76
feat(wallet): bind durable snapshot requests to owned captures
ty-everett Sep 30, 2026
8589574
fix(infra): update compatible gRPC and IP lock resolutions
ty-everett Sep 30, 2026
ef0577e
feat(wallet): add bounded authenticated snapshot archive transport
ty-everett Sep 30, 2026
fdca27d
Merge remote-tracking branch 'origin/main' into codex/wallet-sync-int…
ty-everett Sep 30, 2026
e1c87df
refactor(wallet): simplify snapshot HTTP dispatch and shutdown
ty-everett Sep 30, 2026
9a1c040
Merge remote-tracking branch 'origin/main' into codex/wallet-sync-int…
ty-everett Sep 30, 2026
7539b71
fix(docs): update Mermaid DOMPurify resolution and license inventory
ty-everett Sep 30, 2026
4748556
docs: review wallet manual inventory and correct funded side effects
ty-everett Oct 1, 2026
b41decd
Checkpoint unadvertised snapshot reader for main reconciliation
ty-everett Oct 1, 2026
9c4497c
Merge main into snapshot implementation branch
ty-everett Oct 1, 2026
de75e1d
Merge current main mutation partition infrastructure
ty-everett Oct 1, 2026
214f8aa
ci: require canonical retained snapshot partition aggregates
ty-everett Oct 1, 2026
04bd7ea
ci: allow bounded full remote reader mutation qualification
ty-everett Oct 1, 2026
12cd845
Merge main after retained snapshot CI integration
ty-everett Oct 1, 2026
400b58c
Retain snapshot source ownership until physical cleanup
ty-everett Oct 1, 2026
c1ec94c
fix(wallet): await explicit remote snapshot cleanup acknowledgement
ty-everett Oct 1, 2026
b4f0052
merge: reconcile DID retirement and SDK3 compatibility from main
ty-everett Oct 1, 2026
dd5637b
docs: repair duplicate metadata after main reconciliation
ty-everett Oct 1, 2026
6df7c5f
feat(wallet): recover snapshot owners behind physical backend guards
ty-everett Oct 1, 2026
1199e33
ci(wallet): require native snapshot process-loss recovery proof
ty-everett Oct 1, 2026
38eacd7
fix(wallet): retain source fences after unproved snapshot cleanup
ty-everett Oct 1, 2026
56143a0
ci(wallet): allow complete snapshot guard mutation qualification
ty-everett Oct 1, 2026
35140d2
test(wallet): observe cleanup failures in snapshot timing assertions
ty-everett Oct 1, 2026
9de2cc2
Add restartable snapshot profile keys and native MySQL CI
ty-everett Oct 1, 2026
6814ed2
Fix preinstall fixture checks and simplify snapshot migration validation
ty-everett Oct 1, 2026
996cbb3
Include profile index migration in retained snapshot qualification
ty-everett Oct 1, 2026
dd270c6
feat(wallet): add resumable numeric relation snapshot indexes
ty-everett Oct 1, 2026
ff7903d
refactor(wallet): preserve serial relation fixture qualification
ty-everett Oct 1, 2026
8f4a731
Fix wallet mutation qualification inputs and traversal regressions
ty-everett Oct 1, 2026
a2f541b
Merge main into wallet sync program; preserve newer dependency fixes
ty-everett Oct 1, 2026
eff7ee1
Bound MySQL relation pages before optimizer statistics refresh
ty-everett Oct 1, 2026
256c362
Add resumable certificate field indexes and retained reader integration
ty-everett Oct 1, 2026
f27e0ad
Merge remote-tracking branch 'origin/main' into codex/wallet-sync-int…
ty-everett Oct 1, 2026
c050d62
test(wallet): tighten certificate migration validation regressions
ty-everett Oct 1, 2026
1a1682c
feat(wallet): add resumable global snapshot reference indexes
ty-everett Oct 1, 2026
cc1d636
test(wallet): qualify every native fixture group and late cleanup
ty-everett Oct 1, 2026
a0e7ec1
fix(wallet): accept terminal checkpoints and qualify global indexes
ty-everett Oct 2, 2026
089a185
fix(wallet): rebuild SQLite snapshot indexes with conflict-safe obser…
ty-everett Oct 2, 2026
18748e2
test(wallet): verify bounded SQLite retirement completion and rollback
ty-everett Oct 2, 2026
0152aab
fix(wallet): bind SQLite retirement ownership to object type
ty-everett Oct 2, 2026
ec09fed
fix(wallet): bind SQLite publication to the configured journal schema
ty-everett Oct 2, 2026
583d385
feat(wallet): add bounded source journal generation foundation
ty-everett Oct 2, 2026
a6ef016
test(wallet): qualify journal boundaries and native CI recovery
ty-everett Oct 2, 2026
2734d26
feat(wallet): bound journal bootstrap allocation and index probes
ty-everett Oct 2, 2026
05731dd
feat(wallet): bind durable source receipts to journal generations
ty-everett Oct 2, 2026
5f24f30
refactor(wallet): make journal validation and recovery steps explicit
ty-everett Oct 2, 2026
5de47bb
Merge remote-tracking branch 'origin/main' into codex/wallet-sync-int…
ty-everett Oct 2, 2026
91f1d59
Validate journal receipt boundaries and resolve analyzer findings
ty-everett Oct 2, 2026
1d075e4
Merge remote-tracking branch 'origin/main' into codex/wallet-sync-int…
ty-everett Oct 2, 2026
6af69c0
Merge reviewed dependency updates from main into wallet sync program
ty-everett Oct 2, 2026
ba54004
Merge Postgres storage support and preserve snapshot dialect boundaries
ty-everett Oct 2, 2026
ceb6718
Capture coherent journal views with committed receipts and owned nati…
ty-everett Oct 2, 2026
a1a9033
Reconcile main dependency updates and bind governance to actual evidence
ty-everett Oct 2, 2026
5af7ac1
Fix pre-install native contract and capture analyzer findings
ty-everett Oct 2, 2026
c00ce0a
Add bounded journal retention and fix capture fixture file races
ty-everett Oct 2, 2026
f43133c
Merge remote-tracking branch 'origin/main' into codex/wallet-sync-int…
ty-everett Oct 2, 2026
9df1f41
Keep native retention collection passes sequential through the serial…
ty-everett Oct 2, 2026
05e07ee
Merge remote-tracking branch 'origin/main' into codex/wallet-sync-int…
ty-everett Oct 2, 2026
6da089b
test(ci): preserve separate PR and full-campaign concurrency limits
ty-everett Oct 2, 2026
be0be62
feat(wallet): own bounded journal maintenance and native cleanup
ty-everett Oct 3, 2026
66f3001
test(wallet): validate journal fixtures inside test setup
ty-everett Oct 3, 2026
a7ceefb
fix(wallet): preserve capture failures and repair Metro watcher depen…
ty-everett Oct 3, 2026
b534ab9
fix(ci): update MessageBox multipart dependency and watcher style
ty-everett Oct 3, 2026
a646d3c
fix(infra): preserve development watchers on patched dependency graphs
ty-everett Oct 3, 2026
18d94fd
test(wallet): drain HTTP fixture resources after close failures
ty-everett Oct 3, 2026
be295a2
fix(dev): preserve watcher polling and resolve analyzer findings
ty-everett Oct 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
59 changes: 58 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -498,7 +498,9 @@ jobs:
runs-on: ubuntu-latest
# The governed air-gap codec target currently instruments 352 mutants and
# legitimately exceeds 20 minutes on a hosted runner.
timeout-minutes: ${{ contains(fromJSON('["revenue-lineage-package","revenue-lineage-graph","sdk-revenue-listing-funding","output-lookup-session-records","output-lookup-session-payloads","wallet-recovery-codec","wallet-recovery-installation","wallet-recovery-store","wallet-funding-store","wallet-recovery-transitions","wallet-recovery-controller","root-eviction-storage","root-eviction-journal","root-eviction-records","wallet-retained-snapshot","wallet-snapshot-sync","wallet-snapshot-sync-destination","wallet-snapshot-sync-rows","wallet-snapshot-archive","wallet-snapshot-remote-http"]'), matrix.target) && 90 || 45 }}
# Complete snapshot source-guard service qualification took 58m35s locally,
# before hosted checkout/install. Preserve the 45-minute default elsewhere.
timeout-minutes: ${{ contains(fromJSON('["revenue-lineage-package","revenue-lineage-graph","sdk-revenue-listing-funding","output-lookup-session-records","output-lookup-session-payloads","wallet-recovery-codec","wallet-recovery-installation","wallet-recovery-store","wallet-funding-store","wallet-recovery-transitions","wallet-recovery-controller","root-eviction-storage","root-eviction-journal","root-eviction-records","wallet-retained-snapshot","wallet-snapshot-journal","wallet-snapshot-sync","wallet-snapshot-sync-destination","wallet-snapshot-sync-rows","wallet-snapshot-archive","wallet-snapshot-remote-http","wallet-snapshot-remote-reader","wallet-snapshot-remote-service"]'), matrix.target) && 90 || 45 }}
permissions:
contents: read
strategy:
Expand Down Expand Up @@ -602,6 +604,31 @@ jobs:
with:
pattern: mutation-wallet-retained-snapshot-*
path: .mutation-parts/wallet-retained-snapshot
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8
if: contains(fromJSON(needs.prepare.outputs.partition-targets || '[]'), 'wallet-snapshot-journal')
with:
pattern: mutation-wallet-snapshot-journal-*
path: .mutation-parts/wallet-snapshot-journal
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8
if: contains(fromJSON(needs.prepare.outputs.partition-targets || '[]'), 'wallet-snapshot-remote-http')
with:
pattern: mutation-wallet-snapshot-remote-http-*
path: .mutation-parts/wallet-snapshot-remote-http
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8
if: contains(fromJSON(needs.prepare.outputs.partition-targets || '[]'), 'wallet-snapshot-remote-service')
with:
pattern: mutation-wallet-snapshot-remote-service-*
path: .mutation-parts/wallet-snapshot-remote-service
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8
if: contains(fromJSON(needs.prepare.outputs.partition-targets || '[]'), 'wallet-snapshot-archive')
with:
pattern: mutation-wallet-snapshot-archive-*
path: .mutation-parts/wallet-snapshot-archive
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8
if: contains(fromJSON(needs.prepare.outputs.partition-targets || '[]'), 'wallet-snapshot-remote-reader')
with:
pattern: mutation-wallet-snapshot-remote-reader-*
path: .mutation-parts/wallet-snapshot-remote-reader
- name: Require every selected canonical partition target gate
if: needs.prepare.outputs.partition-targets != '[]' && needs.prepare.outputs.partition-targets != ''
env:
Expand Down Expand Up @@ -998,6 +1025,36 @@ jobs:
name: build-outputs
path: .ci-artifacts
- run: tar --extract --gzip --file .ci-artifacts/build-outputs.tar.gz
- name: Verify native snapshot crash recovery
if: matrix.id == 'shard-1'
working-directory: packages/wallet/wallet-toolbox
run: node test/storage/snapshotArchiveCrash.cjs
- name: Provision pinned native snapshot MySQL fixture
if: matrix.id == 'shard-1'
working-directory: packages/wallet/wallet-toolbox
timeout-minutes: 5
env:
TS_STACK_SNAPSHOT_HOSTED_MYSQL: '1'
run: node test/storage/snapshotArchiveDocker.cjs provision-hosted-image
- name: Verify native snapshot MySQL recovery
if: matrix.id == 'shard-1'
working-directory: packages/wallet/wallet-toolbox
timeout-minutes: 5
env:
TS_STACK_SNAPSHOT_HOSTED_MYSQL: '1'
run: node test/storage/runSnapshotArchiveMysql.cjs
- name: Verify native journal SQLite recovery
if: matrix.id == 'shard-1'
working-directory: packages/wallet/wallet-toolbox
timeout-minutes: 3
run: node test/storage/snapshotJournalSqliteCrash.cjs
- name: Verify native journal MySQL recovery
if: matrix.id == 'shard-1'
working-directory: packages/wallet/wallet-toolbox
timeout-minutes: 10
env:
TS_STACK_SNAPSHOT_HOSTED_MYSQL: '1'
run: node test/storage/runSnapshotJournalMysql.cjs
- name: Generate wallet-toolbox coverage shard
env:
WALLET_SHARD: ${{ matrix.shard }}
Expand Down
7 changes: 3 additions & 4 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,9 @@ jobs:
language:
- actions
- javascript-typescript
# The only Python files are deterministic OpenAPI output under
# conformance/generated/**. The CodeQL config excludes that owned
# generated boundary, while codegen CI verifies its specs, locked
# generator, and output.
# Scan the independently authored BRC-118 conformance oracle.
# Generated OpenAPI clients remain excluded by the owned registry.
- python
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/conformance.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ jobs:
cache: pnpm
- name: Install deps
run: pnpm install --frozen-lockfile --ignore-scripts
- name: Verify independent BRC-118 wire and signature vectors
run: python3 conformance/runner/scripts/brc118-vectors.py
- name: Build TS runner dependencies
run: >-
pnpm -r
Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/mutation-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,9 @@ jobs:
needs: prepare
runs-on: ubuntu-latest
# Preserve the acknowledged wallet/overlays90-minute target union.
timeout-minutes: ${{ contains(fromJSON('["revenue-lineage-package","revenue-lineage-graph","sdk-revenue-listing-funding","output-lookup-session-records","output-lookup-session-payloads","wallet-recovery-codec","wallet-recovery-installation","wallet-recovery-store","wallet-funding-store","wallet-recovery-transitions","wallet-recovery-controller","root-eviction-storage","root-eviction-journal","root-eviction-records","wallet-retained-snapshot","wallet-snapshot-sync","wallet-snapshot-sync-destination","wallet-snapshot-sync-rows","wallet-snapshot-archive","wallet-snapshot-remote-http"]'), matrix.target) && 90 || 45 }}
# Complete snapshot source-guard service qualification took 58m35s locally,
# before hosted checkout/install. Preserve the 45-minute default elsewhere.
timeout-minutes: ${{ contains(fromJSON('["revenue-lineage-package","revenue-lineage-graph","sdk-revenue-listing-funding","output-lookup-session-records","output-lookup-session-payloads","wallet-recovery-codec","wallet-recovery-installation","wallet-recovery-store","wallet-funding-store","wallet-recovery-transitions","wallet-recovery-controller","root-eviction-storage","root-eviction-journal","root-eviction-records","wallet-retained-snapshot","wallet-snapshot-journal","wallet-snapshot-sync","wallet-snapshot-sync-destination","wallet-snapshot-sync-rows","wallet-snapshot-archive","wallet-snapshot-remote-http","wallet-snapshot-remote-reader","wallet-snapshot-remote-service"]'), matrix.target) && 90 || 45 }}
permissions:
contents: read
strategy:
Expand Down
2 changes: 1 addition & 1 deletion .sonarcloud.properties
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ sonar.exclusions=packages/verifast/src/wasm/bdk-core.*,conformance/generated/**,
# into self-contained Docker/package build contexts and checked byte-for-byte
# in CI. Analyze the code for issues, but do not report intentional generated
# copies as source duplication.
sonar.cpd.exclusions=**/*.test.ts,**/*.test.tsx,**/*.spec.ts,**/*.spec.tsx,**/*.man.test.ts,**/__test__/**,**/__tests__/**,**/test/**,**/tests/**,**/*.vectors.ts,**/eslint.config.js,infra/wab/src/security/rateLimitPolicy.ts,infra/uhrp-server-basic/src/security/rateLimitPolicy.ts,infra/uhrp-server-cloud-bucket/src/security/rateLimitPolicy.ts,infra/message-box-server/src/security/rateLimitPolicy.ts,infra/uhrp-server-basic/src/security/edgePolicy.ts,infra/uhrp-server-cloud-bucket/src/security/edgePolicy.ts,infra/message-box-server/src/security/edgePolicy.ts,infra/chaintracks-server/src/security/edgePolicy.ts,packages/overlays/overlay-express/src/security/edgePolicy.ts,packages/wallet/wallet-toolbox/src/storage/remoting/edgePolicy.ts,infra/uhrp-server-cloud-bucket/src/resourceLimits.ts,infra/uhrp-server-cloud-bucket/src/utils/network.ts,infra/wallet-infra/src/KnexPaymentReplayStore.ts,infra/uhrp-server-basic/src/chirp/core/**,infra/uhrp-server-cloud-bucket/src/chirp/core/**,infra/uhrp-server-basic/src/chirp/openapi.ts,infra/uhrp-server-cloud-bucket/src/chirp/openapi.ts,infra/uhrp-server-cloud-bucket/src/chirp/contracts.ts,infra/uhrp-server-cloud-bucket/src/chirp/commitIndex.ts,infra/uhrp-server-cloud-bucket/src/chirp/routes.ts,infra/uhrp-server-cloud-bucket/src/chirp/bodyMiddleware.ts,infra/chaintracks-server/src/telemetry.ts,infra/wab/src/telemetry.ts,infra/uhrp-server-basic/src/telemetry.ts,infra/uhrp-server-cloud-bucket/src/telemetry.ts,infra/wallet-infra/src/telemetry.ts,infra/message-box-server/src/telemetry.ts
sonar.cpd.exclusions=**/*.test.ts,**/*.test.tsx,**/*.spec.ts,**/*.spec.tsx,**/*.man.test.ts,**/__test__/**,**/__tests__/**,**/test/**,**/tests/**,**/*.vectors.ts,**/eslint.config.js,infra/wab/src/security/rateLimitPolicy.ts,infra/uhrp-server-basic/src/security/rateLimitPolicy.ts,infra/uhrp-server-cloud-bucket/src/security/rateLimitPolicy.ts,infra/message-box-server/src/security/rateLimitPolicy.ts,infra/uhrp-server-basic/src/security/edgePolicy.ts,infra/uhrp-server-cloud-bucket/src/security/edgePolicy.ts,infra/message-box-server/src/security/edgePolicy.ts,infra/chaintracks-server/src/security/edgePolicy.ts,packages/overlays/overlay-express/src/security/edgePolicy.ts,packages/wallet/wallet-toolbox/src/storage/remoting/edgePolicy.ts,infra/uhrp-server-cloud-bucket/src/resourceLimits.ts,infra/uhrp-server-cloud-bucket/src/utils/network.ts,infra/wallet-infra/src/KnexPaymentReplayStore.ts,infra/uhrp-server-basic/src/chirp/core/**,infra/uhrp-server-cloud-bucket/src/chirp/core/**,infra/uhrp-server-basic/src/chirp/openapi.ts,infra/uhrp-server-cloud-bucket/src/chirp/openapi.ts,infra/uhrp-server-cloud-bucket/src/chirp/contracts.ts,infra/uhrp-server-cloud-bucket/src/chirp/commitIndex.ts,infra/uhrp-server-cloud-bucket/src/chirp/routes.ts,infra/uhrp-server-cloud-bucket/src/chirp/bodyMiddleware.ts,infra/chaintracks-server/src/telemetry.ts,infra/wab/src/telemetry.ts,infra/uhrp-server-basic/src/telemetry.ts,infra/uhrp-server-cloud-bucket/src/telemetry.ts,infra/wallet-infra/src/telemetry.ts,infra/message-box-server/src/telemetry.ts,infra/uhrp-server-cloud-bucket/dev/bin/nodemon.js,infra/uhrp-server-cloud-bucket/dev/check-watch.cjs,infra/wab/dev/bin/nodemon.js,infra/wab/dev/check-watch.cjs
# Narrow compatibility exceptions are registered with owner, evidence, review
# dates, and objective removal conditions in repository-health/exceptions.json.
sonar.issue.ignore.multicriteria=werrProtocolNames,curveSingletonAlias,curveSingletonReturn,scriptOpcodeDispatch
Expand Down
94 changes: 72 additions & 22 deletions conformance/META.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,20 @@
"sdk.keys.publickey",
"sdk.crypto.signature"
],
"BRC-74": ["sdk.transactions.merklepath", "broadcast.merklepath"],
"BRC-77": ["sdk.compat.bsm"],
"BRC-31": ["messaging.brc31.authrite-signature"],
"BRC-29": ["wallet.brc29.payment-derivation", "payments.brc29-payment-protocol"],
"BRC-74": [
"sdk.transactions.merklepath",
"broadcast.merklepath"
],
"BRC-77": [
"sdk.compat.bsm"
],
"BRC-31": [
"messaging.brc31.authrite-signature"
],
"BRC-29": [
"wallet.brc29.payment-derivation",
"payments.brc29-payment-protocol"
],
"BRC-100": [
"wallet.brc100.getpublickey",
"wallet.brc100.createhmac",
Expand Down Expand Up @@ -55,26 +65,66 @@
"wallet.brc100.getversion",
"wallet.storage.adapterconformance"
],
"BRC-121": ["payments.brc121"],
"BRC-26": ["storage.uhrp-http"],
"BRC-167": ["storage.chirp-v1"],
"BRC-62": ["overlay.submit"],
"BRC-22": ["overlay.lookup", "overlay.topicmanagement"],
"BRC-20": ["broadcast.arcsubmit", "broadcast.merklepath"],
"BRC-21": ["sync.gasprotocol"],
"BRC-40": ["sync.brc40"],
"BRC-14": ["sdk.scripts.evaluation"],
"merkle-service": ["broadcast.merkle-service"],
"message-box": ["messaging.messagebox-http"],
"chaintracks-v2": ["sync.chaintracks-v2-http"],
"BRC-141": ["transport.air-gap-optical"],
"BRC-103": ["auth.brc31-handshake", "messaging.authsocket"],
"BRC-104": ["auth.brc31-handshake"]
"BRC-121": [
"payments.brc121"
],
"BRC-26": [
"storage.uhrp-http"
],
"BRC-167": [
"storage.chirp-v1"
],
"BRC-62": [
"overlay.submit"
],
"BRC-22": [
"overlay.lookup",
"overlay.topicmanagement"
],
"BRC-20": [
"broadcast.arcsubmit",
"broadcast.merklepath"
],
"BRC-21": [
"sync.gasprotocol"
],
"BRC-40": [
"sync.brc40"
],
"BRC-14": [
"sdk.scripts.evaluation"
],
"merkle-service": [
"broadcast.merkle-service"
],
"message-box": [
"messaging.messagebox-http"
],
"chaintracks-v2": [
"sync.chaintracks-v2-http"
],
"BRC-141": [
"transport.air-gap-optical"
],
"BRC-103": [
"auth.brc31-handshake",
"messaging.authsocket"
],
"BRC-104": [
"auth.brc31-handshake",
"payments.brc118"
],
"BRC-118": [
"payments.brc118"
],
"BRC-105": [
"payments.brc118"
]
},
"stats": {
"total_files": 77,
"total_vectors": 6700,
"last_updated": "2026-09-24"
"total_files": 78,
"total_vectors": 6706,
"last_updated": "2026-09-28"
},
"regression_index": {
"beef-v2-txid-panic": "go-sdk#306",
Expand Down
24 changes: 18 additions & 6 deletions conformance/PARITY_MATRIX.json
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
{
"schema_version": "1.0",
"generated_at": "2026-09-24",
"generated_at": "2026-09-28",
"source": "ts-stack conformance corpus",
"description": "Machine-readable parity status for cross-language SDK implementations (Go, Rust, Python). Use this to track and drive conformance.",
"summary": {
"total_files": 77,
"total_vectors": 6700,
"fully_required_files": 58,
"total_files": 78,
"total_vectors": 6706,
"fully_required_files": 59,
"files_with_intended": 17,
"files_with_mixed_status": 15,
"vectors_by_status": {
"required": 6496,
"required": 6502,
"intended": 204,
"skipped": 7
},
"by_reason_category": {
"fully_supported": 1283,
"fully_supported": 1289,
"governed_vector_skip": 50,
"historical_regression": 36,
"partial_ts_behavioral_difference": 5116,
Expand Down Expand Up @@ -145,6 +145,18 @@
"reason_category": "fully_supported",
"categories": []
},
{
"path": "payments/brc118.json",
"id": "payments.brc118",
"total_vectors": 6,
"file_level_parity": "required",
"effective_status": "required",
"required_count": 6,
"intended_count": 0,
"skipped_count": 0,
"reason_category": "fully_supported",
"categories": []
},
{
"path": "payments/brc121.json",
"id": "payments.brc121",
Expand Down
Loading
Loading