La VM Proxmox locale effacée, le nettoyage a retiré son entrée ssh — c'était juste — et GARDÉ les trois entrées qui rebondissaient par elle, en les annonçant « mènent encore quelque part ». Trois culs-de-sac, désignés comme vivants. Deux fautes. Un ProxyJump valait preuve de vie À LUI SEUL, au motif qu'il désigne une VM imbriquée que virsh ne connaîtra jamais : le raisonnement oubliait que le rebond, lui, peut avoir disparu. Et chaque entrée était jugée ISOLÉMENT, alors que retirer le parent orpheline ses enfants — qui orphelinent les leurs. D'où un point fixe, et non une passe. Un rebond qu'on ne gère pas — hôte personnel, adresse, nom DNS — reste supposé vivant : on n'efface pas sur une supposition. Mais un nom de NOTRE nommage sans entrée et sans domaine ne mène nulle part, et c'est exactement l'état qu'un nettoyage précédent laisse derrière lui. La liste des orphelines dit maintenant POURQUOI. « Son rebond n'existe plus : erplibre-proxmox-9 » est la seule chose qui permet de répondre non en connaissance de cause. --- EN --- With the local Proxmox VM deleted, the cleanup removed its ssh entry — rightly — and KEPT the three entries hopping through it, announcing them as "still lead somewhere". Three dead ends, labelled alive. Two defects. A ProxyJump counted as proof of life ON ITS OWN, on the grounds that it names a nested VM virsh will never know: the reasoning forgot the jump itself can be gone. And each entry was judged IN ISOLATION, while removing a parent orphans its children — which orphan theirs. Hence a fixed point, not a single pass. A jump we do not manage — personal host, address, DNS name — stays presumed alive: we do not delete on a guess. But a name of OUR OWN convention with no entry and no domain leads nowhere, and that is exactly the state a previous cleanup leaves behind. The orphan list now says WHY. "Its jump host is gone: erplibre-proxmox-9" is the only thing that lets you answer no knowingly. Assisted-by: Claude Opus 5 |
||
|---|---|---|
| .. | ||
| auto_ask.py | ||
| database_manager.py | ||
| deploy_form_extras.py | ||
| deploy_form_lib.py | ||
| deploy_form_plan.py | ||
| kdbx_manager.py | ||
| logo_ascii.txt | ||
| migration_form.py | ||
| migration_stats.py | ||
| migration_status.py | ||
| migration_status_tui.py | ||
| proxmox_deploy_form.py | ||
| proxmox_menu.py | ||
| qemu_access.py | ||
| qemu_deploy.py | ||
| qemu_deploy_form.py | ||
| qemu_hardware.py | ||
| qemu_install.py | ||
| qemu_install_monitor.py | ||
| qemu_manage.py | ||
| qemu_menu.py | ||
| README.base.md | ||
| README.fr.md | ||
| README.md | ||
| source_todo.sh | ||
| textual_setup.py | ||
| todo.json | ||
| todo.py | ||
| todo_example.json | ||
| todo_file_browser.py | ||
| todo_i18n.py | ||
| todo_prefs.py | ||
| todo_telemetry.py | ||
| todo_upgrade.py | ||
| version_manager.py | ||
TODO is an assistant robot to use ERPLibre
Execute it with ./script/todo/todo.py or make todo.
For a new project, copy todo_example.json to private/todo/todo_override.json | private/todo/todo_override_private.json and edit it.
The mail/ package is the mail client reachable from Assistant > Mail:
several IMAP/SMTP accounts, a local cache, and a Textual TUI. See
../../doc/EMAIL.md.
Where the code lives
todo.py carries the menus and the general helpers. Everything around a
single subject sits in its own file, and the whole thing is assembled by
mixins on the TODO class — one file, one subject, its header states its
boundary.
| File | What it owns |
|---|---|
todo.py |
the menus, the configuration, the general helpers |
qemu_menu.py |
the QEMU/KVM menu, the image catalogue, the statistics |
qemu_deploy.py |
deciding then running a deployment |
qemu_install.py |
the recipes run inside a VM |
qemu_manage.py |
lifecycle, disks, hardware, cleanup, addresses |
qemu_access.py |
SSH, tunnels, consoles, Android emulator |
proxmox_menu.py |
the same, on a REMOTE Proxmox VE host |
The two deployment forms — libvirt here, Proxmox over there — ask the same questions, so they share a foundation rather than each holding a copy:
| File | What it owns |
|---|---|
deploy_form_lib.py |
pure logic (sizes, plan, totals, spec), the shared CSS, the resource-row factory, the progress view |
deploy_form_plan.py |
the plan's gestures: overrides, locks, copies, renaming, free values |
qemu_deploy_form.py |
what QEMU/KVM adds: desktops, tools, branches, install profiles |
proxmox_deploy_form.py |
what Proxmox adds: host, storage, bridge, VMID, address |
A form inherits PlanMixin and provides three hooks: which presets each
resource offers, the name a VM would fall back to, and what a lock freezes.
test_todo_deploy_form_lib.py fails if a form redefines a gesture the
foundation already carries — that is what keeps the architecture from drifting
back into two copies.