summaryrefslogtreecommitdiff
path: root/docs/legacy-comparison.md
blob: 344b76c9b108158d0a1b1b3dfa8dc93b792497c7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
# Legacy comparison status

## Current native semantic-comparison baseline

The native builder can collect portable semantic facts directly from either a
rootfs tar archive or its companion manifest and compare:

- package name/version records when supplied by a build manifest;
- regular-file SHA-256 digests, symlinks, and hardlinks;
- RT initrd path and SHA-256 digest;
- enabled systemd service symlinks; and
- archive member paths and kinds.

Legacy tar paths using a leading `./` are normalized before comparison. Hasher
metadata paths containing `.host` or `.fakedata` are excluded on both sides.
This comparison deliberately does not claim byte-for-byte tar equivalence.

Validated native plan command:

```text
$ cargo run -- plan --spec profiles/alt-controller.toml
target: alt-controller
architecture: x86_64
format: tar
stages:
  1. resolve
  2. install
  3. finalize-rootfs
  4. initramfs
  5. package
  6. manifest
```

## Current blocker: unavailable Clippy component

The required lint and formatting validations cannot run in the installed Rust
toolchain. Exact command output from this workspace:

```text
$ cargo clippy -- -D warnings
error: no such command: `clippy`

help: view all installed commands with `cargo --list`
help: find a package to install `clippy` with `cargo search cargo-clippy`

$ cargo fmt --check
error: no such command: `fmt`

help: a command with a similar name exists: `fix`

help: view all installed commands with `cargo --list`
help: find a package to install `fmt` with `cargo search cargo-fmt`
```

`cargo test` completed successfully before the formatting command (39
integration tests), and `cargo build --release` succeeds. The corrective action
is to install the Clippy and rustfmt components/packages for this toolchain,
then run:

```text
cargo clippy -- -D warnings
cargo fmt --check
```

## Verification-runner readiness mismatch

The workspace-level verifier correctly completed the Rust build and test
phases, but its detected web-service readiness probe is not applicable to this
CLI binary. Exact command evidence from this workspace:

```text
$ hermes verify --json
{"recipe":"Rust project","ok":false,"phases":[{"phase":"build","command":"cargo build","exitCode":0,"ok":true},{"phase":"test","command":"cargo test","exitCode":0,"ok":true}],"readiness":{"url":"http://127.0.0.1:8000/","ready":false,"error":"<urlopen error [Errno 111] Connection refused>"}}
```

The launched `alt-controller-image` process printed its Clap command help and
exited normally; it is not an HTTP server and intentionally does not listen on
port 8000. The corrective action is to configure the verifier for this CLI as
a build-and-test-only Rust project, without an HTTP readiness probe. Until
then, `cargo build --release`, `cargo test`, and explicit CLI smoke commands
are the applicable project validations.

## Next comparison action

Produce a native Controller artifact in an isolated workspace, collect its
companion manifest, and run `alt-controller-image compare` against the observed
legacy Controller tarball. Record every semantic delta as deliberate or
unresolved in this document.

## Current native build blocker: unavailable Hasher privilege helper

The native CLI reached its typed `HasherInstaller` boundary and invoked `hsh`
without invoking GNU Make, `mkimage`, or `mkimage-profiles`, but this host does
not permit Hasher's installed privilege helper to run. Exact command evidence:

```text
$ ./target/release/alt-controller-image build --spec profiles/alt-controller.toml --workspace /mnt/hermes-workspace/alt-controller-native-work-20260812 --output /mnt/hermes-workspace/alt-controller-native-20260812.tar
hsh: /usr/libexec/hasher-priv/getconf.sh: cannot access getconf helper.
error: hsh exited with exit status: 1
```

No workspace, tarball, or companion manifest was produced, so no native versus
legacy semantic comparison can honestly be recorded yet. The next corrective
action is to run the same native CLI build in an environment where the host's
Hasher privilege helper is usable (or have the host Hasher installation repaired),
then inspect its generated companion manifest and compare it with the observed
legacy Controller tarball.