From 4426e3fb8438da8f0633b4aa76316e17350182eb Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 14 Oct 2026 09:32:26 +0000 Subject: [PATCH 01/13] fix(panel-clades): Types, Layout and Foreign typecheck, and are gated The three ABI modules had never typechecked: their module names did not match their paths, Types.idr had 11 errors, and Layout.idr / Foreign.idr had more behind those. Several of their proofs were vacuous or false. They now sit at PanelClades/ABI/, typecheck under Idris2 0.8.0, and are built by check-abi.sh and CI with Grades.idr. - Types: C sizes over a closed CType universe (Idris cannot match on Type); HasSize/HasAlignment admit only the true size; DecEq through a retracted tag instead of a catch-all `No absurd`; Handle/CladeId witnesses built with `choose`; C tag round-trip theorems; Elem-based exhaustiveness; IO stubs that printed "verified" replaced by checked facts; thisPlatform is the constant it always was. - Layout: alignUp is units x alignment, so alignUpCorrect holds by construction; decDivides decides alignment by an equation; struct size is the furthest field end rounded up; verifyAllPlatforms checks every platform; the example's 24-byte size is computed by Refl. - Foreign: string primitives declared before use; one resultFromInt. - check-abi.sh fails on a PanelClades/ABI module missing from the ipkg and on escape hatches; three new expected rejections. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01Y6FD63UrriRBHqmhhEca9t --- .github/workflows/build-validation.yml | 4 +- CHANGELOG.adoc | 25 + docs/ENSAID.adoc | 2 +- panel-clades/ffi/zig/src/main.zig | 4 +- panel-clades/scripts/check-abi.sh | 23 +- panel-clades/src/abi/Layout.idr | 217 -------- .../src/abi/{ => PanelClades/ABI}/Foreign.idr | 85 ++-- .../src/abi/PanelClades/ABI/Layout.idr | 273 ++++++++++ .../src/abi/PanelClades/ABI/Types.idr | 475 ++++++++++++++++++ panel-clades/src/abi/README.adoc | 145 ++++-- panel-clades/src/abi/Types.idr | 356 ------------- panel-clades/src/abi/panel-clades-grades.ipkg | 14 +- panel-clades/tests/reject/MisalignedField.idr | 16 + panel-clades/tests/reject/NullHandle.idr | 17 + .../tests/reject/WasmPointerIsEightBytes.idr | 16 + 15 files changed, 977 insertions(+), 695 deletions(-) delete mode 100644 panel-clades/src/abi/Layout.idr rename panel-clades/src/abi/{ => PanelClades/ABI}/Foreign.idr (92%) create mode 100644 panel-clades/src/abi/PanelClades/ABI/Layout.idr create mode 100644 panel-clades/src/abi/PanelClades/ABI/Types.idr delete mode 100644 panel-clades/src/abi/Types.idr create mode 100644 panel-clades/tests/reject/MisalignedField.idr create mode 100644 panel-clades/tests/reject/NullHandle.idr create mode 100644 panel-clades/tests/reject/WasmPointerIsEightBytes.idr diff --git a/.github/workflows/build-validation.yml b/.github/workflows/build-validation.yml index a9fae686..74fa1a26 100644 --- a/.github/workflows/build-validation.yml +++ b/.github/workflows/build-validation.yml @@ -62,7 +62,7 @@ jobs: - name: Panel wiring verification gate run: ./tools/pcc/target/release/panll panel verify --repo-root . - # panel-clades grades ABI: PanelClades.ABI.Grades typechecks against + # panel-clades ABI: every PanelClades.ABI module typechecks against # typed-wasm's grade kernel at its pin, and the expected rejections are # refused. Idris2 publishes no binaries, so 0.8.0 is built from source, # fetched by the commit its v0.8.0 tag names (a tag can move; the SHA @@ -100,5 +100,5 @@ jobs: || { tail -60 "$RUNNER_TEMP/idris2-install.log"; exit 1; } echo "$HOME/.idris2/bin" >> "$GITHUB_PATH" - - name: panel-clades grades ABI + - name: panel-clades ABI run: bash panel-clades/scripts/check-abi.sh diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc index 9f2bcb26..d257ac56 100644 --- a/CHANGELOG.adoc +++ b/CHANGELOG.adoc @@ -9,6 +9,31 @@ https://semver.org/spec/v2.0.0.html[Semantic Versioning]. === https://github.com/hyperpolymath/panll/compare/v0.1.0...HEAD[Unreleased] +==== Fixed (2026-10-14 — panel-clades Types/Layout/Foreign typecheck) + +* `+Types.idr+`, `+Layout.idr+` and `+Foreign.idr+` had never typechecked. +They now live at their module paths under +`+panel-clades/src/abi/PanelClades/ABI/+`, typecheck under Idris2 0.8.0, +and are built by `+check-abi.sh+` and CI with `+Grades.idr+`. +* Changes that alter meaning: +** C sizes are a closed universe (`+CType+`), not a match on `+Type+`. +** `+HasSize+` / `+HasAlignment+` admit only the true size. +** `+DecEq+` goes through a retracted tag, not `+No absurd+`. +** `+alignUp+` is units × alignment, so `+alignUpCorrect+` holds by +construction. +** Field alignment is decided by an equation (`+decDivides+`). +** `+calcStructSize+` is the furthest field end, rounded up. +** `+verifyAllPlatforms+` now checks every platform. +** The `+verifySizes+` / `+verifyAlignments+` stubs, which only printed +"verified", are replaced by checked facts. +* Three more expected rejections: `+WasmPointerIsEightBytes+`, +`+NullHandle+`, `+MisalignedField+`. +* `+check-abi.sh+` now fails on a `+PanelClades/ABI+` module missing from the +ipkg, and on `+believe_me+` / `+assert_total+` / `+assert_smaller+` / +`+idris_crash+` / `+unsafePerformIO+`. +* *Still open:* nothing checks that the Zig FFI agrees with these +definitions (`+panel-clades/src/abi/README.adoc+`, Proof status). + ==== Added (2026-10-14 — graded clade contracts over typed-wasm's grade kernel, PWL-01) * `+panel-clades/src/abi/PanelClades/ABI/Grades.idr+` grades a clade's diff --git a/docs/ENSAID.adoc b/docs/ENSAID.adoc index 8a0d1c3f..0fae8060 100644 --- a/docs/ENSAID.adoc +++ b/docs/ENSAID.adoc @@ -37,7 +37,7 @@ _how PanLL implements_ each spec section — not the spec itself. | 06-panel-taxonomy | `CladeBrowserEngine.res` with 13 CladeKinds. Idris2 ABI in - `panel-clades/src/abi/Types.idr`. + `panel-clades/src/abi/PanelClades/ABI/Types.idr`. | 07-contractiles | `ContractilesEngine.res` — Strict/Warn/Adaptive modes. diff --git a/panel-clades/ffi/zig/src/main.zig b/panel-clades/ffi/zig/src/main.zig index 8917aaa1..1a4b66bb 100644 --- a/panel-clades/ffi/zig/src/main.zig +++ b/panel-clades/ffi/zig/src/main.zig @@ -1,6 +1,6 @@ // PanLL Panel-Clades FFI Implementation // -// This module implements the C-compatible FFI declared in src/abi/Foreign.idr +// This module implements the C-compatible FFI declared in src/abi/PanelClades/ABI/Foreign.idr // for the panel-clades subsystem. All types and layouts must match the // Idris2 ABI definitions in PanelClades.ABI.Types. // @@ -30,7 +30,7 @@ fn clearError() void { } //============================================================================== -// Core Types (must match src/abi/Types.idr) +// Core Types (must match src/abi/PanelClades/ABI/Types.idr) //============================================================================== /// Result codes (must match Idris2 Result type) diff --git a/panel-clades/scripts/check-abi.sh b/panel-clades/scripts/check-abi.sh index 7400dd18..35422ba2 100755 --- a/panel-clades/scripts/check-abi.sh +++ b/panel-clades/scripts/check-abi.sh @@ -2,8 +2,9 @@ # SPDX-License-Identifier: MPL-2.0 # Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) # -# check-abi.sh — typecheck the panel-clades grades ABI against typed-wasm's -# grade kernel at its pin, and run the expected rejections. +# check-abi.sh — typecheck the panel-clades ABI (all of src/abi/PanelClades) +# against typed-wasm's grade kernel at its pin, and run the expected +# rejections. # # 1. fetch typed-wasm at the pin (scripts/fetch-siblings.sh) and build its # ABI package (the kernel's TTCs); @@ -13,8 +14,9 @@ # the message in its `-- EXPECT:` line, and not for a scope/parse/path # reason. # -# A missing toolchain is a failure, never a skip. Types.idr / Layout.idr / -# Foreign.idr are NOT checked: they do not typecheck (src/abi/README.adoc). +# A missing toolchain is a failure, never a skip. Every module under +# src/abi/PanelClades/ must be listed in the ipkg (an unlisted one would be +# skipped silently), and none may use an escape hatch. set -uo pipefail cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." || exit 1 ROOT="$(pwd)" @@ -30,6 +32,17 @@ iv="$(idris2 --version)"; echo "$iv" case "$iv" in *"version 0.8.0"*) ;; *) [ -n "${ALLOW_ANY_IDRIS2:-}" ] || die "Idris2 0.8.0 required (set ALLOW_ANY_IDRIS2=1 to try another)" ;; esac rm -rf "$OUT"; mkdir -p "$OUT" +IPKG="src/abi/panel-clades-grades.ipkg" +for f in src/abi/PanelClades/ABI/*.idr; do + mod="$(printf '%s' "${f#src/abi/}" | sed 's|\.idr$||; s|/|.|g')" + grep -qE "^[[:space:]]*(modules[[:space:]]*=|,)[[:space:]]*${mod//./\\.}[[:space:]]*$" "$IPKG" \ + || err "$mod is not listed in $IPKG (it would never be checked)" +done +if grep -nE '\b(believe_me|assert_total|assert_smaller|idris_crash|unsafePerformIO)\b' src/abi/PanelClades/ABI/*.idr; then + err "escape hatch in src/abi/PanelClades/ABI (lines above)" +fi +[ "$fail" -eq 0 ] && pass "every PanelClades/ABI module is listed in the ipkg; no escape hatches" + bash scripts/fetch-siblings.sh || die "could not fetch typed-wasm at its pin" TW="_build/dependencies/typed-wasm/src/abi" rm -rf "$TW/build" @@ -71,4 +84,4 @@ done echo [ "$fail" -eq 0 ] || { echo "PANEL-CLADES ABI CHECK FAILED"; exit 1; } -echo "OK: panel-clades grades ABI — builds against the kernel, ${n} rejection(s)" +echo "OK: panel-clades ABI — builds against the kernel, ${n} rejection(s)" diff --git a/panel-clades/src/abi/Layout.idr b/panel-clades/src/abi/Layout.idr deleted file mode 100644 index d999742a..00000000 --- a/panel-clades/src/abi/Layout.idr +++ /dev/null @@ -1,217 +0,0 @@ --- SPDX-License-Identifier: MPL-2.0 --- Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) --- -||| Memory Layout Proofs for PanLL Panel-Clades -||| -||| This module provides formal proofs about memory layout, alignment, -||| and padding for C-compatible structs used by the panel-clades ABI. -||| -||| @see https://en.wikipedia.org/wiki/Data_structure_alignment - -module PanelClades.ABI.Layout - -import PanelClades.ABI.Types -import Data.Vect -import Data.So - -%default total - --------------------------------------------------------------------------------- --- Alignment Utilities --------------------------------------------------------------------------------- - -||| Calculate padding needed for alignment -public export -paddingFor : (offset : Nat) -> (alignment : Nat) -> Nat -paddingFor offset alignment = - if offset `mod` alignment == 0 - then 0 - else alignment - (offset `mod` alignment) - -||| Proof that alignment divides aligned size -public export -data Divides : Nat -> Nat -> Type where - DivideBy : (k : Nat) -> {n : Nat} -> {m : Nat} -> (m = k * n) -> Divides n m - -||| Round up to next alignment boundary -public export -alignUp : (size : Nat) -> (alignment : Nat) -> Nat -alignUp size alignment = - size + paddingFor size alignment - -||| Proof that alignUp produces aligned result -public export -alignUpCorrect : (size : Nat) -> (align : Nat) -> (align > 0) -> Divides align (alignUp size align) -alignUpCorrect size align prf = - -- Proof that (size + padding) is divisible by align - DivideBy ((size + paddingFor size align) `div` align) Refl - --------------------------------------------------------------------------------- --- Struct Field Layout --------------------------------------------------------------------------------- - -||| A field in a struct with its offset and size -public export -record Field where - constructor MkField - name : String - offset : Nat - size : Nat - alignment : Nat - -||| Calculate the offset of the next field -public export -nextFieldOffset : Field -> Nat -nextFieldOffset f = alignUp (f.offset + f.size) f.alignment - -||| A struct layout is a list of fields with proofs -public export -record StructLayout where - constructor MkStructLayout - fields : Vect n Field - totalSize : Nat - alignment : Nat - {auto 0 sizeCorrect : So (totalSize >= sum (map (\f => f.size) fields))} - {auto 0 aligned : Divides alignment totalSize} - -||| Calculate total struct size with padding -public export -calcStructSize : Vect n Field -> Nat -> Nat -calcStructSize [] align = 0 -calcStructSize (f :: fs) align = - let lastOffset = foldl (\acc, field => nextFieldOffset field) f.offset fs - lastSize = foldr (\field, _ => field.size) f.size fs - in alignUp (lastOffset + lastSize) align - -||| Proof that field offsets are correctly aligned -public export -data FieldsAligned : Vect n Field -> Type where - NoFields : FieldsAligned [] - ConsField : - (f : Field) -> - (rest : Vect n Field) -> - Divides f.alignment f.offset -> - FieldsAligned rest -> - FieldsAligned (f :: rest) - -||| Verify a struct layout is valid -public export -verifyLayout : (fields : Vect n Field) -> (align : Nat) -> Either String StructLayout -verifyLayout fields align = - let size = calcStructSize fields align - in case decSo (size >= sum (map (\f => f.size) fields)) of - Yes prf => Right (MkStructLayout fields size align) - No _ => Left "Invalid struct size" - --------------------------------------------------------------------------------- --- Platform-Specific Layouts --------------------------------------------------------------------------------- - -||| Struct layout may differ by platform -public export -PlatformLayout : Platform -> Type -> Type -PlatformLayout p t = StructLayout - -||| Verify layout is correct for all platforms -public export -verifyAllPlatforms : - (layouts : (p : Platform) -> PlatformLayout p t) -> - Either String () -verifyAllPlatforms layouts = - -- Check that layout is valid on all platforms - Right () - --------------------------------------------------------------------------------- --- C ABI Compatibility --------------------------------------------------------------------------------- - -||| Proof that a struct follows C ABI rules -public export -data CABICompliant : StructLayout -> Type where - CABIOk : - (layout : StructLayout) -> - FieldsAligned layout.fields -> - CABICompliant layout - -||| Attempt to prove all fields are correctly aligned. -||| -||| Recursively checks that each field's offset is divisible by its -||| alignment. Returns `Left` with an error if any field fails. -public export -proveFieldsAligned : (fields : Vect n Field) -> Either String (FieldsAligned fields) -proveFieldsAligned [] = Right NoFields -proveFieldsAligned (f :: rest) = - case proveFieldsAligned rest of - Left err => Left err - Right restProof => - if f.offset `mod` f.alignment == 0 - then Right (ConsField f rest (DivideBy (f.offset `div` f.alignment) Refl) restProof) - else Left ("Field " ++ f.name ++ " at offset " ++ show f.offset - ++ " not aligned to " ++ show f.alignment) - -||| Check if layout follows C ABI -public export -checkCABI : (layout : StructLayout) -> Either String (CABICompliant layout) -checkCABI layout = - case proveFieldsAligned layout.fields of - Right proof => Right (CABIOk layout proof) - Left err => Left err - --------------------------------------------------------------------------------- --- Example Layouts --------------------------------------------------------------------------------- - -||| Example: Simple struct layout -public export -exampleLayout : StructLayout -exampleLayout = - MkStructLayout - [ MkField "x" 0 4 4 -- Bits32 at offset 0 - , MkField "y" 8 8 8 -- Bits64 at offset 8 (4 bytes padding) - , MkField "z" 16 8 8 -- Double at offset 16 - ] - 24 -- Total size: 24 bytes - 8 -- Alignment: 8 bytes - -||| Proof that example layout is valid. -||| -||| All three fields have offsets divisible by their alignment: -||| x: offset 0, alignment 4 → 0 = 0 * 4 ✓ -||| y: offset 8, alignment 8 → 8 = 1 * 8 ✓ -||| z: offset 16, alignment 8 → 16 = 2 * 8 ✓ -export -exampleFieldsAligned : FieldsAligned [MkField "x" 0 4 4, MkField "y" 8 8 8, MkField "z" 16 8 8] -exampleFieldsAligned = - ConsField (MkField "x" 0 4 4) [MkField "y" 8 8 8, MkField "z" 16 8 8] - (DivideBy 0 Refl) - (ConsField (MkField "y" 8 8 8) [MkField "z" 16 8 8] - (DivideBy 1 Refl) - (ConsField (MkField "z" 16 8 8) [] - (DivideBy 2 Refl) - NoFields)) - -export -exampleLayoutValid : CABICompliant exampleLayout -exampleLayoutValid = CABIOk exampleLayout exampleFieldsAligned - --------------------------------------------------------------------------------- --- Offset Calculation --------------------------------------------------------------------------------- - -||| Calculate field offset with proof of correctness -public export -fieldOffset : (layout : StructLayout) -> (fieldName : String) -> Maybe (n : Nat ** Field) -fieldOffset layout name = - case findIndex (\f => f.name == name) layout.fields of - Just idx => Just (finToNat idx ** index idx layout.fields) - Nothing => Nothing - -||| Runtime check that a field's offset and size fit within the struct. -||| -||| Returns `True` when the field's span `[offset, offset+size)` is fully -||| contained within `layout.totalSize`. A static proof would require an -||| `Elem f layout.fields` witness; this runtime version suffices for the -||| ABI validation pipeline where fields are always drawn from the layout. -public export -offsetInBounds : (layout : StructLayout) -> (f : Field) -> Bool -offsetInBounds layout f = f.offset + f.size <= layout.totalSize diff --git a/panel-clades/src/abi/Foreign.idr b/panel-clades/src/abi/PanelClades/ABI/Foreign.idr similarity index 92% rename from panel-clades/src/abi/Foreign.idr rename to panel-clades/src/abi/PanelClades/ABI/Foreign.idr index 2c540be1..2b70ba4c 100644 --- a/panel-clades/src/abi/Foreign.idr +++ b/panel-clades/src/abi/PanelClades/ABI/Foreign.idr @@ -12,8 +12,9 @@ ||| - queryTraits — query the traits/capabilities of a loaded clade ||| - cladeKindCount — return the compile-time count of clade kinds (13) ||| -||| All functions are declared here with type signatures and safety proofs. -||| Implementations live in ffi/zig/ +||| Implementations live in ffi/zig/. This module typechecks (check-abi.sh); +||| nothing checks that the Zig side exports these symbols with these +||| types, and nothing here links against it. module PanelClades.ABI.Foreign @@ -67,6 +68,37 @@ process h input = do 0 => Left Error n => Right n +-------------------------------------------------------------------------------- +-- String Operations +-------------------------------------------------------------------------------- + +||| Convert C string to Idris String +export +%foreign "support:idris2_getString, libidris2_support" +prim__getString : Bits64 -> String + +||| Free C string +export +%foreign "C:panel_clades_free_string, libpanel_clades" +prim__freeString : Bits64 -> PrimIO () + +||| Get string result from library +export +%foreign "C:panel_clades_get_string, libpanel_clades" +prim__getResult : Bits64 -> PrimIO Bits64 + +||| Safe string getter +export +getString : Handle -> IO (Maybe String) +getString h = do + ptr <- primIO (prim__getResult (handlePtr h)) + if ptr == 0 + then pure Nothing + else do + let str = prim__getString ptr + primIO (prim__freeString ptr) + pure (Just str) + -------------------------------------------------------------------------------- -- Clade-Specific FFI -------------------------------------------------------------------------------- @@ -87,15 +119,6 @@ loadClade h cladeIdStr = do Just Ok => Right () Just err => Left err Nothing => Left Error - where - resultFromInt : Bits32 -> Maybe Result - resultFromInt 0 = Just Ok - resultFromInt 1 = Just Error - resultFromInt 2 = Just InvalidParam - resultFromInt 3 = Just OutOfMemory - resultFromInt 4 = Just NullPointer - resultFromInt _ = Nothing - ||| Query the traits (capabilities) of a loaded clade. ||| Returns a pointer to a null-terminated trait descriptor string, or 0 ||| on failure. The caller must free the string via panel_clades_free_string. @@ -132,37 +155,6 @@ verifyCladeKindCount = do n <- primIO prim__cladeKindCount pure (n == cast cladeKindCount) --------------------------------------------------------------------------------- --- String Operations --------------------------------------------------------------------------------- - -||| Convert C string to Idris String -export -%foreign "support:idris2_getString, libidris2_support" -prim__getString : Bits64 -> String - -||| Free C string -export -%foreign "C:panel_clades_free_string, libpanel_clades" -prim__freeString : Bits64 -> PrimIO () - -||| Get string result from library -export -%foreign "C:panel_clades_get_string, libpanel_clades" -prim__getResult : Bits64 -> PrimIO Bits64 - -||| Safe string getter -export -getString : Handle -> IO (Maybe String) -getString h = do - ptr <- primIO (prim__getResult (handlePtr h)) - if ptr == 0 - then pure Nothing - else do - let str = prim__getString ptr - primIO (prim__freeString ptr) - pure (Just str) - -------------------------------------------------------------------------------- -- Array/Buffer Operations -------------------------------------------------------------------------------- @@ -181,15 +173,6 @@ processArray h buf len = do Just Ok => Right () Just err => Left err Nothing => Left Error - where - resultFromInt : Bits32 -> Maybe Result - resultFromInt 0 = Just Ok - resultFromInt 1 = Just Error - resultFromInt 2 = Just InvalidParam - resultFromInt 3 = Just OutOfMemory - resultFromInt 4 = Just NullPointer - resultFromInt _ = Nothing - -------------------------------------------------------------------------------- -- Error Handling -------------------------------------------------------------------------------- diff --git a/panel-clades/src/abi/PanelClades/ABI/Layout.idr b/panel-clades/src/abi/PanelClades/ABI/Layout.idr new file mode 100644 index 00000000..f92ced41 --- /dev/null +++ b/panel-clades/src/abi/PanelClades/ABI/Layout.idr @@ -0,0 +1,273 @@ +-- SPDX-License-Identifier: MPL-2.0 +-- Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) +-- +||| Memory Layout Proofs for PanLL Panel-Clades +||| +||| Alignment and struct layout for the C-compatible structs of the +||| panel-clades ABI. +||| +||| What is proved: rounding up to an alignment always lands on a multiple +||| of it (`alignUpCorrect`, by construction), every computed struct size +||| is a multiple of its alignment (`calcStructSizeAligned`), and every +||| `Divides` / `FieldsAligned` witness is a real equation. Field +||| alignment is decided by an equation on Nat (`decDivides`), not by a +||| Boolean test followed by an unproved `Refl`. +||| +||| What is NOT proved: that a computed size is at least the end of the +||| last field. `verifyLayout` checks that at run time, and refuses a +||| layout that fails it. +||| +||| @see https://en.wikipedia.org/wiki/Data_structure_alignment + +module PanelClades.ABI.Layout + +import PanelClades.ABI.Types +import Data.List +import Data.So +import Decidable.Equality + +%default total + +-------------------------------------------------------------------------------- +-- Alignment Utilities +-------------------------------------------------------------------------------- + +||| `Divides n m`: m is k times n, for an explicit k. +public export +data Divides : Nat -> Nat -> Type where + DivideBy : (k : Nat) -> {n : Nat} -> {m : Nat} -> (m = k * n) -> Divides n m + +||| Units of `unit` bytes needed to cover `size` bytes, counting down a +||| fuel bound. Structural, so it computes during type checking (Nat `div` +||| does not). With fuel ≥ size and unit ≥ 1 the fuel never runs out. +public export +unitsFor : (fuel : Nat) -> (size : Nat) -> (unit : Nat) -> Nat +unitsFor Z _ _ = Z +unitsFor (S _) Z _ = Z +unitsFor (S fuel) (S k) unit = S (unitsFor fuel (S k `minus` unit) unit) + +||| How many alignment units are needed to cover `size` bytes (ceiling +||| division; 0 units when the alignment is 0). +public export +alignUnits : (size : Nat) -> (alignment : Nat) -> Nat +alignUnits _ Z = Z +alignUnits size (S align) = unitsFor size size (S align) + +||| Round up to the next alignment boundary: a whole number of units. +public export +alignUp : (size : Nat) -> (alignment : Nat) -> Nat +alignUp size alignment = alignUnits size alignment * alignment + +||| Padding needed after `offset` to reach the next boundary. +public export +paddingFor : (offset : Nat) -> (alignment : Nat) -> Nat +paddingFor offset alignment = alignUp offset alignment `minus` offset + +||| `alignUp` always produces a multiple of the alignment. This holds by +||| construction (alignUp is defined as units × alignment), for every +||| alignment including 0. +public export +alignUpCorrect : (size : Nat) -> (align : Nat) -> Divides align (alignUp size align) +alignUpCorrect size align = DivideBy (alignUnits size align) Refl + +||| Decide whether n divides m, returning the witness when it does. The +||| candidate quotient is the ceiling quotient (equal to the exact one +||| whenever n divides m), then the equation is checked with Nat's +||| structural decidable equality, so a `Just` always carries a true +||| equation. `Nothing` means "not shown to divide". +public export +decDivides : (n, m : Nat) -> Maybe (Divides n m) +decDivides n m = + case decEq m (alignUnits m n * n) of + Yes prf => Just (DivideBy (alignUnits m n) prf) + No _ => Nothing + +-------------------------------------------------------------------------------- +-- Struct Field Layout +-------------------------------------------------------------------------------- + +||| A field in a struct with its offset and size +public export +record Field where + constructor MkField + name : String + offset : Nat + size : Nat + alignment : Nat + +||| The byte just past a field +public export +fieldEnd : Field -> Nat +fieldEnd f = f.offset + f.size + +||| Calculate the offset of the next field after this one +public export +nextFieldOffset : Field -> Nat +nextFieldOffset f = alignUp (fieldEnd f) f.alignment + +||| The furthest byte any field reaches +public export +structEnd : List Field -> Nat +structEnd = foldr (\f, acc => max (fieldEnd f) acc) 0 + +||| Total struct size: the furthest field end, rounded up to the struct's +||| alignment. (Fields carry explicit offsets, so this is the C rule; the +||| earlier fold here ignored its accumulator and mixed up which field it +||| measured.) +public export +calcStructSize : List Field -> Nat -> Nat +calcStructSize fields align = alignUp (structEnd fields) align + +||| Every computed struct size is a multiple of the struct alignment. +public export +calcStructSizeAligned : (fields : List Field) -> (align : Nat) + -> Divides align (calcStructSize fields align) +calcStructSizeAligned fields align = alignUpCorrect (structEnd fields) align + +||| A struct layout: its fields, its size and alignment, a check that the +||| size covers the fields, and a proof that the size is a multiple of the +||| alignment. +public export +record StructLayout where + constructor MkStructLayout + fields : List Field + totalSize : Nat + alignment : Nat + {auto 0 sizeCorrect : So (totalSize >= structEnd fields)} + 0 aligned : Divides alignment totalSize + +||| Proof that every field's offset is a multiple of its alignment +public export +data FieldsAligned : List Field -> Type where + NoFields : FieldsAligned [] + ConsField : + (f : Field) -> + (rest : List Field) -> + Divides f.alignment f.offset -> + FieldsAligned rest -> + FieldsAligned (f :: rest) + +||| Build a layout whose size is computed from its fields; refused when +||| the computed size does not cover them. +public export +verifyLayout : (fields : List Field) -> (align : Nat) -> Either String StructLayout +verifyLayout fields align = + case choose (calcStructSize fields align >= structEnd fields) of + Left covers => + Right (MkStructLayout fields (calcStructSize fields align) align + {sizeCorrect = covers} (calcStructSizeAligned fields align)) + Right _ => Left "Invalid struct size" + +-------------------------------------------------------------------------------- +-- C ABI Compatibility +-------------------------------------------------------------------------------- + +||| Proof that a struct follows C ABI rules (every field aligned) +public export +data CABICompliant : StructLayout -> Type where + CABIOk : + (layout : StructLayout) -> + FieldsAligned layout.fields -> + CABICompliant layout + +||| Attempt to prove all fields are correctly aligned. Returns `Left` +||| naming the first field whose offset is not shown to be a multiple of +||| its alignment. +public export +proveFieldsAligned : (fields : List Field) -> Either String (FieldsAligned fields) +proveFieldsAligned [] = Right NoFields +proveFieldsAligned (f :: rest) = + case decDivides f.alignment f.offset of + Nothing => Left ("Field " ++ f.name ++ " at offset " ++ show f.offset + ++ " not aligned to " ++ show f.alignment) + Just here => + case proveFieldsAligned rest of + Left err => Left err + Right restProof => Right (ConsField f rest here restProof) + +||| Check if layout follows C ABI +public export +checkCABI : (layout : StructLayout) -> Either String (CABICompliant layout) +checkCABI layout = + case proveFieldsAligned layout.fields of + Right prf => Right (CABIOk layout prf) + Left err => Left err + +-------------------------------------------------------------------------------- +-- Platform-Specific Layouts +-------------------------------------------------------------------------------- + +||| Struct layout may differ by platform +public export +PlatformLayout : Platform -> Type -> Type +PlatformLayout _ _ = StructLayout + +||| Check a per-platform layout on every platform in `allPlatforms` +||| (this used to return `Right ()` without looking). +public export +verifyAllPlatforms : + (layouts : (p : Platform) -> PlatformLayout p t) -> + Either String () +verifyAllPlatforms layouts = go allPlatforms + where + go : List Platform -> Either String () + go [] = Right () + go (p :: ps) = case checkCABI (layouts p) of + Left err => Left err + Right _ => go ps + +-------------------------------------------------------------------------------- +-- Example Layouts +-------------------------------------------------------------------------------- + +||| The example struct's fields: a u32, then a u64 and a double, each on +||| its natural boundary (4 bytes of padding after x). +public export +exampleFields : List Field +exampleFields = + [ MkField "x" 0 4 4 -- Bits32 at offset 0 + , MkField "y" 8 8 8 -- Bits64 at offset 8 (4 bytes padding) + , MkField "z" 16 8 8 -- Double at offset 16 + ] + +||| Example: simple struct layout, 24 bytes, 8-byte aligned (24 = 3 × 8). +public export +exampleLayout : StructLayout +exampleLayout = MkStructLayout exampleFields 24 8 (DivideBy 3 Refl) + +||| The computed size agrees with the declared one. +export +exampleSizeComputed : calcStructSize PanelClades.ABI.Layout.exampleFields 8 = 24 +exampleSizeComputed = Refl + +||| Proof that example layout's fields are aligned: +||| x: 0 = 0 × 4, y: 8 = 1 × 8, z: 16 = 2 × 8 +export +exampleFieldsAligned : FieldsAligned PanelClades.ABI.Layout.exampleFields +exampleFieldsAligned = + ConsField (MkField "x" 0 4 4) [MkField "y" 8 8 8, MkField "z" 16 8 8] + (DivideBy 0 Refl) + (ConsField (MkField "y" 8 8 8) [MkField "z" 16 8 8] + (DivideBy 1 Refl) + (ConsField (MkField "z" 16 8 8) [] + (DivideBy 2 Refl) + NoFields)) + +export +exampleLayoutValid : CABICompliant PanelClades.ABI.Layout.exampleLayout +exampleLayoutValid = CABIOk exampleLayout exampleFieldsAligned + +-------------------------------------------------------------------------------- +-- Field lookup +-------------------------------------------------------------------------------- + +||| Find a field by name. +public export +lookupField : (layout : StructLayout) -> (fieldName : String) -> Maybe Field +lookupField layout name = find (\f => f.name == name) layout.fields + +||| Run-time check that a field's span `[offset, offset+size)` fits inside +||| the struct. +public export +offsetInBounds : (layout : StructLayout) -> (f : Field) -> Bool +offsetInBounds layout f = fieldEnd f <= layout.totalSize diff --git a/panel-clades/src/abi/PanelClades/ABI/Types.idr b/panel-clades/src/abi/PanelClades/ABI/Types.idr new file mode 100644 index 00000000..a948b9c8 --- /dev/null +++ b/panel-clades/src/abi/PanelClades/ABI/Types.idr @@ -0,0 +1,475 @@ +-- SPDX-License-Identifier: MPL-2.0 +-- Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) +-- +||| ABI Type Definitions for PanLL Panel-Clades +||| +||| This module defines the Application Binary Interface (ABI) for the +||| panel-clades subsystem of PanLL: clade identification, clade kinds, +||| panel integration records, clade capabilities, and the C types the +||| Zig FFI (`panel-clades/ffi/zig/`) exchanges. +||| +||| Panel-clades categorises every PanLL panel into one of 13 clade kinds. +||| Each kind describes the panel's primary role inside a workspace. +||| +||| What is proved here (checked by `panel-clades/scripts/check-abi.sh`): +||| * the C tag encodings of `Result` and `CladeKind` round-trip, so they +||| are injective (`resultRoundTrip`, `cladeKindRoundTrip`); +||| * equality on both is decidable without a catch-all `absurd`; +||| * `allCladeKinds` lists every kind (`cladeKindExhaustive`) and has +||| length `cladeKindCount`; +||| * a `Handle` is never null and a `CladeId` never empty, by +||| construction. +||| What is NOT proved: that these sizes and tags are what the Zig side +||| actually uses. `ffi/zig/src/main.zig` restates them by hand. + +module PanelClades.ABI.Types + +import Data.So +import Data.Vect +import Data.Vect.Elem +import Decidable.Equality + +%default total + +-------------------------------------------------------------------------------- +-- Platform +-------------------------------------------------------------------------------- + +||| Supported platforms for this ABI +public export +data Platform = Linux | Windows | MacOS | BSD | WASM + +||| Every platform, for checks that must hold on all of them. +public export +allPlatforms : List Platform +allPlatforms = [Linux, Windows, MacOS, BSD, WASM] + +||| The platform these definitions are instantiated at. A constant: there +||| is no target detection (an earlier `%runElab` here returned this same +||| constant and was described as detection). +public export +thisPlatform : Platform +thisPlatform = Linux + +-------------------------------------------------------------------------------- +-- Decidable equality through a retracted tag +-------------------------------------------------------------------------------- + +||| If `untag` is a left inverse of `tag`, then `tag` is injective and +||| equality is decided by comparing tags. This replaces catch-all +||| `decEq _ _ = No absurd` clauses, which have no proof behind them. +public export +decEqViaTag : (tag : a -> Nat) -> (untag : Nat -> Maybe a) + -> (retract : (x : a) -> untag (tag x) = Just x) + -> (x, y : a) -> Dec (x = y) +decEqViaTag tag untag retract x y with (decEq (tag x) (tag y)) + _ | Yes same = Yes (injective (trans (sym (retract x)) (trans (cong untag same) (retract y)))) + _ | No diff = No (\eq => diff (cong tag eq)) + +-------------------------------------------------------------------------------- +-- Result codes +-------------------------------------------------------------------------------- + +||| Result codes for FFI operations (C-compatible integers) +public export +data Result : Type where + ||| Operation succeeded + Ok : Result + ||| Generic error + Error : Result + ||| Invalid parameter provided + InvalidParam : Result + ||| Out of memory + OutOfMemory : Result + ||| Null pointer encountered + NullPointer : Result + +||| The tag of a result code, as a natural number. +public export +resultTag : Result -> Nat +resultTag Ok = 0 +resultTag Error = 1 +resultTag InvalidParam = 2 +resultTag OutOfMemory = 3 +resultTag NullPointer = 4 + +public export +resultFromTag : Nat -> Maybe Result +resultFromTag 0 = Just Ok +resultFromTag 1 = Just Error +resultFromTag 2 = Just InvalidParam +resultFromTag 3 = Just OutOfMemory +resultFromTag 4 = Just NullPointer +resultFromTag _ = Nothing + +public export +resultTagRetract : (r : Result) -> resultFromTag (resultTag r) = Just r +resultTagRetract Ok = Refl +resultTagRetract Error = Refl +resultTagRetract InvalidParam = Refl +resultTagRetract OutOfMemory = Refl +resultTagRetract NullPointer = Refl + +||| Convert Result to its C integer +public export +resultToInt : Result -> Bits32 +resultToInt Ok = 0 +resultToInt Error = 1 +resultToInt InvalidParam = 2 +resultToInt OutOfMemory = 3 +resultToInt NullPointer = 4 + +||| Convert a C integer back to a Result; Nothing for unknown codes. +public export +resultFromInt : Bits32 -> Maybe Result +resultFromInt 0 = Just Ok +resultFromInt 1 = Just Error +resultFromInt 2 = Just InvalidParam +resultFromInt 3 = Just OutOfMemory +resultFromInt 4 = Just NullPointer +resultFromInt _ = Nothing + +||| The C encoding of a result code round-trips. +export +resultRoundTrip : (r : Result) -> resultFromInt (resultToInt r) = Just r +resultRoundTrip Ok = Refl +resultRoundTrip Error = Refl +resultRoundTrip InvalidParam = Refl +resultRoundTrip OutOfMemory = Refl +resultRoundTrip NullPointer = Refl + +public export +DecEq Result where + decEq = decEqViaTag resultTag resultFromTag resultTagRetract + +-------------------------------------------------------------------------------- +-- Opaque Handles +-------------------------------------------------------------------------------- + +||| Opaque handle type for FFI. The erased witness makes a null handle +||| unconstructible; `createHandle` is the only way in. +public export +data Handle : Type where + MkHandle : (ptr : Bits64) -> {0 nonNull : So (ptr /= 0)} -> Handle + +||| Safely create a handle from a pointer value; Nothing if it is null. +public export +createHandle : Bits64 -> Maybe Handle +createHandle ptr = case choose (ptr /= 0) of + Left nonNull => Just (MkHandle ptr {nonNull}) + Right _ => Nothing + +||| Extract pointer value from handle +public export +handlePtr : Handle -> Bits64 +handlePtr (MkHandle ptr) = ptr + +-------------------------------------------------------------------------------- +-- C types, as a closed universe +-------------------------------------------------------------------------------- + +||| The C types the ABI uses. Sizes and alignments are functions of a +||| code, not of an Idris `Type`: Idris cannot pattern-match on types, so +||| an earlier `cSizeOf : Platform -> Type -> Nat` could not be written. +public export +data CType = CTInt | CTSize | CTU32 | CTU64 | CTDouble | CTPtr + +||| C int width, by platform +public export +CInt : Platform -> Type +CInt _ = Bits32 + +||| C size_t width, by platform +public export +CSize : Platform -> Type +CSize WASM = Bits32 +CSize _ = Bits64 + +||| Pointer width in bytes, by platform +public export +ptrBytes : Platform -> Nat +ptrBytes WASM = 4 +ptrBytes _ = 8 + +||| Pointer width in bits, by platform +public export +ptrSize : Platform -> Nat +ptrSize p = 8 * ptrBytes p + +||| A pointer crosses the C ABI as an unsigned integer of pointer width +||| (uintptr_t, which is size_t's width on every platform listed). The +||| pointee type is a phantom. +public export +CPtr : Platform -> Type -> Type +CPtr p _ = CSize p + +||| The Idris representation of each C type on a platform. +public export +interpC : Platform -> CType -> Type +interpC p CTInt = CInt p +interpC p CTSize = CSize p +interpC _ CTU32 = Bits32 +interpC _ CTU64 = Bits64 +interpC _ CTDouble = Double +interpC p CTPtr = CPtr p () + +||| Size in bytes of a C type on a platform. +public export +cSizeOf : Platform -> CType -> Nat +cSizeOf _ CTInt = 4 +cSizeOf p CTSize = ptrBytes p +cSizeOf _ CTU32 = 4 +cSizeOf _ CTU64 = 8 +cSizeOf _ CTDouble = 8 +cSizeOf p CTPtr = ptrBytes p + +||| Alignment in bytes of a C type on a platform (natural alignment). +public export +cAlignOf : Platform -> CType -> Nat +cAlignOf = cSizeOf + +||| `HasSize p t n`: on platform p, C type t occupies n bytes. The only +||| constructor fixes n to `cSizeOf p t`, so a wrong size has no proof. +public export +data HasSize : Platform -> CType -> Nat -> Type where + SizeIs : HasSize p t (cSizeOf p t) + +||| `HasAlignment p t n`: on platform p, C type t is n-byte aligned. +public export +data HasAlignment : Platform -> CType -> Nat -> Type where + AlignIs : HasAlignment p t (cAlignOf p t) + +-------------------------------------------------------------------------------- +-- Clade-Specific Types +-------------------------------------------------------------------------------- + +||| A non-empty string identifier for a panel clade. +public export +record CladeId where + constructor MkCladeId + ||| The raw string value of the clade identifier + value : String + ||| Erased proof that the identifier is non-empty + {0 nonEmpty : So (value /= "")} + +||| Safely construct a CladeId, returning Nothing if the string is empty +public export +mkCladeId : (s : String) -> Maybe CladeId +mkCladeId s = case choose (s /= "") of + Left nonEmpty => Just (MkCladeId s {nonEmpty}) + Right _ => Nothing + +||| The 13 clade kinds that classify every PanLL panel. +||| +||| Directive — orchestration / command dispatch +||| Scanner — code analysis and linting +||| Builder — compilation and build pipelines +||| Database — persistent storage and query +||| Network — HTTP, sockets, protocol handling +||| Viewer — read-only display and preview +||| Ai — LLM / ML inference integration +||| Loader — asset and resource loading +||| Meta — workspace metadata management +||| Service — background service / daemon panels +||| Inspector — runtime introspection and debugging +||| Bridge — cross-system translation layers +||| Terminal — interactive shell and REPL panels +public export +data CladeKind + = Directive + | Scanner + | Builder + | Database + | Network + | Viewer + | Ai + | Loader + | Meta + | Service + | Inspector + | Bridge + | Terminal + +||| Convert a CladeKind to its C-compatible integer tag (0..12, contiguous). +public export +cladeKindToInt : CladeKind -> Bits32 +cladeKindToInt Directive = 0 +cladeKindToInt Scanner = 1 +cladeKindToInt Builder = 2 +cladeKindToInt Database = 3 +cladeKindToInt Network = 4 +cladeKindToInt Viewer = 5 +cladeKindToInt Ai = 6 +cladeKindToInt Loader = 7 +cladeKindToInt Meta = 8 +cladeKindToInt Service = 9 +cladeKindToInt Inspector = 10 +cladeKindToInt Bridge = 11 +cladeKindToInt Terminal = 12 + +||| Convert a C integer tag back to a CladeKind; Nothing out of range. +public export +cladeKindFromInt : Bits32 -> Maybe CladeKind +cladeKindFromInt 0 = Just Directive +cladeKindFromInt 1 = Just Scanner +cladeKindFromInt 2 = Just Builder +cladeKindFromInt 3 = Just Database +cladeKindFromInt 4 = Just Network +cladeKindFromInt 5 = Just Viewer +cladeKindFromInt 6 = Just Ai +cladeKindFromInt 7 = Just Loader +cladeKindFromInt 8 = Just Meta +cladeKindFromInt 9 = Just Service +cladeKindFromInt 10 = Just Inspector +cladeKindFromInt 11 = Just Bridge +cladeKindFromInt 12 = Just Terminal +cladeKindFromInt _ = Nothing + +||| The C tag of a clade kind round-trips, so distinct kinds have +||| distinct tags. +export +cladeKindRoundTrip : (k : CladeKind) -> cladeKindFromInt (cladeKindToInt k) = Just k +cladeKindRoundTrip Directive = Refl +cladeKindRoundTrip Scanner = Refl +cladeKindRoundTrip Builder = Refl +cladeKindRoundTrip Database = Refl +cladeKindRoundTrip Network = Refl +cladeKindRoundTrip Viewer = Refl +cladeKindRoundTrip Ai = Refl +cladeKindRoundTrip Loader = Refl +cladeKindRoundTrip Meta = Refl +cladeKindRoundTrip Service = Refl +cladeKindRoundTrip Inspector = Refl +cladeKindRoundTrip Bridge = Refl +cladeKindRoundTrip Terminal = Refl + +||| The tag as a natural number (for decidable equality). +public export +cladeKindTag : CladeKind -> Nat +cladeKindTag Directive = 0 +cladeKindTag Scanner = 1 +cladeKindTag Builder = 2 +cladeKindTag Database = 3 +cladeKindTag Network = 4 +cladeKindTag Viewer = 5 +cladeKindTag Ai = 6 +cladeKindTag Loader = 7 +cladeKindTag Meta = 8 +cladeKindTag Service = 9 +cladeKindTag Inspector = 10 +cladeKindTag Bridge = 11 +cladeKindTag Terminal = 12 + +public export +cladeKindFromTag : Nat -> Maybe CladeKind +cladeKindFromTag 0 = Just Directive +cladeKindFromTag 1 = Just Scanner +cladeKindFromTag 2 = Just Builder +cladeKindFromTag 3 = Just Database +cladeKindFromTag 4 = Just Network +cladeKindFromTag 5 = Just Viewer +cladeKindFromTag 6 = Just Ai +cladeKindFromTag 7 = Just Loader +cladeKindFromTag 8 = Just Meta +cladeKindFromTag 9 = Just Service +cladeKindFromTag 10 = Just Inspector +cladeKindFromTag 11 = Just Bridge +cladeKindFromTag 12 = Just Terminal +cladeKindFromTag _ = Nothing + +public export +cladeKindTagRetract : (k : CladeKind) -> cladeKindFromTag (cladeKindTag k) = Just k +cladeKindTagRetract Directive = Refl +cladeKindTagRetract Scanner = Refl +cladeKindTagRetract Builder = Refl +cladeKindTagRetract Database = Refl +cladeKindTagRetract Network = Refl +cladeKindTagRetract Viewer = Refl +cladeKindTagRetract Ai = Refl +cladeKindTagRetract Loader = Refl +cladeKindTagRetract Meta = Refl +cladeKindTagRetract Service = Refl +cladeKindTagRetract Inspector = Refl +cladeKindTagRetract Bridge = Refl +cladeKindTagRetract Terminal = Refl + +public export +DecEq CladeKind where + decEq = decEqViaTag cladeKindTag cladeKindFromTag cladeKindTagRetract + +||| The total number of clade kinds. +public export +cladeKindCount : Nat +cladeKindCount = 13 + +||| All 13 clade kinds. Its length is `cladeKindCount` by its type +||| (the name is qualified: a bare lower-case name in a type is bound as +||| an implicit variable, which is what broke this declaration before). +public export +allCladeKinds : Vect PanelClades.ABI.Types.cladeKindCount CladeKind +allCladeKinds = + [ Directive, Scanner, Builder, Database, Network, Viewer, Ai + , Loader, Meta, Service, Inspector, Bridge, Terminal ] + +||| Exhaustiveness: every clade kind occurs in `allCladeKinds`. +export +cladeKindExhaustive : (k : CladeKind) -> Elem k PanelClades.ABI.Types.allCladeKinds +cladeKindExhaustive Directive = Here +cladeKindExhaustive Scanner = There Here +cladeKindExhaustive Builder = There (There Here) +cladeKindExhaustive Database = There (There (There Here)) +cladeKindExhaustive Network = There (There (There (There Here))) +cladeKindExhaustive Viewer = There (There (There (There (There Here)))) +cladeKindExhaustive Ai = There (There (There (There (There (There Here))))) +cladeKindExhaustive Loader = There (There (There (There (There (There (There Here)))))) +cladeKindExhaustive Meta = There (There (There (There (There (There (There (There Here))))))) +cladeKindExhaustive Service = There (There (There (There (There (There (There (There (There Here)))))))) +cladeKindExhaustive Inspector = There (There (There (There (There (There (There (There (There (There Here))))))))) +cladeKindExhaustive Bridge = There (There (There (There (There (There (There (There (There (There (There Here)))))))))) +cladeKindExhaustive Terminal = There (There (There (There (There (There (There (There (There (There (There (There Here))))))))))) + +||| Record describing how a panel integrates with the clade system. +public export +record PanelIntegration where + constructor MkPanelIntegration + ||| Human-readable name of the panel + panelName : String + ||| Clade identifier this panel belongs to + cladeId : CladeId + ||| The clade kind classifying this panel's role + kind : CladeKind + +||| A capability that a clade may expose. +public export +record CladeCapability where + constructor MkCladeCapability + ||| Name of the capability (e.g. "syntax-highlight", "execute") + name : String + ||| Whether this capability is required (True) or optional (False) + required : Bool + +-------------------------------------------------------------------------------- +-- Checked facts (replacing IO stubs that printed "verified" and checked +-- nothing) +-------------------------------------------------------------------------------- + +namespace Verify + + ||| C int is 4 bytes on every platform. + export + intIsFourBytes : (p : Platform) -> HasSize p CTInt 4 + intIsFourBytes _ = SizeIs + + ||| Pointers are 8 bytes on 64-bit platforms and 4 on WASM. + export + ptrLinux : HasSize Linux CTPtr 8 + ptrLinux = SizeIs + + export + ptrWasm : HasSize WASM CTPtr 4 + ptrWasm = SizeIs + + ||| size_t and pointers have the same size everywhere. + export + sizeIsPtr : (p : Platform) -> cSizeOf p CTSize = cSizeOf p CTPtr + sizeIsPtr _ = Refl diff --git a/panel-clades/src/abi/README.adoc b/panel-clades/src/abi/README.adoc index 55b34dee..4b478037 100644 --- a/panel-clades/src/abi/README.adoc +++ b/panel-clades/src/abi/README.adoc @@ -3,85 +3,122 @@ === Purpose -Formal verification of the panel-clades C ABI using Idris2 dependent -types. Proves memory layout correctness, alignment properties, and type -safety for the Zig FFI layer. +Idris2 definitions of the panel-clades C ABI, and the properties of +those definitions that the type checker can establish: tag encodings, +non-null handles, non-empty identifiers, alignment arithmetic, and the +graded resource contracts over typed-wasm's grade kernel. === Boundary -* *Verified by*: Idris2 0.8.0 type checker — today only -`+PanelClades/ABI/Grades.idr+` (`+scripts/check-abi.sh+`); see Check status -* *Implemented by*: `+panel-clades/ffi/zig/+` (Zig FFI matching these -proofs) -* *Generated output*: `+generated/abi/*.h+` (C headers from ABI -definitions) +* *Verified by*: the Idris2 0.8.0 type checker, run by +`+scripts/check-abi.sh+` and CI (`+build-validation.yml+`, +`+panel-clades-abi+`). Every module under `+PanelClades/ABI/+` is checked. +The gate fails if a module is missing from the ipkg or uses an escape +hatch. +* *Implemented by*: `+panel-clades/ffi/zig/+`. The Zig side restates the +tags and sizes by hand. *Nothing checks that it agrees with these +definitions*, and nothing here links against it. +* *Generated output*: none. `+generated/abi/+` is empty, and no header is +generated from these modules. === Files [width="100%",cols="40%,60%",options="header",] |=== |File |Purpose -|`+Types.idr+` |Core ABI types: Platform, CladeKind, Result, Handle with -proofs +|`+PanelClades/ABI/Types.idr+` |Core ABI types: Platform, Result, +Handle, the C type universe (`+CType+`, `+cSizeOf+`, `+HasSize+`), +CladeId, CladeKind -|`+Layout.idr+` |Memory layout proofs: alignment, struct sizing, C ABI -compliance +|`+PanelClades/ABI/Layout.idr+` |Alignment and struct layout: `+Divides+`, +`+alignUp+`, `+FieldsAligned+`, `+CABICompliant+` -|`+Foreign.idr+` |FFI function declarations with type signatures +|`+PanelClades/ABI/Foreign.idr+` |FFI function declarations and their safe +wrappers |`+PanelClades/ABI/Grades.idr+` |Graded clade resource contracts over typed-wasm's grade kernel: panel state by occupancy (HWM), the Panel-N → Panel-W crossing by loss (Loss); the `+neurosym-bridge+` contract |`+panel-clades-grades.ipkg+` |The package `+scripts/check-abi.sh+` builds +(all four modules) |=== === Check status (2026-10-14) -* `+PanelClades/ABI/Grades.idr+` *typechecks* under Idris2 0.8.0 against -typed-wasm's grade kernel at the pin in `+scripts/fetch-siblings.sh+` -(`+bash panel-clades/scripts/check-abi.sh+`), with two expected rejections -(`+tests/reject/+`). Its lemmas are PROVEN; the `+neurosym-bridge+` budgets -are declared values (DESIGNED), not measurements. -* `+Types.idr+`, `+Layout.idr+`, `+Foreign.idr+` *do not typecheck* as of -`+787ac2e+`. Their module names (`+PanelClades.ABI.*+`) do not match their -paths, so Idris2 refuses them before checking anything. Laid out at -matching paths, `+Types.idr+` still has 11 errors: `+%runElab+` without -`+%language ElabReflection+`; `+DecEq+` used without -`+import Decidable.Equality+` (twice); `+So+` auto-proofs that cannot be -found for runtime values (`+createHandle+`, `+mkCladeId+`); -`+Bits (ptrSize p)+` where a type is expected (`+CPtr+`); pattern -matching on types (`+cSizeOf+`, `+cAlignOf+`); and `+allCladeKinds+` / -`+cladeKindExhaustive+`, where `+cladeKindCount+` is auto-bound as a -variable. The proof statuses below were therefore never machine-checked. -Fixing them is open (owner decision: some need redesign, e.g. sizes by -type). +All four modules *typecheck* under Idris2 0.8.0 +(`+bash panel-clades/scripts/check-abi.sh+`), with five expected +rejections in `+tests/reject/+`. + +Before 2026-10-14, `+Types.idr+`, `+Layout.idr+` and `+Foreign.idr+` had +never typechecked: + +* their module names did not match their paths; +* `+Types.idr+` had 11 errors; +* `+Layout.idr+` had more errors behind those; +* `+Foreign.idr+` used `+prim__getString+` before declaring it. + +Several of their "proofs" were vacuous or false, and fixing them meant +redesigning, not patching: + +* *Sizes by type.* `+cSizeOf : Platform -> Type -> Nat+` pattern-matched +on types, which Idris cannot do. It is now a closed universe: +`+CType+`, with `+cSizeOf+` / `+cAlignOf+` over its codes. +* *Size and alignment witnesses.* `+HasSize t n+` / `+HasAlignment t n+` +had a constructor for every `+n+`. Their one constructor now fixes `+n+` to +`+cSizeOf+` / `+cAlignOf+`, so a wrong size has no proof +(`+tests/reject/WasmPointerIsEightBytes.idr+`). +* *Equality on tags.* `+DecEq Result+` / `+DecEq CladeKind+` ended in +`+decEq _ _ = No absurd+`, which has no proof behind it. Both now decide +equality through a tag with a proved left inverse (`+decEqViaTag+`). +* *Alignment.* `+alignUpCorrect+` claimed divisibility by `+Refl+` for +arbitrary sizes. `+proveFieldsAligned+` did the same after a Boolean +`+mod+` test. `+alignUp+` is now units × alignment, so divisibility holds +by construction. Field alignment is decided by `+decDivides+`, whose +`+Just+` always carries a true equation. +* *Struct size.* `+calcStructSize+` ignored its fold accumulator. It is now +the furthest field end rounded up to the struct alignment, and +`+exampleSizeComputed+` checks it on the example (24 bytes). +* *Fake checks.* `+verifyAllPlatforms+` returned `+Right ()+` without +looking; it now runs `+checkCABI+` on every platform. +`+Verify.verifySizes+` / `+verifyAlignments+` printed "verified" and +checked nothing; they are replaced by checked facts (`+Verify.*+`). +* *Platform detection.* `+thisPlatform+` was a `+%runElab+` that returned +a constant and was described as detection. It is now that constant, and +says so. + +=== Proof status + +[cols="2,3,1",options="header"] +|=== +|Claim |Artefact |Status +|The C tags of `+Result+` and `+CladeKind+` round-trip, so distinct values have distinct tags |`+resultRoundTrip+`, `+cladeKindRoundTrip+` |PROVEN +|Equality on `+Result+` and `+CladeKind+` is decidable |`+decEqViaTag+` and the two `+DecEq+` implementations |PROVEN +|`+allCladeKinds+` has `+cladeKindCount+` (13) elements and contains every kind |its type; `+cladeKindExhaustive+` |PROVEN +|A `+Handle+` is never null; a `+CladeId+` is never empty |the erased fields; `+tests/reject/NullHandle.idr+` |PROVEN / TESTED +|`+HasSize+` admits only `+cSizeOf+`; C int is 4 bytes everywhere; pointers are 8 bytes on Linux and 4 on WASM; size_t is pointer-sized |`+Verify.*+`; `+tests/reject/WasmPointerIsEightBytes.idr+` |PROVEN / TESTED +|`+alignUp+` gives a multiple of the alignment; every computed struct size is a multiple of its alignment |`+alignUpCorrect+`, `+calcStructSizeAligned+` |PROVEN +|`+Divides+` witnesses are equations |`+tests/reject/MisalignedField.idr+` |TESTED +|The example layout is C-ABI compliant and its computed size is 24 |`+exampleLayoutValid+`, `+exampleSizeComputed+` |PROVEN +|A computed struct size covers every field |`+verifyLayout+` checks at run time |ASSUMED (not proved) +|`+decDivides+` returns `+Nothing+` only when the divisor does not divide |— |ASSUMED (not proved) +|The Zig FFI uses these tags, sizes and symbols |hand-restated in `+ffi/zig/src/main.zig+` |OPEN (no check) +|=== === Invariants -* `+%default total+` — all functions must be provably total -* 0 `+believe_me+` — no unsafe escape hatches -* 0 `+assert_total+` — no totality bypasses -* Proofs use `+So+` witnesses, `+Divides+` proofs, and `+DivideBy+` -constructors -* CladeKind exhaustiveness proven via vector-based witnesses (13 -variants) - -=== Proof Status (v0.2.0) - -* `+fieldsAlignedProof+`: CLOSED — recursive proof via -`+proveFieldsAligned+` -* `+exampleFieldsAligned+`: CLOSED — concrete proof for 3-field example -layout -* `+offsetInBoundsProof+`: CLOSED — runtime boolean check (no Elem -witness needed) +* `+%default total+` in every module. +* No `+believe_me+`, `+assert_total+`, `+assert_smaller+`, `+idris_crash+` +or `+unsafePerformIO+`. `+scripts/check-abi.sh+` greps for them and fails. === Adding New Proofs [arabic] -. Define types in `+Types.idr+` with appropriate indices -. Write layout proofs in `+Layout.idr+` using `+FieldsAligned+` and -`+CABICompliant+` -. Declare FFI functions in `+Foreign.idr+` -. Verify with `+idris2 --check+` (requires `+.ipkg+` — currently -missing) +. Put the module under `+PanelClades/ABI/+`, with a module name that +matches its path. +. List it in `+panel-clades-grades.ipkg+`. The gate fails on an unlisted +module. +. For each claim that a wrong value must not typecheck, add a +`+tests/reject/*.idr+` fixture: an `+invalid+` declaration and an +`+-- EXPECT:+` line with the error. +. Run `+bash panel-clades/scripts/check-abi.sh+`. diff --git a/panel-clades/src/abi/Types.idr b/panel-clades/src/abi/Types.idr deleted file mode 100644 index 7df923e8..00000000 --- a/panel-clades/src/abi/Types.idr +++ /dev/null @@ -1,356 +0,0 @@ --- SPDX-License-Identifier: MPL-2.0 --- Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) --- -||| ABI Type Definitions for PanLL Panel-Clades -||| -||| This module defines the Application Binary Interface (ABI) for the -||| panel-clades subsystem of PanLL. It provides formally verified types -||| for clade identification, clade kinds, panel integration records, and -||| clade capabilities. -||| -||| Panel-clades categorises every PanLL panel into one of 13 clade kinds. -||| Each kind describes the panel's primary role inside a workspace. -||| -||| @see https://idris2.readthedocs.io for Idris2 documentation - -module PanelClades.ABI.Types - -import Data.Bits -import Data.So -import Data.Vect -import Data.String - -%default total - --------------------------------------------------------------------------------- --- Platform Detection --------------------------------------------------------------------------------- - -||| Supported platforms for this ABI -public export -data Platform = Linux | Windows | MacOS | BSD | WASM - -||| Compile-time platform detection -||| This will be set during compilation based on target -public export -thisPlatform : Platform -thisPlatform = - %runElab do - -- Platform detection logic - pure Linux -- Default, override with compiler flags - --------------------------------------------------------------------------------- --- Core Types --------------------------------------------------------------------------------- - -||| Result codes for FFI operations -||| Use C-compatible integers for cross-language compatibility -public export -data Result : Type where - ||| Operation succeeded - Ok : Result - ||| Generic error - Error : Result - ||| Invalid parameter provided - InvalidParam : Result - ||| Out of memory - OutOfMemory : Result - ||| Null pointer encountered - NullPointer : Result - -||| Convert Result to C integer -public export -resultToInt : Result -> Bits32 -resultToInt Ok = 0 -resultToInt Error = 1 -resultToInt InvalidParam = 2 -resultToInt OutOfMemory = 3 -resultToInt NullPointer = 4 - -||| Results are decidably equal -public export -DecEq Result where - decEq Ok Ok = Yes Refl - decEq Error Error = Yes Refl - decEq InvalidParam InvalidParam = Yes Refl - decEq OutOfMemory OutOfMemory = Yes Refl - decEq NullPointer NullPointer = Yes Refl - decEq _ _ = No absurd - --------------------------------------------------------------------------------- --- Opaque Handles --------------------------------------------------------------------------------- - -||| Opaque handle type for FFI -||| Prevents direct construction, enforces creation through safe API -public export -data Handle : Type where - MkHandle : (ptr : Bits64) -> {auto 0 nonNull : So (ptr /= 0)} -> Handle - -||| Safely create a handle from a pointer value -||| Returns Nothing if pointer is null -public export -createHandle : Bits64 -> Maybe Handle -createHandle 0 = Nothing -createHandle ptr = Just (MkHandle ptr) - -||| Extract pointer value from handle -public export -handlePtr : Handle -> Bits64 -handlePtr (MkHandle ptr) = ptr - --------------------------------------------------------------------------------- --- Platform-Specific Types --------------------------------------------------------------------------------- - -||| C int size varies by platform -public export -CInt : Platform -> Type -CInt Linux = Bits32 -CInt Windows = Bits32 -CInt MacOS = Bits32 -CInt BSD = Bits32 -CInt WASM = Bits32 - -||| C size_t varies by platform -public export -CSize : Platform -> Type -CSize Linux = Bits64 -CSize Windows = Bits64 -CSize MacOS = Bits64 -CSize BSD = Bits64 -CSize WASM = Bits32 - -||| C pointer size varies by platform -public export -ptrSize : Platform -> Nat -ptrSize Linux = 64 -ptrSize Windows = 64 -ptrSize MacOS = 64 -ptrSize BSD = 64 -ptrSize WASM = 32 - -||| Pointer type for platform -public export -CPtr : Platform -> Type -> Type -CPtr p _ = Bits (ptrSize p) - --------------------------------------------------------------------------------- --- Memory Layout Proofs --------------------------------------------------------------------------------- - -||| Proof that a type has a specific size -public export -data HasSize : Type -> Nat -> Type where - SizeProof : {0 t : Type} -> {n : Nat} -> HasSize t n - -||| Proof that a type has a specific alignment -public export -data HasAlignment : Type -> Nat -> Type where - AlignProof : {0 t : Type} -> {n : Nat} -> HasAlignment t n - -||| Size of C types (platform-specific) -public export -cSizeOf : (p : Platform) -> (t : Type) -> Nat -cSizeOf p (CInt _) = 4 -cSizeOf p (CSize _) = if ptrSize p == 64 then 8 else 4 -cSizeOf p Bits32 = 4 -cSizeOf p Bits64 = 8 -cSizeOf p Double = 8 -cSizeOf p _ = ptrSize p `div` 8 - -||| Alignment of C types (platform-specific) -public export -cAlignOf : (p : Platform) -> (t : Type) -> Nat -cAlignOf p (CInt _) = 4 -cAlignOf p (CSize _) = if ptrSize p == 64 then 8 else 4 -cAlignOf p Bits32 = 4 -cAlignOf p Bits64 = 8 -cAlignOf p Double = 8 -cAlignOf p _ = ptrSize p `div` 8 - --------------------------------------------------------------------------------- --- Clade-Specific Types --------------------------------------------------------------------------------- - -||| A non-empty string identifier for a panel clade. -||| The proof witness ensures the identifier is never the empty string. -public export -record CladeId where - constructor MkCladeId - ||| The raw string value of the clade identifier - value : String - ||| Proof that the identifier is non-empty - {auto 0 nonEmpty : So (value /= "")} - -||| Safely construct a CladeId, returning Nothing if the string is empty -public export -mkCladeId : (s : String) -> Maybe CladeId -mkCladeId "" = Nothing -mkCladeId s = Just (MkCladeId s) - -||| The 13 clade kinds that classify every PanLL panel. -||| -||| Each kind corresponds to a primary role a panel can play inside -||| a PanLL workspace: -||| -||| Directive — orchestration / command dispatch -||| Scanner — code analysis and linting -||| Builder — compilation and build pipelines -||| Database — persistent storage and query -||| Network — HTTP, sockets, protocol handling -||| Viewer — read-only display and preview -||| Ai — LLM / ML inference integration -||| Loader — asset and resource loading -||| Meta — workspace metadata management -||| Service — background service / daemon panels -||| Inspector — runtime introspection and debugging -||| Bridge — cross-system translation layers -||| Terminal — interactive shell and REPL panels -public export -data CladeKind - = Directive - | Scanner - | Builder - | Database - | Network - | Viewer - | Ai - | Loader - | Meta - | Service - | Inspector - | Bridge - | Terminal - -||| Convert a CladeKind to its C-compatible integer tag. -||| Tags are zero-indexed and contiguous (0..12). -public export -cladeKindToInt : CladeKind -> Bits32 -cladeKindToInt Directive = 0 -cladeKindToInt Scanner = 1 -cladeKindToInt Builder = 2 -cladeKindToInt Database = 3 -cladeKindToInt Network = 4 -cladeKindToInt Viewer = 5 -cladeKindToInt Ai = 6 -cladeKindToInt Loader = 7 -cladeKindToInt Meta = 8 -cladeKindToInt Service = 9 -cladeKindToInt Inspector = 10 -cladeKindToInt Bridge = 11 -cladeKindToInt Terminal = 12 - -||| Convert a C integer tag back to a CladeKind. -||| Returns Nothing for out-of-range values. -public export -cladeKindFromInt : Bits32 -> Maybe CladeKind -cladeKindFromInt 0 = Just Directive -cladeKindFromInt 1 = Just Scanner -cladeKindFromInt 2 = Just Builder -cladeKindFromInt 3 = Just Database -cladeKindFromInt 4 = Just Network -cladeKindFromInt 5 = Just Viewer -cladeKindFromInt 6 = Just Ai -cladeKindFromInt 7 = Just Loader -cladeKindFromInt 8 = Just Meta -cladeKindFromInt 9 = Just Service -cladeKindFromInt 10 = Just Inspector -cladeKindFromInt 11 = Just Bridge -cladeKindFromInt 12 = Just Terminal -cladeKindFromInt _ = Nothing - -||| CladeKind values are decidably equal -public export -DecEq CladeKind where - decEq Directive Directive = Yes Refl - decEq Scanner Scanner = Yes Refl - decEq Builder Builder = Yes Refl - decEq Database Database = Yes Refl - decEq Network Network = Yes Refl - decEq Viewer Viewer = Yes Refl - decEq Ai Ai = Yes Refl - decEq Loader Loader = Yes Refl - decEq Meta Meta = Yes Refl - decEq Service Service = Yes Refl - decEq Inspector Inspector = Yes Refl - decEq Bridge Bridge = Yes Refl - decEq Terminal Terminal = Yes Refl - decEq _ _ = No absurd - -||| The total number of clade kinds. -||| This constant is used in compile-time checks to verify exhaustiveness. -public export -cladeKindCount : Nat -cladeKindCount = 13 - -||| All 13 clade kinds as a vector, useful for iteration and exhaustiveness -||| checks. The vector length proves there are exactly cladeKindCount kinds. -public export -allCladeKinds : Vect cladeKindCount CladeKind -allCladeKinds = - [ Directive, Scanner, Builder, Database, Network, Viewer, Ai - , Loader, Meta, Service, Inspector, Bridge, Terminal ] - -||| Exhaustiveness proof: cladeKindToInt covers every constructor. -||| For every CladeKind value there exists a corresponding element in -||| allCladeKinds. -public export -cladeKindExhaustive : (k : CladeKind) -> (n : Nat ** (n < cladeKindCount, index (natToFinLT n) allCladeKinds = k)) -cladeKindExhaustive Directive = (0 ** (LTESucc LTEZero, Refl)) -cladeKindExhaustive Scanner = (1 ** (LTESucc (LTESucc LTEZero), Refl)) -cladeKindExhaustive Builder = (2 ** (LTESucc (LTESucc (LTESucc LTEZero)), Refl)) -cladeKindExhaustive Database = (3 ** (LTESucc (LTESucc (LTESucc (LTESucc LTEZero))), Refl)) -cladeKindExhaustive Network = (4 ** (LTESucc (LTESucc (LTESucc (LTESucc (LTESucc LTEZero)))), Refl)) -cladeKindExhaustive Viewer = (5 ** (LTESucc (LTESucc (LTESucc (LTESucc (LTESucc (LTESucc LTEZero))))), Refl)) -cladeKindExhaustive Ai = (6 ** (LTESucc (LTESucc (LTESucc (LTESucc (LTESucc (LTESucc (LTESucc LTEZero)))))), Refl)) -cladeKindExhaustive Loader = (7 ** (LTESucc (LTESucc (LTESucc (LTESucc (LTESucc (LTESucc (LTESucc (LTESucc LTEZero))))))), Refl)) -cladeKindExhaustive Meta = (8 ** (LTESucc (LTESucc (LTESucc (LTESucc (LTESucc (LTESucc (LTESucc (LTESucc (LTESucc LTEZero)))))))), Refl)) -cladeKindExhaustive Service = (9 ** (LTESucc (LTESucc (LTESucc (LTESucc (LTESucc (LTESucc (LTESucc (LTESucc (LTESucc (LTESucc LTEZero))))))))), Refl)) -cladeKindExhaustive Inspector = (10 ** (LTESucc (LTESucc (LTESucc (LTESucc (LTESucc (LTESucc (LTESucc (LTESucc (LTESucc (LTESucc (LTESucc LTEZero)))))))))), Refl)) -cladeKindExhaustive Bridge = (11 ** (LTESucc (LTESucc (LTESucc (LTESucc (LTESucc (LTESucc (LTESucc (LTESucc (LTESucc (LTESucc (LTESucc (LTESucc LTEZero))))))))))), Refl)) -cladeKindExhaustive Terminal = (12 ** (LTESucc (LTESucc (LTESucc (LTESucc (LTESucc (LTESucc (LTESucc (LTESucc (LTESucc (LTESucc (LTESucc (LTESucc (LTESucc LTEZero)))))))))))), Refl)) - -||| Record describing how a panel integrates with the clade system. -||| Ties a named panel to a specific clade via its CladeId and CladeKind. -public export -record PanelIntegration where - constructor MkPanelIntegration - ||| Human-readable name of the panel - panelName : String - ||| Clade identifier this panel belongs to - cladeId : CladeId - ||| The clade kind classifying this panel's role - kind : CladeKind - -||| A capability that a clade may expose. -||| The `required` flag indicates whether the capability is mandatory for -||| panels in the clade to function correctly. -public export -record CladeCapability where - constructor MkCladeCapability - ||| Name of the capability (e.g. "syntax-highlight", "execute") - name : String - ||| Whether this capability is required (True) or optional (False) - required : Bool - --------------------------------------------------------------------------------- --- Verification --------------------------------------------------------------------------------- - -||| Compile-time verification of ABI properties -namespace Verify - - ||| Verify struct sizes are correct - export - verifySizes : IO () - verifySizes = do - -- Add compile-time checks here - putStrLn "ABI sizes verified" - - ||| Verify struct alignments are correct - export - verifyAlignments : IO () - verifyAlignments = do - -- Add compile-time checks here - putStrLn "ABI alignments verified" diff --git a/panel-clades/src/abi/panel-clades-grades.ipkg b/panel-clades/src/abi/panel-clades-grades.ipkg index 64e13778..06ddfd1f 100644 --- a/panel-clades/src/abi/panel-clades-grades.ipkg +++ b/panel-clades/src/abi/panel-clades-grades.ipkg @@ -1,16 +1,16 @@ -- SPDX-License-Identifier: MPL-2.0 -- Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) -- --- The panel-clades modules that typecheck under Idris2 0.8.0, against +-- The panel-clades ABI modules, typechecked under Idris2 0.8.0 against -- typed-wasm's grade kernel at the pin in scripts/fetch-siblings.sh. --- Check with panel-clades/scripts/check-abi.sh. --- --- Types.idr / Layout.idr / Foreign.idr are NOT listed: they do not --- typecheck (module names do not match their paths, and Types.idr has 11 --- type errors at 787ac2e; see README.adoc in this directory). +-- Check with panel-clades/scripts/check-abi.sh. Every module under +-- PanelClades/ is listed here; the check fails on an unlisted one. package panelcladesgrades sourcedir = "." -modules = PanelClades.ABI.Grades +modules = PanelClades.ABI.Types + , PanelClades.ABI.Layout + , PanelClades.ABI.Foreign + , PanelClades.ABI.Grades diff --git a/panel-clades/tests/reject/MisalignedField.idr b/panel-clades/tests/reject/MisalignedField.idr new file mode 100644 index 00000000..97345ff4 --- /dev/null +++ b/panel-clades/tests/reject/MisalignedField.idr @@ -0,0 +1,16 @@ +-- SPDX-License-Identifier: MPL-2.0 +-- Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) +-- +-- MUST FAIL (panel-clades/scripts/check-abi.sh). +-- +-- A u64 at offset 4 is not 8-byte aligned: Divides is an equation, so no +-- quotient makes 4 a multiple of 8. +-- EXPECT: Mismatch between: 0 and 4 +module MisalignedField + +import PanelClades.ABI.Layout + +%default total + +invalid : Divides 8 4 +invalid = DivideBy 0 Refl diff --git a/panel-clades/tests/reject/NullHandle.idr b/panel-clades/tests/reject/NullHandle.idr new file mode 100644 index 00000000..fbac6ff2 --- /dev/null +++ b/panel-clades/tests/reject/NullHandle.idr @@ -0,0 +1,17 @@ +-- SPDX-License-Identifier: MPL-2.0 +-- Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) +-- +-- MUST FAIL (panel-clades/scripts/check-abi.sh). +-- +-- A Handle carries an erased proof that its pointer is not null, so a null +-- handle cannot be built. +-- EXPECT: Mismatch between: True and False +module NullHandle + +import Data.So +import PanelClades.ABI.Types + +%default total + +invalid : Handle +invalid = MkHandle 0 {nonNull = Oh} diff --git a/panel-clades/tests/reject/WasmPointerIsEightBytes.idr b/panel-clades/tests/reject/WasmPointerIsEightBytes.idr new file mode 100644 index 00000000..d3d92c84 --- /dev/null +++ b/panel-clades/tests/reject/WasmPointerIsEightBytes.idr @@ -0,0 +1,16 @@ +-- SPDX-License-Identifier: MPL-2.0 +-- Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) +-- +-- MUST FAIL (panel-clades/scripts/check-abi.sh). +-- +-- HasSize has one constructor, fixed to cSizeOf: a pointer on WASM is 4 +-- bytes, and no proof that it is 8 can be written. +-- EXPECT: Mismatch between: 0 and 4 +module WasmPointerIsEightBytes + +import PanelClades.ABI.Types + +%default total + +invalid : HasSize WASM CTPtr 8 +invalid = SizeIs From 25f2e7054e84b0cc66cf81984efd72f5272158a0 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 14 Oct 2026 09:36:42 +0000 Subject: [PATCH 02/13] feat(panel-clades): clade budgets come from the clade's config.k9.ncl A clade's declared state budget and loss tolerance are now parameters of its contract, declared in the `resources` block of its config.k9.ncl. scripts/gen-budgets.sh generates PanelClades.ABI.Budgets from those blocks; check-abi.sh fails when it is stale or a block is malformed. CladeResourceContract is parametric in a CladeBudget, and declaredContract builds one from a config's values: it typechecks only when the declared peak fits the budget and the declared loss fits the tolerance (tests/reject/BudgetTooSmall.idr). Setting neurosym-bridge's budget below its peak fails the build at neurosymBridgeContract. The values stay DESIGNED: declared, not measured. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01Y6FD63UrriRBHqmhhEca9t --- CHANGELOG.adoc | 16 +++ .../clades/neurosym-bridge/config.k9.ncl | 13 ++ panel-clades/scripts/check-abi.sh | 5 + panel-clades/scripts/gen-budgets.sh | 105 ++++++++++++++++ .../src/abi/PanelClades/ABI/Budgets.idr | 32 +++++ .../src/abi/PanelClades/ABI/Grades.idr | 118 ++++++++++++------ panel-clades/src/abi/README.adoc | 13 +- panel-clades/src/abi/panel-clades-grades.ipkg | 1 + panel-clades/tests/reject/BudgetTooSmall.idr | 21 ++++ 9 files changed, 284 insertions(+), 40 deletions(-) create mode 100755 panel-clades/scripts/gen-budgets.sh create mode 100644 panel-clades/src/abi/PanelClades/ABI/Budgets.idr create mode 100644 panel-clades/tests/reject/BudgetTooSmall.idr diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc index d257ac56..1266a3c6 100644 --- a/CHANGELOG.adoc +++ b/CHANGELOG.adoc @@ -34,6 +34,22 @@ ipkg, and on `+believe_me+` / `+assert_total+` / `+assert_smaller+` / * *Still open:* nothing checks that the Zig FFI agrees with these definitions (`+panel-clades/src/abi/README.adoc+`, Proof status). +==== Changed (2026-10-14 — clade budgets come from the clade config) + +* A clade's declared resource budgets live in the `+resources+` block of its +`+clades//config.k9.ncl+`, not in Idris. +* `+panel-clades/scripts/gen-budgets.sh+` generates +`+PanelClades/ABI/Budgets.idr+` from those blocks. `+check-abi.sh+` fails +when the file is stale or a block is malformed. +* `+CladeResourceContract+` is parametric in a `+CladeBudget+`. +`+declaredContract+` builds a contract from a config's values, and +typechecks only when the declared peak fits the declared budget and the +declared loss fits the tolerance (`+tests/reject/BudgetTooSmall.idr+`). +* `+neurosym-bridge+` declares peak 48, drift 16, budget 64, loss 2, +tolerance 3. These are DESIGNED values, not measurements. +* The occupancy-vs-cost witnesses (64 vs 96) now use illustrative phases +(`+examplePhase+`), independent of any config. + ==== Added (2026-10-14 — graded clade contracts over typed-wasm's grade kernel, PWL-01) * `+panel-clades/src/abi/PanelClades/ABI/Grades.idr+` grades a clade's diff --git a/panel-clades/clades/neurosym-bridge/config.k9.ncl b/panel-clades/clades/neurosym-bridge/config.k9.ncl index 5bd1e836..d24871ab 100644 --- a/panel-clades/clades/neurosym-bridge/config.k9.ncl +++ b/panel-clades/clades/neurosym-bridge/config.k9.ncl @@ -27,4 +27,17 @@ requires_backend_health = true, requires_clade_manifest = true, }, + # Resource contract, graded in typed-wasm's grade kernel by + # src/abi/PanelClades/ABI/Grades.idr. DESIGNED: declared values for the + # owner to confirm, not measurements; nothing in the panel runtime emits + # or checks them yet. scripts/gen-budgets.sh turns this block into + # src/abi/PanelClades/ABI/Budgets.idr (one line per record, as below). + # state: occupancy (HWM) — peak live state, state still held at the + # end of one inference, and the budget the peak must fit. + # crossing: loss on the Panel-N → Panel-W crossing, and its tolerance. + resources = { + status = "DESIGNED", + state = { peak = 48, drift = 16, budget = 64 }, + crossing = { loss = 2, tolerance = 3 }, + }, } diff --git a/panel-clades/scripts/check-abi.sh b/panel-clades/scripts/check-abi.sh index 35422ba2..eae25593 100755 --- a/panel-clades/scripts/check-abi.sh +++ b/panel-clades/scripts/check-abi.sh @@ -42,6 +42,11 @@ if grep -nE '\b(believe_me|assert_total|assert_smaller|idris_crash|unsafePerform err "escape hatch in src/abi/PanelClades/ABI (lines above)" fi [ "$fail" -eq 0 ] && pass "every PanelClades/ABI module is listed in the ipkg; no escape hatches" +if bash scripts/gen-budgets.sh --check; then + pass "Budgets.idr is current with the clade configs" +else + err "Budgets.idr is stale or a clade config's resources block is malformed" +fi bash scripts/fetch-siblings.sh || die "could not fetch typed-wasm at its pin" TW="_build/dependencies/typed-wasm/src/abi" diff --git a/panel-clades/scripts/gen-budgets.sh b/panel-clades/scripts/gen-budgets.sh new file mode 100755 index 00000000..070604ff --- /dev/null +++ b/panel-clades/scripts/gen-budgets.sh @@ -0,0 +1,105 @@ +#!/usr/bin/env bash +# SPDX-License-Identifier: MPL-2.0 +# Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) +# +# gen-budgets.sh [--check] — generate src/abi/PanelClades/ABI/Budgets.idr +# from the `resources` block of every clades/*/config.k9.ncl that has one. +# +# The clade config is the single source of a clade's declared resource +# budgets; Grades.idr builds each contract from the generated values, so a +# budget its declared grades do not fit fails the typecheck. +# +# The block must be written one record per line, exactly: +# +# resources = { +# status = "DESIGNED", +# state = { peak = , drift = , budget = }, +# crossing = { loss = , tolerance = }, +# }, +# +# A block that is present but not in this shape is an error, never a skip. +# (No Nickel evaluator runs here: the estate CI has none, and a sed +# transcription of a fixed shape is checkable. The shape is the contract.) +# +# --check: regenerate into a temporary file and fail if it differs from the +# committed one (the staleness gate check-abi.sh runs). +set -euo pipefail +cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." +OUT="src/abi/PanelClades/ABI/Budgets.idr" +mode="${1:-write}" +fail() { printf 'gen-budgets: %s\n' "$1" >&2; exit 1; } + +# kebab-case clade id -> lowerCamelCase Idris name +camel() { printf '%s' "$1" | sed -E 's/-([a-z0-9])/\U\1/g'; } + +nat='[0-9]+' +emit() { + cat <<'HEADER' +-- SPDX-License-Identifier: MPL-2.0 +-- Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) +-- +-- GENERATED by panel-clades/scripts/gen-budgets.sh from the `resources` +-- block of each clades/*/config.k9.ncl. Do not edit: change the config and +-- re-run the script (check-abi.sh fails when this file is stale). +-- +||| Declared resource budgets of the panel clades that declare them. +||| DESIGNED values (the configs say so), not measurements. +module PanelClades.ABI.Budgets + +%default total + +||| A clade's declared resources, as written in its config. +public export +record DeclaredResources where + constructor MkDeclaredResources + ||| Peak live panel state over one inference (occupancy). + peak : Nat + ||| State still held at the end of one inference. + drift : Nat + ||| The budget the peak must fit. + budget : Nat + ||| Loss on the Panel-N → Panel-W crossing. + loss : Nat + ||| The crossing's loss tolerance. + tolerance : Nat +HEADER + local n=0 cfg dir id state crossing + for cfg in clades/*/config.k9.ncl; do + grep -qE '^[[:space:]]*resources[[:space:]]*=' "$cfg" || continue + dir="$(basename -- "$(dirname -- "$cfg")")" + id="$(camel "$dir")" + state="$(grep -E "^[[:space:]]*state = \{ peak = $nat, drift = $nat, budget = $nat \},[[:space:]]*$" "$cfg" || true)" + crossing="$(grep -E "^[[:space:]]*crossing = \{ loss = $nat, tolerance = $nat \},[[:space:]]*$" "$cfg" || true)" + [ "$(printf '%s\n' "$state" | grep -c .)" -eq 1 ] \ + || fail "$cfg: resources.state is not one line of the form { peak = n, drift = n, budget = n }" + [ "$(printf '%s\n' "$crossing" | grep -c .)" -eq 1 ] \ + || fail "$cfg: resources.crossing is not one line of the form { loss = n, tolerance = n }" + grep -qE '^[[:space:]]*status = "DESIGNED",' "$cfg" \ + || fail "$cfg: resources.status must be \"DESIGNED\" (nothing measures these values yet)" + read -r peak drift budget < <(printf '%s\n' "$state" | sed -E 's/.*peak = ([0-9]+), drift = ([0-9]+), budget = ([0-9]+).*/\1 \2 \3/') + read -r loss tolerance < <(printf '%s\n' "$crossing" | sed -E 's/.*loss = ([0-9]+), tolerance = ([0-9]+).*/\1 \2/') + cat < "$OUT.tmp"; mv "$OUT.tmp" "$OUT" + echo "gen-budgets: wrote $OUT" ;; + --check) + tmp="$(mktemp)"; trap 'rm -f "$tmp"' EXIT + emit > "$tmp" + if ! diff -u "$OUT" "$tmp"; then + fail "$OUT is stale: run panel-clades/scripts/gen-budgets.sh" + fi + echo "gen-budgets: $OUT is current" ;; + *) fail "usage: gen-budgets.sh [--check]" ;; +esac diff --git a/panel-clades/src/abi/PanelClades/ABI/Budgets.idr b/panel-clades/src/abi/PanelClades/ABI/Budgets.idr new file mode 100644 index 00000000..53ad1c28 --- /dev/null +++ b/panel-clades/src/abi/PanelClades/ABI/Budgets.idr @@ -0,0 +1,32 @@ +-- SPDX-License-Identifier: MPL-2.0 +-- Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) +-- +-- GENERATED by panel-clades/scripts/gen-budgets.sh from the `resources` +-- block of each clades/*/config.k9.ncl. Do not edit: change the config and +-- re-run the script (check-abi.sh fails when this file is stale). +-- +||| Declared resource budgets of the panel clades that declare them. +||| DESIGNED values (the configs say so), not measurements. +module PanelClades.ABI.Budgets + +%default total + +||| A clade's declared resources, as written in its config. +public export +record DeclaredResources where + constructor MkDeclaredResources + ||| Peak live panel state over one inference (occupancy). + peak : Nat + ||| State still held at the end of one inference. + drift : Nat + ||| The budget the peak must fit. + budget : Nat + ||| Loss on the Panel-N → Panel-W crossing. + loss : Nat + ||| The crossing's loss tolerance. + tolerance : Nat + +||| Declared in clades/neurosym-bridge/config.k9.ncl. +public export +neurosymBridge : DeclaredResources +neurosymBridge = MkDeclaredResources 48 16 64 2 3 diff --git a/panel-clades/src/abi/PanelClades/ABI/Grades.idr b/panel-clades/src/abi/PanelClades/ABI/Grades.idr index 9b8b9183..4638cd70 100644 --- a/panel-clades/src/abi/PanelClades/ABI/Grades.idr +++ b/panel-clades/src/abi/PanelClades/ABI/Grades.idr @@ -21,20 +21,25 @@ ||| below), and loss alternatives keep the LESS lossy branch. ||| ||| Status: the lemmas below are PROVEN (idris2 --build against the pinned -||| kernel). The contract for `neurosym-bridge` at the end is DESIGNED: its -||| budgets are declared values for the owner to confirm, not measurements, -||| and nothing in the panel runtime yet emits or checks these grades. +||| kernel). A contract is checked against its clade's DECLARED budget, +||| which comes from the clade's config.k9.ncl through the generated +||| PanelClades.ABI.Budgets; a budget the declared grades do not fit fails +||| the typecheck. The values are DESIGNED (declared for the owner to +||| confirm, not measured), and nothing in the panel runtime yet emits or +||| checks these grades. ||| ||| No unsafe casts, postulates or totality escapes. %default total. module PanelClades.ABI.Grades import Data.Nat +import Data.So import TypedWasm.ABI.ResourceAlgebra import TypedWasm.ABI.ResourceAlgebra.Nat import TypedWasm.ABI.ResourceAlgebra.Loss import TypedWasm.ABI.ResourceAlgebra.MaxPlus import TypedWasm.ABI.ResourceAlgebra.HWM +import PanelClades.ABI.Budgets %default total @@ -114,71 +119,110 @@ betterOfTwo {a = Finite x} {b = Finite y} (MkLossWithin p) (MkLossWithin _) = MkLossWithin (lteTrans (minLeLeft x y) p) -------------------------------------------------------------------------------- --- The contract +-- The contract, against a declared budget -------------------------------------------------------------------------------- -||| A clade's resource contract, graded in the kernel. +||| An LTE proof found by evaluation. For closed numbers `lte m n` reduces, +||| so the `So` is found automatically and no proof term is written by hand; +||| for numbers that do not fit there is no `So True`, and the typecheck +||| fails at the use site. public export -record CladeResourceContract where +fits : (m, n : Nat) -> {auto ok : So (lte m n)} -> LTE m n +fits m n {ok} = lteReflectsLTE m n (soToEq ok) + +||| What a clade's contract is checked against: its declared state budget +||| and loss tolerance. +public export +record CladeBudget where + constructor MkCladeBudget + ||| Declared state budget, in the panel's state units. + stateBudget : Nat + ||| Declared loss tolerance for the Panel-N → Panel-W crossing. + lossTolerance : Nat + +||| A clade's resource contract against a declared budget. +public export +record CladeResourceContract (budget : CladeBudget) where constructor MkCladeResourceContract - ||| The clade's id (its A2ML `clade-metadata.id`). + ||| The clade's id (its directory under panel-clades/clades/). cladeId : String ||| Panel state over a run, as an occupancy grade (HWM). stateGrade : HWMGrade - ||| Declared state budget, in the panel's state units. - stateBudget : Nat ||| The state fits the budget. - stateFits : StateWithin stateGrade stateBudget + stateFits : StateWithin stateGrade (stateBudget budget) ||| Loss on the Panel-N → Panel-W crossing (Loss). crossingLoss : LossGrade - ||| Declared loss tolerance for the crossing. - lossTolerance : Nat ||| The crossing stays within tolerance. - crossingFits : LossWithin crossingLoss lossTolerance + crossingFits : LossWithin crossingLoss (lossTolerance budget) ||| The contract's two grades on the wire, each tagged with its algebra. public export -contractGrades : CladeResourceContract -> List TaggedGrade +contractGrades : CladeResourceContract b -> List TaggedGrade contractGrades c = [ MkTaggedGrade AlgHWM c.stateGrade , MkTaggedGrade AlgLoss c.crossingLoss ] +||| The budget a clade declares in its config (via PanelClades.ABI.Budgets). +public export +budgetOf : DeclaredResources -> CladeBudget +budgetOf d = MkCladeBudget (budget d) (tolerance d) + +||| The occupancy grade a clade declares (drift ≤ peak is checked here). +public export +declaredState : (d : DeclaredResources) -> {auto ok : So (lte (drift d) (peak d))} -> HWMGrade +declaredState d = MkHWM (peak d) (drift d) (fits (drift d) (peak d)) + +||| A clade's contract built from its config alone. It typechecks exactly +||| when the declared peak fits the declared budget and the declared loss +||| fits the declared tolerance. +public export +declaredContract : (cladeId : String) -> (d : DeclaredResources) + -> {auto okDrift : So (lte (drift d) (peak d))} + -> {auto okState : So (lte (peak d) (budget d))} + -> {auto okLoss : So (lte (loss d) (tolerance d))} + -> CladeResourceContract (budgetOf d) +declaredContract cladeId d = + MkCladeResourceContract cladeId + (declaredState d) (MkStateWithin (fits (peak d) (budget d))) + (Finite (loss d)) (MkLossWithin (fits (loss d) (tolerance d))) + -------------------------------------------------------------------------------- -- One graded clade contract: neurosym-bridge (DESIGNED; values to confirm) -------------------------------------------------------------------------------- -- --- neurosym-bridge (kind `bridge`, clades/neurosym-bridge/NeurosymBridge.a2ml) --- translates neural results (Panel-N) into symbolic / world terms with --- confidence gating. Declared, not measured: its panel state peaks at 48 --- units and holds 16 between inferences, within a budget of 64; the --- crossing loses 2 (two gating stages may each drop a candidate), within a --- tolerance of 3. +-- neurosym-bridge (kind `bridge`) translates neural results (Panel-N) into +-- symbolic / world terms with confidence gating. Its budgets are declared +-- in clades/neurosym-bridge/config.k9.ncl (`resources`), not here. -||| neurosym-bridge's panel state over one inference. +||| The graded contract, against neurosym-bridge's declared budget. public export -neurosymState : HWMGrade -neurosymState = MkHWM 48 16 (lteAddRight 16) +neurosymBridgeContract : CladeResourceContract (budgetOf Budgets.neurosymBridge) +neurosymBridgeContract = declaredContract "neurosym-bridge" Budgets.neurosymBridge + +-------------------------------------------------------------------------------- +-- Occupancy is not cost, at the panel (resource-algebra S-1) +-------------------------------------------------------------------------------- +-- +-- Illustrative numbers, independent of any clade's config: a panel phase +-- that peaks at 48 and holds 16, run twice. -||| The graded contract. +||| One illustrative phase. public export -neurosymBridgeContract : CladeResourceContract -neurosymBridgeContract = MkCladeResourceContract - "neurosym-bridge" - neurosymState 64 (MkStateWithin (lteAddRight 48)) - (Finite 2) 3 (MkLossWithin (lteAddRight 2)) +examplePhase : HWMGrade +examplePhase = MkHWM 48 16 (lteAddRight 16) -||| Two inferences back to back stay within budget: the second starts from -||| the 16 units the first still holds (16 + 48 = 64 ≤ 64). +||| Two phases back to back fit 64: the second starts from the 16 units the +||| first still holds (16 + 48 = 64). public export -neurosymTwoInferences : StateWithin (hwmSeq Grades.neurosymState Grades.neurosymState) 64 -neurosymTwoInferences = - phasesWithin {a = neurosymState} {b = neurosymState} +exampleTwoPhases : StateWithin (hwmSeq Grades.examplePhase Grades.examplePhase) 64 +exampleTwoPhases = + phasesWithin {a = examplePhase} {b = examplePhase} (MkStateWithin (lteAddRight 48)) (lteRefl 64) -||| Occupancy of those two inferences: 64 (the 32 freed between them are -||| not charged again)... +||| Occupancy of those two phases: 64 (the 32 freed between them are not +||| charged again)... public export -panelPhasesOccupancy : peak (hwmSeq Grades.neurosymState Grades.neurosymState) = 64 +panelPhasesOccupancy : peak (hwmSeq Grades.examplePhase Grades.examplePhase) = 64 panelPhasesOccupancy = Refl ||| ...whereas reading the same two phases as COST (max-plus) charges 96: diff --git a/panel-clades/src/abi/README.adoc b/panel-clades/src/abi/README.adoc index 4b478037..854b8d10 100644 --- a/panel-clades/src/abi/README.adoc +++ b/panel-clades/src/abi/README.adoc @@ -36,18 +36,23 @@ CladeId, CladeKind |`+PanelClades/ABI/Foreign.idr+` |FFI function declarations and their safe wrappers +|`+PanelClades/ABI/Budgets.idr+` |GENERATED by `+scripts/gen-budgets.sh+` +from the `+resources+` block of each `+clades/*/config.k9.ncl+`: the +declared budgets. Do not edit; the gate fails when it is stale + |`+PanelClades/ABI/Grades.idr+` |Graded clade resource contracts over typed-wasm's grade kernel: panel state by occupancy (HWM), the Panel-N → Panel-W crossing by loss (Loss); the `+neurosym-bridge+` contract +against the clade's declared budget |`+panel-clades-grades.ipkg+` |The package `+scripts/check-abi.sh+` builds -(all four modules) +(all five modules) |=== === Check status (2026-10-14) -All four modules *typecheck* under Idris2 0.8.0 -(`+bash panel-clades/scripts/check-abi.sh+`), with five expected +All five modules *typecheck* under Idris2 0.8.0 +(`+bash panel-clades/scripts/check-abi.sh+`), with six expected rejections in `+tests/reject/+`. Before 2026-10-14, `+Types.idr+`, `+Layout.idr+` and `+Foreign.idr+` had @@ -102,6 +107,8 @@ says so. |The example layout is C-ABI compliant and its computed size is 24 |`+exampleLayoutValid+`, `+exampleSizeComputed+` |PROVEN |A computed struct size covers every field |`+verifyLayout+` checks at run time |ASSUMED (not proved) |`+decDivides+` returns `+Nothing+` only when the divisor does not divide |— |ASSUMED (not proved) +|A clade contract typechecks only if its config's declared peak fits its declared budget and its declared loss its tolerance |`+declaredContract+`; `+tests/reject/BudgetTooSmall.idr+`; `+gen-budgets.sh --check+` |PROVEN / TESTED +|The neurosym-bridge budgets (peak 48, drift 16, budget 64; loss 2, tolerance 3) describe the panel |declared in `+clades/neurosym-bridge/config.k9.ncl+` |DESIGNED (declared, not measured) |The Zig FFI uses these tags, sizes and symbols |hand-restated in `+ffi/zig/src/main.zig+` |OPEN (no check) |=== diff --git a/panel-clades/src/abi/panel-clades-grades.ipkg b/panel-clades/src/abi/panel-clades-grades.ipkg index 06ddfd1f..36488b70 100644 --- a/panel-clades/src/abi/panel-clades-grades.ipkg +++ b/panel-clades/src/abi/panel-clades-grades.ipkg @@ -11,6 +11,7 @@ package panelcladesgrades sourcedir = "." modules = PanelClades.ABI.Types + , PanelClades.ABI.Budgets , PanelClades.ABI.Layout , PanelClades.ABI.Foreign , PanelClades.ABI.Grades diff --git a/panel-clades/tests/reject/BudgetTooSmall.idr b/panel-clades/tests/reject/BudgetTooSmall.idr new file mode 100644 index 00000000..5e992ee2 --- /dev/null +++ b/panel-clades/tests/reject/BudgetTooSmall.idr @@ -0,0 +1,21 @@ +-- SPDX-License-Identifier: MPL-2.0 +-- Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) +-- +-- MUST FAIL (panel-clades/scripts/check-abi.sh). +-- +-- A clade config that declares a state peaking at 48 within a budget of 40 +-- yields no contract: declaredContract needs `So (lte 48 40)`, which has no +-- proof. This is what happens to Grades.neurosymBridgeContract if its +-- config.k9.ncl budget is set below its declared peak. +-- EXPECT: Can't find an implementation for So False +module BudgetTooSmall + +import Data.Nat +import Data.So +import PanelClades.ABI.Budgets +import PanelClades.ABI.Grades + +%default total + +invalid : CladeResourceContract (budgetOf (MkDeclaredResources 48 16 40 2 3)) +invalid = declaredContract "over-budget" (MkDeclaredResources 48 16 40 2 3) From 8b412acfca56a7b080cfe8dd0dcf841f14e7f750 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 14 Oct 2026 09:37:24 +0000 Subject: [PATCH 03/13] docs(claude): Bun is the JS runtime; ask the owner through the selector MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Replace "NEVER use npm/bun — Deno only" with the estate order (Bun, then pnpm, then npm; Deno retired), per the owner (2026-10-14). - Mark the deno task commands stale: #108 removed deno.json, and the Build Validation `validate` job fails on main for that reason. - Record the owner's preference that decisions are asked through the selector, batched, with a recommended option first. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01Y6FD63UrriRBHqmhhEca9t --- .claude/CLAUDE.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/.claude/CLAUDE.md b/.claude/CLAUDE.md index 42dcf13c..5823d3da 100644 --- a/.claude/CLAUDE.md +++ b/.claude/CLAUDE.md @@ -3,6 +3,11 @@ ## Build Commands +> **Stale:** #108 removed `deno.json`, so the `deno task` commands in this file +> and the Deno steps in `.github/workflows/build-validation.yml` no longer run. +> There is no JS manifest in the repo yet; a Bun `package.json` + `bun.lock` is +> the replacement (see Critical Rules). + ```bash # Compile ReScript modules npx rescript build @@ -72,7 +77,7 @@ deno task test:coverage - **NEVER use Tauri** — project migrated to Gossamer. All backend refs use `src-gossamer/` - **NEVER use TypeScript** — AffineScript only (ReScript is also banned; RS/TS/JS → AffineScript → typed-wasm) -- **NEVER use npm/bun** — Deno only (npm used only for ReScript compiler) +- **JS runtime: Bun** (estate primary, owner 2026-10-14), then pnpm, then npm. Deno is retired estate-wide (2026-09-22): add no new Deno tooling. npm is still how the ReScript compiler is fetched until AffineScript replaces it. - **Panels, not panes** — PanLL uses "panels" terminology - **TEA pattern only** — no MVC, no Redux, no hooks. Model -> Msg -> Update -> View - **All state in Model.model** — no global mutable state @@ -109,3 +114,10 @@ declaration is superseded. NOTE for agents: the **Palimpsest Plaza** panel references PMPL as a *feature subject* — a PMPL-adoption/compliance hub. Those PMPL strings are intentional product content, NOT this repo's licence; do not sweep them.) + +## Asking the owner + +Put every question that needs the owner's decision through the selector +(the AskUserQuestion tool), not as prose at the end of a report. Batch up to +four per call, offer concrete options with the recommended one first, and say +what each option would cause. From ad909a6e307c5f9432f75c42878f565c43271528 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 14 Oct 2026 09:38:32 +0000 Subject: [PATCH 04/13] ci: temporary job that generates actions.lock in CI panll has no actions.lock, so Governance / Actions lockfile verify is red. The lock needs GitHub API access the agent sandbox lacks, so this job runs standards' scripts/update-actions-lock.sh (gh-actions-lock v0.1.6, as the gate pins) and prints the result. It is removed in the commit that adds the lock. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01Y6FD63UrriRBHqmhhEca9t --- .github/workflows/actions-lock-bootstrap.yml | 53 ++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 .github/workflows/actions-lock-bootstrap.yml diff --git a/.github/workflows/actions-lock-bootstrap.yml b/.github/workflows/actions-lock-bootstrap.yml new file mode 100644 index 00000000..0c1e032a --- /dev/null +++ b/.github/workflows/actions-lock-bootstrap.yml @@ -0,0 +1,53 @@ +# SPDX-License-Identifier: MPL-2.0 +# TEMPORARY — removed in the same PR, in the commit that adds the lock. +# +# panll has no .github/workflows/actions.lock (Governance / Actions lockfile +# verify is red; panll is not in standards' lock-allow ledger). The lock can +# only be generated with GitHub API access, which this repository's agent +# sandbox lacks, so this job generates it with standards' canonical +# scripts/update-actions-lock.sh (gh-actions-lock v0.1.6, the version the +# governance gate pins) and prints the result to the log for the commit. +# It excludes itself: it is deleted before the lock is generated. +name: actions.lock bootstrap (temporary) + +on: + pull_request: + paths: + - .github/workflows/actions-lock-bootstrap.yml + +permissions: + contents: read + +jobs: + generate: + runs-on: ubuntu-latest + timeout-minutes: 15 + env: + STANDARDS_SHA: ae36881b5ff4b469fb904b66542ac226a15107f3 + steps: + - name: Checkout + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + persist-credentials: false + + - name: Generate actions.lock + env: + GH_TOKEN: ${{ github.token }} + run: | + set -euo pipefail + rm .github/workflows/actions-lock-bootstrap.yml + curl -fsSL "https://raw.githubusercontent.com/hyperpolymath/standards/${STANDARDS_SHA}/scripts/update-actions-lock.sh" \ + -o "$RUNNER_TEMP/update-actions-lock.sh" + gh extension install github/gh-actions-lock --pin v0.1.6 + gh actions-lock --version || true + bash "$RUNNER_TEMP/update-actions-lock.sh" .github/workflows + git status --short .github/workflows + git diff --stat -- .github/workflows + + - name: Print the result (base64 tar of .github/workflows) + run: | + set -euo pipefail + sha256sum .github/workflows/actions.lock + echo "----- BEGIN WORKFLOWS TGZ -----" + tar -czf - .github/workflows | base64 -w 120 + echo "----- END WORKFLOWS TGZ -----" From b1faba8d25475cc4b613b3c6bab930767e549a79 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 14 Oct 2026 09:41:30 +0000 Subject: [PATCH 05/13] fix(schema): typell-grade.schema.json is JCS-canonical (D306) ijson-jcs check reported it NOT CANONICAL; rewritten with ijson-jcs fix. Content is unchanged; only the serialisation. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01Y6FD63UrriRBHqmhhEca9t --- schema/typell-grade.schema.json | 72 +-------------------------------- 1 file changed, 1 insertion(+), 71 deletions(-) diff --git a/schema/typell-grade.schema.json b/schema/typell-grade.schema.json index 60ae8124..f10fe1c3 100644 --- a/schema/typell-grade.schema.json +++ b/schema/typell-grade.schema.json @@ -1,71 +1 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://panll.dev/schemas/typell/grade/v1.json", - "$comment": "SPDX-License-Identifier: MPL-2.0. STATUS: DESIGNED. The {grade, algebra} payload for grades on the TypeLL JSON-RPC wire (Panel-L <-> TypeLL, planned, not yet wired). Mirrors PanelClades.ABI.Grades.TaggedGrade, whose carriers are typed-wasm's grade kernel (src/abi/TypedWasm/ABI/ResourceAlgebra*, transcribed from hyperpolymath/resource-algebra) at the pin in panel-clades/scripts/fetch-siblings.sh. The algebra tag is required because the three grades are not interchangeable (resource-algebra Separation S-1..S-3): a loss of 2 is not a cost of 2 and not an occupancy of 2.", - "title": "TypeLL graded value", - "description": "A grade together with the kernel algebra it is drawn from.", - "type": "object", - "required": ["algebra", "grade"], - "additionalProperties": false, - "properties": { - "algebra": { - "description": "loss = min-plus on N u {inf} (echo loss; Panel-N -> Panel-W crossing). maxplus = max-plus on N u {-inf} (worst-case cost). hwm = high-water mark (panel-state occupancy).", - "enum": ["loss", "maxplus", "hwm"] - }, - "grade": { - "description": "The grade, in the encoding of its algebra." - } - }, - "allOf": [ - { - "if": { "properties": { "algebra": { "const": "loss" } } }, - "then": { - "properties": { - "grade": { - "description": "Finite n, or total collapse.", - "oneOf": [ - { "type": "integer", "minimum": 0 }, - { "const": "infinity" } - ] - } - } - } - }, - { - "if": { "properties": { "algebra": { "const": "maxplus" } } }, - "then": { - "properties": { - "grade": { - "description": "Val n, or no run (-inf).", - "oneOf": [ - { "type": "integer", "minimum": 0 }, - { "const": "bot" } - ] - } - } - } - }, - { - "if": { "properties": { "algebra": { "const": "hwm" } } }, - "then": { - "properties": { - "grade": { - "description": "Peak live state and drift (still held at the end). drift <= peak is an invariant of the kernel type that JSON Schema cannot express; a receiver must check it.", - "type": "object", - "required": ["peak", "drift"], - "additionalProperties": false, - "properties": { - "peak": { "type": "integer", "minimum": 0 }, - "drift": { "type": "integer", "minimum": 0 } - } - } - } - } - } - ], - "examples": [ - { "algebra": "hwm", "grade": { "peak": 48, "drift": 16 } }, - { "algebra": "loss", "grade": 2 }, - { "algebra": "loss", "grade": "infinity" } - ] -} +{"$comment":"SPDX-License-Identifier: MPL-2.0. STATUS: DESIGNED. The {grade, algebra} payload for grades on the TypeLL JSON-RPC wire (Panel-L <-> TypeLL, planned, not yet wired). Mirrors PanelClades.ABI.Grades.TaggedGrade, whose carriers are typed-wasm's grade kernel (src/abi/TypedWasm/ABI/ResourceAlgebra*, transcribed from hyperpolymath/resource-algebra) at the pin in panel-clades/scripts/fetch-siblings.sh. The algebra tag is required because the three grades are not interchangeable (resource-algebra Separation S-1..S-3): a loss of 2 is not a cost of 2 and not an occupancy of 2.","$id":"https://panll.dev/schemas/typell/grade/v1.json","$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"allOf":[{"if":{"properties":{"algebra":{"const":"loss"}}},"then":{"properties":{"grade":{"description":"Finite n, or total collapse.","oneOf":[{"minimum":0,"type":"integer"},{"const":"infinity"}]}}}},{"if":{"properties":{"algebra":{"const":"maxplus"}}},"then":{"properties":{"grade":{"description":"Val n, or no run (-inf).","oneOf":[{"minimum":0,"type":"integer"},{"const":"bot"}]}}}},{"if":{"properties":{"algebra":{"const":"hwm"}}},"then":{"properties":{"grade":{"additionalProperties":false,"description":"Peak live state and drift (still held at the end). drift <= peak is an invariant of the kernel type that JSON Schema cannot express; a receiver must check it.","properties":{"drift":{"minimum":0,"type":"integer"},"peak":{"minimum":0,"type":"integer"}},"required":["peak","drift"],"type":"object"}}}}],"description":"A grade together with the kernel algebra it is drawn from.","examples":[{"algebra":"hwm","grade":{"drift":16,"peak":48}},{"algebra":"loss","grade":2},{"algebra":"loss","grade":"infinity"}],"properties":{"algebra":{"description":"loss = min-plus on N u {inf} (echo loss; Panel-N -> Panel-W crossing). maxplus = max-plus on N u {-inf} (worst-case cost). hwm = high-water mark (panel-state occupancy).","enum":["loss","maxplus","hwm"]},"grade":{"description":"The grade, in the encoding of its algebra."}},"required":["algebra","grade"],"title":"TypeLL graded value","type":"object"} From fe1c904e90a1cdcf2222816a40a539df658b8001 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 14 Oct 2026 09:44:28 +0000 Subject: [PATCH 06/13] ci: pin dtolnay/rust-toolchain to a commit a tag contains MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit gh actions-lock refuses 4be9e76 ("no tag or branch contains this commit — a symbolic ref is required for the lockfile"), which blocks panll's actions.lock. Use the estate's pin (standards: e2a55d2, which its lock resolves to v1). With a commit pin the toolchain is not inferred from the ref, so e2e.yml now passes toolchain: stable explicitly, as build-validation.yml already did. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01Y6FD63UrriRBHqmhhEca9t --- .github/workflows/build-validation.yml | 2 +- .github/workflows/e2e.yml | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-validation.yml b/.github/workflows/build-validation.yml index 74fa1a26..beb3e527 100644 --- a/.github/workflows/build-validation.yml +++ b/.github/workflows/build-validation.yml @@ -52,7 +52,7 @@ jobs: run: cargo test --lib -- --test-threads=1 - name: Setup Rust toolchain for PCC - uses: dtolnay/rust-toolchain@4be9e76fd7c4901c61fb841f559994984270fce7 # stable + uses: dtolnay/rust-toolchain@e2a55d2ffb04f378e9626c28d38b36d230d1e12f # v1 (toolchain: stable below) with: toolchain: stable diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 91cd78f2..c84c41e6 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -118,7 +118,9 @@ jobs: uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v4 - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@4be9e76fd7c4901c61fb841f559994984270fce7 # stable + uses: dtolnay/rust-toolchain@e2a55d2ffb04f378e9626c28d38b36d230d1e12f # v1 (toolchain: stable below) + with: + toolchain: stable - name: Rust cache uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2 From 36deccb0f241db6a7765895a9a8766911d830bfa Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 14 Oct 2026 09:51:40 +0000 Subject: [PATCH 07/13] ci: add actions.lock; remove the bootstrap job MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The lock was generated in CI by standards' scripts/update-actions-lock.sh (gh-actions-lock v0.1.6), run 38544579402. The lock's sha256 there was 4a61c354…f09055. The tool's rewrite of the workflows is kept as the estate model requires: symbolic refs in the YAML, immutable resolution in the lock, and its "managed by gh actions-lock" header line. The tool cannot see job-level reusable-workflow refs (upstream #129), so the rest of standards' repair chain was applied: - scripts/complete-job-refs.sh added the six workflows that call hyperpolymath/standards reusables. - Two leaf dependency records for hyperpolymath/standards@092deda and @412a703, in close-lock.sh's shape. The ids are the ones every estate lock records for standards (owner 6759885, repo 1116521501). - Empty entries for the two zero-uses workflows (labels, label-triage). Both lock-sync gates pass: standards' check-lock-sync.sh, and rsr-template's, which also checks transitive closure (0 dangling edges). The temporary bootstrap workflow is deleted. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01Y6FD63UrriRBHqmhhEca9t --- .github/workflows/actions-lock-bootstrap.yml | 53 ------ .github/workflows/actions.lock | 163 +++++++++++++++++++ .github/workflows/boj-build.yml | 3 +- .github/workflows/build-validation.yml | 9 +- .github/workflows/casket-pages.yml | 15 +- .github/workflows/codeql.yml | 7 +- .github/workflows/dogfood-gate.yml | 15 +- .github/workflows/e2e.yml | 21 +-- .github/workflows/governance.yml | 1 + .github/workflows/hypatia-scan.yml | 1 + .github/workflows/instant-sync.yml | 3 +- .github/workflows/label-triage.yml | 1 + .github/workflows/labels.yml | 1 + .github/workflows/main-estate-audit.yml | 56 ++++--- .github/workflows/mirror.yml | 1 + .github/workflows/push-email-notify.yml | 3 +- .github/workflows/rust-ci.yml | 1 + .github/workflows/scorecard.yml | 1 + .github/workflows/secret-scanner.yml | 1 + 19 files changed, 242 insertions(+), 114 deletions(-) delete mode 100644 .github/workflows/actions-lock-bootstrap.yml create mode 100644 .github/workflows/actions.lock diff --git a/.github/workflows/actions-lock-bootstrap.yml b/.github/workflows/actions-lock-bootstrap.yml deleted file mode 100644 index 0c1e032a..00000000 --- a/.github/workflows/actions-lock-bootstrap.yml +++ /dev/null @@ -1,53 +0,0 @@ -# SPDX-License-Identifier: MPL-2.0 -# TEMPORARY — removed in the same PR, in the commit that adds the lock. -# -# panll has no .github/workflows/actions.lock (Governance / Actions lockfile -# verify is red; panll is not in standards' lock-allow ledger). The lock can -# only be generated with GitHub API access, which this repository's agent -# sandbox lacks, so this job generates it with standards' canonical -# scripts/update-actions-lock.sh (gh-actions-lock v0.1.6, the version the -# governance gate pins) and prints the result to the log for the commit. -# It excludes itself: it is deleted before the lock is generated. -name: actions.lock bootstrap (temporary) - -on: - pull_request: - paths: - - .github/workflows/actions-lock-bootstrap.yml - -permissions: - contents: read - -jobs: - generate: - runs-on: ubuntu-latest - timeout-minutes: 15 - env: - STANDARDS_SHA: ae36881b5ff4b469fb904b66542ac226a15107f3 - steps: - - name: Checkout - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - - - name: Generate actions.lock - env: - GH_TOKEN: ${{ github.token }} - run: | - set -euo pipefail - rm .github/workflows/actions-lock-bootstrap.yml - curl -fsSL "https://raw.githubusercontent.com/hyperpolymath/standards/${STANDARDS_SHA}/scripts/update-actions-lock.sh" \ - -o "$RUNNER_TEMP/update-actions-lock.sh" - gh extension install github/gh-actions-lock --pin v0.1.6 - gh actions-lock --version || true - bash "$RUNNER_TEMP/update-actions-lock.sh" .github/workflows - git status --short .github/workflows - git diff --stat -- .github/workflows - - - name: Print the result (base64 tar of .github/workflows) - run: | - set -euo pipefail - sha256sum .github/workflows/actions.lock - echo "----- BEGIN WORKFLOWS TGZ -----" - tar -czf - .github/workflows | base64 -w 120 - echo "----- END WORKFLOWS TGZ -----" diff --git a/.github/workflows/actions.lock b/.github/workflows/actions.lock new file mode 100644 index 00000000..f7dd7d50 --- /dev/null +++ b/.github/workflows/actions.lock @@ -0,0 +1,163 @@ +# This file is machine-generated by `gh actions-lock`. +# Do not edit by hand; run `gh actions-lock` to update. +# Docs: https://gh.io/actions-lockfile +version: 'v0.0.2' +workflows: + '.github/workflows/boj-build.yml': + - 'actions/checkout@v7.0.1' + '.github/workflows/build-validation.yml': + - 'actions/checkout@v7.0.1' + - 'denoland/setup-deno@v2.0.5' + - 'dtolnay/rust-toolchain@v1' + '.github/workflows/casket-pages.yml': + - 'actions/cache@v6.1.0' + - 'actions/checkout@v7.0.1' + - 'actions/configure-pages@v6.0.0' + - 'actions/deploy-pages@v5.0.1' + - 'actions/upload-pages-artifact@v5.0.0' + - 'haskell-actions/setup@v2.12.1' + '.github/workflows/codeql.yml': + - 'actions/checkout@v7.0.1' + - 'github/codeql-action@v4.38.2' + '.github/workflows/dogfood-gate.yml': + - 'actions/checkout@v7.0.1' + - 'hyperpolymath/deed-ecosystem@main' + - 'hyperpolymath/k9-ecosystem@main' + '.github/workflows/e2e.yml': + - 'actions/checkout@v7.0.1' + - 'actions/upload-artifact@v7.0.1' + - 'denoland/setup-deno@v2.0.5' + - 'dtolnay/rust-toolchain@v1' + - 'swatinem/rust-cache@v2.9.2' + '.github/workflows/governance.yml': + - 'hyperpolymath/standards@092dedada188f56c5915f74a5fd40aac093742c3' + '.github/workflows/hypatia-scan.yml': + - 'hyperpolymath/standards@092dedada188f56c5915f74a5fd40aac093742c3' + '.github/workflows/instant-sync.yml': + - 'peter-evans/repository-dispatch@v4.0.1' + '.github/workflows/label-triage.yml': [] + '.github/workflows/labels.yml': [] + '.github/workflows/main-estate-audit.yml': + - 'actions/checkout@v7.0.1' + - 'hyperpolymath/cicd-suite@main' + '.github/workflows/mirror.yml': + - 'hyperpolymath/standards@092dedada188f56c5915f74a5fd40aac093742c3' + '.github/workflows/push-email-notify.yml': + - 'hyperpolymath/smtp-notify-action@v0.5.0' + '.github/workflows/rust-ci.yml': + - 'hyperpolymath/standards@412a7031577112b31ee287cc6060179d638d6500' + '.github/workflows/scorecard.yml': + - 'hyperpolymath/standards@092dedada188f56c5915f74a5fd40aac093742c3' + '.github/workflows/secret-scanner.yml': + - 'hyperpolymath/standards@092dedada188f56c5915f74a5fd40aac093742c3' +dependencies: + 'actions/cache@v6.1.0': + ref: 'v6.1.0' + commit: 'sha1-55cc8345863c7cc4c66a329aec7e433d2d1c52a9' + owner_id: 44036562 + repo_id: 215566462 + 'actions/checkout@v7.0.1': + ref: 'v7.0.1' + commit: 'sha1-3d3c42e5aac5ba805825da76410c181273ba90b1' + owner_id: 44036562 + repo_id: 197814629 + 'actions/configure-pages@v6.0.0': + ref: 'v6.0.0' + commit: 'sha1-45bfe0192ca1faeb007ade9deae92b16b8254a0d' + owner_id: 44036562 + repo_id: 513659658 + 'actions/deploy-pages@v5.0.1': + ref: 'v5.0.1' + commit: 'sha1-368f82528645a54fb793d4d04e342629a3f51346' + owner_id: 44036562 + repo_id: 438112499 + 'actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f': + ref: 'v7.0.0' + commit: 'sha1-bbbca2ddaa5d8feaa63e36b76fdaad77386f024f' + owner_id: 44036562 + repo_id: 192625955 + 'actions/upload-artifact@v7.0.1': + ref: 'v7.0.1' + commit: 'sha1-043fb46d1a93c77aae656e7c1c64a875d1fc6a0a' + owner_id: 44036562 + repo_id: 192625955 + 'actions/upload-pages-artifact@v5.0.0': + ref: 'v5.0.0' + commit: 'sha1-fc324d3547104276b827a68afc52ff2a11cc49c9' + owner_id: 44036562 + repo_id: 496012378 + uses: + - 'actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f' + 'denoland/setup-deno@v2.0.5': + ref: 'v2.0.5' + commit: 'sha1-22d081ff2d3a40755e97629de92e3bcbfa7cf2ed' + owner_id: 42048915 + repo_id: 356423100 + 'dtolnay/rust-toolchain@v1': + ref: 'v1' + commit: 'sha1-e2a55d2ffb04f378e9626c28d38b36d230d1e12f' + owner_id: 1940490 + repo_id: 260749683 + 'github/codeql-action@v4.38.2': + ref: 'v4.38.2' + commit: 'sha1-2892aa5e19bbd11bc0cff5427e3b750a04d9e3c2' + owner_id: 9919 + repo_id: 259445878 + 'haskell-actions/setup@v2.12.1': + ref: 'v2.12.1' + commit: 'sha1-0f8e8c99d88aeb3fbfd523f1ef2c6f762d10d64d' + owner_id: 75048950 + repo_id: 623796603 + 'hyperpolymath/cicd-suite@main': + ref: 'main' + commit: 'sha1-5a10b72e574ef63855fafd4568a4c178657f3294' + owner_id: 6759885 + repo_id: 1326697643 + uses: + - 'hyperpolymath/deed-ecosystem@f9d999b60cb5f383679ea19912bcdc49c944973a' + - 'hyperpolymath/k9-ecosystem@2155aa26a21758f2ba119f61bc7e0e1981c106fb' + 'hyperpolymath/deed-ecosystem@f9d999b60cb5f383679ea19912bcdc49c944973a': + ref: 'main' + commit: 'sha1-f9d999b60cb5f383679ea19912bcdc49c944973a' + owner_id: 6759885 + repo_id: 1275649586 + 'hyperpolymath/deed-ecosystem@main': + ref: 'main' + commit: 'sha1-aa4b836bd969df2bc58128cb8e3d20bbc88d5e79' + owner_id: 6759885 + repo_id: 1275649586 + 'hyperpolymath/k9-ecosystem@2155aa26a21758f2ba119f61bc7e0e1981c106fb': + ref: 'main' + commit: 'sha1-2155aa26a21758f2ba119f61bc7e0e1981c106fb' + owner_id: 6759885 + repo_id: 1275650185 + 'hyperpolymath/k9-ecosystem@main': + ref: 'main' + commit: 'sha1-89f3c2702f4f650a92aa7411502f38da06abd562' + owner_id: 6759885 + repo_id: 1275650185 + 'hyperpolymath/smtp-notify-action@v0.5.0': + ref: 'v0.5.0' + commit: 'sha1-c1c9fa07992a02c1fd3d67a0dc1b08cccb852aef' + owner_id: 6759885 + repo_id: 1352485172 + 'hyperpolymath/standards@092dedada188f56c5915f74a5fd40aac093742c3': + ref: '092dedada188f56c5915f74a5fd40aac093742c3' + commit: 'sha1-092dedada188f56c5915f74a5fd40aac093742c3' + owner_id: 6759885 + repo_id: 1116521501 + 'hyperpolymath/standards@412a7031577112b31ee287cc6060179d638d6500': + ref: '412a7031577112b31ee287cc6060179d638d6500' + commit: 'sha1-412a7031577112b31ee287cc6060179d638d6500' + owner_id: 6759885 + repo_id: 1116521501 + 'peter-evans/repository-dispatch@v4.0.1': + ref: 'v4.0.1' + commit: 'sha1-28959ce8df70de7be546dd1250a005dd32156697' + owner_id: 18365890 + repo_id: 220359305 + 'swatinem/rust-cache@v2.9.2': + ref: 'v2.9.2' + commit: 'sha1-6323deb102c322ba6fcbdcafc7e3dddab59af2b6' + owner_id: 580492 + repo_id: 298565987 diff --git a/.github/workflows/boj-build.yml b/.github/workflows/boj-build.yml index 64d13e64..17785665 100644 --- a/.github/workflows/boj-build.yml +++ b/.github/workflows/boj-build.yml @@ -1,3 +1,4 @@ +# This workflow is managed by gh actions-lock. # SPDX-License-Identifier: MPL-2.0 name: BoJ Server Build Trigger on: @@ -9,7 +10,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v6 + uses: actions/checkout@v7.0.1 - name: Trigger BoJ Server (Casket/ssg-mcp) run: | # Send a secure trigger to boj-server to build this repository diff --git a/.github/workflows/build-validation.yml b/.github/workflows/build-validation.yml index beb3e527..ccea9508 100644 --- a/.github/workflows/build-validation.yml +++ b/.github/workflows/build-validation.yml @@ -1,3 +1,4 @@ +# This workflow is managed by gh actions-lock. # SPDX-License-Identifier: MPL-2.0 name: Build Validation @@ -19,10 +20,10 @@ jobs: steps: - name: Checkout - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + uses: actions/checkout@v7.0.1 - name: Setup Deno - uses: denoland/setup-deno@22d081ff2d3a40755e97629de92e3bcbfa7cf2ed # v2 + uses: denoland/setup-deno@v2.0.5 with: deno-version: "2.x" @@ -52,7 +53,7 @@ jobs: run: cargo test --lib -- --test-threads=1 - name: Setup Rust toolchain for PCC - uses: dtolnay/rust-toolchain@e2a55d2ffb04f378e9626c28d38b36d230d1e12f # v1 (toolchain: stable below) + uses: dtolnay/rust-toolchain@v1 with: toolchain: stable @@ -76,7 +77,7 @@ jobs: IDRIS2_COMMIT: 15a3e4e70843f7a34100f6470c04b791330788df # v0.8.0 steps: - name: Checkout - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + uses: actions/checkout@v7.0.1 with: persist-credentials: false diff --git a/.github/workflows/casket-pages.yml b/.github/workflows/casket-pages.yml index 782fe2e3..33bbd80b 100644 --- a/.github/workflows/casket-pages.yml +++ b/.github/workflows/casket-pages.yml @@ -1,3 +1,4 @@ +# This workflow is managed by gh actions-lock. # SPDX-License-Identifier: MPL-2.0 name: GitHub Pages @@ -21,22 +22,22 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v4 + uses: actions/checkout@v7.0.1 - name: Checkout casket-ssg - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v4 + uses: actions/checkout@v7.0.1 with: repository: hyperpolymath/casket-ssg path: .casket-ssg - name: Setup GHCup - uses: haskell-actions/setup@0f8e8c99d88aeb3fbfd523f1ef2c6f762d10d64d # v2 + uses: haskell-actions/setup@v2.12.1 with: ghc-version: '9.8.2' cabal-version: '3.10' - name: Cache Cabal - uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 + uses: actions/cache@v6.1.0 with: path: | ~/.cabal/packages @@ -80,10 +81,10 @@ jobs: cd .casket-ssg && cabal run casket-ssg -- build ../site ../_site - name: Setup Pages - uses: actions/configure-pages@45bfe0192ca1faeb007ade9deae92b16b8254a0d # v6.0.0 + uses: actions/configure-pages@v6.0.0 - name: Upload artifact - uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5.0.0 + uses: actions/upload-pages-artifact@v5.0.0 with: path: '_site' @@ -96,4 +97,4 @@ jobs: steps: - name: Deploy to GitHub Pages id: deployment - uses: actions/deploy-pages@368f82528645a54fb793d4d04e342629a3f51346 # v5.0.1 + uses: actions/deploy-pages@v5.0.1 diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index a2612c58..ade2e802 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -1,3 +1,4 @@ +# This workflow is managed by gh actions-lock. # SPDX-License-Identifier: MPL-2.0 name: CodeQL Security Analysis @@ -36,15 +37,15 @@ jobs: steps: - name: Checkout - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + uses: actions/checkout@v7.0.1 - name: Initialize CodeQL - uses: github/codeql-action/init@2892aa5e19bbd11bc0cff5427e3b750a04d9e3c2 # v3 + uses: github/codeql-action/init@v4.38.2 with: languages: ${{ matrix.language }} build-mode: ${{ matrix.build-mode }} - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@2892aa5e19bbd11bc0cff5427e3b750a04d9e3c2 # v3 + uses: github/codeql-action/analyze@v4.38.2 with: category: "/language:${{ matrix.language }}" diff --git a/.github/workflows/dogfood-gate.yml b/.github/workflows/dogfood-gate.yml index 96d62b55..7b61a955 100644 --- a/.github/workflows/dogfood-gate.yml +++ b/.github/workflows/dogfood-gate.yml @@ -1,3 +1,4 @@ +# This workflow is managed by gh actions-lock. # SPDX-License-Identifier: MPL-2.0 # Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) # @@ -26,7 +27,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v4 + uses: actions/checkout@v7.0.1 - name: Check for manifest files (.a2ml/.deed) id: detect @@ -39,7 +40,7 @@ jobs: - name: Validate DEED manifests if: steps.detect.outputs.count > 0 - uses: hyperpolymath/deed-ecosystem/validate-action@aa4b836bd969df2bc58128cb8e3d20bbc88d5e79 # main + uses: hyperpolymath/deed-ecosystem/validate-action@main with: path: '.' strict: 'false' @@ -70,7 +71,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v4 + uses: actions/checkout@v7.0.1 - name: Check for K9 files id: detect @@ -87,7 +88,7 @@ jobs: - name: Validate K9 contracts if: steps.detect.outputs.k9_count > 0 - uses: hyperpolymath/k9-ecosystem/validate-action@89f3c2702f4f650a92aa7411502f38da06abd562 # main + uses: hyperpolymath/k9-ecosystem/validate-action@main with: path: '.' strict: 'false' @@ -119,7 +120,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v4 + uses: actions/checkout@v7.0.1 - name: Scan for invisible characters id: lint @@ -183,7 +184,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v4 + uses: actions/checkout@v7.0.1 - name: Check for Groove manifest id: groove @@ -243,7 +244,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v4 + uses: actions/checkout@v7.0.1 - name: Generate dogfooding scorecard run: | diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index c84c41e6..21498546 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -1,3 +1,4 @@ +# This workflow is managed by gh actions-lock. # SPDX-License-Identifier: MPL-2.0 # Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) # @@ -38,10 +39,10 @@ jobs: steps: - name: Checkout - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v4 + uses: actions/checkout@v7.0.1 - name: Install Deno - uses: denoland/setup-deno@22d081ff2d3a40755e97629de92e3bcbfa7cf2ed # v2.0.5 + uses: denoland/setup-deno@v2.0.5 with: deno-version: v2.x @@ -61,10 +62,10 @@ jobs: steps: - name: Checkout - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v4 + uses: actions/checkout@v7.0.1 - name: Install Deno - uses: denoland/setup-deno@22d081ff2d3a40755e97629de92e3bcbfa7cf2ed # v2.0.5 + uses: denoland/setup-deno@v2.0.5 with: deno-version: v2.x @@ -84,10 +85,10 @@ jobs: steps: - name: Checkout - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v4 + uses: actions/checkout@v7.0.1 - name: Install Deno - uses: denoland/setup-deno@22d081ff2d3a40755e97629de92e3bcbfa7cf2ed # v2.0.5 + uses: denoland/setup-deno@v2.0.5 with: deno-version: v2.x @@ -102,7 +103,7 @@ jobs: - name: Upload benchmark results if: always() - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + uses: actions/upload-artifact@v7.0.1 with: name: benchmark-results path: /tmp/bench-results.txt @@ -115,15 +116,15 @@ jobs: steps: - name: Checkout - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v4 + uses: actions/checkout@v7.0.1 - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@e2a55d2ffb04f378e9626c28d38b36d230d1e12f # v1 (toolchain: stable below) + uses: dtolnay/rust-toolchain@v1 with: toolchain: stable - name: Rust cache - uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2 + uses: Swatinem/rust-cache@v2.9.2 - name: Install GTK/WebKit dev headers run: sudo apt-get update && sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.1-dev diff --git a/.github/workflows/governance.yml b/.github/workflows/governance.yml index 94d73ee5..c707088a 100644 --- a/.github/workflows/governance.yml +++ b/.github/workflows/governance.yml @@ -1,3 +1,4 @@ +# This workflow is managed by gh actions-lock. # SPDX-License-Identifier: MPL-2.0 # governance.yml — single wrapper calling the shared estate governance bundle # in hyperpolymath/standards instead of carrying per-repo copies. diff --git a/.github/workflows/hypatia-scan.yml b/.github/workflows/hypatia-scan.yml index 86dabd89..25fe50d4 100644 --- a/.github/workflows/hypatia-scan.yml +++ b/.github/workflows/hypatia-scan.yml @@ -1,3 +1,4 @@ +# This workflow is managed by gh actions-lock. # SPDX-License-Identifier: MPL-2.0 # Thin wrapper around hyperpolymath/standards hypatia-scan-reusable.yml. # See standards#191 for the reusable's purpose and design. diff --git a/.github/workflows/instant-sync.yml b/.github/workflows/instant-sync.yml index 29be89d6..15bb63b4 100644 --- a/.github/workflows/instant-sync.yml +++ b/.github/workflows/instant-sync.yml @@ -1,3 +1,4 @@ +# This workflow is managed by gh actions-lock. # SPDX-License-Identifier: MPL-2.0 # Instant Forge Sync - Triggers propagation to all forges on push/release # @@ -32,7 +33,7 @@ jobs: - name: Trigger Propagation if: steps.check.outputs.has_token == 'true' - uses: peter-evans/repository-dispatch@28959ce8df70de7be546dd1250a005dd32156697 # v3 + uses: peter-evans/repository-dispatch@v4.0.1 with: token: ${{ secrets.FARM_DISPATCH_TOKEN }} repository: hyperpolymath/.git-private-farm diff --git a/.github/workflows/label-triage.yml b/.github/workflows/label-triage.yml index 9886e920..814a1924 100644 --- a/.github/workflows/label-triage.yml +++ b/.github/workflows/label-triage.yml @@ -1,3 +1,4 @@ +# This workflow is managed by gh actions-lock. # SPDX-License-Identifier: MPL-2.0 name: Label Triage diff --git a/.github/workflows/labels.yml b/.github/workflows/labels.yml index c80b676c..83ab941a 100644 --- a/.github/workflows/labels.yml +++ b/.github/workflows/labels.yml @@ -1,3 +1,4 @@ +# This workflow is managed by gh actions-lock. # SPDX-License-Identifier: MPL-2.0 name: Labels diff --git a/.github/workflows/main-estate-audit.yml b/.github/workflows/main-estate-audit.yml index 7be8362a..e249814c 100644 --- a/.github/workflows/main-estate-audit.yml +++ b/.github/workflows/main-estate-audit.yml @@ -1,3 +1,5 @@ +# This workflow is managed by gh actions-lock. + name: Central Estate CI/CD Audit on: @@ -10,82 +12,82 @@ jobs: estate-audit: runs-on: ubuntu-latest steps: - - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + - uses: actions/checkout@v7.0.1 - name: Required Files Gate - uses: hyperpolymath/cicd-suite/actions/required-files-check@5a10b72e574ef63855fafd4568a4c178657f3294 # main + uses: hyperpolymath/cicd-suite/actions/required-files-check@main - name: Code Hygiene Gate - uses: hyperpolymath/cicd-suite/actions/code-hygiene-check@5a10b72e574ef63855fafd4568a4c178657f3294 # main + uses: hyperpolymath/cicd-suite/actions/code-hygiene-check@main - name: Manifest Validation Gate - uses: hyperpolymath/cicd-suite/actions/manifest-check@5a10b72e574ef63855fafd4568a4c178657f3294 # main + uses: hyperpolymath/cicd-suite/actions/manifest-check@main - name: Idris2 ABI Purity Gate - uses: hyperpolymath/cicd-suite/actions/idris2-abi-check@5a10b72e574ef63855fafd4568a4c178657f3294 # main + uses: hyperpolymath/cicd-suite/actions/idris2-abi-check@main - name: Zig UnifiedApiAdapter API Gate - uses: hyperpolymath/cicd-suite/actions/zig-unified-api-adapter-check@5a10b72e574ef63855fafd4568a4c178657f3294 # main + uses: hyperpolymath/cicd-suite/actions/zig-unified-api-adapter-check@main - name: Contractile Validation Gate - uses: hyperpolymath/cicd-suite/actions/contractile-validation-check@5a10b72e574ef63855fafd4568a4c178657f3294 # main + uses: hyperpolymath/cicd-suite/actions/contractile-validation-check@main - name: Recipes Set Validation Gate - uses: hyperpolymath/cicd-suite/actions/recipes-set-check@5a10b72e574ef63855fafd4568a4c178657f3294 # main + uses: hyperpolymath/cicd-suite/actions/recipes-set-check@main - name: Affirmation Document Gate - uses: hyperpolymath/cicd-suite/actions/affirmation-check@5a10b72e574ef63855fafd4568a4c178657f3294 # main + uses: hyperpolymath/cicd-suite/actions/affirmation-check@main - name: Academic Referencing Gate - uses: hyperpolymath/cicd-suite/actions/referencing-check@5a10b72e574ef63855fafd4568a4c178657f3294 # main + uses: hyperpolymath/cicd-suite/actions/referencing-check@main - name: Semantic Audit Gate - uses: hyperpolymath/cicd-suite/actions/semantic-audit-check@5a10b72e574ef63855fafd4568a4c178657f3294 # main + uses: hyperpolymath/cicd-suite/actions/semantic-audit-check@main - name: SPDX License Gate - uses: hyperpolymath/cicd-suite/actions/spdx-license-check@5a10b72e574ef63855fafd4568a4c178657f3294 # main + uses: hyperpolymath/cicd-suite/actions/spdx-license-check@main - name: Proof Runner Gate - uses: hyperpolymath/cicd-suite/actions/proof-runner-check@5a10b72e574ef63855fafd4568a4c178657f3294 # main + uses: hyperpolymath/cicd-suite/actions/proof-runner-check@main - name: PRAT Testing Gate - uses: hyperpolymath/cicd-suite/actions/prat-check@5a10b72e574ef63855fafd4568a4c178657f3294 # main + uses: hyperpolymath/cicd-suite/actions/prat-check@main - name: Panic Attack & Pons Gate - uses: hyperpolymath/cicd-suite/actions/custom-tools-check@5a10b72e574ef63855fafd4568a4c178657f3294 # main + uses: hyperpolymath/cicd-suite/actions/custom-tools-check@main - name: WWW & Well-Known Compliance Gate - uses: hyperpolymath/cicd-suite/actions/www-compliance-check@5a10b72e574ef63855fafd4568a4c178657f3294 # main + uses: hyperpolymath/cicd-suite/actions/www-compliance-check@main - name: BoJ Cartridge Validation Gate - uses: hyperpolymath/cicd-suite/actions/boj-cartridge-check@5a10b72e574ef63855fafd4568a4c178657f3294 # main + uses: hyperpolymath/cicd-suite/actions/boj-cartridge-check@main - name: Formatting Validation Gate - uses: hyperpolymath/cicd-suite/actions/formatting-check@5a10b72e574ef63855fafd4568a4c178657f3294 # main + uses: hyperpolymath/cicd-suite/actions/formatting-check@main - name: Accreditations & Badges Gate - uses: hyperpolymath/cicd-suite/actions/badges-check@5a10b72e574ef63855fafd4568a4c178657f3294 # main + uses: hyperpolymath/cicd-suite/actions/badges-check@main - name: Metrics Extraction Gate - uses: hyperpolymath/cicd-suite/actions/metrics-check@5a10b72e574ef63855fafd4568a4c178657f3294 # main + uses: hyperpolymath/cicd-suite/actions/metrics-check@main - name: Linguist & Banned Languages Gate - uses: hyperpolymath/cicd-suite/actions/linguist-check@5a10b72e574ef63855fafd4568a4c178657f3294 # main + uses: hyperpolymath/cicd-suite/actions/linguist-check@main - name: Test & Benchmarks Dashboard Gate - uses: hyperpolymath/cicd-suite/actions/tests-benches-check@5a10b72e574ef63855fafd4568a4c178657f3294 # main + uses: hyperpolymath/cicd-suite/actions/tests-benches-check@main - name: Hosting & Site Status Gate - uses: hyperpolymath/cicd-suite/actions/hosting-check@5a10b72e574ef63855fafd4568a4c178657f3294 # main + uses: hyperpolymath/cicd-suite/actions/hosting-check@main - name: Git-Sea Analytics Gate - uses: hyperpolymath/cicd-suite/actions/gitsea-check@5a10b72e574ef63855fafd4568a4c178657f3294 # main + uses: hyperpolymath/cicd-suite/actions/gitsea-check@main - name: Trust & Humans Validation Gate - uses: hyperpolymath/cicd-suite/actions/trust-humans-check@5a10b72e574ef63855fafd4568a4c178657f3294 # main + uses: hyperpolymath/cicd-suite/actions/trust-humans-check@main - name: Are We UnAPI Gate (Secret Scanning) - uses: hyperpolymath/cicd-suite/actions/secrets-check@5a10b72e574ef63855fafd4568a4c178657f3294 # main + uses: hyperpolymath/cicd-suite/actions/secrets-check@main - name: Reasonably Good Token Validation Gate - uses: hyperpolymath/cicd-suite/actions/vaulted-tokens-check@5a10b72e574ef63855fafd4568a4c178657f3294 # main + uses: hyperpolymath/cicd-suite/actions/vaulted-tokens-check@main diff --git a/.github/workflows/mirror.yml b/.github/workflows/mirror.yml index 07f0d6a0..af1d68f8 100644 --- a/.github/workflows/mirror.yml +++ b/.github/workflows/mirror.yml @@ -1,3 +1,4 @@ +# This workflow is managed by gh actions-lock. # SPDX-License-Identifier: MPL-2.0 name: Mirror to Git Forges diff --git a/.github/workflows/push-email-notify.yml b/.github/workflows/push-email-notify.yml index 1d4d92f1..f4765e12 100644 --- a/.github/workflows/push-email-notify.yml +++ b/.github/workflows/push-email-notify.yml @@ -1,3 +1,4 @@ +# This workflow is managed by gh actions-lock. # SPDX-License-Identifier: MPL-2.0 # Dormant push-email notification. ARMED by setting the repo variable # PUSH_EMAIL_ENABLED=true (the single on/off switch). Addresses are pre-filled; @@ -39,7 +40,7 @@ jobs: timeout-minutes: 5 steps: - name: Send push notification email - uses: hyperpolymath/smtp-notify-action@c1c9fa07992a02c1fd3d67a0dc1b08cccb852aef # v0.5.0 + uses: hyperpolymath/smtp-notify-action@v0.5.0 with: server_address: ${{ secrets.SMTP_HOST }} server_port: ${{ secrets.SMTP_PORT }} diff --git a/.github/workflows/rust-ci.yml b/.github/workflows/rust-ci.yml index b4bfb3d0..ca53233b 100644 --- a/.github/workflows/rust-ci.yml +++ b/.github/workflows/rust-ci.yml @@ -1,3 +1,4 @@ +# This workflow is managed by gh actions-lock. # SPDX-License-Identifier: MPL-2.0 # Rust CI — thin wrapper calling the shared estate reusable in # hyperpolymath/standards. Configure once, propagate everywhere. diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 0d9966d7..57473e9e 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -1,3 +1,4 @@ +# This workflow is managed by gh actions-lock. # SPDX-License-Identifier: MPL-2.0 name: Scorecards supply-chain security diff --git a/.github/workflows/secret-scanner.yml b/.github/workflows/secret-scanner.yml index e5d29b27..ebe54aef 100644 --- a/.github/workflows/secret-scanner.yml +++ b/.github/workflows/secret-scanner.yml @@ -1,3 +1,4 @@ +# This workflow is managed by gh actions-lock. # SPDX-License-Identifier: MPL-2.0 name: Secret Scanner From 469f7ec09158ec58960550ccdaa13e3933b4adb4 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 14 Oct 2026 10:18:43 +0000 Subject: [PATCH 08/13] ci(estate-audit): call cicd-suite's reusable, not a drifted inline copy main-estate-audit.yml was the copy rollout_estate.sh pasted in: 26 gate steps pinned at cicd-suite 5a10b72, no SPDX header and no top-level permissions. The last two fail Governance / Workflow security linter. It is now the thin caller rsr-template-repo ships: permissions contents: read, calling cicd-suite/.github/workflows/main-estate-audit.yml at 4f54042 (main, #49), whose gates are pinned at 1aa6bfb. actions.lock follows the rsr-template-repo shape for the callee: cicd-suite@4f54042 -> actions/checkout@3d3c42e + cicd-suite@1aa6bfb -> the deed/k9 validate-actions it already recorded. The unused cicd-suite@main record is removed. gh actions-lock v0.1.6 --verify-local is valid, standards' check-lock-sync.sh passes, and so does rsr-template-repo's (0 dangling edges). Refs #137. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01BCQeL169ZnUirUVaDXQLA3 --- .github/workflows/actions.lock | 22 ++++-- .github/workflows/main-estate-audit.yml | 97 ++++--------------------- 2 files changed, 32 insertions(+), 87 deletions(-) diff --git a/.github/workflows/actions.lock b/.github/workflows/actions.lock index f7dd7d50..ff62b1c7 100644 --- a/.github/workflows/actions.lock +++ b/.github/workflows/actions.lock @@ -38,8 +38,7 @@ workflows: '.github/workflows/label-triage.yml': [] '.github/workflows/labels.yml': [] '.github/workflows/main-estate-audit.yml': - - 'actions/checkout@v7.0.1' - - 'hyperpolymath/cicd-suite@main' + - 'hyperpolymath/cicd-suite@4f5404281dd7092fa77cc18daec7237c4f1ee4ac' '.github/workflows/mirror.yml': - 'hyperpolymath/standards@092dedada188f56c5915f74a5fd40aac093742c3' '.github/workflows/push-email-notify.yml': @@ -56,6 +55,11 @@ dependencies: commit: 'sha1-55cc8345863c7cc4c66a329aec7e433d2d1c52a9' owner_id: 44036562 repo_id: 215566462 + 'actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1': + ref: '3d3c42e5aac5ba805825da76410c181273ba90b1' + commit: 'sha1-3d3c42e5aac5ba805825da76410c181273ba90b1' + owner_id: 44036562 + repo_id: 197814629 'actions/checkout@v7.0.1': ref: 'v7.0.1' commit: 'sha1-3d3c42e5aac5ba805825da76410c181273ba90b1' @@ -108,14 +112,22 @@ dependencies: commit: 'sha1-0f8e8c99d88aeb3fbfd523f1ef2c6f762d10d64d' owner_id: 75048950 repo_id: 623796603 - 'hyperpolymath/cicd-suite@main': - ref: 'main' - commit: 'sha1-5a10b72e574ef63855fafd4568a4c178657f3294' + 'hyperpolymath/cicd-suite@1aa6bfb657f8240db089a8eef1ad4a7ac198bcf0': + ref: '1aa6bfb657f8240db089a8eef1ad4a7ac198bcf0' + commit: 'sha1-1aa6bfb657f8240db089a8eef1ad4a7ac198bcf0' owner_id: 6759885 repo_id: 1326697643 uses: - 'hyperpolymath/deed-ecosystem@f9d999b60cb5f383679ea19912bcdc49c944973a' - 'hyperpolymath/k9-ecosystem@2155aa26a21758f2ba119f61bc7e0e1981c106fb' + 'hyperpolymath/cicd-suite@4f5404281dd7092fa77cc18daec7237c4f1ee4ac': + ref: '4f5404281dd7092fa77cc18daec7237c4f1ee4ac' + commit: 'sha1-4f5404281dd7092fa77cc18daec7237c4f1ee4ac' + owner_id: 6759885 + repo_id: 1326697643 + uses: + - 'actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1' + - 'hyperpolymath/cicd-suite@1aa6bfb657f8240db089a8eef1ad4a7ac198bcf0' 'hyperpolymath/deed-ecosystem@f9d999b60cb5f383679ea19912bcdc49c944973a': ref: 'main' commit: 'sha1-f9d999b60cb5f383679ea19912bcdc49c944973a' diff --git a/.github/workflows/main-estate-audit.yml b/.github/workflows/main-estate-audit.yml index e249814c..9c71cebf 100644 --- a/.github/workflows/main-estate-audit.yml +++ b/.github/workflows/main-estate-audit.yml @@ -1,7 +1,18 @@ # This workflow is managed by gh actions-lock. - +# SPDX-License-Identifier: MPL-2.0 +# Central Estate CI/CD Audit — thin caller of the canonical reusable in +# hyperpolymath/cicd-suite, in the form rsr-template-repo ships. It replaces an +# inline copy of the 26 gate steps that rollout_estate.sh had pasted in: that +# copy drifted (gates pinned at 5a10b72, three weeks stale), and it had no +# SPDX header and no top-level permissions, which failed the governance +# workflow linter. name: Central Estate CI/CD Audit +# The called reusable declares `permissions: contents: read`; a caller must +# grant at least what the reusable declares, and this grants exactly that. +permissions: + contents: read + on: push: branches: [ "main" ] @@ -10,84 +21,6 @@ on: jobs: estate-audit: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v7.0.1 - - - name: Required Files Gate - uses: hyperpolymath/cicd-suite/actions/required-files-check@main - - - name: Code Hygiene Gate - uses: hyperpolymath/cicd-suite/actions/code-hygiene-check@main - - - name: Manifest Validation Gate - uses: hyperpolymath/cicd-suite/actions/manifest-check@main - - - name: Idris2 ABI Purity Gate - uses: hyperpolymath/cicd-suite/actions/idris2-abi-check@main - - - name: Zig UnifiedApiAdapter API Gate - uses: hyperpolymath/cicd-suite/actions/zig-unified-api-adapter-check@main - - - name: Contractile Validation Gate - uses: hyperpolymath/cicd-suite/actions/contractile-validation-check@main - - - name: Recipes Set Validation Gate - uses: hyperpolymath/cicd-suite/actions/recipes-set-check@main - - - name: Affirmation Document Gate - uses: hyperpolymath/cicd-suite/actions/affirmation-check@main - - - name: Academic Referencing Gate - uses: hyperpolymath/cicd-suite/actions/referencing-check@main - - - name: Semantic Audit Gate - uses: hyperpolymath/cicd-suite/actions/semantic-audit-check@main - - - name: SPDX License Gate - uses: hyperpolymath/cicd-suite/actions/spdx-license-check@main - - - name: Proof Runner Gate - uses: hyperpolymath/cicd-suite/actions/proof-runner-check@main - - - name: PRAT Testing Gate - uses: hyperpolymath/cicd-suite/actions/prat-check@main - - - name: Panic Attack & Pons Gate - uses: hyperpolymath/cicd-suite/actions/custom-tools-check@main - - - name: WWW & Well-Known Compliance Gate - uses: hyperpolymath/cicd-suite/actions/www-compliance-check@main - - - name: BoJ Cartridge Validation Gate - uses: hyperpolymath/cicd-suite/actions/boj-cartridge-check@main - - - name: Formatting Validation Gate - uses: hyperpolymath/cicd-suite/actions/formatting-check@main - - - name: Accreditations & Badges Gate - uses: hyperpolymath/cicd-suite/actions/badges-check@main - - - name: Metrics Extraction Gate - uses: hyperpolymath/cicd-suite/actions/metrics-check@main - - - name: Linguist & Banned Languages Gate - uses: hyperpolymath/cicd-suite/actions/linguist-check@main - - - name: Test & Benchmarks Dashboard Gate - uses: hyperpolymath/cicd-suite/actions/tests-benches-check@main - - - name: Hosting & Site Status Gate - uses: hyperpolymath/cicd-suite/actions/hosting-check@main - - - name: Git-Sea Analytics Gate - uses: hyperpolymath/cicd-suite/actions/gitsea-check@main - - - name: Trust & Humans Validation Gate - uses: hyperpolymath/cicd-suite/actions/trust-humans-check@main - - - name: Are We UnAPI Gate (Secret Scanning) - uses: hyperpolymath/cicd-suite/actions/secrets-check@main - - - name: Reasonably Good Token Validation Gate - uses: hyperpolymath/cicd-suite/actions/vaulted-tokens-check@main + # cicd-suite main (#49): the 26 gate composites at 1aa6bfb. Repin when the + # callee is updated, to a main-reachable commit, never a PR head. + uses: hyperpolymath/cicd-suite/.github/workflows/main-estate-audit.yml@4f5404281dd7092fa77cc18daec7237c4f1ee4ac From b1e0a9e0f3081beb889c781d222b5509f2faca8f Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 14 Oct 2026 10:18:53 +0000 Subject: [PATCH 09/13] fix(hygiene): link every debt marker to an issue; exempt two scanners The estate Code Hygiene Gate failed on 734 untracked debt markers. - 726 are the stub line `// TODO: Complete semantic implementation`. #107 left it in every .affine file it created in place of the deleted ReScript. That is real debt, so the markers are linked as TODO(#148) rather than allowlisted. #148 records what #107 removed and the decision it leaves. - 4 are real unfinished FFI/ABI work and are linked as TODO(#149): copro_free leaks, panel_clades_register stores nothing, Idris callback registration is missing, and the container entrypoint is template residue. - 4 are not debt. They are listed in .cicd-hygiene-allow, each with its reason: run-maintenance.sh is itself a marker scanner (help text and rg pattern), and voicetag_engine_test.js asserts the display labels "TODO"/"FIXME". cicd-suite code-hygiene-check at 1aa6bfb, run locally: passed. Refs #137. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01BCQeL169ZnUirUVaDXQLA3 --- .cicd-hygiene-allow | 12 ++++++++++++ clade-portal/src/App.affine | 2 +- clade-portal/src/Capabilities.affine | 2 +- clade-portal/src/CladeCmd.affine | 2 +- clade-portal/src/Model.affine | 2 +- clade-portal/src/Msg.affine | 2 +- clade-portal/src/RuntimeBridge.affine | 2 +- ffi/zig/src/coprocessor.zig | 2 +- panel-clades/container/entrypoint.sh | 2 +- panel-clades/ffi/zig/src/main.zig | 2 +- panel-clades/src/abi/PanelClades/ABI/Foreign.idr | 2 +- src/App.affine | 2 +- src/Model.affine | 2 +- src/Msg.affine | 2 +- src/Storage.affine | 2 +- src/SubscriptionsFixed.affine | 2 +- src/Update.affine | 2 +- src/View.affine | 2 +- src/commands/A2mlCmd.affine | 2 +- src/commands/AerieCmd.affine | 2 +- src/commands/AgentCoordinationCmd.affine | 2 +- src/commands/AgentOodaCmd.affine | 2 +- src/commands/AgentSafetyCmd.affine | 2 +- src/commands/AiCmd.affine | 2 +- src/commands/AutomationRouterCmd.affine | 2 +- src/commands/BojCmd.affine | 2 +- src/commands/BojLiveCmd.affine | 2 +- src/commands/BuildDashboardCmd.affine | 2 +- src/commands/BurbleCmd.affine | 2 +- src/commands/CaptureCmd.affine | 2 +- src/commands/CladeCmd.affine | 2 +- src/commands/CloudGuardCmd.affine | 2 +- src/commands/CoprocessorsCmd.affine | 2 +- src/commands/DlcWorkshopCmd.affine | 2 +- src/commands/EchidnaLiveCmd.affine | 2 +- src/commands/EditorBridgeCmd.affine | 2 +- src/commands/EnsaidConfigCmd.affine | 2 +- src/commands/FarmCmd.affine | 2 +- src/commands/FeedbackCmd.affine | 2 +- src/commands/FleetCmd.affine | 2 +- src/commands/FleetLiveCmd.affine | 2 +- src/commands/GamePreviewCmd.affine | 2 +- src/commands/GossamerCmd.affine | 2 +- src/commands/GovernanceCmd.affine | 2 +- src/commands/HealthCheckCmd.affine | 2 +- src/commands/HypatiaCmd.affine | 2 +- src/commands/IdentityCmd.affine | 2 +- src/commands/InterfacesCmd.affine | 2 +- src/commands/K9Cmd.affine | 2 +- src/commands/LevelArchitectCmd.affine | 2 +- src/commands/LlmCodingCmd.affine | 2 +- src/commands/MassPanicCmd.affine | 2 +- src/commands/MinterCmd.affine | 2 +- src/commands/MultiplayerMonitorCmd.affine | 2 +- src/commands/MyLangCmd.affine | 2 +- src/commands/NesyDriftCmd.affine | 2 +- src/commands/NesyHarmonizeCmd.affine | 2 +- src/commands/NesyModesCmd.affine | 2 +- src/commands/NetworkTopologyCmd.affine | 2 +- src/commands/ObservabilityCmd.affine | 2 +- src/commands/PanicAttackCmd.affine | 2 +- src/commands/PlaygroundsCmd.affine | 2 +- src/commands/PlazaCmd.affine | 2 +- src/commands/ProtocolSquisherCmd.affine | 2 +- src/commands/ProvenanceCmd.affine | 2 +- src/commands/ProvisionerCmd.affine | 2 +- src/commands/ReleaseManagerCmd.affine | 2 +- src/commands/RepoLoaderCmd.affine | 2 +- src/commands/ReposystemCmd.affine | 2 +- src/commands/ScriptGistCmd.affine | 2 +- src/commands/SecurityCmd.affine | 2 +- src/commands/ServiceCmd.affine | 2 +- src/commands/SettingsCmd.affine | 2 +- src/commands/StapelnCmd.affine | 2 +- src/commands/SystemUpdateCmd.affine | 2 +- src/commands/TentaclesCmd.affine | 2 +- src/commands/TimelineCmd.affine | 2 +- src/commands/TsdmCmd.affine | 2 +- src/commands/TypeLLCmd.affine | 2 +- src/commands/UmojaCmd.affine | 2 +- src/commands/UmsCmd.affine | 2 +- src/commands/ValenceShellCmd.affine | 2 +- src/commands/VeriSimDbLiveCmd.affine | 2 +- src/commands/VideoCoordinationCmd.affine | 2 +- src/commands/VmInspectorCmd.affine | 2 +- src/commands/VoiceTagCmd.affine | 2 +- src/commands/VqlCmd.affine | 2 +- src/commands/WatcherCmd.affine | 2 +- src/commands/WiringInspectorCmd.affine | 2 +- src/commands/WizardCmd.affine | 2 +- src/commands/WorkspaceCmd.affine | 2 +- src/components/AccessibilityToolbar.affine | 2 +- src/components/Aerie.affine | 2 +- src/components/AgentCoordination.affine | 2 +- src/components/AgentOoda.affine | 2 +- src/components/AgentSafety.affine | 2 +- src/components/AgenticBridge.affine | 2 +- src/components/Ai.affine | 2 +- src/components/AmbientOps.affine | 2 +- src/components/ArchitectMode.affine | 2 +- src/components/AssetManager.affine | 2 +- src/components/AutomationBridge.affine | 2 +- src/components/AutomationRouter.affine | 2 +- src/components/BalanceAnalyser.affine | 2 +- src/components/BetaFeedbackHub.affine | 2 +- src/components/Boj.affine | 2 +- src/components/BuildDashboard.affine | 2 +- src/components/BurbleRoomMonitor.affine | 2 +- src/components/BurbleServerStatus.affine | 2 +- src/components/BurbleVoiceQuality.affine | 2 +- src/components/Capture.affine | 2 +- src/components/CaptureBar.affine | 2 +- src/components/CladeBrowser.affine | 2 +- src/components/CloudGuard.affine | 2 +- src/components/CloudGuardDiffViewer.affine | 2 +- src/components/CloudGuardDnsEditor.affine | 2 +- src/components/CloudGuardDomainList.affine | 2 +- src/components/CloudGuardPagesSetup.affine | 2 +- src/components/CloudGuardSettingsGrid.affine | 2 +- src/components/CodeReview.affine | 2 +- src/components/CompatibilityMatrix.affine | 2 +- src/components/ContractileCompleteness.affine | 2 +- src/components/ContractileManager.affine | 2 +- src/components/Coprocessors.affine | 2 +- src/components/DatabaseBridge.affine | 2 +- src/components/Databases.affine | 2 +- src/components/DebuggingWorkbench.affine | 2 +- src/components/DeviceNetworkDesigner.affine | 2 +- src/components/DlcWorkshop.affine | 2 +- src/components/Echidna.affine | 2 +- src/components/EditorBridge.affine | 2 +- src/components/Evangeliser.affine | 2 +- src/components/ExploratoryWorkbench.affine | 2 +- src/components/Farm.affine | 2 +- src/components/FeedbackOTron.affine | 2 +- src/components/FeedbackRouting.affine | 2 +- src/components/Fleet.affine | 2 +- src/components/FleetAgenticBridge.affine | 2 +- src/components/FloorRaise.affine | 2 +- src/components/FunctionalTester.affine | 2 +- src/components/GamePreview.affine | 2 +- src/components/GeneratorMode.affine | 2 +- src/components/GuardAiTuner.affine | 2 +- src/components/Help.affine | 2 +- src/components/Hypatia.affine | 2 +- src/components/Interfaces.affine | 2 +- src/components/K9Manager.affine | 2 +- src/components/LanguageForge.affine | 2 +- src/components/LevelArchitect.affine | 2 +- src/components/LlmCoding.affine | 2 +- src/components/LoadTester.affine | 2 +- src/components/ManifestCoverage.affine | 2 +- src/components/MassPanic.affine | 2 +- src/components/MenuBar.affine | 2 +- src/components/MergeCoordinator.affine | 2 +- src/components/Migration.affine | 2 +- src/components/Minter.affine | 2 +- src/components/MultiplayerMonitor.affine | 2 +- src/components/MyLang.affine | 2 +- src/components/NesyDrift.affine | 2 +- src/components/NesyHarmonize.affine | 2 +- src/components/NesyModes.affine | 2 +- src/components/NetworkTopology.affine | 2 +- src/components/NeurosymBridge.affine | 2 +- src/components/Observatory.affine | 2 +- src/components/Oo7Toolchain.affine | 2 +- src/components/PaneA.affine | 2 +- src/components/PaneL.affine | 2 +- src/components/PaneN.affine | 2 +- src/components/PaneW.affine | 2 +- src/components/PanelSwitcher.affine | 2 +- src/components/PanicAttack.affine | 2 +- src/components/PerformanceProfiler.affine | 2 +- src/components/Playgrounds.affine | 2 +- src/components/PlaytestRecorder.affine | 2 +- src/components/Plaza.affine | 2 +- src/components/ProofChain.affine | 2 +- src/components/ProofsBridge.affine | 2 +- src/components/ProtocolBridge.affine | 2 +- src/components/ProtocolSquisher.affine | 2 +- src/components/ProvenAdoption.affine | 2 +- src/components/Provenance.affine | 2 +- src/components/Provisioner.affine | 2 +- src/components/RainbowAgents.affine | 2 +- src/components/RegressionGuard.affine | 2 +- src/components/ReleaseManager.affine | 2 +- src/components/RepoLoader.affine | 2 +- src/components/Reposystem.affine | 2 +- src/components/ScriptGist.affine | 2 +- src/components/ScriptingBridge.affine | 2 +- src/components/Security.affine | 2 +- src/components/SoakMonitor.affine | 2 +- src/components/SpecBrowser.affine | 2 +- src/components/Stapeln.affine | 2 +- src/components/StatusBar.affine | 2 +- src/components/StrategyDrift.affine | 2 +- src/components/SystemUpdate.affine | 2 +- src/components/TangleViz.affine | 2 +- src/components/TeamDashboard.affine | 2 +- src/components/Tentacles.affine | 2 +- src/components/Tsdm.affine | 2 +- src/components/TypeLL.affine | 2 +- src/components/TypingBridge.affine | 2 +- src/components/Ums.affine | 2 +- src/components/UnitTestRunner.affine | 2 +- src/components/Vab.affine | 2 +- src/components/ValenceShell.affine | 2 +- src/components/VerificationDashboard.affine | 2 +- src/components/VerisimdbFeeds.affine | 2 +- src/components/Vexometer.affine | 2 +- src/components/VexometerFriction.affine | 2 +- src/components/VideoCoordination.affine | 2 +- src/components/VmInspector.affine | 2 +- src/components/VoiceTag.affine | 2 +- src/components/WiringInspector.affine | 2 +- src/components/Wizard.affine | 2 +- src/components/Workspace.affine | 2 +- src/core/A2mlEngine.affine | 2 +- src/core/AccessibilityEngine.affine | 2 +- src/core/AerieEngine.affine | 2 +- src/core/AgentCoordinationEngine.affine | 2 +- src/core/AgentOodaEngine.affine | 2 +- src/core/AgentSafetyEngine.affine | 2 +- src/core/AgenticBridgeEngine.affine | 2 +- src/core/AiEngine.affine | 2 +- src/core/AmbientOpsEngine.affine | 2 +- src/core/AntiCrash.affine | 2 +- src/core/ArchitectModeEngine.affine | 2 +- src/core/AssetManagerEngine.affine | 2 +- src/core/AttributionLicenseEngine.affine | 2 +- src/core/AutomationBridgeEngine.affine | 2 +- src/core/AutomationRouterEngine.affine | 2 +- src/core/BalanceAnalyserEngine.affine | 2 +- src/core/BetaFeedbackHubEngine.affine | 2 +- src/core/BojEngine.affine | 2 +- src/core/BuildDashboardEngine.affine | 2 +- src/core/BurbleEngine.affine | 2 +- src/core/CaptureEngine.affine | 2 +- src/core/CladeBrowserEngine.affine | 2 +- src/core/CloudGuardCatalog.affine | 2 +- src/core/CloudGuardEngine.affine | 2 +- src/core/CloudGuardPolicy.affine | 2 +- src/core/CodeReviewEngine.affine | 2 +- src/core/CompatibilityMatrixEngine.affine | 2 +- src/core/ConnectionManager.affine | 2 +- src/core/ContractileCompletenessEngine.affine | 2 +- src/core/Contractiles.affine | 2 +- src/core/CoprocessorsEngine.affine | 2 +- src/core/DOMPurify.affine | 2 +- src/core/DatabaseBridgeEngine.affine | 2 +- src/core/DatabasesEngine.affine | 2 +- src/core/DebugLogger.affine | 2 +- src/core/DebuggingWorkbenchEngine.affine | 2 +- src/core/Decoders.affine | 2 +- src/core/DeviceNetworkDesignerEngine.affine | 2 +- src/core/DlcWorkshopEngine.affine | 2 +- src/core/EchidnaEngine.affine | 2 +- src/core/EditorBridgeEngine.affine | 2 +- src/core/EnsaidConfigEngine.affine | 2 +- src/core/ErrorBoundary.affine | 2 +- src/core/EvangeliserEngine.affine | 2 +- src/core/EventChain.affine | 2 +- src/core/ExploratoryWorkbenchEngine.affine | 2 +- src/core/FarmEngine.affine | 2 +- src/core/FeedbackRoutingEngine.affine | 2 +- src/core/FleetEngine.affine | 2 +- src/core/FloorRaiseEngine.affine | 2 +- src/core/FocusDimmingEngine.affine | 2 +- src/core/FunctionalTesterEngine.affine | 2 +- src/core/GamePreviewEngine.affine | 2 +- src/core/GeneratorModeEngine.affine | 2 +- src/core/GovernanceEngine.affine | 2 +- src/core/GuardAiTunerEngine.affine | 2 +- src/core/HelpContent.affine | 2 +- src/core/HelpEngine.affine | 2 +- src/core/HypatiaEngine.affine | 2 +- src/core/InterfacesEngine.affine | 2 +- src/core/K9Engine.affine | 2 +- src/core/KeybindingsEngine.affine | 2 +- src/core/KeyboardNav.affine | 2 +- src/core/KeyboardUtil.affine | 2 +- src/core/LanguageForgeEngine.affine | 2 +- src/core/LevelArchitectEngine.affine | 2 +- src/core/LlmCodingEngine.affine | 2 +- src/core/LoadTesterEngine.affine | 2 +- src/core/ManifestCoverageEngine.affine | 2 +- src/core/MassPanicEngine.affine | 2 +- src/core/MergeCoordinatorEngine.affine | 2 +- src/core/MigrationEngine.affine | 2 +- src/core/MinterEngine.affine | 2 +- src/core/MultiplayerMonitorEngine.affine | 2 +- src/core/MyLangEngine.affine | 2 +- src/core/NesyDriftEngine.affine | 2 +- src/core/NesyHarmonizeEngine.affine | 2 +- src/core/NesyModesEngine.affine | 2 +- src/core/NetworkTopologyEngine.affine | 2 +- src/core/NeurosymBridgeEngine.affine | 2 +- src/core/ObservabilityEngine.affine | 2 +- src/core/ObservatoryEngine.affine | 2 +- src/core/OrbitalSync.affine | 2 +- src/core/PanelBus.affine | 2 +- src/core/PanicAttackEngine.affine | 2 +- src/core/PanicAttackerCapability.affine | 2 +- src/core/PanicAttackerMode.affine | 2 +- src/core/PatternDiagEngine.affine | 2 +- src/core/PerformanceProfilerEngine.affine | 2 +- src/core/PlaygroundsEngine.affine | 2 +- src/core/PlaytestRecorderEngine.affine | 2 +- src/core/PlazaEngine.affine | 2 +- src/core/ProofsBridgeEngine.affine | 2 +- src/core/ProtocolBridgeEngine.affine | 2 +- src/core/ProtocolSquisherEngine.affine | 2 +- src/core/ProvenAdoptionEngine.affine | 2 +- src/core/ProvenanceEngine.affine | 2 +- src/core/ProvisionerEngine.affine | 2 +- src/core/RegressionGuardEngine.affine | 2 +- src/core/ReleaseManagerEngine.affine | 2 +- src/core/RepoLoaderEngine.affine | 2 +- src/core/ReposystemEngine.affine | 2 +- src/core/RuntimeBridge.affine | 2 +- src/core/RuntimeResolver.affine | 2 +- src/core/SafeDOMCore.affine | 2 +- src/core/SafeMount.affine | 2 +- src/core/ScriptGistEngine.affine | 2 +- src/core/ScriptingBridgeEngine.affine | 2 +- src/core/SeamEngine.affine | 2 +- src/core/SecurityEngine.affine | 2 +- src/core/SmartRouter.affine | 2 +- src/core/SoakMonitorEngine.affine | 2 +- src/core/SpecBrowserEngine.affine | 2 +- src/core/StapelnEngine.affine | 2 +- src/core/StatusBarEngine.affine | 2 +- src/core/TangleVizEngine.affine | 2 +- src/core/TeamDashboardEngine.affine | 2 +- src/core/TentaclesEngine.affine | 2 +- src/core/TilingEngine.affine | 2 +- src/core/TimelineEngine.affine | 2 +- src/core/TrustedTypes.affine | 2 +- src/core/TsdmEngine.affine | 2 +- src/core/TypeLLEngine.affine | 2 +- src/core/TypingBridgeEngine.affine | 2 +- src/core/UmsEngine.affine | 2 +- src/core/UndoEngine.affine | 2 +- src/core/UnitTestRunnerEngine.affine | 2 +- src/core/VabCatalog.affine | 2 +- src/core/VabEngine.affine | 2 +- src/core/ValenceShellEngine.affine | 2 +- src/core/VerificationDashboardEngine.affine | 2 +- src/core/VerisimdbFeedsEngine.affine | 2 +- src/core/VexometerFrictionEngine.affine | 2 +- src/core/VideoCoordinationEngine.affine | 2 +- src/core/VmInspectorEngine.affine | 2 +- src/core/VoiceTagEngine.affine | 2 +- src/core/VqlEngine.affine | 2 +- src/core/WindowBridge.affine | 2 +- src/core/WiringInspectorEngine.affine | 2 +- src/core/WizardMinter.affine | 2 +- src/core/WorkspaceEngine.affine | 2 +- src/generated/CartridgeAbi.affine | 2 +- src/model/AccessibilityModel.affine | 2 +- src/model/AerieModel.affine | 2 +- src/model/AgentCoordinationModel.affine | 2 +- src/model/AgentOodaModel.affine | 2 +- src/model/AgentSafetyModel.affine | 2 +- src/model/AgenticBridgeModel.affine | 2 +- src/model/AiModel.affine | 2 +- src/model/AmbientOpsModel.affine | 2 +- src/model/ArchitectModeModel.affine | 2 +- src/model/AssetManagerModel.affine | 2 +- src/model/AttributionLicenseModel.affine | 2 +- src/model/AutomationBridgeModel.affine | 2 +- src/model/AutomationRouterModel.affine | 2 +- src/model/BalanceAnalyserModel.affine | 2 +- src/model/BetaFeedbackHubModel.affine | 2 +- src/model/BojModel.affine | 2 +- src/model/BuildDashboardModel.affine | 2 +- src/model/BurbleModel.affine | 2 +- src/model/CaptureModel.affine | 2 +- src/model/CladeBrowserModel.affine | 2 +- src/model/CloudGuardModel.affine | 2 +- src/model/CodeReviewModel.affine | 2 +- src/model/CompatibilityMatrixModel.affine | 2 +- src/model/ContractileCompletenessModel.affine | 2 +- src/model/CoprocessorsModel.affine | 2 +- src/model/DatabaseBridgeModel.affine | 2 +- src/model/DatabasesModel.affine | 2 +- src/model/DebuggingWorkbenchModel.affine | 2 +- src/model/DeviceNetworkDesignerModel.affine | 2 +- src/model/DlcWorkshopModel.affine | 2 +- src/model/EchidnaModel.affine | 2 +- src/model/EditorBridgeModel.affine | 2 +- src/model/EvangeliserModel.affine | 2 +- src/model/ExploratoryWorkbenchModel.affine | 2 +- src/model/FarmModel.affine | 2 +- src/model/FeedbackRoutingModel.affine | 2 +- src/model/FleetModel.affine | 2 +- src/model/FloorRaiseModel.affine | 2 +- src/model/FocusDimmingModel.affine | 2 +- src/model/FunctionalTesterModel.affine | 2 +- src/model/GamePreviewModel.affine | 2 +- src/model/GeneratorModeModel.affine | 2 +- src/model/GovernanceModel.affine | 2 +- src/model/GuardAiTunerModel.affine | 2 +- src/model/HelpModel.affine | 2 +- src/model/HypatiaModel.affine | 2 +- src/model/IdentityModel.affine | 2 +- src/model/InterfacesModel.affine | 2 +- src/model/K9Model.affine | 2 +- src/model/KeybindingsModel.affine | 2 +- src/model/LanguageForgeModel.affine | 2 +- src/model/LevelArchitectModel.affine | 2 +- src/model/LlmCodingModel.affine | 2 +- src/model/LoadTesterModel.affine | 2 +- src/model/ManifestCoverageModel.affine | 2 +- src/model/MassPanicModel.affine | 2 +- src/model/MenuBarModel.affine | 2 +- src/model/MergeCoordinatorModel.affine | 2 +- src/model/MigrationModel.affine | 2 +- src/model/MinterModel.affine | 2 +- src/model/MultiplayerMonitorModel.affine | 2 +- src/model/MyLangModel.affine | 2 +- src/model/NesyDriftModel.affine | 2 +- src/model/NesyHarmonizeModel.affine | 2 +- src/model/NesyModesModel.affine | 2 +- src/model/NetworkTopologyModel.affine | 2 +- src/model/NeurosymBridgeModel.affine | 2 +- src/model/ObservatoryModel.affine | 2 +- src/model/Oo7ToolchainModel.affine | 2 +- src/model/PaneModel.affine | 2 +- src/model/PanelSwitcherModel.affine | 2 +- src/model/PanicAttackModel.affine | 2 +- src/model/PatternDiagModel.affine | 2 +- src/model/PerformanceProfilerModel.affine | 2 +- src/model/PlaygroundsModel.affine | 2 +- src/model/PlaytestRecorderModel.affine | 2 +- src/model/PlazaModel.affine | 2 +- src/model/ProofsBridgeModel.affine | 2 +- src/model/ProtocolBridgeModel.affine | 2 +- src/model/ProtocolSquisherModel.affine | 2 +- src/model/ProvenAdoptionModel.affine | 2 +- src/model/ProvenanceModel.affine | 2 +- src/model/ProvisionerModel.affine | 2 +- src/model/RegressionGuardModel.affine | 2 +- src/model/ReleaseManagerModel.affine | 2 +- src/model/RepoLoaderModel.affine | 2 +- src/model/ReposystemModel.affine | 2 +- src/model/ScriptGistModel.affine | 2 +- src/model/ScriptingBridgeModel.affine | 2 +- src/model/SecurityModel.affine | 2 +- src/model/ServiceModel.affine | 2 +- src/model/SettingsModel.affine | 2 +- src/model/SoakMonitorModel.affine | 2 +- src/model/SpecBrowserModel.affine | 2 +- src/model/StapelnModel.affine | 2 +- src/model/StatusBarModel.affine | 2 +- src/model/SystemUpdateModel.affine | 2 +- src/model/TangleVizModel.affine | 2 +- src/model/TeamDashboardModel.affine | 2 +- src/model/TentaclesModel.affine | 2 +- src/model/TilingModel.affine | 2 +- src/model/TimelineModel.affine | 2 +- src/model/TsdmModel.affine | 2 +- src/model/TypeLLModel.affine | 2 +- src/model/TypingBridgeModel.affine | 2 +- src/model/UmsModel.affine | 2 +- src/model/UnitTestRunnerModel.affine | 2 +- src/model/VabModel.affine | 2 +- src/model/ValenceShellModel.affine | 2 +- src/model/VeriSimModel.affine | 2 +- src/model/VerificationDashboardModel.affine | 2 +- src/model/VerisimdbFeedsModel.affine | 2 +- src/model/VexometerFrictionModel.affine | 2 +- src/model/VideoCoordinationModel.affine | 2 +- src/model/VmInspectorModel.affine | 2 +- src/model/VoiceTagModel.affine | 2 +- src/model/VqlModel.affine | 2 +- src/model/WatcherModel.affine | 2 +- src/model/WiringInspectorModel.affine | 2 +- src/model/WizardModel.affine | 2 +- src/model/WorkspaceModel.affine | 2 +- src/modules/A2mlParser.affine | 2 +- src/modules/CladeLoader.affine | 2 +- src/modules/CloudGuardModule.affine | 2 +- src/modules/DatabaseModule.affine | 2 +- src/modules/DatabaseRegistry.affine | 2 +- src/modules/FarmModule.affine | 2 +- src/modules/LanguageForgeModule.affine | 2 +- src/modules/MassPanicModule.affine | 2 +- src/modules/MigrationModule.affine | 2 +- src/modules/PanelRegistry.affine | 2 +- src/modules/PanicAttackModule.affine | 2 +- src/modules/PlazaModule.affine | 2 +- src/modules/ServiceEndpoints.affine | 2 +- src/modules/SpecBrowserModule.affine | 2 +- src/modules/SystemUpdateModule.affine | 2 +- src/modules/TangleVizModule.affine | 2 +- src/modules/TsdmModule.affine | 2 +- src/modules/TypeLLService.affine | 2 +- src/modules/VerificationDashboardModule.affine | 2 +- src/msg/A2mlMsg.affine | 2 +- src/msg/AccessibilityMsg.affine | 2 +- src/msg/AerieMsg.affine | 2 +- src/msg/AgenticBridgeMsg.affine | 2 +- src/msg/AiMsg.affine | 2 +- src/msg/AmbientOpsMsg.affine | 2 +- src/msg/AntiCrashMsg.affine | 2 +- src/msg/ArchitectModeMsg.affine | 2 +- src/msg/AssetManagerMsg.affine | 2 +- src/msg/AttributionLicenseMsg.affine | 2 +- src/msg/AutomationBridgeMsg.affine | 2 +- src/msg/AutomationRouterMsg.affine | 2 +- src/msg/BalanceAnalyserMsg.affine | 2 +- src/msg/BetaFeedbackHubMsg.affine | 2 +- src/msg/BojMsg.affine | 2 +- src/msg/BuildDashboardMsg.affine | 2 +- src/msg/CaptureMsg.affine | 2 +- src/msg/CladeBrowserMsg.affine | 2 +- src/msg/CloudguardMsg.affine | 2 +- src/msg/CodeReviewMsg.affine | 2 +- src/msg/CompatibilityMatrixMsg.affine | 2 +- src/msg/ContractileCompletenessMsg.affine | 2 +- src/msg/CoprocessorsMsg.affine | 2 +- src/msg/DatabaseBridgeMsg.affine | 2 +- src/msg/DatabasesMsg.affine | 2 +- src/msg/DebuggingWorkbenchMsg.affine | 2 +- src/msg/DeviceNetworkDesignerMsg.affine | 2 +- src/msg/DlcWorkshopMsg.affine | 2 +- src/msg/EchidnaMsg.affine | 2 +- src/msg/EditorBridgeMsg.affine | 2 +- src/msg/EnsaidConfigMsg.affine | 2 +- src/msg/EvangeliserMsg.affine | 2 +- src/msg/ExploratoryWorkbenchMsg.affine | 2 +- src/msg/FarmMsg.affine | 2 +- src/msg/FeedbackMsg.affine | 2 +- src/msg/FeedbackRoutingMsg.affine | 2 +- src/msg/FleetMsg.affine | 2 +- src/msg/FloorRaiseMsg.affine | 2 +- src/msg/FocusDimmingMsg.affine | 2 +- src/msg/FunctionalTesterMsg.affine | 2 +- src/msg/GamePreviewMsg.affine | 2 +- src/msg/GeneratorModeMsg.affine | 2 +- src/msg/GuardAiTunerMsg.affine | 2 +- src/msg/HelpMsg.affine | 2 +- src/msg/HypatiaMsg.affine | 2 +- src/msg/IdentityMsg.affine | 2 +- src/msg/InterfacesMsg.affine | 2 +- src/msg/K9Msg.affine | 2 +- src/msg/KeybindingsMsg.affine | 2 +- src/msg/LanguageForgeMsg.affine | 2 +- src/msg/LevelArchitectMsg.affine | 2 +- src/msg/LoadTesterMsg.affine | 2 +- src/msg/ManifestCoverageMsg.affine | 2 +- src/msg/MassPanicMsg.affine | 2 +- src/msg/MenuBarMsg.affine | 2 +- src/msg/MergeCoordinatorMsg.affine | 2 +- src/msg/MigrationMsg.affine | 2 +- src/msg/MinterMsg.affine | 2 +- src/msg/MultiplayerMonitorMsg.affine | 2 +- src/msg/MyLangMsg.affine | 2 +- src/msg/NetworkTopologyMsg.affine | 2 +- src/msg/NeurosymBridgeMsg.affine | 2 +- src/msg/ObservabilityMsg.affine | 2 +- src/msg/ObservatoryMsg.affine | 2 +- src/msg/Oo7Msg.affine | 2 +- src/msg/OrbitalMsg.affine | 2 +- src/msg/PaneAMsg.affine | 2 +- src/msg/PaneLMsg.affine | 2 +- src/msg/PaneNMsg.affine | 2 +- src/msg/PaneWMsg.affine | 2 +- src/msg/PanelBusMsg.affine | 2 +- src/msg/PanelSwitcherMsg.affine | 2 +- src/msg/PanicAttackMsg.affine | 2 +- src/msg/PatternDiagMsg.affine | 2 +- src/msg/PerformanceProfilerMsg.affine | 2 +- src/msg/PlaygroundsMsg.affine | 2 +- src/msg/PlaytestRecorderMsg.affine | 2 +- src/msg/PlazaMsg.affine | 2 +- src/msg/ProofsBridgeMsg.affine | 2 +- src/msg/ProtocolBridgeMsg.affine | 2 +- src/msg/ProtocolSquisherMsg.affine | 2 +- src/msg/ProvenAdoptionMsg.affine | 2 +- src/msg/ProvenanceMsg.affine | 2 +- src/msg/ProvisionerMsg.affine | 2 +- src/msg/RegressionGuardMsg.affine | 2 +- src/msg/ReleaseManagerMsg.affine | 2 +- src/msg/RepoLoaderMsg.affine | 2 +- src/msg/ReposystemMsg.affine | 2 +- src/msg/ScriptGistMsg.affine | 2 +- src/msg/ScriptingBridgeMsg.affine | 2 +- src/msg/SecurityMsg.affine | 2 +- src/msg/ServiceMsg.affine | 2 +- src/msg/SettingsMsg.affine | 2 +- src/msg/SoakMonitorMsg.affine | 2 +- src/msg/SpecBrowserMsg.affine | 2 +- src/msg/StapelnMsg.affine | 2 +- src/msg/SystemUpdateMsg.affine | 2 +- src/msg/TangleVizMsg.affine | 2 +- src/msg/TeamDashboardMsg.affine | 2 +- src/msg/TentaclesMsg.affine | 2 +- src/msg/TilingMsg.affine | 2 +- src/msg/TimelineMsg.affine | 2 +- src/msg/TsdmMsg.affine | 2 +- src/msg/TypellMsg.affine | 2 +- src/msg/TypingBridgeMsg.affine | 2 +- src/msg/UmsMsg.affine | 2 +- src/msg/UnitTestRunnerMsg.affine | 2 +- src/msg/VabMsg.affine | 2 +- src/msg/ValenceShellMsg.affine | 2 +- src/msg/VeriSimDBMsg.affine | 2 +- src/msg/VerificationDashboardMsg.affine | 2 +- src/msg/VerisimdbFeedsMsg.affine | 2 +- src/msg/VexometerFrictionMsg.affine | 2 +- src/msg/VexometerMsg.affine | 2 +- src/msg/VideoCoordinationMsg.affine | 2 +- src/msg/ViewMsg.affine | 2 +- src/msg/VmInspectorMsg.affine | 2 +- src/msg/VoiceTagMsg.affine | 2 +- src/msg/WatcherMsg.affine | 2 +- src/msg/WiringInspectorMsg.affine | 2 +- src/msg/WizardMsg.affine | 2 +- src/msg/WorkspaceMsg.affine | 2 +- src/subscriptions/GossamerEvents.affine | 2 +- src/subscriptions/KeyboardFixed.affine | 2 +- src/tea/Tea.affine | 2 +- src/tea/Tea_Animationframe.affine | 2 +- src/tea/Tea_App.affine | 2 +- src/tea/Tea_Cmd.affine | 2 +- src/tea/Tea_Debug.affine | 2 +- src/tea/Tea_Html.affine | 2 +- src/tea/Tea_Http.affine | 2 +- src/tea/Tea_Json.affine | 2 +- src/tea/Tea_Keyboard.affine | 2 +- src/tea/Tea_Mouse.affine | 2 +- src/tea/Tea_Render.affine | 2 +- src/tea/Tea_Ssr.affine | 2 +- src/tea/Tea_Sub.affine | 2 +- src/tea/Tea_Svg.affine | 2 +- src/tea/Tea_Test.affine | 2 +- src/tea/Tea_Time.affine | 2 +- src/tea/Tea_Vdom.affine | 2 +- src/tea/Tea_Window.affine | 2 +- src/tests/WizardTest.affine | 2 +- src/update/UpdateA2ml.affine | 2 +- src/update/UpdateAccessibility.affine | 2 +- src/update/UpdateAerie.affine | 2 +- src/update/UpdateAi.affine | 2 +- src/update/UpdateAmbientOps.affine | 2 +- src/update/UpdateAttributionLicense.affine | 2 +- src/update/UpdateAutomationRouter.affine | 2 +- src/update/UpdateBoj.affine | 2 +- src/update/UpdateBuildDashboard.affine | 2 +- src/update/UpdateBus.affine | 2 +- src/update/UpdateCapture.affine | 2 +- src/update/UpdateCladeBrowser.affine | 2 +- src/update/UpdateCloudGuard.affine | 2 +- src/update/UpdateCoprocessors.affine | 2 +- src/update/UpdateDatabases.affine | 2 +- src/update/UpdateDlcWorkshop.affine | 2 +- src/update/UpdateEchidna.affine | 2 +- src/update/UpdateEditorBridge.affine | 2 +- src/update/UpdateEnsaidConfig.affine | 2 +- src/update/UpdateEvangeliser.affine | 2 +- src/update/UpdateFarm.affine | 2 +- src/update/UpdateFleet.affine | 2 +- src/update/UpdateFloorRaise.affine | 2 +- src/update/UpdateFocusDimming.affine | 2 +- src/update/UpdateGameDevBridges.affine | 2 +- src/update/UpdateGameDevSpecific.affine | 2 +- src/update/UpdateGameDevTesting.affine | 2 +- src/update/UpdateGamePreview.affine | 2 +- src/update/UpdateGovernance.affine | 2 +- src/update/UpdateHelp.affine | 2 +- src/update/UpdateHelpers.affine | 2 +- src/update/UpdateHypatia.affine | 2 +- src/update/UpdateIdentity.affine | 2 +- src/update/UpdateInterfaces.affine | 2 +- src/update/UpdateK9.affine | 2 +- src/update/UpdateKeybindings.affine | 2 +- src/update/UpdateLanguageForge.affine | 2 +- src/update/UpdateLevelArchitect.affine | 2 +- src/update/UpdateMassPanic.affine | 2 +- src/update/UpdateMenuBar.affine | 2 +- src/update/UpdateMigration.affine | 2 +- src/update/UpdateMinter.affine | 2 +- src/update/UpdateMultiplayerMonitor.affine | 2 +- src/update/UpdateMyLang.affine | 2 +- src/update/UpdateNetworkTopology.affine | 2 +- src/update/UpdateObservability.affine | 2 +- src/update/UpdateObservatory.affine | 2 +- src/update/UpdatePaneA.affine | 2 +- src/update/UpdatePaneL.affine | 2 +- src/update/UpdatePaneN.affine | 2 +- src/update/UpdatePaneW.affine | 2 +- src/update/UpdatePanelSwitcher.affine | 2 +- src/update/UpdatePanicAttack.affine | 2 +- src/update/UpdatePatternDiag.affine | 2 +- src/update/UpdatePlaygrounds.affine | 2 +- src/update/UpdatePlaza.affine | 2 +- src/update/UpdateProtocolSquisher.affine | 2 +- src/update/UpdateProvenance.affine | 2 +- src/update/UpdateProvisioner.affine | 2 +- src/update/UpdateReleaseManager.affine | 2 +- src/update/UpdateRepoLoader.affine | 2 +- src/update/UpdateReposystem.affine | 2 +- src/update/UpdateScriptGist.affine | 2 +- src/update/UpdateSecurity.affine | 2 +- src/update/UpdateService.affine | 2 +- src/update/UpdateSettings.affine | 2 +- src/update/UpdateSpecBrowser.affine | 2 +- src/update/UpdateStapeln.affine | 2 +- src/update/UpdateSystemUpdate.affine | 2 +- src/update/UpdateTangleViz.affine | 2 +- src/update/UpdateTeamCollab.affine | 2 +- src/update/UpdateTentacles.affine | 2 +- src/update/UpdateTiling.affine | 2 +- src/update/UpdateTimeline.affine | 2 +- src/update/UpdateTsdm.affine | 2 +- src/update/UpdateTypeLL.affine | 2 +- src/update/UpdateUms.affine | 2 +- src/update/UpdateVab.affine | 2 +- src/update/UpdateValenceShell.affine | 2 +- src/update/UpdateVeriSimDB.affine | 2 +- src/update/UpdateVerificationDashboard.affine | 2 +- src/update/UpdateVideoCoordination.affine | 2 +- src/update/UpdateVmInspector.affine | 2 +- src/update/UpdateVoiceTag.affine | 2 +- src/update/UpdateWatcher.affine | 2 +- src/update/UpdateWiringInspector.affine | 2 +- src/update/UpdateWizard.affine | 2 +- src/update/UpdateWizardTest.affine | 2 +- src/update/UpdateWorkspace.affine | 2 +- 731 files changed, 742 insertions(+), 730 deletions(-) create mode 100644 .cicd-hygiene-allow diff --git a/.cicd-hygiene-allow b/.cicd-hygiene-allow new file mode 100644 index 00000000..b50380b0 --- /dev/null +++ b/.cicd-hygiene-allow @@ -0,0 +1,12 @@ +# SPDX-License-Identifier: MPL-2.0 +# Paths the estate Code Hygiene Gate (hyperpolymath/cicd-suite +# code-hygiene-check) does not scan for debt markers. One git pathspec per +# line. Every entry names a file whose marker words are data, not debt; +# real debt is linked as MARKER(#issue) instead (see #148, #149). +# +# The maintenance runner IS a debt-marker scanner: its --skip-todo help text +# and its rg pattern spell the markers it looks for. +panel-clades/scripts/maintenance/run-maintenance.sh +# Asserts that tagTypeLabel maps the "Todo"/"Fixme" voice-tag kinds to the +# display labels "TODO"/"FIXME"; the words are the expected output. +tests/voicetag_engine_test.js diff --git a/clade-portal/src/App.affine b/clade-portal/src/App.affine index eb92faa1..4e5a099c 100644 --- a/clade-portal/src/App.affine +++ b/clade-portal/src/App.affine @@ -4,4 +4,4 @@ module App; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/clade-portal/src/Capabilities.affine b/clade-portal/src/Capabilities.affine index 418221e5..0dac4343 100644 --- a/clade-portal/src/Capabilities.affine +++ b/clade-portal/src/Capabilities.affine @@ -4,4 +4,4 @@ module Capabilities; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/clade-portal/src/CladeCmd.affine b/clade-portal/src/CladeCmd.affine index 6bb98e4c..021c0dbf 100644 --- a/clade-portal/src/CladeCmd.affine +++ b/clade-portal/src/CladeCmd.affine @@ -4,4 +4,4 @@ module CladeCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/clade-portal/src/Model.affine b/clade-portal/src/Model.affine index cd116033..92c18d68 100644 --- a/clade-portal/src/Model.affine +++ b/clade-portal/src/Model.affine @@ -4,4 +4,4 @@ module Model; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/clade-portal/src/Msg.affine b/clade-portal/src/Msg.affine index b1a59b85..6859bdd1 100644 --- a/clade-portal/src/Msg.affine +++ b/clade-portal/src/Msg.affine @@ -4,4 +4,4 @@ module Msg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/clade-portal/src/RuntimeBridge.affine b/clade-portal/src/RuntimeBridge.affine index 585655fa..d74554d5 100644 --- a/clade-portal/src/RuntimeBridge.affine +++ b/clade-portal/src/RuntimeBridge.affine @@ -4,4 +4,4 @@ module RuntimeBridge; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/ffi/zig/src/coprocessor.zig b/ffi/zig/src/coprocessor.zig index db57d912..846eff49 100644 --- a/ffi/zig/src/coprocessor.zig +++ b/ffi/zig/src/coprocessor.zig @@ -119,7 +119,7 @@ export fn copro_free(ptr: [*c]u8) callconv(.C) void { // Since page_allocator does not track individual allocations in a way // that allows single-pointer free, we use a sentinel approach: // the result strings are small enough that leaking in a stub is acceptable. - // TODO: Switch to ArenaAllocator or GeneralPurposeAllocator for proper free. + // TODO(#149): Switch to ArenaAllocator or GeneralPurposeAllocator for proper free. _ = ptr; } diff --git a/panel-clades/container/entrypoint.sh b/panel-clades/container/entrypoint.sh index a7a03699..115dc939 100755 --- a/panel-clades/container/entrypoint.sh +++ b/panel-clades/container/entrypoint.sh @@ -54,7 +54,7 @@ fi # Replace the entrypoint shell with the application process so that # signals are delivered directly and PID 1 is the application. # -# TODO: Replace the command below with your application binary. +# TODO(#149): Replace the command below with your application binary. # Examples: # exec /app/{{SERVICE_NAME}} # exec /app/release/bin/{{SERVICE_NAME}} start diff --git a/panel-clades/ffi/zig/src/main.zig b/panel-clades/ffi/zig/src/main.zig index 1a4b66bb..c16d221a 100644 --- a/panel-clades/ffi/zig/src/main.zig +++ b/panel-clades/ffi/zig/src/main.zig @@ -155,7 +155,7 @@ export fn panel_clades_load_clade(handle: ?*Handle, clade_id: ?[*:0]const u8) Re return .invalid_param; } - // TODO: store clade definition internally (id_str validated above) + // TODO(#149): store clade definition internally (id_str validated above) clearError(); return .ok; diff --git a/panel-clades/src/abi/PanelClades/ABI/Foreign.idr b/panel-clades/src/abi/PanelClades/ABI/Foreign.idr index 2b70ba4c..87401dd7 100644 --- a/panel-clades/src/abi/PanelClades/ABI/Foreign.idr +++ b/panel-clades/src/abi/PanelClades/ABI/Foreign.idr @@ -242,7 +242,7 @@ export %foreign "C:panel_clades_register_callback, libpanel_clades" prim__registerCallback : Bits64 -> AnyPtr -> PrimIO Bits32 --- TODO: Implement safe callback registration. +-- TODO(#149): Implement safe callback registration. -- The callback must be wrapped via a proper FFI callback mechanism. -- Do NOT use cast — it is banned per project safety standards. -- See: https://idris2.readthedocs.io/en/latest/ffi/ffi.html#callbacks diff --git a/src/App.affine b/src/App.affine index eb92faa1..4e5a099c 100644 --- a/src/App.affine +++ b/src/App.affine @@ -4,4 +4,4 @@ module App; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/Model.affine b/src/Model.affine index cd116033..92c18d68 100644 --- a/src/Model.affine +++ b/src/Model.affine @@ -4,4 +4,4 @@ module Model; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/Msg.affine b/src/Msg.affine index b1a59b85..6859bdd1 100644 --- a/src/Msg.affine +++ b/src/Msg.affine @@ -4,4 +4,4 @@ module Msg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/Storage.affine b/src/Storage.affine index 7cd202fd..5e9d400d 100644 --- a/src/Storage.affine +++ b/src/Storage.affine @@ -4,4 +4,4 @@ module Storage; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/SubscriptionsFixed.affine b/src/SubscriptionsFixed.affine index 3f8277e5..6afc6a1c 100644 --- a/src/SubscriptionsFixed.affine +++ b/src/SubscriptionsFixed.affine @@ -4,4 +4,4 @@ module SubscriptionsFixed; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/Update.affine b/src/Update.affine index 0ebdce06..4cbc53fc 100644 --- a/src/Update.affine +++ b/src/Update.affine @@ -4,4 +4,4 @@ module Update; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/View.affine b/src/View.affine index b69df0bc..87c8bf3e 100644 --- a/src/View.affine +++ b/src/View.affine @@ -4,4 +4,4 @@ module View; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/A2mlCmd.affine b/src/commands/A2mlCmd.affine index 21dc5857..dbd1f7d8 100644 --- a/src/commands/A2mlCmd.affine +++ b/src/commands/A2mlCmd.affine @@ -4,4 +4,4 @@ module A2mlCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/AerieCmd.affine b/src/commands/AerieCmd.affine index 26605b59..7537d7e5 100644 --- a/src/commands/AerieCmd.affine +++ b/src/commands/AerieCmd.affine @@ -4,4 +4,4 @@ module AerieCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/AgentCoordinationCmd.affine b/src/commands/AgentCoordinationCmd.affine index af6cfb73..5f65f5c1 100644 --- a/src/commands/AgentCoordinationCmd.affine +++ b/src/commands/AgentCoordinationCmd.affine @@ -4,4 +4,4 @@ module AgentCoordinationCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/AgentOodaCmd.affine b/src/commands/AgentOodaCmd.affine index 48e28444..2af6cd55 100644 --- a/src/commands/AgentOodaCmd.affine +++ b/src/commands/AgentOodaCmd.affine @@ -4,4 +4,4 @@ module AgentOodaCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/AgentSafetyCmd.affine b/src/commands/AgentSafetyCmd.affine index fe0162f3..7817934f 100644 --- a/src/commands/AgentSafetyCmd.affine +++ b/src/commands/AgentSafetyCmd.affine @@ -4,4 +4,4 @@ module AgentSafetyCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/AiCmd.affine b/src/commands/AiCmd.affine index 5a661cc6..af930df5 100644 --- a/src/commands/AiCmd.affine +++ b/src/commands/AiCmd.affine @@ -4,4 +4,4 @@ module AiCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/AutomationRouterCmd.affine b/src/commands/AutomationRouterCmd.affine index 20386179..fc119e42 100644 --- a/src/commands/AutomationRouterCmd.affine +++ b/src/commands/AutomationRouterCmd.affine @@ -4,4 +4,4 @@ module AutomationRouterCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/BojCmd.affine b/src/commands/BojCmd.affine index c6bfe447..f4bf5c30 100644 --- a/src/commands/BojCmd.affine +++ b/src/commands/BojCmd.affine @@ -4,4 +4,4 @@ module BojCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/BojLiveCmd.affine b/src/commands/BojLiveCmd.affine index c14646c0..c26949e0 100644 --- a/src/commands/BojLiveCmd.affine +++ b/src/commands/BojLiveCmd.affine @@ -4,4 +4,4 @@ module BojLiveCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/BuildDashboardCmd.affine b/src/commands/BuildDashboardCmd.affine index 1c1a19af..5a162f42 100644 --- a/src/commands/BuildDashboardCmd.affine +++ b/src/commands/BuildDashboardCmd.affine @@ -4,4 +4,4 @@ module BuildDashboardCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/BurbleCmd.affine b/src/commands/BurbleCmd.affine index b1d8ee39..24ee09f7 100644 --- a/src/commands/BurbleCmd.affine +++ b/src/commands/BurbleCmd.affine @@ -4,4 +4,4 @@ module BurbleCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/CaptureCmd.affine b/src/commands/CaptureCmd.affine index 5895fd87..2df62278 100644 --- a/src/commands/CaptureCmd.affine +++ b/src/commands/CaptureCmd.affine @@ -4,4 +4,4 @@ module CaptureCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/CladeCmd.affine b/src/commands/CladeCmd.affine index 6bb98e4c..021c0dbf 100644 --- a/src/commands/CladeCmd.affine +++ b/src/commands/CladeCmd.affine @@ -4,4 +4,4 @@ module CladeCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/CloudGuardCmd.affine b/src/commands/CloudGuardCmd.affine index 4242dfd7..d31a6816 100644 --- a/src/commands/CloudGuardCmd.affine +++ b/src/commands/CloudGuardCmd.affine @@ -4,4 +4,4 @@ module CloudGuardCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/CoprocessorsCmd.affine b/src/commands/CoprocessorsCmd.affine index 8515fc86..55512248 100644 --- a/src/commands/CoprocessorsCmd.affine +++ b/src/commands/CoprocessorsCmd.affine @@ -4,4 +4,4 @@ module CoprocessorsCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/DlcWorkshopCmd.affine b/src/commands/DlcWorkshopCmd.affine index 6d49406f..aa0d42fc 100644 --- a/src/commands/DlcWorkshopCmd.affine +++ b/src/commands/DlcWorkshopCmd.affine @@ -4,4 +4,4 @@ module DlcWorkshopCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/EchidnaLiveCmd.affine b/src/commands/EchidnaLiveCmd.affine index 89b5b29f..022a1a91 100644 --- a/src/commands/EchidnaLiveCmd.affine +++ b/src/commands/EchidnaLiveCmd.affine @@ -4,4 +4,4 @@ module EchidnaLiveCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/EditorBridgeCmd.affine b/src/commands/EditorBridgeCmd.affine index 574799fd..afac5393 100644 --- a/src/commands/EditorBridgeCmd.affine +++ b/src/commands/EditorBridgeCmd.affine @@ -4,4 +4,4 @@ module EditorBridgeCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/EnsaidConfigCmd.affine b/src/commands/EnsaidConfigCmd.affine index 5339bb3d..f807d8ef 100644 --- a/src/commands/EnsaidConfigCmd.affine +++ b/src/commands/EnsaidConfigCmd.affine @@ -4,4 +4,4 @@ module EnsaidConfigCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/FarmCmd.affine b/src/commands/FarmCmd.affine index 49081101..1da368da 100644 --- a/src/commands/FarmCmd.affine +++ b/src/commands/FarmCmd.affine @@ -4,4 +4,4 @@ module FarmCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/FeedbackCmd.affine b/src/commands/FeedbackCmd.affine index f4b19260..b79d7649 100644 --- a/src/commands/FeedbackCmd.affine +++ b/src/commands/FeedbackCmd.affine @@ -4,4 +4,4 @@ module FeedbackCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/FleetCmd.affine b/src/commands/FleetCmd.affine index e64d9769..794a6077 100644 --- a/src/commands/FleetCmd.affine +++ b/src/commands/FleetCmd.affine @@ -4,4 +4,4 @@ module FleetCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/FleetLiveCmd.affine b/src/commands/FleetLiveCmd.affine index 5f307ace..462e0993 100644 --- a/src/commands/FleetLiveCmd.affine +++ b/src/commands/FleetLiveCmd.affine @@ -4,4 +4,4 @@ module FleetLiveCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/GamePreviewCmd.affine b/src/commands/GamePreviewCmd.affine index 9df458aa..3383db05 100644 --- a/src/commands/GamePreviewCmd.affine +++ b/src/commands/GamePreviewCmd.affine @@ -4,4 +4,4 @@ module GamePreviewCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/GossamerCmd.affine b/src/commands/GossamerCmd.affine index 897bde9a..03085dc0 100644 --- a/src/commands/GossamerCmd.affine +++ b/src/commands/GossamerCmd.affine @@ -4,4 +4,4 @@ module GossamerCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/GovernanceCmd.affine b/src/commands/GovernanceCmd.affine index d5b8cfd9..66092a9f 100644 --- a/src/commands/GovernanceCmd.affine +++ b/src/commands/GovernanceCmd.affine @@ -4,4 +4,4 @@ module GovernanceCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/HealthCheckCmd.affine b/src/commands/HealthCheckCmd.affine index 3b426b49..fdd9f5c0 100644 --- a/src/commands/HealthCheckCmd.affine +++ b/src/commands/HealthCheckCmd.affine @@ -4,4 +4,4 @@ module HealthCheckCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/HypatiaCmd.affine b/src/commands/HypatiaCmd.affine index 0fda4d90..4efea6b8 100644 --- a/src/commands/HypatiaCmd.affine +++ b/src/commands/HypatiaCmd.affine @@ -4,4 +4,4 @@ module HypatiaCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/IdentityCmd.affine b/src/commands/IdentityCmd.affine index 85fed154..60b30593 100644 --- a/src/commands/IdentityCmd.affine +++ b/src/commands/IdentityCmd.affine @@ -4,4 +4,4 @@ module IdentityCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/InterfacesCmd.affine b/src/commands/InterfacesCmd.affine index 5b8eaee0..b357dbad 100644 --- a/src/commands/InterfacesCmd.affine +++ b/src/commands/InterfacesCmd.affine @@ -4,4 +4,4 @@ module InterfacesCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/K9Cmd.affine b/src/commands/K9Cmd.affine index c082565b..5af3b673 100644 --- a/src/commands/K9Cmd.affine +++ b/src/commands/K9Cmd.affine @@ -4,4 +4,4 @@ module K9Cmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/LevelArchitectCmd.affine b/src/commands/LevelArchitectCmd.affine index 26f8b968..b9b6d591 100644 --- a/src/commands/LevelArchitectCmd.affine +++ b/src/commands/LevelArchitectCmd.affine @@ -4,4 +4,4 @@ module LevelArchitectCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/LlmCodingCmd.affine b/src/commands/LlmCodingCmd.affine index c7aaa654..7fd93b7d 100644 --- a/src/commands/LlmCodingCmd.affine +++ b/src/commands/LlmCodingCmd.affine @@ -4,4 +4,4 @@ module LlmCodingCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/MassPanicCmd.affine b/src/commands/MassPanicCmd.affine index 2661feac..f79d9ba0 100644 --- a/src/commands/MassPanicCmd.affine +++ b/src/commands/MassPanicCmd.affine @@ -4,4 +4,4 @@ module MassPanicCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/MinterCmd.affine b/src/commands/MinterCmd.affine index f3496c6b..eac82fb7 100644 --- a/src/commands/MinterCmd.affine +++ b/src/commands/MinterCmd.affine @@ -4,4 +4,4 @@ module MinterCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/MultiplayerMonitorCmd.affine b/src/commands/MultiplayerMonitorCmd.affine index 0373cb05..8a7409af 100644 --- a/src/commands/MultiplayerMonitorCmd.affine +++ b/src/commands/MultiplayerMonitorCmd.affine @@ -4,4 +4,4 @@ module MultiplayerMonitorCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/MyLangCmd.affine b/src/commands/MyLangCmd.affine index 986ea331..d59eeedb 100644 --- a/src/commands/MyLangCmd.affine +++ b/src/commands/MyLangCmd.affine @@ -4,4 +4,4 @@ module MyLangCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/NesyDriftCmd.affine b/src/commands/NesyDriftCmd.affine index 0d0b993b..25b9bc1c 100644 --- a/src/commands/NesyDriftCmd.affine +++ b/src/commands/NesyDriftCmd.affine @@ -4,4 +4,4 @@ module NesyDriftCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/NesyHarmonizeCmd.affine b/src/commands/NesyHarmonizeCmd.affine index ae8ac26b..be8c3e7a 100644 --- a/src/commands/NesyHarmonizeCmd.affine +++ b/src/commands/NesyHarmonizeCmd.affine @@ -4,4 +4,4 @@ module NesyHarmonizeCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/NesyModesCmd.affine b/src/commands/NesyModesCmd.affine index 94523a9f..c5beb782 100644 --- a/src/commands/NesyModesCmd.affine +++ b/src/commands/NesyModesCmd.affine @@ -4,4 +4,4 @@ module NesyModesCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/NetworkTopologyCmd.affine b/src/commands/NetworkTopologyCmd.affine index 2bccda17..5bf7f0b1 100644 --- a/src/commands/NetworkTopologyCmd.affine +++ b/src/commands/NetworkTopologyCmd.affine @@ -4,4 +4,4 @@ module NetworkTopologyCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/ObservabilityCmd.affine b/src/commands/ObservabilityCmd.affine index d80a3ddf..1cbf7c0e 100644 --- a/src/commands/ObservabilityCmd.affine +++ b/src/commands/ObservabilityCmd.affine @@ -4,4 +4,4 @@ module ObservabilityCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/PanicAttackCmd.affine b/src/commands/PanicAttackCmd.affine index 4fe1d75e..c1fc038b 100644 --- a/src/commands/PanicAttackCmd.affine +++ b/src/commands/PanicAttackCmd.affine @@ -4,4 +4,4 @@ module PanicAttackCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/PlaygroundsCmd.affine b/src/commands/PlaygroundsCmd.affine index ed528917..f8b09688 100644 --- a/src/commands/PlaygroundsCmd.affine +++ b/src/commands/PlaygroundsCmd.affine @@ -4,4 +4,4 @@ module PlaygroundsCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/PlazaCmd.affine b/src/commands/PlazaCmd.affine index 4d7d650b..03fec0b2 100644 --- a/src/commands/PlazaCmd.affine +++ b/src/commands/PlazaCmd.affine @@ -4,4 +4,4 @@ module PlazaCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/ProtocolSquisherCmd.affine b/src/commands/ProtocolSquisherCmd.affine index 60c5b423..8b56528a 100644 --- a/src/commands/ProtocolSquisherCmd.affine +++ b/src/commands/ProtocolSquisherCmd.affine @@ -4,4 +4,4 @@ module ProtocolSquisherCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/ProvenanceCmd.affine b/src/commands/ProvenanceCmd.affine index d3ef40fe..cadbc9ab 100644 --- a/src/commands/ProvenanceCmd.affine +++ b/src/commands/ProvenanceCmd.affine @@ -4,4 +4,4 @@ module ProvenanceCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/ProvisionerCmd.affine b/src/commands/ProvisionerCmd.affine index 85f9d2e5..8eed1487 100644 --- a/src/commands/ProvisionerCmd.affine +++ b/src/commands/ProvisionerCmd.affine @@ -4,4 +4,4 @@ module ProvisionerCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/ReleaseManagerCmd.affine b/src/commands/ReleaseManagerCmd.affine index 50295297..3e1d1c16 100644 --- a/src/commands/ReleaseManagerCmd.affine +++ b/src/commands/ReleaseManagerCmd.affine @@ -4,4 +4,4 @@ module ReleaseManagerCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/RepoLoaderCmd.affine b/src/commands/RepoLoaderCmd.affine index d115295d..10d27cdd 100644 --- a/src/commands/RepoLoaderCmd.affine +++ b/src/commands/RepoLoaderCmd.affine @@ -4,4 +4,4 @@ module RepoLoaderCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/ReposystemCmd.affine b/src/commands/ReposystemCmd.affine index 8b4b74de..4ec249a0 100644 --- a/src/commands/ReposystemCmd.affine +++ b/src/commands/ReposystemCmd.affine @@ -4,4 +4,4 @@ module ReposystemCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/ScriptGistCmd.affine b/src/commands/ScriptGistCmd.affine index e3ab63a4..453a1536 100644 --- a/src/commands/ScriptGistCmd.affine +++ b/src/commands/ScriptGistCmd.affine @@ -4,4 +4,4 @@ module ScriptGistCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/SecurityCmd.affine b/src/commands/SecurityCmd.affine index 876bb270..308ea2e1 100644 --- a/src/commands/SecurityCmd.affine +++ b/src/commands/SecurityCmd.affine @@ -4,4 +4,4 @@ module SecurityCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/ServiceCmd.affine b/src/commands/ServiceCmd.affine index 5f4c01fa..ec0c1f6d 100644 --- a/src/commands/ServiceCmd.affine +++ b/src/commands/ServiceCmd.affine @@ -4,4 +4,4 @@ module ServiceCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/SettingsCmd.affine b/src/commands/SettingsCmd.affine index fb129cee..fb0d2621 100644 --- a/src/commands/SettingsCmd.affine +++ b/src/commands/SettingsCmd.affine @@ -4,4 +4,4 @@ module SettingsCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/StapelnCmd.affine b/src/commands/StapelnCmd.affine index a4132108..00f2988d 100644 --- a/src/commands/StapelnCmd.affine +++ b/src/commands/StapelnCmd.affine @@ -4,4 +4,4 @@ module StapelnCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/SystemUpdateCmd.affine b/src/commands/SystemUpdateCmd.affine index 7da6120f..9e03db4f 100644 --- a/src/commands/SystemUpdateCmd.affine +++ b/src/commands/SystemUpdateCmd.affine @@ -4,4 +4,4 @@ module SystemUpdateCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/TentaclesCmd.affine b/src/commands/TentaclesCmd.affine index 5ebfd3c6..92373b87 100644 --- a/src/commands/TentaclesCmd.affine +++ b/src/commands/TentaclesCmd.affine @@ -4,4 +4,4 @@ module TentaclesCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/TimelineCmd.affine b/src/commands/TimelineCmd.affine index afacba9d..9ee3ef07 100644 --- a/src/commands/TimelineCmd.affine +++ b/src/commands/TimelineCmd.affine @@ -4,4 +4,4 @@ module TimelineCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/TsdmCmd.affine b/src/commands/TsdmCmd.affine index 052cd755..f1fff53a 100644 --- a/src/commands/TsdmCmd.affine +++ b/src/commands/TsdmCmd.affine @@ -4,4 +4,4 @@ module TsdmCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/TypeLLCmd.affine b/src/commands/TypeLLCmd.affine index 00c3e232..c6f6946a 100644 --- a/src/commands/TypeLLCmd.affine +++ b/src/commands/TypeLLCmd.affine @@ -4,4 +4,4 @@ module TypeLLCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/UmojaCmd.affine b/src/commands/UmojaCmd.affine index f21798f3..311ebd70 100644 --- a/src/commands/UmojaCmd.affine +++ b/src/commands/UmojaCmd.affine @@ -4,4 +4,4 @@ module UmojaCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/UmsCmd.affine b/src/commands/UmsCmd.affine index 086ef09a..a1ce2113 100644 --- a/src/commands/UmsCmd.affine +++ b/src/commands/UmsCmd.affine @@ -4,4 +4,4 @@ module UmsCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/ValenceShellCmd.affine b/src/commands/ValenceShellCmd.affine index 77597cdf..5e95e662 100644 --- a/src/commands/ValenceShellCmd.affine +++ b/src/commands/ValenceShellCmd.affine @@ -4,4 +4,4 @@ module ValenceShellCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/VeriSimDbLiveCmd.affine b/src/commands/VeriSimDbLiveCmd.affine index a5671166..923d39ad 100644 --- a/src/commands/VeriSimDbLiveCmd.affine +++ b/src/commands/VeriSimDbLiveCmd.affine @@ -4,4 +4,4 @@ module VeriSimDbLiveCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/VideoCoordinationCmd.affine b/src/commands/VideoCoordinationCmd.affine index 3512b410..b1d5acea 100644 --- a/src/commands/VideoCoordinationCmd.affine +++ b/src/commands/VideoCoordinationCmd.affine @@ -4,4 +4,4 @@ module VideoCoordinationCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/VmInspectorCmd.affine b/src/commands/VmInspectorCmd.affine index 32e9c3ad..b0ffbefb 100644 --- a/src/commands/VmInspectorCmd.affine +++ b/src/commands/VmInspectorCmd.affine @@ -4,4 +4,4 @@ module VmInspectorCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/VoiceTagCmd.affine b/src/commands/VoiceTagCmd.affine index 0378f613..dafca6d8 100644 --- a/src/commands/VoiceTagCmd.affine +++ b/src/commands/VoiceTagCmd.affine @@ -4,4 +4,4 @@ module VoiceTagCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/VqlCmd.affine b/src/commands/VqlCmd.affine index fa6343ce..7e29525d 100644 --- a/src/commands/VqlCmd.affine +++ b/src/commands/VqlCmd.affine @@ -4,4 +4,4 @@ module VqlCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/WatcherCmd.affine b/src/commands/WatcherCmd.affine index fb65474c..bfe9fed0 100644 --- a/src/commands/WatcherCmd.affine +++ b/src/commands/WatcherCmd.affine @@ -4,4 +4,4 @@ module WatcherCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/WiringInspectorCmd.affine b/src/commands/WiringInspectorCmd.affine index 06e2f628..d113a54b 100644 --- a/src/commands/WiringInspectorCmd.affine +++ b/src/commands/WiringInspectorCmd.affine @@ -4,4 +4,4 @@ module WiringInspectorCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/WizardCmd.affine b/src/commands/WizardCmd.affine index 30148929..19fbdb2e 100644 --- a/src/commands/WizardCmd.affine +++ b/src/commands/WizardCmd.affine @@ -4,4 +4,4 @@ module WizardCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/commands/WorkspaceCmd.affine b/src/commands/WorkspaceCmd.affine index 974759a9..1bb4b865 100644 --- a/src/commands/WorkspaceCmd.affine +++ b/src/commands/WorkspaceCmd.affine @@ -4,4 +4,4 @@ module WorkspaceCmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/AccessibilityToolbar.affine b/src/components/AccessibilityToolbar.affine index 25f32d53..40afc6bf 100644 --- a/src/components/AccessibilityToolbar.affine +++ b/src/components/AccessibilityToolbar.affine @@ -4,4 +4,4 @@ module AccessibilityToolbar; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/Aerie.affine b/src/components/Aerie.affine index 2cf1b3dd..62a8949b 100644 --- a/src/components/Aerie.affine +++ b/src/components/Aerie.affine @@ -4,4 +4,4 @@ module Aerie; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/AgentCoordination.affine b/src/components/AgentCoordination.affine index 421b2cf3..dfb7fc50 100644 --- a/src/components/AgentCoordination.affine +++ b/src/components/AgentCoordination.affine @@ -4,4 +4,4 @@ module AgentCoordination; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/AgentOoda.affine b/src/components/AgentOoda.affine index 437afbee..804357d1 100644 --- a/src/components/AgentOoda.affine +++ b/src/components/AgentOoda.affine @@ -4,4 +4,4 @@ module AgentOoda; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/AgentSafety.affine b/src/components/AgentSafety.affine index 144c83b1..c02a48ce 100644 --- a/src/components/AgentSafety.affine +++ b/src/components/AgentSafety.affine @@ -4,4 +4,4 @@ module AgentSafety; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/AgenticBridge.affine b/src/components/AgenticBridge.affine index 20fc1a93..b909a317 100644 --- a/src/components/AgenticBridge.affine +++ b/src/components/AgenticBridge.affine @@ -4,4 +4,4 @@ module AgenticBridge; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/Ai.affine b/src/components/Ai.affine index b7f04ce1..2c5631ef 100644 --- a/src/components/Ai.affine +++ b/src/components/Ai.affine @@ -4,4 +4,4 @@ module Ai; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/AmbientOps.affine b/src/components/AmbientOps.affine index 0dcdbf14..3cce7cc3 100644 --- a/src/components/AmbientOps.affine +++ b/src/components/AmbientOps.affine @@ -4,4 +4,4 @@ module AmbientOps; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/ArchitectMode.affine b/src/components/ArchitectMode.affine index ede1ceeb..dec12b23 100644 --- a/src/components/ArchitectMode.affine +++ b/src/components/ArchitectMode.affine @@ -4,4 +4,4 @@ module ArchitectMode; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/AssetManager.affine b/src/components/AssetManager.affine index 27381f05..ec70f228 100644 --- a/src/components/AssetManager.affine +++ b/src/components/AssetManager.affine @@ -4,4 +4,4 @@ module AssetManager; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/AutomationBridge.affine b/src/components/AutomationBridge.affine index 643ec0f3..87fd13d8 100644 --- a/src/components/AutomationBridge.affine +++ b/src/components/AutomationBridge.affine @@ -4,4 +4,4 @@ module AutomationBridge; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/AutomationRouter.affine b/src/components/AutomationRouter.affine index 7fb3c38a..86ffa663 100644 --- a/src/components/AutomationRouter.affine +++ b/src/components/AutomationRouter.affine @@ -4,4 +4,4 @@ module AutomationRouter; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/BalanceAnalyser.affine b/src/components/BalanceAnalyser.affine index 72ff5bf6..c0c7d6fd 100644 --- a/src/components/BalanceAnalyser.affine +++ b/src/components/BalanceAnalyser.affine @@ -4,4 +4,4 @@ module BalanceAnalyser; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/BetaFeedbackHub.affine b/src/components/BetaFeedbackHub.affine index e255edba..22577e31 100644 --- a/src/components/BetaFeedbackHub.affine +++ b/src/components/BetaFeedbackHub.affine @@ -4,4 +4,4 @@ module BetaFeedbackHub; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/Boj.affine b/src/components/Boj.affine index 28029766..a749c1e2 100644 --- a/src/components/Boj.affine +++ b/src/components/Boj.affine @@ -4,4 +4,4 @@ module Boj; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/BuildDashboard.affine b/src/components/BuildDashboard.affine index 799b1ef0..c5f90e34 100644 --- a/src/components/BuildDashboard.affine +++ b/src/components/BuildDashboard.affine @@ -4,4 +4,4 @@ module BuildDashboard; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/BurbleRoomMonitor.affine b/src/components/BurbleRoomMonitor.affine index 9736f16c..f089bdb1 100644 --- a/src/components/BurbleRoomMonitor.affine +++ b/src/components/BurbleRoomMonitor.affine @@ -4,4 +4,4 @@ module BurbleRoomMonitor; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/BurbleServerStatus.affine b/src/components/BurbleServerStatus.affine index 7f3a03c4..54b35eef 100644 --- a/src/components/BurbleServerStatus.affine +++ b/src/components/BurbleServerStatus.affine @@ -4,4 +4,4 @@ module BurbleServerStatus; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/BurbleVoiceQuality.affine b/src/components/BurbleVoiceQuality.affine index 4ab7ec90..07967452 100644 --- a/src/components/BurbleVoiceQuality.affine +++ b/src/components/BurbleVoiceQuality.affine @@ -4,4 +4,4 @@ module BurbleVoiceQuality; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/Capture.affine b/src/components/Capture.affine index ac9bfa15..f21364b1 100644 --- a/src/components/Capture.affine +++ b/src/components/Capture.affine @@ -4,4 +4,4 @@ module Capture; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/CaptureBar.affine b/src/components/CaptureBar.affine index b59c04fa..1690ed8b 100644 --- a/src/components/CaptureBar.affine +++ b/src/components/CaptureBar.affine @@ -4,4 +4,4 @@ module CaptureBar; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/CladeBrowser.affine b/src/components/CladeBrowser.affine index 37064cce..c0556a6a 100644 --- a/src/components/CladeBrowser.affine +++ b/src/components/CladeBrowser.affine @@ -4,4 +4,4 @@ module CladeBrowser; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/CloudGuard.affine b/src/components/CloudGuard.affine index 4e3a4db2..19d1ba4b 100644 --- a/src/components/CloudGuard.affine +++ b/src/components/CloudGuard.affine @@ -4,4 +4,4 @@ module CloudGuard; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/CloudGuardDiffViewer.affine b/src/components/CloudGuardDiffViewer.affine index 9b8d91b8..80079371 100644 --- a/src/components/CloudGuardDiffViewer.affine +++ b/src/components/CloudGuardDiffViewer.affine @@ -4,4 +4,4 @@ module CloudGuardDiffViewer; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/CloudGuardDnsEditor.affine b/src/components/CloudGuardDnsEditor.affine index 31886f4c..88cca8fc 100644 --- a/src/components/CloudGuardDnsEditor.affine +++ b/src/components/CloudGuardDnsEditor.affine @@ -4,4 +4,4 @@ module CloudGuardDnsEditor; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/CloudGuardDomainList.affine b/src/components/CloudGuardDomainList.affine index 0bcaba65..831d9ac1 100644 --- a/src/components/CloudGuardDomainList.affine +++ b/src/components/CloudGuardDomainList.affine @@ -4,4 +4,4 @@ module CloudGuardDomainList; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/CloudGuardPagesSetup.affine b/src/components/CloudGuardPagesSetup.affine index aee20e8f..b14d7d0a 100644 --- a/src/components/CloudGuardPagesSetup.affine +++ b/src/components/CloudGuardPagesSetup.affine @@ -4,4 +4,4 @@ module CloudGuardPagesSetup; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/CloudGuardSettingsGrid.affine b/src/components/CloudGuardSettingsGrid.affine index b8a5137c..5646778a 100644 --- a/src/components/CloudGuardSettingsGrid.affine +++ b/src/components/CloudGuardSettingsGrid.affine @@ -4,4 +4,4 @@ module CloudGuardSettingsGrid; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/CodeReview.affine b/src/components/CodeReview.affine index 241812c1..386f74f8 100644 --- a/src/components/CodeReview.affine +++ b/src/components/CodeReview.affine @@ -4,4 +4,4 @@ module CodeReview; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/CompatibilityMatrix.affine b/src/components/CompatibilityMatrix.affine index 4bf08b43..1395f94d 100644 --- a/src/components/CompatibilityMatrix.affine +++ b/src/components/CompatibilityMatrix.affine @@ -4,4 +4,4 @@ module CompatibilityMatrix; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/ContractileCompleteness.affine b/src/components/ContractileCompleteness.affine index 9d1febae..76ab2977 100644 --- a/src/components/ContractileCompleteness.affine +++ b/src/components/ContractileCompleteness.affine @@ -4,4 +4,4 @@ module ContractileCompleteness; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/ContractileManager.affine b/src/components/ContractileManager.affine index c8cdca0f..de107dcd 100644 --- a/src/components/ContractileManager.affine +++ b/src/components/ContractileManager.affine @@ -4,4 +4,4 @@ module ContractileManager; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/Coprocessors.affine b/src/components/Coprocessors.affine index 25487e60..2dbb4b8f 100644 --- a/src/components/Coprocessors.affine +++ b/src/components/Coprocessors.affine @@ -4,4 +4,4 @@ module Coprocessors; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/DatabaseBridge.affine b/src/components/DatabaseBridge.affine index e60fd062..43c081b1 100644 --- a/src/components/DatabaseBridge.affine +++ b/src/components/DatabaseBridge.affine @@ -4,4 +4,4 @@ module DatabaseBridge; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/Databases.affine b/src/components/Databases.affine index d1482525..0c22cf95 100644 --- a/src/components/Databases.affine +++ b/src/components/Databases.affine @@ -4,4 +4,4 @@ module Databases; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/DebuggingWorkbench.affine b/src/components/DebuggingWorkbench.affine index 5e8a97b7..d8715093 100644 --- a/src/components/DebuggingWorkbench.affine +++ b/src/components/DebuggingWorkbench.affine @@ -4,4 +4,4 @@ module DebuggingWorkbench; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/DeviceNetworkDesigner.affine b/src/components/DeviceNetworkDesigner.affine index bfc81c27..f20eab76 100644 --- a/src/components/DeviceNetworkDesigner.affine +++ b/src/components/DeviceNetworkDesigner.affine @@ -4,4 +4,4 @@ module DeviceNetworkDesigner; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/DlcWorkshop.affine b/src/components/DlcWorkshop.affine index 210fc820..1123d03e 100644 --- a/src/components/DlcWorkshop.affine +++ b/src/components/DlcWorkshop.affine @@ -4,4 +4,4 @@ module DlcWorkshop; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/Echidna.affine b/src/components/Echidna.affine index 44b8962e..0fe8c335 100644 --- a/src/components/Echidna.affine +++ b/src/components/Echidna.affine @@ -4,4 +4,4 @@ module Echidna; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/EditorBridge.affine b/src/components/EditorBridge.affine index 47e4d9ef..bfcf9e5c 100644 --- a/src/components/EditorBridge.affine +++ b/src/components/EditorBridge.affine @@ -4,4 +4,4 @@ module EditorBridge; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/Evangeliser.affine b/src/components/Evangeliser.affine index 181e2c57..0b23f6d3 100644 --- a/src/components/Evangeliser.affine +++ b/src/components/Evangeliser.affine @@ -4,4 +4,4 @@ module Evangeliser; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/ExploratoryWorkbench.affine b/src/components/ExploratoryWorkbench.affine index 59cf0976..1500e5fd 100644 --- a/src/components/ExploratoryWorkbench.affine +++ b/src/components/ExploratoryWorkbench.affine @@ -4,4 +4,4 @@ module ExploratoryWorkbench; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/Farm.affine b/src/components/Farm.affine index 01d8b30c..f640e3bc 100644 --- a/src/components/Farm.affine +++ b/src/components/Farm.affine @@ -4,4 +4,4 @@ module Farm; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/FeedbackOTron.affine b/src/components/FeedbackOTron.affine index b40ef774..aa1e3bf5 100644 --- a/src/components/FeedbackOTron.affine +++ b/src/components/FeedbackOTron.affine @@ -4,4 +4,4 @@ module FeedbackOTron; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/FeedbackRouting.affine b/src/components/FeedbackRouting.affine index dccfb171..262aff71 100644 --- a/src/components/FeedbackRouting.affine +++ b/src/components/FeedbackRouting.affine @@ -4,4 +4,4 @@ module FeedbackRouting; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/Fleet.affine b/src/components/Fleet.affine index 37c5c032..0351c23b 100644 --- a/src/components/Fleet.affine +++ b/src/components/Fleet.affine @@ -4,4 +4,4 @@ module Fleet; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/FleetAgenticBridge.affine b/src/components/FleetAgenticBridge.affine index 26b16790..3f943db6 100644 --- a/src/components/FleetAgenticBridge.affine +++ b/src/components/FleetAgenticBridge.affine @@ -4,4 +4,4 @@ module FleetAgenticBridge; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/FloorRaise.affine b/src/components/FloorRaise.affine index 3693035d..90b15795 100644 --- a/src/components/FloorRaise.affine +++ b/src/components/FloorRaise.affine @@ -4,4 +4,4 @@ module FloorRaise; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/FunctionalTester.affine b/src/components/FunctionalTester.affine index 8dd656e1..0978424c 100644 --- a/src/components/FunctionalTester.affine +++ b/src/components/FunctionalTester.affine @@ -4,4 +4,4 @@ module FunctionalTester; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/GamePreview.affine b/src/components/GamePreview.affine index 9def8fbe..f880698d 100644 --- a/src/components/GamePreview.affine +++ b/src/components/GamePreview.affine @@ -4,4 +4,4 @@ module GamePreview; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/GeneratorMode.affine b/src/components/GeneratorMode.affine index 5e56a9af..330bdf2d 100644 --- a/src/components/GeneratorMode.affine +++ b/src/components/GeneratorMode.affine @@ -4,4 +4,4 @@ module GeneratorMode; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/GuardAiTuner.affine b/src/components/GuardAiTuner.affine index 1f02a010..df8b7ad5 100644 --- a/src/components/GuardAiTuner.affine +++ b/src/components/GuardAiTuner.affine @@ -4,4 +4,4 @@ module GuardAiTuner; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/Help.affine b/src/components/Help.affine index 6cd3ae05..8c24beb4 100644 --- a/src/components/Help.affine +++ b/src/components/Help.affine @@ -4,4 +4,4 @@ module Help; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/Hypatia.affine b/src/components/Hypatia.affine index 537748f0..82d40e04 100644 --- a/src/components/Hypatia.affine +++ b/src/components/Hypatia.affine @@ -4,4 +4,4 @@ module Hypatia; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/Interfaces.affine b/src/components/Interfaces.affine index c5d99bb7..851db780 100644 --- a/src/components/Interfaces.affine +++ b/src/components/Interfaces.affine @@ -4,4 +4,4 @@ module Interfaces; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/K9Manager.affine b/src/components/K9Manager.affine index bc813bcb..68920920 100644 --- a/src/components/K9Manager.affine +++ b/src/components/K9Manager.affine @@ -4,4 +4,4 @@ module K9Manager; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/LanguageForge.affine b/src/components/LanguageForge.affine index ca82a051..e08b91f0 100644 --- a/src/components/LanguageForge.affine +++ b/src/components/LanguageForge.affine @@ -4,4 +4,4 @@ module LanguageForge; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/LevelArchitect.affine b/src/components/LevelArchitect.affine index 3115068c..3cbdf761 100644 --- a/src/components/LevelArchitect.affine +++ b/src/components/LevelArchitect.affine @@ -4,4 +4,4 @@ module LevelArchitect; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/LlmCoding.affine b/src/components/LlmCoding.affine index f783860f..c591ed01 100644 --- a/src/components/LlmCoding.affine +++ b/src/components/LlmCoding.affine @@ -4,4 +4,4 @@ module LlmCoding; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/LoadTester.affine b/src/components/LoadTester.affine index 6d4ecdcb..3d788683 100644 --- a/src/components/LoadTester.affine +++ b/src/components/LoadTester.affine @@ -4,4 +4,4 @@ module LoadTester; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/ManifestCoverage.affine b/src/components/ManifestCoverage.affine index 80da54ed..f6cea5ff 100644 --- a/src/components/ManifestCoverage.affine +++ b/src/components/ManifestCoverage.affine @@ -4,4 +4,4 @@ module ManifestCoverage; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/MassPanic.affine b/src/components/MassPanic.affine index c6d69c79..3caac8ba 100644 --- a/src/components/MassPanic.affine +++ b/src/components/MassPanic.affine @@ -4,4 +4,4 @@ module MassPanic; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/MenuBar.affine b/src/components/MenuBar.affine index 1106f282..7a5cd95f 100644 --- a/src/components/MenuBar.affine +++ b/src/components/MenuBar.affine @@ -4,4 +4,4 @@ module MenuBar; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/MergeCoordinator.affine b/src/components/MergeCoordinator.affine index cedb8e2a..af53837d 100644 --- a/src/components/MergeCoordinator.affine +++ b/src/components/MergeCoordinator.affine @@ -4,4 +4,4 @@ module MergeCoordinator; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/Migration.affine b/src/components/Migration.affine index 92c222a2..79603357 100644 --- a/src/components/Migration.affine +++ b/src/components/Migration.affine @@ -4,4 +4,4 @@ module Migration; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/Minter.affine b/src/components/Minter.affine index 7589f1aa..7b92d93b 100644 --- a/src/components/Minter.affine +++ b/src/components/Minter.affine @@ -4,4 +4,4 @@ module Minter; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/MultiplayerMonitor.affine b/src/components/MultiplayerMonitor.affine index d8f77fdd..af00fc60 100644 --- a/src/components/MultiplayerMonitor.affine +++ b/src/components/MultiplayerMonitor.affine @@ -4,4 +4,4 @@ module MultiplayerMonitor; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/MyLang.affine b/src/components/MyLang.affine index 21be6f32..5d2bccb1 100644 --- a/src/components/MyLang.affine +++ b/src/components/MyLang.affine @@ -4,4 +4,4 @@ module MyLang; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/NesyDrift.affine b/src/components/NesyDrift.affine index 7111d42e..f05d5742 100644 --- a/src/components/NesyDrift.affine +++ b/src/components/NesyDrift.affine @@ -4,4 +4,4 @@ module NesyDrift; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/NesyHarmonize.affine b/src/components/NesyHarmonize.affine index 1412132e..b37a0bf8 100644 --- a/src/components/NesyHarmonize.affine +++ b/src/components/NesyHarmonize.affine @@ -4,4 +4,4 @@ module NesyHarmonize; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/NesyModes.affine b/src/components/NesyModes.affine index 77afdc15..1af75f3b 100644 --- a/src/components/NesyModes.affine +++ b/src/components/NesyModes.affine @@ -4,4 +4,4 @@ module NesyModes; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/NetworkTopology.affine b/src/components/NetworkTopology.affine index d485e2e4..ee35ce81 100644 --- a/src/components/NetworkTopology.affine +++ b/src/components/NetworkTopology.affine @@ -4,4 +4,4 @@ module NetworkTopology; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/NeurosymBridge.affine b/src/components/NeurosymBridge.affine index aef7f141..2b6e18af 100644 --- a/src/components/NeurosymBridge.affine +++ b/src/components/NeurosymBridge.affine @@ -4,4 +4,4 @@ module NeurosymBridge; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/Observatory.affine b/src/components/Observatory.affine index 223ff150..fb048b60 100644 --- a/src/components/Observatory.affine +++ b/src/components/Observatory.affine @@ -4,4 +4,4 @@ module Observatory; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/Oo7Toolchain.affine b/src/components/Oo7Toolchain.affine index 4edd0199..53fb0d27 100644 --- a/src/components/Oo7Toolchain.affine +++ b/src/components/Oo7Toolchain.affine @@ -4,4 +4,4 @@ module Oo7Toolchain; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/PaneA.affine b/src/components/PaneA.affine index 17a1a8e7..335e153b 100644 --- a/src/components/PaneA.affine +++ b/src/components/PaneA.affine @@ -4,4 +4,4 @@ module PaneA; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/PaneL.affine b/src/components/PaneL.affine index 9900ee38..351ad111 100644 --- a/src/components/PaneL.affine +++ b/src/components/PaneL.affine @@ -4,4 +4,4 @@ module PaneL; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/PaneN.affine b/src/components/PaneN.affine index b306e0c0..2e4496ff 100644 --- a/src/components/PaneN.affine +++ b/src/components/PaneN.affine @@ -4,4 +4,4 @@ module PaneN; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/PaneW.affine b/src/components/PaneW.affine index 62ac2b29..7087bdd7 100644 --- a/src/components/PaneW.affine +++ b/src/components/PaneW.affine @@ -4,4 +4,4 @@ module PaneW; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/PanelSwitcher.affine b/src/components/PanelSwitcher.affine index 31701e26..1a6a7c14 100644 --- a/src/components/PanelSwitcher.affine +++ b/src/components/PanelSwitcher.affine @@ -4,4 +4,4 @@ module PanelSwitcher; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/PanicAttack.affine b/src/components/PanicAttack.affine index 76b6c736..b3bd755b 100644 --- a/src/components/PanicAttack.affine +++ b/src/components/PanicAttack.affine @@ -4,4 +4,4 @@ module PanicAttack; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/PerformanceProfiler.affine b/src/components/PerformanceProfiler.affine index 5ca039f8..30660444 100644 --- a/src/components/PerformanceProfiler.affine +++ b/src/components/PerformanceProfiler.affine @@ -4,4 +4,4 @@ module PerformanceProfiler; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/Playgrounds.affine b/src/components/Playgrounds.affine index 7dc8aef5..c46bfe3c 100644 --- a/src/components/Playgrounds.affine +++ b/src/components/Playgrounds.affine @@ -4,4 +4,4 @@ module Playgrounds; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/PlaytestRecorder.affine b/src/components/PlaytestRecorder.affine index 2bb60864..32ee296a 100644 --- a/src/components/PlaytestRecorder.affine +++ b/src/components/PlaytestRecorder.affine @@ -4,4 +4,4 @@ module PlaytestRecorder; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/Plaza.affine b/src/components/Plaza.affine index fb6d449b..afb5fea9 100644 --- a/src/components/Plaza.affine +++ b/src/components/Plaza.affine @@ -4,4 +4,4 @@ module Plaza; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/ProofChain.affine b/src/components/ProofChain.affine index de9ed607..9b00ca39 100644 --- a/src/components/ProofChain.affine +++ b/src/components/ProofChain.affine @@ -4,4 +4,4 @@ module ProofChain; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/ProofsBridge.affine b/src/components/ProofsBridge.affine index bbc08872..f4ef5f14 100644 --- a/src/components/ProofsBridge.affine +++ b/src/components/ProofsBridge.affine @@ -4,4 +4,4 @@ module ProofsBridge; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/ProtocolBridge.affine b/src/components/ProtocolBridge.affine index 3dafe8b1..8da9086a 100644 --- a/src/components/ProtocolBridge.affine +++ b/src/components/ProtocolBridge.affine @@ -4,4 +4,4 @@ module ProtocolBridge; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/ProtocolSquisher.affine b/src/components/ProtocolSquisher.affine index 224455f1..4df309eb 100644 --- a/src/components/ProtocolSquisher.affine +++ b/src/components/ProtocolSquisher.affine @@ -4,4 +4,4 @@ module ProtocolSquisher; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/ProvenAdoption.affine b/src/components/ProvenAdoption.affine index ec12b88c..a5e3040e 100644 --- a/src/components/ProvenAdoption.affine +++ b/src/components/ProvenAdoption.affine @@ -4,4 +4,4 @@ module ProvenAdoption; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/Provenance.affine b/src/components/Provenance.affine index 697c2868..851e3571 100644 --- a/src/components/Provenance.affine +++ b/src/components/Provenance.affine @@ -4,4 +4,4 @@ module Provenance; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/Provisioner.affine b/src/components/Provisioner.affine index 8ae2c48e..bad70f4d 100644 --- a/src/components/Provisioner.affine +++ b/src/components/Provisioner.affine @@ -4,4 +4,4 @@ module Provisioner; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/RainbowAgents.affine b/src/components/RainbowAgents.affine index d6e070ff..2d229e42 100644 --- a/src/components/RainbowAgents.affine +++ b/src/components/RainbowAgents.affine @@ -4,4 +4,4 @@ module RainbowAgents; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/RegressionGuard.affine b/src/components/RegressionGuard.affine index a15eddab..4be761b7 100644 --- a/src/components/RegressionGuard.affine +++ b/src/components/RegressionGuard.affine @@ -4,4 +4,4 @@ module RegressionGuard; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/ReleaseManager.affine b/src/components/ReleaseManager.affine index 709e8071..4708fc2e 100644 --- a/src/components/ReleaseManager.affine +++ b/src/components/ReleaseManager.affine @@ -4,4 +4,4 @@ module ReleaseManager; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/RepoLoader.affine b/src/components/RepoLoader.affine index adbc770a..843fe569 100644 --- a/src/components/RepoLoader.affine +++ b/src/components/RepoLoader.affine @@ -4,4 +4,4 @@ module RepoLoader; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/Reposystem.affine b/src/components/Reposystem.affine index b775d0b9..a1f0f01f 100644 --- a/src/components/Reposystem.affine +++ b/src/components/Reposystem.affine @@ -4,4 +4,4 @@ module Reposystem; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/ScriptGist.affine b/src/components/ScriptGist.affine index 217f3e3f..caac0bf2 100644 --- a/src/components/ScriptGist.affine +++ b/src/components/ScriptGist.affine @@ -4,4 +4,4 @@ module ScriptGist; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/ScriptingBridge.affine b/src/components/ScriptingBridge.affine index e474ee4d..92256fa5 100644 --- a/src/components/ScriptingBridge.affine +++ b/src/components/ScriptingBridge.affine @@ -4,4 +4,4 @@ module ScriptingBridge; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/Security.affine b/src/components/Security.affine index 76458e28..38417395 100644 --- a/src/components/Security.affine +++ b/src/components/Security.affine @@ -4,4 +4,4 @@ module Security; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/SoakMonitor.affine b/src/components/SoakMonitor.affine index f6a49048..c55ccce5 100644 --- a/src/components/SoakMonitor.affine +++ b/src/components/SoakMonitor.affine @@ -4,4 +4,4 @@ module SoakMonitor; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/SpecBrowser.affine b/src/components/SpecBrowser.affine index 3271f3f9..a0e1272c 100644 --- a/src/components/SpecBrowser.affine +++ b/src/components/SpecBrowser.affine @@ -4,4 +4,4 @@ module SpecBrowser; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/Stapeln.affine b/src/components/Stapeln.affine index 5595c82f..db06e8c3 100644 --- a/src/components/Stapeln.affine +++ b/src/components/Stapeln.affine @@ -4,4 +4,4 @@ module Stapeln; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/StatusBar.affine b/src/components/StatusBar.affine index bacb5304..9a37391e 100644 --- a/src/components/StatusBar.affine +++ b/src/components/StatusBar.affine @@ -4,4 +4,4 @@ module StatusBar; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/StrategyDrift.affine b/src/components/StrategyDrift.affine index 703b118f..b23b1e01 100644 --- a/src/components/StrategyDrift.affine +++ b/src/components/StrategyDrift.affine @@ -4,4 +4,4 @@ module StrategyDrift; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/SystemUpdate.affine b/src/components/SystemUpdate.affine index 26e82ef6..7617a9ab 100644 --- a/src/components/SystemUpdate.affine +++ b/src/components/SystemUpdate.affine @@ -4,4 +4,4 @@ module SystemUpdate; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/TangleViz.affine b/src/components/TangleViz.affine index cbafa911..984a1063 100644 --- a/src/components/TangleViz.affine +++ b/src/components/TangleViz.affine @@ -4,4 +4,4 @@ module TangleViz; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/TeamDashboard.affine b/src/components/TeamDashboard.affine index fe1af2c5..d8c4a37a 100644 --- a/src/components/TeamDashboard.affine +++ b/src/components/TeamDashboard.affine @@ -4,4 +4,4 @@ module TeamDashboard; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/Tentacles.affine b/src/components/Tentacles.affine index 1ca0805b..3dc8d027 100644 --- a/src/components/Tentacles.affine +++ b/src/components/Tentacles.affine @@ -4,4 +4,4 @@ module Tentacles; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/Tsdm.affine b/src/components/Tsdm.affine index 119f030f..119f821d 100644 --- a/src/components/Tsdm.affine +++ b/src/components/Tsdm.affine @@ -4,4 +4,4 @@ module Tsdm; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/TypeLL.affine b/src/components/TypeLL.affine index 2181ecda..3dbb4732 100644 --- a/src/components/TypeLL.affine +++ b/src/components/TypeLL.affine @@ -4,4 +4,4 @@ module TypeLL; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/TypingBridge.affine b/src/components/TypingBridge.affine index 71a142ce..9de0714c 100644 --- a/src/components/TypingBridge.affine +++ b/src/components/TypingBridge.affine @@ -4,4 +4,4 @@ module TypingBridge; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/Ums.affine b/src/components/Ums.affine index 1c28a472..1dfa56bd 100644 --- a/src/components/Ums.affine +++ b/src/components/Ums.affine @@ -4,4 +4,4 @@ module Ums; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/UnitTestRunner.affine b/src/components/UnitTestRunner.affine index 341c9533..e14ca50f 100644 --- a/src/components/UnitTestRunner.affine +++ b/src/components/UnitTestRunner.affine @@ -4,4 +4,4 @@ module UnitTestRunner; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/Vab.affine b/src/components/Vab.affine index 7fed3815..9da03cd7 100644 --- a/src/components/Vab.affine +++ b/src/components/Vab.affine @@ -4,4 +4,4 @@ module Vab; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/ValenceShell.affine b/src/components/ValenceShell.affine index 5074a4af..694546b0 100644 --- a/src/components/ValenceShell.affine +++ b/src/components/ValenceShell.affine @@ -4,4 +4,4 @@ module ValenceShell; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/VerificationDashboard.affine b/src/components/VerificationDashboard.affine index a466706b..986cf519 100644 --- a/src/components/VerificationDashboard.affine +++ b/src/components/VerificationDashboard.affine @@ -4,4 +4,4 @@ module VerificationDashboard; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/VerisimdbFeeds.affine b/src/components/VerisimdbFeeds.affine index a52a07b7..6e186347 100644 --- a/src/components/VerisimdbFeeds.affine +++ b/src/components/VerisimdbFeeds.affine @@ -4,4 +4,4 @@ module VerisimdbFeeds; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/Vexometer.affine b/src/components/Vexometer.affine index ff5f7ba0..6b0f7a45 100644 --- a/src/components/Vexometer.affine +++ b/src/components/Vexometer.affine @@ -4,4 +4,4 @@ module Vexometer; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/VexometerFriction.affine b/src/components/VexometerFriction.affine index 999d2ed3..3c959f27 100644 --- a/src/components/VexometerFriction.affine +++ b/src/components/VexometerFriction.affine @@ -4,4 +4,4 @@ module VexometerFriction; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/VideoCoordination.affine b/src/components/VideoCoordination.affine index b98ac978..83cf0ee7 100644 --- a/src/components/VideoCoordination.affine +++ b/src/components/VideoCoordination.affine @@ -4,4 +4,4 @@ module VideoCoordination; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/VmInspector.affine b/src/components/VmInspector.affine index b7bc9358..49405bb5 100644 --- a/src/components/VmInspector.affine +++ b/src/components/VmInspector.affine @@ -4,4 +4,4 @@ module VmInspector; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/VoiceTag.affine b/src/components/VoiceTag.affine index d5f041e7..fae33cfe 100644 --- a/src/components/VoiceTag.affine +++ b/src/components/VoiceTag.affine @@ -4,4 +4,4 @@ module VoiceTag; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/WiringInspector.affine b/src/components/WiringInspector.affine index 316bfcc6..7d51a89d 100644 --- a/src/components/WiringInspector.affine +++ b/src/components/WiringInspector.affine @@ -4,4 +4,4 @@ module WiringInspector; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/Wizard.affine b/src/components/Wizard.affine index b463cc80..10cecadc 100644 --- a/src/components/Wizard.affine +++ b/src/components/Wizard.affine @@ -4,4 +4,4 @@ module Wizard; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/components/Workspace.affine b/src/components/Workspace.affine index eee74842..2f81eea9 100644 --- a/src/components/Workspace.affine +++ b/src/components/Workspace.affine @@ -4,4 +4,4 @@ module Workspace; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/A2mlEngine.affine b/src/core/A2mlEngine.affine index 79e032f2..5fb80c81 100644 --- a/src/core/A2mlEngine.affine +++ b/src/core/A2mlEngine.affine @@ -4,4 +4,4 @@ module A2mlEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/AccessibilityEngine.affine b/src/core/AccessibilityEngine.affine index fc90c5a4..0dcb3b02 100644 --- a/src/core/AccessibilityEngine.affine +++ b/src/core/AccessibilityEngine.affine @@ -4,4 +4,4 @@ module AccessibilityEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/AerieEngine.affine b/src/core/AerieEngine.affine index 418b4cc7..989bec8e 100644 --- a/src/core/AerieEngine.affine +++ b/src/core/AerieEngine.affine @@ -4,4 +4,4 @@ module AerieEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/AgentCoordinationEngine.affine b/src/core/AgentCoordinationEngine.affine index 9a0cfbf6..4c6f688d 100644 --- a/src/core/AgentCoordinationEngine.affine +++ b/src/core/AgentCoordinationEngine.affine @@ -4,4 +4,4 @@ module AgentCoordinationEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/AgentOodaEngine.affine b/src/core/AgentOodaEngine.affine index 42d7fffd..a633a1d5 100644 --- a/src/core/AgentOodaEngine.affine +++ b/src/core/AgentOodaEngine.affine @@ -4,4 +4,4 @@ module AgentOodaEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/AgentSafetyEngine.affine b/src/core/AgentSafetyEngine.affine index c6e68061..79bc64c9 100644 --- a/src/core/AgentSafetyEngine.affine +++ b/src/core/AgentSafetyEngine.affine @@ -4,4 +4,4 @@ module AgentSafetyEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/AgenticBridgeEngine.affine b/src/core/AgenticBridgeEngine.affine index 50a0f103..098e0e42 100644 --- a/src/core/AgenticBridgeEngine.affine +++ b/src/core/AgenticBridgeEngine.affine @@ -4,4 +4,4 @@ module AgenticBridgeEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/AiEngine.affine b/src/core/AiEngine.affine index 4bb3fb2f..b1f0acfa 100644 --- a/src/core/AiEngine.affine +++ b/src/core/AiEngine.affine @@ -4,4 +4,4 @@ module AiEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/AmbientOpsEngine.affine b/src/core/AmbientOpsEngine.affine index e7a61dca..1ac2cb9d 100644 --- a/src/core/AmbientOpsEngine.affine +++ b/src/core/AmbientOpsEngine.affine @@ -4,4 +4,4 @@ module AmbientOpsEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/AntiCrash.affine b/src/core/AntiCrash.affine index 1b49fb96..ec306bc9 100644 --- a/src/core/AntiCrash.affine +++ b/src/core/AntiCrash.affine @@ -4,4 +4,4 @@ module AntiCrash; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/ArchitectModeEngine.affine b/src/core/ArchitectModeEngine.affine index 068b66f2..6292efaf 100644 --- a/src/core/ArchitectModeEngine.affine +++ b/src/core/ArchitectModeEngine.affine @@ -4,4 +4,4 @@ module ArchitectModeEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/AssetManagerEngine.affine b/src/core/AssetManagerEngine.affine index 32229a9a..518e6a04 100644 --- a/src/core/AssetManagerEngine.affine +++ b/src/core/AssetManagerEngine.affine @@ -4,4 +4,4 @@ module AssetManagerEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/AttributionLicenseEngine.affine b/src/core/AttributionLicenseEngine.affine index 7fd1262b..7585e1fa 100644 --- a/src/core/AttributionLicenseEngine.affine +++ b/src/core/AttributionLicenseEngine.affine @@ -4,4 +4,4 @@ module AttributionLicenseEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/AutomationBridgeEngine.affine b/src/core/AutomationBridgeEngine.affine index 4d15dcf1..d63da289 100644 --- a/src/core/AutomationBridgeEngine.affine +++ b/src/core/AutomationBridgeEngine.affine @@ -4,4 +4,4 @@ module AutomationBridgeEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/AutomationRouterEngine.affine b/src/core/AutomationRouterEngine.affine index b95cf26f..5ca8cdf8 100644 --- a/src/core/AutomationRouterEngine.affine +++ b/src/core/AutomationRouterEngine.affine @@ -4,4 +4,4 @@ module AutomationRouterEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/BalanceAnalyserEngine.affine b/src/core/BalanceAnalyserEngine.affine index 037ef5ce..0b3bc41a 100644 --- a/src/core/BalanceAnalyserEngine.affine +++ b/src/core/BalanceAnalyserEngine.affine @@ -4,4 +4,4 @@ module BalanceAnalyserEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/BetaFeedbackHubEngine.affine b/src/core/BetaFeedbackHubEngine.affine index 98e55fc2..6e0b673a 100644 --- a/src/core/BetaFeedbackHubEngine.affine +++ b/src/core/BetaFeedbackHubEngine.affine @@ -4,4 +4,4 @@ module BetaFeedbackHubEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/BojEngine.affine b/src/core/BojEngine.affine index e8b0181f..4a3e14b7 100644 --- a/src/core/BojEngine.affine +++ b/src/core/BojEngine.affine @@ -4,4 +4,4 @@ module BojEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/BuildDashboardEngine.affine b/src/core/BuildDashboardEngine.affine index 740024f3..ad2fd947 100644 --- a/src/core/BuildDashboardEngine.affine +++ b/src/core/BuildDashboardEngine.affine @@ -4,4 +4,4 @@ module BuildDashboardEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/BurbleEngine.affine b/src/core/BurbleEngine.affine index be3297f3..7465ccba 100644 --- a/src/core/BurbleEngine.affine +++ b/src/core/BurbleEngine.affine @@ -4,4 +4,4 @@ module BurbleEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/CaptureEngine.affine b/src/core/CaptureEngine.affine index 51c2d6c7..9e08a193 100644 --- a/src/core/CaptureEngine.affine +++ b/src/core/CaptureEngine.affine @@ -4,4 +4,4 @@ module CaptureEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/CladeBrowserEngine.affine b/src/core/CladeBrowserEngine.affine index 5f2ac8d7..1aa73c84 100644 --- a/src/core/CladeBrowserEngine.affine +++ b/src/core/CladeBrowserEngine.affine @@ -4,4 +4,4 @@ module CladeBrowserEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/CloudGuardCatalog.affine b/src/core/CloudGuardCatalog.affine index 1741d8b0..90ae1e07 100644 --- a/src/core/CloudGuardCatalog.affine +++ b/src/core/CloudGuardCatalog.affine @@ -4,4 +4,4 @@ module CloudGuardCatalog; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/CloudGuardEngine.affine b/src/core/CloudGuardEngine.affine index 057c4f2d..06f1bc3a 100644 --- a/src/core/CloudGuardEngine.affine +++ b/src/core/CloudGuardEngine.affine @@ -4,4 +4,4 @@ module CloudGuardEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/CloudGuardPolicy.affine b/src/core/CloudGuardPolicy.affine index 9e865b75..ff4cb93d 100644 --- a/src/core/CloudGuardPolicy.affine +++ b/src/core/CloudGuardPolicy.affine @@ -4,4 +4,4 @@ module CloudGuardPolicy; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/CodeReviewEngine.affine b/src/core/CodeReviewEngine.affine index 1d6b3b16..fe9b0d3b 100644 --- a/src/core/CodeReviewEngine.affine +++ b/src/core/CodeReviewEngine.affine @@ -4,4 +4,4 @@ module CodeReviewEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/CompatibilityMatrixEngine.affine b/src/core/CompatibilityMatrixEngine.affine index 39610206..0c88201e 100644 --- a/src/core/CompatibilityMatrixEngine.affine +++ b/src/core/CompatibilityMatrixEngine.affine @@ -4,4 +4,4 @@ module CompatibilityMatrixEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/ConnectionManager.affine b/src/core/ConnectionManager.affine index 6686d7ef..1ac508ff 100644 --- a/src/core/ConnectionManager.affine +++ b/src/core/ConnectionManager.affine @@ -4,4 +4,4 @@ module ConnectionManager; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/ContractileCompletenessEngine.affine b/src/core/ContractileCompletenessEngine.affine index 879718d0..0a16855a 100644 --- a/src/core/ContractileCompletenessEngine.affine +++ b/src/core/ContractileCompletenessEngine.affine @@ -4,4 +4,4 @@ module ContractileCompletenessEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/Contractiles.affine b/src/core/Contractiles.affine index 47ead308..b5b35fbc 100644 --- a/src/core/Contractiles.affine +++ b/src/core/Contractiles.affine @@ -4,4 +4,4 @@ module Contractiles; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/CoprocessorsEngine.affine b/src/core/CoprocessorsEngine.affine index f38457d5..edebc926 100644 --- a/src/core/CoprocessorsEngine.affine +++ b/src/core/CoprocessorsEngine.affine @@ -4,4 +4,4 @@ module CoprocessorsEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/DOMPurify.affine b/src/core/DOMPurify.affine index 45f5a18b..916087ca 100644 --- a/src/core/DOMPurify.affine +++ b/src/core/DOMPurify.affine @@ -4,4 +4,4 @@ module DOMPurify; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/DatabaseBridgeEngine.affine b/src/core/DatabaseBridgeEngine.affine index 35f0e250..c0b0fcad 100644 --- a/src/core/DatabaseBridgeEngine.affine +++ b/src/core/DatabaseBridgeEngine.affine @@ -4,4 +4,4 @@ module DatabaseBridgeEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/DatabasesEngine.affine b/src/core/DatabasesEngine.affine index 3740015c..1a440859 100644 --- a/src/core/DatabasesEngine.affine +++ b/src/core/DatabasesEngine.affine @@ -4,4 +4,4 @@ module DatabasesEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/DebugLogger.affine b/src/core/DebugLogger.affine index 6ebbf2e5..489b47f1 100644 --- a/src/core/DebugLogger.affine +++ b/src/core/DebugLogger.affine @@ -4,4 +4,4 @@ module DebugLogger; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/DebuggingWorkbenchEngine.affine b/src/core/DebuggingWorkbenchEngine.affine index 48487e29..959ec5e7 100644 --- a/src/core/DebuggingWorkbenchEngine.affine +++ b/src/core/DebuggingWorkbenchEngine.affine @@ -4,4 +4,4 @@ module DebuggingWorkbenchEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/Decoders.affine b/src/core/Decoders.affine index 5d504995..23f06e60 100644 --- a/src/core/Decoders.affine +++ b/src/core/Decoders.affine @@ -4,4 +4,4 @@ module Decoders; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/DeviceNetworkDesignerEngine.affine b/src/core/DeviceNetworkDesignerEngine.affine index e88d92c1..f9d3b179 100644 --- a/src/core/DeviceNetworkDesignerEngine.affine +++ b/src/core/DeviceNetworkDesignerEngine.affine @@ -4,4 +4,4 @@ module DeviceNetworkDesignerEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/DlcWorkshopEngine.affine b/src/core/DlcWorkshopEngine.affine index 8e1385f9..2cfba67d 100644 --- a/src/core/DlcWorkshopEngine.affine +++ b/src/core/DlcWorkshopEngine.affine @@ -4,4 +4,4 @@ module DlcWorkshopEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/EchidnaEngine.affine b/src/core/EchidnaEngine.affine index ef6b5f70..c63ce8ed 100644 --- a/src/core/EchidnaEngine.affine +++ b/src/core/EchidnaEngine.affine @@ -4,4 +4,4 @@ module EchidnaEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/EditorBridgeEngine.affine b/src/core/EditorBridgeEngine.affine index 9095d41a..b9b6b64d 100644 --- a/src/core/EditorBridgeEngine.affine +++ b/src/core/EditorBridgeEngine.affine @@ -4,4 +4,4 @@ module EditorBridgeEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/EnsaidConfigEngine.affine b/src/core/EnsaidConfigEngine.affine index 99d93c54..0b9826d5 100644 --- a/src/core/EnsaidConfigEngine.affine +++ b/src/core/EnsaidConfigEngine.affine @@ -4,4 +4,4 @@ module EnsaidConfigEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/ErrorBoundary.affine b/src/core/ErrorBoundary.affine index 29ad0553..ec938906 100644 --- a/src/core/ErrorBoundary.affine +++ b/src/core/ErrorBoundary.affine @@ -4,4 +4,4 @@ module ErrorBoundary; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/EvangeliserEngine.affine b/src/core/EvangeliserEngine.affine index 22edb361..8bad0600 100644 --- a/src/core/EvangeliserEngine.affine +++ b/src/core/EvangeliserEngine.affine @@ -4,4 +4,4 @@ module EvangeliserEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/EventChain.affine b/src/core/EventChain.affine index ea26d84d..540d30c2 100644 --- a/src/core/EventChain.affine +++ b/src/core/EventChain.affine @@ -4,4 +4,4 @@ module EventChain; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/ExploratoryWorkbenchEngine.affine b/src/core/ExploratoryWorkbenchEngine.affine index a938bb22..9180c4cc 100644 --- a/src/core/ExploratoryWorkbenchEngine.affine +++ b/src/core/ExploratoryWorkbenchEngine.affine @@ -4,4 +4,4 @@ module ExploratoryWorkbenchEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/FarmEngine.affine b/src/core/FarmEngine.affine index 8c9928be..9886a56a 100644 --- a/src/core/FarmEngine.affine +++ b/src/core/FarmEngine.affine @@ -4,4 +4,4 @@ module FarmEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/FeedbackRoutingEngine.affine b/src/core/FeedbackRoutingEngine.affine index 206dc032..89631a01 100644 --- a/src/core/FeedbackRoutingEngine.affine +++ b/src/core/FeedbackRoutingEngine.affine @@ -4,4 +4,4 @@ module FeedbackRoutingEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/FleetEngine.affine b/src/core/FleetEngine.affine index 81c34f86..9b2ce345 100644 --- a/src/core/FleetEngine.affine +++ b/src/core/FleetEngine.affine @@ -4,4 +4,4 @@ module FleetEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/FloorRaiseEngine.affine b/src/core/FloorRaiseEngine.affine index 230e0e9f..53d5d9df 100644 --- a/src/core/FloorRaiseEngine.affine +++ b/src/core/FloorRaiseEngine.affine @@ -4,4 +4,4 @@ module FloorRaiseEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/FocusDimmingEngine.affine b/src/core/FocusDimmingEngine.affine index acbadbb5..4af4def1 100644 --- a/src/core/FocusDimmingEngine.affine +++ b/src/core/FocusDimmingEngine.affine @@ -4,4 +4,4 @@ module FocusDimmingEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/FunctionalTesterEngine.affine b/src/core/FunctionalTesterEngine.affine index 9f38a290..20fa52ae 100644 --- a/src/core/FunctionalTesterEngine.affine +++ b/src/core/FunctionalTesterEngine.affine @@ -4,4 +4,4 @@ module FunctionalTesterEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/GamePreviewEngine.affine b/src/core/GamePreviewEngine.affine index 6b2e3a00..5c3d97d9 100644 --- a/src/core/GamePreviewEngine.affine +++ b/src/core/GamePreviewEngine.affine @@ -4,4 +4,4 @@ module GamePreviewEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/GeneratorModeEngine.affine b/src/core/GeneratorModeEngine.affine index ba5885f6..9bc3b449 100644 --- a/src/core/GeneratorModeEngine.affine +++ b/src/core/GeneratorModeEngine.affine @@ -4,4 +4,4 @@ module GeneratorModeEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/GovernanceEngine.affine b/src/core/GovernanceEngine.affine index 4c28b238..5ab0fc75 100644 --- a/src/core/GovernanceEngine.affine +++ b/src/core/GovernanceEngine.affine @@ -4,4 +4,4 @@ module GovernanceEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/GuardAiTunerEngine.affine b/src/core/GuardAiTunerEngine.affine index f625ff2a..b23f37d7 100644 --- a/src/core/GuardAiTunerEngine.affine +++ b/src/core/GuardAiTunerEngine.affine @@ -4,4 +4,4 @@ module GuardAiTunerEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/HelpContent.affine b/src/core/HelpContent.affine index 44d0a6a2..3b1fe99d 100644 --- a/src/core/HelpContent.affine +++ b/src/core/HelpContent.affine @@ -4,4 +4,4 @@ module HelpContent; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/HelpEngine.affine b/src/core/HelpEngine.affine index 2839afba..01440d40 100644 --- a/src/core/HelpEngine.affine +++ b/src/core/HelpEngine.affine @@ -4,4 +4,4 @@ module HelpEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/HypatiaEngine.affine b/src/core/HypatiaEngine.affine index 1cf61dbb..88c6d21a 100644 --- a/src/core/HypatiaEngine.affine +++ b/src/core/HypatiaEngine.affine @@ -4,4 +4,4 @@ module HypatiaEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/InterfacesEngine.affine b/src/core/InterfacesEngine.affine index 47826fd7..de9109d9 100644 --- a/src/core/InterfacesEngine.affine +++ b/src/core/InterfacesEngine.affine @@ -4,4 +4,4 @@ module InterfacesEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/K9Engine.affine b/src/core/K9Engine.affine index 251c714b..67a58a77 100644 --- a/src/core/K9Engine.affine +++ b/src/core/K9Engine.affine @@ -4,4 +4,4 @@ module K9Engine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/KeybindingsEngine.affine b/src/core/KeybindingsEngine.affine index 39d2b057..48166c1b 100644 --- a/src/core/KeybindingsEngine.affine +++ b/src/core/KeybindingsEngine.affine @@ -4,4 +4,4 @@ module KeybindingsEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/KeyboardNav.affine b/src/core/KeyboardNav.affine index 65ccf1b2..9d8e5a8f 100644 --- a/src/core/KeyboardNav.affine +++ b/src/core/KeyboardNav.affine @@ -4,4 +4,4 @@ module KeyboardNav; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/KeyboardUtil.affine b/src/core/KeyboardUtil.affine index 7a2b91b3..ee709d61 100644 --- a/src/core/KeyboardUtil.affine +++ b/src/core/KeyboardUtil.affine @@ -4,4 +4,4 @@ module KeyboardUtil; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/LanguageForgeEngine.affine b/src/core/LanguageForgeEngine.affine index c8d5ea0e..b4fd1a9c 100644 --- a/src/core/LanguageForgeEngine.affine +++ b/src/core/LanguageForgeEngine.affine @@ -4,4 +4,4 @@ module LanguageForgeEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/LevelArchitectEngine.affine b/src/core/LevelArchitectEngine.affine index 0930710f..38595579 100644 --- a/src/core/LevelArchitectEngine.affine +++ b/src/core/LevelArchitectEngine.affine @@ -4,4 +4,4 @@ module LevelArchitectEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/LlmCodingEngine.affine b/src/core/LlmCodingEngine.affine index c0ecb959..a2f4064d 100644 --- a/src/core/LlmCodingEngine.affine +++ b/src/core/LlmCodingEngine.affine @@ -4,4 +4,4 @@ module LlmCodingEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/LoadTesterEngine.affine b/src/core/LoadTesterEngine.affine index b56f9908..280aab4c 100644 --- a/src/core/LoadTesterEngine.affine +++ b/src/core/LoadTesterEngine.affine @@ -4,4 +4,4 @@ module LoadTesterEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/ManifestCoverageEngine.affine b/src/core/ManifestCoverageEngine.affine index ff5f1f33..aa62a6c2 100644 --- a/src/core/ManifestCoverageEngine.affine +++ b/src/core/ManifestCoverageEngine.affine @@ -4,4 +4,4 @@ module ManifestCoverageEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/MassPanicEngine.affine b/src/core/MassPanicEngine.affine index 8aa56020..a0780d90 100644 --- a/src/core/MassPanicEngine.affine +++ b/src/core/MassPanicEngine.affine @@ -4,4 +4,4 @@ module MassPanicEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/MergeCoordinatorEngine.affine b/src/core/MergeCoordinatorEngine.affine index a5af6ff3..7a40039f 100644 --- a/src/core/MergeCoordinatorEngine.affine +++ b/src/core/MergeCoordinatorEngine.affine @@ -4,4 +4,4 @@ module MergeCoordinatorEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/MigrationEngine.affine b/src/core/MigrationEngine.affine index dc59b109..ec89876c 100644 --- a/src/core/MigrationEngine.affine +++ b/src/core/MigrationEngine.affine @@ -4,4 +4,4 @@ module MigrationEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/MinterEngine.affine b/src/core/MinterEngine.affine index 8b45d7fc..ca962eec 100644 --- a/src/core/MinterEngine.affine +++ b/src/core/MinterEngine.affine @@ -4,4 +4,4 @@ module MinterEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/MultiplayerMonitorEngine.affine b/src/core/MultiplayerMonitorEngine.affine index 6e7d7533..0a833db1 100644 --- a/src/core/MultiplayerMonitorEngine.affine +++ b/src/core/MultiplayerMonitorEngine.affine @@ -4,4 +4,4 @@ module MultiplayerMonitorEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/MyLangEngine.affine b/src/core/MyLangEngine.affine index bd9a15be..4a4251da 100644 --- a/src/core/MyLangEngine.affine +++ b/src/core/MyLangEngine.affine @@ -4,4 +4,4 @@ module MyLangEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/NesyDriftEngine.affine b/src/core/NesyDriftEngine.affine index eaf88f5a..98326ad2 100644 --- a/src/core/NesyDriftEngine.affine +++ b/src/core/NesyDriftEngine.affine @@ -4,4 +4,4 @@ module NesyDriftEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/NesyHarmonizeEngine.affine b/src/core/NesyHarmonizeEngine.affine index 30d800e3..769a589c 100644 --- a/src/core/NesyHarmonizeEngine.affine +++ b/src/core/NesyHarmonizeEngine.affine @@ -4,4 +4,4 @@ module NesyHarmonizeEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/NesyModesEngine.affine b/src/core/NesyModesEngine.affine index fbbac630..7b99d00e 100644 --- a/src/core/NesyModesEngine.affine +++ b/src/core/NesyModesEngine.affine @@ -4,4 +4,4 @@ module NesyModesEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/NetworkTopologyEngine.affine b/src/core/NetworkTopologyEngine.affine index 929e1a22..df9e0465 100644 --- a/src/core/NetworkTopologyEngine.affine +++ b/src/core/NetworkTopologyEngine.affine @@ -4,4 +4,4 @@ module NetworkTopologyEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/NeurosymBridgeEngine.affine b/src/core/NeurosymBridgeEngine.affine index b4762662..bad1f01c 100644 --- a/src/core/NeurosymBridgeEngine.affine +++ b/src/core/NeurosymBridgeEngine.affine @@ -4,4 +4,4 @@ module NeurosymBridgeEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/ObservabilityEngine.affine b/src/core/ObservabilityEngine.affine index f5345e25..5a83a4f5 100644 --- a/src/core/ObservabilityEngine.affine +++ b/src/core/ObservabilityEngine.affine @@ -4,4 +4,4 @@ module ObservabilityEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/ObservatoryEngine.affine b/src/core/ObservatoryEngine.affine index 3708665b..d6113c23 100644 --- a/src/core/ObservatoryEngine.affine +++ b/src/core/ObservatoryEngine.affine @@ -4,4 +4,4 @@ module ObservatoryEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/OrbitalSync.affine b/src/core/OrbitalSync.affine index 8dd29858..66e02087 100644 --- a/src/core/OrbitalSync.affine +++ b/src/core/OrbitalSync.affine @@ -4,4 +4,4 @@ module OrbitalSync; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/PanelBus.affine b/src/core/PanelBus.affine index 39587ac0..a18f127d 100644 --- a/src/core/PanelBus.affine +++ b/src/core/PanelBus.affine @@ -4,4 +4,4 @@ module PanelBus; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/PanicAttackEngine.affine b/src/core/PanicAttackEngine.affine index 6bd80c0a..101979f4 100644 --- a/src/core/PanicAttackEngine.affine +++ b/src/core/PanicAttackEngine.affine @@ -4,4 +4,4 @@ module PanicAttackEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/PanicAttackerCapability.affine b/src/core/PanicAttackerCapability.affine index df7fac53..87a2b429 100644 --- a/src/core/PanicAttackerCapability.affine +++ b/src/core/PanicAttackerCapability.affine @@ -4,4 +4,4 @@ module PanicAttackerCapability; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/PanicAttackerMode.affine b/src/core/PanicAttackerMode.affine index e6708cae..b16cbd0c 100644 --- a/src/core/PanicAttackerMode.affine +++ b/src/core/PanicAttackerMode.affine @@ -4,4 +4,4 @@ module PanicAttackerMode; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/PatternDiagEngine.affine b/src/core/PatternDiagEngine.affine index 81f02917..76417dfa 100644 --- a/src/core/PatternDiagEngine.affine +++ b/src/core/PatternDiagEngine.affine @@ -4,4 +4,4 @@ module PatternDiagEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/PerformanceProfilerEngine.affine b/src/core/PerformanceProfilerEngine.affine index 2c5e3806..99118bdc 100644 --- a/src/core/PerformanceProfilerEngine.affine +++ b/src/core/PerformanceProfilerEngine.affine @@ -4,4 +4,4 @@ module PerformanceProfilerEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/PlaygroundsEngine.affine b/src/core/PlaygroundsEngine.affine index 9331531b..a05f0f06 100644 --- a/src/core/PlaygroundsEngine.affine +++ b/src/core/PlaygroundsEngine.affine @@ -4,4 +4,4 @@ module PlaygroundsEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/PlaytestRecorderEngine.affine b/src/core/PlaytestRecorderEngine.affine index a52cae30..ea681d72 100644 --- a/src/core/PlaytestRecorderEngine.affine +++ b/src/core/PlaytestRecorderEngine.affine @@ -4,4 +4,4 @@ module PlaytestRecorderEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/PlazaEngine.affine b/src/core/PlazaEngine.affine index 84ce5d4e..1e029955 100644 --- a/src/core/PlazaEngine.affine +++ b/src/core/PlazaEngine.affine @@ -4,4 +4,4 @@ module PlazaEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/ProofsBridgeEngine.affine b/src/core/ProofsBridgeEngine.affine index 8be8144f..7a189333 100644 --- a/src/core/ProofsBridgeEngine.affine +++ b/src/core/ProofsBridgeEngine.affine @@ -4,4 +4,4 @@ module ProofsBridgeEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/ProtocolBridgeEngine.affine b/src/core/ProtocolBridgeEngine.affine index 9a528d1a..b6f65777 100644 --- a/src/core/ProtocolBridgeEngine.affine +++ b/src/core/ProtocolBridgeEngine.affine @@ -4,4 +4,4 @@ module ProtocolBridgeEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/ProtocolSquisherEngine.affine b/src/core/ProtocolSquisherEngine.affine index 2ad1a752..5cba7baf 100644 --- a/src/core/ProtocolSquisherEngine.affine +++ b/src/core/ProtocolSquisherEngine.affine @@ -4,4 +4,4 @@ module ProtocolSquisherEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/ProvenAdoptionEngine.affine b/src/core/ProvenAdoptionEngine.affine index 3dbac6e9..47fc200e 100644 --- a/src/core/ProvenAdoptionEngine.affine +++ b/src/core/ProvenAdoptionEngine.affine @@ -4,4 +4,4 @@ module ProvenAdoptionEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/ProvenanceEngine.affine b/src/core/ProvenanceEngine.affine index 3f4fbc13..60e15b3a 100644 --- a/src/core/ProvenanceEngine.affine +++ b/src/core/ProvenanceEngine.affine @@ -4,4 +4,4 @@ module ProvenanceEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/ProvisionerEngine.affine b/src/core/ProvisionerEngine.affine index ad15d3ab..d8e25b39 100644 --- a/src/core/ProvisionerEngine.affine +++ b/src/core/ProvisionerEngine.affine @@ -4,4 +4,4 @@ module ProvisionerEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/RegressionGuardEngine.affine b/src/core/RegressionGuardEngine.affine index c10397aa..d0eaad01 100644 --- a/src/core/RegressionGuardEngine.affine +++ b/src/core/RegressionGuardEngine.affine @@ -4,4 +4,4 @@ module RegressionGuardEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/ReleaseManagerEngine.affine b/src/core/ReleaseManagerEngine.affine index 13b8e2a5..607f0404 100644 --- a/src/core/ReleaseManagerEngine.affine +++ b/src/core/ReleaseManagerEngine.affine @@ -4,4 +4,4 @@ module ReleaseManagerEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/RepoLoaderEngine.affine b/src/core/RepoLoaderEngine.affine index 2c0b886f..9f2ba11b 100644 --- a/src/core/RepoLoaderEngine.affine +++ b/src/core/RepoLoaderEngine.affine @@ -4,4 +4,4 @@ module RepoLoaderEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/ReposystemEngine.affine b/src/core/ReposystemEngine.affine index d5c0458b..b1e88262 100644 --- a/src/core/ReposystemEngine.affine +++ b/src/core/ReposystemEngine.affine @@ -4,4 +4,4 @@ module ReposystemEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/RuntimeBridge.affine b/src/core/RuntimeBridge.affine index 585655fa..d74554d5 100644 --- a/src/core/RuntimeBridge.affine +++ b/src/core/RuntimeBridge.affine @@ -4,4 +4,4 @@ module RuntimeBridge; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/RuntimeResolver.affine b/src/core/RuntimeResolver.affine index 65bf75b3..334970d8 100644 --- a/src/core/RuntimeResolver.affine +++ b/src/core/RuntimeResolver.affine @@ -4,4 +4,4 @@ module RuntimeResolver; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/SafeDOMCore.affine b/src/core/SafeDOMCore.affine index af14d3f3..690c402a 100644 --- a/src/core/SafeDOMCore.affine +++ b/src/core/SafeDOMCore.affine @@ -4,4 +4,4 @@ module SafeDOMCore; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/SafeMount.affine b/src/core/SafeMount.affine index d06f70a5..48ea556d 100644 --- a/src/core/SafeMount.affine +++ b/src/core/SafeMount.affine @@ -4,4 +4,4 @@ module SafeMount; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/ScriptGistEngine.affine b/src/core/ScriptGistEngine.affine index e18bdcd4..9c8ec153 100644 --- a/src/core/ScriptGistEngine.affine +++ b/src/core/ScriptGistEngine.affine @@ -4,4 +4,4 @@ module ScriptGistEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/ScriptingBridgeEngine.affine b/src/core/ScriptingBridgeEngine.affine index 4b086a76..9b17a179 100644 --- a/src/core/ScriptingBridgeEngine.affine +++ b/src/core/ScriptingBridgeEngine.affine @@ -4,4 +4,4 @@ module ScriptingBridgeEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/SeamEngine.affine b/src/core/SeamEngine.affine index 08845d90..0a0c2936 100644 --- a/src/core/SeamEngine.affine +++ b/src/core/SeamEngine.affine @@ -4,4 +4,4 @@ module SeamEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/SecurityEngine.affine b/src/core/SecurityEngine.affine index 0d4394cd..c4c0b850 100644 --- a/src/core/SecurityEngine.affine +++ b/src/core/SecurityEngine.affine @@ -4,4 +4,4 @@ module SecurityEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/SmartRouter.affine b/src/core/SmartRouter.affine index a687d6b0..1240adc0 100644 --- a/src/core/SmartRouter.affine +++ b/src/core/SmartRouter.affine @@ -4,4 +4,4 @@ module SmartRouter; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/SoakMonitorEngine.affine b/src/core/SoakMonitorEngine.affine index eb1503cc..3fe223d1 100644 --- a/src/core/SoakMonitorEngine.affine +++ b/src/core/SoakMonitorEngine.affine @@ -4,4 +4,4 @@ module SoakMonitorEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/SpecBrowserEngine.affine b/src/core/SpecBrowserEngine.affine index f0acb9ac..c1b090bc 100644 --- a/src/core/SpecBrowserEngine.affine +++ b/src/core/SpecBrowserEngine.affine @@ -4,4 +4,4 @@ module SpecBrowserEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/StapelnEngine.affine b/src/core/StapelnEngine.affine index b826b07f..638f4955 100644 --- a/src/core/StapelnEngine.affine +++ b/src/core/StapelnEngine.affine @@ -4,4 +4,4 @@ module StapelnEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/StatusBarEngine.affine b/src/core/StatusBarEngine.affine index 716fe652..27544b69 100644 --- a/src/core/StatusBarEngine.affine +++ b/src/core/StatusBarEngine.affine @@ -4,4 +4,4 @@ module StatusBarEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/TangleVizEngine.affine b/src/core/TangleVizEngine.affine index d9653f2a..8a849b75 100644 --- a/src/core/TangleVizEngine.affine +++ b/src/core/TangleVizEngine.affine @@ -4,4 +4,4 @@ module TangleVizEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/TeamDashboardEngine.affine b/src/core/TeamDashboardEngine.affine index 9ece2db2..0584e768 100644 --- a/src/core/TeamDashboardEngine.affine +++ b/src/core/TeamDashboardEngine.affine @@ -4,4 +4,4 @@ module TeamDashboardEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/TentaclesEngine.affine b/src/core/TentaclesEngine.affine index 57feac9a..d8bb660e 100644 --- a/src/core/TentaclesEngine.affine +++ b/src/core/TentaclesEngine.affine @@ -4,4 +4,4 @@ module TentaclesEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/TilingEngine.affine b/src/core/TilingEngine.affine index 7fc0d59e..a451a79b 100644 --- a/src/core/TilingEngine.affine +++ b/src/core/TilingEngine.affine @@ -4,4 +4,4 @@ module TilingEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/TimelineEngine.affine b/src/core/TimelineEngine.affine index 691c8ee0..f89a9506 100644 --- a/src/core/TimelineEngine.affine +++ b/src/core/TimelineEngine.affine @@ -4,4 +4,4 @@ module TimelineEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/TrustedTypes.affine b/src/core/TrustedTypes.affine index 771f7481..eca01944 100644 --- a/src/core/TrustedTypes.affine +++ b/src/core/TrustedTypes.affine @@ -4,4 +4,4 @@ module TrustedTypes; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/TsdmEngine.affine b/src/core/TsdmEngine.affine index a623d075..88cd5964 100644 --- a/src/core/TsdmEngine.affine +++ b/src/core/TsdmEngine.affine @@ -4,4 +4,4 @@ module TsdmEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/TypeLLEngine.affine b/src/core/TypeLLEngine.affine index 8f22ddb6..c2e6bd6a 100644 --- a/src/core/TypeLLEngine.affine +++ b/src/core/TypeLLEngine.affine @@ -4,4 +4,4 @@ module TypeLLEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/TypingBridgeEngine.affine b/src/core/TypingBridgeEngine.affine index cd66f38d..1f373749 100644 --- a/src/core/TypingBridgeEngine.affine +++ b/src/core/TypingBridgeEngine.affine @@ -4,4 +4,4 @@ module TypingBridgeEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/UmsEngine.affine b/src/core/UmsEngine.affine index 979e7ed7..abc3275d 100644 --- a/src/core/UmsEngine.affine +++ b/src/core/UmsEngine.affine @@ -4,4 +4,4 @@ module UmsEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/UndoEngine.affine b/src/core/UndoEngine.affine index e6054537..b3284123 100644 --- a/src/core/UndoEngine.affine +++ b/src/core/UndoEngine.affine @@ -4,4 +4,4 @@ module UndoEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/UnitTestRunnerEngine.affine b/src/core/UnitTestRunnerEngine.affine index 310a96a0..f26513cc 100644 --- a/src/core/UnitTestRunnerEngine.affine +++ b/src/core/UnitTestRunnerEngine.affine @@ -4,4 +4,4 @@ module UnitTestRunnerEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/VabCatalog.affine b/src/core/VabCatalog.affine index 7c3e68b7..3723713b 100644 --- a/src/core/VabCatalog.affine +++ b/src/core/VabCatalog.affine @@ -4,4 +4,4 @@ module VabCatalog; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/VabEngine.affine b/src/core/VabEngine.affine index 64fcab46..ee45ce82 100644 --- a/src/core/VabEngine.affine +++ b/src/core/VabEngine.affine @@ -4,4 +4,4 @@ module VabEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/ValenceShellEngine.affine b/src/core/ValenceShellEngine.affine index eed14c75..64422ec7 100644 --- a/src/core/ValenceShellEngine.affine +++ b/src/core/ValenceShellEngine.affine @@ -4,4 +4,4 @@ module ValenceShellEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/VerificationDashboardEngine.affine b/src/core/VerificationDashboardEngine.affine index cf39125e..a7743b44 100644 --- a/src/core/VerificationDashboardEngine.affine +++ b/src/core/VerificationDashboardEngine.affine @@ -4,4 +4,4 @@ module VerificationDashboardEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/VerisimdbFeedsEngine.affine b/src/core/VerisimdbFeedsEngine.affine index 7b776362..e2ba125e 100644 --- a/src/core/VerisimdbFeedsEngine.affine +++ b/src/core/VerisimdbFeedsEngine.affine @@ -4,4 +4,4 @@ module VerisimdbFeedsEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/VexometerFrictionEngine.affine b/src/core/VexometerFrictionEngine.affine index 26b801e1..b4c565c2 100644 --- a/src/core/VexometerFrictionEngine.affine +++ b/src/core/VexometerFrictionEngine.affine @@ -4,4 +4,4 @@ module VexometerFrictionEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/VideoCoordinationEngine.affine b/src/core/VideoCoordinationEngine.affine index 2acfc375..aeb65874 100644 --- a/src/core/VideoCoordinationEngine.affine +++ b/src/core/VideoCoordinationEngine.affine @@ -4,4 +4,4 @@ module VideoCoordinationEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/VmInspectorEngine.affine b/src/core/VmInspectorEngine.affine index c76ee812..8ed659c9 100644 --- a/src/core/VmInspectorEngine.affine +++ b/src/core/VmInspectorEngine.affine @@ -4,4 +4,4 @@ module VmInspectorEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/VoiceTagEngine.affine b/src/core/VoiceTagEngine.affine index f44cab8e..1f07d9c8 100644 --- a/src/core/VoiceTagEngine.affine +++ b/src/core/VoiceTagEngine.affine @@ -4,4 +4,4 @@ module VoiceTagEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/VqlEngine.affine b/src/core/VqlEngine.affine index b48ca78e..fcd82814 100644 --- a/src/core/VqlEngine.affine +++ b/src/core/VqlEngine.affine @@ -4,4 +4,4 @@ module VqlEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/WindowBridge.affine b/src/core/WindowBridge.affine index a637aad5..a14d929d 100644 --- a/src/core/WindowBridge.affine +++ b/src/core/WindowBridge.affine @@ -4,4 +4,4 @@ module WindowBridge; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/WiringInspectorEngine.affine b/src/core/WiringInspectorEngine.affine index 4f069bed..d4160738 100644 --- a/src/core/WiringInspectorEngine.affine +++ b/src/core/WiringInspectorEngine.affine @@ -4,4 +4,4 @@ module WiringInspectorEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/WizardMinter.affine b/src/core/WizardMinter.affine index e3efe38a..38b474ed 100644 --- a/src/core/WizardMinter.affine +++ b/src/core/WizardMinter.affine @@ -4,4 +4,4 @@ module WizardMinter; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/core/WorkspaceEngine.affine b/src/core/WorkspaceEngine.affine index 3c0103f2..90fc488c 100644 --- a/src/core/WorkspaceEngine.affine +++ b/src/core/WorkspaceEngine.affine @@ -4,4 +4,4 @@ module WorkspaceEngine; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/generated/CartridgeAbi.affine b/src/generated/CartridgeAbi.affine index 89916909..6d3a2936 100644 --- a/src/generated/CartridgeAbi.affine +++ b/src/generated/CartridgeAbi.affine @@ -4,4 +4,4 @@ module CartridgeAbi; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/AccessibilityModel.affine b/src/model/AccessibilityModel.affine index 274e8ac0..919d95f7 100644 --- a/src/model/AccessibilityModel.affine +++ b/src/model/AccessibilityModel.affine @@ -4,4 +4,4 @@ module AccessibilityModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/AerieModel.affine b/src/model/AerieModel.affine index 1a9f7bd1..3b4f8985 100644 --- a/src/model/AerieModel.affine +++ b/src/model/AerieModel.affine @@ -4,4 +4,4 @@ module AerieModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/AgentCoordinationModel.affine b/src/model/AgentCoordinationModel.affine index da79fd68..92e0aedf 100644 --- a/src/model/AgentCoordinationModel.affine +++ b/src/model/AgentCoordinationModel.affine @@ -4,4 +4,4 @@ module AgentCoordinationModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/AgentOodaModel.affine b/src/model/AgentOodaModel.affine index 53b89ce4..5cde3d92 100644 --- a/src/model/AgentOodaModel.affine +++ b/src/model/AgentOodaModel.affine @@ -4,4 +4,4 @@ module AgentOodaModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/AgentSafetyModel.affine b/src/model/AgentSafetyModel.affine index 920472ab..949427b6 100644 --- a/src/model/AgentSafetyModel.affine +++ b/src/model/AgentSafetyModel.affine @@ -4,4 +4,4 @@ module AgentSafetyModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/AgenticBridgeModel.affine b/src/model/AgenticBridgeModel.affine index 4503ac75..7a2e1077 100644 --- a/src/model/AgenticBridgeModel.affine +++ b/src/model/AgenticBridgeModel.affine @@ -4,4 +4,4 @@ module AgenticBridgeModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/AiModel.affine b/src/model/AiModel.affine index 7ea3ce4f..1e039412 100644 --- a/src/model/AiModel.affine +++ b/src/model/AiModel.affine @@ -4,4 +4,4 @@ module AiModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/AmbientOpsModel.affine b/src/model/AmbientOpsModel.affine index cfc514e5..71e5d3fd 100644 --- a/src/model/AmbientOpsModel.affine +++ b/src/model/AmbientOpsModel.affine @@ -4,4 +4,4 @@ module AmbientOpsModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/ArchitectModeModel.affine b/src/model/ArchitectModeModel.affine index 2b43d56c..62202b36 100644 --- a/src/model/ArchitectModeModel.affine +++ b/src/model/ArchitectModeModel.affine @@ -4,4 +4,4 @@ module ArchitectModeModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/AssetManagerModel.affine b/src/model/AssetManagerModel.affine index db25b35c..9924cff5 100644 --- a/src/model/AssetManagerModel.affine +++ b/src/model/AssetManagerModel.affine @@ -4,4 +4,4 @@ module AssetManagerModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/AttributionLicenseModel.affine b/src/model/AttributionLicenseModel.affine index 62f61ac9..f8e038be 100644 --- a/src/model/AttributionLicenseModel.affine +++ b/src/model/AttributionLicenseModel.affine @@ -4,4 +4,4 @@ module AttributionLicenseModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/AutomationBridgeModel.affine b/src/model/AutomationBridgeModel.affine index ce58ad23..08713443 100644 --- a/src/model/AutomationBridgeModel.affine +++ b/src/model/AutomationBridgeModel.affine @@ -4,4 +4,4 @@ module AutomationBridgeModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/AutomationRouterModel.affine b/src/model/AutomationRouterModel.affine index 7df50b64..7a369f37 100644 --- a/src/model/AutomationRouterModel.affine +++ b/src/model/AutomationRouterModel.affine @@ -4,4 +4,4 @@ module AutomationRouterModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/BalanceAnalyserModel.affine b/src/model/BalanceAnalyserModel.affine index 23500710..e031678e 100644 --- a/src/model/BalanceAnalyserModel.affine +++ b/src/model/BalanceAnalyserModel.affine @@ -4,4 +4,4 @@ module BalanceAnalyserModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/BetaFeedbackHubModel.affine b/src/model/BetaFeedbackHubModel.affine index 8a8c0adb..bd13f8fb 100644 --- a/src/model/BetaFeedbackHubModel.affine +++ b/src/model/BetaFeedbackHubModel.affine @@ -4,4 +4,4 @@ module BetaFeedbackHubModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/BojModel.affine b/src/model/BojModel.affine index 87f9e01e..27c840a0 100644 --- a/src/model/BojModel.affine +++ b/src/model/BojModel.affine @@ -4,4 +4,4 @@ module BojModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/BuildDashboardModel.affine b/src/model/BuildDashboardModel.affine index 2daf0d55..6b9e8ed4 100644 --- a/src/model/BuildDashboardModel.affine +++ b/src/model/BuildDashboardModel.affine @@ -4,4 +4,4 @@ module BuildDashboardModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/BurbleModel.affine b/src/model/BurbleModel.affine index 60bac392..d130dc2e 100644 --- a/src/model/BurbleModel.affine +++ b/src/model/BurbleModel.affine @@ -4,4 +4,4 @@ module BurbleModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/CaptureModel.affine b/src/model/CaptureModel.affine index 2561e2da..7b609882 100644 --- a/src/model/CaptureModel.affine +++ b/src/model/CaptureModel.affine @@ -4,4 +4,4 @@ module CaptureModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/CladeBrowserModel.affine b/src/model/CladeBrowserModel.affine index 680df937..bbe1110c 100644 --- a/src/model/CladeBrowserModel.affine +++ b/src/model/CladeBrowserModel.affine @@ -4,4 +4,4 @@ module CladeBrowserModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/CloudGuardModel.affine b/src/model/CloudGuardModel.affine index 74e85aca..a18d55f2 100644 --- a/src/model/CloudGuardModel.affine +++ b/src/model/CloudGuardModel.affine @@ -4,4 +4,4 @@ module CloudGuardModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/CodeReviewModel.affine b/src/model/CodeReviewModel.affine index 7f9da431..5e45e641 100644 --- a/src/model/CodeReviewModel.affine +++ b/src/model/CodeReviewModel.affine @@ -4,4 +4,4 @@ module CodeReviewModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/CompatibilityMatrixModel.affine b/src/model/CompatibilityMatrixModel.affine index dd370057..4b5a79c5 100644 --- a/src/model/CompatibilityMatrixModel.affine +++ b/src/model/CompatibilityMatrixModel.affine @@ -4,4 +4,4 @@ module CompatibilityMatrixModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/ContractileCompletenessModel.affine b/src/model/ContractileCompletenessModel.affine index 8e9b7927..597067a6 100644 --- a/src/model/ContractileCompletenessModel.affine +++ b/src/model/ContractileCompletenessModel.affine @@ -4,4 +4,4 @@ module ContractileCompletenessModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/CoprocessorsModel.affine b/src/model/CoprocessorsModel.affine index 328c5a48..edac76db 100644 --- a/src/model/CoprocessorsModel.affine +++ b/src/model/CoprocessorsModel.affine @@ -4,4 +4,4 @@ module CoprocessorsModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/DatabaseBridgeModel.affine b/src/model/DatabaseBridgeModel.affine index 0aa03b2c..f472eaa2 100644 --- a/src/model/DatabaseBridgeModel.affine +++ b/src/model/DatabaseBridgeModel.affine @@ -4,4 +4,4 @@ module DatabaseBridgeModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/DatabasesModel.affine b/src/model/DatabasesModel.affine index fdd0d5e9..2a89857e 100644 --- a/src/model/DatabasesModel.affine +++ b/src/model/DatabasesModel.affine @@ -4,4 +4,4 @@ module DatabasesModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/DebuggingWorkbenchModel.affine b/src/model/DebuggingWorkbenchModel.affine index 97eea4d5..aa5308c7 100644 --- a/src/model/DebuggingWorkbenchModel.affine +++ b/src/model/DebuggingWorkbenchModel.affine @@ -4,4 +4,4 @@ module DebuggingWorkbenchModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/DeviceNetworkDesignerModel.affine b/src/model/DeviceNetworkDesignerModel.affine index 376a68e6..baadda90 100644 --- a/src/model/DeviceNetworkDesignerModel.affine +++ b/src/model/DeviceNetworkDesignerModel.affine @@ -4,4 +4,4 @@ module DeviceNetworkDesignerModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/DlcWorkshopModel.affine b/src/model/DlcWorkshopModel.affine index de77c46a..4452c27c 100644 --- a/src/model/DlcWorkshopModel.affine +++ b/src/model/DlcWorkshopModel.affine @@ -4,4 +4,4 @@ module DlcWorkshopModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/EchidnaModel.affine b/src/model/EchidnaModel.affine index 1e348dcf..b4dcc343 100644 --- a/src/model/EchidnaModel.affine +++ b/src/model/EchidnaModel.affine @@ -4,4 +4,4 @@ module EchidnaModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/EditorBridgeModel.affine b/src/model/EditorBridgeModel.affine index ffec5b82..11bb4388 100644 --- a/src/model/EditorBridgeModel.affine +++ b/src/model/EditorBridgeModel.affine @@ -4,4 +4,4 @@ module EditorBridgeModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/EvangeliserModel.affine b/src/model/EvangeliserModel.affine index 935fae22..4558a15c 100644 --- a/src/model/EvangeliserModel.affine +++ b/src/model/EvangeliserModel.affine @@ -4,4 +4,4 @@ module EvangeliserModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/ExploratoryWorkbenchModel.affine b/src/model/ExploratoryWorkbenchModel.affine index 96981564..d4c09ac6 100644 --- a/src/model/ExploratoryWorkbenchModel.affine +++ b/src/model/ExploratoryWorkbenchModel.affine @@ -4,4 +4,4 @@ module ExploratoryWorkbenchModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/FarmModel.affine b/src/model/FarmModel.affine index 845ee8a1..ef34804e 100644 --- a/src/model/FarmModel.affine +++ b/src/model/FarmModel.affine @@ -4,4 +4,4 @@ module FarmModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/FeedbackRoutingModel.affine b/src/model/FeedbackRoutingModel.affine index 67b873d4..e914b947 100644 --- a/src/model/FeedbackRoutingModel.affine +++ b/src/model/FeedbackRoutingModel.affine @@ -4,4 +4,4 @@ module FeedbackRoutingModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/FleetModel.affine b/src/model/FleetModel.affine index bbb6aae5..a4cfc00e 100644 --- a/src/model/FleetModel.affine +++ b/src/model/FleetModel.affine @@ -4,4 +4,4 @@ module FleetModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/FloorRaiseModel.affine b/src/model/FloorRaiseModel.affine index 37abedba..880b5441 100644 --- a/src/model/FloorRaiseModel.affine +++ b/src/model/FloorRaiseModel.affine @@ -4,4 +4,4 @@ module FloorRaiseModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/FocusDimmingModel.affine b/src/model/FocusDimmingModel.affine index 9595af2f..280ab657 100644 --- a/src/model/FocusDimmingModel.affine +++ b/src/model/FocusDimmingModel.affine @@ -4,4 +4,4 @@ module FocusDimmingModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/FunctionalTesterModel.affine b/src/model/FunctionalTesterModel.affine index 23e68bf6..47b10059 100644 --- a/src/model/FunctionalTesterModel.affine +++ b/src/model/FunctionalTesterModel.affine @@ -4,4 +4,4 @@ module FunctionalTesterModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/GamePreviewModel.affine b/src/model/GamePreviewModel.affine index 52d97836..5805cb9b 100644 --- a/src/model/GamePreviewModel.affine +++ b/src/model/GamePreviewModel.affine @@ -4,4 +4,4 @@ module GamePreviewModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/GeneratorModeModel.affine b/src/model/GeneratorModeModel.affine index e5a6585a..8033a64d 100644 --- a/src/model/GeneratorModeModel.affine +++ b/src/model/GeneratorModeModel.affine @@ -4,4 +4,4 @@ module GeneratorModeModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/GovernanceModel.affine b/src/model/GovernanceModel.affine index a1be482c..b5fe16e6 100644 --- a/src/model/GovernanceModel.affine +++ b/src/model/GovernanceModel.affine @@ -4,4 +4,4 @@ module GovernanceModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/GuardAiTunerModel.affine b/src/model/GuardAiTunerModel.affine index 9c314aa4..e15c5752 100644 --- a/src/model/GuardAiTunerModel.affine +++ b/src/model/GuardAiTunerModel.affine @@ -4,4 +4,4 @@ module GuardAiTunerModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/HelpModel.affine b/src/model/HelpModel.affine index e9157779..6ab596fd 100644 --- a/src/model/HelpModel.affine +++ b/src/model/HelpModel.affine @@ -4,4 +4,4 @@ module HelpModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/HypatiaModel.affine b/src/model/HypatiaModel.affine index add21c4b..843ac6c6 100644 --- a/src/model/HypatiaModel.affine +++ b/src/model/HypatiaModel.affine @@ -4,4 +4,4 @@ module HypatiaModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/IdentityModel.affine b/src/model/IdentityModel.affine index ba86702c..a600fa7c 100644 --- a/src/model/IdentityModel.affine +++ b/src/model/IdentityModel.affine @@ -4,4 +4,4 @@ module IdentityModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/InterfacesModel.affine b/src/model/InterfacesModel.affine index d8816ea5..963b726f 100644 --- a/src/model/InterfacesModel.affine +++ b/src/model/InterfacesModel.affine @@ -4,4 +4,4 @@ module InterfacesModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/K9Model.affine b/src/model/K9Model.affine index 9b7a6c75..63b908f1 100644 --- a/src/model/K9Model.affine +++ b/src/model/K9Model.affine @@ -4,4 +4,4 @@ module K9Model; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/KeybindingsModel.affine b/src/model/KeybindingsModel.affine index 86edc920..7764d888 100644 --- a/src/model/KeybindingsModel.affine +++ b/src/model/KeybindingsModel.affine @@ -4,4 +4,4 @@ module KeybindingsModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/LanguageForgeModel.affine b/src/model/LanguageForgeModel.affine index f0c14c31..5d8b5902 100644 --- a/src/model/LanguageForgeModel.affine +++ b/src/model/LanguageForgeModel.affine @@ -4,4 +4,4 @@ module LanguageForgeModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/LevelArchitectModel.affine b/src/model/LevelArchitectModel.affine index eb91e326..725de7b5 100644 --- a/src/model/LevelArchitectModel.affine +++ b/src/model/LevelArchitectModel.affine @@ -4,4 +4,4 @@ module LevelArchitectModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/LlmCodingModel.affine b/src/model/LlmCodingModel.affine index 99f7dc04..782d78a6 100644 --- a/src/model/LlmCodingModel.affine +++ b/src/model/LlmCodingModel.affine @@ -4,4 +4,4 @@ module LlmCodingModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/LoadTesterModel.affine b/src/model/LoadTesterModel.affine index 80126dd8..2815648b 100644 --- a/src/model/LoadTesterModel.affine +++ b/src/model/LoadTesterModel.affine @@ -4,4 +4,4 @@ module LoadTesterModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/ManifestCoverageModel.affine b/src/model/ManifestCoverageModel.affine index 66dbe06b..fdf67e87 100644 --- a/src/model/ManifestCoverageModel.affine +++ b/src/model/ManifestCoverageModel.affine @@ -4,4 +4,4 @@ module ManifestCoverageModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/MassPanicModel.affine b/src/model/MassPanicModel.affine index 07b6476b..1812a5fb 100644 --- a/src/model/MassPanicModel.affine +++ b/src/model/MassPanicModel.affine @@ -4,4 +4,4 @@ module MassPanicModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/MenuBarModel.affine b/src/model/MenuBarModel.affine index af6ccfe4..d5afbfbf 100644 --- a/src/model/MenuBarModel.affine +++ b/src/model/MenuBarModel.affine @@ -4,4 +4,4 @@ module MenuBarModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/MergeCoordinatorModel.affine b/src/model/MergeCoordinatorModel.affine index 02a101a0..d7683f94 100644 --- a/src/model/MergeCoordinatorModel.affine +++ b/src/model/MergeCoordinatorModel.affine @@ -4,4 +4,4 @@ module MergeCoordinatorModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/MigrationModel.affine b/src/model/MigrationModel.affine index ab95b0b1..2231c9d5 100644 --- a/src/model/MigrationModel.affine +++ b/src/model/MigrationModel.affine @@ -4,4 +4,4 @@ module MigrationModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/MinterModel.affine b/src/model/MinterModel.affine index b6d3b089..4bcfc136 100644 --- a/src/model/MinterModel.affine +++ b/src/model/MinterModel.affine @@ -4,4 +4,4 @@ module MinterModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/MultiplayerMonitorModel.affine b/src/model/MultiplayerMonitorModel.affine index 50b918c4..bd44e1ce 100644 --- a/src/model/MultiplayerMonitorModel.affine +++ b/src/model/MultiplayerMonitorModel.affine @@ -4,4 +4,4 @@ module MultiplayerMonitorModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/MyLangModel.affine b/src/model/MyLangModel.affine index 8f5b7a55..eba80794 100644 --- a/src/model/MyLangModel.affine +++ b/src/model/MyLangModel.affine @@ -4,4 +4,4 @@ module MyLangModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/NesyDriftModel.affine b/src/model/NesyDriftModel.affine index 4b20d830..e2f259e5 100644 --- a/src/model/NesyDriftModel.affine +++ b/src/model/NesyDriftModel.affine @@ -4,4 +4,4 @@ module NesyDriftModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/NesyHarmonizeModel.affine b/src/model/NesyHarmonizeModel.affine index 09a49448..f4c1d473 100644 --- a/src/model/NesyHarmonizeModel.affine +++ b/src/model/NesyHarmonizeModel.affine @@ -4,4 +4,4 @@ module NesyHarmonizeModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/NesyModesModel.affine b/src/model/NesyModesModel.affine index d8bbd91e..88857e23 100644 --- a/src/model/NesyModesModel.affine +++ b/src/model/NesyModesModel.affine @@ -4,4 +4,4 @@ module NesyModesModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/NetworkTopologyModel.affine b/src/model/NetworkTopologyModel.affine index 4ae43a9a..44199aba 100644 --- a/src/model/NetworkTopologyModel.affine +++ b/src/model/NetworkTopologyModel.affine @@ -4,4 +4,4 @@ module NetworkTopologyModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/NeurosymBridgeModel.affine b/src/model/NeurosymBridgeModel.affine index 93a86a0f..f423c161 100644 --- a/src/model/NeurosymBridgeModel.affine +++ b/src/model/NeurosymBridgeModel.affine @@ -4,4 +4,4 @@ module NeurosymBridgeModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/ObservatoryModel.affine b/src/model/ObservatoryModel.affine index a673a523..8a803925 100644 --- a/src/model/ObservatoryModel.affine +++ b/src/model/ObservatoryModel.affine @@ -4,4 +4,4 @@ module ObservatoryModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/Oo7ToolchainModel.affine b/src/model/Oo7ToolchainModel.affine index d482395c..8e543c1d 100644 --- a/src/model/Oo7ToolchainModel.affine +++ b/src/model/Oo7ToolchainModel.affine @@ -4,4 +4,4 @@ module Oo7ToolchainModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/PaneModel.affine b/src/model/PaneModel.affine index 579f3fb9..37a86e09 100644 --- a/src/model/PaneModel.affine +++ b/src/model/PaneModel.affine @@ -4,4 +4,4 @@ module PaneModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/PanelSwitcherModel.affine b/src/model/PanelSwitcherModel.affine index 99dff603..eb5ed82c 100644 --- a/src/model/PanelSwitcherModel.affine +++ b/src/model/PanelSwitcherModel.affine @@ -4,4 +4,4 @@ module PanelSwitcherModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/PanicAttackModel.affine b/src/model/PanicAttackModel.affine index 0ebd0e54..09f3852f 100644 --- a/src/model/PanicAttackModel.affine +++ b/src/model/PanicAttackModel.affine @@ -4,4 +4,4 @@ module PanicAttackModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/PatternDiagModel.affine b/src/model/PatternDiagModel.affine index 017927bd..14b75805 100644 --- a/src/model/PatternDiagModel.affine +++ b/src/model/PatternDiagModel.affine @@ -4,4 +4,4 @@ module PatternDiagModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/PerformanceProfilerModel.affine b/src/model/PerformanceProfilerModel.affine index ae8a5205..75c447ee 100644 --- a/src/model/PerformanceProfilerModel.affine +++ b/src/model/PerformanceProfilerModel.affine @@ -4,4 +4,4 @@ module PerformanceProfilerModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/PlaygroundsModel.affine b/src/model/PlaygroundsModel.affine index c1026529..43c841e1 100644 --- a/src/model/PlaygroundsModel.affine +++ b/src/model/PlaygroundsModel.affine @@ -4,4 +4,4 @@ module PlaygroundsModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/PlaytestRecorderModel.affine b/src/model/PlaytestRecorderModel.affine index a9ff03aa..61f80c98 100644 --- a/src/model/PlaytestRecorderModel.affine +++ b/src/model/PlaytestRecorderModel.affine @@ -4,4 +4,4 @@ module PlaytestRecorderModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/PlazaModel.affine b/src/model/PlazaModel.affine index fa2f7621..c10c9a22 100644 --- a/src/model/PlazaModel.affine +++ b/src/model/PlazaModel.affine @@ -4,4 +4,4 @@ module PlazaModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/ProofsBridgeModel.affine b/src/model/ProofsBridgeModel.affine index b8183015..d2315378 100644 --- a/src/model/ProofsBridgeModel.affine +++ b/src/model/ProofsBridgeModel.affine @@ -4,4 +4,4 @@ module ProofsBridgeModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/ProtocolBridgeModel.affine b/src/model/ProtocolBridgeModel.affine index 90008964..fa160c7d 100644 --- a/src/model/ProtocolBridgeModel.affine +++ b/src/model/ProtocolBridgeModel.affine @@ -4,4 +4,4 @@ module ProtocolBridgeModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/ProtocolSquisherModel.affine b/src/model/ProtocolSquisherModel.affine index 0486a403..4cd6fe10 100644 --- a/src/model/ProtocolSquisherModel.affine +++ b/src/model/ProtocolSquisherModel.affine @@ -4,4 +4,4 @@ module ProtocolSquisherModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/ProvenAdoptionModel.affine b/src/model/ProvenAdoptionModel.affine index 2241079e..1ad16900 100644 --- a/src/model/ProvenAdoptionModel.affine +++ b/src/model/ProvenAdoptionModel.affine @@ -4,4 +4,4 @@ module ProvenAdoptionModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/ProvenanceModel.affine b/src/model/ProvenanceModel.affine index c116c8ef..eded6d50 100644 --- a/src/model/ProvenanceModel.affine +++ b/src/model/ProvenanceModel.affine @@ -4,4 +4,4 @@ module ProvenanceModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/ProvisionerModel.affine b/src/model/ProvisionerModel.affine index 35811c7b..88d408da 100644 --- a/src/model/ProvisionerModel.affine +++ b/src/model/ProvisionerModel.affine @@ -4,4 +4,4 @@ module ProvisionerModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/RegressionGuardModel.affine b/src/model/RegressionGuardModel.affine index 6e29ed09..f631483b 100644 --- a/src/model/RegressionGuardModel.affine +++ b/src/model/RegressionGuardModel.affine @@ -4,4 +4,4 @@ module RegressionGuardModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/ReleaseManagerModel.affine b/src/model/ReleaseManagerModel.affine index eafbd471..69bef481 100644 --- a/src/model/ReleaseManagerModel.affine +++ b/src/model/ReleaseManagerModel.affine @@ -4,4 +4,4 @@ module ReleaseManagerModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/RepoLoaderModel.affine b/src/model/RepoLoaderModel.affine index 5b9c8ff1..45ac1226 100644 --- a/src/model/RepoLoaderModel.affine +++ b/src/model/RepoLoaderModel.affine @@ -4,4 +4,4 @@ module RepoLoaderModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/ReposystemModel.affine b/src/model/ReposystemModel.affine index 0922516b..21675374 100644 --- a/src/model/ReposystemModel.affine +++ b/src/model/ReposystemModel.affine @@ -4,4 +4,4 @@ module ReposystemModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/ScriptGistModel.affine b/src/model/ScriptGistModel.affine index ec3d6824..78a36bd7 100644 --- a/src/model/ScriptGistModel.affine +++ b/src/model/ScriptGistModel.affine @@ -4,4 +4,4 @@ module ScriptGistModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/ScriptingBridgeModel.affine b/src/model/ScriptingBridgeModel.affine index 50e0b5b6..85422834 100644 --- a/src/model/ScriptingBridgeModel.affine +++ b/src/model/ScriptingBridgeModel.affine @@ -4,4 +4,4 @@ module ScriptingBridgeModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/SecurityModel.affine b/src/model/SecurityModel.affine index 56e52cd8..74212312 100644 --- a/src/model/SecurityModel.affine +++ b/src/model/SecurityModel.affine @@ -4,4 +4,4 @@ module SecurityModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/ServiceModel.affine b/src/model/ServiceModel.affine index c72e798e..e9f95136 100644 --- a/src/model/ServiceModel.affine +++ b/src/model/ServiceModel.affine @@ -4,4 +4,4 @@ module ServiceModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/SettingsModel.affine b/src/model/SettingsModel.affine index 20fa34ac..391156bc 100644 --- a/src/model/SettingsModel.affine +++ b/src/model/SettingsModel.affine @@ -4,4 +4,4 @@ module SettingsModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/SoakMonitorModel.affine b/src/model/SoakMonitorModel.affine index a4ce7661..8b58632d 100644 --- a/src/model/SoakMonitorModel.affine +++ b/src/model/SoakMonitorModel.affine @@ -4,4 +4,4 @@ module SoakMonitorModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/SpecBrowserModel.affine b/src/model/SpecBrowserModel.affine index 9710f2a1..01ce7c57 100644 --- a/src/model/SpecBrowserModel.affine +++ b/src/model/SpecBrowserModel.affine @@ -4,4 +4,4 @@ module SpecBrowserModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/StapelnModel.affine b/src/model/StapelnModel.affine index aee76f57..8fc21b46 100644 --- a/src/model/StapelnModel.affine +++ b/src/model/StapelnModel.affine @@ -4,4 +4,4 @@ module StapelnModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/StatusBarModel.affine b/src/model/StatusBarModel.affine index fc7a35a0..6a8a1229 100644 --- a/src/model/StatusBarModel.affine +++ b/src/model/StatusBarModel.affine @@ -4,4 +4,4 @@ module StatusBarModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/SystemUpdateModel.affine b/src/model/SystemUpdateModel.affine index 18c1ef71..593b7c56 100644 --- a/src/model/SystemUpdateModel.affine +++ b/src/model/SystemUpdateModel.affine @@ -4,4 +4,4 @@ module SystemUpdateModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/TangleVizModel.affine b/src/model/TangleVizModel.affine index 6b145ce9..c41542d0 100644 --- a/src/model/TangleVizModel.affine +++ b/src/model/TangleVizModel.affine @@ -4,4 +4,4 @@ module TangleVizModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/TeamDashboardModel.affine b/src/model/TeamDashboardModel.affine index 4b662af3..63abd5b4 100644 --- a/src/model/TeamDashboardModel.affine +++ b/src/model/TeamDashboardModel.affine @@ -4,4 +4,4 @@ module TeamDashboardModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/TentaclesModel.affine b/src/model/TentaclesModel.affine index 5cab5e05..5f28a53f 100644 --- a/src/model/TentaclesModel.affine +++ b/src/model/TentaclesModel.affine @@ -4,4 +4,4 @@ module TentaclesModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/TilingModel.affine b/src/model/TilingModel.affine index aeecc9db..4843c549 100644 --- a/src/model/TilingModel.affine +++ b/src/model/TilingModel.affine @@ -4,4 +4,4 @@ module TilingModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/TimelineModel.affine b/src/model/TimelineModel.affine index f6aeca2b..8668f4eb 100644 --- a/src/model/TimelineModel.affine +++ b/src/model/TimelineModel.affine @@ -4,4 +4,4 @@ module TimelineModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/TsdmModel.affine b/src/model/TsdmModel.affine index 5a4b3d9b..c3e9238a 100644 --- a/src/model/TsdmModel.affine +++ b/src/model/TsdmModel.affine @@ -4,4 +4,4 @@ module TsdmModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/TypeLLModel.affine b/src/model/TypeLLModel.affine index d0c33401..e7a61463 100644 --- a/src/model/TypeLLModel.affine +++ b/src/model/TypeLLModel.affine @@ -4,4 +4,4 @@ module TypeLLModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/TypingBridgeModel.affine b/src/model/TypingBridgeModel.affine index 5dbf9762..c28cf4e2 100644 --- a/src/model/TypingBridgeModel.affine +++ b/src/model/TypingBridgeModel.affine @@ -4,4 +4,4 @@ module TypingBridgeModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/UmsModel.affine b/src/model/UmsModel.affine index cad8640e..7d1d0bc7 100644 --- a/src/model/UmsModel.affine +++ b/src/model/UmsModel.affine @@ -4,4 +4,4 @@ module UmsModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/UnitTestRunnerModel.affine b/src/model/UnitTestRunnerModel.affine index 709b0869..5837fd25 100644 --- a/src/model/UnitTestRunnerModel.affine +++ b/src/model/UnitTestRunnerModel.affine @@ -4,4 +4,4 @@ module UnitTestRunnerModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/VabModel.affine b/src/model/VabModel.affine index 10040de1..6b47b6dd 100644 --- a/src/model/VabModel.affine +++ b/src/model/VabModel.affine @@ -4,4 +4,4 @@ module VabModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/ValenceShellModel.affine b/src/model/ValenceShellModel.affine index 81a553d8..4ad54da0 100644 --- a/src/model/ValenceShellModel.affine +++ b/src/model/ValenceShellModel.affine @@ -4,4 +4,4 @@ module ValenceShellModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/VeriSimModel.affine b/src/model/VeriSimModel.affine index aa107b68..bcd96511 100644 --- a/src/model/VeriSimModel.affine +++ b/src/model/VeriSimModel.affine @@ -4,4 +4,4 @@ module VeriSimModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/VerificationDashboardModel.affine b/src/model/VerificationDashboardModel.affine index cfced0f4..513d5580 100644 --- a/src/model/VerificationDashboardModel.affine +++ b/src/model/VerificationDashboardModel.affine @@ -4,4 +4,4 @@ module VerificationDashboardModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/VerisimdbFeedsModel.affine b/src/model/VerisimdbFeedsModel.affine index 710483aa..8e750c2c 100644 --- a/src/model/VerisimdbFeedsModel.affine +++ b/src/model/VerisimdbFeedsModel.affine @@ -4,4 +4,4 @@ module VerisimdbFeedsModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/VexometerFrictionModel.affine b/src/model/VexometerFrictionModel.affine index f94a855f..aec3516f 100644 --- a/src/model/VexometerFrictionModel.affine +++ b/src/model/VexometerFrictionModel.affine @@ -4,4 +4,4 @@ module VexometerFrictionModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/VideoCoordinationModel.affine b/src/model/VideoCoordinationModel.affine index 3c260967..fb5a2391 100644 --- a/src/model/VideoCoordinationModel.affine +++ b/src/model/VideoCoordinationModel.affine @@ -4,4 +4,4 @@ module VideoCoordinationModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/VmInspectorModel.affine b/src/model/VmInspectorModel.affine index a5f24383..39bed00e 100644 --- a/src/model/VmInspectorModel.affine +++ b/src/model/VmInspectorModel.affine @@ -4,4 +4,4 @@ module VmInspectorModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/VoiceTagModel.affine b/src/model/VoiceTagModel.affine index ea1bda16..3062634d 100644 --- a/src/model/VoiceTagModel.affine +++ b/src/model/VoiceTagModel.affine @@ -4,4 +4,4 @@ module VoiceTagModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/VqlModel.affine b/src/model/VqlModel.affine index 50737e59..78b0d3fb 100644 --- a/src/model/VqlModel.affine +++ b/src/model/VqlModel.affine @@ -4,4 +4,4 @@ module VqlModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/WatcherModel.affine b/src/model/WatcherModel.affine index 413a1bff..08904d62 100644 --- a/src/model/WatcherModel.affine +++ b/src/model/WatcherModel.affine @@ -4,4 +4,4 @@ module WatcherModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/WiringInspectorModel.affine b/src/model/WiringInspectorModel.affine index 414aa140..c8ef8997 100644 --- a/src/model/WiringInspectorModel.affine +++ b/src/model/WiringInspectorModel.affine @@ -4,4 +4,4 @@ module WiringInspectorModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/WizardModel.affine b/src/model/WizardModel.affine index 02b36494..019a9e66 100644 --- a/src/model/WizardModel.affine +++ b/src/model/WizardModel.affine @@ -4,4 +4,4 @@ module WizardModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/model/WorkspaceModel.affine b/src/model/WorkspaceModel.affine index 100e511a..e63c3066 100644 --- a/src/model/WorkspaceModel.affine +++ b/src/model/WorkspaceModel.affine @@ -4,4 +4,4 @@ module WorkspaceModel; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/modules/A2mlParser.affine b/src/modules/A2mlParser.affine index 8167e3ea..4d46fc54 100644 --- a/src/modules/A2mlParser.affine +++ b/src/modules/A2mlParser.affine @@ -4,4 +4,4 @@ module A2mlParser; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/modules/CladeLoader.affine b/src/modules/CladeLoader.affine index 11715ff7..2a13fbe2 100644 --- a/src/modules/CladeLoader.affine +++ b/src/modules/CladeLoader.affine @@ -4,4 +4,4 @@ module CladeLoader; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/modules/CloudGuardModule.affine b/src/modules/CloudGuardModule.affine index dc68343b..cc614bfd 100644 --- a/src/modules/CloudGuardModule.affine +++ b/src/modules/CloudGuardModule.affine @@ -4,4 +4,4 @@ module CloudGuardModule; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/modules/DatabaseModule.affine b/src/modules/DatabaseModule.affine index d52df1de..00e2f97e 100644 --- a/src/modules/DatabaseModule.affine +++ b/src/modules/DatabaseModule.affine @@ -4,4 +4,4 @@ module DatabaseModule; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/modules/DatabaseRegistry.affine b/src/modules/DatabaseRegistry.affine index 24bf6d06..641e182c 100644 --- a/src/modules/DatabaseRegistry.affine +++ b/src/modules/DatabaseRegistry.affine @@ -4,4 +4,4 @@ module DatabaseRegistry; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/modules/FarmModule.affine b/src/modules/FarmModule.affine index 9ab561a0..2d2e027a 100644 --- a/src/modules/FarmModule.affine +++ b/src/modules/FarmModule.affine @@ -4,4 +4,4 @@ module FarmModule; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/modules/LanguageForgeModule.affine b/src/modules/LanguageForgeModule.affine index 9a816b0b..38332755 100644 --- a/src/modules/LanguageForgeModule.affine +++ b/src/modules/LanguageForgeModule.affine @@ -4,4 +4,4 @@ module LanguageForgeModule; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/modules/MassPanicModule.affine b/src/modules/MassPanicModule.affine index 4fdc6bcc..36f679d2 100644 --- a/src/modules/MassPanicModule.affine +++ b/src/modules/MassPanicModule.affine @@ -4,4 +4,4 @@ module MassPanicModule; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/modules/MigrationModule.affine b/src/modules/MigrationModule.affine index 472c0e4f..9f1c19bb 100644 --- a/src/modules/MigrationModule.affine +++ b/src/modules/MigrationModule.affine @@ -4,4 +4,4 @@ module MigrationModule; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/modules/PanelRegistry.affine b/src/modules/PanelRegistry.affine index bf02ea6e..36ce2f6a 100644 --- a/src/modules/PanelRegistry.affine +++ b/src/modules/PanelRegistry.affine @@ -4,4 +4,4 @@ module PanelRegistry; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/modules/PanicAttackModule.affine b/src/modules/PanicAttackModule.affine index 4d1379f7..b6c3578f 100644 --- a/src/modules/PanicAttackModule.affine +++ b/src/modules/PanicAttackModule.affine @@ -4,4 +4,4 @@ module PanicAttackModule; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/modules/PlazaModule.affine b/src/modules/PlazaModule.affine index c54d80d2..39b4af36 100644 --- a/src/modules/PlazaModule.affine +++ b/src/modules/PlazaModule.affine @@ -4,4 +4,4 @@ module PlazaModule; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/modules/ServiceEndpoints.affine b/src/modules/ServiceEndpoints.affine index 5bb7f748..9d751800 100644 --- a/src/modules/ServiceEndpoints.affine +++ b/src/modules/ServiceEndpoints.affine @@ -4,4 +4,4 @@ module ServiceEndpoints; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/modules/SpecBrowserModule.affine b/src/modules/SpecBrowserModule.affine index c6db64a3..f99c71b2 100644 --- a/src/modules/SpecBrowserModule.affine +++ b/src/modules/SpecBrowserModule.affine @@ -4,4 +4,4 @@ module SpecBrowserModule; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/modules/SystemUpdateModule.affine b/src/modules/SystemUpdateModule.affine index 7869c0a8..1e74c9e4 100644 --- a/src/modules/SystemUpdateModule.affine +++ b/src/modules/SystemUpdateModule.affine @@ -4,4 +4,4 @@ module SystemUpdateModule; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/modules/TangleVizModule.affine b/src/modules/TangleVizModule.affine index 2b13896c..7fe0e0b4 100644 --- a/src/modules/TangleVizModule.affine +++ b/src/modules/TangleVizModule.affine @@ -4,4 +4,4 @@ module TangleVizModule; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/modules/TsdmModule.affine b/src/modules/TsdmModule.affine index 81d50ee8..4115431e 100644 --- a/src/modules/TsdmModule.affine +++ b/src/modules/TsdmModule.affine @@ -4,4 +4,4 @@ module TsdmModule; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/modules/TypeLLService.affine b/src/modules/TypeLLService.affine index 020dcc46..2f8a0747 100644 --- a/src/modules/TypeLLService.affine +++ b/src/modules/TypeLLService.affine @@ -4,4 +4,4 @@ module TypeLLService; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/modules/VerificationDashboardModule.affine b/src/modules/VerificationDashboardModule.affine index d82d9a04..2c1872a3 100644 --- a/src/modules/VerificationDashboardModule.affine +++ b/src/modules/VerificationDashboardModule.affine @@ -4,4 +4,4 @@ module VerificationDashboardModule; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/A2mlMsg.affine b/src/msg/A2mlMsg.affine index 337f019f..5a311b79 100644 --- a/src/msg/A2mlMsg.affine +++ b/src/msg/A2mlMsg.affine @@ -4,4 +4,4 @@ module A2mlMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/AccessibilityMsg.affine b/src/msg/AccessibilityMsg.affine index ebaa0453..b12e218c 100644 --- a/src/msg/AccessibilityMsg.affine +++ b/src/msg/AccessibilityMsg.affine @@ -4,4 +4,4 @@ module AccessibilityMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/AerieMsg.affine b/src/msg/AerieMsg.affine index d426bc30..aea775c6 100644 --- a/src/msg/AerieMsg.affine +++ b/src/msg/AerieMsg.affine @@ -4,4 +4,4 @@ module AerieMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/AgenticBridgeMsg.affine b/src/msg/AgenticBridgeMsg.affine index fe867b2e..fca164a1 100644 --- a/src/msg/AgenticBridgeMsg.affine +++ b/src/msg/AgenticBridgeMsg.affine @@ -4,4 +4,4 @@ module AgenticBridgeMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/AiMsg.affine b/src/msg/AiMsg.affine index 0482761d..b10c4aa3 100644 --- a/src/msg/AiMsg.affine +++ b/src/msg/AiMsg.affine @@ -4,4 +4,4 @@ module AiMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/AmbientOpsMsg.affine b/src/msg/AmbientOpsMsg.affine index 7d592062..30bb19e9 100644 --- a/src/msg/AmbientOpsMsg.affine +++ b/src/msg/AmbientOpsMsg.affine @@ -4,4 +4,4 @@ module AmbientOpsMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/AntiCrashMsg.affine b/src/msg/AntiCrashMsg.affine index deaf92b6..c29d33ca 100644 --- a/src/msg/AntiCrashMsg.affine +++ b/src/msg/AntiCrashMsg.affine @@ -4,4 +4,4 @@ module AntiCrashMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/ArchitectModeMsg.affine b/src/msg/ArchitectModeMsg.affine index 385f8ec3..ffddb0e6 100644 --- a/src/msg/ArchitectModeMsg.affine +++ b/src/msg/ArchitectModeMsg.affine @@ -4,4 +4,4 @@ module ArchitectModeMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/AssetManagerMsg.affine b/src/msg/AssetManagerMsg.affine index bbc983b4..fce5c361 100644 --- a/src/msg/AssetManagerMsg.affine +++ b/src/msg/AssetManagerMsg.affine @@ -4,4 +4,4 @@ module AssetManagerMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/AttributionLicenseMsg.affine b/src/msg/AttributionLicenseMsg.affine index 76c5acb3..3f676978 100644 --- a/src/msg/AttributionLicenseMsg.affine +++ b/src/msg/AttributionLicenseMsg.affine @@ -4,4 +4,4 @@ module AttributionLicenseMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/AutomationBridgeMsg.affine b/src/msg/AutomationBridgeMsg.affine index 82094ff9..f668a4cf 100644 --- a/src/msg/AutomationBridgeMsg.affine +++ b/src/msg/AutomationBridgeMsg.affine @@ -4,4 +4,4 @@ module AutomationBridgeMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/AutomationRouterMsg.affine b/src/msg/AutomationRouterMsg.affine index e5645b6f..8158c9ba 100644 --- a/src/msg/AutomationRouterMsg.affine +++ b/src/msg/AutomationRouterMsg.affine @@ -4,4 +4,4 @@ module AutomationRouterMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/BalanceAnalyserMsg.affine b/src/msg/BalanceAnalyserMsg.affine index b616c9e9..bd4972a2 100644 --- a/src/msg/BalanceAnalyserMsg.affine +++ b/src/msg/BalanceAnalyserMsg.affine @@ -4,4 +4,4 @@ module BalanceAnalyserMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/BetaFeedbackHubMsg.affine b/src/msg/BetaFeedbackHubMsg.affine index d42e8c83..9c4e3613 100644 --- a/src/msg/BetaFeedbackHubMsg.affine +++ b/src/msg/BetaFeedbackHubMsg.affine @@ -4,4 +4,4 @@ module BetaFeedbackHubMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/BojMsg.affine b/src/msg/BojMsg.affine index 98510876..67572d4d 100644 --- a/src/msg/BojMsg.affine +++ b/src/msg/BojMsg.affine @@ -4,4 +4,4 @@ module BojMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/BuildDashboardMsg.affine b/src/msg/BuildDashboardMsg.affine index 7c492260..682ec2b4 100644 --- a/src/msg/BuildDashboardMsg.affine +++ b/src/msg/BuildDashboardMsg.affine @@ -4,4 +4,4 @@ module BuildDashboardMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/CaptureMsg.affine b/src/msg/CaptureMsg.affine index 88aca7f9..80ad1935 100644 --- a/src/msg/CaptureMsg.affine +++ b/src/msg/CaptureMsg.affine @@ -4,4 +4,4 @@ module CaptureMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/CladeBrowserMsg.affine b/src/msg/CladeBrowserMsg.affine index 49bf21c0..561ca430 100644 --- a/src/msg/CladeBrowserMsg.affine +++ b/src/msg/CladeBrowserMsg.affine @@ -4,4 +4,4 @@ module CladeBrowserMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/CloudguardMsg.affine b/src/msg/CloudguardMsg.affine index 749039ba..35003f73 100644 --- a/src/msg/CloudguardMsg.affine +++ b/src/msg/CloudguardMsg.affine @@ -4,4 +4,4 @@ module CloudguardMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/CodeReviewMsg.affine b/src/msg/CodeReviewMsg.affine index 24298704..0dfaed8a 100644 --- a/src/msg/CodeReviewMsg.affine +++ b/src/msg/CodeReviewMsg.affine @@ -4,4 +4,4 @@ module CodeReviewMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/CompatibilityMatrixMsg.affine b/src/msg/CompatibilityMatrixMsg.affine index 0b0284ad..a3c198fd 100644 --- a/src/msg/CompatibilityMatrixMsg.affine +++ b/src/msg/CompatibilityMatrixMsg.affine @@ -4,4 +4,4 @@ module CompatibilityMatrixMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/ContractileCompletenessMsg.affine b/src/msg/ContractileCompletenessMsg.affine index 79b232dd..a4335c5d 100644 --- a/src/msg/ContractileCompletenessMsg.affine +++ b/src/msg/ContractileCompletenessMsg.affine @@ -4,4 +4,4 @@ module ContractileCompletenessMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/CoprocessorsMsg.affine b/src/msg/CoprocessorsMsg.affine index 0d73cf66..b4dccebb 100644 --- a/src/msg/CoprocessorsMsg.affine +++ b/src/msg/CoprocessorsMsg.affine @@ -4,4 +4,4 @@ module CoprocessorsMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/DatabaseBridgeMsg.affine b/src/msg/DatabaseBridgeMsg.affine index 9913904a..d668a86e 100644 --- a/src/msg/DatabaseBridgeMsg.affine +++ b/src/msg/DatabaseBridgeMsg.affine @@ -4,4 +4,4 @@ module DatabaseBridgeMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/DatabasesMsg.affine b/src/msg/DatabasesMsg.affine index 22b1d5e2..13c74c17 100644 --- a/src/msg/DatabasesMsg.affine +++ b/src/msg/DatabasesMsg.affine @@ -4,4 +4,4 @@ module DatabasesMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/DebuggingWorkbenchMsg.affine b/src/msg/DebuggingWorkbenchMsg.affine index 3154264d..6046f983 100644 --- a/src/msg/DebuggingWorkbenchMsg.affine +++ b/src/msg/DebuggingWorkbenchMsg.affine @@ -4,4 +4,4 @@ module DebuggingWorkbenchMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/DeviceNetworkDesignerMsg.affine b/src/msg/DeviceNetworkDesignerMsg.affine index 17b40590..04ba98df 100644 --- a/src/msg/DeviceNetworkDesignerMsg.affine +++ b/src/msg/DeviceNetworkDesignerMsg.affine @@ -4,4 +4,4 @@ module DeviceNetworkDesignerMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/DlcWorkshopMsg.affine b/src/msg/DlcWorkshopMsg.affine index 7792db9b..b7f7debc 100644 --- a/src/msg/DlcWorkshopMsg.affine +++ b/src/msg/DlcWorkshopMsg.affine @@ -4,4 +4,4 @@ module DlcWorkshopMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/EchidnaMsg.affine b/src/msg/EchidnaMsg.affine index 9904343a..2f30fc51 100644 --- a/src/msg/EchidnaMsg.affine +++ b/src/msg/EchidnaMsg.affine @@ -4,4 +4,4 @@ module EchidnaMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/EditorBridgeMsg.affine b/src/msg/EditorBridgeMsg.affine index 38135bda..6093e6e5 100644 --- a/src/msg/EditorBridgeMsg.affine +++ b/src/msg/EditorBridgeMsg.affine @@ -4,4 +4,4 @@ module EditorBridgeMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/EnsaidConfigMsg.affine b/src/msg/EnsaidConfigMsg.affine index e3797f85..b4d61e2b 100644 --- a/src/msg/EnsaidConfigMsg.affine +++ b/src/msg/EnsaidConfigMsg.affine @@ -4,4 +4,4 @@ module EnsaidConfigMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/EvangeliserMsg.affine b/src/msg/EvangeliserMsg.affine index e9816a0f..ee1abd6e 100644 --- a/src/msg/EvangeliserMsg.affine +++ b/src/msg/EvangeliserMsg.affine @@ -4,4 +4,4 @@ module EvangeliserMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/ExploratoryWorkbenchMsg.affine b/src/msg/ExploratoryWorkbenchMsg.affine index d0915493..483cb4b9 100644 --- a/src/msg/ExploratoryWorkbenchMsg.affine +++ b/src/msg/ExploratoryWorkbenchMsg.affine @@ -4,4 +4,4 @@ module ExploratoryWorkbenchMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/FarmMsg.affine b/src/msg/FarmMsg.affine index 963ef71c..2249ad4a 100644 --- a/src/msg/FarmMsg.affine +++ b/src/msg/FarmMsg.affine @@ -4,4 +4,4 @@ module FarmMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/FeedbackMsg.affine b/src/msg/FeedbackMsg.affine index 72c02e0f..843945de 100644 --- a/src/msg/FeedbackMsg.affine +++ b/src/msg/FeedbackMsg.affine @@ -4,4 +4,4 @@ module FeedbackMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/FeedbackRoutingMsg.affine b/src/msg/FeedbackRoutingMsg.affine index 5d4e63b3..6aa00325 100644 --- a/src/msg/FeedbackRoutingMsg.affine +++ b/src/msg/FeedbackRoutingMsg.affine @@ -4,4 +4,4 @@ module FeedbackRoutingMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/FleetMsg.affine b/src/msg/FleetMsg.affine index 47eafed8..f19a3d54 100644 --- a/src/msg/FleetMsg.affine +++ b/src/msg/FleetMsg.affine @@ -4,4 +4,4 @@ module FleetMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/FloorRaiseMsg.affine b/src/msg/FloorRaiseMsg.affine index 8e9ca25e..b59e16e4 100644 --- a/src/msg/FloorRaiseMsg.affine +++ b/src/msg/FloorRaiseMsg.affine @@ -4,4 +4,4 @@ module FloorRaiseMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/FocusDimmingMsg.affine b/src/msg/FocusDimmingMsg.affine index aa118bda..af06436e 100644 --- a/src/msg/FocusDimmingMsg.affine +++ b/src/msg/FocusDimmingMsg.affine @@ -4,4 +4,4 @@ module FocusDimmingMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/FunctionalTesterMsg.affine b/src/msg/FunctionalTesterMsg.affine index e81d4413..4f9c688b 100644 --- a/src/msg/FunctionalTesterMsg.affine +++ b/src/msg/FunctionalTesterMsg.affine @@ -4,4 +4,4 @@ module FunctionalTesterMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/GamePreviewMsg.affine b/src/msg/GamePreviewMsg.affine index b466803c..9669bc55 100644 --- a/src/msg/GamePreviewMsg.affine +++ b/src/msg/GamePreviewMsg.affine @@ -4,4 +4,4 @@ module GamePreviewMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/GeneratorModeMsg.affine b/src/msg/GeneratorModeMsg.affine index 4d1a8c82..91da288c 100644 --- a/src/msg/GeneratorModeMsg.affine +++ b/src/msg/GeneratorModeMsg.affine @@ -4,4 +4,4 @@ module GeneratorModeMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/GuardAiTunerMsg.affine b/src/msg/GuardAiTunerMsg.affine index 85aa86e3..dc1cecf5 100644 --- a/src/msg/GuardAiTunerMsg.affine +++ b/src/msg/GuardAiTunerMsg.affine @@ -4,4 +4,4 @@ module GuardAiTunerMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/HelpMsg.affine b/src/msg/HelpMsg.affine index 4fca42f6..c8450ab8 100644 --- a/src/msg/HelpMsg.affine +++ b/src/msg/HelpMsg.affine @@ -4,4 +4,4 @@ module HelpMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/HypatiaMsg.affine b/src/msg/HypatiaMsg.affine index 1d1d2032..b4a29742 100644 --- a/src/msg/HypatiaMsg.affine +++ b/src/msg/HypatiaMsg.affine @@ -4,4 +4,4 @@ module HypatiaMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/IdentityMsg.affine b/src/msg/IdentityMsg.affine index 4365fa7d..11be91f6 100644 --- a/src/msg/IdentityMsg.affine +++ b/src/msg/IdentityMsg.affine @@ -4,4 +4,4 @@ module IdentityMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/InterfacesMsg.affine b/src/msg/InterfacesMsg.affine index ca36667a..e4205f93 100644 --- a/src/msg/InterfacesMsg.affine +++ b/src/msg/InterfacesMsg.affine @@ -4,4 +4,4 @@ module InterfacesMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/K9Msg.affine b/src/msg/K9Msg.affine index 4e99c7d8..60926ebc 100644 --- a/src/msg/K9Msg.affine +++ b/src/msg/K9Msg.affine @@ -4,4 +4,4 @@ module K9Msg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/KeybindingsMsg.affine b/src/msg/KeybindingsMsg.affine index 0c994fb2..1fdc1d9e 100644 --- a/src/msg/KeybindingsMsg.affine +++ b/src/msg/KeybindingsMsg.affine @@ -4,4 +4,4 @@ module KeybindingsMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/LanguageForgeMsg.affine b/src/msg/LanguageForgeMsg.affine index 2ccf5fd2..f2e04ad9 100644 --- a/src/msg/LanguageForgeMsg.affine +++ b/src/msg/LanguageForgeMsg.affine @@ -4,4 +4,4 @@ module LanguageForgeMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/LevelArchitectMsg.affine b/src/msg/LevelArchitectMsg.affine index d252e2cf..fe9bb928 100644 --- a/src/msg/LevelArchitectMsg.affine +++ b/src/msg/LevelArchitectMsg.affine @@ -4,4 +4,4 @@ module LevelArchitectMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/LoadTesterMsg.affine b/src/msg/LoadTesterMsg.affine index 906e738b..483d151b 100644 --- a/src/msg/LoadTesterMsg.affine +++ b/src/msg/LoadTesterMsg.affine @@ -4,4 +4,4 @@ module LoadTesterMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/ManifestCoverageMsg.affine b/src/msg/ManifestCoverageMsg.affine index 16b14c93..4ae55b2d 100644 --- a/src/msg/ManifestCoverageMsg.affine +++ b/src/msg/ManifestCoverageMsg.affine @@ -4,4 +4,4 @@ module ManifestCoverageMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/MassPanicMsg.affine b/src/msg/MassPanicMsg.affine index 9f459e95..cd9cbd58 100644 --- a/src/msg/MassPanicMsg.affine +++ b/src/msg/MassPanicMsg.affine @@ -4,4 +4,4 @@ module MassPanicMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/MenuBarMsg.affine b/src/msg/MenuBarMsg.affine index 7c339557..7d94ea54 100644 --- a/src/msg/MenuBarMsg.affine +++ b/src/msg/MenuBarMsg.affine @@ -4,4 +4,4 @@ module MenuBarMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/MergeCoordinatorMsg.affine b/src/msg/MergeCoordinatorMsg.affine index 66e57256..3ed5a13c 100644 --- a/src/msg/MergeCoordinatorMsg.affine +++ b/src/msg/MergeCoordinatorMsg.affine @@ -4,4 +4,4 @@ module MergeCoordinatorMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/MigrationMsg.affine b/src/msg/MigrationMsg.affine index 31efd291..6f15d5be 100644 --- a/src/msg/MigrationMsg.affine +++ b/src/msg/MigrationMsg.affine @@ -4,4 +4,4 @@ module MigrationMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/MinterMsg.affine b/src/msg/MinterMsg.affine index 1ddb982c..a193412c 100644 --- a/src/msg/MinterMsg.affine +++ b/src/msg/MinterMsg.affine @@ -4,4 +4,4 @@ module MinterMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/MultiplayerMonitorMsg.affine b/src/msg/MultiplayerMonitorMsg.affine index 303de73c..51be94e7 100644 --- a/src/msg/MultiplayerMonitorMsg.affine +++ b/src/msg/MultiplayerMonitorMsg.affine @@ -4,4 +4,4 @@ module MultiplayerMonitorMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/MyLangMsg.affine b/src/msg/MyLangMsg.affine index 86d26f9d..6c38ef4b 100644 --- a/src/msg/MyLangMsg.affine +++ b/src/msg/MyLangMsg.affine @@ -4,4 +4,4 @@ module MyLangMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/NetworkTopologyMsg.affine b/src/msg/NetworkTopologyMsg.affine index 4f73a760..8f4b643b 100644 --- a/src/msg/NetworkTopologyMsg.affine +++ b/src/msg/NetworkTopologyMsg.affine @@ -4,4 +4,4 @@ module NetworkTopologyMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/NeurosymBridgeMsg.affine b/src/msg/NeurosymBridgeMsg.affine index a294b1f7..aee9ccec 100644 --- a/src/msg/NeurosymBridgeMsg.affine +++ b/src/msg/NeurosymBridgeMsg.affine @@ -4,4 +4,4 @@ module NeurosymBridgeMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/ObservabilityMsg.affine b/src/msg/ObservabilityMsg.affine index e516f485..40ba58ae 100644 --- a/src/msg/ObservabilityMsg.affine +++ b/src/msg/ObservabilityMsg.affine @@ -4,4 +4,4 @@ module ObservabilityMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/ObservatoryMsg.affine b/src/msg/ObservatoryMsg.affine index 85943b13..1e94bc02 100644 --- a/src/msg/ObservatoryMsg.affine +++ b/src/msg/ObservatoryMsg.affine @@ -4,4 +4,4 @@ module ObservatoryMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/Oo7Msg.affine b/src/msg/Oo7Msg.affine index 1ac6edce..65e71d8b 100644 --- a/src/msg/Oo7Msg.affine +++ b/src/msg/Oo7Msg.affine @@ -4,4 +4,4 @@ module Oo7Msg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/OrbitalMsg.affine b/src/msg/OrbitalMsg.affine index 8ea1b117..686f9ebf 100644 --- a/src/msg/OrbitalMsg.affine +++ b/src/msg/OrbitalMsg.affine @@ -4,4 +4,4 @@ module OrbitalMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/PaneAMsg.affine b/src/msg/PaneAMsg.affine index 29a07b16..2753dcfe 100644 --- a/src/msg/PaneAMsg.affine +++ b/src/msg/PaneAMsg.affine @@ -4,4 +4,4 @@ module PaneAMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/PaneLMsg.affine b/src/msg/PaneLMsg.affine index 7c2097be..6a0b624c 100644 --- a/src/msg/PaneLMsg.affine +++ b/src/msg/PaneLMsg.affine @@ -4,4 +4,4 @@ module PaneLMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/PaneNMsg.affine b/src/msg/PaneNMsg.affine index 90d4bca0..73543fb9 100644 --- a/src/msg/PaneNMsg.affine +++ b/src/msg/PaneNMsg.affine @@ -4,4 +4,4 @@ module PaneNMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/PaneWMsg.affine b/src/msg/PaneWMsg.affine index 59f66604..21d64f51 100644 --- a/src/msg/PaneWMsg.affine +++ b/src/msg/PaneWMsg.affine @@ -4,4 +4,4 @@ module PaneWMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/PanelBusMsg.affine b/src/msg/PanelBusMsg.affine index be5ccb84..c0f69bcd 100644 --- a/src/msg/PanelBusMsg.affine +++ b/src/msg/PanelBusMsg.affine @@ -4,4 +4,4 @@ module PanelBusMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/PanelSwitcherMsg.affine b/src/msg/PanelSwitcherMsg.affine index 16930f3b..7aa98310 100644 --- a/src/msg/PanelSwitcherMsg.affine +++ b/src/msg/PanelSwitcherMsg.affine @@ -4,4 +4,4 @@ module PanelSwitcherMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/PanicAttackMsg.affine b/src/msg/PanicAttackMsg.affine index 17b52f04..8aa7f00d 100644 --- a/src/msg/PanicAttackMsg.affine +++ b/src/msg/PanicAttackMsg.affine @@ -4,4 +4,4 @@ module PanicAttackMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/PatternDiagMsg.affine b/src/msg/PatternDiagMsg.affine index 8bf39d23..c60675c6 100644 --- a/src/msg/PatternDiagMsg.affine +++ b/src/msg/PatternDiagMsg.affine @@ -4,4 +4,4 @@ module PatternDiagMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/PerformanceProfilerMsg.affine b/src/msg/PerformanceProfilerMsg.affine index 739684b8..1eb682d5 100644 --- a/src/msg/PerformanceProfilerMsg.affine +++ b/src/msg/PerformanceProfilerMsg.affine @@ -4,4 +4,4 @@ module PerformanceProfilerMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/PlaygroundsMsg.affine b/src/msg/PlaygroundsMsg.affine index 78050cdf..cd47e433 100644 --- a/src/msg/PlaygroundsMsg.affine +++ b/src/msg/PlaygroundsMsg.affine @@ -4,4 +4,4 @@ module PlaygroundsMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/PlaytestRecorderMsg.affine b/src/msg/PlaytestRecorderMsg.affine index b4cbcefd..6cc1930a 100644 --- a/src/msg/PlaytestRecorderMsg.affine +++ b/src/msg/PlaytestRecorderMsg.affine @@ -4,4 +4,4 @@ module PlaytestRecorderMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/PlazaMsg.affine b/src/msg/PlazaMsg.affine index 5bb67ffe..89448bca 100644 --- a/src/msg/PlazaMsg.affine +++ b/src/msg/PlazaMsg.affine @@ -4,4 +4,4 @@ module PlazaMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/ProofsBridgeMsg.affine b/src/msg/ProofsBridgeMsg.affine index bf5b9efe..41f78495 100644 --- a/src/msg/ProofsBridgeMsg.affine +++ b/src/msg/ProofsBridgeMsg.affine @@ -4,4 +4,4 @@ module ProofsBridgeMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/ProtocolBridgeMsg.affine b/src/msg/ProtocolBridgeMsg.affine index 6cc8733b..4d4db673 100644 --- a/src/msg/ProtocolBridgeMsg.affine +++ b/src/msg/ProtocolBridgeMsg.affine @@ -4,4 +4,4 @@ module ProtocolBridgeMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/ProtocolSquisherMsg.affine b/src/msg/ProtocolSquisherMsg.affine index 421c2053..acad5d26 100644 --- a/src/msg/ProtocolSquisherMsg.affine +++ b/src/msg/ProtocolSquisherMsg.affine @@ -4,4 +4,4 @@ module ProtocolSquisherMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/ProvenAdoptionMsg.affine b/src/msg/ProvenAdoptionMsg.affine index 3a6511eb..b621a9fc 100644 --- a/src/msg/ProvenAdoptionMsg.affine +++ b/src/msg/ProvenAdoptionMsg.affine @@ -4,4 +4,4 @@ module ProvenAdoptionMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/ProvenanceMsg.affine b/src/msg/ProvenanceMsg.affine index 07f32d70..40c5f62b 100644 --- a/src/msg/ProvenanceMsg.affine +++ b/src/msg/ProvenanceMsg.affine @@ -4,4 +4,4 @@ module ProvenanceMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/ProvisionerMsg.affine b/src/msg/ProvisionerMsg.affine index dd4eff52..8f372f4f 100644 --- a/src/msg/ProvisionerMsg.affine +++ b/src/msg/ProvisionerMsg.affine @@ -4,4 +4,4 @@ module ProvisionerMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/RegressionGuardMsg.affine b/src/msg/RegressionGuardMsg.affine index 98913087..a5b4a3db 100644 --- a/src/msg/RegressionGuardMsg.affine +++ b/src/msg/RegressionGuardMsg.affine @@ -4,4 +4,4 @@ module RegressionGuardMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/ReleaseManagerMsg.affine b/src/msg/ReleaseManagerMsg.affine index 309ec8c1..dff75eec 100644 --- a/src/msg/ReleaseManagerMsg.affine +++ b/src/msg/ReleaseManagerMsg.affine @@ -4,4 +4,4 @@ module ReleaseManagerMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/RepoLoaderMsg.affine b/src/msg/RepoLoaderMsg.affine index 2712443c..4b542c45 100644 --- a/src/msg/RepoLoaderMsg.affine +++ b/src/msg/RepoLoaderMsg.affine @@ -4,4 +4,4 @@ module RepoLoaderMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/ReposystemMsg.affine b/src/msg/ReposystemMsg.affine index 89a426d6..6211d45c 100644 --- a/src/msg/ReposystemMsg.affine +++ b/src/msg/ReposystemMsg.affine @@ -4,4 +4,4 @@ module ReposystemMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/ScriptGistMsg.affine b/src/msg/ScriptGistMsg.affine index 6dbd6e37..9619abba 100644 --- a/src/msg/ScriptGistMsg.affine +++ b/src/msg/ScriptGistMsg.affine @@ -4,4 +4,4 @@ module ScriptGistMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/ScriptingBridgeMsg.affine b/src/msg/ScriptingBridgeMsg.affine index f484e50d..adaa0d51 100644 --- a/src/msg/ScriptingBridgeMsg.affine +++ b/src/msg/ScriptingBridgeMsg.affine @@ -4,4 +4,4 @@ module ScriptingBridgeMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/SecurityMsg.affine b/src/msg/SecurityMsg.affine index 52d414bf..7bd6dd4c 100644 --- a/src/msg/SecurityMsg.affine +++ b/src/msg/SecurityMsg.affine @@ -4,4 +4,4 @@ module SecurityMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/ServiceMsg.affine b/src/msg/ServiceMsg.affine index d4030030..1de0343e 100644 --- a/src/msg/ServiceMsg.affine +++ b/src/msg/ServiceMsg.affine @@ -4,4 +4,4 @@ module ServiceMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/SettingsMsg.affine b/src/msg/SettingsMsg.affine index 2a2d6861..370265c0 100644 --- a/src/msg/SettingsMsg.affine +++ b/src/msg/SettingsMsg.affine @@ -4,4 +4,4 @@ module SettingsMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/SoakMonitorMsg.affine b/src/msg/SoakMonitorMsg.affine index e9eb3623..4a8ea1d2 100644 --- a/src/msg/SoakMonitorMsg.affine +++ b/src/msg/SoakMonitorMsg.affine @@ -4,4 +4,4 @@ module SoakMonitorMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/SpecBrowserMsg.affine b/src/msg/SpecBrowserMsg.affine index 20d3a965..18446800 100644 --- a/src/msg/SpecBrowserMsg.affine +++ b/src/msg/SpecBrowserMsg.affine @@ -4,4 +4,4 @@ module SpecBrowserMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/StapelnMsg.affine b/src/msg/StapelnMsg.affine index d28c1bc3..2454e54d 100644 --- a/src/msg/StapelnMsg.affine +++ b/src/msg/StapelnMsg.affine @@ -4,4 +4,4 @@ module StapelnMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/SystemUpdateMsg.affine b/src/msg/SystemUpdateMsg.affine index 43a4694f..f65069a2 100644 --- a/src/msg/SystemUpdateMsg.affine +++ b/src/msg/SystemUpdateMsg.affine @@ -4,4 +4,4 @@ module SystemUpdateMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/TangleVizMsg.affine b/src/msg/TangleVizMsg.affine index 50cb8f2d..d0a6659d 100644 --- a/src/msg/TangleVizMsg.affine +++ b/src/msg/TangleVizMsg.affine @@ -4,4 +4,4 @@ module TangleVizMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/TeamDashboardMsg.affine b/src/msg/TeamDashboardMsg.affine index d963c4e7..f564196d 100644 --- a/src/msg/TeamDashboardMsg.affine +++ b/src/msg/TeamDashboardMsg.affine @@ -4,4 +4,4 @@ module TeamDashboardMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/TentaclesMsg.affine b/src/msg/TentaclesMsg.affine index 17d88bcc..a40fd359 100644 --- a/src/msg/TentaclesMsg.affine +++ b/src/msg/TentaclesMsg.affine @@ -4,4 +4,4 @@ module TentaclesMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/TilingMsg.affine b/src/msg/TilingMsg.affine index 954b3f57..c6531d95 100644 --- a/src/msg/TilingMsg.affine +++ b/src/msg/TilingMsg.affine @@ -4,4 +4,4 @@ module TilingMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/TimelineMsg.affine b/src/msg/TimelineMsg.affine index 63cbbea9..134f3cdd 100644 --- a/src/msg/TimelineMsg.affine +++ b/src/msg/TimelineMsg.affine @@ -4,4 +4,4 @@ module TimelineMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/TsdmMsg.affine b/src/msg/TsdmMsg.affine index 893121fa..b324a2b5 100644 --- a/src/msg/TsdmMsg.affine +++ b/src/msg/TsdmMsg.affine @@ -4,4 +4,4 @@ module TsdmMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/TypellMsg.affine b/src/msg/TypellMsg.affine index 6edaff48..badaf569 100644 --- a/src/msg/TypellMsg.affine +++ b/src/msg/TypellMsg.affine @@ -4,4 +4,4 @@ module TypellMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/TypingBridgeMsg.affine b/src/msg/TypingBridgeMsg.affine index e3538f74..de669f1e 100644 --- a/src/msg/TypingBridgeMsg.affine +++ b/src/msg/TypingBridgeMsg.affine @@ -4,4 +4,4 @@ module TypingBridgeMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/UmsMsg.affine b/src/msg/UmsMsg.affine index 510611fb..eca24aaf 100644 --- a/src/msg/UmsMsg.affine +++ b/src/msg/UmsMsg.affine @@ -4,4 +4,4 @@ module UmsMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/UnitTestRunnerMsg.affine b/src/msg/UnitTestRunnerMsg.affine index 88583a5d..97348914 100644 --- a/src/msg/UnitTestRunnerMsg.affine +++ b/src/msg/UnitTestRunnerMsg.affine @@ -4,4 +4,4 @@ module UnitTestRunnerMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/VabMsg.affine b/src/msg/VabMsg.affine index de37cf29..921ddb39 100644 --- a/src/msg/VabMsg.affine +++ b/src/msg/VabMsg.affine @@ -4,4 +4,4 @@ module VabMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/ValenceShellMsg.affine b/src/msg/ValenceShellMsg.affine index 4884cc04..b79491d5 100644 --- a/src/msg/ValenceShellMsg.affine +++ b/src/msg/ValenceShellMsg.affine @@ -4,4 +4,4 @@ module ValenceShellMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/VeriSimDBMsg.affine b/src/msg/VeriSimDBMsg.affine index a9d1b893..7708b4a7 100644 --- a/src/msg/VeriSimDBMsg.affine +++ b/src/msg/VeriSimDBMsg.affine @@ -4,4 +4,4 @@ module VeriSimDBMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/VerificationDashboardMsg.affine b/src/msg/VerificationDashboardMsg.affine index afc50dac..6b96d478 100644 --- a/src/msg/VerificationDashboardMsg.affine +++ b/src/msg/VerificationDashboardMsg.affine @@ -4,4 +4,4 @@ module VerificationDashboardMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/VerisimdbFeedsMsg.affine b/src/msg/VerisimdbFeedsMsg.affine index 4acb2a06..7bc3ad1e 100644 --- a/src/msg/VerisimdbFeedsMsg.affine +++ b/src/msg/VerisimdbFeedsMsg.affine @@ -4,4 +4,4 @@ module VerisimdbFeedsMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/VexometerFrictionMsg.affine b/src/msg/VexometerFrictionMsg.affine index d642605b..276edf16 100644 --- a/src/msg/VexometerFrictionMsg.affine +++ b/src/msg/VexometerFrictionMsg.affine @@ -4,4 +4,4 @@ module VexometerFrictionMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/VexometerMsg.affine b/src/msg/VexometerMsg.affine index 87af5d0d..ddef5473 100644 --- a/src/msg/VexometerMsg.affine +++ b/src/msg/VexometerMsg.affine @@ -4,4 +4,4 @@ module VexometerMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/VideoCoordinationMsg.affine b/src/msg/VideoCoordinationMsg.affine index 4fab37a7..cd594ef5 100644 --- a/src/msg/VideoCoordinationMsg.affine +++ b/src/msg/VideoCoordinationMsg.affine @@ -4,4 +4,4 @@ module VideoCoordinationMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/ViewMsg.affine b/src/msg/ViewMsg.affine index ee45689f..2800a0a0 100644 --- a/src/msg/ViewMsg.affine +++ b/src/msg/ViewMsg.affine @@ -4,4 +4,4 @@ module ViewMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/VmInspectorMsg.affine b/src/msg/VmInspectorMsg.affine index ff7c8a28..28393162 100644 --- a/src/msg/VmInspectorMsg.affine +++ b/src/msg/VmInspectorMsg.affine @@ -4,4 +4,4 @@ module VmInspectorMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/VoiceTagMsg.affine b/src/msg/VoiceTagMsg.affine index 675710bc..1e30ffe3 100644 --- a/src/msg/VoiceTagMsg.affine +++ b/src/msg/VoiceTagMsg.affine @@ -4,4 +4,4 @@ module VoiceTagMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/WatcherMsg.affine b/src/msg/WatcherMsg.affine index 68a51589..1a18377b 100644 --- a/src/msg/WatcherMsg.affine +++ b/src/msg/WatcherMsg.affine @@ -4,4 +4,4 @@ module WatcherMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/WiringInspectorMsg.affine b/src/msg/WiringInspectorMsg.affine index 9fb810a8..78ef54ce 100644 --- a/src/msg/WiringInspectorMsg.affine +++ b/src/msg/WiringInspectorMsg.affine @@ -4,4 +4,4 @@ module WiringInspectorMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/WizardMsg.affine b/src/msg/WizardMsg.affine index ef5fc2d6..a8b15bab 100644 --- a/src/msg/WizardMsg.affine +++ b/src/msg/WizardMsg.affine @@ -4,4 +4,4 @@ module WizardMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/msg/WorkspaceMsg.affine b/src/msg/WorkspaceMsg.affine index 26ddb7be..227783f8 100644 --- a/src/msg/WorkspaceMsg.affine +++ b/src/msg/WorkspaceMsg.affine @@ -4,4 +4,4 @@ module WorkspaceMsg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/subscriptions/GossamerEvents.affine b/src/subscriptions/GossamerEvents.affine index 37d3ce8d..942ffe76 100644 --- a/src/subscriptions/GossamerEvents.affine +++ b/src/subscriptions/GossamerEvents.affine @@ -4,4 +4,4 @@ module GossamerEvents; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/subscriptions/KeyboardFixed.affine b/src/subscriptions/KeyboardFixed.affine index cfc73c94..a60ea371 100644 --- a/src/subscriptions/KeyboardFixed.affine +++ b/src/subscriptions/KeyboardFixed.affine @@ -4,4 +4,4 @@ module KeyboardFixed; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/tea/Tea.affine b/src/tea/Tea.affine index 83b63d34..39a9e825 100644 --- a/src/tea/Tea.affine +++ b/src/tea/Tea.affine @@ -4,4 +4,4 @@ module Tea; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/tea/Tea_Animationframe.affine b/src/tea/Tea_Animationframe.affine index a1e313a7..82df23fa 100644 --- a/src/tea/Tea_Animationframe.affine +++ b/src/tea/Tea_Animationframe.affine @@ -4,4 +4,4 @@ module Tea_Animationframe; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/tea/Tea_App.affine b/src/tea/Tea_App.affine index 292292cb..115490fa 100644 --- a/src/tea/Tea_App.affine +++ b/src/tea/Tea_App.affine @@ -4,4 +4,4 @@ module Tea_App; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/tea/Tea_Cmd.affine b/src/tea/Tea_Cmd.affine index 5c866018..5204e44b 100644 --- a/src/tea/Tea_Cmd.affine +++ b/src/tea/Tea_Cmd.affine @@ -4,4 +4,4 @@ module Tea_Cmd; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/tea/Tea_Debug.affine b/src/tea/Tea_Debug.affine index 68ec57b7..9e9d450b 100644 --- a/src/tea/Tea_Debug.affine +++ b/src/tea/Tea_Debug.affine @@ -4,4 +4,4 @@ module Tea_Debug; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/tea/Tea_Html.affine b/src/tea/Tea_Html.affine index dab78f9f..ec4b4e84 100644 --- a/src/tea/Tea_Html.affine +++ b/src/tea/Tea_Html.affine @@ -4,4 +4,4 @@ module Tea_Html; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/tea/Tea_Http.affine b/src/tea/Tea_Http.affine index 8f5a5864..847194ab 100644 --- a/src/tea/Tea_Http.affine +++ b/src/tea/Tea_Http.affine @@ -4,4 +4,4 @@ module Tea_Http; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/tea/Tea_Json.affine b/src/tea/Tea_Json.affine index 8fd9c1b1..b44e2ce3 100644 --- a/src/tea/Tea_Json.affine +++ b/src/tea/Tea_Json.affine @@ -4,4 +4,4 @@ module Tea_Json; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/tea/Tea_Keyboard.affine b/src/tea/Tea_Keyboard.affine index d958c9ba..10a26dbd 100644 --- a/src/tea/Tea_Keyboard.affine +++ b/src/tea/Tea_Keyboard.affine @@ -4,4 +4,4 @@ module Tea_Keyboard; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/tea/Tea_Mouse.affine b/src/tea/Tea_Mouse.affine index 8b39e566..17e3a897 100644 --- a/src/tea/Tea_Mouse.affine +++ b/src/tea/Tea_Mouse.affine @@ -4,4 +4,4 @@ module Tea_Mouse; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/tea/Tea_Render.affine b/src/tea/Tea_Render.affine index aa9ef3da..cda57690 100644 --- a/src/tea/Tea_Render.affine +++ b/src/tea/Tea_Render.affine @@ -4,4 +4,4 @@ module Tea_Render; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/tea/Tea_Ssr.affine b/src/tea/Tea_Ssr.affine index 92bf618c..90f778b9 100644 --- a/src/tea/Tea_Ssr.affine +++ b/src/tea/Tea_Ssr.affine @@ -4,4 +4,4 @@ module Tea_Ssr; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/tea/Tea_Sub.affine b/src/tea/Tea_Sub.affine index 9e815beb..07110980 100644 --- a/src/tea/Tea_Sub.affine +++ b/src/tea/Tea_Sub.affine @@ -4,4 +4,4 @@ module Tea_Sub; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/tea/Tea_Svg.affine b/src/tea/Tea_Svg.affine index 8d5dbd00..3e376f11 100644 --- a/src/tea/Tea_Svg.affine +++ b/src/tea/Tea_Svg.affine @@ -4,4 +4,4 @@ module Tea_Svg; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/tea/Tea_Test.affine b/src/tea/Tea_Test.affine index 6eb1f524..f9a25c03 100644 --- a/src/tea/Tea_Test.affine +++ b/src/tea/Tea_Test.affine @@ -4,4 +4,4 @@ module Tea_Test; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/tea/Tea_Time.affine b/src/tea/Tea_Time.affine index 36be2d21..e93b3c58 100644 --- a/src/tea/Tea_Time.affine +++ b/src/tea/Tea_Time.affine @@ -4,4 +4,4 @@ module Tea_Time; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/tea/Tea_Vdom.affine b/src/tea/Tea_Vdom.affine index 6dc3a0b3..d8af983c 100644 --- a/src/tea/Tea_Vdom.affine +++ b/src/tea/Tea_Vdom.affine @@ -4,4 +4,4 @@ module Tea_Vdom; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/tea/Tea_Window.affine b/src/tea/Tea_Window.affine index db4f282b..04fde433 100644 --- a/src/tea/Tea_Window.affine +++ b/src/tea/Tea_Window.affine @@ -4,4 +4,4 @@ module Tea_Window; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/tests/WizardTest.affine b/src/tests/WizardTest.affine index 50632bc8..1083b231 100644 --- a/src/tests/WizardTest.affine +++ b/src/tests/WizardTest.affine @@ -4,4 +4,4 @@ module WizardTest; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateA2ml.affine b/src/update/UpdateA2ml.affine index 55882ba1..591e6642 100644 --- a/src/update/UpdateA2ml.affine +++ b/src/update/UpdateA2ml.affine @@ -4,4 +4,4 @@ module UpdateA2ml; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateAccessibility.affine b/src/update/UpdateAccessibility.affine index b7f830a5..0417ee7c 100644 --- a/src/update/UpdateAccessibility.affine +++ b/src/update/UpdateAccessibility.affine @@ -4,4 +4,4 @@ module UpdateAccessibility; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateAerie.affine b/src/update/UpdateAerie.affine index 46690504..d05277fa 100644 --- a/src/update/UpdateAerie.affine +++ b/src/update/UpdateAerie.affine @@ -4,4 +4,4 @@ module UpdateAerie; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateAi.affine b/src/update/UpdateAi.affine index e1507abc..4767b15f 100644 --- a/src/update/UpdateAi.affine +++ b/src/update/UpdateAi.affine @@ -4,4 +4,4 @@ module UpdateAi; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateAmbientOps.affine b/src/update/UpdateAmbientOps.affine index a699a1da..1c25b036 100644 --- a/src/update/UpdateAmbientOps.affine +++ b/src/update/UpdateAmbientOps.affine @@ -4,4 +4,4 @@ module UpdateAmbientOps; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateAttributionLicense.affine b/src/update/UpdateAttributionLicense.affine index 7ff8ecbd..c337a5a9 100644 --- a/src/update/UpdateAttributionLicense.affine +++ b/src/update/UpdateAttributionLicense.affine @@ -4,4 +4,4 @@ module UpdateAttributionLicense; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateAutomationRouter.affine b/src/update/UpdateAutomationRouter.affine index 3302356f..59ed22ab 100644 --- a/src/update/UpdateAutomationRouter.affine +++ b/src/update/UpdateAutomationRouter.affine @@ -4,4 +4,4 @@ module UpdateAutomationRouter; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateBoj.affine b/src/update/UpdateBoj.affine index bf7edaa9..7539660f 100644 --- a/src/update/UpdateBoj.affine +++ b/src/update/UpdateBoj.affine @@ -4,4 +4,4 @@ module UpdateBoj; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateBuildDashboard.affine b/src/update/UpdateBuildDashboard.affine index f5409ec7..25a8718c 100644 --- a/src/update/UpdateBuildDashboard.affine +++ b/src/update/UpdateBuildDashboard.affine @@ -4,4 +4,4 @@ module UpdateBuildDashboard; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateBus.affine b/src/update/UpdateBus.affine index 31e2d8d3..448c0be7 100644 --- a/src/update/UpdateBus.affine +++ b/src/update/UpdateBus.affine @@ -4,4 +4,4 @@ module UpdateBus; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateCapture.affine b/src/update/UpdateCapture.affine index 67f93dc0..ce94b488 100644 --- a/src/update/UpdateCapture.affine +++ b/src/update/UpdateCapture.affine @@ -4,4 +4,4 @@ module UpdateCapture; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateCladeBrowser.affine b/src/update/UpdateCladeBrowser.affine index 5f08d32f..0d152a74 100644 --- a/src/update/UpdateCladeBrowser.affine +++ b/src/update/UpdateCladeBrowser.affine @@ -4,4 +4,4 @@ module UpdateCladeBrowser; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateCloudGuard.affine b/src/update/UpdateCloudGuard.affine index 167fa27e..b00ace82 100644 --- a/src/update/UpdateCloudGuard.affine +++ b/src/update/UpdateCloudGuard.affine @@ -4,4 +4,4 @@ module UpdateCloudGuard; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateCoprocessors.affine b/src/update/UpdateCoprocessors.affine index 9944d393..c88cda22 100644 --- a/src/update/UpdateCoprocessors.affine +++ b/src/update/UpdateCoprocessors.affine @@ -4,4 +4,4 @@ module UpdateCoprocessors; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateDatabases.affine b/src/update/UpdateDatabases.affine index 8f0b07a5..cc472e50 100644 --- a/src/update/UpdateDatabases.affine +++ b/src/update/UpdateDatabases.affine @@ -4,4 +4,4 @@ module UpdateDatabases; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateDlcWorkshop.affine b/src/update/UpdateDlcWorkshop.affine index 9f36ba03..f9f6e1a8 100644 --- a/src/update/UpdateDlcWorkshop.affine +++ b/src/update/UpdateDlcWorkshop.affine @@ -4,4 +4,4 @@ module UpdateDlcWorkshop; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateEchidna.affine b/src/update/UpdateEchidna.affine index 03dd0543..f74e013a 100644 --- a/src/update/UpdateEchidna.affine +++ b/src/update/UpdateEchidna.affine @@ -4,4 +4,4 @@ module UpdateEchidna; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateEditorBridge.affine b/src/update/UpdateEditorBridge.affine index 9ee44ecc..01b0c7ad 100644 --- a/src/update/UpdateEditorBridge.affine +++ b/src/update/UpdateEditorBridge.affine @@ -4,4 +4,4 @@ module UpdateEditorBridge; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateEnsaidConfig.affine b/src/update/UpdateEnsaidConfig.affine index 4e2b87c3..8c6561f7 100644 --- a/src/update/UpdateEnsaidConfig.affine +++ b/src/update/UpdateEnsaidConfig.affine @@ -4,4 +4,4 @@ module UpdateEnsaidConfig; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateEvangeliser.affine b/src/update/UpdateEvangeliser.affine index 0d6b0e8f..0659c3bd 100644 --- a/src/update/UpdateEvangeliser.affine +++ b/src/update/UpdateEvangeliser.affine @@ -4,4 +4,4 @@ module UpdateEvangeliser; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateFarm.affine b/src/update/UpdateFarm.affine index 5b8acb2c..d722c7f8 100644 --- a/src/update/UpdateFarm.affine +++ b/src/update/UpdateFarm.affine @@ -4,4 +4,4 @@ module UpdateFarm; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateFleet.affine b/src/update/UpdateFleet.affine index 24d0594e..2b448ad0 100644 --- a/src/update/UpdateFleet.affine +++ b/src/update/UpdateFleet.affine @@ -4,4 +4,4 @@ module UpdateFleet; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateFloorRaise.affine b/src/update/UpdateFloorRaise.affine index e05a47f5..f13beb01 100644 --- a/src/update/UpdateFloorRaise.affine +++ b/src/update/UpdateFloorRaise.affine @@ -4,4 +4,4 @@ module UpdateFloorRaise; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateFocusDimming.affine b/src/update/UpdateFocusDimming.affine index 453335c2..d803d180 100644 --- a/src/update/UpdateFocusDimming.affine +++ b/src/update/UpdateFocusDimming.affine @@ -4,4 +4,4 @@ module UpdateFocusDimming; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateGameDevBridges.affine b/src/update/UpdateGameDevBridges.affine index 5a90bf91..37e353d3 100644 --- a/src/update/UpdateGameDevBridges.affine +++ b/src/update/UpdateGameDevBridges.affine @@ -4,4 +4,4 @@ module UpdateGameDevBridges; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateGameDevSpecific.affine b/src/update/UpdateGameDevSpecific.affine index ddd2a0e5..38b89d85 100644 --- a/src/update/UpdateGameDevSpecific.affine +++ b/src/update/UpdateGameDevSpecific.affine @@ -4,4 +4,4 @@ module UpdateGameDevSpecific; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateGameDevTesting.affine b/src/update/UpdateGameDevTesting.affine index 8616e3de..388a199c 100644 --- a/src/update/UpdateGameDevTesting.affine +++ b/src/update/UpdateGameDevTesting.affine @@ -4,4 +4,4 @@ module UpdateGameDevTesting; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateGamePreview.affine b/src/update/UpdateGamePreview.affine index 69bef954..59ef17c7 100644 --- a/src/update/UpdateGamePreview.affine +++ b/src/update/UpdateGamePreview.affine @@ -4,4 +4,4 @@ module UpdateGamePreview; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateGovernance.affine b/src/update/UpdateGovernance.affine index f0c112b0..13319c1a 100644 --- a/src/update/UpdateGovernance.affine +++ b/src/update/UpdateGovernance.affine @@ -4,4 +4,4 @@ module UpdateGovernance; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateHelp.affine b/src/update/UpdateHelp.affine index 15ff73d8..b70fd4af 100644 --- a/src/update/UpdateHelp.affine +++ b/src/update/UpdateHelp.affine @@ -4,4 +4,4 @@ module UpdateHelp; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateHelpers.affine b/src/update/UpdateHelpers.affine index 67c26db9..3120bc08 100644 --- a/src/update/UpdateHelpers.affine +++ b/src/update/UpdateHelpers.affine @@ -4,4 +4,4 @@ module UpdateHelpers; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateHypatia.affine b/src/update/UpdateHypatia.affine index 725f715a..d6e113dd 100644 --- a/src/update/UpdateHypatia.affine +++ b/src/update/UpdateHypatia.affine @@ -4,4 +4,4 @@ module UpdateHypatia; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateIdentity.affine b/src/update/UpdateIdentity.affine index bdf25436..264057cc 100644 --- a/src/update/UpdateIdentity.affine +++ b/src/update/UpdateIdentity.affine @@ -4,4 +4,4 @@ module UpdateIdentity; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateInterfaces.affine b/src/update/UpdateInterfaces.affine index 19acbb3e..54763515 100644 --- a/src/update/UpdateInterfaces.affine +++ b/src/update/UpdateInterfaces.affine @@ -4,4 +4,4 @@ module UpdateInterfaces; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateK9.affine b/src/update/UpdateK9.affine index dcfd1e72..05f37004 100644 --- a/src/update/UpdateK9.affine +++ b/src/update/UpdateK9.affine @@ -4,4 +4,4 @@ module UpdateK9; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateKeybindings.affine b/src/update/UpdateKeybindings.affine index d56cbdaf..4148588a 100644 --- a/src/update/UpdateKeybindings.affine +++ b/src/update/UpdateKeybindings.affine @@ -4,4 +4,4 @@ module UpdateKeybindings; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateLanguageForge.affine b/src/update/UpdateLanguageForge.affine index 7e57ec87..06e9341b 100644 --- a/src/update/UpdateLanguageForge.affine +++ b/src/update/UpdateLanguageForge.affine @@ -4,4 +4,4 @@ module UpdateLanguageForge; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateLevelArchitect.affine b/src/update/UpdateLevelArchitect.affine index 90a01100..90187035 100644 --- a/src/update/UpdateLevelArchitect.affine +++ b/src/update/UpdateLevelArchitect.affine @@ -4,4 +4,4 @@ module UpdateLevelArchitect; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateMassPanic.affine b/src/update/UpdateMassPanic.affine index 0a00b566..bbedd752 100644 --- a/src/update/UpdateMassPanic.affine +++ b/src/update/UpdateMassPanic.affine @@ -4,4 +4,4 @@ module UpdateMassPanic; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateMenuBar.affine b/src/update/UpdateMenuBar.affine index 76e2aa68..e8a42372 100644 --- a/src/update/UpdateMenuBar.affine +++ b/src/update/UpdateMenuBar.affine @@ -4,4 +4,4 @@ module UpdateMenuBar; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateMigration.affine b/src/update/UpdateMigration.affine index 2ac693c5..3dcc1367 100644 --- a/src/update/UpdateMigration.affine +++ b/src/update/UpdateMigration.affine @@ -4,4 +4,4 @@ module UpdateMigration; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateMinter.affine b/src/update/UpdateMinter.affine index 20fd6266..78d4014b 100644 --- a/src/update/UpdateMinter.affine +++ b/src/update/UpdateMinter.affine @@ -4,4 +4,4 @@ module UpdateMinter; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateMultiplayerMonitor.affine b/src/update/UpdateMultiplayerMonitor.affine index 87c1a9dc..9d7086de 100644 --- a/src/update/UpdateMultiplayerMonitor.affine +++ b/src/update/UpdateMultiplayerMonitor.affine @@ -4,4 +4,4 @@ module UpdateMultiplayerMonitor; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateMyLang.affine b/src/update/UpdateMyLang.affine index 6de68c2e..808ba48a 100644 --- a/src/update/UpdateMyLang.affine +++ b/src/update/UpdateMyLang.affine @@ -4,4 +4,4 @@ module UpdateMyLang; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateNetworkTopology.affine b/src/update/UpdateNetworkTopology.affine index 80e139e2..85e3f6d7 100644 --- a/src/update/UpdateNetworkTopology.affine +++ b/src/update/UpdateNetworkTopology.affine @@ -4,4 +4,4 @@ module UpdateNetworkTopology; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateObservability.affine b/src/update/UpdateObservability.affine index bb102213..252f99a3 100644 --- a/src/update/UpdateObservability.affine +++ b/src/update/UpdateObservability.affine @@ -4,4 +4,4 @@ module UpdateObservability; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateObservatory.affine b/src/update/UpdateObservatory.affine index 42e8b3d2..cb92be00 100644 --- a/src/update/UpdateObservatory.affine +++ b/src/update/UpdateObservatory.affine @@ -4,4 +4,4 @@ module UpdateObservatory; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdatePaneA.affine b/src/update/UpdatePaneA.affine index fe27b3d5..fdf75d59 100644 --- a/src/update/UpdatePaneA.affine +++ b/src/update/UpdatePaneA.affine @@ -4,4 +4,4 @@ module UpdatePaneA; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdatePaneL.affine b/src/update/UpdatePaneL.affine index c006bfe8..47a7f860 100644 --- a/src/update/UpdatePaneL.affine +++ b/src/update/UpdatePaneL.affine @@ -4,4 +4,4 @@ module UpdatePaneL; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdatePaneN.affine b/src/update/UpdatePaneN.affine index 5f51b8be..55dc62a0 100644 --- a/src/update/UpdatePaneN.affine +++ b/src/update/UpdatePaneN.affine @@ -4,4 +4,4 @@ module UpdatePaneN; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdatePaneW.affine b/src/update/UpdatePaneW.affine index d922e66f..585a3b5c 100644 --- a/src/update/UpdatePaneW.affine +++ b/src/update/UpdatePaneW.affine @@ -4,4 +4,4 @@ module UpdatePaneW; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdatePanelSwitcher.affine b/src/update/UpdatePanelSwitcher.affine index c1520051..734847c3 100644 --- a/src/update/UpdatePanelSwitcher.affine +++ b/src/update/UpdatePanelSwitcher.affine @@ -4,4 +4,4 @@ module UpdatePanelSwitcher; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdatePanicAttack.affine b/src/update/UpdatePanicAttack.affine index fbb87490..32ca4e7b 100644 --- a/src/update/UpdatePanicAttack.affine +++ b/src/update/UpdatePanicAttack.affine @@ -4,4 +4,4 @@ module UpdatePanicAttack; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdatePatternDiag.affine b/src/update/UpdatePatternDiag.affine index 1a85d203..c61e061d 100644 --- a/src/update/UpdatePatternDiag.affine +++ b/src/update/UpdatePatternDiag.affine @@ -4,4 +4,4 @@ module UpdatePatternDiag; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdatePlaygrounds.affine b/src/update/UpdatePlaygrounds.affine index d9d303f7..b0aae511 100644 --- a/src/update/UpdatePlaygrounds.affine +++ b/src/update/UpdatePlaygrounds.affine @@ -4,4 +4,4 @@ module UpdatePlaygrounds; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdatePlaza.affine b/src/update/UpdatePlaza.affine index 86d962e4..954ad62c 100644 --- a/src/update/UpdatePlaza.affine +++ b/src/update/UpdatePlaza.affine @@ -4,4 +4,4 @@ module UpdatePlaza; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateProtocolSquisher.affine b/src/update/UpdateProtocolSquisher.affine index 3de2205f..8cafe276 100644 --- a/src/update/UpdateProtocolSquisher.affine +++ b/src/update/UpdateProtocolSquisher.affine @@ -4,4 +4,4 @@ module UpdateProtocolSquisher; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateProvenance.affine b/src/update/UpdateProvenance.affine index fbce0116..0c0f802d 100644 --- a/src/update/UpdateProvenance.affine +++ b/src/update/UpdateProvenance.affine @@ -4,4 +4,4 @@ module UpdateProvenance; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateProvisioner.affine b/src/update/UpdateProvisioner.affine index 2a551356..85a19e2c 100644 --- a/src/update/UpdateProvisioner.affine +++ b/src/update/UpdateProvisioner.affine @@ -4,4 +4,4 @@ module UpdateProvisioner; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateReleaseManager.affine b/src/update/UpdateReleaseManager.affine index 70c76023..bc8fcc11 100644 --- a/src/update/UpdateReleaseManager.affine +++ b/src/update/UpdateReleaseManager.affine @@ -4,4 +4,4 @@ module UpdateReleaseManager; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateRepoLoader.affine b/src/update/UpdateRepoLoader.affine index 11fb55f0..dfb45368 100644 --- a/src/update/UpdateRepoLoader.affine +++ b/src/update/UpdateRepoLoader.affine @@ -4,4 +4,4 @@ module UpdateRepoLoader; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateReposystem.affine b/src/update/UpdateReposystem.affine index 4ec14f6f..05c3dc9a 100644 --- a/src/update/UpdateReposystem.affine +++ b/src/update/UpdateReposystem.affine @@ -4,4 +4,4 @@ module UpdateReposystem; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateScriptGist.affine b/src/update/UpdateScriptGist.affine index 9e910591..ecb3bf71 100644 --- a/src/update/UpdateScriptGist.affine +++ b/src/update/UpdateScriptGist.affine @@ -4,4 +4,4 @@ module UpdateScriptGist; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateSecurity.affine b/src/update/UpdateSecurity.affine index 7d25b8a3..dade8312 100644 --- a/src/update/UpdateSecurity.affine +++ b/src/update/UpdateSecurity.affine @@ -4,4 +4,4 @@ module UpdateSecurity; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateService.affine b/src/update/UpdateService.affine index 65a674c5..b4538144 100644 --- a/src/update/UpdateService.affine +++ b/src/update/UpdateService.affine @@ -4,4 +4,4 @@ module UpdateService; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateSettings.affine b/src/update/UpdateSettings.affine index 056387d6..681220cd 100644 --- a/src/update/UpdateSettings.affine +++ b/src/update/UpdateSettings.affine @@ -4,4 +4,4 @@ module UpdateSettings; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateSpecBrowser.affine b/src/update/UpdateSpecBrowser.affine index 662a122a..231e45d2 100644 --- a/src/update/UpdateSpecBrowser.affine +++ b/src/update/UpdateSpecBrowser.affine @@ -4,4 +4,4 @@ module UpdateSpecBrowser; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateStapeln.affine b/src/update/UpdateStapeln.affine index 717fd24d..f7a0a04f 100644 --- a/src/update/UpdateStapeln.affine +++ b/src/update/UpdateStapeln.affine @@ -4,4 +4,4 @@ module UpdateStapeln; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateSystemUpdate.affine b/src/update/UpdateSystemUpdate.affine index 1de48aaf..9a1f9ba7 100644 --- a/src/update/UpdateSystemUpdate.affine +++ b/src/update/UpdateSystemUpdate.affine @@ -4,4 +4,4 @@ module UpdateSystemUpdate; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateTangleViz.affine b/src/update/UpdateTangleViz.affine index bbcea195..807864d0 100644 --- a/src/update/UpdateTangleViz.affine +++ b/src/update/UpdateTangleViz.affine @@ -4,4 +4,4 @@ module UpdateTangleViz; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateTeamCollab.affine b/src/update/UpdateTeamCollab.affine index 73ec96f6..5dc580f2 100644 --- a/src/update/UpdateTeamCollab.affine +++ b/src/update/UpdateTeamCollab.affine @@ -4,4 +4,4 @@ module UpdateTeamCollab; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateTentacles.affine b/src/update/UpdateTentacles.affine index ec7a42f2..74a78f3b 100644 --- a/src/update/UpdateTentacles.affine +++ b/src/update/UpdateTentacles.affine @@ -4,4 +4,4 @@ module UpdateTentacles; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateTiling.affine b/src/update/UpdateTiling.affine index 30da31b5..4efc4735 100644 --- a/src/update/UpdateTiling.affine +++ b/src/update/UpdateTiling.affine @@ -4,4 +4,4 @@ module UpdateTiling; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateTimeline.affine b/src/update/UpdateTimeline.affine index 6f9960c2..1b2bcb2b 100644 --- a/src/update/UpdateTimeline.affine +++ b/src/update/UpdateTimeline.affine @@ -4,4 +4,4 @@ module UpdateTimeline; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateTsdm.affine b/src/update/UpdateTsdm.affine index 978915d4..c74ba1b1 100644 --- a/src/update/UpdateTsdm.affine +++ b/src/update/UpdateTsdm.affine @@ -4,4 +4,4 @@ module UpdateTsdm; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateTypeLL.affine b/src/update/UpdateTypeLL.affine index 59bd6890..26d4fe37 100644 --- a/src/update/UpdateTypeLL.affine +++ b/src/update/UpdateTypeLL.affine @@ -4,4 +4,4 @@ module UpdateTypeLL; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateUms.affine b/src/update/UpdateUms.affine index 70f85f16..b194fa0c 100644 --- a/src/update/UpdateUms.affine +++ b/src/update/UpdateUms.affine @@ -4,4 +4,4 @@ module UpdateUms; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateVab.affine b/src/update/UpdateVab.affine index 22e8c317..11d3d053 100644 --- a/src/update/UpdateVab.affine +++ b/src/update/UpdateVab.affine @@ -4,4 +4,4 @@ module UpdateVab; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateValenceShell.affine b/src/update/UpdateValenceShell.affine index 0dc2d1e9..1c645f53 100644 --- a/src/update/UpdateValenceShell.affine +++ b/src/update/UpdateValenceShell.affine @@ -4,4 +4,4 @@ module UpdateValenceShell; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateVeriSimDB.affine b/src/update/UpdateVeriSimDB.affine index 97edd5b7..f37d1e26 100644 --- a/src/update/UpdateVeriSimDB.affine +++ b/src/update/UpdateVeriSimDB.affine @@ -4,4 +4,4 @@ module UpdateVeriSimDB; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateVerificationDashboard.affine b/src/update/UpdateVerificationDashboard.affine index 220820f0..81513b37 100644 --- a/src/update/UpdateVerificationDashboard.affine +++ b/src/update/UpdateVerificationDashboard.affine @@ -4,4 +4,4 @@ module UpdateVerificationDashboard; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateVideoCoordination.affine b/src/update/UpdateVideoCoordination.affine index ab786c8d..c54c541c 100644 --- a/src/update/UpdateVideoCoordination.affine +++ b/src/update/UpdateVideoCoordination.affine @@ -4,4 +4,4 @@ module UpdateVideoCoordination; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateVmInspector.affine b/src/update/UpdateVmInspector.affine index 8922b93a..20e46f9d 100644 --- a/src/update/UpdateVmInspector.affine +++ b/src/update/UpdateVmInspector.affine @@ -4,4 +4,4 @@ module UpdateVmInspector; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateVoiceTag.affine b/src/update/UpdateVoiceTag.affine index 25b13794..f2e2d094 100644 --- a/src/update/UpdateVoiceTag.affine +++ b/src/update/UpdateVoiceTag.affine @@ -4,4 +4,4 @@ module UpdateVoiceTag; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateWatcher.affine b/src/update/UpdateWatcher.affine index 8d831bac..59328593 100644 --- a/src/update/UpdateWatcher.affine +++ b/src/update/UpdateWatcher.affine @@ -4,4 +4,4 @@ module UpdateWatcher; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateWiringInspector.affine b/src/update/UpdateWiringInspector.affine index 85de9cd5..d9fc9c0b 100644 --- a/src/update/UpdateWiringInspector.affine +++ b/src/update/UpdateWiringInspector.affine @@ -4,4 +4,4 @@ module UpdateWiringInspector; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateWizard.affine b/src/update/UpdateWizard.affine index ca0427fb..f3719155 100644 --- a/src/update/UpdateWizard.affine +++ b/src/update/UpdateWizard.affine @@ -4,4 +4,4 @@ module UpdateWizard; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateWizardTest.affine b/src/update/UpdateWizardTest.affine index 6f5f7d7c..90fcea7e 100644 --- a/src/update/UpdateWizardTest.affine +++ b/src/update/UpdateWizardTest.affine @@ -4,4 +4,4 @@ module UpdateWizardTest; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation diff --git a/src/update/UpdateWorkspace.affine b/src/update/UpdateWorkspace.affine index 71926c19..ac8b5014 100644 --- a/src/update/UpdateWorkspace.affine +++ b/src/update/UpdateWorkspace.affine @@ -4,4 +4,4 @@ module UpdateWorkspace; -// TODO: Complete semantic implementation +// TODO(#148): Complete semantic implementation From 9d10c087d13e21d90ea4f90590b2c7254644beff Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 14 Oct 2026 10:19:06 +0000 Subject: [PATCH 10/13] fix(k9): K9 format marker in 102 configs; validator at k9-ecosystem main Dogfood Gate / Validate K9 contracts failed with 117 errors. - The validator was locked at k9-ecosystem 89f3c27 (2026-07-25). That version demands a literal `K9!` first line in .k9.ncl files, which is a Nickel syntax error. k9-ecosystem #41/#43 repaired the validator for the Nickel dialect: `magic_number = "K9!"` or a pedigree-schema import also counts, and estate coordination files are skipped. The lock now resolves @main to 20f6be5. The dogfood-gate.yml `uses:` line is unchanged. - Under the repaired validator, 102 files still had no marker. The 98 panel-clades/clades/*/config.k9.ncl files get `magic_number = "K9!"` in their pedigree, as in k9-ecosystem's examples. The 4 layouts/*.k9.ncl files get it in their pedigree metadata override. Checks, run locally: - validate-k9.sh at 20f6be5: 110 scanned, 0 errors. - nickel 1.18 exports all 98 clade configs. - The 4 layouts already failed `nickel export` before this change, on a destructuring error in their import of pedigree-layout.ncl. This change does not alter that. - gen-budgets.sh --check: unaffected. Refs #137, #68. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01BCQeL169ZnUirUVaDXQLA3 --- .github/workflows/actions.lock | 2 +- layouts/database-design.k9.ncl | 1 + layouts/language-design.k9.ncl | 1 + layouts/logic-and-proofs.k9.ncl | 1 + layouts/protocol-design.k9.ncl | 1 + panel-clades/clades/aerie/config.k9.ncl | 1 + panel-clades/clades/agentic-bridge/config.k9.ncl | 1 + panel-clades/clades/ai/config.k9.ncl | 1 + panel-clades/clades/ambientops/config.k9.ncl | 1 + panel-clades/clades/architect-mode/config.k9.ncl | 1 + panel-clades/clades/asset-manager/config.k9.ncl | 1 + panel-clades/clades/automation-bridge/config.k9.ncl | 1 + panel-clades/clades/automation-router/config.k9.ncl | 1 + panel-clades/clades/balance-analyser/config.k9.ncl | 1 + panel-clades/clades/beta-feedback-hub/config.k9.ncl | 1 + panel-clades/clades/boj/config.k9.ncl | 1 + panel-clades/clades/build-dashboard/config.k9.ncl | 1 + panel-clades/clades/capture/config.k9.ncl | 1 + panel-clades/clades/clade-browser/config.k9.ncl | 1 + panel-clades/clades/cloudguard/config.k9.ncl | 1 + panel-clades/clades/code-review/config.k9.ncl | 1 + panel-clades/clades/compatibility-matrix/config.k9.ncl | 1 + panel-clades/clades/contractile-completeness/config.k9.ncl | 1 + panel-clades/clades/coprocessors/config.k9.ncl | 1 + panel-clades/clades/database-bridge/config.k9.ncl | 1 + panel-clades/clades/databases/config.k9.ncl | 1 + panel-clades/clades/debugging-workbench/config.k9.ncl | 1 + panel-clades/clades/device-network-designer/config.k9.ncl | 1 + panel-clades/clades/dlc-workshop/config.k9.ncl | 1 + panel-clades/clades/echidna/config.k9.ncl | 1 + panel-clades/clades/editor-bridge/config.k9.ncl | 1 + panel-clades/clades/evangeliser/config.k9.ncl | 1 + panel-clades/clades/exploratory-workbench/config.k9.ncl | 1 + panel-clades/clades/farm/config.k9.ncl | 1 + panel-clades/clades/feedback-routing/config.k9.ncl | 1 + panel-clades/clades/fleet/config.k9.ncl | 1 + panel-clades/clades/floor-raise/config.k9.ncl | 1 + panel-clades/clades/functional-tester/config.k9.ncl | 1 + panel-clades/clades/game-preview/config.k9.ncl | 1 + panel-clades/clades/generator-mode/config.k9.ncl | 1 + panel-clades/clades/gsa-actions/config.k9.ncl | 1 + panel-clades/clades/gsa-browser/config.k9.ncl | 1 + panel-clades/clades/gsa-config/config.k9.ncl | 1 + panel-clades/clades/gsa-game/config.k9.ncl | 1 + panel-clades/clades/gsa-health/config.k9.ncl | 1 + panel-clades/clades/gsa-history/config.k9.ncl | 1 + panel-clades/clades/gsa-logs/config.k9.ncl | 1 + panel-clades/clades/gsa-search/config.k9.ncl | 1 + panel-clades/clades/gsa/config.k9.ncl | 1 + panel-clades/clades/guard-ai-tuner/config.k9.ncl | 1 + panel-clades/clades/help/config.k9.ncl | 1 + panel-clades/clades/hypatia/config.k9.ncl | 1 + panel-clades/clades/interfaces/config.k9.ncl | 1 + panel-clades/clades/language-forge/config.k9.ncl | 1 + panel-clades/clades/level-architect/config.k9.ncl | 1 + panel-clades/clades/load-tester/config.k9.ncl | 1 + panel-clades/clades/manifest-coverage/config.k9.ncl | 1 + panel-clades/clades/mass-panic/config.k9.ncl | 1 + panel-clades/clades/merge-coordinator/config.k9.ncl | 1 + panel-clades/clades/migration/config.k9.ncl | 1 + panel-clades/clades/minter/config.k9.ncl | 1 + panel-clades/clades/multiplayer-monitor/config.k9.ncl | 1 + panel-clades/clades/my-lang/config.k9.ncl | 1 + panel-clades/clades/network-topology/config.k9.ncl | 1 + panel-clades/clades/neurosym-bridge/config.k9.ncl | 1 + panel-clades/clades/observatory/config.k9.ncl | 1 + panel-clades/clades/panic-attack/config.k9.ncl | 1 + panel-clades/clades/performance-profiler/config.k9.ncl | 1 + panel-clades/clades/playgrounds/config.k9.ncl | 1 + panel-clades/clades/playtest-recorder/config.k9.ncl | 1 + panel-clades/clades/plaza/config.k9.ncl | 1 + panel-clades/clades/proofs-bridge/config.k9.ncl | 1 + panel-clades/clades/protocol-bridge/config.k9.ncl | 1 + panel-clades/clades/protocol-squisher/config.k9.ncl | 1 + panel-clades/clades/proven-adoption/config.k9.ncl | 1 + panel-clades/clades/provisioner/config.k9.ncl | 1 + panel-clades/clades/regression-guard/config.k9.ncl | 1 + panel-clades/clades/release-manager/config.k9.ncl | 1 + panel-clades/clades/repoloader/config.k9.ncl | 1 + panel-clades/clades/reposystem/config.k9.ncl | 1 + panel-clades/clades/script-gist/config.k9.ncl | 1 + panel-clades/clades/scripting-bridge/config.k9.ncl | 1 + panel-clades/clades/security/config.k9.ncl | 1 + panel-clades/clades/soak-monitor/config.k9.ncl | 1 + panel-clades/clades/spec-browser/config.k9.ncl | 1 + panel-clades/clades/strategy-drift/config.k9.ncl | 1 + panel-clades/clades/tangle-viz/config.k9.ncl | 1 + panel-clades/clades/team-dashboard/config.k9.ncl | 1 + panel-clades/clades/tentacles/config.k9.ncl | 1 + panel-clades/clades/tsdm/config.k9.ncl | 1 + panel-clades/clades/typell/config.k9.ncl | 1 + panel-clades/clades/typing-bridge/config.k9.ncl | 1 + panel-clades/clades/ums/config.k9.ncl | 1 + panel-clades/clades/unit-test-runner/config.k9.ncl | 1 + panel-clades/clades/vab/config.k9.ncl | 1 + panel-clades/clades/valence-shell/config.k9.ncl | 1 + panel-clades/clades/verification-dashboard/config.k9.ncl | 1 + panel-clades/clades/verisim-feeds/config.k9.ncl | 1 + panel-clades/clades/vexometer-friction/config.k9.ncl | 1 + panel-clades/clades/vm-inspector/config.k9.ncl | 1 + panel-clades/clades/voicetag/config.k9.ncl | 1 + panel-clades/clades/wiring-inspector/config.k9.ncl | 1 + panel-clades/clades/workspace/config.k9.ncl | 1 + 103 files changed, 103 insertions(+), 1 deletion(-) diff --git a/.github/workflows/actions.lock b/.github/workflows/actions.lock index ff62b1c7..ca4217ef 100644 --- a/.github/workflows/actions.lock +++ b/.github/workflows/actions.lock @@ -145,7 +145,7 @@ dependencies: repo_id: 1275650185 'hyperpolymath/k9-ecosystem@main': ref: 'main' - commit: 'sha1-89f3c2702f4f650a92aa7411502f38da06abd562' + commit: 'sha1-20f6be5b5a14a48680b236955b5c4ad9033d00d4' owner_id: 6759885 repo_id: 1275650185 'hyperpolymath/smtp-notify-action@v0.5.0': diff --git a/layouts/database-design.k9.ncl b/layouts/database-design.k9.ncl index e561dce0..82095d58 100644 --- a/layouts/database-design.k9.ncl +++ b/layouts/database-design.k9.ncl @@ -55,6 +55,7 @@ let layout | LayoutPreset | PaneSizesSum100 = { pedigree = LayoutPedigree & { metadata = { name = "panll-layout-database-design", + magic_number = "K9!", description = layout.description, }, }, diff --git a/layouts/language-design.k9.ncl b/layouts/language-design.k9.ncl index 49914d9a..fead921b 100644 --- a/layouts/language-design.k9.ncl +++ b/layouts/language-design.k9.ncl @@ -53,6 +53,7 @@ let layout | LayoutPreset | PaneSizesSum100 = { pedigree = LayoutPedigree & { metadata = { name = "panll-layout-language-design", + magic_number = "K9!", description = layout.description, }, }, diff --git a/layouts/logic-and-proofs.k9.ncl b/layouts/logic-and-proofs.k9.ncl index 5c1811b9..0f72d026 100644 --- a/layouts/logic-and-proofs.k9.ncl +++ b/layouts/logic-and-proofs.k9.ncl @@ -53,6 +53,7 @@ let layout | LayoutPreset | PaneSizesSum100 = { pedigree = LayoutPedigree & { metadata = { name = "panll-layout-logic-and-proofs", + magic_number = "K9!", description = layout.description, }, }, diff --git a/layouts/protocol-design.k9.ncl b/layouts/protocol-design.k9.ncl index 75319757..500874f2 100644 --- a/layouts/protocol-design.k9.ncl +++ b/layouts/protocol-design.k9.ncl @@ -54,6 +54,7 @@ let layout | LayoutPreset | PaneSizesSum100 = { pedigree = LayoutPedigree & { metadata = { name = "panll-layout-protocol-design", + magic_number = "K9!", description = layout.description, }, }, diff --git a/panel-clades/clades/aerie/config.k9.ncl b/panel-clades/clades/aerie/config.k9.ncl index f1a98f32..9fc8e40c 100644 --- a/panel-clades/clades/aerie/config.k9.ncl +++ b/panel-clades/clades/aerie/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "aerie-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/agentic-bridge/config.k9.ncl b/panel-clades/clades/agentic-bridge/config.k9.ncl index 9ff0c22c..6771fb94 100644 --- a/panel-clades/clades/agentic-bridge/config.k9.ncl +++ b/panel-clades/clades/agentic-bridge/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "agentic-bridge-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/ai/config.k9.ncl b/panel-clades/clades/ai/config.k9.ncl index 45a5b4af..9969800c 100644 --- a/panel-clades/clades/ai/config.k9.ncl +++ b/panel-clades/clades/ai/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "ai-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/ambientops/config.k9.ncl b/panel-clades/clades/ambientops/config.k9.ncl index f646075e..9add3efa 100644 --- a/panel-clades/clades/ambientops/config.k9.ncl +++ b/panel-clades/clades/ambientops/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "ambientops-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/architect-mode/config.k9.ncl b/panel-clades/clades/architect-mode/config.k9.ncl index b19c324a..b84a3d77 100644 --- a/panel-clades/clades/architect-mode/config.k9.ncl +++ b/panel-clades/clades/architect-mode/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "architect-mode-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/asset-manager/config.k9.ncl b/panel-clades/clades/asset-manager/config.k9.ncl index c0443920..140265b3 100644 --- a/panel-clades/clades/asset-manager/config.k9.ncl +++ b/panel-clades/clades/asset-manager/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "asset-manager-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/automation-bridge/config.k9.ncl b/panel-clades/clades/automation-bridge/config.k9.ncl index 8e308a86..047a5770 100644 --- a/panel-clades/clades/automation-bridge/config.k9.ncl +++ b/panel-clades/clades/automation-bridge/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "automation-bridge-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/automation-router/config.k9.ncl b/panel-clades/clades/automation-router/config.k9.ncl index 4eed26eb..c9de7f85 100644 --- a/panel-clades/clades/automation-router/config.k9.ncl +++ b/panel-clades/clades/automation-router/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "automation-router-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/balance-analyser/config.k9.ncl b/panel-clades/clades/balance-analyser/config.k9.ncl index 928e35ed..b52e09d8 100644 --- a/panel-clades/clades/balance-analyser/config.k9.ncl +++ b/panel-clades/clades/balance-analyser/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "balance-analyser-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/beta-feedback-hub/config.k9.ncl b/panel-clades/clades/beta-feedback-hub/config.k9.ncl index 5a98d704..e1e1ec16 100644 --- a/panel-clades/clades/beta-feedback-hub/config.k9.ncl +++ b/panel-clades/clades/beta-feedback-hub/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "beta-feedback-hub-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/boj/config.k9.ncl b/panel-clades/clades/boj/config.k9.ncl index 254bec1a..8afd4fb8 100644 --- a/panel-clades/clades/boj/config.k9.ncl +++ b/panel-clades/clades/boj/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "boj-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/build-dashboard/config.k9.ncl b/panel-clades/clades/build-dashboard/config.k9.ncl index e9c29f23..9d919ef2 100644 --- a/panel-clades/clades/build-dashboard/config.k9.ncl +++ b/panel-clades/clades/build-dashboard/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "build-dashboard-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/capture/config.k9.ncl b/panel-clades/clades/capture/config.k9.ncl index a9bd08a3..7405f213 100644 --- a/panel-clades/clades/capture/config.k9.ncl +++ b/panel-clades/clades/capture/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "capture-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/clade-browser/config.k9.ncl b/panel-clades/clades/clade-browser/config.k9.ncl index 9a2f6a44..5185a408 100644 --- a/panel-clades/clades/clade-browser/config.k9.ncl +++ b/panel-clades/clades/clade-browser/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "clade-browser-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/cloudguard/config.k9.ncl b/panel-clades/clades/cloudguard/config.k9.ncl index bc0f3894..736b729a 100644 --- a/panel-clades/clades/cloudguard/config.k9.ncl +++ b/panel-clades/clades/cloudguard/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "cloudguard-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/code-review/config.k9.ncl b/panel-clades/clades/code-review/config.k9.ncl index ed03585e..0f8467f8 100644 --- a/panel-clades/clades/code-review/config.k9.ncl +++ b/panel-clades/clades/code-review/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "code-review-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/compatibility-matrix/config.k9.ncl b/panel-clades/clades/compatibility-matrix/config.k9.ncl index 9726fcc8..4f1d5cb7 100644 --- a/panel-clades/clades/compatibility-matrix/config.k9.ncl +++ b/panel-clades/clades/compatibility-matrix/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "compatibility-matrix-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/contractile-completeness/config.k9.ncl b/panel-clades/clades/contractile-completeness/config.k9.ncl index 44b747da..64520e6d 100644 --- a/panel-clades/clades/contractile-completeness/config.k9.ncl +++ b/panel-clades/clades/contractile-completeness/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "contractile-completeness-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/coprocessors/config.k9.ncl b/panel-clades/clades/coprocessors/config.k9.ncl index 27e0b441..d0eb6d5a 100644 --- a/panel-clades/clades/coprocessors/config.k9.ncl +++ b/panel-clades/clades/coprocessors/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "coprocessors-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/database-bridge/config.k9.ncl b/panel-clades/clades/database-bridge/config.k9.ncl index 1160e4b2..5cebe692 100644 --- a/panel-clades/clades/database-bridge/config.k9.ncl +++ b/panel-clades/clades/database-bridge/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "database-bridge-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/databases/config.k9.ncl b/panel-clades/clades/databases/config.k9.ncl index 6fde6818..20cf14e0 100644 --- a/panel-clades/clades/databases/config.k9.ncl +++ b/panel-clades/clades/databases/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "databases-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/debugging-workbench/config.k9.ncl b/panel-clades/clades/debugging-workbench/config.k9.ncl index 534a0fff..16dc4e3d 100644 --- a/panel-clades/clades/debugging-workbench/config.k9.ncl +++ b/panel-clades/clades/debugging-workbench/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "debugging-workbench-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/device-network-designer/config.k9.ncl b/panel-clades/clades/device-network-designer/config.k9.ncl index d7fafb29..a2085627 100644 --- a/panel-clades/clades/device-network-designer/config.k9.ncl +++ b/panel-clades/clades/device-network-designer/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "device-network-designer-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/dlc-workshop/config.k9.ncl b/panel-clades/clades/dlc-workshop/config.k9.ncl index be54a5f9..4b05b8b4 100644 --- a/panel-clades/clades/dlc-workshop/config.k9.ncl +++ b/panel-clades/clades/dlc-workshop/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "dlc-workshop-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/echidna/config.k9.ncl b/panel-clades/clades/echidna/config.k9.ncl index a1dc38dd..ddb4f33b 100644 --- a/panel-clades/clades/echidna/config.k9.ncl +++ b/panel-clades/clades/echidna/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "echidna-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/editor-bridge/config.k9.ncl b/panel-clades/clades/editor-bridge/config.k9.ncl index f7791e68..39d0385a 100644 --- a/panel-clades/clades/editor-bridge/config.k9.ncl +++ b/panel-clades/clades/editor-bridge/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "editor-bridge-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/evangeliser/config.k9.ncl b/panel-clades/clades/evangeliser/config.k9.ncl index 9ba687aa..ba8f6063 100644 --- a/panel-clades/clades/evangeliser/config.k9.ncl +++ b/panel-clades/clades/evangeliser/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "evangeliser-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/exploratory-workbench/config.k9.ncl b/panel-clades/clades/exploratory-workbench/config.k9.ncl index 2e5577bc..838bdd68 100644 --- a/panel-clades/clades/exploratory-workbench/config.k9.ncl +++ b/panel-clades/clades/exploratory-workbench/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "exploratory-workbench-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/farm/config.k9.ncl b/panel-clades/clades/farm/config.k9.ncl index 834431d6..3fe7a23a 100644 --- a/panel-clades/clades/farm/config.k9.ncl +++ b/panel-clades/clades/farm/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "farm-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/feedback-routing/config.k9.ncl b/panel-clades/clades/feedback-routing/config.k9.ncl index 64861e43..e482612f 100644 --- a/panel-clades/clades/feedback-routing/config.k9.ncl +++ b/panel-clades/clades/feedback-routing/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "feedback-routing-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/fleet/config.k9.ncl b/panel-clades/clades/fleet/config.k9.ncl index 74175f94..00f9e929 100644 --- a/panel-clades/clades/fleet/config.k9.ncl +++ b/panel-clades/clades/fleet/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "fleet-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/floor-raise/config.k9.ncl b/panel-clades/clades/floor-raise/config.k9.ncl index d9a1d9da..c0a53fbb 100644 --- a/panel-clades/clades/floor-raise/config.k9.ncl +++ b/panel-clades/clades/floor-raise/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "floor-raise-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/functional-tester/config.k9.ncl b/panel-clades/clades/functional-tester/config.k9.ncl index 5a8515ae..d0d9c814 100644 --- a/panel-clades/clades/functional-tester/config.k9.ncl +++ b/panel-clades/clades/functional-tester/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "functional-tester-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/game-preview/config.k9.ncl b/panel-clades/clades/game-preview/config.k9.ncl index cd7f3d5e..2b034fa6 100644 --- a/panel-clades/clades/game-preview/config.k9.ncl +++ b/panel-clades/clades/game-preview/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "game-preview-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/generator-mode/config.k9.ncl b/panel-clades/clades/generator-mode/config.k9.ncl index fa571085..eacbea9d 100644 --- a/panel-clades/clades/generator-mode/config.k9.ncl +++ b/panel-clades/clades/generator-mode/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "generator-mode-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/gsa-actions/config.k9.ncl b/panel-clades/clades/gsa-actions/config.k9.ncl index c52712d5..fe774424 100644 --- a/panel-clades/clades/gsa-actions/config.k9.ncl +++ b/panel-clades/clades/gsa-actions/config.k9.ncl @@ -3,6 +3,7 @@ pedigree = { name = "gsa-actions-config", version = "1.0.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/gsa-browser/config.k9.ncl b/panel-clades/clades/gsa-browser/config.k9.ncl index fdb05f82..d0303303 100644 --- a/panel-clades/clades/gsa-browser/config.k9.ncl +++ b/panel-clades/clades/gsa-browser/config.k9.ncl @@ -3,6 +3,7 @@ pedigree = { name = "gsa-browser-config", version = "1.0.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/gsa-config/config.k9.ncl b/panel-clades/clades/gsa-config/config.k9.ncl index 0c412cab..3dea2914 100644 --- a/panel-clades/clades/gsa-config/config.k9.ncl +++ b/panel-clades/clades/gsa-config/config.k9.ncl @@ -3,6 +3,7 @@ pedigree = { name = "gsa-config-config", version = "1.0.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/gsa-game/config.k9.ncl b/panel-clades/clades/gsa-game/config.k9.ncl index 9f9752c6..2fb87977 100644 --- a/panel-clades/clades/gsa-game/config.k9.ncl +++ b/panel-clades/clades/gsa-game/config.k9.ncl @@ -4,6 +4,7 @@ pedigree = { name = "gsa-game-config", version = "1.0.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/gsa-health/config.k9.ncl b/panel-clades/clades/gsa-health/config.k9.ncl index ab251bf3..ce0b80a1 100644 --- a/panel-clades/clades/gsa-health/config.k9.ncl +++ b/panel-clades/clades/gsa-health/config.k9.ncl @@ -3,6 +3,7 @@ pedigree = { name = "gsa-health-config", version = "1.0.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/gsa-history/config.k9.ncl b/panel-clades/clades/gsa-history/config.k9.ncl index 5633f336..5d46f63d 100644 --- a/panel-clades/clades/gsa-history/config.k9.ncl +++ b/panel-clades/clades/gsa-history/config.k9.ncl @@ -3,6 +3,7 @@ pedigree = { name = "gsa-history-config", version = "1.0.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/gsa-logs/config.k9.ncl b/panel-clades/clades/gsa-logs/config.k9.ncl index 4870fb8b..6242c750 100644 --- a/panel-clades/clades/gsa-logs/config.k9.ncl +++ b/panel-clades/clades/gsa-logs/config.k9.ncl @@ -3,6 +3,7 @@ pedigree = { name = "gsa-logs-config", version = "1.0.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/gsa-search/config.k9.ncl b/panel-clades/clades/gsa-search/config.k9.ncl index b5f60465..bdb49abb 100644 --- a/panel-clades/clades/gsa-search/config.k9.ncl +++ b/panel-clades/clades/gsa-search/config.k9.ncl @@ -3,6 +3,7 @@ pedigree = { name = "gsa-search-config", version = "1.0.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/gsa/config.k9.ncl b/panel-clades/clades/gsa/config.k9.ncl index 676c3173..030cb3cb 100644 --- a/panel-clades/clades/gsa/config.k9.ncl +++ b/panel-clades/clades/gsa/config.k9.ncl @@ -4,6 +4,7 @@ pedigree = { name = "gsa-config", version = "1.0.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/guard-ai-tuner/config.k9.ncl b/panel-clades/clades/guard-ai-tuner/config.k9.ncl index e5be296d..d39478d3 100644 --- a/panel-clades/clades/guard-ai-tuner/config.k9.ncl +++ b/panel-clades/clades/guard-ai-tuner/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "guard-ai-tuner-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/help/config.k9.ncl b/panel-clades/clades/help/config.k9.ncl index a18c204e..88fc5b3e 100644 --- a/panel-clades/clades/help/config.k9.ncl +++ b/panel-clades/clades/help/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "help-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/hypatia/config.k9.ncl b/panel-clades/clades/hypatia/config.k9.ncl index 2bdc50b5..88a5b5b4 100644 --- a/panel-clades/clades/hypatia/config.k9.ncl +++ b/panel-clades/clades/hypatia/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "hypatia-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/interfaces/config.k9.ncl b/panel-clades/clades/interfaces/config.k9.ncl index afe05f59..6a245853 100644 --- a/panel-clades/clades/interfaces/config.k9.ncl +++ b/panel-clades/clades/interfaces/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "interfaces-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/language-forge/config.k9.ncl b/panel-clades/clades/language-forge/config.k9.ncl index 9f98e4d6..4f029494 100644 --- a/panel-clades/clades/language-forge/config.k9.ncl +++ b/panel-clades/clades/language-forge/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "language-forge-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/level-architect/config.k9.ncl b/panel-clades/clades/level-architect/config.k9.ncl index dcc9964f..01f693e0 100644 --- a/panel-clades/clades/level-architect/config.k9.ncl +++ b/panel-clades/clades/level-architect/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "level-architect-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/load-tester/config.k9.ncl b/panel-clades/clades/load-tester/config.k9.ncl index 696d5813..c1d86b76 100644 --- a/panel-clades/clades/load-tester/config.k9.ncl +++ b/panel-clades/clades/load-tester/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "load-tester-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/manifest-coverage/config.k9.ncl b/panel-clades/clades/manifest-coverage/config.k9.ncl index 5998bd07..c40732f6 100644 --- a/panel-clades/clades/manifest-coverage/config.k9.ncl +++ b/panel-clades/clades/manifest-coverage/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "manifest-coverage-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/mass-panic/config.k9.ncl b/panel-clades/clades/mass-panic/config.k9.ncl index e418486a..41c65dce 100644 --- a/panel-clades/clades/mass-panic/config.k9.ncl +++ b/panel-clades/clades/mass-panic/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "mass-panic-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/merge-coordinator/config.k9.ncl b/panel-clades/clades/merge-coordinator/config.k9.ncl index b3d3ec4e..3578ab64 100644 --- a/panel-clades/clades/merge-coordinator/config.k9.ncl +++ b/panel-clades/clades/merge-coordinator/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "merge-coordinator-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/migration/config.k9.ncl b/panel-clades/clades/migration/config.k9.ncl index b91b2cb5..a8b86d3b 100644 --- a/panel-clades/clades/migration/config.k9.ncl +++ b/panel-clades/clades/migration/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "migration-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/minter/config.k9.ncl b/panel-clades/clades/minter/config.k9.ncl index 7aad38ba..a2b4d742 100644 --- a/panel-clades/clades/minter/config.k9.ncl +++ b/panel-clades/clades/minter/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "minter-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/multiplayer-monitor/config.k9.ncl b/panel-clades/clades/multiplayer-monitor/config.k9.ncl index 8be1d4f7..aed23d26 100644 --- a/panel-clades/clades/multiplayer-monitor/config.k9.ncl +++ b/panel-clades/clades/multiplayer-monitor/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "multiplayer-monitor-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/my-lang/config.k9.ncl b/panel-clades/clades/my-lang/config.k9.ncl index 0bc2008f..a063b70a 100644 --- a/panel-clades/clades/my-lang/config.k9.ncl +++ b/panel-clades/clades/my-lang/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "my-lang-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/network-topology/config.k9.ncl b/panel-clades/clades/network-topology/config.k9.ncl index 38ef1fd1..92ec72b3 100644 --- a/panel-clades/clades/network-topology/config.k9.ncl +++ b/panel-clades/clades/network-topology/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "network-topology-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/neurosym-bridge/config.k9.ncl b/panel-clades/clades/neurosym-bridge/config.k9.ncl index d24871ab..fb856382 100644 --- a/panel-clades/clades/neurosym-bridge/config.k9.ncl +++ b/panel-clades/clades/neurosym-bridge/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "neurosym-bridge-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/observatory/config.k9.ncl b/panel-clades/clades/observatory/config.k9.ncl index ff065633..7fd8f7ef 100644 --- a/panel-clades/clades/observatory/config.k9.ncl +++ b/panel-clades/clades/observatory/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "observatory-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/panic-attack/config.k9.ncl b/panel-clades/clades/panic-attack/config.k9.ncl index ccceebad..bbff0777 100644 --- a/panel-clades/clades/panic-attack/config.k9.ncl +++ b/panel-clades/clades/panic-attack/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "panic-attack-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/performance-profiler/config.k9.ncl b/panel-clades/clades/performance-profiler/config.k9.ncl index 8775771f..41f21f74 100644 --- a/panel-clades/clades/performance-profiler/config.k9.ncl +++ b/panel-clades/clades/performance-profiler/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "performance-profiler-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/playgrounds/config.k9.ncl b/panel-clades/clades/playgrounds/config.k9.ncl index 34a47c7d..d0a71553 100644 --- a/panel-clades/clades/playgrounds/config.k9.ncl +++ b/panel-clades/clades/playgrounds/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "playgrounds-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/playtest-recorder/config.k9.ncl b/panel-clades/clades/playtest-recorder/config.k9.ncl index d424d84b..ed35c934 100644 --- a/panel-clades/clades/playtest-recorder/config.k9.ncl +++ b/panel-clades/clades/playtest-recorder/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "playtest-recorder-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/plaza/config.k9.ncl b/panel-clades/clades/plaza/config.k9.ncl index 13588e30..56edf15c 100644 --- a/panel-clades/clades/plaza/config.k9.ncl +++ b/panel-clades/clades/plaza/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "plaza-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/proofs-bridge/config.k9.ncl b/panel-clades/clades/proofs-bridge/config.k9.ncl index b05a5aef..87dbff7a 100644 --- a/panel-clades/clades/proofs-bridge/config.k9.ncl +++ b/panel-clades/clades/proofs-bridge/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "proofs-bridge-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/protocol-bridge/config.k9.ncl b/panel-clades/clades/protocol-bridge/config.k9.ncl index 506499e8..36b3c9ae 100644 --- a/panel-clades/clades/protocol-bridge/config.k9.ncl +++ b/panel-clades/clades/protocol-bridge/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "protocol-bridge-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/protocol-squisher/config.k9.ncl b/panel-clades/clades/protocol-squisher/config.k9.ncl index 212ef429..eedd28ae 100644 --- a/panel-clades/clades/protocol-squisher/config.k9.ncl +++ b/panel-clades/clades/protocol-squisher/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "protocol-squisher-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/proven-adoption/config.k9.ncl b/panel-clades/clades/proven-adoption/config.k9.ncl index 1a5ba6b0..cbb62b9f 100644 --- a/panel-clades/clades/proven-adoption/config.k9.ncl +++ b/panel-clades/clades/proven-adoption/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "proven-adoption-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/provisioner/config.k9.ncl b/panel-clades/clades/provisioner/config.k9.ncl index 27f1fb8c..dbe63bf8 100644 --- a/panel-clades/clades/provisioner/config.k9.ncl +++ b/panel-clades/clades/provisioner/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "provisioner-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/regression-guard/config.k9.ncl b/panel-clades/clades/regression-guard/config.k9.ncl index a82b0c7c..3fe35cd5 100644 --- a/panel-clades/clades/regression-guard/config.k9.ncl +++ b/panel-clades/clades/regression-guard/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "regression-guard-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/release-manager/config.k9.ncl b/panel-clades/clades/release-manager/config.k9.ncl index 69e2b03e..76df2c3d 100644 --- a/panel-clades/clades/release-manager/config.k9.ncl +++ b/panel-clades/clades/release-manager/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "release-manager-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/repoloader/config.k9.ncl b/panel-clades/clades/repoloader/config.k9.ncl index 9308d55c..c4c8f4f2 100644 --- a/panel-clades/clades/repoloader/config.k9.ncl +++ b/panel-clades/clades/repoloader/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "repoloader-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/reposystem/config.k9.ncl b/panel-clades/clades/reposystem/config.k9.ncl index 9fcca2b2..fe0abd61 100644 --- a/panel-clades/clades/reposystem/config.k9.ncl +++ b/panel-clades/clades/reposystem/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "reposystem-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/script-gist/config.k9.ncl b/panel-clades/clades/script-gist/config.k9.ncl index 78eaa531..fe5369fc 100644 --- a/panel-clades/clades/script-gist/config.k9.ncl +++ b/panel-clades/clades/script-gist/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "script-gist-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/scripting-bridge/config.k9.ncl b/panel-clades/clades/scripting-bridge/config.k9.ncl index 9bf3d752..47a2a81c 100644 --- a/panel-clades/clades/scripting-bridge/config.k9.ncl +++ b/panel-clades/clades/scripting-bridge/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "scripting-bridge-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/security/config.k9.ncl b/panel-clades/clades/security/config.k9.ncl index e35a4eda..86179cf9 100644 --- a/panel-clades/clades/security/config.k9.ncl +++ b/panel-clades/clades/security/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "security-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/soak-monitor/config.k9.ncl b/panel-clades/clades/soak-monitor/config.k9.ncl index d00668ca..046c4581 100644 --- a/panel-clades/clades/soak-monitor/config.k9.ncl +++ b/panel-clades/clades/soak-monitor/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "soak-monitor-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/spec-browser/config.k9.ncl b/panel-clades/clades/spec-browser/config.k9.ncl index f5532cf7..0a32081a 100644 --- a/panel-clades/clades/spec-browser/config.k9.ncl +++ b/panel-clades/clades/spec-browser/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "spec-browser-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/strategy-drift/config.k9.ncl b/panel-clades/clades/strategy-drift/config.k9.ncl index 7a70e5ae..603306b1 100644 --- a/panel-clades/clades/strategy-drift/config.k9.ncl +++ b/panel-clades/clades/strategy-drift/config.k9.ncl @@ -8,6 +8,7 @@ pedigree = { name = "strategy-drift-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/tangle-viz/config.k9.ncl b/panel-clades/clades/tangle-viz/config.k9.ncl index b8783eb5..cb406ec5 100644 --- a/panel-clades/clades/tangle-viz/config.k9.ncl +++ b/panel-clades/clades/tangle-viz/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "tangle-viz-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/team-dashboard/config.k9.ncl b/panel-clades/clades/team-dashboard/config.k9.ncl index 5261cdcd..8fc493d4 100644 --- a/panel-clades/clades/team-dashboard/config.k9.ncl +++ b/panel-clades/clades/team-dashboard/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "team-dashboard-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/tentacles/config.k9.ncl b/panel-clades/clades/tentacles/config.k9.ncl index 23c99c85..934c9ad9 100644 --- a/panel-clades/clades/tentacles/config.k9.ncl +++ b/panel-clades/clades/tentacles/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "tentacles-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/tsdm/config.k9.ncl b/panel-clades/clades/tsdm/config.k9.ncl index 0421774e..4ce89fd0 100644 --- a/panel-clades/clades/tsdm/config.k9.ncl +++ b/panel-clades/clades/tsdm/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "tsdm-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/typell/config.k9.ncl b/panel-clades/clades/typell/config.k9.ncl index c448d7d0..ccdf2b27 100644 --- a/panel-clades/clades/typell/config.k9.ncl +++ b/panel-clades/clades/typell/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "typell-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/typing-bridge/config.k9.ncl b/panel-clades/clades/typing-bridge/config.k9.ncl index d86d50ad..f2c4fb30 100644 --- a/panel-clades/clades/typing-bridge/config.k9.ncl +++ b/panel-clades/clades/typing-bridge/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "typing-bridge-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/ums/config.k9.ncl b/panel-clades/clades/ums/config.k9.ncl index a4dfa6fa..7c90388e 100644 --- a/panel-clades/clades/ums/config.k9.ncl +++ b/panel-clades/clades/ums/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "ums-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/unit-test-runner/config.k9.ncl b/panel-clades/clades/unit-test-runner/config.k9.ncl index 277f77d5..4ce2f55d 100644 --- a/panel-clades/clades/unit-test-runner/config.k9.ncl +++ b/panel-clades/clades/unit-test-runner/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "unit-test-runner-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/vab/config.k9.ncl b/panel-clades/clades/vab/config.k9.ncl index a2f4f008..af241d40 100644 --- a/panel-clades/clades/vab/config.k9.ncl +++ b/panel-clades/clades/vab/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "vab-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/valence-shell/config.k9.ncl b/panel-clades/clades/valence-shell/config.k9.ncl index 23bfac94..a25b4fbc 100644 --- a/panel-clades/clades/valence-shell/config.k9.ncl +++ b/panel-clades/clades/valence-shell/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "valence-shell-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/verification-dashboard/config.k9.ncl b/panel-clades/clades/verification-dashboard/config.k9.ncl index 9ddfcad0..92a5c274 100644 --- a/panel-clades/clades/verification-dashboard/config.k9.ncl +++ b/panel-clades/clades/verification-dashboard/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "verification-dashboard-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/verisim-feeds/config.k9.ncl b/panel-clades/clades/verisim-feeds/config.k9.ncl index 45121b4d..7a17d4ba 100644 --- a/panel-clades/clades/verisim-feeds/config.k9.ncl +++ b/panel-clades/clades/verisim-feeds/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "verisim-feeds-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/vexometer-friction/config.k9.ncl b/panel-clades/clades/vexometer-friction/config.k9.ncl index 7235044b..48354f88 100644 --- a/panel-clades/clades/vexometer-friction/config.k9.ncl +++ b/panel-clades/clades/vexometer-friction/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "vexometer-friction-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/vm-inspector/config.k9.ncl b/panel-clades/clades/vm-inspector/config.k9.ncl index b34d8f41..fcf74d68 100644 --- a/panel-clades/clades/vm-inspector/config.k9.ncl +++ b/panel-clades/clades/vm-inspector/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "vm-inspector-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/voicetag/config.k9.ncl b/panel-clades/clades/voicetag/config.k9.ncl index 6d31e897..4fb02904 100644 --- a/panel-clades/clades/voicetag/config.k9.ncl +++ b/panel-clades/clades/voicetag/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "voicetag-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/wiring-inspector/config.k9.ncl b/panel-clades/clades/wiring-inspector/config.k9.ncl index d05f0f52..d4c68965 100644 --- a/panel-clades/clades/wiring-inspector/config.k9.ncl +++ b/panel-clades/clades/wiring-inspector/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "wiring-inspector-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, diff --git a/panel-clades/clades/workspace/config.k9.ncl b/panel-clades/clades/workspace/config.k9.ncl index 0c0b3c04..115cd868 100644 --- a/panel-clades/clades/workspace/config.k9.ncl +++ b/panel-clades/clades/workspace/config.k9.ncl @@ -5,6 +5,7 @@ pedigree = { name = "workspace-config", version = "0.1.0", + magic_number = "K9!", author = "Jonathan D.A. Jewell ", leash = 'Kennel, }, From 86bba18bd55e63d1f912842efd62de75998c203a Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 14 Oct 2026 10:22:48 +0000 Subject: [PATCH 11/13] fix(rust): gossamer-rs as a pinned, optional git dependency Rust CI died at manifest load: `gossamer-rs = { path = "../gossamer/bindings/rust" }` names a sibling checkout that exists on one machine. Gossamer lives at metadatastician/gossamer, and its build script supports Git dependencies ("use the git repository dependency"). - gossamer-rs is a git dependency pinned to c234fea (gossamer main, 2026-10-13). Cargo.lock gains exactly one `source = ...` line. - It is optional, behind a `gossamer` feature that the panll-gossamer bin requires. gossamer-rs's build.rs compiles libgossamer from Zig source (exactly Zig 0.15.2, plus GTK 3 and WebKitGTK 4.1). As an unconditional dependency it ran even for `cargo check --lib`, so the "GTK/WebKit-free" library the manifest describes did not exist. - E2E's Rust job, which already installs GTK/WebKit, installs Zig 0.15.2 (goto-bus-stop/setup-zig v2.2.1, the estate's pin, now in actions.lock) and builds with `--features gossamer`. Cargo.toml and Cargo.lock now trigger that workflow. - Rust CI's first run past `cargo check` exposed `cargo fmt` drift in 11 files and one clippy::for_kv_map. `cargo fmt --all` is applied, and the loop uses values_mut(). Checked locally on rustc 1.97.0 and on 1.99.0, the stable CI uses: - Rust CI: `cargo check --locked --all-targets`, `cargo fmt --check`, `clippy --all-targets -D warnings`, and `cargo test --all-targets` (23 passed) all pass. - Desktop shell, with Zig 0.15.2 and the GTK/WebKit dev packages: `cargo build --release --locked --features gossamer --bin panll-gossamer` links, and `cargo test --features gossamer` passes. - Lockfile: gh actions-lock --verify-local is valid, and both lock-sync gates pass. Refs #137. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01BCQeL169ZnUirUVaDXQLA3 --- .github/workflows/actions.lock | 6 +++ .github/workflows/e2e.yml | 20 ++++++++-- Cargo.lock | 1 + Cargo.toml | 16 +++++++- src-gossamer/src/coprocessor/commands.rs | 18 ++++----- src-gossamer/src/groove.rs | 15 +++++--- src-gossamer/src/http_client.rs | 10 +---- src-gossamer/src/identity.rs | 31 +++++++-------- src-gossamer/src/lib.rs | 13 ++++--- src-gossamer/src/llm_coding/commands.rs | 28 +++++++++----- src-gossamer/src/llm_coding/mod.rs | 2 +- src-gossamer/src/main.rs | 49 +++++++++++++++++++----- src-gossamer/src/service_registry.rs | 36 +++++++++-------- src-gossamer/src/settings.rs | 32 +++++++++------- src-gossamer/src/system_tray/mod.rs | 3 +- 15 files changed, 177 insertions(+), 103 deletions(-) diff --git a/.github/workflows/actions.lock b/.github/workflows/actions.lock index ca4217ef..343a7b78 100644 --- a/.github/workflows/actions.lock +++ b/.github/workflows/actions.lock @@ -28,6 +28,7 @@ workflows: - 'actions/upload-artifact@v7.0.1' - 'denoland/setup-deno@v2.0.5' - 'dtolnay/rust-toolchain@v1' + - 'goto-bus-stop/setup-zig@v2.2.1' - 'swatinem/rust-cache@v2.9.2' '.github/workflows/governance.yml': - 'hyperpolymath/standards@092dedada188f56c5915f74a5fd40aac093742c3' @@ -107,6 +108,11 @@ dependencies: commit: 'sha1-2892aa5e19bbd11bc0cff5427e3b750a04d9e3c2' owner_id: 9919 repo_id: 259445878 + 'goto-bus-stop/setup-zig@v2.2.1': + ref: 'v2.2.1' + commit: 'sha1-abea47f85e598557f500fa1fd2ab7464fcb39406' + owner_id: 1006268 + repo_id: 212984112 'haskell-actions/setup@v2.12.1': ref: 'v2.12.1' commit: 'sha1-0f8e8c99d88aeb3fbfd523f1ef2c6f762d10d64d' diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 21498546..748d5867 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -16,6 +16,8 @@ on: - 'src/**' - 'src-gossamer/**' - 'tests/**' + - 'Cargo.toml' + - 'Cargo.lock' - '.github/workflows/e2e.yml' pull_request: branches: [main, master] @@ -23,6 +25,9 @@ on: - 'src/**' - 'src-gossamer/**' - 'tests/**' + - 'Cargo.toml' + - 'Cargo.lock' + - '.github/workflows/e2e.yml' workflow_dispatch: permissions: read-all @@ -112,7 +117,7 @@ jobs: gossamer-backend: name: Rust Backend — Build + Check runs-on: ubuntu-latest - timeout-minutes: 15 + timeout-minutes: 30 steps: - name: Checkout @@ -129,8 +134,17 @@ jobs: - name: Install GTK/WebKit dev headers run: sudo apt-get update && sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.1-dev + # gossamer-rs compiles libgossamer from its Zig source and requires + # exactly this version (bindings/rust/build.rs, SUPPORTED_ZIG). + - name: Install Zig 0.15.2 + uses: goto-bus-stop/setup-zig@v2.2.1 + with: + version: 0.15.2 + + # The desktop shell is behind the `gossamer` feature; the library and + # Rust CI build without it. - name: Build Gossamer backend - run: cargo build --release + run: cargo build --release --locked --features gossamer --bin panll-gossamer - name: Run Rust tests - run: cargo test + run: cargo test --locked --features gossamer diff --git a/Cargo.lock b/Cargo.lock index df8d6c81..4cebc74c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -332,6 +332,7 @@ dependencies = [ [[package]] name = "gossamer-rs" version = "0.1.0" +source = "git+https://github.com/metadatastician/gossamer?rev=c234fea6d8e41a6c9080b3dea97a1885fca1f9a7#c234fea6d8e41a6c9080b3dea97a1885fca1f9a7" dependencies = [ "serde", "serde_json", diff --git a/Cargo.toml b/Cargo.toml index d09129cb..d5f8f65a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -29,10 +29,22 @@ path = "src-gossamer/src/lib.rs" [[bin]] name = "panll-gossamer" path = "src-gossamer/src/main.rs" +required-features = ["gossamer"] + +# The desktop shell is opt-in: gossamer-rs compiles libgossamer from source +# (Zig 0.15.2 + GTK 3 + WebKitGTK 4.1), so it must not be pulled into the lib. +# cargo run --features gossamer --bin panll-gossamer +# To build against a local gossamer checkout instead of the pinned commit, put +# a [patch."https://github.com/metadatastician/gossamer"] entry in your own +# .cargo/config.toml (not committed). +[features] +default = [] +gossamer = ["dep:gossamer-rs"] [dependencies] -# Gossamer webview shell — replaces tauri -gossamer-rs = { path = "../gossamer/bindings/rust" } +# Gossamer webview shell — replaces tauri. Pinned by commit: a path dependency +# on a sibling checkout cannot resolve in CI or for anyone else. +gossamer-rs = { git = "https://github.com/metadatastician/gossamer", rev = "c234fea6d8e41a6c9080b3dea97a1885fca1f9a7", optional = true } # Serialisation — used by every command handler serde = { version = "1", features = ["derive"] } diff --git a/src-gossamer/src/coprocessor/commands.rs b/src-gossamer/src/coprocessor/commands.rs index d9ceaf5d..0cfb6756 100644 --- a/src-gossamer/src/coprocessor/commands.rs +++ b/src-gossamer/src/coprocessor/commands.rs @@ -109,10 +109,7 @@ fn ffi_so_path() -> std::path::PathBuf { /// - "axiom": Queries Axiom.jl at localhost:7780/api/compute /// - "boj": Queries BoJ server at localhost:7800/invoke /// - "local": Dispatches through Zig FFI if loaded, else returns stub -pub async fn query_compute_engine( - engine_id: String, - operation: String, -) -> Result { +pub async fn query_compute_engine(engine_id: String, operation: String) -> Result { let start = std::time::Instant::now(); let result = match engine_id.as_str() { @@ -311,14 +308,13 @@ pub async fn coprocessor_ffi_dispatch( // never crosses an async boundary. let outcome: Result = (|| { let guard = FFI_STATE.lock().map_err(|e| e.to_string())?; - let lib = guard - .library - .as_ref() - .ok_or_else(|| "FFI reported available but library handle is missing".to_string())?; - - let backend_u8 = copro_backend.map(|b| b as u8).ok_or_else(|| { - format!("Unknown backend: {}", backend) + let lib = guard.library.as_ref().ok_or_else(|| { + "FFI reported available but library handle is missing".to_string() })?; + + let backend_u8 = copro_backend + .map(|b| b as u8) + .ok_or_else(|| format!("Unknown backend: {}", backend))?; let op_c = std::ffi::CString::new(operation.as_str()) .map_err(|e| format!("Invalid operation string: {}", e))?; let payload_c = std::ffi::CString::new(payload.as_str()) diff --git a/src-gossamer/src/groove.rs b/src-gossamer/src/groove.rs index 1c4c184d..458a73a3 100644 --- a/src-gossamer/src/groove.rs +++ b/src-gossamer/src/groove.rs @@ -247,7 +247,12 @@ fn handle_groove_feedback( let feedback = match parsed { Ok(v) => v, Err(_) => { - send_response(stream, 400, "application/json", r#"{"ok":false,"error":"invalid JSON"}"#)?; + send_response( + stream, + 400, + "application/json", + r#"{"ok":false,"error":"invalid JSON"}"#, + )?; return Ok(()); } }; @@ -475,11 +480,9 @@ fn extract_service_id_from_response(response: &str) -> String { pub fn spawn_mesh_monitor() { std::thread::Builder::new() .name("panll-mesh-monitor".into()) - .spawn(|| { - loop { - probe_mesh_peers(); - std::thread::sleep(std::time::Duration::from_secs(30)); - } + .spawn(|| loop { + probe_mesh_peers(); + std::thread::sleep(std::time::Duration::from_secs(30)); }) .expect("Failed to spawn mesh monitor thread"); } diff --git a/src-gossamer/src/http_client.rs b/src-gossamer/src/http_client.rs index 5d8cb3e3..ae355b5e 100644 --- a/src-gossamer/src/http_client.rs +++ b/src-gossamer/src/http_client.rs @@ -119,10 +119,7 @@ pub async fn post_json( /// /// Useful when the caller wants to forward the raw JSON to the frontend /// without deserialising into a specific Rust type. -pub async fn get_raw( - endpoint: &ServiceEndpoint, - path: &str, -) -> Result { +pub async fn get_raw(endpoint: &ServiceEndpoint, path: &str) -> Result { let url = format!("{}{}", endpoint.base_url, path); let client = reqwest::Client::builder() .timeout(endpoint.timeout) @@ -186,10 +183,7 @@ pub async fn post_json_raw( /// /// Returns `Ok(true)` if the endpoint responds with 2xx, `Ok(false)` if /// the request fails or returns a non-success status. -pub async fn check_health( - endpoint: &ServiceEndpoint, - health_path: &str, -) -> Result { +pub async fn check_health(endpoint: &ServiceEndpoint, health_path: &str) -> Result { let url = format!("{}{}", endpoint.base_url, health_path); let client = reqwest::Client::builder() .timeout(Duration::from_secs(5)) diff --git a/src-gossamer/src/identity.rs b/src-gossamer/src/identity.rs index 119dae3d..6ccb64f1 100644 --- a/src-gossamer/src/identity.rs +++ b/src-gossamer/src/identity.rs @@ -57,8 +57,7 @@ fn identities_dir() -> PathBuf { fn ensure_identities_dir() -> Result<(), String> { let dir = identities_dir(); if !dir.exists() { - fs::create_dir_all(&dir) - .map_err(|e| format!("Failed to create identities dir: {}", e))?; + fs::create_dir_all(&dir).map_err(|e| format!("Failed to create identities dir: {}", e))?; } Ok(()) } @@ -78,7 +77,12 @@ fn iso_now() -> String { /// Primary storage: VeriSimDB (POST /api/identity). /// Fallback: `~/.panll/identities/.json`. /// Returns the full snapshot as a JSON Value. -pub fn identity_save(name: &str, panll_state: &str, settings: &str, service_urls: &str) -> Result { +pub fn identity_save( + name: &str, + panll_state: &str, + settings: &str, + service_urls: &str, +) -> Result { ensure_identities_dir()?; let snapshot = IdentitySnapshot { @@ -94,8 +98,8 @@ pub fn identity_save(name: &str, panll_state: &str, settings: &str, service_urls .map_err(|e| format!("JSON serialise error: {}", e))?; // Primary: VeriSimDB; fallback to filesystem on any error. - let verisim_url = std::env::var("VERISIMDB_URL") - .unwrap_or_else(|_| "http://localhost:8080/api/v1".into()); + let verisim_url = + std::env::var("VERISIMDB_URL").unwrap_or_else(|_| "http://localhost:8080/api/v1".into()); let endpoint = http_client::ServiceEndpoint::new(&verisim_url); let path = format!("/state/{}", snapshot.id); if http_client::blocking::post_raw(&endpoint, &path, &json!({"state": json_str})).is_err() { @@ -112,8 +116,8 @@ pub fn identity_save(name: &str, panll_state: &str, settings: &str, service_urls /// Primary source: VeriSimDB (GET /state/). /// Fallback: `~/.panll/identities/.json`. pub fn identity_load(id: &str) -> Result { - let verisim_url = std::env::var("VERISIMDB_URL") - .unwrap_or_else(|_| "http://localhost:8080/api/v1".into()); + let verisim_url = + std::env::var("VERISIMDB_URL").unwrap_or_else(|_| "http://localhost:8080/api/v1".into()); let endpoint = http_client::ServiceEndpoint::new(&verisim_url); if let Ok(body) = http_client::blocking::get_raw(&endpoint, &format!("/state/{}", id)) { if let Ok(val) = serde_json::from_str::(&body) { @@ -122,8 +126,7 @@ pub fn identity_load(id: &str) -> Result { } let path = identities_dir().join(format!("{}.json", id)); - let contents = fs::read_to_string(&path) - .map_err(|e| format!("Snapshot not found: {}", e))?; + let contents = fs::read_to_string(&path).map_err(|e| format!("Snapshot not found: {}", e))?; serde_json::from_str::(&contents) .map_err(|e| format!("JSON parse error: {}", e)) } @@ -135,8 +138,8 @@ pub fn identity_list() -> Result { let dir = identities_dir(); let mut metas: Vec = Vec::new(); - let entries = fs::read_dir(&dir) - .map_err(|e| format!("Failed to read identities dir: {}", e))?; + let entries = + fs::read_dir(&dir).map_err(|e| format!("Failed to read identities dir: {}", e))?; for entry in entries.flatten() { let path = entry.path(); @@ -163,8 +166,7 @@ pub fn identity_list() -> Result { pub fn identity_delete(id: &str) -> Result { let path = identities_dir().join(format!("{}.json", id)); if path.exists() { - fs::remove_file(&path) - .map_err(|e| format!("Failed to delete snapshot: {}", e))?; + fs::remove_file(&path).map_err(|e| format!("Failed to delete snapshot: {}", e))?; Ok(json!({"deleted": id})) } else { Err(format!("Snapshot not found: {}", id)) @@ -180,8 +182,7 @@ pub fn identity_delete(id: &str) -> Result { /// POST to the Burble server's broadcast endpoint. Team members receive /// the snapshot and can choose to apply it. pub fn team_broadcast_state(snapshot_json: &str) -> Result { - let burble_url = std::env::var("BURBLE_URL") - .unwrap_or_else(|_| "http://localhost:6473".into()); + let burble_url = std::env::var("BURBLE_URL").unwrap_or_else(|_| "http://localhost:6473".into()); let endpoint = http_client::ServiceEndpoint::new(&burble_url); let body = json!({ "type": "identity_snapshot", diff --git a/src-gossamer/src/lib.rs b/src-gossamer/src/lib.rs index d59f80f6..46236b2e 100644 --- a/src-gossamer/src/lib.rs +++ b/src-gossamer/src/lib.rs @@ -55,9 +55,8 @@ mod integration_tests { for k in ["verisim", "echidna", "burble", "boj", "typell"] { assert!(obj.contains_key(k), "missing {k}"); } - let updated = - service_registry::update_service_url("boj", "http://boj.test:7700/") - .expect("update_service_url"); + let updated = service_registry::update_service_url("boj", "http://boj.test:7700/") + .expect("update_service_url"); assert_eq!(updated["url"], "http://boj.test:7700"); assert!(service_registry::check_service("nope").is_err()); assert!(service_registry::update_service_url("nope", "http://x").is_err()); @@ -65,15 +64,17 @@ mod integration_tests { #[test] fn llm_coding_system_resources_reports_real_host() { - let json = llm_coding::commands::llm_coding_system_resources() - .expect("system_resources"); + let json = llm_coding::commands::llm_coding_system_resources().expect("system_resources"); let v: serde_json::Value = serde_json::from_str(&json).expect("parse"); assert!( v["memory_total_mb"].as_u64().unwrap_or(0) > 0, "memory_total_mb should be positive, got {json}" ); let cpu = v["cpu_percent"].as_f64().unwrap_or(-1.0); - assert!((0.0..=100.0).contains(&cpu), "cpu_percent out of range: {cpu}"); + assert!( + (0.0..=100.0).contains(&cpu), + "cpu_percent out of range: {cpu}" + ); } #[test] diff --git a/src-gossamer/src/llm_coding/commands.rs b/src-gossamer/src/llm_coding/commands.rs index 0aa11b3a..f6550a49 100644 --- a/src-gossamer/src/llm_coding/commands.rs +++ b/src-gossamer/src/llm_coding/commands.rs @@ -9,6 +9,7 @@ // Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) use super::types::*; +use once_cell::sync::Lazy; use serde_json::json; use std::collections::HashMap; use std::fs; @@ -16,7 +17,6 @@ use std::path::{Path, PathBuf}; use std::process::Command; use std::sync::Mutex; use std::time::{SystemTime, UNIX_EPOCH}; -use once_cell::sync::Lazy; use uuid::Uuid; /// Coordination directory for inter-session state. @@ -39,11 +39,17 @@ fn read_system_memory() -> (u64, u64) { let mut avail_kb = 0u64; for line in meminfo.lines() { if line.starts_with("MemTotal:") { - total_kb = line.split_whitespace().nth(1) - .and_then(|s| s.parse().ok()).unwrap_or(0); + total_kb = line + .split_whitespace() + .nth(1) + .and_then(|s| s.parse().ok()) + .unwrap_or(0); } else if line.starts_with("MemAvailable:") { - avail_kb = line.split_whitespace().nth(1) - .and_then(|s| s.parse().ok()).unwrap_or(0); + avail_kb = line + .split_whitespace() + .nth(1) + .and_then(|s| s.parse().ok()) + .unwrap_or(0); } } (avail_kb / 1024, total_kb / 1024) @@ -52,7 +58,8 @@ fn read_system_memory() -> (u64, u64) { /// Read /proc/[pid]/statm for RSS memory of a single process (MB). fn read_process_memory(pid: u32) -> u64 { let statm = fs::read_to_string(format!("/proc/{pid}/statm")).unwrap_or_default(); - statm.split_whitespace() + statm + .split_whitespace() .nth(1) .and_then(|s| s.parse::().ok()) .map(|pages| pages * 4096 / 1024 / 1024) @@ -168,14 +175,17 @@ pub fn llm_coding_spawn(request: SpawnRequest) -> Result { // Persist and register persist_session(&session); - SESSIONS.lock().map_err(|e| e.to_string())? + SESSIONS + .lock() + .map_err(|e| e.to_string())? .insert(session_id.clone(), session); Ok(json!({ "status": "ok", "session_id": session_id, "pid": pid - }).to_string()) + }) + .to_string()) } /// Freeze a session (pause resource usage). @@ -351,4 +361,4 @@ pub fn llm_coding_system_resources() -> Result { cpu_percent: read_overall_cpu(), }; serde_json::to_string(&snapshot).map_err(|e| e.to_string()) -} \ No newline at end of file +} diff --git a/src-gossamer/src/llm_coding/mod.rs b/src-gossamer/src/llm_coding/mod.rs index d73d89fe..c631c68d 100644 --- a/src-gossamer/src/llm_coding/mod.rs +++ b/src-gossamer/src/llm_coding/mod.rs @@ -16,5 +16,5 @@ // // Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) -pub mod types; pub mod commands; +pub mod types; diff --git a/src-gossamer/src/main.rs b/src-gossamer/src/main.rs index 2ac0e38a..f2ceaa63 100644 --- a/src-gossamer/src/main.rs +++ b/src-gossamer/src/main.rs @@ -58,7 +58,9 @@ fn get_str(payload: &serde_json::Value, key: &str) -> Result { .ok_or_else(|| format!("Missing or invalid key: {}", key)) } -fn result_to_json(result: Result) -> Result { +fn result_to_json( + result: Result, +) -> Result { match result { Ok(val) => Ok(json!({"ok": true, "result": val})), Err(err) => Ok(json!({"ok": false, "error": err})), @@ -71,7 +73,7 @@ fn result_to_json(result: Result) -> Result) -> Result { match result { Ok(s) => result_to_json(Ok( - serde_json::from_str::(&s).unwrap_or(serde_json::Value::Null), + serde_json::from_str::(&s).unwrap_or(serde_json::Value::Null) )), Err(e) => result_to_json::(Err(e)), } @@ -82,11 +84,18 @@ fn blocking_get(url: &str, timeout_secs: u64) -> Result { .timeout(std::time::Duration::from_secs(timeout_secs)) .build() .map_err(|e| format!("HTTP client error: {}", e))?; - let resp = client.get(url).send().map_err(|e| format!("GET failed: {}", e))?; + let resp = client + .get(url) + .send() + .map_err(|e| format!("GET failed: {}", e))?; if resp.status().is_success() { resp.text().map_err(|e| format!("Read failed: {}", e)) } else { - Err(format!("HTTP {} - {}", resp.status(), resp.text().unwrap_or_default())) + Err(format!( + "HTTP {} - {}", + resp.status(), + resp.text().unwrap_or_default() + )) } } @@ -95,11 +104,19 @@ fn blocking_post(url: &str, body: &serde_json::Value, timeout_secs: u64) -> Resu .timeout(std::time::Duration::from_secs(timeout_secs)) .build() .map_err(|e| format!("HTTP client error: {}", e))?; - let resp = client.post(url).json(body).send().map_err(|e| format!("POST failed: {}", e))?; + let resp = client + .post(url) + .json(body) + .send() + .map_err(|e| format!("POST failed: {}", e))?; if resp.status().is_success() { resp.text().map_err(|e| format!("Read failed: {}", e)) } else { - Err(format!("HTTP {} - {}", resp.status(), resp.text().unwrap_or_default())) + Err(format!( + "HTTP {} - {}", + resp.status(), + resp.text().unwrap_or_default() + )) } } @@ -108,11 +125,18 @@ fn blocking_post_empty(url: &str, timeout_secs: u64) -> Result { .timeout(std::time::Duration::from_secs(timeout_secs)) .build() .map_err(|e| format!("HTTP client error: {}", e))?; - let resp = client.post(url).send().map_err(|e| format!("POST failed: {}", e))?; + let resp = client + .post(url) + .send() + .map_err(|e| format!("POST failed: {}", e))?; if resp.status().is_success() { resp.text().map_err(|e| format!("Read failed: {}", e)) } else { - Err(format!("HTTP {} - {}", resp.status(), resp.text().unwrap_or_default())) + Err(format!( + "HTTP {} - {}", + resp.status(), + resp.text().unwrap_or_default() + )) } } @@ -269,7 +293,12 @@ fn register_commands(app: &mut gossamer_rs::App) { let panll_state = get_str(&payload, "panll_state").unwrap_or_default(); let settings = get_str(&payload, "settings").unwrap_or_default(); let service_urls = get_str(&payload, "service_urls").unwrap_or_default(); - result_to_json(identity::identity_save(&name, &panll_state, &settings, &service_urls)) + result_to_json(identity::identity_save( + &name, + &panll_state, + &settings, + &service_urls, + )) }); app.command("identity_load", |payload| { @@ -375,4 +404,4 @@ fn register_commands(app: &mut gossamer_rs::App) { let url = format!("{}/state/{}", verisim_url(), key); result_str_to_json(blocking_get(&url, 10)) }); -} \ No newline at end of file +} diff --git a/src-gossamer/src/service_registry.rs b/src-gossamer/src/service_registry.rs index 3dbdbe76..45424be7 100644 --- a/src-gossamer/src/service_registry.rs +++ b/src-gossamer/src/service_registry.rs @@ -59,8 +59,7 @@ static REGISTRY: Lazy>> = Lazy::new(|| { "verisim".into(), ServiceEntry { name: "VeriSimDB".into(), - url: std::env::var("VERISIMDB_URL") - .unwrap_or_else(|_| "http://localhost:8080".into()), + url: std::env::var("VERISIMDB_URL").unwrap_or_else(|_| "http://localhost:8080".into()), health_path: "/health".into(), status: ServiceStatus::Stopped, }, @@ -70,8 +69,7 @@ static REGISTRY: Lazy>> = Lazy::new(|| { "echidna".into(), ServiceEntry { name: "ECHIDNA".into(), - url: std::env::var("ECHIDNA_URL") - .unwrap_or_else(|_| "http://localhost:9000".into()), + url: std::env::var("ECHIDNA_URL").unwrap_or_else(|_| "http://localhost:9000".into()), health_path: "/health".into(), status: ServiceStatus::Stopped, }, @@ -81,8 +79,7 @@ static REGISTRY: Lazy>> = Lazy::new(|| { "burble".into(), ServiceEntry { name: "Burble".into(), - url: std::env::var("BURBLE_URL") - .unwrap_or_else(|_| "http://localhost:6473".into()), + url: std::env::var("BURBLE_URL").unwrap_or_else(|_| "http://localhost:6473".into()), health_path: "/health".into(), status: ServiceStatus::Stopped, }, @@ -92,8 +89,7 @@ static REGISTRY: Lazy>> = Lazy::new(|| { "boj".into(), ServiceEntry { name: "BoJ Server".into(), - url: std::env::var("BOJ_URL") - .unwrap_or_else(|_| "http://localhost:7700".into()), + url: std::env::var("BOJ_URL").unwrap_or_else(|_| "http://localhost:7700".into()), health_path: "/health".into(), status: ServiceStatus::Stopped, }, @@ -103,8 +99,7 @@ static REGISTRY: Lazy>> = Lazy::new(|| { "typell".into(), ServiceEntry { name: "TypeLL".into(), - url: std::env::var("TYPELL_URL") - .unwrap_or_else(|_| "http://localhost:7800".into()), + url: std::env::var("TYPELL_URL").unwrap_or_else(|_| "http://localhost:7800".into()), health_path: "/health".into(), status: ServiceStatus::Stopped, }, @@ -118,9 +113,11 @@ static REGISTRY: Lazy>> = Lazy::new(|| { /// Probes each service endpoint via `http_client::blocking` (5-second timeout). /// Returns the full registry as a JSON Value. pub fn check_all_services() -> Result { - let mut reg = REGISTRY.lock().map_err(|e| format!("Registry lock: {}", e))?; + let mut reg = REGISTRY + .lock() + .map_err(|e| format!("Registry lock: {}", e))?; - for (_key, entry) in reg.iter_mut() { + for entry in reg.values_mut() { let endpoint = http_client::ServiceEndpoint::new(&entry.url).with_timeout(5); entry.status = match http_client::blocking::get_raw(&endpoint, &entry.health_path) { Ok(_) => ServiceStatus::Running, @@ -136,7 +133,9 @@ pub fn check_all_services() -> Result { /// /// Returns the updated entry as a JSON Value, or an error if the key is unknown. pub fn check_service(service_key: &str) -> Result { - let mut reg = REGISTRY.lock().map_err(|e| format!("Registry lock: {}", e))?; + let mut reg = REGISTRY + .lock() + .map_err(|e| format!("Registry lock: {}", e))?; let entry = reg .get_mut(service_key) @@ -155,7 +154,9 @@ pub fn check_service(service_key: &str) -> Result { /// /// Resets the service status to `Stopped` after URL change (requires re-check). pub fn update_service_url(service_key: &str, new_url: &str) -> Result { - let mut reg = REGISTRY.lock().map_err(|e| format!("Registry lock: {}", e))?; + let mut reg = REGISTRY + .lock() + .map_err(|e| format!("Registry lock: {}", e))?; let entry = reg .get_mut(service_key) @@ -169,7 +170,9 @@ pub fn update_service_url(service_key: &str, new_url: &str) -> Result Result { - let reg = REGISTRY.lock().map_err(|e| format!("Registry lock: {}", e))?; + let reg = REGISTRY + .lock() + .map_err(|e| format!("Registry lock: {}", e))?; let snapshot: HashMap = reg.clone(); serde_json::to_value(&snapshot).map_err(|e| format!("JSON serialise error: {}", e)) } @@ -203,8 +206,7 @@ mod tests { fn update_service_url_sets_url_and_resets_status() { // Assert on the returned entry (not a shared global re-read) so the // test is robust under parallel execution. - let updated = - update_service_url("typell", "http://example.test:9999/").expect("update ok"); + let updated = update_service_url("typell", "http://example.test:9999/").expect("update ok"); assert_eq!(updated["url"], "http://example.test:9999"); // Status resets to Stopped after a URL change. ServiceStatus is // `#[serde(tag = "status")]`, so the unit variant serialises as the diff --git a/src-gossamer/src/settings.rs b/src-gossamer/src/settings.rs index 8e92d227..4b533dcb 100644 --- a/src-gossamer/src/settings.rs +++ b/src-gossamer/src/settings.rs @@ -48,8 +48,7 @@ impl Default for PanllSettings { .unwrap_or_else(|_| "http://localhost:9000".into()), burble_url: std::env::var("BURBLE_URL") .unwrap_or_else(|_| "http://localhost:6473".into()), - boj_url: std::env::var("BOJ_URL") - .unwrap_or_else(|_| "http://localhost:7700".into()), + boj_url: std::env::var("BOJ_URL").unwrap_or_else(|_| "http://localhost:7700".into()), typell_url: std::env::var("TYPELL_URL") .unwrap_or_else(|_| "http://localhost:7800".into()), config_dir: config_dir().to_string_lossy().into_owned(), @@ -75,8 +74,7 @@ fn config_path() -> PathBuf { /// Global settings instance, loaded from disk on first access. static SETTINGS: Lazy> = Lazy::new(|| { let settings = match fs::read_to_string(config_path()) { - Ok(contents) => serde_json::from_str::(&contents) - .unwrap_or_default(), + Ok(contents) => serde_json::from_str::(&contents).unwrap_or_default(), Err(_) => PanllSettings::default(), }; Mutex::new(settings) @@ -86,24 +84,26 @@ static SETTINGS: Lazy> = Lazy::new(|| { fn persist_to_disk(settings: &PanllSettings) -> Result<(), String> { let dir = config_dir(); if !dir.exists() { - fs::create_dir_all(&dir) - .map_err(|e| format!("Failed to create config dir: {}", e))?; + fs::create_dir_all(&dir).map_err(|e| format!("Failed to create config dir: {}", e))?; } let json = serde_json::to_string_pretty(settings) .map_err(|e| format!("JSON serialise error: {}", e))?; - fs::write(config_path(), json) - .map_err(|e| format!("Failed to write config: {}", e)) + fs::write(config_path(), json).map_err(|e| format!("Failed to write config: {}", e)) } /// Get all settings as a JSON Value. pub fn settings_get() -> Result { - let settings = SETTINGS.lock().map_err(|e| format!("Settings lock: {}", e))?; + let settings = SETTINGS + .lock() + .map_err(|e| format!("Settings lock: {}", e))?; serde_json::to_value(&*settings).map_err(|e| format!("JSON serialise error: {}", e)) } /// Set a single setting by key. Persists to disk immediately. pub fn settings_set(key: &str, value: &str) -> Result { - let mut settings = SETTINGS.lock().map_err(|e| format!("Settings lock: {}", e))?; + let mut settings = SETTINGS + .lock() + .map_err(|e| format!("Settings lock: {}", e))?; match key { "verisimdb_url" => settings.verisimdb_url = value.to_string(), @@ -131,9 +131,11 @@ pub fn settings_set(key: &str, value: &str) -> Result /// Replace all settings from a JSON string. Persists to disk immediately. pub fn settings_save(settings_json: &str) -> Result { - let new_settings: PanllSettings = serde_json::from_str(settings_json) - .map_err(|e| format!("Invalid settings JSON: {}", e))?; - let mut settings = SETTINGS.lock().map_err(|e| format!("Settings lock: {}", e))?; + let new_settings: PanllSettings = + serde_json::from_str(settings_json).map_err(|e| format!("Invalid settings JSON: {}", e))?; + let mut settings = SETTINGS + .lock() + .map_err(|e| format!("Settings lock: {}", e))?; *settings = new_settings; persist_to_disk(&settings)?; serde_json::to_value(&*settings).map_err(|e| format!("JSON serialise error: {}", e)) @@ -141,7 +143,9 @@ pub fn settings_save(settings_json: &str) -> Result { /// Reset all settings to defaults. Persists to disk immediately. pub fn settings_reset() -> Result { - let mut settings = SETTINGS.lock().map_err(|e| format!("Settings lock: {}", e))?; + let mut settings = SETTINGS + .lock() + .map_err(|e| format!("Settings lock: {}", e))?; *settings = PanllSettings::default(); persist_to_disk(&settings)?; serde_json::to_value(&*settings).map_err(|e| format!("JSON serialise error: {}", e)) diff --git a/src-gossamer/src/system_tray/mod.rs b/src-gossamer/src/system_tray/mod.rs index 8ee44e66..b633abf2 100644 --- a/src-gossamer/src/system_tray/mod.rs +++ b/src-gossamer/src/system_tray/mod.rs @@ -42,7 +42,8 @@ pub fn init(app: &gossamer_rs::App) -> Result<(), String> { .map_err(|e| e.to_string())?; // Attach main window to tray - app.tray_set_window(tray_handle).map_err(|e| e.to_string())?; + app.tray_set_window(tray_handle) + .map_err(|e| e.to_string())?; // Add menu items app.tray_add_menu_item(tray_handle, "Show PanLL") From 8117a8d15f743bbf3597c5a30e799f8523e516b7 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 14 Oct 2026 10:40:01 +0000 Subject: [PATCH 12/13] ci: remove the gates #107/#108 left with nothing to test (owner decision) The owner decided (2026-10-14) to port the frontend to AffineScript, not restore the ReScript, and to remove the dead gates now. #137 already allowed this: `validate` "runs under bun or is removed". Removed: - Build Validation / validate: Setup Deno, deno install, the ReScript build gate, the Deno test gate and the pcc panel-wiring gate. The first four need deno.json, which #108 deleted. 136 of the 143 tests import src/**/*.res.js, which #107 deleted. pcc scans .res files, and before #107 it also failed on every panel (MSG_NAMESPACE_MISSING: it never learned the src/msg/ split). - The GTK/WebKit apt step in `validate`. The default-feature library does not need it. - E2E: the e2e-deno, crosscutting and bench jobs. Same imports, same missing deno.json. The bench job's `| tee` also hid its failure, so it was a false green. Kept: - In `validate`: `cargo check --locked`, `cargo test --locked --lib`, and the pcc compile. - E2E's Rust job, which builds the desktop shell with `--features gossamer`. - The tests stay in tests/. #148 re-adds these gates against the AffineScript frontend. actions.lock drops setup-deno from both workflows and upload-artifact from e2e.yml, and removes the now-unreferenced records. Checked locally: - gh actions-lock --verify-local: valid. Both lock-sync gates pass. - Governance linter: parse, duplicate-key and SPDX/permissions steps pass. - The new `validate` steps pass on rustc 1.99.0. .claude/CLAUDE.md's stale-build note now records the decision. Refs #137, #148. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01BCQeL169ZnUirUVaDXQLA3 --- .claude/CLAUDE.md | 10 ++- .github/workflows/actions.lock | 13 ---- .github/workflows/build-validation.yml | 46 ++++---------- .github/workflows/e2e.yml | 86 ++------------------------ 4 files changed, 26 insertions(+), 129 deletions(-) diff --git a/.claude/CLAUDE.md b/.claude/CLAUDE.md index 5823d3da..f0b13ff6 100644 --- a/.claude/CLAUDE.md +++ b/.claude/CLAUDE.md @@ -4,9 +4,13 @@ ## Build Commands > **Stale:** #108 removed `deno.json`, so the `deno task` commands in this file -> and the Deno steps in `.github/workflows/build-validation.yml` no longer run. -> There is no JS manifest in the repo yet; a Bun `package.json` + `bun.lock` is -> the replacement (see Critical Rules). +> no longer run, and #107 replaced the ReScript sources with stubs. The Deno +> and pcc gates were removed from CI; the frontend is being ported to +> AffineScript (owner decision 2026-10-14, no ReScript restore), tracked in +> #148, which re-adds those gates. There is no JS manifest in the repo yet; a +> Bun `package.json` + `bun.lock` is the replacement (see Critical Rules). +> The Rust desktop shell needs `--features gossamer` (Zig 0.15.2 + GTK 3 + +> WebKitGTK 4.1). ```bash # Compile ReScript modules diff --git a/.github/workflows/actions.lock b/.github/workflows/actions.lock index 343a7b78..4d9c4b65 100644 --- a/.github/workflows/actions.lock +++ b/.github/workflows/actions.lock @@ -7,7 +7,6 @@ workflows: - 'actions/checkout@v7.0.1' '.github/workflows/build-validation.yml': - 'actions/checkout@v7.0.1' - - 'denoland/setup-deno@v2.0.5' - 'dtolnay/rust-toolchain@v1' '.github/workflows/casket-pages.yml': - 'actions/cache@v6.1.0' @@ -25,8 +24,6 @@ workflows: - 'hyperpolymath/k9-ecosystem@main' '.github/workflows/e2e.yml': - 'actions/checkout@v7.0.1' - - 'actions/upload-artifact@v7.0.1' - - 'denoland/setup-deno@v2.0.5' - 'dtolnay/rust-toolchain@v1' - 'goto-bus-stop/setup-zig@v2.2.1' - 'swatinem/rust-cache@v2.9.2' @@ -81,11 +78,6 @@ dependencies: commit: 'sha1-bbbca2ddaa5d8feaa63e36b76fdaad77386f024f' owner_id: 44036562 repo_id: 192625955 - 'actions/upload-artifact@v7.0.1': - ref: 'v7.0.1' - commit: 'sha1-043fb46d1a93c77aae656e7c1c64a875d1fc6a0a' - owner_id: 44036562 - repo_id: 192625955 'actions/upload-pages-artifact@v5.0.0': ref: 'v5.0.0' commit: 'sha1-fc324d3547104276b827a68afc52ff2a11cc49c9' @@ -93,11 +85,6 @@ dependencies: repo_id: 496012378 uses: - 'actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f' - 'denoland/setup-deno@v2.0.5': - ref: 'v2.0.5' - commit: 'sha1-22d081ff2d3a40755e97629de92e3bcbfa7cf2ed' - owner_id: 42048915 - repo_id: 356423100 'dtolnay/rust-toolchain@v1': ref: 'v1' commit: 'sha1-e2a55d2ffb04f378e9626c28d38b36d230d1e12f' diff --git a/.github/workflows/build-validation.yml b/.github/workflows/build-validation.yml index ccea9508..153f9dc7 100644 --- a/.github/workflows/build-validation.yml +++ b/.github/workflows/build-validation.yml @@ -13,6 +13,11 @@ permissions: contents: read jobs: + # The ReScript build, the Deno test gate and the pcc panel-wiring gate were + # removed (owner decision; #137, #148). #107 deleted the ReScript frontend + # they built and tested, #108 deleted deno.json, and pcc scans .res files, + # so none of them could pass or fail on anything real. They come back + # against the AffineScript frontend under #148. validate: runs-on: ubuntu-latest permissions: @@ -22,46 +27,21 @@ jobs: - name: Checkout uses: actions/checkout@v7.0.1 - - name: Setup Deno - uses: denoland/setup-deno@v2.0.5 + - name: Setup Rust toolchain + uses: dtolnay/rust-toolchain@v1 with: - deno-version: "2.x" - - - name: Install Linux dependencies for Gossamer - run: | - sudo apt-get update - sudo apt-get install -y \ - libgtk-3-dev \ - libwebkit2gtk-4.1-dev \ - libayatana-appindicator3-dev \ - librsvg2-dev \ - patchelf - - - name: Warm Deno cache (npm + jsr specifiers) - run: deno install - - - name: ReScript build gate - run: deno task res:build - - - name: Deno test gate - run: deno task test + toolchain: stable + # Default features build the GTK/WebKit-free library only; the desktop + # shell (`--features gossamer`) is built by E2E's Rust job. - name: Rust cargo check gate - run: cargo check + run: cargo check --locked - name: Rust test gate - run: cargo test --lib -- --test-threads=1 - - - name: Setup Rust toolchain for PCC - uses: dtolnay/rust-toolchain@v1 - with: - toolchain: stable + run: cargo test --locked --lib -- --test-threads=1 - name: Build Panel Contract Compiler - run: cargo build --release --manifest-path tools/pcc/Cargo.toml - - - name: Panel wiring verification gate - run: ./tools/pcc/target/release/panll panel verify --repo-root . + run: cargo build --locked --release --manifest-path tools/pcc/Cargo.toml # panel-clades ABI: every PanelClades.ABI module typechecks against # typed-wasm's grade kernel at its pin, and the expected rejections are diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 748d5867..4c9283cd 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -2,10 +2,13 @@ # SPDX-License-Identifier: MPL-2.0 # Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) # -# PanLL — E2E + Crosscutting + Bench CI Pipeline +# PanLL — E2E pipeline # -# Runs the existing Deno test suite including E2E message roundtrip, -# panel lifecycle, crosscutting aspect tests, and benchmarks. +# Builds and tests the Gossamer desktop shell. The Deno E2E, crosscutting and +# bench jobs were removed (owner decision; #137, #148): every one of them +# imported src/**/*.res.js, which #107 deleted, through a deno.json that #108 +# deleted. The bench job's `| tee` also hid its failure, so it showed green. +# They come back against the AffineScript frontend under #148. name: E2E + Crosscutting + Bench @@ -37,83 +40,6 @@ concurrency: cancel-in-progress: true jobs: - e2e-deno: - name: E2E — Message Roundtrip + Panel Lifecycle - runs-on: ubuntu-latest - timeout-minutes: 20 - - steps: - - name: Checkout - uses: actions/checkout@v7.0.1 - - - name: Install Deno - uses: denoland/setup-deno@v2.0.5 - with: - deno-version: v2.x - - - name: Install dependencies - run: deno install - - - name: Build ReScript - run: deno task res:build || echo "ReScript build attempted" - - - name: Run E2E tests - run: deno test tests/e2e_*.js tests/cross_panel_integration_test.js tests/update_integration_test.js --allow-read --allow-env - - crosscutting: - name: Aspect — Crosscutting Concern Tests - runs-on: ubuntu-latest - timeout-minutes: 15 - - steps: - - name: Checkout - uses: actions/checkout@v7.0.1 - - - name: Install Deno - uses: denoland/setup-deno@v2.0.5 - with: - deno-version: v2.x - - - name: Install dependencies - run: deno install - - - name: Build ReScript - run: deno task res:build || echo "ReScript build attempted" - - - name: Run crosscutting aspect tests - run: deno test tests/*_crosscutting_test.js tests/panelbus_propagation_test.js --allow-read --allow-env - - benchmarks: - name: Bench — TEA Update Cycle + Engine Performance - runs-on: ubuntu-latest - timeout-minutes: 15 - - steps: - - name: Checkout - uses: actions/checkout@v7.0.1 - - - name: Install Deno - uses: denoland/setup-deno@v2.0.5 - with: - deno-version: v2.x - - - name: Install dependencies - run: deno install - - - name: Build ReScript - run: deno task res:build || echo "ReScript build attempted" - - - name: Run benchmarks - run: deno test tests/*_bench_test.js --allow-read --allow-env 2>&1 | tee /tmp/bench-results.txt - - - name: Upload benchmark results - if: always() - uses: actions/upload-artifact@v7.0.1 - with: - name: benchmark-results - path: /tmp/bench-results.txt - retention-days: 30 - gossamer-backend: name: Rust Backend — Build + Check runs-on: ubuntu-latest From 3c74c794dffc8056ec8fa4cb845ebdfce0c168c6 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 14 Oct 2026 10:43:47 +0000 Subject: [PATCH 13/13] ci: job timeouts and CodeQL `actions` analysis (Hypatia workflow audit) Hypatia's workflow_audit flagged 13 jobs with no `timeout-minutes`, which means the 6-hour default: a hung fetch or runner burns budget. Each now has a timeout sized from recent run times, with headroom: - build-validation validate: 20 - dogfood-gate, all five jobs: 10 - casket-pages build: 45 (about 2.5 min with a warm cabal cache; a cold build is much longer) - casket-pages deploy: 10 - boj-build trigger-boj: 10 - codeql analyze: 30 - labels sync, label-triage triage, instant-sync dispatch: 10 It also flagged codeql_missing_actions_language. The matrix gains `language: actions` (build-mode none), as rsr-template-repo's codeql.yml has, so CodeQL scans the workflow YAML for injection. No `uses:` changed, so actions.lock is untouched; gh actions-lock --verify-local is still valid. The linter's parse and duplicate-key steps pass. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01BCQeL169ZnUirUVaDXQLA3 --- .github/workflows/boj-build.yml | 1 + .github/workflows/build-validation.yml | 1 + .github/workflows/casket-pages.yml | 2 ++ .github/workflows/codeql.yml | 5 +++++ .github/workflows/dogfood-gate.yml | 5 +++++ .github/workflows/instant-sync.yml | 1 + .github/workflows/label-triage.yml | 1 + .github/workflows/labels.yml | 1 + 8 files changed, 17 insertions(+) diff --git a/.github/workflows/boj-build.yml b/.github/workflows/boj-build.yml index 17785665..5d6a7edc 100644 --- a/.github/workflows/boj-build.yml +++ b/.github/workflows/boj-build.yml @@ -8,6 +8,7 @@ on: jobs: trigger-boj: runs-on: ubuntu-latest + timeout-minutes: 10 steps: - name: Checkout uses: actions/checkout@v7.0.1 diff --git a/.github/workflows/build-validation.yml b/.github/workflows/build-validation.yml index 153f9dc7..96cb85b1 100644 --- a/.github/workflows/build-validation.yml +++ b/.github/workflows/build-validation.yml @@ -20,6 +20,7 @@ jobs: # against the AffineScript frontend under #148. validate: runs-on: ubuntu-latest + timeout-minutes: 20 permissions: contents: read diff --git a/.github/workflows/casket-pages.yml b/.github/workflows/casket-pages.yml index 33bbd80b..88482253 100644 --- a/.github/workflows/casket-pages.yml +++ b/.github/workflows/casket-pages.yml @@ -20,6 +20,7 @@ concurrency: jobs: build: runs-on: ubuntu-latest + timeout-minutes: 45 steps: - name: Checkout uses: actions/checkout@v7.0.1 @@ -93,6 +94,7 @@ jobs: name: github-pages url: ${{ steps.deployment.outputs.page_url }} runs-on: ubuntu-latest + timeout-minutes: 10 needs: build steps: - name: Deploy to GitHub Pages diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index ade2e802..4448a8a0 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -25,6 +25,7 @@ permissions: jobs: analyze: runs-on: ubuntu-latest + timeout-minutes: 30 permissions: contents: read security-events: write @@ -34,6 +35,10 @@ jobs: include: - language: javascript-typescript build-mode: none + # Scans the workflow YAML itself (injection and other CI/CD + # weaknesses), as rsr-template-repo's codeql.yml does. + - language: actions + build-mode: none steps: - name: Checkout diff --git a/.github/workflows/dogfood-gate.yml b/.github/workflows/dogfood-gate.yml index 7b61a955..ecfaa6d5 100644 --- a/.github/workflows/dogfood-gate.yml +++ b/.github/workflows/dogfood-gate.yml @@ -24,6 +24,7 @@ jobs: deed-validate: name: Validate DEED manifests runs-on: ubuntu-latest + timeout-minutes: 10 steps: - name: Checkout repository @@ -68,6 +69,7 @@ jobs: k9-validate: name: Validate K9 contracts runs-on: ubuntu-latest + timeout-minutes: 10 steps: - name: Checkout repository @@ -117,6 +119,7 @@ jobs: empty-lint: name: Empty-linter (invisible characters) runs-on: ubuntu-latest + timeout-minutes: 10 steps: - name: Checkout repository @@ -181,6 +184,7 @@ jobs: groove-check: name: Groove manifest check runs-on: ubuntu-latest + timeout-minutes: 10 steps: - name: Checkout repository @@ -239,6 +243,7 @@ jobs: dogfood-summary: name: Dogfooding compliance summary runs-on: ubuntu-latest + timeout-minutes: 10 needs: [deed-validate, k9-validate, empty-lint, groove-check] if: always() diff --git a/.github/workflows/instant-sync.yml b/.github/workflows/instant-sync.yml index 15bb63b4..c2d35db5 100644 --- a/.github/workflows/instant-sync.yml +++ b/.github/workflows/instant-sync.yml @@ -20,6 +20,7 @@ permissions: jobs: dispatch: runs-on: ubuntu-latest + timeout-minutes: 10 steps: - name: Check dispatch token id: check diff --git a/.github/workflows/label-triage.yml b/.github/workflows/label-triage.yml index 814a1924..7bbe4688 100644 --- a/.github/workflows/label-triage.yml +++ b/.github/workflows/label-triage.yml @@ -47,6 +47,7 @@ permissions: jobs: triage: runs-on: ubuntu-latest + timeout-minutes: 10 steps: - name: Classify and label env: diff --git a/.github/workflows/labels.yml b/.github/workflows/labels.yml index 83ab941a..a4208d7f 100644 --- a/.github/workflows/labels.yml +++ b/.github/workflows/labels.yml @@ -33,6 +33,7 @@ permissions: jobs: sync: runs-on: ubuntu-latest + timeout-minutes: 10 steps: - name: Apply canonical labels env: