docs: add actest operator guide

This commit is contained in:
2026-07-23 14:21:34 +00:00
parent 0332b13471
commit 7cd7a747f0
2 changed files with 81 additions and 1 deletions
+78
View File
@@ -186,3 +186,81 @@ backend call, complete a slow route, inspect recent trace events, or export the
complete JSONL trace. The trace contains callback and filter inputs, session
state transitions, exact message/keyboard renders, backend results/errors, and
job transitions, so a UI report can be reproduced without live storage nodes.
### `/actest` operator guide
Run `/actest` only in a private chat as an authorized bot manager. The test UI
must be enabled, and all commands affect only the isolated dummy database.
Sending `/actest` without arguments is equivalent to `/actest status`.
| Command | Effect |
| --- | --- |
| `/actest status` | Show the current scenario, route flags, synthetic job count, trace count, and test database path. |
| `/actest reset [scenario]` | Clear dummy sessions, jobs, faults, and traces, then load `comprehensive`, `empty`, or `route_slow`. The configured scenario is used when omitted. |
| `/actest scenario [scenario]` | Alias of `reset`; it does not preserve the previous dummy jobs or sessions. |
| `/actest advance <job-id> <state>` | Move one synthetic job directly to a display state and persist the transition. |
| `/actest fail-next <method> [message]` | Make exactly the next matching dummy backend call fail with the supplied message, then disarm the fault. |
| `/actest route-ready` | Complete the pending dummy route used by `route_slow`. |
| `/actest trace [limit]` | Show the most recent trace events in chronological order; the limit defaults to 10 and is bounded to 1500. |
| `/actest export` | Send the complete append-only trace as `archive-control-telegram-trace.jsonl`. |
Valid `advance` states are:
```text
queued preparing running waiting stalled cancelling
cleanup_required succeeded failed cancelled
```
The internal job ID is shown on the final line of a Remove One confirmation.
Press Cancel after copying it if the purpose is only to drive the job with
`advance`. It is also present in `trace` backend results and the JSONL export.
Valid `fail-next` methods are:
```text
list_operation_resources
list_clients
get_resource_tree
preview_transfer
preview_eviction
create_job
list_jobs
clear_finished_jobs
hide_job
cancel_job
```
For example:
```text
/actest reset comprehensive
/actest fail-next preview_transfer simulated planning failure
```
The next archive or unarchive preview fails visibly with that reason; a later
preview proceeds normally. To exercise slow route provisioning:
```text
/actest reset route_slow
# Start an archive flow and choose a source/target.
# The preview reports that route provisioning has started.
/actest route-ready
# Reopen/retry the archive flow; the preview can now complete.
```
A useful review sequence is:
1. Run `/actest reset comprehensive`, then reopen `Archive Control (Test)`;
reset intentionally makes pre-reset inline buttons stale.
2. Walk through Archive, Unarchive, Evict Cache, filtering, selective entry,
pagination, Job Status, Remove One, and cancellation without confirming
destructive-looking choices unless that behavior is under review.
3. Copy a job ID from Remove One and use `/actest advance` to inspect waiting,
stalled, failed, cleanup-required, and terminal rendering.
4. Arm one `fail-next` point and repeat its matching UI action.
5. Run `/actest trace 50` for a quick diagnosis or `/actest export` when
reporting a reproducible UI problem.
Scenario state, synthetic jobs, and traces survive bot restarts. Only `reset`
clears them. None of these commands starts the production control daemon,
contacts storage nodes, or mutates production jobs or placements.
+3 -1
View File
@@ -195,7 +195,9 @@ The SQLite trace records callback receipt and validated callback state before
and after handling, text filters, complete rendered text and inline keyboards,
backend calls/results/errors, test-control commands, and job transitions.
`trace` shows a bounded recent view in chat; `export` sends the complete trace
as JSON Lines for offline diagnosis.
as JSON Lines for offline diagnosis. See the
[`/actest` operator guide](telegram-ux.md#actest-operator-guide) for complete
syntax, valid states/failure points, and a recommended review sequence.
## Fixture matrix