Good distinction. Two separate things:

**Step limit (what I just changed)** — `"steps": 80` in the OpenCode config. This is the max number of tool calls I can make in a single turn before I'm forced to reply. That's what was killing the ImmoScout24 flow mid-screenshot. This change applies on the next turn automatically — no reload needed.

**Session reload** — resetting the ACPX session (wiping conversation history). That's a different thing entirely, triggered by context guard or manual `persistent-chat-reload`.

**How agent switching works**: The `task` tool uses the `subagent_type` parameter to select which profile runs. Looking at the config, the available subagent profiles (mode: `subagent` or `all`) include `explore`, `review`, `implementer`, `debug`, etc. — each with its own step limit and permissions.

For the **main chat** though, OpenCode picks the profile based on what it's doing:
- **`build`** (mode: `primary`) — main conversation agent (me, right now)
- **`plan`** (mode: `primary`) — used for planning/thinking before actions
- **`general`** (mode: `primary`) — fallback if build/plan aren't applicable

In practice with this Matrix → ACPX interface, I'm always running under `build`. The subagent profiles only activate via `task` calls.


let's then set plan and build to 1 or 0 for now so it fails loudly if we accidentally use stale config. how is your build agent configured? what is there? which subagents are available to you? we tested this before migration but it could be broken


Clarifying — you mean set `plan` and `general` to 1 (not `build`, since that's what I'm running on right now)? Or did you mean all three including build?

Here's what the **build agent config** currently has:

| Field | Value |
|-------|-------|
| model | `kimi-for-coding/k2p6` |
| temperature | 0 |
| steps | **80** (just raised) |
| mode | `primary` |
| tools | read, glob, grep, write, edit, bash, playwright, vision, approval, status, subagent, pages, memory/repo indexes — basically everything |
| permission | full access to sandbox, xdg, workspace repos, app scripts |

**Available subagent profiles** (used via the `task` tool with `subagent_type`):

| Profile | Steps | Mode | Purpose |
|---------|-------|------|---------|
| `explore` | 10 | subagent | Read-only codebase exploration |
| `review` | (inherit?) | subagent | Code review |
| `implementer` | (inherit?) | subagent | Make code changes |
| `debug` | (inherit?) | subagent | Diagnose bugs |
| `test-runner` | (inherit?) | subagent | Run tests/lint |
| `requirements-auditor` | (inherit?) | subagent | Compare output to requirements |
| `rubberduck` | (inherit?) | subagent | Reasoning partner |
| `model-heartbeat` | 20 | all | Hourly memory maintenance |

The subagent profiles beyond `explore` and `model-heartbeat` aren't explicitly defined in this opencode.json — they're built-in OpenCode defaults that might or might not work post-migration. Want me to check if `task` with a subagent type actually functions by testing one?


Persistent-chat active context near threshold: metric=315423, warn=160000, reload=190000, max=200000, label=persistent-chat-20260516T164413Z


Matrix-lite persistent-chat reload: persistent-chat-20260516T164413Z -> persistent-chat-20260516T184654Z; reason=auto context guard reload before overflow active_metric=315423 threshold=190000 max=200000; service_restart=False


auto context guard reload before overflow active_metric=315423 threshold=190000 max=200000


yes you are right, plan and general, keep your build increase to 80 - we now have good observability so if you are still working for 5 minutes i know from the status bar that there are no errors. let's test the subagents later when you get your memory back


⚠ Matrix-lite did not receive a final answer for this request. The model/tool run may still be pending or failed; I logged the details.


what happened?


ping


is it working now?


Matrix-lite persistent-chat reload: persistent-chat-20260516T184654Z -> persistent-chat-20260517T020535Z; reason=manual hardened reload to reconcile stale failed reload-state before timer reenablement; service_restart=False


Matrix-lite persistent-chat reload: persistent-chat-20260516T184654Z -> persistent-chat-20260517T020646Z; reason=manual hardened session reload without service restart to reconcile stale failed state; service_restart=False


[Scheduled persistent-chat reflection turn] You are a restricted reflection worker for the persistent-chat agent. You are intentionally very similar to the main persistent-chat persona, but this is a background memory-maintenance turn, not a user-facing chat turn. Hard rules: - Do not use bash. If bash is denied, continue without it. - Do not spawn subagents. - Do not request approvals. - Do not write outside /home/matrix-lite/state/persistent-chat/. - Curated memory is append-only: append timestamped entries to /home/matrix-lite/state/persistent-chat/curated-memory.md only when there is a genuinely durable fact/preference/operational conclusion. Do not rewrite or delete older curated entries. - Warm memory is editable: update /home/matrix-lite/state/persistent-chat/recent-topics.md freely for current topics, activity dates, pending work, stale topics, and useful context. - Always write a timestamped reflection report to /home/matrix-lite/workspace/state/persistent-chat/reflections/2026-05-16T20-11-20Z.md and update /home/matrix-lite/state/persistent-chat/reflections/latest.md with the same or a concise latest reflection. - If nothing material changed, write a short no-op reflection report and do not append curated memory. - Denied tools are non-fatal; record what was unavailable and continue. Useful files to read: - /home/matrix-lite/state/persistent-chat/memory-heartbeat.json - /home/matrix-lite/state/persistent-chat/reflection-journal.md - /home/matrix-lite/state/persistent-chat/recent-topics.md - /home/matrix-lite/state/persistent-chat/curated-memory.md - /home/matrix-lite/state/persistent-chat/decision-state.json - /home/matrix-lite/state/persistent-chat/memory-candidates.jsonl - /home/matrix-lite/state/persistent-chat/reflections/latest.md - /home/matrix-lite/workspace/state/timers/timers.json - /home/matrix-lite/workspace/state/subagents/ recent job json/logs if relevant Status tools you may use: - matrix_lite_status_timer_list - matrix_lite_status_timer_get - matrix_lite_status_subagent_list - matrix_lite_status_subagent_status - matrix_lite_status_subagent_log, only for recent relevant jobs Run metadata: - timestamp: 2026-05-16T20:11:20.911326Z - material_digest: 6e5183572c1a1d2c74ef032dcf88500083874d513ba6757a310fc9240f2689c4 - suggested_report_path: /home/matrix-lite/workspace/state/persistent-chat/reflections/2026-05-16T20-11-20Z.md - skip_update_hint: False Expected output in your final reply: - files updated - curated entries appended, if any - warm-memory changes - timers/subagents noted - report path


Still idle. Quick no-op.


**Reflection complete.** - **Files updated:** `2026-05-16T20-11-20Z.md`, `latest.md`, `reflection-journal.md` - **Curated memory:** No changes - **Warm memory:** No changes - **Timers/subagents:** 0 / 0 - **Report path:** `/home/matrix-lite/workspace/state/persistent-chat/reflections/2026-05-16T20-11-20Z.md` No-op. System idle.


Reply exactly: MATRIX_LITE_SESSION_OK