Core and Client stay separate
Core owns reusable workflow capability. Client owns Canford-specific product intent, delivery evidence, generated reports, and runtime bindings.
Technical rollout plan
A local-first Delivery Twin distribution built on pinned upstream OpenClaw, a corporate configuration profile, a Delivery Twin skill/plugin pack, and a wrapper CLI for repeatable client onboarding.
Delivery Twin becomes the chat and command layer for the existing Delivery Hub workflow. The durable record remains Azure DevOps plus Delivery Hub specs, decisions, open questions, work packages, and implementation plans.
Core owns reusable workflow capability. Client owns Canford-specific product intent, delivery evidence, generated reports, and runtime bindings.
delivery-twin coordinates runbooks, reads the right source files, produces workflow artifacts, and reports concise status back to chat.
Slack stays routed through slack-router. Telegram routes directly to delivery-twin. Both use the same command grammar.
Delivery Twin is layered on pinned upstream OpenClaw. The reusable delivery behavior lives in corporate configuration, a Delivery Twin skill/plugin pack, and a wrapper CLI.
Command grammar, OpenClaw agent roles, runbook bindings, safety policies, instruction patterns, templates, and neutral documentation belong in Core.
Canford specs, open questions, decisions, ADO evidence, generated reports, channel bindings, and review links stay in the Client workspace.
The company laptop is the operating boundary. Client workspaces and local indexes stay local. External exits are limited to company systems, Git remotes, Slack or Telegram, and the enterprise LLM route.
Installation should feel like a product bootstrap, not a manual setup note. The wrapper prepares the environment, writes policy-aware configuration, guides logins, and validates readiness.
delivery-twin install
delivery-twin doctor
delivery-twin login devops
delivery-twin login slack
delivery-twin login telegram
delivery-twin login llm
delivery-twin attach --client canford-law --repo REPO_URL --board BOARD_URL
{
"deliveryTwin": {
"openClaw": "pinned-upstream",
"coreRoot": "~/.delivery-twin/core",
"clientsRoot": "~/.delivery-twin/clients",
"defaultClient": "canford-law",
"externalPostsRequireHumanConfirmation": true,
"personalProviderFallback": false
}
}
This flow starts after the Core and Client split is stable, the Core release is pinned by the Client, and strict validation passes through the Core generator.
~/.delivery-twin/clients/{client-name}.questions, queue AI-Task, status latest.The same action names work in both channels. Slack uses /delivery-twin through slack-router. Telegram uses /delivery_twin directly against delivery-twin.
| Channel | Route | Default behavior |
|---|---|---|
| Slack | /delivery-twin -> slack-router -> delivery-twin when deeper work is needed. |
Cheap triage, concise replies, no broad repository reads unless escalated. |
| Telegram | /delivery_twin -> delivery-twin. |
Direct delivery workflow commands for trusted operator use. |
questions lists active questions with owners and needed-by dates.question <ref> shows one question with context and source links.answer <ref> <answer> captures intent and updates the durable source first.ask-client <ref> <request> drafts a client follow-up.queue <tag>, status <id>, and run-report latest are read-only by default.refine, spec, research, slice, and task run Delivery Hub paths.review supports PR, test-gap, and documentation-impact review.The split lowers normal command cost by loading stable Core rules plus targeted Client facts, instead of sending broad mixed-repository context for every chat turn.
Read one question, one spec section, one decision entry, one work package, or one graph query result when that is enough.
Core promotion, pin updates, CI checkout, and boundary debugging need both Core and Client evidence until the release path is stable.
Log command, client id, Core pin, files loaded, graph queries, model, input tokens, output tokens, and router versus worker path.
Short phases keep the work sequenced without turning this plan into a detailed implementation backlog.
Complete the Core and Client split: tag Core, update the Client pin, run strict Core-backed portal validation, and settle the CI checkout path.
Package Delivery Twin: pinned upstream OpenClaw, corporate config, skill/plugin pack, wrapper CLI, installer, and doctor checks.
Enable new client onboarding: attach project, connect repositories, ingest backlog, build local indexes, and generate the first delivery brief.
Turn on Slack and Telegram commands, starting with open-question handling, queue summaries, status, and run-report checks.
Expand delivery support with PR review, standup reporting, schedule planning, risk summaries, and workflow health reporting.
The plan keeps the current Delivery Hub authority model. Chat can start or summarize work, but durable changes must land in the correct source file or system.
| Risk | Control |
|---|---|
| Client data enters reusable Core. | Promote Core deliberately and keep Canford specs, questions, reports, review URLs, ADO evidence, and generated context in Client. |
| Chat answers bypass source files. | Capture answers in the related spec or decision first. Then update the open-question register with a resolution link. |
| Slack posts too much sensitive content. | Route Slack through slack-router, use summaries and links, allowlist channels, and require human confirmation before external posting. |
| Runtime config becomes a security assumption too early. | Treat the current OpenClaw setup as a functional proof path. Harden identity, secrets, provider routing, and channel permissions before client-sensitive rollout. |