Sidecat Version 1: product and architecture baseline
27 September 2026 · fixed review copy · proposed, not yet operator-accepted
This is the plan to compare every planning cycle against. Future evidence can
change an implementation choice, but a change to the Version 1 target gets a
dated successor and a visible change list; this copy stays fixed. Current
assignments, progress and release decisions live in Sidecat. The ratified
VISION.md, last changed in commit c1d17953 on 18 August,
remains the north star. This document applies it to the re-architecture; it
does not assert that every proposed mechanism below is already approved or
implemented.
The prior Sidecat System 0.1.0 technical draft
and Gen 5/domain coverage map
are detailed research inputs. They are not silently adopted contracts. Their
base author profile has known version-negotiation, reconciliation, time and
subscription gaps to close before independent app authors can rely on it.
Purpose and actual use
Sidecat is a programmable environment in which people and AI agents can do
useful work for an organization. A fresh agent should find the organization's
direction, authority, methods, commitments and next action without asking one
lead agent to reconstruct chat history. The organization should be able to see
what was requested and why, who could act, what actually happened and what is
still uncertain. Software delivery is our first proving ground, not the limit
of the product.
Organizational authority is central. A company may allocate model spend,
provider quotas, cloud capacity, machines and credentials, then delegate some
administration to departments. An agent states the mission for a consequential
action. Sidecat can check it against applicable authority, explain a mismatch,
request a conditional approval, or refuse the effect. AAuth and aauth-go are
part of that design. Deeper evidence custody and review gates are optional
enhancements; ordinary starting, talking, reading and working must remain
useful without maximum ceremony.
Agents and executors may live on different machines. Five agents on five nodes
may share work; a sixth, prepared node may execute without a model login. An
agent may disappear for days. Another must be able to find its work, messages,
methods and results through Sidecat and continue without a private briefing.
There is no permanent lead-agent context or global database that every app
must share.
company authority and resource allocation
|
departments and teams
|
agent + node <--> agent + node <--> agent + node ...
\ | /
shared work, messages, methods, references
|
prepared executor node
(no agent login needed)
Capabilities required to ship Version 1
These are product capabilities, not a prescribed count of binaries or apps.
Each needs a documented, installed user journey before we claim it works.
| Capability |
Required behavior and representative proof |
| Organization and preparation |
Record purpose, values, principles, structure, portfolios, products, projects and current commitments. A newly enrolled agent recovers relevant working context and its own identity without a private briefing. Support company, department and workspace scope without assuming every organization uses the same hierarchy. |
| Authority and resources |
Identify people, agents and services; allocate and delegate bounded rights over provider usage, spend, compute, credentials and effects. Check a mission at a controlled effect boundary; explain a refusal or missing authority. A remote executor cannot acquire extra authority merely by being remote. |
| Records and references |
Preserve original requests, versioned text, names, files/blobs, decisions and typed links. Test the candidate journey in which Message and Work both reference one exact Note revision without copying its body. Access and revision rules, and whether Note is its own app, remain open design choices. |
| Work and planning |
Support reusable intended work, particular plans/occurrences, refinement, assignments, progress, review, multi-project and multi-department views. A returning agent sees what is next, pending and blocked. Link external issues through structured references rather than IDs only in prose; qualify one controlled two-way tracker sync with explicit field ownership and conflicts. Redesign backlog, milestone, board and facet semantics from real use. |
| Native messaging |
Provide direct and shared-room conversations for agents and people, bounded catch-up, source-context links, offline return and federation. An absent agent should not have to ingest an unbounded transcript. Matrix can be a client entry point for real Sidecat work; transport alone does not establish custody or approval. |
| Lisp and sessions |
Provide a full usable Sidecat Lisp environment, interactive composition, durable sessions, retained results and reusable methods. A new agent can inspect and reuse a method after restart. Partial execution is a promising interaction mode to qualify before selecting its exact semantics. |
| Packages and marketplaces |
Let independent authors distribute admitted applications, Lisp, routines and other extensions. Support discovery, installation, activation, replacement and experimental/testing/stable tracks. The exact Go loading mechanism and marketplace protocol remain undecided. |
| Semantic discovery |
Let app authors find existing object, operation and facet meanings, declare new shapes and map them explicitly where useful. Naming collisions and lossy mappings are visible; RDF, ShEx or ShapeMaps can help without forcing every app into a triple store. |
| Routines and workflows |
Compose typed versioned operations and subroutines; retain a running workflow's selected revisions, checkpoints, waits, decisions, retry/cancel state and next eligible action. Demonstrate both non-software work and a software cycle across harness replacement and restart. Ordinary calls still work outside workflows. |
| Agent calls and context |
Select bounded task-relevant context, methods and tools; run managed model/harness calls with actual provider finish reason, partial output, cost and worker attribution. A returning agent can see what it needs without ingesting every old message or irrelevant record. |
| Execution and effects |
Run allowed commands, harness/provider calls, publication and connectors locally or on prepared remote machines. Preserve acceptance, results, cancellation and honest unknown outcomes. A lost reply must not silently duplicate a consequential effect. |
| Federation and app bus |
Resolve owner-qualified objects and operations across nodes. Apps register typed calls, events and subscriptions instead of reading neighboring databases. Offline catch-up uses a declared cursor/retention or reports an explicit gap. Do not claim a global event order. |
| Feedback and learning |
A correction names the exact work or decision it addresses; its responsible owner acknowledges, adopts, holds or declines it. QA and evaluation record their own observations against an exact candidate. A repeated failure can be connected to diagnosis, change and recurrence evidence. |
| User surfaces |
CLI, MCP and Lisp use coherent meanings and result shapes. Provide a prebuilt one-command curl-to-shell installation on Linux and macOS, clear help/man pages, README and examples, without a private post-install checklist. State platform-specific execution limits honestly. Catinface can be the open-source local interface; Sidecat.ai is a separate commercial experience. |
| Operability and quality |
Service survives logout/restart. Storage, queues and context remain usable under realistic concurrency and growth. Backup, retention, recovery, independent installed trials, documentation QA and release limits are explicit. |
Proposed record model: answer to the Work/Note question
Recommendation for review: a Work item is its own object with an
identity and work-specific meaning. Its description is an exact reference to
text, often a Note revision. It does not need to copy that text into a second
body field. A Work item can also cite its originating Message and a permitted
conversation range. This is a proposal to test, not an operator-approved
schema.
| Object |
Owns |
Revision or state rule |
| Note |
An authored text document, optional title/format and revisioned body. Large bytes may live in a blob store. |
An exact revision keeps its content; editing creates a new revision. A Note is useful outside Work and chat. |
| Message |
Sender, target/room, append position or provider view, reply/thread links, sent time and exact body/content reference. |
Sending appends one event. A message may directly carry short text for a hot chat path or point to a Note revision; neither choice may lose its stable body reference. The Message owner supplies bounded catch-up. |
| Work |
A named purpose, question or intended outcome; current description reference; exact source references. |
Work revisions change the definition. Work has no universal closed flag: shipment, training completion and a cancelled plan are different judgments. |
| Plan occurrence |
Selected Work revision, context, assignee, schedule, sequence, criteria, progress and result for one attempt to do it. |
Its owner controls completion and records the definition revision judged. Several occurrences can use one Work definition. |
| Backlog placement |
Project/board/milestone context, order, selected facets and a reference to candidate Work. |
One Work can appear in several contexts. A backlog is not the set of all unstarted Work. |
| Workflow run |
Selected procedure revision, inputs, checkpoints, eligible steps and effect references. |
Procedure is distinct from the Work/Plan it helps complete. A harness does not own the run's meaning. |
The high-volume messaging path should not require a second cross-database
write merely to store every short chat body as a Note. Both Message and Note
can expose an exact typed content reference that Work can cite. If the
message's access scope permits it, a new Work can initially display the
original body by reference. If a private conversation must yield a public
request, someone creates an authorized new Note/summary and links the
restricted source; a reference does not grant disclosure. Refinement creates
a new Work revision pointing to revised text while leaving the original
message intact. Concurrent revisions use owner-local compare tokens. A
cross-owner creation that partly succeeds is reconciled by its stable request
key; it is not falsely presented as a multi-database transaction.
This model should be tested by an actual journey: an agent in a room asks for
a change, another agent requests clarification and sees the permitted source
range, a Work definition is admitted, two plans use it in different contexts,
one plan finishes, and the source channel receives a linked update. The other
plan and the reusable definition must not be silently closed.
Two simpler-looking alternatives deserve explicit scrutiny. Making every
Work and Plan merely a facet of a Note makes assignment, schedule and
completion into classification on shared content, recreating a global status
problem. Making Work the required evidence spine of every message,
model call and effect recreates the current Continuation model's coupling and
puts custody on ordinary conversation. Facets remain useful for
context-owned boards and classification; selected Plan and Workflow runs can
carry optional typed evidence references without making Work own the entire
system's history.
Contract for a modular part
Small apps are chiefly a development boundary: one coding agent should be able
to understand, change and test a part with a small common contract rather than
loading the whole system or needing continuous human steering. A focused app
may have thousands of simple lines. Two apps may later combine. Many logical
apps may share a resident Go runtime; one app does not imply one process.
Application, package and host are different things. An application owns
named behavior and an interface. A package is an exact admitted distribution
unit that can contain one or several apps, Lisp methods, workflow definitions,
schemas and guidance. A host runs executable contributions. This preserves the
ratified rule that packages extend Sidecat itself while allowing a Go app to
be a built-in or a long-lived supervised worker behind the same contract.
Third-party Go distribution need not depend on Go's platform- and toolchain-constrained runtime plugin ABI or start one process per call. Which generic host/worker profile
ships first must be proven by an independent app author; compiling every
domain service into sidecatd would fail the package requirement.
In the ratified vision, “kernel” means the shared operating semantics and
runtime that make this one system. It need not mean that one Go package or
sidecatd owns every business record. sidecatd can host the registry,
local routing, federation and bounded continuation while admitted apps own
their own meanings and data.
The proposed owner map below is the starting shape to review. A row names one
responsibility and its data; it is not a promise of one OS process or an
unchangeable app count. A separate app can share a resident host while still
owning its interface and store. The first five rows also explain the proposed
five-program installation.
| Owner |
Owns and exposes |
Boundary or current state |
sidecat client |
CLI, MCP and interactive Lisp presentation of selected operations |
No service-to-service shelling through the CLI. Current surface is crowded and partly inconsistent. |
sidecatd node |
Authenticated ingress, registry, routing, local supervision, federation, outbound delivery obligations |
Every node has it. It does not own every domain table, run arbitrary commands or interpret Work. Existing daemon still does much more. |
sidecat-auth |
Identity binding, AAuth consumption, grants, policy decisions, conditional approval and revocation |
Initial local protected-command path exists; company/department delegation is new. Resource accounting may be a separate app under the same contract. |
sidecat-orch |
Versioned routines, workflow runs, checkpoints, waits, selected decisions and next actions |
Coordinates calls; it does not own Work definitions or claim an executor's effect succeeded. A bounded owner exists, with held installed acceptance. |
sidecat-exec |
Prepared environment, deduplicated submission, process/provider adapter, outputs, cancel and outcome |
A remote worker can have only daemon plus executor. Internal Linux proof exists. |
| Note/content app |
Versioned text, names, blob metadata and exact content references |
New owner proposal; the large immutable bytes may use a separate content store. |
| Message app |
Direct/room targets, append order or provider view, replies, bounded catch-up, attention and response state |
Existing Lisp package is a comparator, not a required store/ABI. Must not create Work merely to send. |
| Work app |
Reusable Work identity, description and source references, current definition revision |
New owner proposal; no universal close/merge or schedule. |
| Planning app |
Plan occurrences, assignments, milestones, backlog/board placements and contextual facets |
New owner proposal; an occurrence pins the Work revision it judges. Existing project backlog is not this model. |
| Organization and resource apps |
Purpose, structure, membership, values, products, resources, allocations and budgets |
Domain facts do not themselves grant authority; adopted rules and reservations are enforced by the appropriate owner. |
| Lisp/package host |
Resident language sessions, kept methods, exact artifacts, admission, activation and distribution |
Existing behavior is valuable, but app packages must be able to carry more than Lisp and must extend the ordinary surface. |
| Semantic app |
Type/facet vocabulary, shapes and mappings for authoring and discovery |
New; maps meanings without turning all domain stores into triples. |
| Connectors |
Git/source publication, issue trackers, cloud/model providers and other outside effects |
Each connector binds an exact target and uses the common authority, request/recovery and result contract. |
Every app must declare:
- Ownership: its objects, local invariants, authoritative store and
effects. Other apps use typed references and public operations, never its
private SQL or Go internals.
- Registration: authenticated owner/instance, exact interface version,
operation schemas, effect class, limits and events. Discovery is not a
permission grant.
- Calls: one typed meaning across CLI, MCP, Lisp and service calls;
trusted caller scope, mission, correlation and stable request identity
where an effect needs deduplication. Accepted/unknown effects have a
status or reconciliation operation.
- Events: distinguish a transient wake from a promised durable event.
Subscriptions declare filter, stream/cursor, delivery, acknowledgement,
replay/retention and gap behavior. Bindings can turn events into calls
without hidden cross-store writes or unlimited fan-out.
- Authority and placement: a component cannot treat an ID in prose or
its machine location as authority. It can run in the resident host or a
separate service. An executor-only node needs no CLI or model login.
- Development proof: an author builds/tests against the published
contract and fake neighbors, then passes an installed journey with a real
neighbor. Review includes call-surface clarity, failure behavior,
maintainability and removal of superseded paths.
Owner-local SQLite databases are the current storage proposal where local
transactions matter. A stateful app normally owns a separate database; a
stateless app needs none, and a justified atomic owner can combine related
records. This is neither one universal database nor one database per command.
Cross-owner work needs explicit requests,
references and sourced observations, not an imagined multi-database
transaction. Files/blobs may use a content store or Git where versioned
distribution helps; Git is not presumed to be every record's synchronous
writer. Exact bus and storage wire contracts still require focused design and
measured trials.
Daemon readiness opens its local stores, checks schema identity and store ID,
then listens. Whole-history integrity verification is an explicit operator
action, never a prerequisite for an ordinary start, message, call or effect.
Candidate public call surface
The existing command-surface design
sets a useful rule: a small visible set of nouns, shared verbs (find,
show, create, update, give, use, remove) with one meaning, and one
operation definition projected into argv, MCP and Lisp. Replies give outcome,
used scope, a short typed reference and a useful next step. Only organization
and project are visible defaults; reading or creating does not silently
change them. Packages can add nouns without minting a second meaning for a
shared verb. The current design lists eleven core nouns and is only partly
converted. The proposed groups below extend that rule; spellings and the
Work/Plan conflict still need resolution.
The first screen for an agent should offer its prepared task and relevant
calls, not the entire catalog. Exact generic operation calls remain available
to app authors and advanced callers, but need not occupy the ordinary default
MCP set. The organization's two-call goal counts discovery, help, retries and
the consequence call; when an ordinary task takes more, treat that as product
friction to investigate rather than hide calls in a helper.
| Group |
Representative calls |
Why an agent would use it |
| Orientation |
orient, help, org show/use, project show/use |
Learn the selected context and the few relevant next calls without hidden selection. |
| Text and records |
reference create/show/update/find |
Keep a Note, source or result with exact revisions; the reference view names its actual kind. Blob transport and names remain owner operations behind it. |
| Communication |
message send/show/find |
Talk, inspect a thread or bounded range, and return after absence. show must report the range and gaps it used. |
| Work and planning |
work create/show/update/find/give; proposed plan create/show/update/finish and backlog find/use as selected planning nouns |
State a reusable outcome, choose a particular occurrence and see what is next. Current work start/finish conflicts with Work having no universal closed state; the Version 1 call design must resolve that, not keep both meanings. |
| Authority and resources |
org give/remove, participant show, selected resource find/show/give and approval show/update |
Learn delegated scope and available budget; privileged grant, reserve and settlement operations live in an author/admin profile with exact effect semantics. |
| Lisp and distribution |
repl eval/fork/merge, method find/show/use/call, package find/show/use/build |
Compose, retain and share behavior with one operation meaning across surfaces. |
| Procedures and effects |
selected workflow create/show/start/cancel, run start/show/cancel/wait, source publish |
Use a repeatable workflow or run a program and inspect its actual result. A program run and a workflow run must not silently share one ambiguous run noun. |
| Bus and federation |
machine find/show/give; app registration, subscription, binding and peer diagnostics in the advanced author/admin profile |
Connect modules and nodes while keeping private routing machinery out of normal task discovery. |
Existing Gen 5 operation names are inventory, not compatibility requirements.
An independent read of exact installed .13 found 297 native operations;
its MCP endpoint advertises 293 of them. Its CLI source has 106 leaf
commands; the integration branch's path fixture lists 126 leaves and
group paths. These are different inventories, not interchangeable counts.
The public review page includes the 293 advertised MCP names/descriptions
and the 126 source paths. The table below bins all 297 native operations by
the task they now serve. Its disposition column is a proposal, not an order
to delete a needed capability.
| Current call cluster |
Native calls |
Why it exists today |
Proposed handling |
| Organization identity and membership |
24 |
Create/join organizations, bind actors, guidance and references |
Keep one understandable path; remove duplicate create/bind/membership variants from ordinary discovery. |
| Organization planning records |
50 |
Architecture, roadmap, baseline and report lifecycles |
Move domain vocabulary into admitted planning packages; keep exact history available without 50 default tools. |
| Daemon execution Work |
11 |
Claim, lease, checkpoint and finish worker execution |
Combine with worker-turn runtime behind one Work handoff; advanced owner calls stay callable. |
| Ordinary Work |
12 |
Capture/create, read, update, finish and find tasks |
Retain the useful tasks while replacing two Work models and resolving capture/create/Plan overlap. |
| Project, sprint and updates |
20 |
Project metadata, ordered backlog, sprint and maturity |
Keep project use; redesign backlog/occurrence semantics and move methods into a planning package. |
| Development publication |
15 |
Checkpoint and resume one software publication journey |
Compose behind a clear source-publish/workflow call; keep policy reads. |
| Action custody |
28 |
Admit, execute and reconcile a selected high-consequence effect |
Preserve selected assurance; remove this whole family from the ordinary default tool set. |
| REPL |
13 |
Evaluate, keep, share, call, fork and merge Lisp |
Keep as a primary ordinary surface; do not confuse it with ephemeral Lisp-session internals. |
| Working session and context |
15 |
Prepare people, context, notes and collaboration |
Keep relevant work context; replace actor-wide singleton selection that collides across concurrent tasks. |
| Harness identity |
11 |
Enroll harnesses and record delivered context |
Keep attribution; put enrollment/low-level records in an admin or participant surface. |
| Command and execution |
20 |
Prepare target, submit, read, cancel and recover a run |
One ordinary run/machine view over the executor; hide raw service operations from default discovery. |
| Orchestration |
11 |
Publish and advance durable routines |
Keep the owner if independent QA passes; replace six hand-copied raw calls with one reusable composition. |
| Worker turns |
11 |
Prepare runner, send and answer assigned Work |
Combine with daemon execution Work; one ordinary handoff action. |
| Packages |
14 |
Admit, install, select and activate extensions |
Keep admission and distribution; combine redundant profile reads. |
| Peer and remote login |
10 |
Join and call another node |
Keep useful machine/remote task path; move raw peer transport to advanced use. |
| Source publish |
3 |
Publish, read and resume by request key |
Keep the useful effect entry point; reconcile its hidden development journey. |
| Principal and store |
12 |
Credential/bootstrap and backup/claim |
Setup and recovery only, not default task tools. |
| Subjects, procedures, invocations, Lisp sessions, HTTP and system |
17 |
Generic reads and older procedure/effect internals |
Keep useful subject/system reads; resolve overlap with routines, and put raw HTTP/history internals in advanced profiles. |
Today work.capture, work.create, work.plan and
project.backlog-update expose different models; command and execution
expose different layers of one run. The table is a complete purpose map,
not a claim that all those operations should survive Version 1. The exact
compact catalog below permits review of individual names without forcing all
297 descriptions into an agent's default context.
Concurrency, federation and delegated authority
The operator's retained 19 September scale example was 200+ active agents
per person and roughly 25,000 concurrent agents across a large
organization, with thousands within departments. This is a design target, not
a claim that one node or one SQLite writer serves them all. Agents usually
concentrate in related application groups. Qualify in stated rungs: first 500
concurrent callers across several nodes, then department-scale thousands, then
the multi-node organization target. Each rung includes independent Work
updates, one hot room, a hot record writer, slow subscribers, provider
latency, restart and a multi-day absent agent. Report throughput, p50/p95/p99
latency, write waits, queue depth, memory, event lag, database growth and
context delivered per agent. These benchmark profiles need measured hardware
and workload definitions before a pass threshold is claimed.
SQLite WAL permits concurrent readers with one writer per database (SQLite's WAL documentation); its WAL files do not become a network-shared database. Each
state owner therefore needs bounded admission, short transactions, useful
indexes and explicit contention behavior. Independent owners must not queue
behind one giant central database writer. A hot owner may later partition its
store by organization or stream if measurement supports it; the app contract
must not expose its table layout. No model or network call occurs while an
owner holds a write transaction.
A company-wide spending limit cannot be enforced by five disconnected nodes
each consulting an eventually synchronized counter. The proposed resource
owner reserves budget before a managed effect, delegates bounded sub-budgets
or leases to departments/nodes, and settles observed use. An uncertain effect
keeps its reservation until reconciled or explicitly released. During a
partition, a node may use only its preallocated allowance; it cannot invent
additional company authority. Ordinary local work can continue. This is a
technical design requirement to test, not a claim that today's local auth
service already does it.
The bus separates addressed calls, source-owned events and bindings. A durable
event is committed with the owner's change, then delivered at least once;
subscribers acknowledge after recording their own promised action. A cursor
belongs to one owner stream and a gap is explicit. Local direct dispatch,
Unix sockets and remote federation preserve one selected operation meaning,
but do not imply a globally atomic call or one total order. Messaging has its
own durable room/direct semantics and cannot be replaced by transient bus
signals. Remote effect owners recheck the received authority at the effect
boundary. Sidecat's authorization can govern only resources whose credentials
or execution path are actually mediated; ambient shell/root access is not
magically revoked by a Sidecat refusal.
Before freezing a shared protocol, independent authors must implement one
small stateful app and a separate client from the public author kit. A routine
app-local field change must not require manual edits to daemon routing,
central SQL, or separate CLI/MCP/Lisp schemas. The provisional System 0.1.0
author profile still needs exact minor-version negotiation, an actionable
unknown-outcome status call, a defined time model, immutable schema retrieval,
consistent event identity, and complete subscription/ack/gap rules. These are
freeze blockers, not justification for a new giant kernel.
The working component specification proposes concrete resolutions for review:
| Boundary |
Proposed Version 1 rule to qualify with two independent authors |
| Version and schema |
A descriptor advertises exact supported interface versions. The caller selects one; the reply echoes it and uses that version's schema. An immutable schema reference remains retrievable for as long as its events are replayable. |
| Timing and uncertainty |
Waiting for a reply, maximum execution time and last admission time are different fields. A lost reply to an effect yields an exact owner status operation with typed lookup input; it does not mean the effect was refused or safe to repeat under a new key. |
| Event identity |
Use the same (interface ID, local event name) pair in descriptor, emitted event, filter and subscription. An event names its immutable schema and owner stream/cursor. |
| Delivery |
Subscription acceptance returns ID, effective filter and start cursor. Frames identify the subscription; the consumer acknowledges after its own durable obligation is recorded. A gap is explicit, and cancellation and slow-consumer bounds are defined. |
No cross-language conformance is claimed until a separate app author and client
exercise these rules through an installed runtime. The detailed draft is a
proposal, not evidence that today's daemon already implements it.
Delivery sequence and distinct finish lines
The detailed component specification and engineering plan are native Sidecat
organization references modularization-spec-20260925 and
modularization-plan-20260925. They propose an implementation sequence; this
baseline states why and what the whole product must do. The selected sprint
remains general workflows with auth integration until it is reviewed.
| Checkpoint |
Required result |
| Integrated internal catfooding |
Qualify one exact installed build for daily multi-agent Work and messaging, Lisp/package reuse, workflow, auth and execution, restart and fresh-agent continuation. Assess discovery, call count, copied IDs, help and recovery. Prepare the shared-node backup/rollback or fresh-store export. This does not wait for all domain extraction. |
| Public Version 1 release |
Qualify the capability table above with installed, documented journeys and stated limits. Independent app authors can work from contracts; federation, authority, distribution, messaging and storage growth work together. A scope change must be explicit rather than quietly turning a component demo into the whole product. |
The October 15 public-release target and the later stable 1.0.0 target are
planning dates, not evidence that the full Version 1 table will be ready on
October 15. A preview must state its actual included capabilities and limits.
This page does not move either date or silently reduce the Version 1 target.
Version 1 release assessment uses these end-to-end journeys. Component unit
tests are supporting evidence, not substitutes for them:
| Journey |
Observable result |
| Arrive and continue |
A fresh agent of a different harness recovers its organization, applicable authority, selected work and shared methods; it acts on a person's correction rather than only displaying it. After three days offline it catches up to relevant messages and an unfinished remote action without ingesting the whole log or repeating the effect. |
| Sourced request |
A room discussion yields a Work definition and two Plan occurrences by typed reference. One completes; the Work and other occurrence remain usable. A reader with permission can inspect the originating context, and a reader without it gets an explicit access limit. |
| Governed resource use |
Company delegates a bounded budget to a department and an agent; the agent presents a mission, receives an explanation or approval at one selected effect, executes on another node, and sees actual cost and outcome. A disconnected node cannot exceed its preallocated allowance. Ordinary local work continues. |
| Repeatable non-software work |
Two agents run the same published research, training or supplier routine with different inputs. One run is corrected mid-course; selected revisions and decisions survive harness and daemon restart. |
| Collective messaging and federation |
Direct and room histories stay separately addressable across independently administered nodes. A member returns after absence, follows bounded cursors, sees explicit gaps and can continue when another agent has left. A third node executes a task without hosting a model. |
| Independent extension |
An author builds a small stateful app and another author writes a client using only the public kit. One app-local field change does not force hand-edits to the daemon, central SQL and three surface adapters. The installed package can be found, admitted, called, replaced and deactivated with pending work handled. |
| Installed product and load |
Unfamiliar agents and a person install from public instructions on supported platforms, execute examples in help/man pages, and complete tasks from shipped documentation. Declared 500, department-scale and organization-scale load rungs report latency, queues, database growth, context cost and correctness under restart/partition. |
The engineering order is public contracts and execution owner; independent
auth and durable orchestration; record/store owners and bus; complete Lisp,
messaging, federation, package and organization connections; whole-system
qualification and controlled cutover. Each sprint includes design, code,
build, independent QA, documentation and review. The sequence is not a claim
that later capabilities are optional or that current component tests qualify
a release.
Reuse or rebuild: the decision we have to make
Keeping a Gen 5 component because it exists is not a reason. For each part,
compare the work needed to make it satisfy the Version 1 contract with a
focused new implementation of the same user journey. Count shared files and
decisions an independent author must understand, adapter code, test/build
time, installed call friction, runtime limits and deletion of replaced paths.
Do not compare only source line counts or a passing unit suite. There are no
external users whose old stores or calls require compatibility today. Preserve
our useful unfinished Work by export and checked repopulation on a fresh store;
keep the old live store as an archive until a controlled cutover, not as a
schema the new system must inherit.
| Part |
Current evidence |
Proposed disposition to review |
| Execution |
The independent service is about 1,700 production Go lines and has qualified installed local/remote use. |
Reuse and adapt if its public contract continues to work under the new host and auth boundary. Do not reimplement a qualified owner merely for architectural purity. |
| Authorization |
Small separate local service and aauth-go library; protected execution/outage trials passed. |
Reuse the independent pieces, then design company/department delegation and resource-budget ownership against current AAuth, not by expanding the old universal action tables. Local trial is not enterprise authorization proof. |
| Orchestration |
A separate owner has retained runs, pinned subroutines and restart trials; the native daemon adapter and ordinary call surface remain immature. |
Conditional reuse. Keep it if an independent app/client trial can call it through a small shared contract and a fresh agent can run the workflow without manual IDs and versions. Otherwise rebuild the façade or owner before compounding it. |
| Records, Work, planning and messaging |
Current behavior is useful in parts, but the central internal/sqlite tree is about 118,000 production and 83,000 test lines. WorkUnit (note, work, container) and Continuation Work with status are distinct models; message send currently opens a governed Work to create a conversation. Two meanings of backlog and several Work entry paths coexist. |
Design fresh owner-local stores and user calls. Port selected behavior and tests, not the schema ladder or compatibility for users we do not have. Test Note/Message/Work and multi-project planning as one real journey; remove the messaging-to-Work side effect. |
| Lisp and packages |
Kept methods and exact calls work in installed trials. The source has one general Lisp interpreter plus a separate environment-source expression evaluator with overlapping logic; the current package format is Lisp-centered. |
Reuse the general interpreter unless a named language, performance or safety test shows it cannot meet Version 1. Publish the intended language profile and qualify real resident sessions first. Independently decide how packages deliver Go apps and workflows; do not replace the REPL merely because a comparator runtime exists. |
| Federation and public surfaces |
Peer calls and remote execution exist; peer.call currently starts an external process for each call. The installed MCP catalog has 293 tools, and a fresh Message installation is incomplete. |
Reuse only demonstrated framing/identity and owners. A persistent, bounded peer path and task-oriented discovery must replace process-per-call and unfiltered catalog costs before organization-scale claims. Qualify multi-node collective work, not only one remote command. |
From the pre-refactor product baseline fe645577 to the current integration
head, 322 files changed with roughly 32,500 insertions and 4,000 deletions.
New services and APIs account for about 15,200 inserted lines, while daemon,
kernel and SQLite changed by about 6,200 inserted lines and the maintenance
tree by about 7,500. The large source/QA effort produced real independent
execution, local auth and orchestration experiments, but only 573 lines were
added and 271 removed in internal/sqlite: the central database has not been
cleaned up. Installed trials repeatedly found real setup, result, help and
review-continuation defects, which required repair and retest. This explains
where time went; it does not justify continuing the same approach without
the author-contract and user-journey comparison above.
The imbalance matters: much new code and qualification machinery were added
while little central SQL was removed. Extracting services before fixing the
app-author and user-call contracts made every component pay an adapter and
integration tax. Some of that work proved valuable behavior, especially the
executor; some is self-inflicted project cost. Future increments must name
which old owner/path they retire and demonstrate that an agent's normal task
became simpler, rather than calling another isolated passing service a
re-architecture milestone.
Before the next implementation sprint, inspect the existing call/store path
for one Note → Message → Work → Plan journey, then build the smallest version
of that journey through the proposed app-author contract and fresh stores.
Do not build two complete systems merely to create a comparison. Compare
the working installed result with the existing code and measured edit/test
cost: concurrent use, files and decisions touched, independent testability,
build time, call count and code that can be deleted. A fresh implementation
wins only if it meets the same environment, authority and federation needs.
This is a proposed qualification after the product plan is agreed, not an
implementation assignment now.
Decisions this review must settle
| Decision |
Current recommendation and what would change it |
| Work, Note and Message |
Keep separate owner-qualified objects with an exact content/source reference; Work owns purpose, Plan owns one occurrence. Allow short Message bodies without a mandatory second Note write. Change this only if a real journey shows the extra reference model costs more than it saves. |
| Packages and Go applications |
Keep package admission as the application layer. A package may deliver Lisp, workflow definitions or a Go handler/long-lived worker behind the same interface. Test one independent Go author before selecting the first production host profile. |
| Lisp language |
Keep the useful current interpreter while measuring it against a published full-language profile, resident session load and partial-composition journey. Replace it only for a named failed requirement, not because the code is old. |
| Work-facing CLI |
Use the shared noun/verb rule and one generated operation definition across surfaces. Resolve whether work finish acts on a Plan occurrence or disappears; do not expose two meanings. Keep generic exact calls for advanced/app-author use. |
| AAuth and resource scope |
Pin a named interoperability profile to current AAuth source and independently administered roles. Define company-to-department grants, expiry/revocation, budget reservation and effect-time enforcement. The local Person Server trial does not settle this. |
| Messaging provider |
Require Sidecat-facing direct/room semantics, bounded catch-up, permissions and federation first; select and qualify the provider profile (native, Matrix-backed or gateway). A Matrix client connection alone is not the messaging product. |
| Interim cutover |
Do not equate internal adoption of a mixed build with completion of modularity. Qualify its real daily journey and compare its remaining cost with a fresh small-app path before making it the default for our team. Either path keeps the current live node until a controlled switch. |
| Platform and capacity profile |
Linux executor is the only currently qualified execution target. Specify what the macOS installation can do and select initial per-node limits while keeping the 25,000-agent multi-node design target. One 500-caller test cannot certify that target. |
What the last 1 day 19 hours 37 minutes built
Approximately 25 September 19:47 to 27 September 15:24 MDT. The integration
branch contains 62 commits in that window at local head 5f451c0b; a commit
is an engineering checkpoint, not a shipped feature.
| Area |
Built or tested |
Not yet delivered |
| Execution |
sidecat-exec with a daemon/executor boundary. Internal Linux archive .10 at 00da63be passed selected source checks, independent installed QA, remote execution and fresh-context continuation. |
No public release or shared-node cutover; named documentation/usability findings remain. Its default child concurrency is one, and no organization-scale capacity result exists. |
| Authorization |
Optional local sidecat-auth, credential renewal, protected command path and ordinary execution during a Person Server outage. .12/.13 installed trials exercised both activation orders. |
Enterprise company/department resource allocation and broad policy are not implemented or qualified. |
| Orchestration |
Independent sidecat-orch, retained routine state, pinned Lisp/subroutines, amendments, restart continuation, a non-software trial and an engineering candidate trial; combined installer. |
Held-review continuation repair is committed only on isolated branch 0b1d1490. Focused owner tests passed; its whole-daemon test and vet were interrupted by the stop instruction. It is unintegrated and .13 engineering acceptance remains held. |
| Usability and quality |
Installer/help/manual, discovery, first-reply refusal and public-error privacy repairs. Isolated .13 ordinary Work and kept Lisp across CLI calls worked. |
Fresh-install Message still needs package/participant preparation. Installed MCP advertises 293 tools; ordinary agent discovery remains an open design problem. |
| Records and app platform |
A public operation caller and bounded execution/auth/orchestration owners exist alongside the current integrated product. |
Central internal/sqlite ownership is not replaced. The new provider contract, durable bus, no-copy Note/Message/Work journey, marketplace tracks and full multi-node collective journey are unbuilt. |
No public Version 1 release, main-line promotion or shared-node cutover is
claimed. The installed .13 source is 944ee79c; the later local source
5f451c0b was not that installed archive and has no full integration-head
qualification record. At the operator's 27 September
15:24 MDT instruction, implementation, builds, tests and new agent research
were stopped pending a clear plan.
Planning-cycle rule
At the start of each cycle, read this exact baseline and VISION.md, then
the current Sidecat organization guidance, selected sprint, Work and release
evidence. Say which capability the proposed outcome advances, how its app
boundary helps independent development, what old complexity it removes, and
what remains unproven. Record progress in Sidecat. To alter the Version 1
target, publish a dated successor with a before/after explanation; do not
edit this baseline to make a past choice appear inevitable.