ADPS Engineering Topics

Malleable Software: Adding Agents to Existing Business Systems

A company already has an order system, employee accounts, and approval procedures. The developer cannot access its source code. Operations staff want an agent to help with daily work, but replacing the system is not part of the project. A new interface still needs to establish where orders come from, whose authority it uses, and what evidence confirms that an operation completed.

An engineer who uses the name 街角·陌路△ raised this problem in conversations with Jia Huang. His initial interest in content-production agents shifted toward office workflows and commerce, where he had existing development experience. He later reported combining Embabel with business code and described a separate constraint: a client would not open its legacy source, so additional capabilities needed an external integration. These reports motivate the design questions below, without establishing measured production outcomes.

A complete OA application could make the business context easier to inspect. It need not become a prerequisite for demonstrating patterns. One existing task, a missing step, a clearly bounded agent action, and a recorded failure and recovery would provide a more useful starting point.

Five Development Choices

In August 2026, Michael Dubakov compared custom development, AI app-generation platforms, low-code tools, extensible work platforms, and specialized products. He argues for combining stable foundations with custom code. His “80% + 20%” formulation is a proposal, not a measured allocation of project effort. Original essay

Consider one requirement: add passage-level suggestions and editorial review to an existing knowledge website. Readers quote the text and submit feedback. An editor approves public discussion. Changes to the article require a separate publication step.

Choice Implementation for this requirement Decisions the project still owns
Custom application code Add a sidebar and service endpoints to the existing repository, choosing authentication and storage components Reviewer authority, passage anchoring, and discussion after article revisions
AI app-generation platform Generate submission and administration screens and connect them to the site Whether generated records express revision history, how identity is shared, and how deployments stay aligned
Low-code tools Receive forms, review records in tables, and expose approved content through a public API Whether pending records remain private and feedback returns to its original passage
Work-platform extension Keep suggestions in a team platform and add an external reader interface External-user permissions and separation from internal documents
Specialized knowledge or collaboration product Use the product's comments, revision history, or moderation Whether review granularity, export formats, and anchoring fit the requirement

These choices can coexist. A custom frontend might use a low-code review console and a hosted identity service. List what remains in the existing system and what the extension owns. Generating an application does not, by itself, supply the collaboration rules for this particular workflow.

Five development choices applied to the same review workflow

Figure 1. The comparison holds the requirement constant. Each approach must connect source passages, identities, and review outcomes.

From Using a Tool to Changing It

Malleability concerns whether people can adapt the tools they already use. Open source helps, but finding the relevant code, establishing a development environment, and maintaining a fork can still make a small change expensive.

Ink & Switch's June 2025 essay revisits research on user-tailorable systems from 1990 and argues for a gradual path from use to customization and programming. A January 2026 paper by Bryan Min and colleagues explores intermediate stages of interface generation that expose customization choices. Its three prototype websites address discovery and user control, not the reliability of enterprise operations. Ink & Switch, interface research

A product example is Fibery's August 2026 introduction of Custom Apps, which adds custom interfaces over existing work data. This illustrates an extension mechanism. A deployment still needs to verify permission inheritance and write restrictions rather than assume that every extension is safe because it uses a platform. Product announcement

A change to a screen alters how someone sees data. A change to a workflow can alter who may advance a business process. The latter needs additional checks, even when both changes require little code.

Extending a System Without Its Source

The engineer proposed exposing selected business functions as MCP tools. MCP defines tool discovery, invocation, and input and output descriptions. An adapter can implement a tool by calling an existing business API. This creates a route for agent integration when the system's owner provides approved interfaces but not source code. MCP tools specification

The protocol does not grant business authority. Consider a replacement-shipment request as a design example. A support agent reads order and service records, prepares a draft, and asks an authorized employee to confirm it. The existing order system remains responsible for orders, stock, and shipment records. The agent keeps supporting evidence and a proposed action, not a competing inventory ledger.

A run can proceed as follows:

  1. A support employee requests help while signed into the existing account system. The service determines the organization, role, and permitted order scope.
  2. The agent uses read-only tools to obtain the order's service status and applicable replacement conditions. Missing or inaccessible records remain explicit gaps.
  3. It prepares a draft containing the order identifier, replacement items, evidence references, and unresolved questions. Required missing information prevents execution.
  4. An employee approves that particular draft. Approval records its revision and content digest. Changing the items or quantity requires another approval.
  5. The adapter checks current authority, order state, and the approved revision before invoking an allowed business command.
  6. The system queries the resulting business record using its identifier. A timeout means the caller has not received a result, not that the operation never happened.

An agent extends a business system through controlled interfaces

Figure 2. The agent prepares a draft while the business system retains authoritative state. The adapter connects current identity, the approved revision, and the business command.

This design assumes an appropriate API or permission to establish an integration layer. Browser automation is another possible route when only a user interface is available, but interface changes, expired sessions, and ambiguous outcomes need separate handling. Without reliable result queries, limit automatic execution and retain a human action step.

An external extension can also inherit defects in the original system. If business state is inconsistent or important commands have no reliable outcome record, an agent cannot repair that merely by calling them. The project needs to identify which problems can be contained in the adapter and which require changes to the underlying service.

Where Business Context Is Used

Orders, permissions, prior experience, and rules can all affect a decision. They belong at different points in the execution path.

Context Where it is used Response to inconsistency
Order, stock, and business-record state During fact gathering and again before a write Refresh the facts and obtain approval for a revised draft
Current user, organization, and resource scope Authentication and each tool's admission checks Reject unauthorized access rather than accept a model-supplied identity
Operating rules and exceptions Draft creation, validation, and human review Identify missing conditions and reassess against the effective rule version
Prior handling experience Retrieval that assists preparation Current applicable rules override conflicting historical advice
Approval record Immediately before a write Refuse execution when the revision or digest differs
Business receipts, events, and errors Acceptance checks and incident investigation Distinguish no execution, completed execution, and an uncertain outcome

Authorization, optimistic concurrency, idempotency, transactions, and audit records are established engineering techniques. The agent adds interpretation of incomplete requests and investigation of uncertain results. Those additions do not replace the business constraints already enforced by code.

The following pseudocode identifies the objects an execution entry point must check. Its function names are illustrative, not an SDK interface.

def execute_draft(draft_id, actor):
    draft = drafts.load(draft_id)
    approval = approvals.for_revision(draft.id, draft.revision)
    require_same_digest(approval, draft)

    order = order_api.read(draft.order_id, actor)
    policy.authorize(actor, "create_replacement", order)
    require_same_version(order, draft.order_version)

    return order_api.create_replacement(
        order_id=order.id,
        items=draft.items,
        expected_version=order.version,
        idempotency_key=approval.operation_id,
        actor=actor,
    )

The service that commits the business change must enforce the relevant permission and version checks. A preliminary read and check can race with another update. Passing expected_version and idempotency_key is useful only when the receiving API enforces them. If it does not, document the remaining risk and constrain execution through serialization, adapter-side records, or human review. These alternatives do not automatically provide the same guarantees.

Authentication Does Not Define Editorial Work

Return to the knowledge-site example. GitHub login and a database identify contributors and store text. The application still needs answers to several questions:

These requirements belong in the data model. A source block needs an identifier and revision. A suggestion records its quotation and its own revision. Public discussion stores the exact text approved by the editor. Reading the contributor's mutable draft directly into the public page would let subsequent edits bypass moderation.

Discussion publication and article publication require separate approvals

Figure 3. A suggestion may become a public discussion and later an article change. The first approval does not authorize the second publication.

For example, an editor approves revision 1 of a suggestion and creates a public snapshot. Revision 2 returns to the review queue while revision 1 remains visible. Withdrawal of publication consent hides the public record. An article change is prepared separately as a diff, checked against its sources, neighboring passages, and language counterpart, and then approved for release.

The resulting states correspond to different expectations held by readers, contributors, and editors. Omitting them transfers the work to manual correction after release.

Applying ADPS Patterns

Start with the business objects and operation boundaries, then select the necessary patterns. The table maps the two examples to specific responsibilities.

Pattern or cross-cutting concern Extension of an existing business system Suggestions and article revision
P1 Context Triage Retrieve records permitted for the current order and step Bind feedback to a specific passage and revision
A1 Tool Dispatch Restrict available operations according to the current state Separate read, submit, and moderator endpoints
A4 Guardrail Sandwich Validate draft and authority before execution, then check the business receipt Validate quotations at submission and revision and consent at publication
G1 Approval Gate Approve a specific business draft Approve public discussion separately from article changes
G2 Blast Radius Control Limit order scope, operation type, and batch size Keep pending text private and withhold deployment rights from contributors
X1 Observability Connect draft, approval, command, and business result Connect suggestion revisions, moderation, and releases
X2 Evaluation & Validation Test success, timeouts, duplicate requests, and state races Test unauthorized reads, stale approvals, and visibility after withdrawal

The pattern definitions come from ADPS. Their placement in these examples is design analysis, not evidence that a named implementation has achieved a particular reliability level. Tests need to exercise the behavior in the last two columns.

Embabel is a further implementation route worth examining. Its public JVM project models flows using domain objects, actions, goals, and conditions, with access to the Spring environment. A Java team can investigate how this fits its existing services. The engineer's use of Embabel provides a practical lead, not a comparative benchmark establishing that it is generally superior to other frameworks. Embabel project

Acceptance Tests for an Extension

Choose an everyday business task and ask for its execution records:

Measure the same task before and after the change: handling time, review time, failure recovery, and operating cost. Code-generation time is one useful measurement, but not a substitute for delivery and maintenance costs.

Malleable software offers a way for businesses to adapt their working tools incrementally. A maintainable implementation must still establish who owns the authoritative state, who can make an operation effective, and how the original workflow continues when new code fails. Demonstrating those relationships in one real task provides a basis for choosing platforms and frameworks.

Related Reading and Sources

The practical questions originated in conversations between 街角·陌路△ and Jia Huang from July to September 2026. Customer information is omitted. The replacement-shipment workflow, data structures, and code are explanatory designs, not measured results from the engineer's project. The article does not predict that one development category will replace the others.

Jia Huang · First published: 10 September 2026 · CC BY 4.0