Skip to content

PostgreSQL as DepositMatch's system of record

Example from HELIX’s own docs. This generated page comes from docs/helix/. Use it to see the method in practice; start with the artifact-type catalog for reusable templates. Historical plans and reports may describe retired architecture.

Rendered from this script. The Markdown below is the document of record; open the rendered file to see the finished deck: HTML, PDF.

Source identity (from 06-iterate/deliverables/DEL-004-postgresql-component-profile-onepager.md):

ddx:
  id: DEL-004
  type: deliverable
  activity: iterate
  kind: one-pager
  status: draft
  authoring:
    home: repo
    export:
      - docs/helix/06-iterate/deliverables/assets/DEL-004-postgresql-component-profile-onepager.html
      - docs/helix/06-iterate/deliverables/assets/DEL-004-postgresql-component-profile-onepager.pdf
  links:
    - id: component-profile-postgresql
      kind: informed_by

PostgreSQL as DepositMatch’s system of record

Brief

  • Audience: the product and engineering leads who own the system-of-record decision, and the reviewers who sign off on it
  • Occasion: a leave-behind after the review, for readers who will not open the brief
  • Decision or action sought: the system-of-record choice, recorded in the decision this page informs
  • Time slot or page budget: one Letter page
  • Kind: one-pager
  • As of: 22 September 2026
  • Constraints: internal only; nothing beyond the public record; every figure carries the record’s own label; no owner, date, or grade the record lacks
  • Look: classic
  • Scope: the PostgreSQL component profile (one candidate; the sibling profiles carry the alternatives’ own records)
  • Breadth: survey
  • Angle: the seven capabilities the system-of-record decision requires
  • Must cover: the need and the seven required capabilities; what PostgreSQL is; what the record shows on each capability; the alternatives on the same capabilities; every open question and its route
  • Must omit: a recommendation among the candidates; owners, dates, durations, or grades the record does not state
  • Max messages: 4
  • Takeaway: on the public record PostgreSQL 16 meets all seven capabilities DepositMatch requires of its system of record, six from its own documentation and encryption at rest from the Amazon RDS hosting; restore time and replica lag under an import burst are the questions only a drill or a test can answer

Story

  • Flow: candidate-briefing

  • Takeaway: on the public record PostgreSQL 16 meets all seven capabilities DepositMatch requires of its system of record, six from its own documentation and encryption at rest from the Amazon RDS hosting; restore time and replica lag under an import burst are the questions only a drill or a test can answer

  • Messages (ranked by how much each informs the system-of-record decision):

    1. PostgreSQL 16 meets every one of the seven required capabilities on the public record, and the verdict is Fit (evidence: component-profile-postgresql#capability-alignment)
    2. DepositMatch needs one store for imports, source rows, invoices, deposits, matches, decisions, exceptions, and the audit log, so that every accepted match can be explained at month-end and every exception stays owned (evidence: component-profile-postgresql#need, component-profile-postgresql#required-capabilities)
    3. MySQL 8.4 has no native row-level security and a document database trades relational integrity for flexible payloads; Amazon RDS adds the at-rest encryption, five-minute log interval, and failover standby the software cannot supply (evidence: component-profile-postgresql#competitive-landscape)
    4. PostgreSQL is a community-governed object-relational database, the most-used in the 2025 developer survey, with a yearly major release, five years of support, and a no-fee licence (evidence: component-profile-postgresql#what-it-is)
  • Beats and headings (label headings; the flow’s heading_style is label):

    #BeatHeadingMessage
    1introductionPostgreSQL as DepositMatch’s system of recordM2
    2required-capabilitiesRequired capabilitiesM2
    3what-it-isWhat it isM4
    4capability-alignmentCapability alignmentM1
    5competitive-landscapeCompetitive landscapeM3
    6open-questionsOpen questionsM1
  • Concept coverage:

    #Concept groupAuthorityStatusCarried by / reason
    1The need: the role, the use cases, the goalsNeedcoveredM2 (introduction)
    2The seven required capabilities and where each comes fromRequired CapabilitiescoveredM2 (section 1)
    3What PostgreSQL is, who governs it, adoption, cadence, licenceWhat It IscoveredM4 (section 2)
    4What the record shows on each capability, and the verdictCapability AlignmentcoveredM1 (section 3)
    5Every alternative on the same capabilitiesCompetitive LandscapecoveredM3 (section 4)
    6Every open question and its routeOpen QuestionscoveredM1 (section 5)
    7What is outside the core, the operational table, pricing, the incumbent, the source listCapability Alignment (other capabilities), Technology and Operations, Pricing and Licensing, Scope, Sourcesomittedpage budget: one page carries the need, the criteria, the thing, the alignment, the landscape, and the open questions; the brief carries the rest
    8The profile’s own review checklistReview Checklistomittedaudience: authoring hygiene for the record, of no use to the decision
  • Horizontal-logic test: label headings; the check does not apply.

Content

1. PostgreSQL as DepositMatch’s system of record

Pattern: title Body:

  • DepositMatch needs one system of record for imports, source rows, invoices, deposits, matches, reviewer decisions, exceptions, and the audit log, so that every accepted match can be explained at month-end and every exception stays owned.
  • It must meet the seven capabilities below. On the public record PostgreSQL 16 meets all seven, six on its own and encryption at rest through the Amazon RDS hosting; restore time and replica lag under an import burst wait on a drill and a test. Visual: kind: none | icon: database. Masthead icon only; no title page in a document Notes: n/a for a document render Sources: S1, S2, S4

2. Required capabilities

Pattern: table Body:

  • Each capability comes from a project document, named in the last column Visual: kind: table | columns: Capability / Comes from | rows: Atomic import commit under constraints / decision record, import standard; Attribution and kept history / auditability standard; Access scoped by role to the column / financial-data standard; Encryption in transit and at rest / financial-data standard, architecture document; Point-in-time recovery within fifteen minutes / architecture document; A job queue inside the store / architecture document; A read replica later / decision record. The seven criteria every later section is measured against Notes: The brief carries the goal each capability serves and what the record shows on it. Sources: S2

3. What it is

Pattern: claim-evidence Body:

  • An open-source object-relational database, community governed, the most-used in the 2025 Stack Overflow survey, one major release a year with five years of support, no licence fee Visual: kind: none. One sentence carries governance, adoption, and licence Notes: The brief carries the built-for use cases. Sources: S3

4. Capability alignment

Pattern: table Body:

  • Superusers always bypass row security and owners do unless the table forces it; at-rest encryption and the five-minute log interval come from the hosting Visual: kind: table | columns: Capability / Record / Status | rows: Atomic commit / Transactions, six constraint types / Met; Attribution / Triggers write user, time, row / Met; Role scope / Column privileges, row security / Met; Encryption / TLS, AES-256 via hosting / Met; Point-in-time recovery / Archiving, logs every 5 minutes / Met; Job queue / SKIP LOCKED / Met; Read replica later / Hot standby / Met | highlight: 1. Seven rows, the record’s status word on each Notes: The profile’s verdict is Fit; its confidence grade is Medium, because the transaction, constraint, trigger, archiving, and queue claims rest on the maker alone. Sources: S4, S8

5. Competitive landscape

Pattern: table Body:

  • MySQL 8.4 has no native row-level security; Amazon RDS adds the at-rest encryption the software cannot supply Visual: kind: table | columns: Candidate / Role scope to the column | rows: PostgreSQL 16 / Met; MySQL 8.4 Community / Unmet, no native row-level security; Document database (MongoDB) / not researched; Amazon RDS for PostgreSQL 16 / Inherits | highlight: 1. The capability the alternatives diverge on most; the brief carries all seven Notes: Each alternative has its own profile, or none yet; a cell marked not researched is filled there. Sources: S7

6. Open questions

Pattern: claim-evidence Body:

  • Restore time waits on the scheduled restore drill, replica lag on the decision’s review trigger, and row-security throughput on a test if isolation moves into the database Visual: kind: none. One sentence carries the profile’s three open questions and their routes Notes: The source names no owner, date, or duration for any of the three. Sources: S9

Sources

IdClaim or figureGoverning artifact and section
S1Scope and Summary: PostgreSQL 16, the system-of-record role, the accepted decision this informs; 33 sourcescomponent-profile-postgresql#scope, component-profile-postgresql#summary, component-profile-postgresql#sources
S2Need and Required Capabilities: the goals and the seven capabilities with their originscomponent-profile-postgresql#need, component-profile-postgresql#required-capabilities
S3What It Is: object-relational, ACID-compliant since 2001, community governed, 55.6% of 2025 survey respondents, one major a year, five years of support, 16 until 2028, no-fee licencecomponent-profile-postgresql#what-it-is
S4Capability Alignment: transactions and constraints; triggers with current_user and now(); column privileges and row security since 9.5 (superusers always bypass, owners unless forced, SET LOCAL); TLS, AES-256 via hosting; archiving, logs every 5 minutes; SKIP LOCKED; hot standby; Met on all seven; verdict Fitcomponent-profile-postgresql#capability-alignment
S5Other capabilities: JSONB in core; no cross-server sharding; logical replication since 10component-profile-postgresql#capability-alignment
S6Operations and pricing: certifications and running cost not publishedcomponent-profile-postgresql#technology-and-operations, component-profile-postgresql#pricing-and-licensing
S7Competitive Landscape: MySQL 8.4 (InnoDB ACID, no native row-level security, GPL); MongoDB (transactions since 4.0); Amazon RDS for PostgreSQL 16 (PostgreSQL 13 to 17, AES-256, logs every 5 minutes, replicas with a lag metric, Multi-AZ standby)component-profile-postgresql#competitive-landscape
S8Confidence: Medium; design-defining claims rest on the maker alonecomponent-profile-postgresql#confidence
S9Open Questions: restore within the 4-hour target, replica lag under an import burst, row-security throughput behind the pool; drill, review trigger, testcomponent-profile-postgresql#open-questions

Assumptions and gaps

  • Assumption: the audience is the product and engineering leads named as deciders on the system-of-record decision, from the decision record’s own header. This run exercises the research process, the mapping, and the renderer end to end against the catalog’s example project.
  • Gap: the profile marks most MySQL and MongoDB landscape cells not researched. The table carries those marks rather than filling them.
  • Gap: the profile names no owner, date, or duration for the restore drill or the lag spike, so this page has no next-steps unit and ends on the open questions.

Render

  • Theme: deliverables/theme.yml, look classic (scripts/render-doc.js –kind one-pager)
  • Targets: docs/helix/06-iterate/deliverables/assets/DEL-004-postgresql-component-profile-onepager.html and .pdf (headless Chrome print-to-pdf), 1 page, about 410 words against the 450-word budget. The renderer reported no em dash on the page and drew no placeholder.
  • Gate: check-deliverable.py, 0 blocking, 0 warnings; label headings, so the horizontal-logic check does not apply.
  • Visual: the page was rendered to an image with pdftoppm and inspected: the masthead carries the title and the as-of date, the introduction runs need, criteria, finding, the two-column grid balances, no split cells, no overflow.
  • By hand: every body proves its heading from the Sources rows; every number and status word on the page appears in the profile; no HELIX vocabulary on the page; coverage 8 of 8 groups covered or omitted with a reason, 5 of 5 must-cover items carried, the must-omit items absent from every heading and body.
Innsigle seal: model-primary by HELIX

The signature covers the markdown source of this page, not these HTML bytes. This page quotes that seal; verify it against the source file.

Composition
model-primary
Issuer
HELIX helix
Signing key
ed25519:b0865d76d834a52c48506414d16f4e5a (build key)
Signed source
artifacts/deliverables/DEL-004-postgresql-component-profile-onepager.md
Signed
2026-09-23T14:11:58Z
Content digest
sha256:f9aede3c…c381fd03

This build key is endorsed by the human key for build signing; the signature is not a detector and not a truth guarantee.

Raw attestation JSON
{
  "payload": {
    "innsigle": "1",
    "type": "https://innsigle.dev/claim/colophon/v1",
    "issued_at": "2026-09-23T14:11:58Z",
    "issuer": {
      "id": "helix",
      "name": "HELIX",
      "key_id": "ed25519:b0865d76d834a52c48506414d16f4e5a",
      "key_url": "https://documentdrivendx.github.io/helix/.well-known/innsigle/keys.json"
    },
    "subjects": [
      {
        "uri": "https://documentdrivendx.github.io/helix/artifacts/deliverables/DEL-004-postgresql-component-profile-onepager/",
        "digest": {
          "alg": "sha256",
          "value": "f9aede3cbf9facdb3addfdc36b015ca1c86e92bda09deca265302240c381fd03"
        }
      }
    ],
    "colophon": {
      "schema_version": "1",
      "composition": "model-primary",
      "ingredients": [
        {
          "kind": "model",
          "name": "Claude",
          "role": "draft"
        },
        {
          "kind": "tool",
          "name": "sloptimizer",
          "role": "rewrite"
        },
        {
          "kind": "human",
          "name": "operator",
          "role": "structure-edit"
        }
      ],
      "notes": null
    }
  },
  "payload_encoding": "json",
  "signatures": [
    {
      "key_id": "ed25519:b0865d76d834a52c48506414d16f4e5a",
      "alg": "ed25519",
      "sig": "Am1zVBUvsN-XYuqclxYklkfDbmNel02CpjrL7EVK7Rk_79fDQs5Eyz6693MHmb2Q9G-y2eM7nBeHrWOBX1azCw",
      "signed_at": "2026-09-23T14:11:58Z"
    }
  ]
}