verifyhash 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +883 -0
  3. package/cli/abi/ContributionRegistry.json +881 -0
  4. package/cli/agent.js +2173 -0
  5. package/cli/anchor-artifact.js +853 -0
  6. package/cli/anchor.js +400 -0
  7. package/cli/claim.js +881 -0
  8. package/cli/core/agent-commit.js +448 -0
  9. package/cli/core/agent-session.js +598 -0
  10. package/cli/core/anchor-binding.js +663 -0
  11. package/cli/core/attestation.js +580 -0
  12. package/cli/core/evidence-plans.js +495 -0
  13. package/cli/core/fixtures/evidence-plans/baseline.json +19 -0
  14. package/cli/core/fulfill-intake.js +1082 -0
  15. package/cli/core/go-live-preflight.js +481 -0
  16. package/cli/core/license.js +534 -0
  17. package/cli/core/manifest.js +243 -0
  18. package/cli/core/packetseal.js +591 -0
  19. package/cli/core/registryArtifact.js +49 -0
  20. package/cli/core/revocation.js +539 -0
  21. package/cli/core/rfc3161.js +389 -0
  22. package/cli/core/timestamp.js +482 -0
  23. package/cli/core/trust-asof.js +479 -0
  24. package/cli/dataset.js +2950 -0
  25. package/cli/evidence.js +2227 -0
  26. package/cli/fulfill-webhook-http.js +438 -0
  27. package/cli/git.js +220 -0
  28. package/cli/hash.js +550 -0
  29. package/cli/identity.js +1072 -0
  30. package/cli/journal-cli.js +1110 -0
  31. package/cli/journal-log.js +454 -0
  32. package/cli/journal.js +334 -0
  33. package/cli/lineage.js +447 -0
  34. package/cli/list.js +287 -0
  35. package/cli/parcel.js +1509 -0
  36. package/cli/proof.js +578 -0
  37. package/cli/prove.js +300 -0
  38. package/cli/receipt.js +631 -0
  39. package/cli/registry.js +331 -0
  40. package/cli/reputation.js +344 -0
  41. package/cli/revocation.js +495 -0
  42. package/cli/serve-verify-http.js +298 -0
  43. package/cli/serve-verify.js +333 -0
  44. package/cli/show.js +339 -0
  45. package/cli/verify.js +383 -0
  46. package/cli/vh.js +3927 -0
  47. package/docs/ADOPT.md +183 -0
  48. package/docs/ADOPTION.json +11 -0
  49. package/docs/AGENTTRACE.md +247 -0
  50. package/docs/ANCHORING.md +167 -0
  51. package/docs/AUDIT.md +55 -0
  52. package/docs/CONFORMANCE.md +107 -0
  53. package/docs/DATALEDGER.md +638 -0
  54. package/docs/DECIDE.md +47 -0
  55. package/docs/DECISIONS-PENDING.md +27 -0
  56. package/docs/DEPLOY-PUBLIC-SITE.md +301 -0
  57. package/docs/ENGINE-LEDGER.json +12 -0
  58. package/docs/EVIDENCE.md +519 -0
  59. package/docs/GO-LIVE.md +66 -0
  60. package/docs/IDENTITY.md +123 -0
  61. package/docs/INDEPENDENT-VERIFICATION.md +377 -0
  62. package/docs/INTEGRITY-JOURNAL.md +337 -0
  63. package/docs/KEY-LIFECYCLE.md +179 -0
  64. package/docs/LICENSING.md +46 -0
  65. package/docs/LINEAGE.md +307 -0
  66. package/docs/LOOP-AUDIT-2026-07-03.json +580 -0
  67. package/docs/LOOP-HARDENING-PLAN.md +44 -0
  68. package/docs/MERKLE-LEAVES.md +113 -0
  69. package/docs/METRICS.jsonl +31 -0
  70. package/docs/MORNING.md +204 -0
  71. package/docs/PILOT.md +444 -0
  72. package/docs/PROOFPARCEL.md +227 -0
  73. package/docs/PROOFS.md +262 -0
  74. package/docs/RECEIPTS.md +341 -0
  75. package/docs/REPUTATION.md +158 -0
  76. package/docs/SDK.md +301 -0
  77. package/docs/STRATEGY-ARCHIVE.md +5055 -0
  78. package/docs/SUPERVISOR-RUNBOOK.md +52 -0
  79. package/docs/TRUST-BOUNDARIES.md +335 -0
  80. package/docs/TRUSTLEDGER.md +1976 -0
  81. package/docs/USAGE-BUDGET.json +121 -0
  82. package/docs/VERIFY-SERVICE.md +168 -0
  83. package/index.js +160 -0
  84. package/package.json +41 -0
  85. package/trustledger/build-standalone.js +796 -0
  86. package/trustledger/cli.js +3179 -0
  87. package/trustledger/close.js +391 -0
  88. package/trustledger/corpus.js +159 -0
  89. package/trustledger/dist/BUILD-PROVENANCE.json +99 -0
  90. package/trustledger/dist/trustledger-standalone.html +6197 -0
  91. package/trustledger/dist/trustledger-standalone.html.sha256 +1 -0
  92. package/trustledger/door-core.js +442 -0
  93. package/trustledger/fixtures/bank.csv +7 -0
  94. package/trustledger/fixtures/bank.malformed.csv +3 -0
  95. package/trustledger/fixtures/bank.noalias.csv +5 -0
  96. package/trustledger/fixtures/bank.ofx +34 -0
  97. package/trustledger/fixtures/bank.real.csv +5 -0
  98. package/trustledger/fixtures/corpus/_shared/prior-close.json +22 -0
  99. package/trustledger/fixtures/corpus/bank-book-mismatch--benign-twin/inputs.json +14 -0
  100. package/trustledger/fixtures/corpus/bank-book-mismatch--benign-twin/meta.json +7 -0
  101. package/trustledger/fixtures/corpus/bank-book-mismatch--out-of-trust/inputs.json +14 -0
  102. package/trustledger/fixtures/corpus/bank-book-mismatch--out-of-trust/meta.json +7 -0
  103. package/trustledger/fixtures/corpus/continuity-break--benign-twin/inputs.json +15 -0
  104. package/trustledger/fixtures/corpus/continuity-break--benign-twin/meta.json +7 -0
  105. package/trustledger/fixtures/corpus/continuity-break--out-of-trust/inputs.json +15 -0
  106. package/trustledger/fixtures/corpus/continuity-break--out-of-trust/meta.json +7 -0
  107. package/trustledger/fixtures/corpus/negative-tenant-ledger--benign-twin/inputs.json +13 -0
  108. package/trustledger/fixtures/corpus/negative-tenant-ledger--benign-twin/meta.json +7 -0
  109. package/trustledger/fixtures/corpus/negative-tenant-ledger--out-of-trust/inputs.json +13 -0
  110. package/trustledger/fixtures/corpus/negative-tenant-ledger--out-of-trust/meta.json +7 -0
  111. package/trustledger/fixtures/corpus/owner-overdraw--benign-twin/inputs.json +15 -0
  112. package/trustledger/fixtures/corpus/owner-overdraw--benign-twin/meta.json +7 -0
  113. package/trustledger/fixtures/corpus/owner-overdraw--out-of-trust/inputs.json +15 -0
  114. package/trustledger/fixtures/corpus/owner-overdraw--out-of-trust/meta.json +7 -0
  115. package/trustledger/fixtures/corpus/security-deposit-segregation--benign-twin/inputs.json +16 -0
  116. package/trustledger/fixtures/corpus/security-deposit-segregation--benign-twin/meta.json +7 -0
  117. package/trustledger/fixtures/corpus/security-deposit-segregation--out-of-trust/inputs.json +13 -0
  118. package/trustledger/fixtures/corpus/security-deposit-segregation--out-of-trust/meta.json +7 -0
  119. package/trustledger/fixtures/corpus/subledger-out-of-balance--benign-twin/inputs.json +13 -0
  120. package/trustledger/fixtures/corpus/subledger-out-of-balance--benign-twin/meta.json +7 -0
  121. package/trustledger/fixtures/corpus/subledger-out-of-balance--out-of-trust/inputs.json +13 -0
  122. package/trustledger/fixtures/corpus/subledger-out-of-balance--out-of-trust/meta.json +7 -0
  123. package/trustledger/fixtures/e2e/bank.aliased.csv +4 -0
  124. package/trustledger/fixtures/e2e/bank.csv +4 -0
  125. package/trustledger/fixtures/e2e/bank.nsf.csv +4 -0
  126. package/trustledger/fixtures/e2e/quickbooks.csv +6 -0
  127. package/trustledger/fixtures/e2e/quickbooks.nsf.csv +8 -0
  128. package/trustledger/fixtures/e2e/rentroll.csv +6 -0
  129. package/trustledger/fixtures/e2e/rentroll.nsf.csv +8 -0
  130. package/trustledger/fixtures/e2e/rentroll.short.csv +5 -0
  131. package/trustledger/fixtures/plans/baseline.json +25 -0
  132. package/trustledger/fixtures/plans/price-binding.example.json +27 -0
  133. package/trustledger/fixtures/policy/ambiguous-deposit-example.json +12 -0
  134. package/trustledger/fixtures/policy/baseline.json +19 -0
  135. package/trustledger/fixtures/policy/ca-example.json +12 -0
  136. package/trustledger/fixtures/policy/negative-tenant-ledger-example.json +12 -0
  137. package/trustledger/fixtures/policy/owner-overdraw-example.json +12 -0
  138. package/trustledger/fixtures/quickbooks.csv +7 -0
  139. package/trustledger/fixtures/quickbooks.real.csv +5 -0
  140. package/trustledger/fixtures/rentroll.csv +6 -0
  141. package/trustledger/fixtures/rentroll.real.csv +4 -0
  142. package/trustledger/ingest.js +1163 -0
  143. package/trustledger/lib/policy-bundled-loader.js +44 -0
  144. package/trustledger/lib/sha256-vendored.js +227 -0
  145. package/trustledger/license.js +563 -0
  146. package/trustledger/match.js +551 -0
  147. package/trustledger/plans.js +551 -0
  148. package/trustledger/policy.js +398 -0
  149. package/trustledger/public/index.html +512 -0
  150. package/trustledger/reconcile.js +1486 -0
  151. package/trustledger/report.js +887 -0
  152. package/trustledger/seal.js +854 -0
  153. package/trustledger/server.js +391 -0
  154. package/trustledger/valueproof.js +350 -0
@@ -0,0 +1,13 @@
1
+ {
2
+ "reportDate": "2026-05-31",
3
+ "period": "2026-05",
4
+ "bank": [],
5
+ "book": [
6
+ { "date": "2026-05-01", "amount": 50000, "memo": "rent smith", "kind": "deposit", "party": "Smith (4A)", "source": "quickbooks" },
7
+ { "date": "2026-05-01", "amount": 50000, "memo": "rent jones", "kind": "deposit", "party": "Jones (4B)", "source": "quickbooks" }
8
+ ],
9
+ "rentroll": [
10
+ { "date": "2026-05-01", "amount": 150000, "memo": "smith + jones applied to smith", "kind": "rent", "party": "Smith (4A)", "source": "rentroll" },
11
+ { "date": "2026-05-01", "amount": -50000, "memo": "jones shortfall", "kind": "rent", "party": "Jones (4B)", "source": "rentroll" }
12
+ ]
13
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "id": "negative-tenant-ledger--out-of-trust",
3
+ "control": "negative_tenant_ledger",
4
+ "expectedVerdict": "FAIL",
5
+ "expectedFinding": "negative_tenant_ledger",
6
+ "principle": "A negative INDIVIDUAL beneficiary ledger means the broker is holding less than zero in trust for that person — their money was spent or used to cover another beneficiary's shortfall. The book records a clean $500 deposit for each of Smith (4A) and Jones (4B) (book balance $1,000), but the sub-ledger applies $1,500 to Smith and -$500 to Jones: Jones's money was credited to Smith. The pooled SUM of the sub-ledgers ($1,500 - $500 = $1,000) still ties out PERFECTLY to the $1,000 book, so the three-way total would have been a SILENT PASS. The engine flags Jones's individual -$500 ledger as an error-severity negative_tenant_ledger finding regardless of the pooled tie-out, and the packet FAILs."
7
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "reportDate": "2026-05-31",
3
+ "period": "2026-05",
4
+ "bank": [],
5
+ "book": [
6
+ { "date": "2026-05-01", "amount": 100000, "memo": "Owner contribution Acme", "kind": "deposit", "party": "Owner Acme", "source": "quickbooks" },
7
+ { "date": "2026-05-01", "amount": 500000, "memo": "rent jones", "kind": "deposit", "party": "Jones (4B)", "source": "quickbooks" },
8
+ { "date": "2026-05-10", "amount": -100000, "memo": "Owner draw - disbursement to owner Acme", "kind": "check", "party": "Owner Acme", "source": "quickbooks" }
9
+ ],
10
+ "rentroll": [
11
+ { "date": "2026-05-01", "amount": 500000, "memo": "rent", "kind": "rent", "party": "Jones (4B)", "source": "rentroll" },
12
+ { "date": "2026-05-01", "amount": 100000, "memo": "owner contribution", "kind": "rent", "party": "Owner Acme", "source": "rentroll" },
13
+ { "date": "2026-05-10", "amount": -100000, "memo": "owner draw", "kind": "rent", "party": "Owner Acme", "source": "rentroll" }
14
+ ]
15
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "id": "owner-overdraw--benign-twin",
3
+ "control": "owner_overdraw",
4
+ "expectedVerdict": "PASS",
5
+ "expectedFinding": "owner_overdraw",
6
+ "principle": "The benign near-twin of the owner-overdraw control: Owner Acme again contributes $1,000 of its own capital, but now draws exactly $1,000 — entirely from its OWN funds, touching no tenant money. Drawing at-or-below contributed capital is a legitimate owner disbursement. The engine raises NO owner_overdraw finding (the per-line owner_draw classification is only a warning, which does not fail the gate) and the packet PASSes. The only difference from the out-of-trust twin is the draw size: $1,000 vs $1,500."
7
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "reportDate": "2026-05-31",
3
+ "period": "2026-05",
4
+ "bank": [],
5
+ "book": [
6
+ { "date": "2026-05-01", "amount": 100000, "memo": "Owner contribution Acme", "kind": "deposit", "party": "Owner Acme", "source": "quickbooks" },
7
+ { "date": "2026-05-01", "amount": 500000, "memo": "rent jones", "kind": "deposit", "party": "Jones (4B)", "source": "quickbooks" },
8
+ { "date": "2026-05-10", "amount": -150000, "memo": "Owner draw - disbursement to owner Acme", "kind": "check", "party": "Owner Acme", "source": "quickbooks" }
9
+ ],
10
+ "rentroll": [
11
+ { "date": "2026-05-01", "amount": 500000, "memo": "rent", "kind": "rent", "party": "Jones (4B)", "source": "rentroll" },
12
+ { "date": "2026-05-01", "amount": 100000, "memo": "owner contribution", "kind": "rent", "party": "Owner Acme", "source": "rentroll" },
13
+ { "date": "2026-05-10", "amount": -150000, "memo": "owner draw", "kind": "rent", "party": "Owner Acme", "source": "rentroll" }
14
+ ]
15
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "id": "owner-overdraw--out-of-trust",
3
+ "control": "owner_overdraw",
4
+ "expectedVerdict": "FAIL",
5
+ "expectedFinding": "owner_overdraw",
6
+ "principle": "An owner may be disbursed ONLY from that owner's own contributed capital. Owner Acme contributes $1,000 of its own funds but draws $1,500 — paying itself $500 of the tenants' pooled trust money (conversion of trust funds, the single most-prosecuted residential-PM violation). The owner is modeled as a control-account sub-ledger party, so the pooled three-way SUM still ties out and the case would have been a SILENT PASS before this check; the engine raises an error-severity owner_overdraw finding for the $500 excess and the packet FAILs."
7
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "reportDate": "2026-05-31",
3
+ "period": "2026-05",
4
+ "bank": [
5
+ { "date": "2026-05-02", "amount": 80000, "memo": "security deposit jones", "kind": "deposit", "party": "", "source": "bank" },
6
+ { "date": "2026-05-03", "amount": -80000, "memo": "transfer to security deposit account", "kind": "transfer", "party": "", "source": "bank" }
7
+ ],
8
+ "book": [
9
+ { "date": "2026-05-01", "amount": 80000, "memo": "Security deposit - Jones 4B", "kind": "deposit", "party": "Jones (4B)", "source": "quickbooks" },
10
+ { "date": "2026-05-02", "amount": -80000, "memo": "Segregate security deposit transfer to escrow", "kind": "transfer", "party": "", "source": "quickbooks" }
11
+ ],
12
+ "rentroll": [
13
+ { "date": "2026-05-01", "amount": 80000, "memo": "security deposit held", "kind": "rent", "party": "Jones (4B)", "source": "rentroll" },
14
+ { "date": "2026-05-02", "amount": -80000, "memo": "segregated to escrow", "kind": "rent", "party": "Escrow", "source": "rentroll" }
15
+ ]
16
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "id": "security-deposit-segregation--benign-twin",
3
+ "control": "security_deposit_segregation",
4
+ "expectedVerdict": "PASS",
5
+ "expectedFinding": "security_deposit_segregation",
6
+ "principle": "The benign near-twin of the segregation control: the SAME $800 Jones security-deposit receipt, but this time a matching transfer moves the deposit OUT to a segregated escrow account. The deposit is held separately, so it is in trust. The engine raises NO security_deposit_segregation finding and the packet PASSes. The only difference from the out-of-trust twin is the presence of the segregation transfer."
7
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "reportDate": "2026-05-31",
3
+ "period": "2026-05",
4
+ "bank": [
5
+ { "date": "2026-05-02", "amount": 80000, "memo": "security deposit jones", "kind": "deposit", "party": "", "source": "bank" }
6
+ ],
7
+ "book": [
8
+ { "date": "2026-05-01", "amount": 80000, "memo": "Security deposit - Jones 4B", "kind": "deposit", "party": "Jones (4B)", "source": "quickbooks" }
9
+ ],
10
+ "rentroll": [
11
+ { "date": "2026-05-01", "amount": 80000, "memo": "security deposit held", "kind": "rent", "party": "Jones (4B)", "source": "rentroll" }
12
+ ]
13
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "id": "security-deposit-segregation--out-of-trust",
3
+ "control": "security_deposit_segregation",
4
+ "expectedVerdict": "FAIL",
5
+ "expectedFinding": "security_deposit_segregation",
6
+ "principle": "Each tenant's security deposit must be held SEPARATELY from operating trust funds. A security-deposit receipt sitting in the pooled book with NO offsetting transfer to a segregated account is commingled trust money — out of trust. Jones's $800 deposit is received but never segregated, so the engine raises an error-severity security_deposit_segregation finding and the packet FAILs."
7
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "reportDate": "2026-05-31",
3
+ "period": "2026-05",
4
+ "bank": [
5
+ { "date": "2026-05-02", "amount": 150000, "memo": "deposit smith", "kind": "deposit", "party": "", "source": "bank" }
6
+ ],
7
+ "book": [
8
+ { "date": "2026-05-01", "amount": 150000, "memo": "rent smith", "kind": "deposit", "party": "Smith (4A)", "source": "quickbooks" }
9
+ ],
10
+ "rentroll": [
11
+ { "date": "2026-05-01", "amount": 150000, "memo": "rent", "kind": "rent", "party": "Smith (4A)", "source": "rentroll" }
12
+ ]
13
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "id": "subledger-out-of-balance--benign-twin",
3
+ "control": "subledger_out_of_balance",
4
+ "expectedVerdict": "PASS",
5
+ "expectedFinding": "subledger_out_of_balance",
6
+ "principle": "The benign near-twin of the sub-ledger control: the SAME $1,500 of Smith's rent in the book, but now the beneficiary sub-ledger records the full $1,500 against Smith (4A). The sum of the sub-ledgers equals the book exactly, every dollar is attributed to a beneficiary, the three balances tie out, the engine raises NO subledger_out_of_balance finding, and the packet PASSes. The only difference from the out-of-trust twin is the sub-ledger amount: $1,500 vs $1,000."
7
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "reportDate": "2026-05-31",
3
+ "period": "2026-05",
4
+ "bank": [
5
+ { "date": "2026-05-02", "amount": 150000, "memo": "deposit smith", "kind": "deposit", "party": "", "source": "bank" }
6
+ ],
7
+ "book": [
8
+ { "date": "2026-05-01", "amount": 150000, "memo": "rent smith", "kind": "deposit", "party": "Smith (4A)", "source": "quickbooks" }
9
+ ],
10
+ "rentroll": [
11
+ { "date": "2026-05-01", "amount": 100000, "memo": "rent", "kind": "rent", "party": "Smith (4A)", "source": "rentroll" }
12
+ ]
13
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "id": "subledger-out-of-balance--out-of-trust",
3
+ "control": "subledger_out_of_balance",
4
+ "expectedVerdict": "FAIL",
5
+ "expectedFinding": "subledger_out_of_balance",
6
+ "principle": "The pooled trust account holds ONE number that must equal the SUM of every per-beneficiary sub-ledger. The book records $1,500 of Smith's rent received, but the beneficiary sub-ledger accounts for only $1,000 — a $500 gap that belongs to no one's ledger. Money in the account that is not attributed to any beneficiary is out of trust. The engine raises an error-severity subledger_out_of_balance finding for the $500 difference and the packet FAILs."
7
+ }
@@ -0,0 +1,4 @@
1
+ TxnDate,Description,Debit,Credit,Type
2
+ 2026-05-01,"Deposit - Jones rent received",,1500.00,Deposit
3
+ 2026-05-02,"Owner funding - Smith property",,500.00,Deposit
4
+ 2026-05-04,"Batched deposit - Doe rent (2 checks)",,1300.00,Deposit
@@ -0,0 +1,4 @@
1
+ Date,Description,Debit,Credit,Type
2
+ 2026-05-01,"Deposit - Jones rent received",,1500.00,Deposit
3
+ 2026-05-02,"Owner funding - Smith property",,500.00,Deposit
4
+ 2026-05-04,"Batched deposit - Doe rent (2 checks)",,1300.00,Deposit
@@ -0,0 +1,4 @@
1
+ Date,Description,Debit,Credit,Type
2
+ 2026-05-01,"Deposit - Jones rent received",,1500.00,Deposit
3
+ 2026-05-02,"Owner funding - Smith property",,500.00,Deposit
4
+ 2026-05-04,"Batched deposit - Doe rent (2 checks)",,1300.00,Deposit
@@ -0,0 +1,6 @@
1
+ Date,Type,Name,Memo,Debit,Credit
2
+ 05/01/2026,Deposit,Jones Tenant,Rent received May,,1500.00
3
+ 05/02/2026,Deposit,Smith Owner,Owner funding deposit,,500.00
4
+ 05/04/2026,Payment,Doe Tenant,Partial deposit (1 of 2),,650.00
5
+ 05/04/2026,Payment,Doe Tenant,Partial deposit (2 of 2),,650.00
6
+ 05/06/2026,Check,Acme Plumbing,Vendor check 2051 plumbing repair,300.00,
@@ -0,0 +1,8 @@
1
+ Date,Type,Name,Memo,Debit,Credit
2
+ 05/01/2026,Deposit,Jones Tenant,Rent received May,,1500.00
3
+ 05/02/2026,Deposit,Smith Owner,Owner funding deposit,,500.00
4
+ 05/04/2026,Payment,Doe Tenant,Partial deposit (1 of 2),,650.00
5
+ 05/04/2026,Payment,Doe Tenant,Partial deposit (2 of 2),,650.00
6
+ 05/06/2026,Check,Acme Plumbing,Vendor check 2051 plumbing repair,300.00,
7
+ 05/10/2026,Deposit,Wong Tenant,Wong rent check (later returned NSF),,225.00
8
+ 05/12/2026,Reversal,Wong Tenant,NSF reversal Wong rent check returned,225.00,
@@ -0,0 +1,6 @@
1
+ Date,Tenant,Unit,Type,Memo,Payment,Charge
2
+ 2026-05-01,Jones,101,Payment,Rent received May,1500.00,
3
+ 2026-05-02,Smith,OWNER,Payment,Owner funding deposit,500.00,
4
+ 2026-05-04,Doe,103,Payment,Partial deposit (1 of 2),650.00,
5
+ 2026-05-04,Doe,103,Payment,Partial deposit (2 of 2),650.00,
6
+ 2026-05-06,Smith,OWNER,Charge,Vendor check 2051 plumbing repair,,300.00
@@ -0,0 +1,8 @@
1
+ Date,Tenant,Unit,Type,Memo,Payment,Charge
2
+ 2026-05-01,Jones,101,Payment,Rent received May,1500.00,
3
+ 2026-05-02,Smith,OWNER,Payment,Owner funding deposit,500.00,
4
+ 2026-05-04,Doe,103,Payment,Partial deposit (1 of 2),650.00,
5
+ 2026-05-04,Doe,103,Payment,Partial deposit (2 of 2),650.00,
6
+ 2026-05-06,Smith,OWNER,Charge,Vendor check 2051 plumbing repair,,300.00
7
+ 2026-05-10,Wong,104,Payment,Wong rent check (later returned NSF),225.00,
8
+ 2026-05-12,Wong,104,Charge,NSF reversal Wong rent check returned,,225.00
@@ -0,0 +1,5 @@
1
+ Date,Tenant,Unit,Type,Memo,Payment,Charge
2
+ 2026-05-01,Jones,101,Payment,Rent received May,1500.00,
3
+ 2026-05-04,Doe,103,Payment,Partial deposit (1 of 2),650.00,
4
+ 2026-05-04,Doe,103,Payment,Partial deposit (2 of 2),650.00,
5
+ 2026-05-06,Smith,OWNER,Charge,Vendor check 2051 plumbing repair,,300.00
@@ -0,0 +1,25 @@
1
+ {
2
+ "_DISCLAIMER": "A plan is an ACCESS DESCRIPTION for delivered software value (which paid features a subscription unlocks and for how long). It is NOT a token, NOT tradeable, NOT an appreciating asset, and this catalog makes NO claim of regulatory compliance. The actual subscription agreement governs.",
3
+ "kind": "trustledger-plan-catalog",
4
+ "schemaVersion": 1,
5
+ "plans": [
6
+ {
7
+ "planId": "solo-monthly",
8
+ "displayName": "Solo (monthly)",
9
+ "entitlements": ["seal"],
10
+ "termDays": 30
11
+ },
12
+ {
13
+ "planId": "pro-annual",
14
+ "displayName": "Pro (annual)",
15
+ "entitlements": ["seal", "multi_state_policy"],
16
+ "termDays": 365
17
+ },
18
+ {
19
+ "planId": "firm-annual",
20
+ "displayName": "Firm (annual)",
21
+ "entitlements": ["seal", "multi_state_policy", "unlimited_reconcile"],
22
+ "termDays": 365
23
+ }
24
+ ]
25
+ }
@@ -0,0 +1,27 @@
1
+ {
2
+ "_DISCLAIMER": "A price binding is an OPERATOR-MAINTAINED routing table mapping a billing provider's own price/product id (e.g. a Stripe `price_...` id) to one of THIS catalog's planIds. It is NOT a token, NOT tradeable, NOT an appreciating asset, and makes NO claim of regulatory compliance. It does NOT authenticate the inbound webhook (verifying the provider's signing secret is a HUMAN step); it only maps an already-authenticated event's price id onto a plan so fulfillment can never silently mis-grant. The actual subscription agreement governs.",
3
+ "kind": "trustledger-price-binding",
4
+ "schemaVersion": 1,
5
+ "mappings": [
6
+ {
7
+ "provider": "stripe",
8
+ "priceId": "price_solo_monthly_usd",
9
+ "planId": "solo-monthly"
10
+ },
11
+ {
12
+ "provider": "stripe",
13
+ "priceId": "price_pro_annual_usd",
14
+ "planId": "pro-annual"
15
+ },
16
+ {
17
+ "provider": "stripe",
18
+ "priceId": "price_firm_annual_usd",
19
+ "planId": "firm-annual"
20
+ },
21
+ {
22
+ "provider": "paddle",
23
+ "priceId": "pri_01h_pro_annual",
24
+ "planId": "pro-annual"
25
+ }
26
+ ]
27
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "_DISCLAIMER": "DRAFT / NOT-LEGAL-ADVICE — ILLUSTRATIVE ONLY. This sample grades an `ambiguous_deposit` (a book deposit whose beneficiary type cannot be determined) from the built-in WARNING up to ERROR, to show how a per-state policy can make an undetermined deposit a hard FAIL until it is classified. The citation below is a PLACEHOLDER, not verified legal text. A qualified CPA/broker must edit this for their actual jurisdiction. This tool aids reconciliation; the broker remains the responsible legal custodian of trust funds.",
3
+ "schemaVersion": 1,
4
+ "state": "EXAMPLE-STATE (ambiguous-deposit hard-fail)",
5
+ "severities": {
6
+ "ambiguous_deposit": "error"
7
+ },
8
+ "citations": {
9
+ "ambiguous_deposit": "EXAMPLE Trust Account Rule §0000(b) (PLACEHOLDER) — every deposit into the trust account must be identifiable to a beneficiary; an unclassifiable deposit may conceal an un-segregated security deposit and is treated as a hard finding, not a warning, until its beneficiary type is established."
10
+ },
11
+ "toleranceCents": 0
12
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "_DISCLAIMER": "DRAFT / NOT-LEGAL-ADVICE. This file reproduces trustledger's built-in DEFAULT_SEVERITY baseline verbatim. It makes NO claim of regulatory compliance and does not replace a CPA's review. A qualified human edits this for their jurisdiction.",
3
+ "schemaVersion": 1,
4
+ "state": "BASELINE (built-in defaults)",
5
+ "severities": {
6
+ "outstanding_deposit": "info",
7
+ "outstanding_check": "info",
8
+ "timing": "info",
9
+ "nsf_reversal": "warning",
10
+ "owner_draw": "warning",
11
+ "owner_overdraw": "error",
12
+ "security_deposit_segregation": "error",
13
+ "unreconciled_bank": "warning",
14
+ "unreconciled_book": "warning",
15
+ "subledger_out_of_balance": "error",
16
+ "negative_tenant_ledger": "error",
17
+ "bank_book_mismatch": "error"
18
+ }
19
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "_DISCLAIMER": "DRAFT / NOT-LEGAL-ADVICE — ILLUSTRATIVE ONLY. This sample flips an NSF reversal from the built-in WARNING to ERROR to show how a per-state policy grounds a control in a statute. The citation below is a PLACEHOLDER, not verified legal text. A qualified CPA/broker must edit this for their actual jurisdiction. This tool aids reconciliation; the broker remains the responsible legal custodian of trust funds.",
3
+ "schemaVersion": 1,
4
+ "state": "EXAMPLE-STATE (illustrative override)",
5
+ "severities": {
6
+ "nsf_reversal": "error"
7
+ },
8
+ "citations": {
9
+ "nsf_reversal": "EXAMPLE Trust Account Rule §0000(a) (PLACEHOLDER) — a reversed/returned tenant deposit leaves the trust account short and must be cured immediately; treated as a hard finding, not a warning."
10
+ },
11
+ "toleranceCents": 0
12
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "_DISCLAIMER": "DRAFT / NOT-LEGAL-ADVICE — ILLUSTRATIVE ONLY. This sample RE-GRADES a `negative_tenant_ledger` (an individual beneficiary whose own trust sub-ledger is negative) from the built-in ERROR DOWN to WARNING, to show how a per-state policy can decide — with NO schema change, only an entry in the existing severities map — that a documented negative individual ledger needs a human eye rather than an automatic out-of-trust FAIL. A negative individual ledger means the broker is holding less than zero in trust for that beneficiary; most jurisdictions treat that as out-of-trust, so the built-in default is ERROR and this DE-escalation is illustrative, NOT a recommendation. The citation below is a PLACEHOLDER, not verified legal text. A qualified CPA/broker must edit this for their actual jurisdiction. This tool aids reconciliation; the broker remains the responsible legal custodian of trust funds.",
3
+ "schemaVersion": 1,
4
+ "state": "EXAMPLE-STATE (negative-ledger re-grade)",
5
+ "severities": {
6
+ "negative_tenant_ledger": "warning"
7
+ },
8
+ "citations": {
9
+ "negative_tenant_ledger": "EXAMPLE Trust Account Rule §0000(c) (PLACEHOLDER) — a beneficiary sub-ledger that goes negative within a documented, curable timing window is reviewed by the broker before it is treated as a hard out-of-trust finding; graded a warning pending that review, NOT silently passed."
10
+ },
11
+ "toleranceCents": 0
12
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "_DISCLAIMER": "DRAFT / NOT-LEGAL-ADVICE — ILLUSTRATIVE ONLY. This sample RE-GRADES an `owner_overdraw` (an owner account that drew MORE than its own contributed capital, paying itself out of other beneficiaries' trust money) from the built-in ERROR DOWN to WARNING, to show how a per-state policy can decide — with NO schema change, only an entry in the existing severities map — that a documented over-capital owner draw needs a human eye rather than an automatic out-of-trust FAIL. Paying an owner out of tenant or security-deposit money is a conversion of trust funds and is the single most-prosecuted residential-PM trust violation, so the built-in default is ERROR and this DE-escalation is illustrative, NOT a recommendation. The citation below is a PLACEHOLDER, not verified legal text. A qualified CPA/broker must edit this for their actual jurisdiction. This tool aids reconciliation; the broker remains the responsible legal custodian of trust funds.",
3
+ "schemaVersion": 1,
4
+ "state": "EXAMPLE-STATE (owner-overdraw re-grade)",
5
+ "severities": {
6
+ "owner_overdraw": "warning"
7
+ },
8
+ "citations": {
9
+ "owner_overdraw": "EXAMPLE Trust Account Rule §0000(d) (PLACEHOLDER) — an owner disbursement that temporarily exceeds the owner's own contributed capital within a documented, curable timing window is reviewed by the broker before it is treated as a hard out-of-trust finding; graded a warning pending that review, NOT silently passed."
10
+ },
11
+ "toleranceCents": 0
12
+ }
@@ -0,0 +1,7 @@
1
+ Date,Type,Name,Memo,Debit,Credit
2
+ 05/01/2026,Deposit,Jones Tenant,Rent received May,,1500.00
3
+ 05/03/2026,Check,Smith Owner,Owner draw check #1042,750.00,
4
+ 05/05/2026,Deposit,Jones Tenant,"NSF returned item - rent reversal",1200.00,
5
+ 05/07/2026,Payment,Doe Tenant,Partial deposit (1 of 2),,650.00
6
+ 05/07/2026,Payment,Doe Tenant,Partial deposit (2 of 2),,650.00
7
+ 05/09/2026,Service Charge,Bank,Monthly service charge,12.50,
@@ -0,0 +1,5 @@
1
+ Date,Type,Num,Name,Memo,Clr,Split,Debit,Credit
2
+ 5-Jan-2024,Deposit,,Jones Tenant,Rent received January,R,Rent Income,,1500.00
3
+ 7-Jan-2024,Check,1042,Smith Owner,Owner draw check,R,Owner Equity,750.00,
4
+ 9-Jan-2024,Deposit,,Jones Tenant,NSF returned item - rent reversal,,Rent Income,1200.00,
5
+ 11-Jan-2024,Service Charge,,Bank,Monthly service charge,R,Bank Fees,12.50,
@@ -0,0 +1,6 @@
1
+ Date,Tenant,Unit,Type,Memo,Payment,Charge
2
+ 2026-05-01,Jones,101,Payment,Rent received,1500.00,
3
+ 2026-05-01,Smith,102,Charge,Monthly rent due,,1500.00
4
+ 2026-05-05,Jones,101,NSF,Returned check - rent reversal,,1200.00
5
+ 2026-05-07,Doe,103,Payment,Partial deposit (1 of 2),650.00,
6
+ 2026-05-07,Doe,103,Payment,Partial deposit (2 of 2),650.00,
@@ -0,0 +1,4 @@
1
+ Date,Lease,Unit,Type,Memo,Amount Paid,Amount Due,Balance
2
+ "Jan 1, 2024",Jones,101,Payment,Rent received,1500.00,,0.00
3
+ "Jan 1, 2024",Smith,102,Charge,Monthly rent due,,1500.00,1500.00
4
+ "Jan 5, 2024",Jones,101,NSF,Returned check - rent reversal,,1200.00,1200.00