📝 Specify retained workflow Workspaces - #358

Merged
taras merged 2 commits into
mainfrom
agent/issue-218-workflow-spec
Aug 7, 2026
Merged

📝 Specify retained workflow Workspaces#358
taras merged 2 commits into
mainfrom
agent/issue-218-workflow-spec

Conversation

@taras

@tarastaras commented Aug 7, 2026

Copy link
Copy Markdown
Owner

Why

The Workspace design evolved across #218, #346 and three implementation spikes, but its accepted decisions existed only in issue comments and a local interview transcript. The old #218 contract still assumed an explicit Cloudflare Workspace whose persistence was separate from the journal, which no longer matched the selected topology or the intended Agent authority model.

What changes

Before:

The architecture stopped at workflow-run identity and base pinning. Replay restoration, lifecycle commands, repository composition, local transaction boundaries, history forks, Agent authority and the Deno/DOFS topology were unresolved or described inconsistently across issues.

After:

The architecture defines the retained implicit Workspace and its invariants. A new specification records the observable xmd workflow contract, from the first command and multi-repository examples through replay, failure, history and topology.

How it works

immutable workflow definition
→ WorkflowRun + implicit Workspace
→ one expansion / one effect / one local transaction
→ filtered journal result + versioned Workspace root
→ replay, resume or explicit history fork

The local host owns SQLite in Deno and uses Cloudflare DOFS behind contextual APIs. Workspace-local filesystem, Git and metadata effects commit their mutation and journal result atomically. External Agent, Push and PullRequest effects reconcile stable identities instead. Agents receive read-only materializations and propose constrained XMD for the durable evaluator to execute.

Review guide

Start with:architecture.md, from “Workflow Workspace” through “Local Workspace topology”

Then review:

  1. specs/workflow-workspace-spec.md §§1–4 for command, identity and lifecycle behavior
  2. §§5–8 for Repository, Worktree, Git and read-only Agent composition
  3. §§9–12 for replay, transaction, fork and retention contracts
  4. §§13–14 for the evidence-backed local topology and implementation inventory

Look carefully at:

  • the distinction between the workflow definition repository and Repositories created inside the Workspace;
  • the one-expansion/one-effect/one-transaction boundary;
  • the rule that ephemeral replay rebuilds context but never owns durable state;
  • external-effect ambiguity and history-fork limits; and
  • the mandatory read-only Agent ceiling and generated-XMD allowlist.

What must stay true

How to verify it

  • git diff --check verifies that both Markdown changes are free of whitespace errors.
  • Read the first workflow, multi-repository Agent example, replay table and transaction pseudocode as one path; they must describe the same component and authority behavior.
  • No source or test files change, so the runtime verification suite is not applicable to this documentation-only design PR.

Scope

Included

  • terminology for Workspace, ephemeral operations, effect transactions, external effects, checkpoints and history forks;
  • foreground workflow lifecycle and inspection commands;
  • implicit Workspace, Repository, Worktree, Git and Agent composition contracts;
  • replay, restoration, local atomicity, external reconciliation and fork semantics;
  • Deno-local SQLite/DOFS topology and the initial Worker Shell boundary; and
  • updated construct inventory.

Intentionally unchanged

  • runtime implementation of every newly specified construct;
  • the public name and final schema of the generated-XMD evaluator (<Expand> is a placeholder);
  • Worker JavaScript, native process execution, writable FUSE and bundled workerd in the initial local host;
  • a public remote-host selector; and
  • the existing journal security-filtering implementation.

New abstractions

  • The Workspace and effect-transaction terms name concrete boundaries consumed by filesystem, Git, lifecycle and Agent implementations.
  • Each new abstraction has multiple concrete uses or a clear justification.
  • No speculative functionality is included.

Risks and limitations

Closes#346. Defines the implementation contract for #218 and updates the path to #181.

Scope confirmation

  • Every changed file supports the purpose described above.
  • Unrelated cleanup and formatting changes are excluded.
  • Generated or mechanical changes are clearly identified.
  • The description matches the final diff and test results.

@github-actions

github-actionsBot commented Aug 7, 2026

Copy link
Copy Markdown

PR #358: 📝 Specify retained workflow Workspaces

2 files, +955 / -9

Scope

🔴 PR has 964 lines changed. Split into focused PRs.

🟡 964 lines changed. PRs under 400 receive more thorough review.

Structural

✅ No structural bloat detected.

Slop

✅ Slop indicators look low.

Static Analysis

✅ Oxlint found no issues.

Correctness

No extraneous code patterns detected.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Define the local Workspace host topology

1 participant

@taras
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all \u003cpre\u003e\u003ccode\u003e blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks"); } } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); } })(); (function(){ try { var __m = "github.com"; var __re = new RegExp('^' + "github\\.com" + '
Skip to content

📝 Specify retained workflow Workspaces - #358

Merged
taras merged 2 commits into
mainfrom
agent/issue-218-workflow-spec
Aug 7, 2026
Merged

📝 Specify retained workflow Workspaces#358
taras merged 2 commits into
mainfrom
agent/issue-218-workflow-spec

Conversation

@taras

@tarastaras commented Aug 7, 2026

Copy link
Copy Markdown
Owner

Why

The Workspace design evolved across #218, #346 and three implementation spikes, but its accepted decisions existed only in issue comments and a local interview transcript. The old #218 contract still assumed an explicit Cloudflare Workspace whose persistence was separate from the journal, which no longer matched the selected topology or the intended Agent authority model.

What changes

Before:

The architecture stopped at workflow-run identity and base pinning. Replay restoration, lifecycle commands, repository composition, local transaction boundaries, history forks, Agent authority and the Deno/DOFS topology were unresolved or described inconsistently across issues.

After:

The architecture defines the retained implicit Workspace and its invariants. A new specification records the observable xmd workflow contract, from the first command and multi-repository examples through replay, failure, history and topology.

How it works

immutable workflow definition
→ WorkflowRun + implicit Workspace
→ one expansion / one effect / one local transaction
→ filtered journal result + versioned Workspace root
→ replay, resume or explicit history fork

The local host owns SQLite in Deno and uses Cloudflare DOFS behind contextual APIs. Workspace-local filesystem, Git and metadata effects commit their mutation and journal result atomically. External Agent, Push and PullRequest effects reconcile stable identities instead. Agents receive read-only materializations and propose constrained XMD for the durable evaluator to execute.

Review guide

Start with:architecture.md, from “Workflow Workspace” through “Local Workspace topology”

Then review:

  1. specs/workflow-workspace-spec.md §§1–4 for command, identity and lifecycle behavior
  2. §§5–8 for Repository, Worktree, Git and read-only Agent composition
  3. §§9–12 for replay, transaction, fork and retention contracts
  4. §§13–14 for the evidence-backed local topology and implementation inventory

Look carefully at:

  • the distinction between the workflow definition repository and Repositories created inside the Workspace;
  • the one-expansion/one-effect/one-transaction boundary;
  • the rule that ephemeral replay rebuilds context but never owns durable state;
  • external-effect ambiguity and history-fork limits; and
  • the mandatory read-only Agent ceiling and generated-XMD allowlist.

What must stay true

How to verify it

  • git diff --check verifies that both Markdown changes are free of whitespace errors.
  • Read the first workflow, multi-repository Agent example, replay table and transaction pseudocode as one path; they must describe the same component and authority behavior.
  • No source or test files change, so the runtime verification suite is not applicable to this documentation-only design PR.

Scope

Included

  • terminology for Workspace, ephemeral operations, effect transactions, external effects, checkpoints and history forks;
  • foreground workflow lifecycle and inspection commands;
  • implicit Workspace, Repository, Worktree, Git and Agent composition contracts;
  • replay, restoration, local atomicity, external reconciliation and fork semantics;
  • Deno-local SQLite/DOFS topology and the initial Worker Shell boundary; and
  • updated construct inventory.

Intentionally unchanged

  • runtime implementation of every newly specified construct;
  • the public name and final schema of the generated-XMD evaluator (<Expand> is a placeholder);
  • Worker JavaScript, native process execution, writable FUSE and bundled workerd in the initial local host;
  • a public remote-host selector; and
  • the existing journal security-filtering implementation.

New abstractions

  • The Workspace and effect-transaction terms name concrete boundaries consumed by filesystem, Git, lifecycle and Agent implementations.
  • Each new abstraction has multiple concrete uses or a clear justification.
  • No speculative functionality is included.

Risks and limitations

Closes#346. Defines the implementation contract for #218 and updates the path to #181.

Scope confirmation

  • Every changed file supports the purpose described above.
  • Unrelated cleanup and formatting changes are excluded.
  • Generated or mechanical changes are clearly identified.
  • The description matches the final diff and test results.

@github-actions

github-actionsBot commented Aug 7, 2026

Copy link
Copy Markdown

PR #358: 📝 Specify retained workflow Workspaces

2 files, +955 / -9

Scope

🔴 PR has 964 lines changed. Split into focused PRs.

🟡 964 lines changed. PRs under 400 receive more thorough review.

Structural

✅ No structural bloat detected.

Slop

✅ Slop indicators look low.

Static Analysis

✅ Oxlint found no issues.

Correctness

No extraneous code patterns detected.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Define the local Workspace host topology

1 participant

@taras
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

📝 Specify retained workflow Workspaces - #358

Merged
taras merged 2 commits into
mainfrom
agent/issue-218-workflow-spec
Aug 7, 2026
Merged

📝 Specify retained workflow Workspaces#358
taras merged 2 commits into
mainfrom
agent/issue-218-workflow-spec

Conversation

@taras

@tarastaras commented Aug 7, 2026

Copy link
Copy Markdown
Owner

Why

The Workspace design evolved across #218, #346 and three implementation spikes, but its accepted decisions existed only in issue comments and a local interview transcript. The old #218 contract still assumed an explicit Cloudflare Workspace whose persistence was separate from the journal, which no longer matched the selected topology or the intended Agent authority model.

What changes

Before:

The architecture stopped at workflow-run identity and base pinning. Replay restoration, lifecycle commands, repository composition, local transaction boundaries, history forks, Agent authority and the Deno/DOFS topology were unresolved or described inconsistently across issues.

After:

The architecture defines the retained implicit Workspace and its invariants. A new specification records the observable xmd workflow contract, from the first command and multi-repository examples through replay, failure, history and topology.

How it works

immutable workflow definition
→ WorkflowRun + implicit Workspace
→ one expansion / one effect / one local transaction
→ filtered journal result + versioned Workspace root
→ replay, resume or explicit history fork

The local host owns SQLite in Deno and uses Cloudflare DOFS behind contextual APIs. Workspace-local filesystem, Git and metadata effects commit their mutation and journal result atomically. External Agent, Push and PullRequest effects reconcile stable identities instead. Agents receive read-only materializations and propose constrained XMD for the durable evaluator to execute.

Review guide

Start with:architecture.md, from “Workflow Workspace” through “Local Workspace topology”

Then review:

  1. specs/workflow-workspace-spec.md §§1–4 for command, identity and lifecycle behavior
  2. §§5–8 for Repository, Worktree, Git and read-only Agent composition
  3. §§9–12 for replay, transaction, fork and retention contracts
  4. §§13–14 for the evidence-backed local topology and implementation inventory

Look carefully at:

  • the distinction between the workflow definition repository and Repositories created inside the Workspace;
  • the one-expansion/one-effect/one-transaction boundary;
  • the rule that ephemeral replay rebuilds context but never owns durable state;
  • external-effect ambiguity and history-fork limits; and
  • the mandatory read-only Agent ceiling and generated-XMD allowlist.

What must stay true

How to verify it

  • git diff --check verifies that both Markdown changes are free of whitespace errors.
  • Read the first workflow, multi-repository Agent example, replay table and transaction pseudocode as one path; they must describe the same component and authority behavior.
  • No source or test files change, so the runtime verification suite is not applicable to this documentation-only design PR.

Scope

Included

  • terminology for Workspace, ephemeral operations, effect transactions, external effects, checkpoints and history forks;
  • foreground workflow lifecycle and inspection commands;
  • implicit Workspace, Repository, Worktree, Git and Agent composition contracts;
  • replay, restoration, local atomicity, external reconciliation and fork semantics;
  • Deno-local SQLite/DOFS topology and the initial Worker Shell boundary; and
  • updated construct inventory.

Intentionally unchanged

  • runtime implementation of every newly specified construct;
  • the public name and final schema of the generated-XMD evaluator (<Expand> is a placeholder);
  • Worker JavaScript, native process execution, writable FUSE and bundled workerd in the initial local host;
  • a public remote-host selector; and
  • the existing journal security-filtering implementation.

New abstractions

  • The Workspace and effect-transaction terms name concrete boundaries consumed by filesystem, Git, lifecycle and Agent implementations.
  • Each new abstraction has multiple concrete uses or a clear justification.
  • No speculative functionality is included.

Risks and limitations

Closes#346. Defines the implementation contract for #218 and updates the path to #181.

Scope confirmation

  • Every changed file supports the purpose described above.
  • Unrelated cleanup and formatting changes are excluded.
  • Generated or mechanical changes are clearly identified.
  • The description matches the final diff and test results.

@github-actions

github-actionsBot commented Aug 7, 2026

Copy link
Copy Markdown

PR #358: 📝 Specify retained workflow Workspaces

2 files, +955 / -9

Scope

🔴 PR has 964 lines changed. Split into focused PRs.

🟡 964 lines changed. PRs under 400 receive more thorough review.

Structural

✅ No structural bloat detected.

Slop

✅ Slop indicators look low.

Static Analysis

✅ Oxlint found no issues.

Correctness

No extraneous code patterns detected.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Define the local Workspace host topology

1 participant

@taras
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length \u003e 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

📝 Specify retained workflow Workspaces - #358

Merged
taras merged 2 commits into
mainfrom
agent/issue-218-workflow-spec
Aug 7, 2026
Merged

📝 Specify retained workflow Workspaces#358
taras merged 2 commits into
mainfrom
agent/issue-218-workflow-spec

Conversation

@taras

@tarastaras commented Aug 7, 2026

Copy link
Copy Markdown
Owner

Why

The Workspace design evolved across #218, #346 and three implementation spikes, but its accepted decisions existed only in issue comments and a local interview transcript. The old #218 contract still assumed an explicit Cloudflare Workspace whose persistence was separate from the journal, which no longer matched the selected topology or the intended Agent authority model.

What changes

Before:

The architecture stopped at workflow-run identity and base pinning. Replay restoration, lifecycle commands, repository composition, local transaction boundaries, history forks, Agent authority and the Deno/DOFS topology were unresolved or described inconsistently across issues.

After:

The architecture defines the retained implicit Workspace and its invariants. A new specification records the observable xmd workflow contract, from the first command and multi-repository examples through replay, failure, history and topology.

How it works

immutable workflow definition
→ WorkflowRun + implicit Workspace
→ one expansion / one effect / one local transaction
→ filtered journal result + versioned Workspace root
→ replay, resume or explicit history fork

The local host owns SQLite in Deno and uses Cloudflare DOFS behind contextual APIs. Workspace-local filesystem, Git and metadata effects commit their mutation and journal result atomically. External Agent, Push and PullRequest effects reconcile stable identities instead. Agents receive read-only materializations and propose constrained XMD for the durable evaluator to execute.

Review guide

Start with:architecture.md, from “Workflow Workspace” through “Local Workspace topology”

Then review:

  1. specs/workflow-workspace-spec.md §§1–4 for command, identity and lifecycle behavior
  2. §§5–8 for Repository, Worktree, Git and read-only Agent composition
  3. §§9–12 for replay, transaction, fork and retention contracts
  4. §§13–14 for the evidence-backed local topology and implementation inventory

Look carefully at:

  • the distinction between the workflow definition repository and Repositories created inside the Workspace;
  • the one-expansion/one-effect/one-transaction boundary;
  • the rule that ephemeral replay rebuilds context but never owns durable state;
  • external-effect ambiguity and history-fork limits; and
  • the mandatory read-only Agent ceiling and generated-XMD allowlist.

What must stay true

How to verify it

  • git diff --check verifies that both Markdown changes are free of whitespace errors.
  • Read the first workflow, multi-repository Agent example, replay table and transaction pseudocode as one path; they must describe the same component and authority behavior.
  • No source or test files change, so the runtime verification suite is not applicable to this documentation-only design PR.

Scope

Included

  • terminology for Workspace, ephemeral operations, effect transactions, external effects, checkpoints and history forks;
  • foreground workflow lifecycle and inspection commands;
  • implicit Workspace, Repository, Worktree, Git and Agent composition contracts;
  • replay, restoration, local atomicity, external reconciliation and fork semantics;
  • Deno-local SQLite/DOFS topology and the initial Worker Shell boundary; and
  • updated construct inventory.

Intentionally unchanged

  • runtime implementation of every newly specified construct;
  • the public name and final schema of the generated-XMD evaluator (<Expand> is a placeholder);
  • Worker JavaScript, native process execution, writable FUSE and bundled workerd in the initial local host;
  • a public remote-host selector; and
  • the existing journal security-filtering implementation.

New abstractions

  • The Workspace and effect-transaction terms name concrete boundaries consumed by filesystem, Git, lifecycle and Agent implementations.
  • Each new abstraction has multiple concrete uses or a clear justification.
  • No speculative functionality is included.

Risks and limitations

Closes#346. Defines the implementation contract for #218 and updates the path to #181.

Scope confirmation

  • Every changed file supports the purpose described above.
  • Unrelated cleanup and formatting changes are excluded.
  • Generated or mechanical changes are clearly identified.
  • The description matches the final diff and test results.

@github-actions

github-actionsBot commented Aug 7, 2026

Copy link
Copy Markdown

PR #358: 📝 Specify retained workflow Workspaces

2 files, +955 / -9

Scope

🔴 PR has 964 lines changed. Split into focused PRs.

🟡 964 lines changed. PRs under 400 receive more thorough review.

Structural

✅ No structural bloat detected.

Slop

✅ Slop indicators look low.

Static Analysis

✅ Oxlint found no issues.

Correctness

No extraneous code patterns detected.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Define the local Workspace host topology

1 participant

@taras
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

📝 Specify retained workflow Workspaces - #358

Merged
taras merged 2 commits into
mainfrom
agent/issue-218-workflow-spec
Aug 7, 2026
Merged

📝 Specify retained workflow Workspaces#358
taras merged 2 commits into
mainfrom
agent/issue-218-workflow-spec

Conversation

@taras

@tarastaras commented Aug 7, 2026

Copy link
Copy Markdown
Owner

Why

The Workspace design evolved across #218, #346 and three implementation spikes, but its accepted decisions existed only in issue comments and a local interview transcript. The old #218 contract still assumed an explicit Cloudflare Workspace whose persistence was separate from the journal, which no longer matched the selected topology or the intended Agent authority model.

What changes

Before:

The architecture stopped at workflow-run identity and base pinning. Replay restoration, lifecycle commands, repository composition, local transaction boundaries, history forks, Agent authority and the Deno/DOFS topology were unresolved or described inconsistently across issues.

After:

The architecture defines the retained implicit Workspace and its invariants. A new specification records the observable xmd workflow contract, from the first command and multi-repository examples through replay, failure, history and topology.

How it works

immutable workflow definition
→ WorkflowRun + implicit Workspace
→ one expansion / one effect / one local transaction
→ filtered journal result + versioned Workspace root
→ replay, resume or explicit history fork

The local host owns SQLite in Deno and uses Cloudflare DOFS behind contextual APIs. Workspace-local filesystem, Git and metadata effects commit their mutation and journal result atomically. External Agent, Push and PullRequest effects reconcile stable identities instead. Agents receive read-only materializations and propose constrained XMD for the durable evaluator to execute.

Review guide

Start with:architecture.md, from “Workflow Workspace” through “Local Workspace topology”

Then review:

  1. specs/workflow-workspace-spec.md §§1–4 for command, identity and lifecycle behavior
  2. §§5–8 for Repository, Worktree, Git and read-only Agent composition
  3. §§9–12 for replay, transaction, fork and retention contracts
  4. §§13–14 for the evidence-backed local topology and implementation inventory

Look carefully at:

  • the distinction between the workflow definition repository and Repositories created inside the Workspace;
  • the one-expansion/one-effect/one-transaction boundary;
  • the rule that ephemeral replay rebuilds context but never owns durable state;
  • external-effect ambiguity and history-fork limits; and
  • the mandatory read-only Agent ceiling and generated-XMD allowlist.

What must stay true

How to verify it

  • git diff --check verifies that both Markdown changes are free of whitespace errors.
  • Read the first workflow, multi-repository Agent example, replay table and transaction pseudocode as one path; they must describe the same component and authority behavior.
  • No source or test files change, so the runtime verification suite is not applicable to this documentation-only design PR.

Scope

Included

  • terminology for Workspace, ephemeral operations, effect transactions, external effects, checkpoints and history forks;
  • foreground workflow lifecycle and inspection commands;
  • implicit Workspace, Repository, Worktree, Git and Agent composition contracts;
  • replay, restoration, local atomicity, external reconciliation and fork semantics;
  • Deno-local SQLite/DOFS topology and the initial Worker Shell boundary; and
  • updated construct inventory.

Intentionally unchanged

  • runtime implementation of every newly specified construct;
  • the public name and final schema of the generated-XMD evaluator (<Expand> is a placeholder);
  • Worker JavaScript, native process execution, writable FUSE and bundled workerd in the initial local host;
  • a public remote-host selector; and
  • the existing journal security-filtering implementation.

New abstractions

  • The Workspace and effect-transaction terms name concrete boundaries consumed by filesystem, Git, lifecycle and Agent implementations.
  • Each new abstraction has multiple concrete uses or a clear justification.
  • No speculative functionality is included.

Risks and limitations

Closes#346. Defines the implementation contract for #218 and updates the path to #181.

Scope confirmation

  • Every changed file supports the purpose described above.
  • Unrelated cleanup and formatting changes are excluded.
  • Generated or mechanical changes are clearly identified.
  • The description matches the final diff and test results.

@github-actions

github-actionsBot commented Aug 7, 2026

Copy link
Copy Markdown

PR #358: 📝 Specify retained workflow Workspaces

2 files, +955 / -9

Scope

🔴 PR has 964 lines changed. Split into focused PRs.

🟡 964 lines changed. PRs under 400 receive more thorough review.

Structural

✅ No structural bloat detected.

Slop

✅ Slop indicators look low.

Static Analysis

✅ Oxlint found no issues.

Correctness

No extraneous code patterns detected.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Define the local Workspace host topology

1 participant

@taras
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

📝 Specify retained workflow Workspaces - #358

Merged
taras merged 2 commits into
mainfrom
agent/issue-218-workflow-spec
Aug 7, 2026
Merged

📝 Specify retained workflow Workspaces#358
taras merged 2 commits into
mainfrom
agent/issue-218-workflow-spec

Conversation

@taras

@tarastaras commented Aug 7, 2026

Copy link
Copy Markdown
Owner

Why

The Workspace design evolved across #218, #346 and three implementation spikes, but its accepted decisions existed only in issue comments and a local interview transcript. The old #218 contract still assumed an explicit Cloudflare Workspace whose persistence was separate from the journal, which no longer matched the selected topology or the intended Agent authority model.

What changes

Before:

The architecture stopped at workflow-run identity and base pinning. Replay restoration, lifecycle commands, repository composition, local transaction boundaries, history forks, Agent authority and the Deno/DOFS topology were unresolved or described inconsistently across issues.

After:

The architecture defines the retained implicit Workspace and its invariants. A new specification records the observable xmd workflow contract, from the first command and multi-repository examples through replay, failure, history and topology.

How it works

immutable workflow definition
→ WorkflowRun + implicit Workspace
→ one expansion / one effect / one local transaction
→ filtered journal result + versioned Workspace root
→ replay, resume or explicit history fork

The local host owns SQLite in Deno and uses Cloudflare DOFS behind contextual APIs. Workspace-local filesystem, Git and metadata effects commit their mutation and journal result atomically. External Agent, Push and PullRequest effects reconcile stable identities instead. Agents receive read-only materializations and propose constrained XMD for the durable evaluator to execute.

Review guide

Start with:architecture.md, from “Workflow Workspace” through “Local Workspace topology”

Then review:

  1. specs/workflow-workspace-spec.md §§1–4 for command, identity and lifecycle behavior
  2. §§5–8 for Repository, Worktree, Git and read-only Agent composition
  3. §§9–12 for replay, transaction, fork and retention contracts
  4. §§13–14 for the evidence-backed local topology and implementation inventory

Look carefully at:

  • the distinction between the workflow definition repository and Repositories created inside the Workspace;
  • the one-expansion/one-effect/one-transaction boundary;
  • the rule that ephemeral replay rebuilds context but never owns durable state;
  • external-effect ambiguity and history-fork limits; and
  • the mandatory read-only Agent ceiling and generated-XMD allowlist.

What must stay true

How to verify it

  • git diff --check verifies that both Markdown changes are free of whitespace errors.
  • Read the first workflow, multi-repository Agent example, replay table and transaction pseudocode as one path; they must describe the same component and authority behavior.
  • No source or test files change, so the runtime verification suite is not applicable to this documentation-only design PR.

Scope

Included

  • terminology for Workspace, ephemeral operations, effect transactions, external effects, checkpoints and history forks;
  • foreground workflow lifecycle and inspection commands;
  • implicit Workspace, Repository, Worktree, Git and Agent composition contracts;
  • replay, restoration, local atomicity, external reconciliation and fork semantics;
  • Deno-local SQLite/DOFS topology and the initial Worker Shell boundary; and
  • updated construct inventory.

Intentionally unchanged

  • runtime implementation of every newly specified construct;
  • the public name and final schema of the generated-XMD evaluator (<Expand> is a placeholder);
  • Worker JavaScript, native process execution, writable FUSE and bundled workerd in the initial local host;
  • a public remote-host selector; and
  • the existing journal security-filtering implementation.

New abstractions

  • The Workspace and effect-transaction terms name concrete boundaries consumed by filesystem, Git, lifecycle and Agent implementations.
  • Each new abstraction has multiple concrete uses or a clear justification.
  • No speculative functionality is included.

Risks and limitations

Closes#346. Defines the implementation contract for #218 and updates the path to #181.

Scope confirmation

  • Every changed file supports the purpose described above.
  • Unrelated cleanup and formatting changes are excluded.
  • Generated or mechanical changes are clearly identified.
  • The description matches the final diff and test results.

@github-actions

github-actionsBot commented Aug 7, 2026

Copy link
Copy Markdown

PR #358: 📝 Specify retained workflow Workspaces

2 files, +955 / -9

Scope

🔴 PR has 964 lines changed. Split into focused PRs.

🟡 964 lines changed. PRs under 400 receive more thorough review.

Structural

✅ No structural bloat detected.

Slop

✅ Slop indicators look low.

Static Analysis

✅ Oxlint found no issues.

Correctness

No extraneous code patterns detected.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Define the local Workspace host topology

1 participant

@taras
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

📝 Specify retained workflow Workspaces - #358

Merged
taras merged 2 commits into
mainfrom
agent/issue-218-workflow-spec
Aug 7, 2026
Merged

📝 Specify retained workflow Workspaces#358
taras merged 2 commits into
mainfrom
agent/issue-218-workflow-spec

Conversation

@taras

@tarastaras commented Aug 7, 2026

Copy link
Copy Markdown
Owner

Why

The Workspace design evolved across #218, #346 and three implementation spikes, but its accepted decisions existed only in issue comments and a local interview transcript. The old #218 contract still assumed an explicit Cloudflare Workspace whose persistence was separate from the journal, which no longer matched the selected topology or the intended Agent authority model.

What changes

Before:

The architecture stopped at workflow-run identity and base pinning. Replay restoration, lifecycle commands, repository composition, local transaction boundaries, history forks, Agent authority and the Deno/DOFS topology were unresolved or described inconsistently across issues.

After:

The architecture defines the retained implicit Workspace and its invariants. A new specification records the observable xmd workflow contract, from the first command and multi-repository examples through replay, failure, history and topology.

How it works

immutable workflow definition
→ WorkflowRun + implicit Workspace
→ one expansion / one effect / one local transaction
→ filtered journal result + versioned Workspace root
→ replay, resume or explicit history fork

The local host owns SQLite in Deno and uses Cloudflare DOFS behind contextual APIs. Workspace-local filesystem, Git and metadata effects commit their mutation and journal result atomically. External Agent, Push and PullRequest effects reconcile stable identities instead. Agents receive read-only materializations and propose constrained XMD for the durable evaluator to execute.

Review guide

Start with:architecture.md, from “Workflow Workspace” through “Local Workspace topology”

Then review:

  1. specs/workflow-workspace-spec.md §§1–4 for command, identity and lifecycle behavior
  2. §§5–8 for Repository, Worktree, Git and read-only Agent composition
  3. §§9–12 for replay, transaction, fork and retention contracts
  4. §§13–14 for the evidence-backed local topology and implementation inventory

Look carefully at:

  • the distinction between the workflow definition repository and Repositories created inside the Workspace;
  • the one-expansion/one-effect/one-transaction boundary;
  • the rule that ephemeral replay rebuilds context but never owns durable state;
  • external-effect ambiguity and history-fork limits; and
  • the mandatory read-only Agent ceiling and generated-XMD allowlist.

What must stay true

How to verify it

  • git diff --check verifies that both Markdown changes are free of whitespace errors.
  • Read the first workflow, multi-repository Agent example, replay table and transaction pseudocode as one path; they must describe the same component and authority behavior.
  • No source or test files change, so the runtime verification suite is not applicable to this documentation-only design PR.

Scope

Included

  • terminology for Workspace, ephemeral operations, effect transactions, external effects, checkpoints and history forks;
  • foreground workflow lifecycle and inspection commands;
  • implicit Workspace, Repository, Worktree, Git and Agent composition contracts;
  • replay, restoration, local atomicity, external reconciliation and fork semantics;
  • Deno-local SQLite/DOFS topology and the initial Worker Shell boundary; and
  • updated construct inventory.

Intentionally unchanged

  • runtime implementation of every newly specified construct;
  • the public name and final schema of the generated-XMD evaluator (<Expand> is a placeholder);
  • Worker JavaScript, native process execution, writable FUSE and bundled workerd in the initial local host;
  • a public remote-host selector; and
  • the existing journal security-filtering implementation.

New abstractions

  • The Workspace and effect-transaction terms name concrete boundaries consumed by filesystem, Git, lifecycle and Agent implementations.
  • Each new abstraction has multiple concrete uses or a clear justification.
  • No speculative functionality is included.

Risks and limitations

Closes#346. Defines the implementation contract for #218 and updates the path to #181.

Scope confirmation

  • Every changed file supports the purpose described above.
  • Unrelated cleanup and formatting changes are excluded.
  • Generated or mechanical changes are clearly identified.
  • The description matches the final diff and test results.

@github-actions

github-actionsBot commented Aug 7, 2026

Copy link
Copy Markdown

PR #358: 📝 Specify retained workflow Workspaces

2 files, +955 / -9

Scope

🔴 PR has 964 lines changed. Split into focused PRs.

🟡 964 lines changed. PRs under 400 receive more thorough review.

Structural

✅ No structural bloat detected.

Slop

✅ Slop indicators look low.

Static Analysis

✅ Oxlint found no issues.

Correctness

No extraneous code patterns detected.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Define the local Workspace host topology

1 participant

@taras
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

📝 Specify retained workflow Workspaces - #358

Merged
taras merged 2 commits into
mainfrom
agent/issue-218-workflow-spec
Aug 7, 2026
Merged

📝 Specify retained workflow Workspaces#358
taras merged 2 commits into
mainfrom
agent/issue-218-workflow-spec

Conversation

@taras

@tarastaras commented Aug 7, 2026

Copy link
Copy Markdown
Owner

Why

The Workspace design evolved across #218, #346 and three implementation spikes, but its accepted decisions existed only in issue comments and a local interview transcript. The old #218 contract still assumed an explicit Cloudflare Workspace whose persistence was separate from the journal, which no longer matched the selected topology or the intended Agent authority model.

What changes

Before:

The architecture stopped at workflow-run identity and base pinning. Replay restoration, lifecycle commands, repository composition, local transaction boundaries, history forks, Agent authority and the Deno/DOFS topology were unresolved or described inconsistently across issues.

After:

The architecture defines the retained implicit Workspace and its invariants. A new specification records the observable xmd workflow contract, from the first command and multi-repository examples through replay, failure, history and topology.

How it works

immutable workflow definition
→ WorkflowRun + implicit Workspace
→ one expansion / one effect / one local transaction
→ filtered journal result + versioned Workspace root
→ replay, resume or explicit history fork

The local host owns SQLite in Deno and uses Cloudflare DOFS behind contextual APIs. Workspace-local filesystem, Git and metadata effects commit their mutation and journal result atomically. External Agent, Push and PullRequest effects reconcile stable identities instead. Agents receive read-only materializations and propose constrained XMD for the durable evaluator to execute.

Review guide

Start with:architecture.md, from “Workflow Workspace” through “Local Workspace topology”

Then review:

  1. specs/workflow-workspace-spec.md §§1–4 for command, identity and lifecycle behavior
  2. §§5–8 for Repository, Worktree, Git and read-only Agent composition
  3. §§9–12 for replay, transaction, fork and retention contracts
  4. §§13–14 for the evidence-backed local topology and implementation inventory

Look carefully at:

  • the distinction between the workflow definition repository and Repositories created inside the Workspace;
  • the one-expansion/one-effect/one-transaction boundary;
  • the rule that ephemeral replay rebuilds context but never owns durable state;
  • external-effect ambiguity and history-fork limits; and
  • the mandatory read-only Agent ceiling and generated-XMD allowlist.

What must stay true

How to verify it

  • git diff --check verifies that both Markdown changes are free of whitespace errors.
  • Read the first workflow, multi-repository Agent example, replay table and transaction pseudocode as one path; they must describe the same component and authority behavior.
  • No source or test files change, so the runtime verification suite is not applicable to this documentation-only design PR.

Scope

Included

  • terminology for Workspace, ephemeral operations, effect transactions, external effects, checkpoints and history forks;
  • foreground workflow lifecycle and inspection commands;
  • implicit Workspace, Repository, Worktree, Git and Agent composition contracts;
  • replay, restoration, local atomicity, external reconciliation and fork semantics;
  • Deno-local SQLite/DOFS topology and the initial Worker Shell boundary; and
  • updated construct inventory.

Intentionally unchanged

  • runtime implementation of every newly specified construct;
  • the public name and final schema of the generated-XMD evaluator (<Expand> is a placeholder);
  • Worker JavaScript, native process execution, writable FUSE and bundled workerd in the initial local host;
  • a public remote-host selector; and
  • the existing journal security-filtering implementation.

New abstractions

  • The Workspace and effect-transaction terms name concrete boundaries consumed by filesystem, Git, lifecycle and Agent implementations.
  • Each new abstraction has multiple concrete uses or a clear justification.
  • No speculative functionality is included.

Risks and limitations

Closes#346. Defines the implementation contract for #218 and updates the path to #181.

Scope confirmation

  • Every changed file supports the purpose described above.
  • Unrelated cleanup and formatting changes are excluded.
  • Generated or mechanical changes are clearly identified.
  • The description matches the final diff and test results.

@github-actions

github-actionsBot commented Aug 7, 2026

Copy link
Copy Markdown

PR #358: 📝 Specify retained workflow Workspaces

2 files, +955 / -9

Scope

🔴 PR has 964 lines changed. Split into focused PRs.

🟡 964 lines changed. PRs under 400 receive more thorough review.

Structural

✅ No structural bloat detected.

Slop

✅ Slop indicators look low.

Static Analysis

✅ Oxlint found no issues.

Correctness

No extraneous code patterns detected.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Define the local Workspace host topology

1 participant

@taras