Three fewer things to remember
**The portal link puts itself back up.** It already retried a connection that raised, but a session that ended *cleanly* — a portal restarting, a proxy closing an idle socket — returned normally and went straight back round the loop with no wait at all, so an engine could spin against a portal that was merely saying goodbye politely. Every ending now reconnects on a delay, and the delay turns on whether the attempt got as far as attaching: one that stood up and dropped is a network event and retries at once, one that never stood up waits longer each time. Jittered, so a portal coming back is not met by every installation it serves in the same instant. Ping timeouts are named rather than defaulted, since they are what bounds how long a suspended laptop's dead socket looks alive, and the keepalive task is awaited so the reason a link went reaches the log instead of the garbage collector. **`fluksio enroll <code>`** is the whole command now; hub.fluksio.com is the default and `--portal` names another. The one command run before anything works should not need two flags. **`fluksio run` syncs first.** The reason a run exists is usually the edit before it, so remembering to sync was remembering to do something the computer could do — including the worker refresh, which is what makes an edit to your own package take effect at all. `--no-sync` opts out for a tight loop. That last one needed discovery fixed: it only ever looked at top-level `*.py`, so a repository whose code is in a package — the ordinary shape — found nothing from its own root. It now descends into the packages it holds. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012ue1tkFWB1bcGy3aWhCKpU
This commit is contained in:
@@ -116,3 +116,24 @@ def test_serve_uses_the_installation_the_directory_belongs_to(
|
||||
# And `--data-dir` still names any directory outright.
|
||||
named = cli._data_dir(str(tmp_path / "named"))
|
||||
assert named == (tmp_path / "named").resolve()
|
||||
|
||||
|
||||
def test_enrolling_needs_only_a_claim_code() -> None:
|
||||
"""The default portal is what makes first-run one flag rather than two."""
|
||||
from fluksio.cli import DEFAULT_PORTAL, _parser
|
||||
|
||||
args = _parser().parse_args(["enroll", "ABC-123"])
|
||||
|
||||
assert args.portal == DEFAULT_PORTAL
|
||||
assert DEFAULT_PORTAL.startswith("https://")
|
||||
|
||||
# And a portal of your own still wins.
|
||||
mine = _parser().parse_args(["enroll", "ABC-123", "--portal", "https://hub.me"])
|
||||
assert mine.portal == "https://hub.me"
|
||||
|
||||
|
||||
def test_run_syncs_by_default_and_can_be_told_not_to() -> None:
|
||||
from fluksio.cli import _parser
|
||||
|
||||
assert _parser().parse_args(["run", "train"]).no_sync is False
|
||||
assert _parser().parse_args(["run", "train", "--no-sync"]).no_sync is True
|
||||
|
||||
Reference in New Issue
Block a user