-
Notifications
You must be signed in to change notification settings - Fork 0
Architecture
sarr-io edited this page Jun 14, 2026
·
21 revisions
Zinc is a small executor over three boundaries:
Circuitry draws the shape.
Packages perform capabilities.
Limbo is the open fragment fabric.
Zinc assembles fragments.
- Circuitry owns language semantics:
takes,uses,does,gives, bindings, composition, diagnostics, and normalization. - Packages own adapters, tools, providers, shells, OS behavior, setup/check/remove hooks, and config interpretation.
- Zinc resolves package refs, loads config, binds current values, forms exact package requests, chooses fragments, and writes assembly fragments.
- Limbo stores the visible execution surface.
The foundational Limbo shape is only:
packages(package, root)
fragments(fragment, target, request, result, time)
choices(choice, fragment)
config(key, value)
A fragment is completed work:
target + request -> result
Identity is byte identity at the Zinc/package boundary:
choice = hash(target + request)
fragment = hash(target + request + result)
A choice is current memory. It says which fragment answers a target/request pair now.
A substrate or assembly is not a table. It is a fragment:
target = zinc.assembly
request = source path + run args
result = assembled output/material
Package work is also a fragment:
target = package adapter identity
request = exact bytes Zinc handed to the package
result = exact bytes the package returned
Zinc does not multiply runtime tables around work. Runtime interpretation comes from fragments and choices.
zn run prepares an assembly fragment and advances it:
prepare(source, args) -> assembly fragment
advance(assembly) -> advanced(path) | complete(result) | waiting
Repeated equivalent package work uses the existing choice. Changed input or instruction material produces a different choice.