Note:
- this document captures the gaps identified before the current implementation branch
- the branch
feat/test-tag-hash-contractaddresses the trigger contract shift to<test>-<hash>and improves test log visibility - any remaining gaps below should therefore be read as historical analysis unless they are still explicitly present after merge
Based on the latest clarification, the desired trigger contract is:
<test>-<hash>
Where:
testalready encodes the target platform or runtime shape- no extra platform or architecture field is needed
- examples of test names are
k3sandk3sarm hashis the commit hash that generated the test request
The main question is therefore whether a PR in openserverless-operator or openserverless-task can propagate that tag end-to-end, trigger the right GitHub workflow, and execute the corresponding test on the intended infrastructure.
openserverless-testing/.github/workflows/operator-pr-test.yamlacceptsrepository_dispatchwith PR number, ref, sha, repo and selector-like data.nuvolaris/openserverless-operator/.github/workflows/trigger-testing.yamlcurrently enables testing from PR labels, not from a<test>-<hash>tag.
openserverless-testing/.github/workflows/platform-ci-tests.yamlacceptsrepository_dispatchtypeolaris-testing-updateand converts the payload into a git tag.openserverless-testing/.github/workflows/tests.yamlruns the full test suite on any pushed tag matching*-*.nuvolaris/openserverless-taskoriginally had no workflow producer for that dispatch.
platform-ci-tests.yamlalready materializes a tag from two fields:- a logical test identifier
- a second suffix currently named
tag
tests.yamlalready treats the incoming trigger generically as*-*- the historical task flow therefore was structurally closer to
<test>-<hash>than the newer label contract based onkind-amdork3s-arm
Evidence:
- desired contract is now
<test>-<hash> - current trigger implementation added in the PR flow is based on labels like
kind-amd,k3s-amd,k3s-arm
Impact:
- the system is not yet aligned with the latest specification
- a PR tag like
k3s-abcdef1ork3sarm-abcdef1is conceptually different from the currently implemented selector labels
Evidence:
platform-ci-tests.yamlwaits forrepository_dispatch(olaris-testing-update)nuvolaris/openserverless-taskoriginally had no GitHub workflow producing it
Impact:
- a PR on
openserverless-taskcould not trigger anything inopenserverless-testing
Evidence:
tests.yamlreacts generically to any tag matching*-*platform-ci-tests.yamlbuilds a tag from two payload fields, but still names the first fieldplatform- there is no canonical schema for:
- test name
- commit hash
- source repository
- PR number/ref/sha
Impact:
- the system still lacks one explicit contract shared by
operator,task, andtesting - the current codebase does not consistently treat the trigger as
<test>-<hash> - some code paths are semantically aligned already, but their naming is still tied to the older abstraction
Evidence:
platform-ci-tests.yamlturns the payload into a git tag only- that tag does not carry
pr_number,pr_ref,pr_sha, or source repository as first-class workflow inputs tests.yamluses static defaults forOPS_REPOandOPS_BRANCH
Impact:
- a task-triggered run cannot be pinned reliably to the exact PR commit that requested the test unless the commit identity is explicitly reconstructed from the tag
- reruns may test different code than the originally requested change
Evidence:
tests/1-deploy.shhistorically stripped a trailing suffix from the incoming tag- many test scripts historically collapsed values at the first
- - this made sense for forms like
k3s-amdork3s-arm, but not for the new contract where the separator is between test name and commit hash
Impact:
- parsing must be normalized around:
testhash
- not around:
- platform
- architecture
- this matters both in shell parsing and in the workflow payload field names
Evidence:
- deploy/test support in
tests/1-deploy.shis centered on names likekind,k3s-amd,k3s-arm,k8s - the new examples provided are
k3sandk3sarm
Impact:
- there is a naming mismatch between the latest desired contract and the currently supported deploy/test names
- either:
- test names must be normalized to the new canonical names
- or the specification must explicitly preserve the current names
Clarification:
- under the latest requirement, the platform distinction is not a second dimension
- it is already encoded in the test name itself
Evidence:
- active deploy support in
tests/1-deploy.shis limited - several other targets remain commented out
Impact:
- even with a correct
<test>-<hash>contract, only a subset of tests can currently execute end-to-end
Evidence:
- the earlier operator PR flow cloned the PR branch without checking out the requested
PR_SHA
Impact:
- if the branch moved after dispatch, the workflow could test code different from the commit that requested the run
Note:
- this was one of the concrete problems identified during implementation and has already been addressed in the new workflow changes
Evidence:
- operator flow had dedicated PR checkout logic
- generic task tag flow did not clone
openserverless-taskat the requested PR revision
Impact:
- task PRs could not be tested against their actual contents in a deterministic way
Evidence:
- the recent implementation validates selector-like values
- the latest specification says the trigger should be
<test>-<hash>
Impact:
- validation should move to:
- allowed test names
- valid commit-hash format
- instead of validating synthetic platform-architecture pairs
Evidence:
platform-ci-tests.yamlstill refers toclient_payload.platform- several documents and scripts still speak about selector or platform-architecture values
Impact:
- even where behavior is compatible with
<test>-<hash>, the naming remains misleading - future maintenance will be error-prone until the terminology becomes:
testhash- source repo / PR metadata
These earlier findings remain relevant even after the specification change:
- the system needed a real PR trigger for
openserverless-task - the task tag flow was losing PR identity
- parsing was inconsistent and needed normalization
- deploy support was only partial
- deterministic checkout by SHA was missing in some paths
- workflow naming was obscuring the real trigger contract
- A single trigger contract shared by
operator,task, andtesting:- repo
- pr number
- ref
- sha
- tag
<test>-<hash>
- A clear canonical list of test names:
- for example
k3s,k3sarm,kind
- for example
- Parsing logic that extracts:
- test name
- commit hash
- A task-specific workflow in
openserverless-testingthat checks out the requested task PR revision, not just a tag - Deterministic checkout by SHA for both operator and task flows
- A mapping layer in
openserverless-testingfrom canonical test name to the actual infrastructure setup used by the tests - Terminology cleanup so workflows, payloads and docs consistently say:
testhash- not
platform - not
architecture