Actionist vertical-app factory — first-principles program reset
Date: 2026-08-28 Status: research_only_reset_with_holds Owner: Actionist Program Driver Scope: strategy, contracts, evidence and dependency ordering; no client-app edits, deployment, admission or production mutation
North star
Actionist wins against Lovable by making a different promise: turn a known B2B outcome into a coherent, maintainable vertical product by selecting and binding the best proven capabilities from a very large heterogeneous corpus, then generating only the missing client-specific delta.
Lovable-style prompt-to-app generation is a benchmark and a reference point, not the architecture. The product is the factory: demand understanding, capability discovery, reuse-shape selection, host binding, deterministic composition, verification, release and learning. AFFiNE, Teable and Chatwoot are calibration donors and evidence of seams; they are not the product strategy.
The economic unit is a successful client workflow and then a maintained vertical product, not a generated screen, repository, component count or model token total. The factory is winning only when it repeatedly improves time to a verified workflow, quality, repair burden, runtime burden and cost per successful outcome against a focused custom-build baseline.
The three-block composition remains a calibration fixture. It can test contract shape, refusal, authority ceilings and measurement instrumentation. It cannot establish a vertical, a reusable block, product-market fit, qualification, admission or the factory moat.
First principles
- Start with the outcome. A ProductSpec and DomainPack precede repository or
UI selection. Requirements must not inherit the shape of available code.
- The atomic business unit is a solution atom. It names actor, trigger,
source state, decision, side effect, authority/approval, post-condition, recovery and audit evidence.
- The reusable code unit is a capability in a declared reuse shape. A
repository is a source container that may yield several capabilities, one capability, a reference pattern or nothing reusable.
- Standardize seams, not internals. Host identity, tenancy, data ownership,
UI/token context, settings/navigation, connector authority, runtime and evidence are the interoperability boundary. Donor internals remain intact when that is the cheaper and safer shape.
- Evidence is part of the product. A build, a screenshot, a schema-valid
record or a source URL cannot substitute for tenancy, authority, visual, runtime, rollback or whole-workflow evidence.
- Deterministic systems own safety. Identity, dependency closure, port
compatibility, route/table/migration conflicts, authority ceilings, evidence minima and release manifests are machine-checked. Models may interpret, propose and write bounded transforms; they cannot grant authority or invent a missing contract.
- Unknown is a result.
UNDERDETERMINED,not_runandNOT_ADMITTEDare
useful outputs. Candidate evaluation has its own scope; production admission keeps strict R-SCOPE and never treats a research result as permission.
- Learning is attributed. Promote or demote a capability from repeatable
outcome, quality, adaptation, operational and maintenance evidence—not from corpus size, stars or repeated prose.
The reusable-unit stack
| Unit | What it means | Output / owner |
|---|---|---|
| Solution atom | One outcome-bearing job: trigger → state → decision → effect → recovery | SolutionAtom, demand/product owner |
| Capability | A bounded semantic behavior with typed inputs, outputs, state and effects | CapabilityContract, capability owner |
| Packaging profile | How the capability is reused and kept current | PackagingProfile, foundry owner |
| Binding | The host-specific identity, tenant, data, UI, connector and runtime join | BindingPlan, integration owner |
| Product composition | A selected set of capabilities plus host bindings and client delta | AssemblyPlan, composition owner |
| Qualification dossier | Evidence that the binding and workflow work at a pinned revision | QualificationDossier, verification owner |
| Release / learning record | A scoped release, recovery path, outcome and maintenance signal | ReleaseManifest and learning event, operations owner |
Supported reuse shapes are independent of capability kind:
intact_service— retain the upstream runtime and data ownership behind a
protocol;
intact_forkorembedded_module— retain a donor application/surface where
its UI, state and navigation are the value;
transplanted_subsystem— own a product-defining slice deliberately;extracted_package— isolate a narrow feature with a small dependency
closure;
adapter— retain an external system and expose a typed host interface;generated_pattern— reproduce a proven architecture without copying the
source;
template_or_archetype— reuse a tested application skeleton and variation
points;
custom_delta— write only what is genuinely client- or niche-specific;reference_only— retain design/architecture learning without reproducing
code.
The seven linked records from Sprint 2 remain the minimum governance split: CapabilityContract, PackagingProfile, HostContract, BindingPlan, QualificationDossier, RegistryRecord and ReleaseManifest. They are linked, not fused into a universal object.
The complete repo-to-module factory
OutcomeSpec + DomainPack + ProductSpec
→ demand/atom query
→ local-first source graph and candidate funnel
→ source identity, rights and architecture map
→ capability boundary + reuse-shape decision
→ dependency/SBOM/upgrade closure
→ seven linked module records
→ deterministic surgery plan and bounded adaptation
→ host/data/identity/UI/connector/runtime binding
→ candidate-evaluation solver
→ staged isolated build and whole-workflow verification
→ qualification dossier
→ scoped human admission
→ release, rollback and attributed learning
The stages have different stop conditions:
| Stage | Factory responsibility | Stop / output |
|---|---|---|
| 0. Scope and provenance | Pin source locator, revision, digest, rights state and handling policy | Unknown/ambiguous rights becomes quarantine or reference_only |
| 1. Demand normalization | Convert client language into one measurable workflow and non-goals | No source search while critical actor, state, authority or outcome is missing |
| 2. Candidate discovery | Search local SISO/client assets first; then bounded external sources; classify product, engine, framework, surface, primitive or reference | Candidate set with exact paths, evidence class and rejected alternatives |
| 3. Source understanding | Inspect manifests, routes, auth, data, migrations, UI, tests, runtime and upgrade seams | CapabilityMap; no claim that “contains feature” means reusable |
| 4. Shape and ownership | Choose service, fork/module, transplant, package, adapter, pattern, template or custom delta | Named human decision when data authority, semantic behavior or irreversible surgery is involved |
| 5. Closure and contract | Resolve transitive dependencies, provenance, license/SBOM, upstream sync and seven linked records | PackagingProfile plus unresolved fields; no silent dependency inheritance |
| 6. Adaptation | Classify cosmetic, boundary and architectural surgery; generate only deterministic codemods and bounded glue | Diff, budget, reversibility and owner for every surgery |
| 7. Binding | Bind host identity, tenant map, data owner, routes, settings, tokens, connectors, secrets and runtime in a disposable environment | BindingPlan; client data and external effects remain denied by default |
| 8. Composition | Eliminate incompatible candidates by deterministic rules before model ranking or glue writing | FEASIBLE, INFEASIBLE or UNDERDETERMINED; zero relaxations |
| 9. Proof | Run schema/static/build/contract/browser/visual/security/tenant/data/whole-workflow/resource/rollback checks | QualificationDossier at the minimum evidence tier; one green build is insufficient |
| 10. Admission and release | Bind exact host scope, named authority, release pins and eight rollback objects | NOT_ADMITTED remains the default; release/deploy is a separate authorized action |
| 11. Operate and learn | Attribute successful outcomes, defects, repair loops, resource burden and maintenance to capabilities and bindings | Update registry/ranking only from repeatable evidence |
Client demand to product runtime
Client context and discovery
→ OutcomeSpec (buyer, painful job, value measure)
→ DomainPack (entities, roles, events, vocabulary, invariants)
→ ProductSpec (workflows, screens, actions, failures, acceptance, non-goals)
→ capability query (atoms, ports, host/data/action constraints)
→ typed candidate graph (local first, reference-only separated)
→ deterministic elimination + bounded planner choice
→ AssemblyPlan and surgery budgets
→ staged host binding
→ read-only/approval-gated preview and complete-workflow proof
→ qualification dossier and client Accept/Revise gate
→ human admission for the exact host scope
→ ReleaseManifest, deployment and rollback
→ operation traces, economics and learning feedback
Agent roles are deliberately narrow: interpreter, retriever, deterministic solver, planner, binder and verifier. The solver cannot choose an infeasible candidate; the binder cannot write outside its allowlist; the operator owns business equivalence, destructive authority and release.
Shared boundaries
| Boundary | Stable rule | Current status |
|---|---|---|
| Host identity and authority | Host-verified context is authoritative; donor roles remain donor-owned; short-lived exchange tokens, exact audience/time/jti and audit are required | Partial local precedents; no qualified universal adapter |
| Tenant bridge | host.tenant_id → server-side allowlisted donor key; browser-supplied identity/tenant is untrusted; deny by default | Design and partial donor patterns; negative isolation must be proven per binding |
| Data and state | One owner per table/migration; donor-owned stores may remain separate; cross-owner reads use events/read models; Postgres is a default for new owned state, not a universal donor constraint | Strong SISOCRM principle; real factory path unmeasured |
| UI and tokens | One host token context; cross-origin frames are hard CSS/session boundaries; use native retokenization, scoped bridge or explicit frame negotiation | AFFiNE/Teable seams exist; parity and coherence remain holds |
| Settings and navigation | Host owns global shell; donor settings may remain donor-owned when absorption is costlier; ownership is declared, not inferred from visual similarity | SISOCRM hides/redirects some donor surfaces; clean absorption unproven |
| Connectors and effects | Tenant-keyed credentials; action ports declare effect, consent, idempotency, approval and recovery; reads may be mounted before sends | Catalogue/OAuth mechanics exist; host-scoped connection/action proof missing |
| Runtime and release | Select package, microfrontend, sidecar/service, worker or scheduled job from lifecycle/ownership; pin revisions, processes, health and rollback objects | Profiles and design floors exist; current donor burden is not a live measurement |
| Validation and learning | Evidence families stay orthogonal; complete workflow outranks isolated tests; production signals are attributed and consented | Research contracts exist; no qualified/released composition |
What survives, what is contained, what is rejected
| Existing framework / precedent | Decision | Precise reuse |
|---|---|---|
| AutoSaaS Method | Survives, broadened | Outer factory loop, run packets, spec-before-code, local source graph, build waves, verification and learning; remove “SaaS” and fixed-shell assumptions from the Actionist core |
| 18-domain map + 15-part map | Survives | Ownership and dependency map for the factory; it is not itself a client product plan |
| Block Hub | Survives | Six levels and business lifecycle; keep UI components, surfaces, capabilities, modules, engines and recipes distinct |
| Seven-record module family | Survives | Thin semantic/packaging/host/binding/qualification/registry/release boundary |
| Framework Registry / Great Library | Survives as governance | Registry identity, lifecycle, evidence and assembly projections; current maturity remains measured=0, operational=0 |
| P12 plan-then-fill + deterministic solver | Survives | Hard compatibility/refusal before model choice; candidate-evaluation scope is separate from strict production R-SCOPE |
| SISOCRM donor-fork and intact-service precedent | Survives as a reuse policy | Prefer intact ownership when UI/state/runtime are the value; do not slice a donor without a real embedding seam |
siso-ui-base brief → forge → gate → judge → bless loop | Survives as experience evidence | Visual precedents, token preference and evidence loop; not a substitute for product workflow acceptance |
| OpenConnector / Activepieces / Nango / Jentic research | Selective | Reuse catalogue, action and OAuth mechanics only; own tenant connection storage and authority |
| Fixed five-area ISSO shell | Contained | A tested archetype/control, not a universal product constitution |
| Postgres-everywhere / one ORM | Rejected | Use typed data ports and one migration owner; bind Postgres where it fits the workload |
| Repository-as-block / same-shape conversion | Rejected | A repository is a source container; choose the capability and reuse shape first |
| Broad metadata/star ranking as quality | Rejected | Discovery evidence widens the pool; source, seam, workflow, runtime and maintenance evidence decide reuse |
| Fully automatic repo converter | Rejected | Automate inspection, closure, deterministic surgery and receipts; keep shape, semantic adaptation and admission reviewable |
| Lovable-style free-form prompt → app | Benchmark only | Compare outcome quality, time and maintenance against it when a fair benchmark is authorized; do not make it the Actionist architecture |
| Three-module AFFiNE/Teable/Chatwoot composition | Calibration only | Test contract sequencing, host controls and instrumentation; never treat it as the vertical strategy |
Smallest dependency-ordered build sequence
This is the smallest sequence that can test the factory thesis without pretending that a donor demo is a product. It is a future build plan, not an authorization to modify client applications.
| ID | Gate and dependency | Smallest measurable outcome |
|---|---|---|
| R0 | First-principles reset and evidence ledger | One canonical program, machine graph, ledger and falsifier set; all 15 parts and 18 domains mapped; existing calibration outputs linked |
| R1 | Choose one reachable B2B wedge; depends on R0 | One named buyer, one painful workflow, one value metric, non-goals, authority ceiling and at least five executable acceptance scenarios; operator/client confirmation recorded |
| R2 | Freeze OutcomeSpec + DomainPack + ProductSpec; depends on R1 | Zero unresolved critical actor/state/authority/data fields; acceptance fixture and client Accept/Revise gate defined |
| R3 | Local-first candidate and source map; depends on R2 | Three real source containers with exact identity/rights/path evidence, one primary, one backup and one reference/pattern candidate; no breadth survey |
| R4 | Capability maps and reuse-shape decisions; depends on R3 | One bounded capability per selected source, explicit shape/owner/upstream model, dependency and adaptation map; cosmetic/boundary/architectural surgery separated |
| R5 | Contract and registry factory; depends on R4 | Seven linked records validate for service, module/package and custom-delta examples; missing fields return UNDERDETERMINED; no record becomes admitted by validation alone |
| R6 | Host boundary slice; depends on R2, R4 and R5 | Host identity, allowlisted tenant bridge, data ownership, route/settings/navigation ownership, token context, connector effect policy and trace context each have positive and negative tests |
| R7 | One repo-to-module golden path; depends on R5 and R6 | One pinned donor plus one owned delta reaches an isolated staged artifact without client data or external effects; adaptation hours, changed files/lines, repair rounds and upgrade recipe are recorded |
| R8 | Deterministic demand-to-assembly planner; depends on R2, R5, R6 and R7 | Repeated identical inputs have digest parity; zero relaxations; no false FEASIBLE on negative/unknown fixtures; strict production R-SCOPE remains fail-closed |
| R9 | Read-only staged workflow; depends on R1, R7 and R8 | Complete primary workflow passes in an isolated host, tenant-negative tests pass, writes/effects remain denied or approval-gated, and the host/donor boundary is observable |
| R10 | Factory-versus-custom benchmark; depends on R9 | Same ProductSpec built through plan-then-fill and focused custom baseline; compare successful-workflow rate, elapsed time, human hours, tokens, repair rounds, changed code, defects, RAM/processes, DB/queue burden, latency and cost |
| R11 | Qualification and scoped admission; depends on R10 | Required evidence families reach their minimum tier, rollback objects have a non-zero computable horizon, client accepts the workflow, and an operator explicitly admits the exact pinned scope—or records refusal |
| R12 | Release, operate and learn; depends on R11 | Authorized release/rollback rehearsal and attributed outcome receipt; after multiple accepted builds, ranking changes only when evidence improves reuse or outcome economics |
The first meaningful competitive test is R10. If the assembly path does not improve a complete workflow against a focused custom baseline without weakening security, UX or maintainability, increasing corpus size will not fix the strategy.
Explicit falsifiers
These are pre-registered reasons to stop, narrow or redesign. They are not predictions of failure.
| ID | Claim tested | Falsifier / consequence |
|---|---|---|
| F01 | A bounded B2B outcome is a better factory input than an open app prompt | The first wedge cannot produce a measurable value metric, stable actor/state model or accepted workflow after a bounded discovery cycle; stop and repair demand/spec, not retrieval |
| F02 | Heterogeneous supply creates reusable leverage | Across three real source containers, no candidate yields a declared shape with a bounded dependency closure and a cheaper/safer path than focused custom work; narrow the supported shapes or abandon corpus-led assembly for that capability family |
| F03 | The seven-record split is sufficient | Service, module/package and custom-delta examples require donor-specific semantics in the host contract or duplicate provenance/qualification truth; revise the contract family before building |
| F04 | Plan-then-fill improves assembly | A fair same-spec benchmark has no improvement in time or successful-workflow rate, or adds repair/maintenance cost without quality gain; keep custom build as the default for that wedge |
| F05 | Deterministic composition prevents unsafe model choices | Any repeated run changes verdict/digest, relaxes a hard rule, declares FEASIBLE with an unresolved critical port, or lets candidate evaluation satisfy production R-SCOPE; stop the solver path |
| F06 | One host can safely bind donors | Any cross-tenant read, unverified identity, route/data/migration ownership conflict, secret exposure or unauthorized effect occurs; stop and redesign the boundary |
| F07 | UI coherence is a reusable capability | A donor cannot meet the ProductSpec's required states and approved visual threshold within its declared surgery budget, or cross-origin theming remains misleading; keep it intact/reference-only or build the surface custom |
| F08 | Reuse does not create linear operational debt | Incremental processes, RSS, database/queue/storage burden or integration latency exceed declared budgets or grow roughly linearly with each donor; change the runtime/reuse policy |
| F09 | Qualification can be automated enough to scale | Required evidence families remain missing, contradictory or non-reproducible after capped repair; no admission and no ranking promotion |
| F10 | Production learning compounds | After multiple accepted compositions, outcome/adaptation/maintenance data does not improve candidate choice, cost or repair rate; stop scaling breadth and repair attribution/feedback |
| F11 | Actionist can beat a Lovable-style baseline on its chosen wedge | On a pre-registered, fair benchmark, Actionist does not deliver a better accepted workflow/maintenance result at acceptable cost; do not claim competitive advantage |
Current evidence position
Solved at research or local-precedent level
- The demand → supply → composition → runtime → learning decomposition exists in
the 18-domain/15-part map.
- The Block Hub distinguishes components, surfaces, capabilities, product modules,
engines and composition recipes.
- The seven linked records, reuse-shape taxonomy, normalization surgery classes,
runtime profiles, evidence ladder, rollback vocabulary and learning signals are specified in Sprint 2.
- The Framework Registry research packet is verified at 24 frameworks, 62 edges
and 10 gaps, with maturity 0/9/14/1/0/0; measured and operational remain zero.
- SISOCRM and the BYK/Fahmy estate demonstrate real seams worth mining: host
routes, intact donor origins, host-session code, native/iframe alternatives, donor-owned data and local receipts. They do not prove a general factory.
- The corrected three-candidate solver demonstrates a structurally feasible
candidate-evaluation projection with strict production R-SCOPE refusal. The three-block host result is a synthetic calibration fixture only.
Unsolved at product-factory level
- A reachable client outcome, ProductSpec and client acceptance record.
- A repeatable repo-to-module golden path whose cost is measured on real source.
- General host identity, tenant, settings/navigation, data, token, connector and
runtime contracts that pass negative tests across reuse shapes.
- The actual distribution of cosmetic, boundary and architectural adaptation
cost, upgrade/recovery burden and glue budgets.
- A complete workflow that beats a focused custom baseline on quality and cost.
- A qualification dossier, human admission, release, rollback rehearsal and
production learning signal.
- The authoritative large local corpus path/query interface and a production
learning loop that can safely rerank it.
The current machine observation found no donor listeners on the AFFiNE, Teable, Chatwoot or assembled-portal ports and no Docker executable; historical service receipts are retained as historical. No donor RAM or process burden may be inferred from the synthetic host's one-process measurement.
Evidence anchors
knowledge/00-MASTER-SYNTHESIS.md— strategic thesis, five planes, reuse
shapes and known unknowns.
knowledge/01-DOMAIN-MAP.mdandsite/system-map/data/parts.json— 18
domains and 15 moving-part ownership map.
knowledge/block-hub/README.md— six-level hub and business lifecycle.research/workstreams/2026-08-27-sprint-2/convergence/S2-CONVERGENCE.md—
seven-record family, solver, host and runtime decisions.
research/actionmodel-builder-research-2026-08-26/outputs/first-principles-framework.md—
solution atoms, evidence boundary and authority model.
../../apps/AutoSaaS/framework/autosaas-method.mdand
../../apps/AutoSaaS/framework/code-harvest-protocol.md — existing outer factory loop and local-first harvest protocol.
../../apps/SISOCRM/— actual host, manifest, native/iframe and session seams;
inspect without modifying the client app.
../fahmy-2026-08/docs/client-platform/implementation-manager/evidence/affine-existing-final/receipt.json—
direct historical AFFiNE integration receipt.
../fahmy-2026-08/docs/client-platform/implementation-manager/evidence/teable-data-final/teable-data-final-receipt.json—
direct partial Teable receipt.
../fahmy-2026-08/integrations/chatwoot/CHATWOOT_INTEGRATION.jsonand
../../../bykonz-archive-2026-08-23/bykonz-local-operator-bundle/verification/chatwoot-w1-acceptance/AMENDED-RECEIPT.json — direct Chatwoot runtime/hold evidence.
dependency-task-graph.jsonandsolved-unsolved-evidence-ledger.jsonin
this directory — machine-readable dependency and evidence projections for this reset.
Boundary and operator gate
This reset does not modify SISOCRM, BYK/Fahmy, prior client projects, the canonical knowledge spine or the public site. It does not clone or execute candidate source, read client records, deploy, qualify or admit a module. A future R1/R11 decision needs an explicitly named operator/client authority; silence is not approval. The existing AFFiNE, Teable and Chatwoot statuses stay NOT_QUALIFIED / NOT_ADMITTED.