TetrisUIIn Development

TetrisUI

In Development

Composable, modular application runtime. Software that upgrades and maintains itself.

DRI: Wiley Jones
Overview

TetrisUI is the module system for DOSS applications. Every feature is a self-contained ZSL package with explicit imports and exports. Customers mix and match modules into an application, and when the platform ships a new version the runtime merges upstream changes with local customizations automatically — the way git does for text, but at the application-graph level.

The upgrade problem

Why Gen3 rots

  1. 01

    Customization and upgrade diverge

    Every customer-specific tweak in a legacy ERP makes the next vendor release harder to apply. At some point, the customer is on a branch they can't merge back.

  2. 02

    The cost compounds

    After a few years of drift, 'upgrade' stops being a button and becomes a six-figure consulting engagement. The vendor has shipped four versions; the customer is still on one.

  3. 03

    Eventually the customer forks

    Either they stop upgrading or they pay to keep up. Both outcomes are bad for everyone — the customer loses new features; the vendor carries a long tail of bespoke versions.

A configbase, not a codebase

The TetrisUI answer

Every module is a ZSL package

A schema, a set of workflows, a few forms, and a manifest of what it imports and exports. Small surface, clear contracts.

Customizations live inside the module system

A customer extending Finance.InvoiceApproval doesn't fork it; they publish a local overlay module that's also just ZSL. The runtime knows how to combine them.

Upgrades are three-way merges

Upstream (platform v1.2), base (platform v1.1), local (customer overlays). Tetris computes the merged graph, runs automated tests, and escalates conflicts to a human.

No mystery state

Because everything is ZSL and every change is a commit, `zsl diff` tells you exactly what changed between versions — in both the platform and the customer overlays.

Merge lifecycle

How an upgrade actually runs

  1. 01

    1. Snapshot

    Runtime captures the customer's current application graph — modules, versions, overlays, overrides.

  2. 02

    2. Diff

    Compute the graph-space delta between platform v(n) and v(n+1). Structural changes (renames, moves, splits) are first-class, not text diffs.

  3. 03

    3. Merge candidate

    Apply upstream changes on top of the customer's overlays. Record conflicts (same path changed on both sides) but don't block on them yet.

  4. 04

    4. Test

    Run the customer's ENT-Bench-style regression suite against the candidate in a sandbox with a cloned Z-Table. Record every pass/fail.

  5. 05

    5. Route

    Clean merges auto-land. Conflicts or failed tests route to a human reviewer with a structured diff and a rationale.

In the stack