Target railiance01 explicitly for founder inventory execution
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s

Assistant: codex
Assistant-Model: gpt-6.1-sol
Assistant-Session: 01a1abf1-7e95-7141-87c9-ee78332bf790
This commit is contained in:
tegwick 2026-11-05 23:12:10 +01:00
parent d2eefb371d
commit 502f8208e4
4 changed files with 107 additions and 3 deletions

View file

@ -0,0 +1,13 @@
{
"schema": "railiance.vergabe-pilot-native-inventory.v1",
"observed_at": "2026-11-05T22:05:14.439011+00:00",
"evidence_kind": "user_reported_terminal_output",
"workplan": "RAPPS-WP-0014",
"task": "RAPPS-WP-0014-T03",
"runtime_mutations": false,
"native_inventory_complete": false,
"cluster_read": "unavailable_or_invalid_response",
"execution_host": "not_reported",
"cluster_identity_or_outage_established": false,
"followup": "Use the reviewed workstation transport to connect explicitly to railiance01; return the remote inventory JSON."
}

View file

@ -43,8 +43,26 @@ path was unavailable in the invoking terminal; its host was not reported.
The founder does not need an executor installation to perform their own
reviewed read-only check.
From a synced `railiance-apps` checkout in the founder's own terminal on
**railiance01**, run:
The subsequent direct invocation returned `cluster_read:
unavailable_or_invalid_response`, without establishing a cluster identity. Its
execution host is unconfirmed. Use the explicit remote transport to avoid
depending on the workstation's root PATH or kubeconfig.
From the **workstation** `railiance-apps` checkout in the founder's own
interactive terminal, run:
```bash
git pull --ff-only
python3 tools/vergabe_pilot_inventory_remote.py --run
```
The transport validates the unchanged inventory source SHA256, connects through
the existing `ssh railiance01` login with a TTY and runs the pinned source with
the node's existing sudo/kubeconfig context. Source travels as one shell-quoted
argument, preserving stdin for the sudo prompt. There is no remote checkout or
local root Kubernetes context requirement. Default mode omits SSH execution.
When already in a synced checkout **on railiance01**, the equivalent command is:
```bash
sudo env KUBECONFIG=/etc/rancher/k3s/k3s.yaml /usr/bin/python3 tools/vergabe_pilot_inventory.py

View file

@ -0,0 +1,59 @@
#!/usr/bin/env python3
"""Run the pinned read-only inventory through the founder's existing SSH login.
Run from the workstation checkout in the founder's own interactive terminal.
Default only reviews the transport. --run connects to railiance01 explicitly;
SSH and sudo authenticate in that terminal. No administrative credential leaves
the node. The public source travels as a quoted argument, preserving stdin for
the sudo prompt and avoiding a remote checkout requirement.
"""
import argparse
import hashlib
import json
import shlex
import subprocess
import sys
from pathlib import Path
SOURCE_SHA256 = "b610059b5d7398138062de51edab3555b973cfbb61f02fa684184852805d7507"
SOURCE = Path(__file__).with_name("vergabe_pilot_inventory.py")
def remote_command(source):
if hashlib.sha256(source.encode()).hexdigest() != SOURCE_SHA256:
raise ValueError("inventory_source_pin_mismatch")
operation = [
"sudo", "/usr/bin/env", "KUBECONFIG=/etc/rancher/k3s/k3s.yaml",
"/usr/bin/python3", "-c", source,
]
return ["ssh", "-t", "railiance01", shlex.join(operation)]
def main(argv=None):
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument("--run", action="store_true")
args = parser.parse_args(argv)
command = remote_command(SOURCE.read_text())
if not args.run:
print(json.dumps({"status": "prepared", "ssh_target": "railiance01",
"inventory_source_sha256": SOURCE_SHA256,
"runtime_mutations": False}))
return 0
if not sys.stdin.isatty():
raise ValueError("founder_interactive_terminal_required")
return subprocess.run(command, check=False).returncode
if __name__ == "__main__":
try:
raise SystemExit(main())
except ValueError as error:
reason = str(error)
if reason not in {"inventory_source_pin_mismatch", "founder_interactive_terminal_required"}:
reason = "invalid_transport_input"
print(json.dumps({"status": "launcher_failed", "failure": reason}))
raise SystemExit(1)
except OSError:
print(json.dumps({"status": "launcher_failed", "failure": "source_or_ssh_unavailable"}))
raise SystemExit(1)

View file

@ -196,7 +196,7 @@ id: RAPPS-WP-0014-T03
status: wait
needs_human: true
decision_id: d06307e5-2737-461a-a2f4-a12c3b492a9a
intervention_note: "Two-account functional walkthrough through Zuschlag/Nachlese is user-confirmed with UI follow-up. Next: founder runs the reviewed read-only inventory on railiance01 using the existing supervisor-execution lane. Gexec launcher stopped before submission because its binary was missing in the invoking terminal; host is unconfirmed. Agent privileges stay unchanged. Populated restart/off-host recovery, isolated restore, rollback, access evidence and ownership remain open."
intervention_note: "Functional walkthrough is confirmed with UI follow-up. Latest founder inventory returned cluster_read unavailable_or_invalid_response; invoking host is unconfirmed, so no cluster fault is inferred. Next: run tools/vergabe_pilot_inventory_remote.py --run from the founder workstation terminal to target railiance01 explicitly. Agent privileges stay unchanged. Native inventory, populated recovery/access/rollback and ownership remain open."
priority: high
assignee: the-custodian
blocking_reason: "Two-account functional walkthrough is confirmed with UI follow-up. Await attended native inventory, populated restart, coherent PostgreSQL/media/issue-state off-host recovery, isolated restored workflow, rollback/access evidence and operating ownership. September 25 proves database-only restore and restart."
@ -356,6 +356,20 @@ The unnecessary custom founder launcher is retired from current source; its
earlier preparation and failed attempt remain historical evidence. The pinned
inventory helper and original agent gexec action remain unchanged.
2026-11-05 direct inventory return: user-reported JSON at 22:05:14Z has
`native_inventory_complete: false` and `cluster_read:
unavailable_or_invalid_response`. Host identity is unconfirmed; this establishes
neither a valid node inventory nor a cluster outage. Receipt:
`docs/evidence/2026-11-05-vergabe-founder-inventory-attempt.json`.
Prepared `tools/vergabe_pilot_inventory_remote.py` for the founder's workstation
terminal. It verifies the unchanged inventory source pin and connects explicitly
through SSH to railiance01, running that source as a quoted argument under the
node's existing sudo context. Stdin remains available for normal authentication;
no remote checkout, local admin kubeconfig or agent privilege grant is needed.
Default mode only reviews transport. The agent did not execute the founder's
SSH/sudo path. Native inventory and all operational recovery evidence remain open.
## Validate synthetic sizing against the exact release and shared contention