diff --git a/reports/pluginization-status-report.md b/reports/pluginization-status-report.md new file mode 100644 index 0000000..b15efc3 --- /dev/null +++ b/reports/pluginization-status-report.md @@ -0,0 +1,131 @@ +# reply-end-controls - Pluginization Status Report + +- Date: 2026-05-13 +- Status: in progress + +## Summary + +The project has moved beyond a one-off Telegram/OpenClaw PoC and is now in an active pluginization transition. + +It is not yet a clean installable plugin package, but it is also no longer just a pile of undocumented runtime edits. + +The project now has enough structure to support continued convergence toward a reusable integration path. + +## What has already been pluginized or partially pluginized + +### 1. Shared configuration source + +The project now has a single repo-owned config source: + +- `config/reply-end-controls.json` + +This centralizes: + +- callback data +- button labels +- resolved button labels +- acknowledgement text +- stop-policy text + +Both repo-side runtime helpers and the apply script now read from this source. + +### 2. Reusable core modules + +The project already contains reusable logic for: + +- state model +- callback normalization +- policy behavior +- file-backed store behavior + +These live under: + +- `src/core/` + +### 3. Adapter layer foundations + +The project now includes: + +- `src/adapters/openclaw.ts` +- `src/adapters/openclaw-state-file.ts` +- `src/runtime/openclaw-telegram-bridge.ts` + +This means OpenClaw-specific behavior is no longer entirely trapped inside ad hoc runtime patch descriptions. + +### 4. PoC runtime helper extraction + +Telegram PoC behavior has already been captured into reusable helper code: + +- default button generation +- resolved button rendering +- acknowledgement reply text +- stop-state inbound text shaping + +### 5. Reproducible patch flow + +The project now has: + +- `scripts/apply-openclaw-poc-patch.sh` +- `scripts/rollback-openclaw-poc-patch.sh` + +The apply/rollback flow has been validated against a pristine extracted `openclaw@2026.5.7` package. + +## What is still not pluginized enough + +### 1. Live OpenClaw runtime still uses inline patch behavior + +Even though repo-side modules now exist, the live `openclawtest` runtime still depends on patched OpenClaw distribution files. + +That means the behavior is reproducible, but not yet cleanly consumed from the repo at runtime. + +### 2. Telegram callback behavior is still wired through patched runtime code + +The callback path has been proven, but it is still implemented as a runtime patch rather than a clean runtime integration seam. + +### 3. Stop policy is still injected as text + +The PoC successfully alters later behavior using a stop-state instruction, but the implementation is still based on injected text policy rather than a more explicit first-class runtime policy hook. + +### 4. Acceptance still has manual UI steps + +The project has repeatable scripts, but acceptance is still partly human-driven because Telegram UI behavior must be observed directly. + +## Current maturity assessment + +The project is currently at this maturity level: + +- more than a PoC patch experiment +- less than a true installable plugin package +- suitable for continued structured development +- suitable for another agent to continue work with clear repo-side ownership points + +## Recommended next work + +### Priority 1 + +Reduce runtime inline logic by replacing more hardcoded patch content with repo-side helper ownership. + +### Priority 2 + +Make apply/rollback/verify feel more like a supported integration workflow than an engineering exercise. + +### Priority 3 + +Document exactly which remaining runtime behaviors are still inline and what their intended repo-side owners are. + +## Final judgment + +Pluginization is underway and meaningfully advanced, but not complete. + +The project has crossed from: + +- undocumented patch success + +to: + +- structured PoC +- reusable repo-side modules +- shared config source +- reproducible patch workflow + +The remaining work is real, but it is now focused and understandable rather than exploratory.