diff --git a/CHANGELOG.md b/CHANGELOG.md
index 215b1e2..1a50298 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -70,6 +70,10 @@ Notable changes to Cloudfall. The format follows
### Changed
+- The repository moved to the `cloudfall-dev` organization:
+ github.com/cloudfall-dev/cloudfall. The package metadata, the README,
+ the site and `REPOSITORY_URL` point there; the old
+ github.com/romamo/cloudfall address redirects
- **Breaking:** the CLI follows one name per meaning, and its output is
typed:
- Decision records have their own group: `decisions list` (was
diff --git a/README.md b/README.md
index 36114c1..c073746 100644
--- a/README.md
+++ b/README.md
@@ -149,7 +149,7 @@ The reference resource set lives in this repository, so validating it means
a clone:
```console
-git clone https://github.com/romamo/cloudfall.git
+git clone https://github.com/cloudfall-dev/cloudfall.git
cd cloudfall
uv sync
uv run cloudfall config validate --project config/examples
diff --git a/evaluations/cloudfall/findings.md b/evaluations/cloudfall/findings.md
index 5a8cedc..b96fc48 100644
--- a/evaluations/cloudfall/findings.md
+++ b/evaluations/cloudfall/findings.md
@@ -13,7 +13,7 @@
| §61 | Bidirectional Pipe Payload Deadlock | Critical | 1/3 | 2026-09-14 | Reproduced: agent writes 1 MiB to stdin before reading stdout while `inventory show` (600-server project) writes 181 KB to stdout; after 10s the writer is stuck at 65,536 bytes and the CLI is stuck on a full stdout pipe, a deadlock until killed. Cloudfall never reads stdin and never detects or rejects piped input (no `STDIN_TOO_LARGE`); every input already comes from file flags (`--source-url-file`, `--api-key-file`, blueprint path), so agents have no reason to pipe |
| §62 | $EDITOR and $VISUAL Trap | Critical | 2/3 | 2026-09-14 | No command opens an editor (no `EDITOR`/`VISUAL` reads in sources); every authoring path is flag-driven: `add server` with `EDITOR=vim VISUAL=vim` exit 0 in 0.31s, `init` with empty `EDITOR` exit 0 in 0.15s, no git commit is made. Capped at 2: no schema declares `requires_editor`. Side finding: `init`'s `next` hint `uv run cloudfall config validate .` fails verbatim (exit 2, 'unrecognized arguments: .') |
| §64 | Headless Display and GUI Launch Blocking | Critical | 2/3 | 2026-09-14 | No command launches a browser or GUI (no `webbrowser`/`xdg-open` in sources); `dashboard serve --port 0` with `DISPLAY=` emitted `{"dashboard": {"url": "http://127.0.0.1:65098/", ...}, "status": "ok"}` at t=0.4s (explicit flush), then served until SIGTERM; `dashboard build` returns file paths in JSON. Capped at 2: no schema declares `headless_behavior` |
-| §71 | Non-Interactive Installation Absence | Critical | 2/3 | 2026-09-14 | README documents `git clone … && uv sync` (and `uvx --from git+https://github.com/romamo/cloudfall.git cloudfall init`); `uv sync` with `CI=true` exit 0 twice (idempotent, 'Checked 70 packages'). Not 3: no AGENTS.md, and no verify command: `cloudfall --version` exits 2 ('the following arguments are required: command'). Fresh-clone install not re-run (existing checkout; `uvx` path needs network) |
+| §71 | Non-Interactive Installation Absence | Critical | 2/3 | 2026-09-14 | README documents `git clone … && uv sync` (and `uvx --from git+https://github.com/cloudfall-dev/cloudfall.git cloudfall init`); `uv sync` with `CI=true` exit 0 twice (idempotent, 'Checked 70 packages'). Not 3: no AGENTS.md, and no verify command: `cloudfall --version` exits 2 ('the following arguments are required: command'). Fresh-clone install not re-run (existing checkout; `uvx` path needs network) |
| §10 | Interactivity & TTY Requirements | Critical | 2/3 | 2026-09-14 | No prompts, pager, or editor on any path; with stdin=/dev/null and a 5s cap every mutating command returned: `migrate` plan 0.28s exit 0 (execution gated by `--yes`, not a prompt), `restart`/`backup run`/`data migrate` 0.8–0.9s exit 1 with JSON `lifecycle_execution_failed` (unresolvable hosts). Ansible runs with `PasswordAuthentication=no`. Side finding: `rollback --release r1` crashes with a `ValueError` traceback. Held at 2, not 3: Ansible's SSH host-key confirmation for an unknown reachable host (read from /dev/tty, not stdin) is neither disabled nor exercised here |
| §11 | Timeouts & Hanging Processes | Critical | 1/3 | 2026-09-14 | Never hung, but no caller-set timeout: `--timeout 2` rejected (exit 2); only `operator approve --verify-timeout`. Built-in bounds: SSH `ConnectTimeout=10`, HTTP 30s (Render) / 10s (gateway), 3600s per engine step. `health` on blackholed 203.0.113.10/11 took 10.89s → exit 1 `"status": "unhealthy"` (the timeout is reported as an unhealthy app); `import render-api` took 30.19s → `render_api_unreachable` ('urlopen error timed out') exit 2. No `TIMEOUT` code, no exit 10, no `completed_steps` |
| §12 | Idempotency & Safe Retries | Critical | 1/3 | 2026-09-14 | No `--idempotency-key` (rejected, exit 2) and no `effect` field. Retries do not duplicate: a second identical `add server h8` / `add ssh-key` → `resource_exists` exit 2 (not a noop exit 0, so a retry after a lost response looks like a failure); `migrate --yes` persists progress in `--plan-file` and a re-run resumes at the recorded `next` step (plan mode writes nothing); engine playbooks are convergent Ansible. `init` on an existing dir reported `project_revision_uncommitted` before checking emptiness. `deploy` of the same release twice not exercised (needs a live host) |
diff --git a/evaluations/cloudfall/readiness.md b/evaluations/cloudfall/readiness.md
index ccf5196..86c1b02 100644
--- a/evaluations/cloudfall/readiness.md
+++ b/evaluations/cloudfall/readiness.md
@@ -37,7 +37,7 @@
### 4. Setup Reproducibility — 1/3
-- Install: `git clone https://github.com/romamo/cloudfall.git && cd cloudfall && uv sync` (README Quickstart); for projects `uvx --from git+https://github.com/romamo/cloudfall.git cloudfall init my-project`. Not on PyPI
+- Install: `git clone https://github.com/cloudfall-dev/cloudfall.git && cd cloudfall && uv sync` (README Quickstart); for projects `uvx --from git+https://github.com/cloudfall-dev/cloudfall.git cloudfall init my-project`. Not on PyPI
- Non-interactive: yes. Idempotent: `uv sync --dry-run` reports "Would make no changes" (exit 0)
- Dependencies: declared in `pyproject.toml`, locked in `uv.lock`; `uv` provisions Python 3.14
- Verification fails: `cloudfall --version` exits 2; no `doctor`/health-check command. Install lives only in README
diff --git a/evaluations/cloudfall/report-agent-dev.md b/evaluations/cloudfall/report-agent-dev.md
index 60552f7..34787c8 100644
--- a/evaluations/cloudfall/report-agent-dev.md
+++ b/evaluations/cloudfall/report-agent-dev.md
@@ -976,7 +976,7 @@ if "url" in data and not data.get("opened", True):
### §71 — Non-Interactive Installation Absence [Critical · 2/3]
-**Gap:** README documents `git clone … && uv sync` (and `uvx --from git+https://github.com/romamo/cloudfall.git cloudfall init`); `uv sync` with `CI=true` exit 0 twice (idempotent, 'Checked 70 packages'). Not 3: no AGENTS.md, and no verify command: `cloudfall --version` exits 2 ('the following arguments are required: command'). Fresh-clone install not re-run (existing checkout; `uvx` path needs network)
+**Gap:** README documents `git clone … && uv sync` (and `uvx --from git+https://github.com/cloudfall-dev/cloudfall.git cloudfall init`); `uv sync` with `CI=true` exit 0 twice (idempotent, 'Checked 70 packages'). Not 3: no AGENTS.md, and no verify command: `cloudfall --version` exits 2 ('the following arguments are required: command'). Fresh-clone install not re-run (existing checkout; `uvx` path needs network)
**Workaround:**
Before attempting installation, scan AGENTS.md and README for an explicit non-interactive install command. Prefer commands that include `-y`, `--yes`, `--non-interactive`, `DEBIAN_FRONTEND=noninteractive`, or equivalent flags.
diff --git a/evaluations/cloudfall/report-dev.md b/evaluations/cloudfall/report-dev.md
index d9214fc..7db4328 100644
--- a/evaluations/cloudfall/report-dev.md
+++ b/evaluations/cloudfall/report-dev.md
@@ -999,7 +999,7 @@ fi
### §71 — Non-Interactive Installation Absence [Critical · 2/3]
-**Gap:** README documents `git clone … && uv sync` (and `uvx --from git+https://github.com/romamo/cloudfall.git cloudfall init`); `uv sync` with `CI=true` exit 0 twice (idempotent, 'Checked 70 packages'). Not 3: no AGENTS.md, and no verify command: `cloudfall --version` exits 2 ('the following arguments are required: command'). Fresh-clone install not re-run (existing checkout; `uvx` path needs network)
+**Gap:** README documents `git clone … && uv sync` (and `uvx --from git+https://github.com/cloudfall-dev/cloudfall.git cloudfall init`); `uv sync` with `CI=true` exit 0 twice (idempotent, 'Checked 70 packages'). Not 3: no AGENTS.md, and no verify command: `cloudfall --version` exits 2 ('the following arguments are required: command'). Fresh-clone install not re-run (existing checkout; `uvx` path needs network)
**Solutions:**
**For CLI authors:**
diff --git a/evaluations/cloudfall/report-issues.md b/evaluations/cloudfall/report-issues.md
index 5f95ac8..119cdb8 100644
--- a/evaluations/cloudfall/report-issues.md
+++ b/evaluations/cloudfall/report-issues.md
@@ -381,7 +381,7 @@ These are not confirmed bugs but verified gaps — the CLI does not meet the bar
### §71 — Non-Interactive Installation Absence [Critical · score 2/3]
-**What fails:** README documents `git clone … && uv sync` (and `uvx --from git+https://github.com/romamo/cloudfall.git cloudfall init`); `uv sync` with `CI=true` exit 0 twice (idempotent, 'Checked 70 packages'). Not 3: no AGENTS.md, and no verify command: `cloudfall --version` exits 2 ('the following arguments are required: command'). Fresh-clone install not re-run (existing checkout; `uvx` path needs network)
+**What fails:** README documents `git clone … && uv sync` (and `uvx --from git+https://github.com/cloudfall-dev/cloudfall.git cloudfall init`); `uv sync` with `CI=true` exit 0 twice (idempotent, 'Checked 70 packages'). Not 3: no AGENTS.md, and no verify command: `cloudfall --version` exits 2 ('the following arguments are required: command'). Fresh-clone install not re-run (existing checkout; `uvx` path needs network)
**Frequency:** Common
**Token/time cost when it triggers:** Token Spend: Low · Time: Critical
**Workaround exists:** Partial
diff --git a/evaluations/cloudfall/trace.md b/evaluations/cloudfall/trace.md
index 0b26ba8..65b947e 100644
--- a/evaluations/cloudfall/trace.md
+++ b/evaluations/cloudfall/trace.md
@@ -511,7 +511,7 @@ writer blocked=True wrote=65536 error=None at t=10.0s; cli alive=True (stuck wri
**stdout** (first 20 lines):
```
-{"files": ["pyproject.toml", ".gitignore", "README.md", "servers/.gitkeep", "server-types/.gitkeep", "applications/.gitkeep", "components/.gitkeep", "domains/.gitkeep", "ssh-public-keys/.gitkeep", "logging-stacks/.gitkeep", "services/.gitkeep", "alert-rules/.gitkeep", "operator-policies/.gitkeep"], "next": ["cd /Users/roman/PycharmProjects/Atlas/tmp/eval/init-s62 && uv sync", "uv run cloudfall add ssh-key ~/.ssh/id_ed25519.pub --owner Your servers, run by an agent.
With a record
happened. Plain systemd and nginx. No Kubernetes.