Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
| Comment: | Terminate works on any workspace, whatever state its making left it in
Purpose: stone, 2026-10-01: the failed Add left "cruft", and the workspace list "doesn't provide a Delete button". Then: "a workspace clean-up is a workspace clean-up, be it made by an errant flow or not". The workspace page refused a directory with no binding, and so did terminate. Shape: - Terminate is one flow for every workspace. Each step applies to what the workspace has: - refused while a process runs in it; - synced when it is bound; - refused while its clone, if it has one, holds artifacts the repository lacks; - its end noted on its record, if it has one; - then removed. - The workspace page renders for any workspace directory. It shows its definition and a job's Run form when it has a record, its session or the start form, and always Terminate. Origin: opus, on the maintainer's report. Intent: whatever made a workspace, it can be cleaned up the same way. Expression: src/ocx/cgi.cr, src/ocx/cgi_workspaces.cr. Demonstrates: spec/ocx/console_workspaces_spec.cr, crystal run ci.cr: - a workspace directory with no binding is listed, its page offers Terminate, and Terminate removes it; - a second Terminate says there is none; - bound workspaces terminate as before; - CI green, 234 examples. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UrDxZLxg3rJ9AQNcwDvo3n |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | ocx | audited | ci |
| Files: | files | file ages | folders |
| SHA3-256: |
6912141fbe6989c14ef086102161bdcd |
| User & Date: | opus 2026-10-01 14:36:21.478 |
|
2026-10-01
| ||
| 14:46 |
A workspace's fossil runs with the workspace as HOME, stated, not inherited
Purpose: stone, 2026-10-01: Add the workspace failed again, "fossil clone failed: cannot locate home directory". Fossil's server gives its CGI no HOME. Dropping the CGI variables (666c151f57) still left fossil depending on what it inherited; the maintainer: "environment variable dependencies rear their ugly head again ... we should manage them better". Shape: - Workspace.fossil now requires `home`. It always runs fossil in a clean environment (HOME and PATH only) whose HOME is the workspace itself, as its sandbox gives its sessions. - Workspace.create (clone, remote, settings), the remote and peer setup, and Workspace#sync all state it. - So do the command runner's and the job's update, info and tag. - WorkTree.fossil runs with the tree's workspace (its parent) as HOME. - A clone over HTTP names its admin user (-A LOGIN), as a file clone already did: a clean environment has no $USER to fall back on. - The same fossil commands now run the same way from the console, the daemon or a terminal. Origin: opus, on the maintainer's report. Intent: no fossil call that touches a workspace depends on its caller's environment. Expression: src/ocx/workspace.cr, src/ocx/worktree.cr, src/ocx/command_runner.cr, src/ocx/job.cr. Demonstrates: spec/ocx/workspace_spec.cr, crystal run ci.cr: - a workspace is created from a process with a CGI request's variables and no HOME, XDG_CONFIG_HOME or FOSSIL_HOME; - before this change the spec failed with the maintainer's error, first at the clone, then at the tree's `fossil open`; - CI green, 234 examples. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UrDxZLxg3rJ9AQNcwDvo3n check-in: bbbd12aa26 user: opus tags: ocx, audited, ci | |
| 14:36 |
Terminate works on any workspace, whatever state its making left it in
Purpose: stone, 2026-10-01: the failed Add left "cruft", and the workspace list "doesn't provide a Delete button". Then: "a workspace clean-up is a workspace clean-up, be it made by an errant flow or not". The workspace page refused a directory with no binding, and so did terminate. Shape: - Terminate is one flow for every workspace. Each step applies to what the workspace has: - refused while a process runs in it; - synced when it is bound; - refused while its clone, if it has one, holds artifacts the repository lacks; - its end noted on its record, if it has one; - then removed. - The workspace page renders for any workspace directory. It shows its definition and a job's Run form when it has a record, its session or the start form, and always Terminate. Origin: opus, on the maintainer's report. Intent: whatever made a workspace, it can be cleaned up the same way. Expression: src/ocx/cgi.cr, src/ocx/cgi_workspaces.cr. Demonstrates: spec/ocx/console_workspaces_spec.cr, crystal run ci.cr: - a workspace directory with no binding is listed, its page offers Terminate, and Terminate removes it; - a second Terminate says there is none; - bound workspaces terminate as before; - CI green, 234 examples. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UrDxZLxg3rJ9AQNcwDvo3n check-in: 6912141fbe user: opus tags: ocx, audited, ci | |
| 14:23 |
No fossil started by OCX inherits a CGI request's variables
Purpose: stone, 2026-10-01: Add the workspace failed with "addworkspace: fossil clone failed: no such file: clone". The console runs Workspace.create in its own process. Fossil, finding GATEWAY_INTERFACE, answered `fossil clone` as a CGI request for a file named "clone". Provisioning had the same failure once and was fixed at its own calls (home:); every other path still inherited the request. Shape: Fossil.run, the one place fossil is started, unsets the CGI variables (Fossil::CGI_ENV: GATEWAY_INTERFACE, REQUEST_METHOD, QUERY_STRING, PATH_INFO, SCRIPT_NAME, REQUEST_URI, CONTENT_LENGTH, CONTENT_TYPE) whenever it keeps this process's environment. With `home` it already started from a clean one. Origin: opus, on the maintainer's report. Intent: fossil always runs as a command, whoever starts it. Expression: src/ocx/fossil.cr. Demonstrates: spec/ocx/workspace_spec.cr, crystal run ci.cr: - a workspace is created from a process carrying a CGI request's variables; - without the fix the spec fails with the maintainer's exact error, "fossil clone failed: no such file: clone"; - CI green, 234 examples. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UrDxZLxg3rJ9AQNcwDvo3n check-in: 666c151f57 user: opus tags: ocx, audited, ci | |