Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
| Comment: | 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 |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | ocx | audited | ci |
| Files: | files | file ages | folders |
| SHA3-256: |
bbbd12aa26d8fe5d5c7edcaec7cfcbd3 |
| User & Date: | opus 2026-10-01 14:46:23.572 |
|
2026-10-01
| ||
| 15:07 |
A job request held during any run is run when it ends; the job's log says what it did
Purpose: stone, 2026-10-01: the first bq2 build "failed, falsely reported success, and provided a log that isn't very useful". The session the console started (a Start, which completes with nothing to do) ran while the request arrived. The daemon held the request "for the run going on". At that run's end it relaunched only a run that a request had started, so the request was dropped, though the Run form had said its result would be the reply. Shape: - At a run's end, a request held during it starts the job again, whatever started that run. - The job's log now says which request it runs, by whom, at which ref, and where the output goes, then the result's first line. - A session that completes says "completed: nothing waits on it". Origin: opus, on the maintainer's report. Intent: a request is never silently dropped, and the log shows what ran. Expression: src/ocx/daemon.cr, src/ocx/job.cr, src/ocx/serve.cr. Demonstrates: spec/ocx/job_spec.cr, crystal run ci.cr: - a request held during a run the console started (Server#launch) runs when that run ends; without the change it is dropped and the spec times out; - the job's log lines print; - 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: f03c7c279b user: opus tags: ocx, audited, ci | |
| 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 | |