Skip to content

Commit 9993d8b

Browse files
jeremymanningclaude
andcommitted
Correct the last false claims the accuracy audit found
**Ed25519 is not quantum-resistant.** `ssh_setup.rst` said so twice. It is an elliptic-curve signature scheme, which is exactly what Shor's algorithm breaks and the whole reason post-quantum migration exists. Described accurately now. **"15-30 minute manual process into a 15-second automated experience"** appears in the README, ssh_setup.rst and the SSH tutorial notebook, with no measurement behind either number. Replaced with what the feature actually does: generate, deploy and configure a key in one call instead of three manual steps. **The documented `cluster_find` -> `cluster_stat` chain does not work.** `find` and `glob` return paths relative to *the directory they searched*, so passing a result straight to `stat` raises `FileNotFoundError` unless you searched ".". Eight documentation sites taught the broken form. The contract is now stated prominently with a working example, verified: stat data/a.csv -> 1 bytes The return contract itself is deliberate and eight tests depend on it, so it is documented rather than changed this late in the branch. **Suite figures updated** to the current run: 159 failed / 1402 passed / 36 errors, against 211 / 1194 / 72 at the start of the branch. The previous figure was ten commits stale. The PR body is updated too: it still listed #121, the Kubernetes widget fields, widget input validation and PBS/SGE as broken, all of which this branch fixed, and quoted three test counts that had grown since (250 -> 255, 72 -> 75, 19 -> 35). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012gTBDPK16HUZ3kHQ2QyjuU
1 parent 12b6613 commit 9993d8b

5 files changed

Lines changed: 32 additions & 11 deletions

File tree

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,9 @@ Two timeouts are worth knowing about:
187187

188188
## SSH Key Automation
189189

190-
Clustrix provides automated SSH key setup to eliminate the manual process of generating and deploying SSH keys to clusters. This feature transforms a 15-30 minute manual setup into a **15-second automated process**.
190+
Clustrix provides automated SSH key setup: it generates a key, deploys it to
191+
the cluster and writes the `~/.ssh/config` entry in one call, instead of doing
192+
those three steps by hand.
191193

192194
### Quick Setup Methods
193195

docs/source/notebooks/ssh_tutorial.ipynb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
"\n",
2121
"## ✨ **New: Automated SSH Key Setup**\n",
2222
"\n",
23-
"Clustrix now includes **15-second automated SSH key setup** that eliminates manual configuration! No more spending 15-30 minutes on SSH setup.\n",
23+
"Clustrix includes **automated SSH key setup**: generate, deploy and configure a key in one call.\n",
2424
"\n",
2525
"## 📋 Prerequisites\n",
2626
"\n",
@@ -94,7 +94,7 @@
9494
"outputs": [],
9595
"source": [
9696
"# 🚀 AUTOMATED SSH KEY SETUP\n",
97-
"# This replaces 15-30 minutes of manual work with 15 seconds of automation!\n",
97+
"# One call replaces generating, deploying and configuring the key by hand.\n",
9898
"\n",
9999
"print(\"🔄 Setting up SSH keys automatically...\")\n",
100100
"print(\"💡 You'll be prompted for your password (this is normal and secure).\")\n",
@@ -873,7 +873,7 @@
873873
"\n",
874874
"### 🎉 What You've Learned\n",
875875
"\n",
876-
"1. **🔑 Automated SSH Setup**: 15-second setup vs 15-30 minute manual process\n",
876+
"1. **🔑 Automated SSH Setup**: generate, deploy and configure a key in one call\n",
877877
"2. **⚙️ Remote Configuration**: Easy Clustrix setup for SSH execution\n",
878878
"3. **🧮 Remote Computing**: Mathematical computations on remote servers\n",
879879
"4. **📊 Data Processing**: NumPy operations and analysis remotely\n",
@@ -941,7 +941,7 @@
941941
"\n",
942942
"You've successfully learned how to use Clustrix's automated SSH setup and remote execution capabilities. You can now:\n",
943943
"\n",
944-
"- ⚡ Set up SSH access in 15 seconds instead of 15-30 minutes\n",
944+
"- ⚡ Set up SSH access in one call instead of three manual steps\n",
945945
"- 🚀 Execute Python functions on any SSH-accessible server\n",
946946
"- 📊 Perform complex computations remotely\n",
947947
"- 🔧 Troubleshoot and optimize your setup\n",

docs/source/ssh_setup.rst

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
SSH Key Setup for Remote Clusters
22
====================================
33

4-
Clustrix provides **automated SSH key setup** that transforms the traditional 15-30 minute manual process into a **15-second automated experience**. This feature eliminates the complexity of SSH configuration while maintaining security best practices.
4+
Clustrix provides **automated SSH key setup**: it generates a key, deploys
5+
it to the cluster and writes the ``~/.ssh/config`` entry in one call, instead
6+
of doing those three steps by hand.
57

68
.. note::
79
**🚀 New in Clustrix**: Automated SSH key setup makes cluster access effortless!
@@ -68,7 +70,8 @@ What the Automation Does
6870
The automated SSH setup handles everything for you:
6971

7072
🔑 **Key Generation**
71-
- Creates Ed25519 keys (quantum-resistant, modern encryption)
73+
- Creates Ed25519 keys (modern elliptic-curve signatures; fast,
74+
compact, and widely supported)
7275
- Proper file permissions (600 for private, 644 for public)
7376
- Informative comments with timestamps
7477

@@ -353,7 +356,8 @@ Security Best Practices
353356
Key Management
354357
~~~~~~~~~~~~~~
355358

356-
1. **Use Ed25519 Keys**: Default in automated setup, quantum-resistant
359+
1. **Use Ed25519 Keys**: Default in automated setup; modern
360+
elliptic-curve signatures, preferred over RSA
357361
2. **Regular Rotation**: Use ``force_refresh=True`` periodically
358362
3. **Unique Keys**: Different keys for different clusters
359363
4. **Secure Storage**: Keys stored with proper permissions automatically
@@ -390,4 +394,5 @@ Getting Help
390394
- **SSH Key Automation**: `Issue #57 <https://github.com/ContextLab/clustrix/issues/57>`_
391395

392396
.. note::
393-
**Remember**: 15 seconds of automation beats 15-30 minutes of manual setup! 🚀
397+
**Remember**: one call replaces generating, deploying and configuring a
398+
key by hand.

docs/source/tutorials/filesystem_tutorial.rst

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,20 @@ Clustrix provides nine core filesystem operations:
4949

5050
1. **cluster_ls()** - List directory contents
5151
2. **cluster_find()** - Find files by pattern (recursive)
52+
53+
.. important::
54+
55+
``cluster_find()`` and ``cluster_glob()`` return paths **relative to the
56+
directory they searched**, not to the working directory. Passing a result
57+
straight to ``cluster_stat()`` therefore raises ``FileNotFoundError``
58+
unless you searched ``"."``. Join the search directory back on first::
59+
60+
import os
61+
62+
search_dir = "data/"
63+
for name in cluster_find("*.csv", search_dir, config):
64+
info = cluster_stat(os.path.join(search_dir, name), config)
65+
5266
3. **cluster_stat()** - Get file information (size, modified time, permissions)
5367
4. **cluster_exists()** - Check if file/directory exists
5468
5. **cluster_isdir()** - Check if path is a directory

notes/RELEASE_NOTES_v0.2.0.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -267,8 +267,8 @@ wrong.
267267
have worked, which is a different claim from "tested".
268268
* **Kubernetes execution is unverified**, though it is now configurable and
269269
its memory quantities are valid.
270-
* **The suite still has failures** outside the paths exercised here: 176
271-
failed / 1313 passed / 36 errors, against 211 / 1194 / 72 at the start of
270+
* **The suite still has failures** outside the paths exercised here: 159
271+
failed / 1402 passed / 36 errors, against 211 / 1194 / 72 at the start of
272272
this branch. Re-baselining it properly is #114.
273273
* **The result-signing scheme does not defend against a compromised remote
274274
host.** Nothing that runs your code for you can.

0 commit comments

Comments
 (0)