From 26b032fa95f0b85345ebfe9f09a43611a94046b3 Mon Sep 17 00:00:00 2001 From: "Jonathan D.A. Jewell" <6759885+hyperpolymath@users.noreply.github.com> Date: Tue, 22 Sep 2026 14:07:26 +0100 Subject: [PATCH] fix(launcher): cite the .deed standard at v0.4.0 (standards#960) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 19 citations named `launcher-standard.a2ml v0.3.0`. That file was DELETED upstream on 2026-09-22 by hyperpolymath/standards#952 (`be6c9580`, D73-C), translated to `launcher/launcher-standard_praxis.deed`. Every citation here pointed at a path that no longer resolves. standards#960 AC3. WHY THE v0.4.0 CLAIM IS EARNED, NOT ASSUMED The deed states its own delta at lines 22-24: "Bumped 0.3.0 -> 0.4.0 because the resolution ladders below now name the .deed file, which is consumer-visible." That delta lands entirely in `(resolution (standard-search`, the ladder a consumer uses to LOCATE the standard at runtime. This launcher never reads the standard at runtime -- it inlines the `(resolution (desktop-tools-search` ladder, whose six priorities match the deed's in order and are unchanged by 0.4.0. So nothing 0.4.0 added is unimplemented here: the rewrite is a citation fix, not a new claim. WHY THIS IS SAFE Comments only, with one deliberate exception. The `--version` output at `(version-output` prints a "Standards Compliance:" line; it is rewritten because a compliance claim must name the standard that exists. The deed constrains only `:first-line-format`, which is untouched and still conforms. `bash -n` passes; the launcher was not executed (it sources keepopen.sh unconditionally at top level). No consumer breaks. launch-scaffolder's parser keys on a literal `# @a2ml-metadata begin` delimiter (`metadata_block.rs:109`); this launcher has no such line and is not parseable by it today, before or after. All eleven fields the deed's `(metadata-block :required-fields` demands are present and untouched. CLAUSE NOTATION `§x` -> `(x ...)`, the deed's s-expression heads. Two are not mechanical: §a2ml-metadata-block -> (metadata-block ...) the deed's only rename, authorised by its own comment: "A2ML is a dead format name and the deed era does not carry it forward" §disinteg.remove -> (disinteg :remove ...) `:remove` is a KEY on `(disinteg`, verified at deed:228, not a subclause "ladder from ..." -> (resolution (desktop-tools-search ...)) the deed has two ladders; this one resolves .desktop-tools, so it is the first The old filename is deliberately NOT carried as a "formerly" gloss -- the standards#960 AC4 gate flags a retired filename at any version, by design. The history belongs here, not in the source. PROVED standards' AC4 gate (`scripts/check-launcher-standard-currency.sh`), run against this worktree: 23 defect rows over 19 lines before (four lines carry both a retired-filename and a stale-version defect), rc=1; zero defects after, rc=0. First run of that gate against a hand-written launcher. dev-notes/HANDOVER.adoc keeps its two v0.3.0 citations. It is dated 2026-08-13 and is a historical record; the gate allowlists it by path for that reason. Rewriting it to name a file that did not exist at handover time would falsify the record. Refs: hyperpolymath/standards#960, hyperpolymath/standards#952 Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01WPSJ7fBhVAMcpSffCBWUDo --- docs/IMPLEMENTATION-STATUS.adoc | 2 +- scripts/trigger-launcher.sh | 36 ++++++++++++++++----------------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/docs/IMPLEMENTATION-STATUS.adoc b/docs/IMPLEMENTATION-STATUS.adoc index 4a1a3b6..43be953 100644 --- a/docs/IMPLEMENTATION-STATUS.adoc +++ b/docs/IMPLEMENTATION-STATUS.adoc @@ -50,7 +50,7 @@ The user requested the following: ==== 3. Launcher Creation ✓ - **Status**: COMPLETED - **Actions Taken**: - - Created `trigger-launcher.sh` following launcher-standard.a2ml v0.3.0 + - Created `trigger-launcher.sh` following launcher-standard_praxis.deed v0.4.0 - Implements all required modes: - `--start`, `--stop`, `--status`, `--auto` (runtime) - `--integ`, `--disinteg` (integration) diff --git a/scripts/trigger-launcher.sh b/scripts/trigger-launcher.sh index 807fa8f..a5407ae 100755 --- a/scripts/trigger-launcher.sh +++ b/scripts/trigger-launcher.sh @@ -5,7 +5,7 @@ # trigger-launcher.sh — hyperpolymath-compliant desktop launcher for Trigger # # Compliant with: -# - standards/launcher/launcher-standard.a2ml v0.3.0 +# - standards/launcher/launcher-standard_praxis.deed v0.4.0 # - standards/docs/UX-standards/launcher-standard.adoc # - standards/docs/UX-standards/LM-LA-LIFECYCLE-STANDARD.adoc # @@ -15,7 +15,7 @@ set -euo pipefail # ============================================================================= -# A2ML Metadata Block (required by launcher-standard.a2ml §a2ml-metadata-block) +# Metadata Block (required by launcher-standard_praxis.deed (metadata-block ...)) # ============================================================================= # id: trigger-launcher # type: shell-script-launcher @@ -24,7 +24,7 @@ set -euo pipefail # app-display: Trigger # app-url: https://github.com/hyperpolymath/trigger # app-description: Telegram channel reporting utility with multi-account management -# standards-compliance: launcher-standard.a2ml v0.3.0 +# standards-compliance: launcher-standard_praxis.deed v0.4.0 # modes: --start --stop --status --auto --integ --disinteg --help --version --debug --logs --tail # platforms: linux linux-wsl-detect macos # lifecycle-phases-covered: runtime integration error-visibility @@ -44,7 +44,7 @@ VERSION="1.0.0" BUILD_SHA_SHORT="$(cd "$REPO_DIR" && git rev-parse --short HEAD 2>/dev/null || echo "dev")" PLATFORM="$(uname -s | tr '[:upper:]' '[:lower:]')" -# Resolve desktop tools directory using ladder from launcher-standard.a2ml +# Resolve desktop tools directory using ladder from launcher-standard_praxis.deed (resolution (desktop-tools-search ...)) RESOLVE_DESKTOP_TOOLS() { local candidates=( "${HP_DESKTOP_TOOLS:-}" @@ -74,12 +74,12 @@ if [[ -f "$DESKTOP_TOOLS_DIR/keepopen.sh" ]]; then fi # ============================================================================= -# Default Mode (launcher-standard.a2ml §default-mode) +# Default Mode (launcher-standard_praxis.deed (default-mode ...)) # ============================================================================= DEFAULT_MODE="--auto" # ============================================================================= -# Required Modes (launcher-standard.a2ml §required-modes) +# Required Modes (launcher-standard_praxis.deed (required-modes ...)) # ============================================================================= # Runtime modes @@ -97,7 +97,7 @@ MODE_HELP="--help" MODE_VERSION="--version" # ============================================================================= -# Aliases (launcher-standard.a2ml §aliases) +# Aliases (launcher-standard_praxis.deed (aliases ...)) # ============================================================================= ALIASES=( "--browser:--auto" @@ -119,14 +119,14 @@ RESOLVE_ALIAS() { } # ============================================================================= -# Optional Modes (launcher-standard.a2ml §optional-modes) +# Optional Modes (launcher-standard_praxis.deed (optional-modes ...)) # ============================================================================= MODE_DEBUG="--debug" MODE_LOGS="--logs" MODE_TAIL="--tail" # ============================================================================= -# Version Output (launcher-standard.a2ml §version-output) +# Version Output (launcher-standard_praxis.deed (version-output ...)) # ============================================================================= VERSION_OUTPUT() { # Machine-greppable first line @@ -135,11 +135,11 @@ VERSION_OUTPUT() { echo "Repository: ${APP_URL}" echo "Description: ${APP_DESCRIPTION}" echo "Launcher: ${APP_NAME}-launcher ${VERSION}" - echo "Standards Compliance: launcher-standard.a2ml v0.3.0" + echo "Standards Compliance: launcher-standard_praxis.deed v0.4.0" } # ============================================================================= -# Fallback Ladder (launcher-standard.a2ml §fallback-ladder) +# Fallback Ladder (launcher-standard_praxis.deed (fallback-ladder ...)) # ============================================================================= WRAPPER="keepopen.sh" FINAL_SHELL="bash -l at REPO_DIR" @@ -156,7 +156,7 @@ STAGE_SHELL_COLOUR="green" STAGE_SHELL_BEHAVIOUR="exec-bash-login-at-repo-dir" # ============================================================================= -# Runtime Configuration (launcher-standard.a2ml §runtime) +# Runtime Configuration (launcher-standard_praxis.deed (runtime ...)) # ============================================================================= BACKGROUND="nohup" @@ -195,7 +195,7 @@ GET_STARTUP_COMMAND() { } # ============================================================================= -# Browser Launch (launcher-standard.a2ml §browser-launch) +# Browser Launch (launcher-standard_praxis.deed (browser-launch ...)) # ============================================================================= OPEN_BROWSER() { local url="$1" @@ -244,7 +244,7 @@ OPEN_BROWSER() { } # ============================================================================= -# Error Visibility (launcher-standard.a2ml §error-visibility) +# Error Visibility (launcher-standard_praxis.deed (error-visibility ...)) # ============================================================================= REFERENCE_IMPL="launcher/gui-error.sh" GUI_DIALOG_CHAIN=("kdialog" "zenity" "notify-send" "xmessage") @@ -291,7 +291,7 @@ GUI_ERROR() { } # ============================================================================= -# Integration Configuration (launcher-standard.a2ml §integration) +# Integration Configuration (launcher-standard_praxis.deed (integration ...)) # ============================================================================= # Linux integration @@ -316,7 +316,7 @@ WINDOWS_BIN_DIR="$HOME/.local/bin" WINDOWS_SHORTCUT_PATTERN="{app-display}.lnk" # ============================================================================= -# Integrity Verification (launcher-standard.a2ml §integrity) +# Integrity Verification (launcher-standard_praxis.deed (integrity ...)) # ============================================================================= VERIFICATION_TOOL="verify-desktop-integrity.sh" TOOL_NAME="verify-desktop-integrity.sh" @@ -339,7 +339,7 @@ GET_VERIFICATION_TOOL() { } # ============================================================================= -# Soft Attach (launcher-standard.a2ml §soft-attach) +# Soft Attach (launcher-standard_praxis.deed (soft-attach ...)) # ============================================================================= REFERENCE_IMPL_SOFT_ATTACH="launcher/soft-attach.sh" @@ -792,7 +792,7 @@ DO_DISINTEG() { echo "[DISINTEG] Removing ${APP_DISPLAY} from desktop environment..." - # Remove items (launcher-standard.a2ml §disinteg.remove) + # Remove items (launcher-standard_praxis.deed (disinteg :remove ...)) local items_to_remove=( "$desktop_file" "$icon_file"