ota-102: the ui-ota test pins ui/VERSION 1.0.2; publish-manifest.sh --ui-pair-override <reason> ships an interface from another UI tree knowingly with the reason logged (tonight: interface 1.0.2 from the 0.3.22 tree to the 0.3.21 manifest, so every 0.3.21 app takes the Prove switch fix), the pair rule binding without it

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
igneum-labs 2026-10-07 18:39:19 +00:00
parent db02ac511f
commit e89922eaa5
2 changed files with 6 additions and 2 deletions

View file

@ -19,7 +19,7 @@ test('the embedded interface says built in; an over-the-air one says so with its
assert.equal(w.eyebrow, 'over the air');
assert.equal(w.help, 'Built in: 1.0.0.');
assert.equal(V.interfaceWords({}).line, '');
assert.equal(readFileSync(join(here, 'VERSION'), 'utf8').trim(), '1.0.0', 'the embedded interface version is three-part and in ui/VERSION');
assert.equal(readFileSync(join(here, 'VERSION'), 'utf8').trim(), '1.0.2', 'the embedded interface version is three-part and in ui/VERSION (1.0.2: the 0.3.22 tree, 7 October 2026)');
});
test('the help line says what is pending, refused, held back by the switch, or skipped', () => {

View file

@ -67,6 +67,7 @@ while [ $# -gt 0 ]; do
--drivers) DRIVERS_FILE="$2"; shift 2 ;;
--no-drivers) NO_DRIVERS=1; shift ;;
--ui) UI_FILE="$2"; shift 2 ;;
--ui-pair-override) UI_PAIR_OVERRIDE="$2"; shift 2 ;; # ship an interface from another UI tree knowingly, with the reason logged (7 Oct 2026: 1.0.2 to 0.3.21 apps)
--no-ui) NO_UI=1; shift ;;
--base-url) BASE="$2"; shift 2 ;;
--dest) DEST="$2"; shift 2 ;;
@ -290,7 +291,10 @@ open(out, "w").write(json.dumps(m, sort_keys=True, separators=(",", ":"), ensure
PY
# the version pair (7 October 2026): the interface bundle and every app entry must come from one UI tree; a carried-over
# ui object against a newer tree, or an entry without its interface version, refuses the publish here
node "$ROOT/tools/ui-ota/pair-check.mjs" "$NEW" || { echo "refused: the manifest's interface and its app entries are not one UI tree (tools/ui-ota/pair-check.mjs); cut the interface from this tree with tools/ui-ota/publish.mjs --version $UI_TREE_VERSION, or --no-ui" >&2; exit 2; }
if ! node "$ROOT/tools/ui-ota/pair-check.mjs" "$NEW"; then
if [ -n "${UI_PAIR_OVERRIDE:-}" ]; then echo "the interface is not from this manifest's UI tree; published anyway on --ui-pair-override: $UI_PAIR_OVERRIDE" >&2
else echo "refused: the manifest's interface and its app entries are not one UI tree (tools/ui-ota/pair-check.mjs); cut the interface from this tree with tools/ui-ota/publish.mjs --version $UI_TREE_VERSION, or --no-ui, or say why with --ui-pair-override \"<reason>\"" >&2; exit 2; fi
fi
"$SIGNER" sign "$KEY" "$NEW" > "$NEW.sig"
"$SIGNER" verify "$PUB" "$NEW" "$NEW.sig"
mv "$NEW" "$DEST/igneum-app-latest.json"