<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Deep dives on Katalyst Documentation</title><link>https://abegong.github.io/katalyst/deep-dives/</link><description>Recent content in Deep dives on Katalyst Documentation</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://abegong.github.io/katalyst/deep-dives/index.xml" rel="self" type="application/rss+xml"/><item><title>Vision and scope</title><link>https://abegong.github.io/katalyst/deep-dives/vision/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://abegong.github.io/katalyst/deep-dives/vision/</guid><description>&lt;h1 id="vision-and-scope"&gt;Vision and scope&lt;a class="anchor" href="#vision-and-scope"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Traditional data management often forces teams into binary choices:
structured or unstructured, rigid or chaotic. Katalyst is an experimental
framework aimed at enabling fast, low-risk evolution through progressive
typing in the storage layer.&lt;/p&gt;
&lt;h2 id="database-management-is-risky-and-rigid"&gt;Database management is risky and rigid&lt;a class="anchor" href="#database-management-is-risky-and-rigid"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Backend architecture and database changes are frequently high-risk operations.
Teams therefore wrap data systems in heavy governance for access control,
schema changes, and migrations. Those controls are necessary, but the cost can
make change rare. Rare change creates rigidity.&lt;/p&gt;</description></item><item><title>Progressive operations</title><link>https://abegong.github.io/katalyst/deep-dives/progressive-operations/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://abegong.github.io/katalyst/deep-dives/progressive-operations/</guid><description>&lt;h1 id="progressive-operations"&gt;Progressive Operations&lt;a class="anchor" href="#progressive-operations"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;&lt;em&gt;How storage backends evolve as query complexity grows. Each tier unlocks new operations, but requires structural commitments the previous tier doesn&amp;rsquo;t.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Structuredness comes down to which operations a backend supports, and schemas and checks are the means: enforcing checks is what makes new operations available. The core thesis follows: many knowledge systems start as filesystems and progressively acquire database-like structure. The progression isn&amp;rsquo;t arbitrary, each tier is driven by a class of operations that can&amp;rsquo;t be satisfied at the previous level.&lt;/p&gt;</description></item><item><title>Core concepts</title><link>https://abegong.github.io/katalyst/deep-dives/core-concepts/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://abegong.github.io/katalyst/deep-dives/core-concepts/</guid><description>&lt;h1 id="core-concepts"&gt;Core concepts&lt;a class="anchor" href="#core-concepts"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;Status: work in progress.&lt;/strong&gt; A deliberately abstract sketch. These concepts
are not about &lt;code&gt;katalyst&lt;/code&gt; specifically; katalyst is one instantiation among
many. Expect revisions until they settle.&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;The vocabulary katalyst reasons in, general enough to describe a Postgres table,
a directory of markdown files, and a MongoDB collection the same way, so the
abstractions built on top bridge them too. Each term&amp;rsquo;s canonical definition
lives in the &lt;a href="https://abegong.github.io/katalyst/reference/glossary/"&gt;glossary&lt;/a&gt;; this page
introduces the concepts and how they fit. For the katalyst-specific
instantiation, see the &lt;a href="https://abegong.github.io/katalyst/deep-dives/domain-model/"&gt;domain model&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Domain model</title><link>https://abegong.github.io/katalyst/deep-dives/domain-model/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://abegong.github.io/katalyst/deep-dives/domain-model/</guid><description>&lt;h1 id="domain-model"&gt;Domain model&lt;a class="anchor" href="#domain-model"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;What &lt;code&gt;katalyst&lt;/code&gt; is &lt;em&gt;about&lt;/em&gt;: the concepts it manipulates and how they relate.
This is the conceptual map and the entry point to the subsystem deep-dives -
each piece is summarized here and documented in full on its own page.&lt;/p&gt;
&lt;p&gt;This page is the katalyst-specific map; &lt;a href="https://abegong.github.io/katalyst/deep-dives/core-concepts/"&gt;core concepts&lt;/a&gt;
is the same map at the general, tool-agnostic altitude (the same vocabulary
applied to a Postgres table or a MongoDB collection). For &lt;em&gt;what&lt;/em&gt; the commands do,
see the &lt;a href="https://abegong.github.io/katalyst/getting-started/"&gt;getting-started tutorial&lt;/a&gt; and the
&lt;a href="https://abegong.github.io/katalyst/reference/configuration/"&gt;configuration reference&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Storage layer</title><link>https://abegong.github.io/katalyst/deep-dives/storage/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://abegong.github.io/katalyst/deep-dives/storage/</guid><description>&lt;h1 id="storage-layer"&gt;Storage layer&lt;a class="anchor" href="#storage-layer"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;Status: partly shipped.&lt;/strong&gt; The seam and the config model exist
(&lt;code&gt;internal/storage&lt;/code&gt;, storage instances under &lt;code&gt;.katalyst/storage/&lt;/code&gt;); the
richer mapping (multi-coordinate templates, inferred mode, non-filesystem
backends) is still ahead. This page describes the whole arc, and notes what
is built versus planned.&lt;/p&gt;
&lt;/blockquote&gt;&lt;h2 id="what-the-storage-layer-is"&gt;What the storage layer is&lt;a class="anchor" href="#what-the-storage-layer-is"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The &lt;strong&gt;storage layer&lt;/strong&gt; is the two-way mapping between a backend store and the
Katalyst domain model. It answers: &lt;em&gt;what collections and items does this store
contain, and where does each one live?&lt;/em&gt;, in both directions. It is Katalyst&amp;rsquo;s
realization of the general &lt;strong&gt;storage&lt;/strong&gt; concept from
&lt;a href="https://abegong.github.io/katalyst/deep-dives/core-concepts/"&gt;core concepts&lt;/a&gt;: the filesystem is one
backend; SQLite, directories of CSVs, S3 buckets, and hosted APIs are others.
The first real stress test is &lt;strong&gt;SQLite&lt;/strong&gt;, because it is the first backend that
forces the granularity question below.&lt;/p&gt;</description></item><item><title>Collections</title><link>https://abegong.github.io/katalyst/deep-dives/collections/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://abegong.github.io/katalyst/deep-dives/collections/</guid><description>&lt;h1 id="collections"&gt;Collections&lt;a class="anchor" href="#collections"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;The &lt;code&gt;internal/project&lt;/code&gt; loader (&lt;code&gt;loader.go&lt;/code&gt;) is the orchestration hub: it loads a
project&amp;rsquo;s &lt;code&gt;.katalyst/&lt;/code&gt; directory, resolves named schemas, and assembles storage
instances and their collections (each object type parses its own config — the
storage registry validates a declared &lt;code&gt;type&lt;/code&gt;, and a collection parses its own
block in &lt;code&gt;storage/collection&lt;/code&gt;). It decides which schema applies to a given item,
and the &lt;code&gt;check&lt;/code&gt; lifecycle is driven from here.
This page is the model and the &lt;em&gt;why&lt;/em&gt;; for the key-by-key surface see the
&lt;a href="https://abegong.github.io/katalyst/reference/configuration/"&gt;configuration reference&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Checks</title><link>https://abegong.github.io/katalyst/deep-dives/checks/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://abegong.github.io/katalyst/deep-dives/checks/</guid><description>&lt;h1 id="checks"&gt;Checks&lt;a class="anchor" href="#checks"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;A &lt;strong&gt;check&lt;/strong&gt; asserts one condition on an item and reports a violation when the
item fails it. The check engine turns a collection&amp;rsquo;s configuration into a
verdict on each item: it resolves the checks that apply, runs them, and
collects their violations. This page explains the model the engine is built on,
how check libraries supply and run checks, and why the pieces are shaped the way
they are. For the per-type catalog see the &lt;a href="https://abegong.github.io/katalyst/reference/check-types/"&gt;check types
reference&lt;/a&gt;; for the
end-to-end data flow of one &lt;code&gt;check&lt;/code&gt; invocation see the &lt;a href="https://abegong.github.io/katalyst/deep-dives/domain-model/"&gt;domain
model&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Inspectors</title><link>https://abegong.github.io/katalyst/deep-dives/inspectors/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://abegong.github.io/katalyst/deep-dives/inspectors/</guid><description>&lt;h1 id="inspectors"&gt;Inspectors&lt;a class="anchor" href="#inspectors"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;An &lt;strong&gt;inspector&lt;/strong&gt; profiles content and returns &lt;em&gt;evidence&lt;/em&gt;: counts and
distributions, never recommendations. Inspectors are the descriptive dual of
&lt;a href="https://abegong.github.io/katalyst/deep-dives/checks/"&gt;checks&lt;/a&gt; - a check asserts a predicate and reports
violations; an inspector reports the distribution that predicate would be tested
against. They drive the &lt;a href="https://abegong.github.io/katalyst/reference/cli/"&gt;&lt;code&gt;inspect&lt;/code&gt;&lt;/a&gt;
command. For the per-inspector catalog see the &lt;a href="https://abegong.github.io/katalyst/reference/inspectors/"&gt;inspectors
reference&lt;/a&gt;; this page is the
model and the rationale behind it.&lt;/p&gt;
&lt;h2 id="two-layers"&gt;Two layers&lt;a class="anchor" href="#two-layers"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Inspectors come in two layers, distinguished by &lt;em&gt;how they reference the data&lt;/em&gt;:&lt;/p&gt;</description></item><item><title>Frontmatter and fix</title><link>https://abegong.github.io/katalyst/deep-dives/formatting/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://abegong.github.io/katalyst/deep-dives/formatting/</guid><description>&lt;h1 id="frontmatter-and-fix"&gt;Frontmatter and fix&lt;a class="anchor" href="#frontmatter-and-fix"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;How Katalyst parses a markdown file&amp;rsquo;s frontmatter, the in-memory document that
produces, and why &lt;a href="https://abegong.github.io/katalyst/reference/cli/"&gt;&lt;code&gt;fix&lt;/code&gt;&lt;/a&gt; rewrites
that frontmatter the opinionated way it does. The codec (parse and encode) lives
in &lt;code&gt;internal/codec/markdownbodytext&lt;/code&gt;; the &lt;code&gt;fix&lt;/code&gt; transform that drives the
canonical form, and the backend write that persists it, live in &lt;code&gt;internal/fix&lt;/code&gt;
and &lt;code&gt;internal/storage/collection/filesystem&lt;/code&gt; respectively.&lt;/p&gt;
&lt;h2 id="the-markdown-document"&gt;The markdown document&lt;a class="anchor" href="#the-markdown-document"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The unit of work is a file on disk with two optional regions:&lt;/p&gt;</description></item></channel></rss>