This log records implementation prompts that change the reusable ScienceClaw/OASIS template. Keep private user data, credentials, and live workspace secrets out of this file.
Use the gateway 1 to gateway 3 handoff as an opportunity to establish a durable project-folder structure that lets gateway 3 link to remote drives, external storage, and GitHub repositories without loading everything into the container.
docker/seed-workspace/README.mddocker/seed-workspace/AGENTS.mddocker/seed-workspace/TOOLS.mddocker/seed-workspace/RESOURCE_MAP.mddocker/seed-workspace/projects/README.mddocker/seed-workspace/projects/_template/README.mddocker/seed-workspace/projects/_template/PROJECT.yamldocker/seed-workspace/projects/_template/DATA_MANIFEST.mddocker/seed-workspace/projects/_template/GITHUB_REPOS.mddocker/seed-workspace/projects/_template/EXTERNAL_LINKS.mddocker/seed-workspace/projects/_template/STORAGE.ymldocker/seed-workspace/projects/_template/WORKSPACE_NOTES.mddocker/seed-workspace/scripts/init-working-group.shdocs/project-workspaces.mddocs/storage-model.mddocs/storage/local-mounts.mddocs/storage/remote-storage.mddocs/use/where-files-go.mdmkdocs.ymlinstances/project-three/workspace/projects/README.mdinstances/project-three/workspace/AGENTS.mdinstances/project-three/workspace/RESOURCE_MAP.mdinstances/project-three/workspace/projects/fractal-corridors/README.mdinstances/project-three/workspace/projects/fractal-corridors/PROJECT.yamlinstances/project-three/workspace/projects/fractal-corridors/DATA_MANIFEST.mdinstances/project-three/workspace/projects/fractal-corridors/GITHUB_REPOS.mdinstances/project-three/workspace/projects/fractal-corridors/EXTERNAL_LINKS.mdinstances/project-three/workspace/projects/fractal-corridors/STORAGE.ymlinstances/project-three/workspace/projects/fractal-corridors/WORKSPACE_NOTES.mdinstances/project-three/external_storage/fractal-corridors/README.mdprojects/fractal_corridors/README.mdprojects/fractal_corridors/PROJECT.yamlprojects/fractal_corridors/GATEWAY1_HANDOFF.mdprojects/fractal_corridors/GATEWAY3_RESOURCE_MAP.mdprojects/fractal_corridors/DATA_MANIFEST.mdprojects/fractal_corridors/GITHUB_REPOS.mdprojects/fractal_corridors/EXTERNAL_LINKS.mdprojects/fractal_corridors/STORAGE.ymlprojects/fractal_corridors/WORKSPACE_NOTES.mdCHANGELOG.mdPROMPT_ACTION_LOG.md
- Treat
/workspace/projects/<slug>as a small control plane for each science project, not a bulk data directory. - Keep imported snapshots under
/workspace/imports/and route active work through project manifests. - Keep large local or remote-mounted data under
/external_storage/local/<project-slug>. - Use
PROJECT.yaml,DATA_MANIFEST.md,GITHUB_REPOS.md,EXTERNAL_LINKS.md,STORAGE.yml, andWORKSPACE_NOTES.mdas the standard project control files. - Instantiate gateway 3's first project folder as
fractal-corridors, linked to/workspace/imports/gateway1-2026-05-25. - Add matching project-routing manifests to the tracked
projects/fractal_corridorssnapshot so the GitHub repository preserves the handoff structure. - Add
RESOURCE_MAP.mdas the always-on agent orientation file for filesystem, GitHub, external storage, skill, and job decisions. - Mirror gateway-3-only handoff/resource notes into
projects/fractal_corridorsbecause liveinstances/runtime folders are intentionally ignored by git.
bash -n docker/seed-workspace/scripts/init-working-group.sh- Temporary workspace seed test confirmed
projects/README.md,projects/_template/PROJECT.yaml, andprojects/_template/STORAGE.ymlare created. - Temporary workspace seed test confirmed
RESOURCE_MAP.mdis created. git diff --check- Verified gateway 3 agents can see
/workspace/projects/fractal-corridorsand/external_storage/local/fractal-corridors. - Verified gateway 3 agents can see
/workspace/RESOURCE_MAP.md. - Verified gateway 3 file manager lists
/workspace/projects/fractal-corridors. - Scanned the gateway 3 fractal-corridors project folder and external shelf for obvious token patterns.
Add clear navigation from the full-page file manager and GitHub manager back to the matching OpenClaw main page so users do not have to rely on browser history.
cms/scienceclaw_cms.pydocker-compose.ymldocs/workspace-cms.mddocs/workspace-file-manager.mdscripts/smoke_test_github_manager.shscripts/smoke_test_workspace.shCHANGELOG.mdPROMPT_ACTION_LOG.md
- Put the navigation in the shared CMS page shell so Files, GitHub, CMS Home, browse, preview, edit, and result pages all receive the same header.
- Pass
OPENCLAW_GATEWAY_PORTinto the CMS service and allowSCIENCECLAW_GATEWAY_URLas an explicit override for non-local deployments.
python3 -m py_compile cms/scienceclaw_cms.pybash -n scripts/smoke_test_workspace.sh scripts/smoke_test_github_manager.shdocker compose config --quietscripts/smoke_test_workspace.shwith local port access enabled after sandbox port binding was blocked.scripts/smoke_test_github_manager.shwith local port access enabled after sandbox port binding was blocked.- Recreated gateway 3's CMS service with
OPENCLAW_GATEWAY_PORT=18791, copied in the updated CMS script, and restartedscienceclaw-project-three-workspace-cms-1. - Verified live gateway 3 Files and GitHub pages include
Back to OpenClawpointing tohttp://127.0.0.1:18791/. - Verified live gateway 3 CMS
/api/file/listand/api/github/statusstill return JSON.
Document how users authenticate GitHub access for gateway 3 and spawned ScienceClaw instances, then verify that OpenClaw updates can be tested without losing the branded Control UI, embedded Files sidebar, embedded GitHub Auth sidebar, or CMS API access.
docs/github-repository-manager.mddocs/instance-runbook.mddocs/quick-start.mddocs/security-and-credentials.mdCHANGELOG.mdPROMPT_ACTION_LOG.md
- Keep GitHub credentials outside
.envby default and use a mountedsecrets/github_tokenfile for repeatable local and spawned-instance launches. - Make GitHub Auth in the sidebar the preferred human path for configuring git credentials after token injection.
- Treat OpenClaw updates as per-instance experiments that require reapplying the ScienceClaw Control UI patch and verifying the CMS content security policy before returning the instance to project work.
docker exec scienceclaw-project-three-openclaw-local-run-96075a70e8ae openclaw update --dry-run --jsondocker exec scienceclaw-project-three-openclaw-local-run-96075a70e8ae openclaw update --yes --no-restart --timeout 600- Reapplied ScienceClaw Control UI branding assets to gateway 3 and restarted
scienceclaw-project-three-openclaw-local-run-96075a70e8ae. - Verified gateway 3 upgraded from OpenClaw
2026.5.18to2026.5.22. - Verified the served Control UI content security policy still includes
http://127.0.0.1:8092andhttp://localhost:8092. - Verified
scienceclaw-file-listandscienceclaw-repo-formremain present in the patched Control UI script. - Verified CMS
/api/file/list,/api/github/repos, and/api/github/statusreturn JSON after the update. - Verified
openclaw statusreports OpenClaw2026.5.22, 11 agents, and no pending package update. - Verified direct Verde smoke test with session
scienceclaw-update-smoke-20260525returned exactlyUPDATE_OK.
- The token file path must exist on the launch host or runner before the secrets overlay can mount it.
- Full MkDocs rendering was not validated in this environment because neither host Python nor the CMS container has
mkdocsinstalled. - The in-app browser connector did not expose an active browser pane for a visual screenshot check, so the live UI was validated through HTTP headers, patched asset checks, CMS API responses, and a direct agent smoke test.
Assess the repo/container state, then make the basics more robust: browser-visible file access, GitHub authentication without hand-maintained local .env credentials, and button-based repository actions instead of fragile slash approval commands.
.github/workflows/scienceclaw-runtime.ymlbranding/control-ui/scienceclaw-brand.cssbranding/control-ui/scienceclaw-brand.jscms/scienceclaw_cms.pydocker-compose.ymldocs/github-repository-manager.mddocs/instance-runbook.mddocs/oasis-template.mddocs/quick-start.mddocs/security-and-credentials.mddocs/workspace-file-manager.mdscripts/install-control-ui-branding.shscripts/smoke_test_github_manager.shscripts/start-instance.sh
- Keep Files and GitHub Auth as CMS-backed workspace tools, but expose compact live summaries directly inside the OpenClaw sidebar so the user does not have to leave chat.
- Treat the CMS GitHub manager as the preferred human-button path for clone, branch, commit, push, and PR actions.
- Add a CMS Configure git credentials button that reruns GitHub CLI credential setup without printing tokens.
- Make spawned instances apply the Docker secrets overlay when a GitHub token file is available.
- Add a manual GitHub Actions workflow for self-hosted runner launches that materializes GitHub Secrets only on the runner and smoke-tests the runtime.
bash -n scripts/start-instance.sh scripts/install-control-ui-branding.sh scripts/smoke_test_github_manager.sh docker/entrypoint.sh docker/service-entrypoint.shpython3 -m py_compile cms/scienceclaw_cms.pydocker compose config --quietSCIENCECLAW_GITHUB_TOKEN_FILE=/tmp/nonexistent docker compose --project-name scienceclaw-check -f docker-compose.yml -f docker-compose.secrets.yml config --quietgit diff --checknode --check branding/control-ui/scienceclaw-brand.jsscripts/smoke_test_github_manager.shwith local port access enabled after the sandbox blocked temporary server binding.- Reapplied updated CMS and Control UI branding assets into live gateway 3, verified the CMS GitHub status endpoint, and verified the sidebar opens the GitHub Auth embedded panel.
- The sidebar panels show compact file and GitHub summaries. The direct CMS URLs remain available for full-page workflows.
- GitHub-hosted Actions runners are ephemeral; durable gateways should use a self-hosted runner, Codespaces-like host, Kubernetes, or another long-running host.
Reassess gateway 3 after the update banner was hidden but browser chat still failed. The user asked for a robust container shape: branded OpenClaw, file-structure visibility for produced content, and GitHub repository read/write capability.
Dockerfiledocker-compose.ymldocker/service-entrypoint.shdocs/instance-runbook.mddocs/operations.md
- Pin the reusable image to OpenClaw
2026.5.18, the current known-good local browser-chat baseline. - Keep only the Gateway service responsible for OpenClaw startup, OpenClaw state, Slack registration, branding injection, agent registry, and sessions.
- Start JupyterLab without the OpenClaw Gateway entrypoint so it cannot mutate Gateway config or sessions.
- Start the CMS through a small service entrypoint that only loads GitHub secret files, mirrors
GITHUB_TOKEN/GH_TOKEN, configures GitHub CLI credential helpers, and marks workspace repositories as safe directories. - Preserve the file manager and GitHub repository manager as CMS features over the shared
/workspace, not as OpenClaw session writers.
bash -n docker/entrypoint.sh docker/service-entrypoint.sh scripts/start-instance.sh scripts/install-control-ui-branding.shdocker compose config --quietdocker compose build openclaw-local- Restarted gateway 3 with
OPENCLAW_STATE_DIR=/private/tmp/scienceclaw-project-three-openclaw ./scripts/start-instance.sh project-three 18791 8890 8092. - Verified rebuilt gateway 3 reports
OpenClaw 2026.5.18. - Verified gateway 3 has 11 agents with
openclaw agents list. - Verified direct agent smoke test returned
PINNED_OK. - Verified CMS file API returns the
/workspacelisting. - Verified CMS GitHub status endpoint is reachable and reports unauthenticated when no GitHub token is present.
- Archived the poisoned
agent:main:gateway3-fixedsession and moved the browser to a fresh dashboard session.
- GitHub repository operations still require a
GITHUB_TOKEN,GH_TOKEN, or interactivegh auth logininside the CMS service. - The update notice can still appear in CLI status because a newer upstream OpenClaw package exists; local ScienceClaw upgrades remain a pinned-image rebuild workflow.
- Browser text-entry automation was blocked by the in-app browser clipboard layer, so the browser path was validated by connection/session state plus direct OpenClaw smoke tests rather than an automated typed UI prompt.
- Follow-up details and next steps are captured in
docs/gateway-3-handoff.md.
Reinspect gateways 1, 2, and 3 after gateway 3 continued failing to reply. Gateway 1 and 2 were running the older image and OpenClaw 2026.5.18; gateway 3 was on the newer local image, also OpenClaw 2026.5.18, but direct agent smoke tests failed with session file changed while embedded prompt lock was released.
.env.exampleREADME.mddocker/entrypoint.shdocs/instance-runbook.mddocs/security-and-credentials.mdscripts/start-instance.sh
- Keep the AI-VERDE/OpenAI-compatible route on a minimal OpenClaw tool profile for the default ScienceClaw gateway path.
- Preserve automatic visible replies instead of the experimental
message_toolreply mode for the local working-group template. - Set
models.modetomergeduring bootstrap so provider additions do not replace working defaults. - Keep gateway 3 heartbeat disabled for now; the direct smoke failure was reproduced without relying on heartbeat activity, so heartbeat is not the only root cause.
- Keep per-instance OpenClaw runtime state on local non-synced storage (
/private/tmp/scienceclaw-<instance>-openclaw) while leaving the project workspace underinstances/<name>/workspace. - Treat GitHub Secrets as the scalable credential source, materialized into runner-local secret files and passed through provider
_FILEvariables.
- Compared gateway 1, 2, and 3 with
docker ps,openclaw --version,openclaw status, andopenclaw agents list. - Confirmed gateway 2 passed:
openclaw agent --agent main --session-id gateway2-fresh-codex-smoke-20260522a --model verde/js2/gpt-oss-120b --message "Reply with exactly: OK" --timeout 120 --json. - Confirmed gateway 3 failed before repair on fresh explicit sessions, while the session JSONL still contained the assistant reply.
- Patched gateway 3 runtime config to match gateway 2's
models.mode, visible reply mode, and minimal Verde tool profile. - Confirmed gateway 3 passed after repair:
openclaw agent --agent main --session-id gateway3-fresh-codex-smoke-20260522c --model verde/js2/gpt-oss-120b --message "Reply with exactly: OK" --timeout 120 --json. - Restarted gateway 3 with OpenClaw state mounted from
/private/tmp/scienceclaw-project-three-openclaw. - Confirmed gateway 3 browser chat replied with
G3_UI_OK.
- Gateway 3's currently running container was repaired through its mounted runtime config. Rebuild/recreate from the updated image is still needed to prove the reusable entrypoint fix from a clean start.
- Heartbeats remain disabled on gateway 3 until a safe heartbeat session strategy is designed and tested.
- GitHub Secrets are documented as the intended scalable source, but a production deployment workflow still needs a target runtime choice such as self-hosted runner, Codespaces, Kubernetes, or another host.
Document the repeated gateway setup problem observed while spawning additional ScienceClaw instances: missing agent dropdowns, one-agent OpenClaw state, stale or locked agent:main:main sessions, confusing update banners, and uncertainty about whether GitHub or the Gateway caused the failure.
docs/instance-runbook.mddocs/use/launch-locally.mddocs/troubleshooting.mddocs/operations.mdscripts/start-instance.shmkdocs.yml
- Treat each spawned ScienceClaw instance as a separate appliance with its own Gateway, OpenClaw state, workspace, data root, external storage, JupyterLab port, and CMS port.
- Validate a new instance before project work by checking OpenClaw version, status, agent registry, sessions, and a dedicated smoke-test session.
- Use unique smoke-test session ids. Do not run CLI smoke tests against the browser's active
agent:main:maintranscript. - If a session-lock error appears, archive the failed transcript instead of deleting the whole OpenClaw state directory.
- If an instance only has
main, restore the agent registry without copying another instance's token, port, allowed origins, sessions, or project workspace. - After a live
openclaw update, reapply the ScienceClaw Control UI branding layer because upstream package updates replace the patched Control UI asset directory.
- Documentation and script edits only in this action.
- Earlier operational diagnosis used
openclaw status,openclaw agents list,openclaw sessions --agent main --json,openclaw tasks list --json,docker logs, and directopenclaw agentsmoke tests.
- The root OpenClaw session-lock behavior is upstream/runtime behavior, not fully controlled by this repository.
- The runbook documents recovery and prevention. It does not add a fully automated repair command.
- OpenClaw update banners should be interpreted cautiously; version changes must be validated per instance, and ScienceClaw branding may need to be reapplied after live updates.
- Decide whether
scripts/start-instance.shshould eventually run the validation checks automatically and fail fast if the 11-agent registry is missing. - Consider adding a dedicated
scripts/validate-instance.shhelper once the OpenClaw CLI behavior stabilizes.
Stabilize the feature-rich OpenClaw container prototype into a documented, reusable OASIS ScienceClaw working-group appliance. Emphasis: onboarding clarity, architecture communication, one end-to-end workflow, smoke tests, operational commands, reproducibility, and human trust.
README.mdMakefilescripts/demo_environmental_workflow.pyscripts/smoke_test.shdocs/quick-start.mddocs/architecture.mddocs/storage-model.mddocs/agent-team.mddocs/cms-output-review.mddocs/slack-integration.mddocs/kubernetes-workers.mddocs/security-and-credentials.mddocs/troubleshooting.mdmkdocs.ymlCHANGELOG.md
- Keep the README as a concise front door and move long-form explanation into MkDocs pages.
- Establish
make demoandmake smoke-testas the stable operational proof path. - Use a deterministic synthetic environmental workflow rather than network data or API keys.
- Keep Kubernetes and Slack documented as optional or experimental surfaces.
- Preserve the PI Liaison, human-review, CMS/output review, and three-zone storage models.
bash -non new shell scripts.make help.make demo.make smoke-test.scripts/test-scienceclaw-layout.sh.make doctor.make checkpoint.- Local markdown link checks.
- Host Python may not include the full geospatial stack;
make smoke-testreports that as a warning outside the container while still validating the deterministic demo workflow. - MkDocs build requires MkDocs dependencies to be installed in the current environment or run inside an environment with
requirements.txt. - The demo workflow is operational proof only and should not be interpreted as a scientific model.
- CI should eventually run
make smoke-testinside the built container image to validate the full geospatial stack. - Additional screenshots and polished diagrams can be added after the documentation structure settles.
Add a clean, integrated workspace file manager so ScienceClaw users can browse the container, inspect /workspace, preview outputs, edit safe text files, and understand what agents created without switching to a separate notebook interface.
cms/scienceclaw_cms.pyDockerfiledocker/entrypoint.shbranding/control-ui/scienceclaw-brand.jsbranding/control-ui/scienceclaw-brand.cssscripts/install-control-ui-branding.shscripts/seed_file_manager_demo.pyscripts/smoke_test_workspace.shscripts/smoke_test.shMakefileREADME.mddocs/quick-start.mddocs/architecture.mddocs/workspace-file-manager.mddocs/workspace-cms.mdmkdocs.yml
- Extend the existing lightweight CMS service instead of introducing a second file-management framework.
- Use
/as the visual browsing root while failing closed around sensitive files and directories. - Restrict browser write operations to safe roots such as
/workspace,/data/outputs, and/tmp. - Add an OpenClaw sidebar Files link that opens the file manager for the matching ScienceClaw instance.
- Seed a tiny demo workspace at startup unless
SCIENCECLAW_SEED_FILE_MANAGER_DEMO=0is set. - Keep JupyterLab as the advanced analytics interface; the file manager is for inspection, output review, and small edits.
python3 -m py_compile cms/scienceclaw_cms.py scripts/seed_file_manager_demo.py scripts/demo_environmental_workflow.pybash -n scripts/smoke_test_workspace.shbash -n scripts/smoke_test.shscripts/smoke_test_workspace.shmake smoke-testgit diff --check
- The Files link opens the CMS file manager route on the CMS port rather than reverse-proxying the route through the OpenClaw gateway.
- The Markdown renderer is intentionally lightweight and designed for inspection, not full static-site rendering parity.
- Browser-side drag-and-drop upload is not yet implemented; standard file upload is supported.
- Add a reverse proxy route if OpenClaw exposes a stable extension point for embedding
/filesunder the gateway origin. - Add optional richer previews for Parquet, GeoJSON, rasters, and notebooks after the core file workflow is stable.
Add a dedicated GitHub manager so ScienceClaw/OpenClaw users can authorize selected external project repositories, clone them into the workspace, inspect branch status, and follow a branch-and-pull-request contribution workflow without granting agents broad account-wide GitHub access.
.env.exampleMakefileREADME.mdbranding/control-ui/scienceclaw-brand.cssbranding/control-ui/scienceclaw-brand.jscms/scienceclaw_cms.pydocs/architecture.mddocs/github-repository-manager.mddocs/quick-start.mddocs/workspace-cms.mdmkdocs.ymlscripts/smoke_test.shscripts/smoke_test_github_manager.sh
The first implementation supports GitHub CLI authentication with gh auth login and gh auth setup-git, plus optional fine-grained GITHUB_TOKEN injection through local secrets. GitHub App authentication is documented as the preferred long-term approach but is not required for this first version.
- Store authorized repositories in
/workspace/.openclaw-github/authorized-repos.yaml. - Clone repositories only under
/workspace/repos/. - Implement
read,contribute, and visible-but-disabledadminpermission tiers. - Use argument-array
gitandghinvocations for narrow operations. - Block direct writes and pushes on
mainandmaster. - Add a branded GitHub link beside Files in the OpenClaw sidebar.
python3 -m py_compile cms/scienceclaw_cms.py scripts/seed_file_manager_demo.py scripts/demo_environmental_workflow.pybash -n scripts/smoke_test_github_manager.sh scripts/smoke_test_workspace.sh scripts/smoke_test.sh docker/entrypoint.shscripts/smoke_test_github_manager.shmake smoke-testgit diff --check
- The GitHub manager opens on the CMS port rather than being reverse-proxied under the OpenClaw gateway origin.
- Authenticated remote operations require valid GitHub credentials and are not exercised by unauthenticated smoke tests.
- GitHub App authentication, automatic issue management, review UI, and merge automation are not implemented.
- Add optional GitHub App installation support for selected repositories.
- Add richer PR status display once authenticated integration tests are available.
- Add an optional prompt/action-log append helper for connected repositories that already use
PROMPT_ACTION_LOG.md.
Make the desired deployment experience explicit: a user can pull or build the ScienceClaw container, provide credentials through local secrets, and start a working group whose agents and GitHub manager can operate on selected organization repositories.
.env.exampleREADME.mddocker-compose.secrets.ymldocker/entrypoint.shdocs/github-repository-manager.mddocs/quick-start.mddocs/security-and-credentials.md
- Support
_FILEsecret variables for Slack, OpenAI, AI-VERDE, GitHub, and Tavily credentials. - Mirror
GITHUB_TOKENandGH_TOKENat startup so GitHub CLI and standard tooling can use the same secret. - Configure GitHub CLI/git credential helpers during container startup when a GitHub token is present.
- Keep repository access bounded by the GitHub manager allowlist and
/workspace/repos/clone root.
bash -n docker/entrypoint.shdocker compose -f docker-compose.yml -f docker-compose.secrets.yml config
- The current local containers must be rebuilt or recreated to pick up entrypoint changes.
- Fine-grained GitHub tokens still need the correct repository scopes from GitHub; ScienceClaw cannot grant missing organization permissions.
- GitHub App installation remains the preferred long-term organization-scale auth model.
Recover the third local ScienceClaw gateway after repeated OpenClaw browser-chat failures with session file changed while embedded prompt lock was released.
docs/instance-runbook.md
- Treat OpenClaw
2026.5.18as the current known-good local baseline because gateway 2 remained stable on that version. - Treat OpenClaw
2026.5.20as unvalidated for the branded multi-instance template after gateway 3 repeatedly failed browser sessions on that version. - Preserve runtime work by archiving failed session transcripts instead of deleting the full OpenClaw state directory.
- Disable the default PI Liaison heartbeat for gateway 3 by setting the
mainagent heartbeat interval to an empty string; the 30-minute default heartbeat was repeatedly touchingagent:main:mainand recreating the lock failure.
docker exec scienceclaw-project-three-openclaw-local-run-add2042ee2e3 openclaw --versiondocker exec scienceclaw-project-three-openclaw-local-run-add2042ee2e3 openclaw statusdocker exec scienceclaw-project-three-openclaw-local-run-add2042ee2e3 openclaw agent --agent main --session-id gateway3-518-smoke-... --model verde/js2/gpt-oss-120b --message "Reply with exactly: OK" --timeout 120 --jsondocker exec scienceclaw-project-three-openclaw-local-run-add2042ee2e3 openclaw agent --agent main --session-id gateway3-final-smoke-... --model verde/js2/gpt-oss-120b --message "Reply with exactly: OK" --timeout 120 --json
- The browser UI still needs a fresh session after recovery; old tabs can hold stale session state.
- The update banner will still appear because
2026.5.20exists upstream, but updating the active gateway should wait until a browser-session smoke test validates the newer release.
Diagnose whether broken browser slash commands require a gateway 3 container reset.
docs/gateway-3-handoff.mdPROMPT_ACTION_LOG.md
- A full reset is not the right next step.
openclaw healthreports the Gateway event loop as OK.- Gateway logs show successful
commands.listresponses from the Control UI, so the slash-command catalog is loading. openclaw approvals getis the supported approval inspection command in OpenClaw2026.5.18;openclaw approvals list --jsonis not supported.- The approval snapshot shows no visible pending approval queue, so the browser message asking for bare
/approveis likely stale or malformed UX. - Browser chat failures are still primarily
verde/js2/gpt-oss-120breturning reasoning-only/incomplete terminal responses.
- Restart the gateway only if the browser reconnect/device state appears wedged; do not wipe
/workspaceor OpenClaw state. - Move PI Liaison browser chat to a higher-reliability model route, likely Codex/OAuth after re-authentication inside the live gateway container.
- Use the CMS GitHub manager for clone/read/write/PR workflows instead of depending on chat-generated shell approval prompts.
Compare gateway 3 against working gateways 1 and 2, then make gateway 3 use the stable Verde-only profile.
.env.exampledocker/entrypoint.shdocs/instance-runbook.mddocs/gateway-3-handoff.mdPROMPT_ACTION_LOG.md
- Gateway 1 is not a clean Verde-only reference because its Gateway process starts with
codex/gpt-5.5, even though its working-group agents use Verde. - Gateway 2 is the better Verde-only reference: default model
verde/js2/gpt-oss-120b, no OAuth profiles,groupChat.visibleReplies = message_tool, notools.byProviderVerde deny block, and heartbeat active at 30 minutes. - Gateway 3 had extra generated Verde tool restrictions and
automaticvisible replies.
- Changed the container entrypoint default visible-replies mode to
message_tool. - Made the generated Verde minimal tool-deny profile opt-in through
OPENCLAW_VERDE_MINIMAL_TOOLS=1instead of default. - Updated
.env.exampleto setOPENCLAW_VISIBLE_REPLIES_MODE=message_toolandOPENCLAW_VERDE_MINIMAL_TOOLS=0. - Applied the same profile to live gateway 3, restored the default 30-minute heartbeat, copied the corrected entrypoint into the live container, and restarted only the gateway container.
docker exec scienceclaw-project-two-openclaw-local-run-a402e0d22742 openclaw healthdocker exec scienceclaw-project-two-openclaw-local-run-a402e0d22742 openclaw models statusdocker exec scienceclaw-project-three-openclaw-local-run-96075a70e8ae openclaw healthdocker exec scienceclaw-project-three-openclaw-local-run-96075a70e8ae openclaw agent --agent main --session-id gateway3-verde-message-tool-20260522 --model verde/js2/gpt-oss-120b --message "Reply with exactly: MESSAGE_TOOL_OK" --timeout 120 --jsondocker exec scienceclaw-project-three-openclaw-local-run-96075a70e8ae openclaw agent --agent main --session-id gateway3-verde-persistent-20260522 --model verde/js2/gpt-oss-120b --message "Reply with exactly: VERDE_PERSISTENT_OK" --timeout 120 --json
- Gateway 3 health returned to OK after the final smoke test settled.
- Final payload was
VERDE_PERSISTENT_OK.
Make the GitHub Actions runtime launch work with the repository secrets the user added through the GitHub UI.
- Updated
.github/workflows/scienceclaw-runtime.ymlso the manual runtime workflow accepts local.env-style aliases for Verde and Slack secrets:VERDE_LLM_API_KEYVERDE_LLM_BASE_URLVERDE_LLM_DEFAULT_MODELSLACK_BOT_TOKENSLACK_APP_TOKENSLACK_DEFAULT_CHANNEL
- Kept
SCIENCECLAW_...names as the documented preferred convention. - Documented that agent-visible repository push/pull still requires
SCIENCECLAW_GITHUB_TOKEN.
Fix the manual GitHub Actions runtime workflow failure where scripts/start-instance.sh tried to create /private/tmp on a Linux runner.
- Updated
scripts/start-instance.shto choose the OpenClaw runtime-state parent directory by platform:/private/tmpwhen available and writable, mainly macOS local runs$RUNNER_TEMPon GitHub Actions runners/tmpas the generic Linux fallback
- Updated runtime-state documentation in the security guide and instance runbook.
Document the desired template/fork launch path where a renamed repository can launch ScienceClaw with credentials and let agents push/pull against that same repository.
- Added
docs/use/template-github-launch.md. - Added the new guide to MkDocs navigation under Launch and Daily Use.
- Updated Quick Start, Security and Credentials, and GitHub Repository Manager docs to explain the launch-repository workflow.
- Updated
.github/workflows/scienceclaw-runtime.ymlto optionally authorize and clone the launch repository into/workspace/repos/<repo>before starting the container.
Fix the remaining /approve problem by making approval flows prefer native UI/CMS buttons instead of asking the user to type command codes.
.env.exampledocker/entrypoint.shdocker/seed-workspace/AGENTS.mddocker/seed-workspace/HUMAN_REVIEW.mdworkspace/AGENTS.mddocs/gateway-3-handoff.mdPROMPT_ACTION_LOG.md
- The browser device already has
operator.approvalsscope. openclaw gateway call exec.approval.list --json --params '{}'works and returns[]when nothing is pending.- The previous effective exec policy was
security=full,ask=off, so normal exec actions did not create native pending approval requests or UI approval buttons. - Bare
/approveonly makes sense for a specific pending approval id and decision; agents should not ask the user to type it.
- Applied
openclaw exec-policy preset cautious --jsonto live gateway 3. - Added
OPENCLAW_EXEC_POLICY_PRESET=cautiousto.env.example. - Updated the gateway entrypoint to apply
OPENCLAW_EXEC_POLICY_PRESETat startup unless set tonone. - Updated workspace instructions to tell agents to use the OpenClaw approval UI or ScienceClaw CMS/GitHub manager buttons.
- Copied the updated
AGENTS.md,HUMAN_REVIEW.md, and entrypoint into the live gateway 3 container.
openclaw exec-policy showreportssecurity=allowlist,ask=on-miss, and hostaskFallback=deny.- Native approval queue RPC is reachable.
bash -n docker/entrypoint.sh docker/service-entrypoint.sh scripts/start-instance.sh scripts/install-control-ui-branding.shpassed.