Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
8 changes: 7 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,13 @@

<!-- Copyright 2026 Firefly Software Foundation. SPDX-License-Identifier: Apache-2.0 -->

## 0.2.26 — Unreleased
## 0.2.27 — 2026-10-20

- Preserve an inherited ignored `SIGXFSZ` for trusted Codex and Claude CLI launches under a finite POSIX file-size limit, allowing an oversized write to return `EFBIG` while retaining the kernel limit.
- Keep subprocess defaults for unlimited parents, default signal dispositions and the separate untrusted command executor; preserve process cleanup and recovery budgets.
- Refresh the controlled Studio walkthrough captures for 0.2.27.

## 0.2.26 — 2026-10-20

- Present bounded Claude text, tool requests and reported results without treating provider messages as command receipts or final QA.
- Keep unsupported structured output behind an explicit verified-content reader, with honest archive-limit and omitted-block messages.
Expand Down
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@ The default combined service admits and executes work. A split installation sepa

Choose and verify the execution environment before admitting a run. Git workspaces protect the consumer checkout; host commands still run with the worker's operating-system identity. Project users require isolated execution, while host coding and host verification require current administrator authority. [Runner configuration](docs/sandbox.md) and [security](docs/security.md) describe the enforced boundaries.

On POSIX, trusted Codex and Claude launches preserve an inherited ignored `SIGXFSZ` when the parent has a finite file-size limit. The kernel limit remains enforced, and recovery still requires its existing process evidence and attempt budget. See [file-size failure recovery](docs/recovery.md#recover-a-known-failed-official-cli-attempt) for the launch conditions and qualification limits.

In Studio, a run's Plan tab can review an original queued command for explicit continuation after one controller replacement. The original Factory worker must still be waiting. The browser retains the request before submission and reads its exact receipt after a lost response. Follow the [continuation guide](docs/sandbox.md#continue-one-queued-command-after-a-controller-restart) for the admission and recovery limits.

Open a paused run’s **Agent questions** tab to review the agent’s question and context. Choose a suggested answer or use the Markdown editor, review it, then send it under a retained response identity. Readback confirms the recorded answer after reload or a lost response; answering leaves the run paused until you resume it. Current project permissions and the authenticated replying user are checked separately from the recorded actor label. See [operator decisions](docs/agent-lifecycle.md#answer-an-agents-question).
Expand Down
2 changes: 2 additions & 0 deletions docs/architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,8 @@ Source: [`store.py`](https://github.com/fireflyframework/firefly-forge/blob/main

The engine dispatches queued work under a global concurrency budget and one active coding run per repository. It prepares an isolated Git root and records its authorized origin and baseline. The selected coding provider receives the frozen handoff. Factory verification executes commands independently; failed checks return to that provider within the frozen repair budget.

On POSIX, the trusted Codex and Claude CLI launcher preserves inherited ignored signals when its parent already ignores `SIGXFSZ` and has a finite soft file-size limit. This prevents Python's default subprocess signal restoration from converting a rejected oversized write into immediate signal termination. The kernel's file-size limit remains unchanged: a native fixture confirms that the write returns `EFBIG` and leaves the file intact. Python exposes one restoration switch, so this branch also inherits other ignored signals, including `SIGPIPE`; it does not install a signal handler or use `preexec_fn`. Unlimited parents, parents using the default `SIGXFSZ` disposition and the separate untrusted command executor retain subprocess defaults. Process-group cleanup, stream draining and typed outcome checks are unchanged.

| Boundary | Accepted evidence | Failure behavior |
| --- | --- | --- |
| Admission | Retained queued run and selected snapshots | Invalid authority, conflicting inputs or unavailable capabilities refuse admission. |
Expand Down
Loading
Loading