Skip to content

Autonogrammer: Omp harness rename, per-card AgentOS volumes, harness health, AGL-3.0, emerald theme - #25

Closed
SomeRandmGuyy wants to merge 49 commits into
SeeRay11:devfrom
SomeRandmGuyy:autonogrammer
Closed

SomeRandmGuyy wants to merge 49 commits into
SeeRay11:devfrom
SomeRandmGuyy:autonogrammer

Conversation

@SomeRandmGuyy

Copy link
Copy Markdown

What

Upgrades the OpenFlow product in place to Autonogrammer on the Omp engine, on top of the completed v1.4.0 Omp Engine milestone (phases 1–7, all verified).

  • Product identity: canvas UI, READMEs, index.html, favicon, package metadata now say Autonogrammer; Omp stays the engine. packages/flow/docs/autonogrammer-upgrade.md records the phase gate, external contracts (rivet.dev AgentOS docs fetched 2026-10-20, Tauri 2.12, Greptile design fonts) and every deviation.
  • License: the Autonogrammer General License 3.0 (LicenseRef-AGL-3.0) for swcstudiospace / Spectrum Web Co — the org's actual AGL-3.0 text (from terra-slate-rose-berry) with this product named on the cover. Deliberately not GNU AGPL; the repo has no AGPL history.
  • Per-card Rivet AgentOS volumes: lib/agentos boots one AgentOs.create per card with database sqlite_file + chunked_sqlite at $AUTONOGRAMMER_DATA_DIR/agentos/<cardId>.sqlite; start/stop/restart/destroy routes (destroy requires confirm: true); a missing @rivet-dev/agentos-core fails that card only, siblings stay mounted; cross-card reads are impossible by construction. Guest terminal remains the session transcript — the fetched docs expose no PTY attach, documented as a deviation.
  • Harness: gsd-core version/health on the titlebar strip with retry; plugin config validated with field-level errors (secret-shaped keys rejected, credentials go to an uncommitted secrets.json, mode 0600); MCP/secret config lives outside pipeline JSON.
  • Branding: banner linked from both READMEs, light/dark logo SVGs (also the favicon and titlebar mark).
  • Visual system: emerald-on-white light theme, charcoal-and-emerald dark theme, Anybody display + DM Sans body (SIL OFL files vendored), system-ui fallback, monospace terminal, reduced-motion support, theme persisted per device with OS default.
  • Branching: the edge list already fans out (one card → two or more), cycles and missing targets are rejected, and the layer barrier is the documented join. New keyboard path: press L on a card, Enter on the next (repeat to branch again). Card badges now read starting/running/succeeded/failed/blocked; cards show their Omp session id, AgentOS mount state and next cards.
  • Mobile: below 720px the canvas renders as a vertical single column with per-card next lists and a visible drag handle; edges/hud hide.
  • Tauri 2: packages/flow/src-tauri config scaffold (deb/app/msi/nsis declared, bundling off until icons exist). Web stays the Vite build; headless Linux stays bun packages/flow/server.ts with no window. Android/iOS projects not generated on this host (no SDK/Xcode).
  • Planning: v1.4.0 summaries paired with plan files; all seven verification digests recomputed at HEAD after the full suite (2896 pass / 0 fail) and tsgo --noEmit came back green.

Verification

  • bun test in packages/flow: 2896 pass / 0 fail (110 files), including new agentos/harness/status suites.
  • tsgo --noEmit clean.
  • gsd-tools query roadmap.analyze: 7/7 phases complete.
  • ultrathink-ship assess: done true, gaps empty.

Out of scope / known gaps

  • Native Tauri binaries not built here; Android/iOS not generated (documented in src-tauri/README.md).
  • AgentOS guest PTY not implemented (docs expose none); card terminal is the Omp session transcript.
  • @rivet-dev/agentos-core is an optional runtime dependency, absent from CI; sandbox boots fail closed per card.

Fixes SPE-17568
Fixes SPE-17567
Fixes SPE-17569
Fixes SPE-17571
Fixes SPE-17577
Fixes SPE-17585
Fixes SPE-17589

Types and routes shared by the omp host, the browser client and the stage modules; omp binary resolver.

Refs SPE-16063
One omp rpc-ui process per card session behind /flow/api/engine, plus the prompt uplift, Substrate memory, Agent Swarm, Omp settings and PTY terminal host modules and the composed host.

Refs SPE-16063 SPE-16064 SPE-16065
… stages

Browser client over the engine wire, stage deps in the run engine, card/inspector/settings/terminal/memory UI, legacy data migration.

Refs SPE-16063 SPE-16064 SPE-16065 SPE-16066
Mount the omp host in both hosts, retarget MCP and skills to the omp profile, drop the opencode proxy, supervisor, key import, repackage, zen and dispatch MCP server and the sdk dependency.

Refs SPE-16066 SPE-16068
A fresh isolated profile has no logins. The Status tab now offers one confirmed action that pipes omp auth export from the default profile into omp auth import for the OpenFlow profile; nothing is written to disk or echoed.

Refs SPE-16064
A swarm card outlives a single held request (Bun gave up on one at 300 s), so waitForIdle polls in 55 s slices against an overall budget. Session-start mount notices from omp are dropped and every notice is capped at 240 characters.

Refs SPE-16063 SPE-16065
Probe processes pass a --model so omp starts without a default model; the model catalog and provider list are keyed on a credential stamp so logins changed by Copy logins or the terminal show up at once; the app refetches models when the terminal or settings close; the walkthrough shows a loading state and preflight says to log in in Omp settings.

Refs SPE-16064 SPE-16066
Shipped templates lose their dead model pins, the generated opencode json files go, and comments, messages and test fixtures name the Omp engine.

Refs SPE-16068
check:no-opencode walks the fork-owned surfaces and fails on any reference outside a reasoned allowlist; vendored upstream packages are not scanned.

Refs SPE-16068
README, FLOW.md and the changelog describe the Omp engine, Prompt Uplift, Substrate memory, Agent Swarm, the settings dialog and the terminal; older plans carry a historical banner.

Refs SPE-16068
Stop only marked the card stopped while the planner kept running on the host. The stage calls now carry the run's abort signal, the host kills the planner group on disconnect, and a stopped card never sends its prompt.

Refs SPE-16064 SPE-16066
Stop left the chip reading running. The tracker now emits one final status on dispose, process exit and failed startup, and the card never renders a running swarm for a stopped or finished card.

Refs SPE-16065
start() rechecks disposal after every await, sessions register before they start, concurrent reuse shares one start, ready and open_session have a 60 s deadline, at most 32 sessions run at once, prompt ids are honoured, model ids cannot start with a dash, and the version probe and card env are filtered.

Refs SPE-16063 SPE-16065
…migrate new fields

A stop while a session opens never sends the prompt, critic and root cards launch with edit tools denied, new-build documents no longer read as OpenCode migrations, dispatches carry their ordinal to memory, and the uplift and settings dialogs handle their last attempt, repeat keys and late replies.

Refs SPE-16063 SPE-16064 SPE-16066
…uests

One gate checks Host, Origin, Sec-Fetch-Site and body content type on every /flow/api request in both hosts; the Substrate token only travels to https, loopback or the SUBSTRATE_URL origin; MCP files keep their mode; memory honours a zero read limit and per-dispatch writes; POSIX-only suites skip on Windows; the no-opencode gate runs in CI.

Refs SPE-16063 SPE-16065 SPE-16066 SPE-16068
Substrate quarantines hedged text written as a fact. On quarantine.speculative the host re-sends the same text once as a todo, which the repo scope accepts; other quarantine reasons are never retried and a refused retry reports the original result.

Refs SPE-16065
Omp has no per-session MCP selection, so every card sees every server in the profile (and any project .mcp.json). The inspector says so instead of offering checkboxes, CardSpec drops the field, and older pipelines lose agent.mcp silently on load.

Refs SPE-16066
Run directories under the omp state root that nothing has written to for 30 days are removed shortly after the host starts; live sessions, uplift state, loose files and symlinks are never touched.

Refs SPE-16063
One suite of 40 scenarios runs against the in-memory FakeEngine and against the real browser client over HTTP to the real host wired to the stub omp. The stub now reads its script before acknowledging a prompt, which removes a race that failed the leak scenario about three runs in four.

Refs SPE-16062 SPE-16068
…fing

The Sessions panel showed the same boilerplate on every row. The engine now sends a title built from the card's own task and the host stores and lists it.

Refs SPE-16064 SPE-16066
…p request bodies intact

Vite's connect router matches /flow/api case-insensitively, so the gate now covers every path under /flow in any case and mounts ahead of the routers. The node adapter no longer drops the first body chunk when a handler passes the request on, malformed Host headers are refused as 403, the Substrate client never follows a redirect, and the flaky terminal and swarm tests are deterministic or skipped on Windows.

Refs SPE-16063 SPE-16065 SPE-16066
…d abort abandoned creates

At the session cap the least recently used idle session is closed and resumes later instead of failing the create; prune holds a claim across removal; a create whose request aborts before the session is live disposes it.

Refs SPE-16063
…d note dropped MCP allowlists

createSession takes the run's abort signal, question and permission bookkeeping is keyed by session and request, an explicit per-card MCP allowlist leaves a migration note, and the fake engine honours titles and documents how it differs from the host.

Refs SPE-16062 SPE-16064 SPE-16066
SWM-03 relies on Agent Swarm's own bounded retry ladder, TRM-01 names the real gate and PTY count, and 07-PARITY.md maps every old engine capability to its Omp equivalent, dropped item or residual risk.

Refs SPE-16068
…d memory fallback

README, FLOW.md and the 1.4.0 changelog now describe the gate coverage, the 32-session cap with idle eviction, aborting an abandoned create, run-state pruning, hedged memory as todos, MCP behaviour and the contract suite.

Refs SPE-16068
…leanly

The gate refuses raw request targets with traversal, backslash, NUL or parameter segments and the Vite store takes the same normalised path the gate saw; the dev server no longer answers CORS; the standalone server never returns an error page; a missing or credentialed Host is refused on Vite; Ctrl+C on the dev server disposes every omp session and PTY.

Refs SPE-16063 SPE-16065 SPE-16068
…questions setting and release whole runs

Toggles omp cannot enforce reach the card as a one-time notice, the uplift.hitl setting and its clarification plumbing are removed, the planner engine label shows in the inspector, a run's finally also releases by run id, and unused exports are gone.

Refs SPE-16064 SPE-16066
…n check

All seven phases verify as passed and the integration check passes with eight non-blocking warnings.

Refs SPE-16068
Raw-path refusal, no CORS on the dev server, the slim standalone server, clean shutdown on SIGINT and SIGTERM, one-time notices for toggles omp cannot enforce, whole-run release and the removed planner questions setting.

Refs SPE-16068
Each verification was re-run after the last fix wave and its covered digest recomputed with the GSD fingerprint.

Refs SPE-16068
…efresh the parity checklist

Every phase is marked complete with fresh verification digests, REQUIREMENTS shows 28 of 28 satisfied, the milestone audit passes with tech debt only, and the parity checklist matches the final code.

Refs SPE-16068
… files

phase.complete rewrites ROADMAP and REQUIREMENTS, so their content cannot be part of a verification digest; the digests are recomputed with the GSD fingerprint over source files and the phase summaries only.

Refs SPE-16068
Resume finds a persisted session in the run that wrote it, finished sessions keep readable history, a missing carried session starts fresh, the omp host and the terminal host refuse starts after close and sweep process groups after the leader exits, the event stream reconnects and replays pending asks, forget cutoffs are scoped to the repository, memory subjects keep their run and card parts, disabling an MCP server clears its forced-on entry, terminal dock replies and sessions are scoped to the current attempt and project, and startup notices wait for the first prompt.

Refs SPE-16063 SPE-16065 SPE-16066
A project switch is refused while work is live and every host probe is tracked and killed at dispose. Resume, history and prune agree on which sessions exist, the Sessions panel and run list ignore stale answers, memory subjects and Forget cutoffs cannot collide across names or repositories, MCP and skill names are addressed exactly, terminals are bound to their project, and the docs describe all of it.

Refs SPE-16063 SPE-16065 SPE-16066 SPE-16067 SPE-16068
…licit

Sessions are listed and readable only in the project they were created in, model tests leave no session behind, the project lock reports which cards hold it and the UI can stop them, MCP and skill creates refuse a slugged collision, and the stream reset rule and legacy Forget keys are settled.

Refs SPE-16063 SPE-16065 SPE-16066 SPE-16067
A resumed card works in the directory the new run assigns, create is counted from its entry, the lock covers every live session, the replacement run log is saved before the old one is closed, roles made while loading survive, and MCP and skill creates refuse an exact collision.

Refs SPE-16063 SPE-16065 SPE-16066 SPE-16067
Resume lists the interrupted run's isolated copies instead of touching them, run-log text is validated and flattened before it reaches a notice or a prompt, overlapping resumes of a session are served one at a time, a stalled create body no longer blocks project switching, and the docs describe it all.

Refs SPE-16063 SPE-16065 SPE-16066 SPE-16067
A refused first prompt is retried with the same briefing and notes, a session that is still live belongs to the run that resumed it, roles made while a project read waits are added to the pending set, and a rename that keeps a skill or server in its own folder saves in place.

Refs SPE-16063 SPE-16065 SPE-16066
…s honest

A legacy skill moved to a taken name is refused, roles deleted while a project read waits stay deleted, a card is briefed only once the host accepted its briefing, a resumed run that cannot start leaves the interrupted run resumable, and permission and question requests are de-duplicated only while pending.

Refs SPE-16063 SPE-16065 SPE-16066
…d ones

The host publishes permission and question requests as <epoch>.<omp id>, so a restarted omp process cannot collide with an earlier one, a stale answer cannot reach a new prompt, and the engine can keep answered ids for the whole run without a delayed replay reopening a question.

Refs SPE-16063 SPE-16065
…ched the host

An answered request id is remembered after a successful reply or a 404, and released when the reply fails before reaching the host, so the host's replay of the still-pending request asks again.

Refs SPE-16063 SPE-16065
Keep Omp as the engine. Add per-card AgentOS sqlite volumes, gsd-core health, AGL-3.0, and the emerald theme. Pipeline fan-out keeps the existing layer barrier.

Refs SPE-17568
Refs SPE-17567
Refs SPE-17589
The phase directories already had summaries and passed verifications. The plan files match those names so the records stay paired. Verification is stale after the Autonogrammer commit and is not marked passed again.

Refs SPE-17568
All seven covered digests recomputed at f3abfa7 with gsd-tools verification fingerprint. Full packages/flow suite (2896 pass / 0 fail) and tsgo --noEmit are green at this HEAD; diffs since the 2026-10-19 reports are the identity rename, the new agentos/harness modules, and branding.

Refs SPE-17568
… agentos import

VolumeManager replaces the ReturnType contract at the routes boundary; the agentos-core dynamic import is typed through the ambient declaration with the optional-dependency reason stated.

Refs SPE-17722
@SomeRandmGuyy

Copy link
Copy Markdown
Author

Superseded: shipping target moved to swcstudiospace/autonogrammer-ai.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant