From 2d3160d4af4ce72d73b5f5a3c8586637693fe9a7 Mon Sep 17 00:00:00 2001
From: Romamo
Date: Thu, 8 Oct 2026 11:30:29 +0300
Subject: [PATCH] Point repository links to the cloudfall-dev organization
Co-Authored-By: Claude Opus 5.5
---
CHANGELOG.md | 4 ++++
README.md | 2 +-
evaluations/cloudfall/findings.md | 2 +-
evaluations/cloudfall/readiness.md | 2 +-
evaluations/cloudfall/report-agent-dev.md | 2 +-
evaluations/cloudfall/report-dev.md | 2 +-
evaluations/cloudfall/report-issues.md | 2 +-
evaluations/cloudfall/trace.md | 2 +-
examples/render-demo/render.yaml | 2 +-
pyproject.toml | 6 ++---
sdk/src/cloudfall/project.py | 2 +-
sdk/tests/test_project.py | 2 +-
site/public/index.html | 28 +++++++++++------------
site/public/manifesto.html | 16 ++++++-------
14 files changed, 39 insertions(+), 35 deletions(-)
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 ", "uv run cloudfall add server h1 --address ", "uv run cloudfall config validate ."], "project": {"directory": "/Users/roman/PycharmProjects/Atlas/tmp/eval/init-s62", "name": "init-s62", "revision": "b9677a68ceac642c42b300a219a2a552dab1f0da", "source": "https://github.com/romamo/cloudfall.git"}, "status": "ok"}
+{"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 ", "uv run cloudfall add server h1 --address ", "uv run cloudfall config validate ."], "project": {"directory": "/Users/roman/PycharmProjects/Atlas/tmp/eval/init-s62", "name": "init-s62", "revision": "b9677a68ceac642c42b300a219a2a552dab1f0da", "source": "https://github.com/cloudfall-dev/cloudfall.git"}, "status": "ok"}
```
**stderr** (first 20 lines):
diff --git a/examples/render-demo/render.yaml b/examples/render-demo/render.yaml
index 2f6a413..9fcccac 100644
--- a/examples/render-demo/render.yaml
+++ b/examples/render-demo/render.yaml
@@ -2,7 +2,7 @@ services:
- type: web
name: render-demo
runtime: python
- repo: https://github.com/romamo/cloudfall
+ repo: https://github.com/cloudfall-dev/cloudfall
branch: main
rootDir: examples/render-demo
plan: free
diff --git a/pyproject.toml b/pyproject.toml
index 6596dba..8f46c16 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -25,9 +25,9 @@ dependencies = [
[project.urls]
Homepage = "https://cloudfall.dev"
-Repository = "https://github.com/romamo/cloudfall"
-Changelog = "https://github.com/romamo/cloudfall/blob/main/CHANGELOG.md"
-Issues = "https://github.com/romamo/cloudfall/issues"
+Repository = "https://github.com/cloudfall-dev/cloudfall"
+Changelog = "https://github.com/cloudfall-dev/cloudfall/blob/main/CHANGELOG.md"
+Issues = "https://github.com/cloudfall-dev/cloudfall/issues"
[project.optional-dependencies]
mcp = [
diff --git a/sdk/src/cloudfall/project.py b/sdk/src/cloudfall/project.py
index 21c7cfe..cfd0db6 100644
--- a/sdk/src/cloudfall/project.py
+++ b/sdk/src/cloudfall/project.py
@@ -40,7 +40,7 @@
_GIT_TIMEOUT_SECONDS = 30
_GIT_NOT_A_REPOSITORY_EXIT_CODE = 128
-REPOSITORY_URL = "https://github.com/romamo/cloudfall"
+REPOSITORY_URL = "https://github.com/cloudfall-dev/cloudfall"
"""Location of the Cloudfall repository, for links to its files."""
SECRETS_DIRECTORY = "secrets"
diff --git a/sdk/tests/test_project.py b/sdk/tests/test_project.py
index 0e46676..652228f 100644
--- a/sdk/tests/test_project.py
+++ b/sdk/tests/test_project.py
@@ -83,7 +83,7 @@ def test_init_links_the_guide_and_examples_at_the_pinned_release(
init_project(_options(directory))
readme = (directory / "README.md").read_text(encoding="utf-8")
- base = "https://github.com/romamo/cloudfall"
+ base = "https://github.com/cloudfall-dev/cloudfall"
assert "[secrets guide][secrets-guide]" in readme
assert "[reference set][examples]" in readme
assert f"[cloudfall]: {base}\n" in readme
diff --git a/site/public/index.html b/site/public/index.html
index afa46b8..3e3f2fe 100644
--- a/site/public/index.html
+++ b/site/public/index.html
@@ -221,7 +221,7 @@
"operatingSystem": "Linux",
"license": "https://www.gnu.org/licenses/agpl-3.0.html",
"offers": { "@type": "Offer", "price": "0", "priceCurrency": "USD" },
- "sameAs": ["https://github.com/romamo/cloudfall"],
+ "sameAs": ["https://github.com/cloudfall-dev/cloudfall"],
"image": "https://cloudfall.dev/og.png"
}
@@ -240,8 +240,8 @@
How it works
Status
Manifesto
- Docs
- GitHub
+ Docs
+ GitHub
@@ -262,8 +262,8 @@ Your servers, run by an agent.
With a record
happened. Plain systemd and nginx. No Kubernetes.
@@ -303,7 +303,7 @@
Your servers, run by an agent.
With a record
declared policy in 2m06s, proved a real backup restorable in a timer-driven drill,
and delivered an alert to a second machine across the public network, receipts
throughout.
- Read the proving-run reports
+ Read the proving-run reports
@@ -448,7 +448,7 @@ Not there yet
Broader service catalog: MySQL, Elasticsearch, RabbitMQ, Node runtimes
Enforced per-component resource limits for shared nodes
Importers beyond Render
- Your existing Ansible inventory and playbooks as the config and the agent's tool list: design written, nothing built
+ Your existing Ansible inventory and playbooks as the config and the agent's tool list: design written, nothing built
@@ -459,12 +459,12 @@ Not there yet
Get started
Sixty seconds to see how it thinks
-
$ git clone https://github.com/romamo/cloudfall && cd cloudfall
+
$ git clone https://github.com/cloudfall-dev/cloudfall && cd cloudfall
$ uv run cloudfall config validate --project config/examples
$ uv run cloudfall init ../my-project
@@ -477,11 +477,11 @@
Sixty seconds to see how it thinks
Cloudfall
AGPL-3.0-or-later · commercial exception reserved · © 2026 Cloudfall
diff --git a/site/public/manifesto.html b/site/public/manifesto.html
index 932532c..d2fc306 100644
--- a/site/public/manifesto.html
+++ b/site/public/manifesto.html
@@ -182,8 +182,8 @@
Why
How it works
Status
- Docs
- GitHub
+ Docs
+ GitHub
@@ -339,8 +339,8 @@ Open core, never crippled
this document. File it.
@@ -353,11 +353,11 @@ Open core, never crippled
Cloudfall
AGPL-3.0-or-later · commercial exception reserved · © 2026 Cloudfall