Repository navigation
packaging(ns8): fix live-test findings - #135
Merged
Merged
Conversation
…its, RE2 pattern, CALNODE_IMAGE env Verified against a real single-node NS8 cluster (Rocky 9 VM). Findings: - add-module requires a create-module action to exist and exit 0; the cluster framework already provisions volumes, pre-pulls label images and writes CALNODE_IMAGE, so the module ships only a matching validate-input schema and no scripts. - Action scripts must be committed executable (100755): the agent silently skips non-executable files, which made configure a no-op. CI now asserts indexed modes (this checkout has fileMode=false). - Hostname pattern must be RE2-compatible: the validator rejects the Perl lookahead, so the length guard lives in maxLength instead. - The unit and configure read the app ref from CALNODE_IMAGE in the module environment instead of build-time stamping; the label is the single source of truth.
Contributor
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes
- App ref sourced from the label, not stamped.
build-images.shdrops the__CALNODE_APP_IMAGE__staging/sedblock for a plainbuildah add imageroot /imageroot;calnode.serviceruns${CALNODE_IMAGE}and20configurereads it from the environment. The label is now the single source of truth. create-module/validate-input.jsonadded (schema only, no step scripts) declaring{images: string[], volumes: object}withadditionalProperties: false.- Exec bits restored on
20configure,80start_servicesand20read(100644 → 100755) — the agent skips non-executable action files. - RE2-compatible hostname pattern: the Perl lookahead
(?=.{1,253}$)is gone, covered by the existingmaxLength: 253. - Tolerant image pull:
podman pullfailure now falls back topodman image exists, so a registry outage cannot block a reconfigure. - CI guards:
! grep -rn '__CALNODE_APP_IMAGE__' imageroot/plus an awk check asserting every non-validate-*.jsonfile underimageroot/actionsis mode 100755 in the git index. - Docs:
README.mdlive-test status and tag scheme corrected;CLAUDE.mdupdated to the label-as-source-of-truth contract.
Verified during review: the create-module input is exactly {images, volumes} (cluster/actions/add-module/50update always populates both), so additionalProperties: false is safe; the module schema does not shadow the inherited core create-module steps (Go agent CreateTaskProcessor merges action dirs), so 05pullimages still writes CALNODE_IMAGE into state/environment; the awk check passes against the actual index; and no placeholder references remain anywhere.
deepseek-v4.1-flash | 𝕏
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Follow-up to #102, verified live on a single-node Rocky 9 cluster (minipc LXD VM, since torn down). See commit message for the four fixes. Live-verified: install, configure, Traefik route (root 302, /admin 200), SQLite persistence, key byte-identical across reconfigures, remove with route cleanup. Still open: cluster backup/restore (no repo available on the test node) and the robot suite (needs a wired-up test cluster). After merge, worth one clean retest from the published image.