Repository navigation
Release as one signed bundle; the customer guide; the EULA - #4
Conversation
Replace the placeholder image build with the customer guide and one signing workflow. A release is one download (the Native App files, the three role images for amd64 and arm64, the infrastructure and install scripts), signed keyless as sign-release.yaml at the release tag. LICENSE now points at the Senzing End User License Agreement instead of carrying the Apache-2.0 text. Removed: Dockerfile, .dockerignore, docker-build-and-publish.yaml (its required check "docker build (pull request)" goes with it), CODEOWNERS, .github/workflows/README.md, .claude/settings.json.
🤖 Claude Code ReviewCode reviewCode quality
Defects
Testing
Add a small bats or shell test with fixture directories for the good case, an extra file, a bad checksum, a missing role image and a stray Documentation
Security
Security notes on the workflow:
SummaryThe signing design is sound. Fix the re-run defect (1) and the checksum parsing (3) before merge, confirm the ruleset and CODEOWNERS fallout (2) and the license change (4), add tests for the script, and run prettier on the new markdown.Automated code review analyzing defects and coding standards |
🤖 Claude Code ReviewPR Code ReviewThis PR replaces the container build-and-publish pipeline with a release-signing workflow, a verification script and a customer guide. Several things need attention. The first two are the most important. Code Quality
Testing
Documentation
Security
SummaryThe signing design is sound. Before merging, fix the CODEOWNERS removal, get explicit sign-off on the LICENSE change, add tests for the asset-check script, clean up the stale cspell and gitignore entries, and format the Markdown and JSON with prettier.Automated code review analyzing defects and coding standards |
Super-linter summary
All files and directories linted successfully For more information, see the GitHub Actions workflow run Powered by Super-linter |
…ew versioning policy; install and report with an AI assistant (docs/ai-assisted.md); register sources by name, SZ_CONFIGURE, RESOLVE_STATE and setup progress in the install/use/troubleshooting docs; Senzing brand lockup and section labels on every page; CONTRIBUTING.md (issues welcome; no contributions or pull requests)
🤖 Claude Code ReviewPR Code ReviewThis PR retires the container build and publish pipeline ( Code Quality
Testing
Documentation
Security
SummaryThe signing design is sound. Fix defects 1 and 2 (re-run and ordering), confirm the CODEOWNERS and required-check removals against the branch rules, add tests for
|
Release as one signed bundle; the customer guide; the EULA
What this does
Turns this repository into exactly what customers need and nothing else: the guide, the
EULA pointer, and one workflow that signs a release's files. It is the output of a full-tree
replace (
scripts/sync_public.shin the private source repository, which authorseverything here; nothing in this repository is edited by hand).
A release is now one download:
sz-snowflake-<release>.tar.gzholds the Snowflake NativeApp files, the three role images (
sz-snowflake-setup,-resolver,-replicator; distroless,uid 65532) for
linux/amd64andlinux/arm64as docker archives, and the infrastructure andinstall scripts. The infrastructure SQL and the install script are also attached on their own so
they can be read before the large download, with
SHA256SUMSand a cosign signature per file.There is no image build here and no public image registry: Snowflake users cannot reach one, and
the install script pushes the images to the customer's own Snowflake image repository.
Changes
README.mdrewritten as the customer guide;docs/install.md,docs/use.md,docs/troubleshooting.md;.github/workflows/sign-release.yaml;assets/senzing-logo.jpg(the guide's header);scripts/check_release_assets.sh(the exact file set a release must hold; also run by the signing workflow)LICENSE: was the Apache-2.0 text; now a short file saying the software is licensed under the Senzing End User License Agreement, with the URL (https://senzing.com/end-user-license-agreement/). The EULA text is not copied.CHANGELOG.mdrewritten for the aboveDockerfile,.dockerignore: the images are built in the private repository.github/workflows/docker-build-and-publish.yaml: replaced bysign-release.yaml..github/workflows/README.md(describes internal process),.claude/settings.json(not needed in a customer repository),.github/CODEOWNERS(no reviewer automation).github/dependabot.yml: the docker ecosystem entry goes (no Dockerfile);.gitignore: the payload lines go.github/linters/*, the fleet-standard workflows (labels, project board, Claude attribution check, Claude PR review, dependabot approve and merge, link issues, lint workflows, move to done, spellcheck),.vscode/cspell.jsonThe EULA
Installing is not accepting. After the app exists, an administrator accepts the Senzing EULA in
the app:
CALL SZ_SNOWFLAKE.API.SZ_ACCEPT_EULA('I_ACCEPT_THE_SENZING_EULA')(orsz-snowflake-install.sh --accept-eula). Until then setup refuses with -20109 andSZ_HEALTHreports
EULA_NOT_ACCEPTED. The acceptance is recorded with the time, user and release. The guide(
README.md,docs/install.mdstep 3,docs/troubleshooting.md) covers it. Releases start atSenzing 4.4.3 (
4.4.3-1).The signing workflow
sign-release.yamlruns when a release is published. It authenticates to nothing outside thisrepository and builds nothing. It requires: a tag
<senzing_version>-<build>(e.g.4.4.3-7: nov, an integer build); not a pre-release; a release authored by the publishing account(repository variable
PAYLOAD_PUBLISHER_LOGIN, fails closed when unset); a release notalready signed; exactly the contracted file set matching
SHA256SUMS. It then signs every fileand
SHA256SUMSkeyless (cosign sign-blob), verifies each signature against the identity belowand attaches
<file>.sigstore.json.Customers verify one identity, which names only this repository:
The release itself is created by the private build with a fine-grained token (this repository
only, Contents read/write; it never pushes to a branch), so the ruleset that restricts tag creation
needs to allow that token's account.
Settings needed in this repository
PAYLOAD_PUBLISHER_LOGINSLACK_BOT_TOKEN,SLACK_CHANNELChecks done on this tree
The source repository runs, on every change,
scripts/check_public_refs.sh(no internalreferences: the private organization, spec or milestone names, lab identifiers, Apache or
contribution text) and, before a tag, requires this repository's
mainto equalpublic/.The leak scan used on the build output was also run over this tree.
Also in this pull request (synced 2026-10-30)
section; during the preview any release can make breaking changes (Versions section).
docs/ai-assisted.md: install, resolve and report with an AI assistant (Snowflake Cortex Code,Claude Code), with the Senzing MCP server and a local Streamlit report on the results.
SZ_CONFIGURE,SZ_HEALTH.RESOLVE_STATEas the done signal, setup progress.CONTRIBUTING.md: issues are welcome; contributions and pull requests are not (overrides theorganization default).
Resolves #2