factory

module
v0.0.0-...-b842323 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 10, 2026 License: Apache-2.0

README

Factory

Factory is a Linux-first desktop application and Go workflow engine with a shared Lit frontend for the native Tauri host and Soda Forge/Fountain.

This repository imports the implementation in progress from SodaOS. It is not a completed or released desktop product. Connected GitHub sign-in, account/repository binding and human issue/PR reads and writes have recorded qualification. Real Muse task checks have scoped evidence; full automated intake/delivery and installed distribution remain unqualified. All remaining integration, security, qualification and release work is consolidated in the central task list.

Qualification update (2026-11-10): the task list records the selected Debian13.7/ Rocky10.2 x86_64 systemd installer matrix and an actual installed GitHub candidate, independent typed review, CI, merge and original-issue closure. Correction, automatic/external adoption, complete installed Fountain behavior and release/ security qualification remain outstanding. These scoped results do not establish a finished release.

The Go engine lives in public pkg/ packages under github.com/levitateos/factory. The native backend does not depend on the SodaOS module, an appliance, Fountain or its SDK. Existing versions and lockfiles are imported as working source, without claiming a fresh release baseline.

Development

Use Go, Bun and Rust. Native Tauri builds also need the usual Linux GTK/WebKit development dependencies. Keep temporary files and build output under /home.

export TMPDIR=/home/USER/tmp
mkdir -p "$TMPDIR"
bun install --frozen-lockfile
bun run build:server
bun run build:factory-ui
bun run build:desktop-ui
bun run typecheck
bun run check:boundaries
bun run build:storybook
cargo check --locked --workspace

The shared browser module is .artifacts/factory-ui/factory-app.js, with its CSS, fonts, portraits and notices alongside it. The defining source lives in frontend/factory/, and Storybook uses those production components directly. Forge imports this source through the standard @factory/product Bun link; its local component and Storybook copies have been removed. From the Forge checkout, run bash scripts/setup-factory-ui.sh ../factory to use this editable checkout. Both source builds then read the same files, and Forge's browser watcher includes the linked component/design tree. CI can omit the checkout argument to fetch the published Factory commit selected by Forge's go.mod.

To stage the native development app, supply a native PostgreSQL payload as described in the runtime guide:

bun run build:desktop --postgres /absolute/postgresql-payload --out /home/USER/factory-stage
/home/USER/factory-stage/soda-desktop

The production stage includes a per-user app installer. With the required GTK/WebKit runtime libraries available, run:

/home/USER/factory-stage/install.sh
# Optional custom location:
/home/USER/factory-stage/install.sh --prefix /home/USER/apps

The default prefix is $HOME/.local; launch $HOME/.local/bin/factory or its application-menu entry. The installer checks architecture, runtime libraries and the complete bundle inventory before publishing the app. Reinstalling the same verified bundle can recover an interrupted installation; changed or unrelated app/launcher/menu/icon files cause refusal. To upgrade an existing app, pass --upgrade-from SHA256 with the digest of its installed bundle.sha256 file. The installer verifies that exact prior payload, publishes a separate release directory and switches the launcher last. Earlier payload paths remain intact for running apps and captured executables. Repeating the same upgrade resumes its retained capture; an unknown prior or changed installed file refuses activation. --uninstall-from SHA256 removes only verified launch/menu/icon entries and can resume after interruption. It retains payloads, profiles, credentials and system execution services. Execution-service upgrades and payload retirement remain unfinished. Profiles and credentials stay outside installation. The separate privileged execution-service setup is described in the desktop guide. Production packaging builds release native executables and includes compiled dependency notices, required covered source, compiler/PostgreSQL notices, build-inputs.json and complete SHA-256/link inventories. A checksummed PostgreSQL payload matching official current stable is required. The current package has installed and reopened on Rocky Linux 10.2 x86_64 with developer tools and the source checkout hidden. Broader host, execution, upgrade and full provider journeys remain unqualified; this is not a qualified release. The desktop shell supports GitHub device sign-in, verification, native encrypted credential storage and saved-account removal. Click Sign in to GitHub, open the verification page in your browser and enter the displayed code. Choose a saved account and repository to connect the shared application. Signing in alone does not authorize execution: local resource and workspace consent, policy, funding and run admission are separate requirements. For Fountain, enter the HTTPS address of a host configured for desktop access and choose Sign in to Fountain, then Continue in browser. Select the saved account and enter an owner/repository to enroll. Check enrollment reads the original retained command after a lost reply or restart. Withdraw enrollment keeps it inactive; replay cannot reactivate it. Refreshing or signing in does not authorize execution or publication. Older saved accounts require explicit sign-in before refresh because their public-client identity was not captured. The Muse section shows release-check/download failures, latest and selected versions, and the last successful verification. Check Muse update retries through the native tool owner; sign-in stays unavailable until verification succeeds. Closing its window cancels the check, and reopening permits a fresh check while preserving captured executables and login data.

Native fixture execution is not proof of real provider inference. The desktop guide describes lifecycle, credential custody and opt-in native acceptance checks.

Source and integration history

Source provenance records the original revisions and SHA-256 hashes of imported product files. The initial extraction snapshots remain in Git history. The recovery patches and inactive coordinator-test archive have been retired from the working tree. The Forge Go consumer cutover is committed as a1cd0499. Forge now uses the pinned public Factory Go module and the shared UI source package (UI consumer commit 5e695dfb). Unrelated staged work remains preserved in the original checkout. Forge's native consumer cutover is 6bb9b60d: its retained native consumers use this repository's pinned Git crates, and its duplicate desktop/runtime/workbench/transport owners are removed. Connected product journeys, SDK distribution and installed parity remain unfinished. Fountain server implementation belongs to Fountain, and appliance composition belongs to SodaOS.

Original SodaOS work remains Apache-2.0. Existing third-party and inherited notices remain applicable; see LICENSE, NOTICE, and the licenses alongside the retained source and assets.

Directories

Path Synopsis
cmd
pkg
application
Package application defines admitted application references and administration records.
Package application defines admitted application references and administration records.
collaboration
Package collaboration owns provider-neutral collaboration records.
Package collaboration owns provider-neutral collaboration records.
factory
Issue acceptance records bind exact native requirements to the maintainer who approved them: the objective title/body revision, selected question/answer/resolution comments, and every direct prerequisite edge with its required outcome.
Issue acceptance records bind exact native requirements to the maintainer who approved them: the objective title/body revision, selected question/answer/resolution comments, and every direct prerequisite edge with its required outcome.
factory/access
Package access owns Factory application admission contracts.
Package access owns Factory application admission contracts.
factory/client
Package client connects Forge to the independently supervised Factory service.
Package client connects Forge to the independently supervised Factory service.
factory/control
Package control supervises recorded factory runs: status reads recorded state, dispatch starts bounded recorded assignments, and reconcile settles outstanding runs against host and broker truth.
Package control supervises recorded factory runs: status reads recorded state, dispatch starts bounded recorded assignments, and reconcile settles outstanding runs against host and broker truth.
factory/execution
Package execution owns provider-neutral run evidence.
Package execution owns provider-neutral run evidence.
factory/httpapi
Package httpapi owns Factory HTTP transport boundaries.
Package httpapi owns Factory HTTP transport boundaries.
factory/mcpserver
Package mcpserver serves the role-filtered Factory worker MCP protocol using explicit application and runtime ports.
Package mcpserver serves the role-filtered Factory worker MCP protocol using explicit application and runtime ports.
factory/mcpwire
Package mcpwire owns Factory worker tool descriptions, SDK schemas and strict payload contracts.
Package mcpwire owns Factory worker tool descriptions, SDK schemas and strict payload contracts.
factory/service
Package service owns Factory application workflows over the canonical ledger.
Package service owns Factory application workflows over the canonical ledger.
filelock
Package filelock acquires native advisory locks without trapping a cancelled command in a blocking flock syscall.
Package filelock acquires native advisory locks without trapping a cancelled command in a blocking flock syscall.
identity
Package identity owns subscription connection, grant and execution contracts.
Package identity owns subscription connection, grant and execution contracts.
project
Fixed supervised factory-run identities and wire records.
Fixed supervised factory-run identities and wire records.
store
Package store owns Factory's PostgreSQL schema and retained appliance row operations.
Package store owns Factory's PostgreSQL schema and retained appliance row operations.
strictjson
Package strictjson decodes bounded, single-object JSON request bodies.
Package strictjson decodes bounded, single-object JSON request bodies.
tools
native-checks command
A disposable Go-to-Rust native callback check.
A disposable Go-to-Rust native callback check.
unitban command
Command unitban is a go vet analyzer that bans unit tests.
Command unitban is a go vet analyzer that bans unit tests.
unitban/testfixtures
Package testfixtures carries the unitban analyzer's self-test fixture: a unit test the analyzer must flag.
Package testfixtures carries the unitban analyzer's self-test fixture: a unit test the analyzer must flag.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL