@ship.zone/ci-spec 2.0.0 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/changelog.md +33 -0
- package/conformance/compile-cases.json +822 -2
- package/conformance/runner-job-cases.json +714 -0
- package/conformance/runner-job-cases.schema.json +134 -0
- package/conformance/runner-jobs/incoherent/artifact-maximum-above-limit.json +91 -0
- package/conformance/runner-jobs/incoherent/build-secret-unknown-target.json +104 -0
- package/conformance/runner-jobs/incoherent/cache-count-above-limit.json +91 -0
- package/conformance/runner-jobs/incoherent/command-argument-above-limit.json +70 -0
- package/conformance/runner-jobs/incoherent/environment-above-limit.json +206 -0
- package/conformance/runner-jobs/incoherent/plan-digest-mismatch.json +70 -0
- package/conformance/runner-jobs/incoherent/precedence-limit-before-digest.json +70 -0
- package/conformance/runner-jobs/incoherent/reserved-prefix-environment.json +71 -0
- package/conformance/runner-jobs/incoherent/reserved-prefix-secret-target.json +72 -0
- package/conformance/runner-jobs/incoherent/reserved-variable-missing.json +69 -0
- package/conformance/runner-jobs/incoherent/reserved-variable-not-canonical.json +70 -0
- package/conformance/runner-jobs/incoherent/secret-target-environment-duplicate.json +72 -0
- package/conformance/runner-jobs/incoherent/secret-target-without-build-secret.json +101 -0
- package/conformance/runner-jobs/incoherent/secret-value-too-short.json +72 -0
- package/conformance/runner-jobs/incoherent/shared-memory-above-memory.json +71 -0
- package/conformance/runner-jobs/incoherent/source-above-limit.json +70 -0
- package/conformance/runner-jobs/invalid/artifacts-feature-missing.json +91 -0
- package/conformance/runner-jobs/invalid/artifacts-none-permission.json +91 -0
- package/conformance/runner-jobs/invalid/build-without-push-permission.json +100 -0
- package/conformance/runner-jobs/invalid/read-write-cache-read-permission.json +91 -0
- package/conformance/runner-jobs/invalid/source-feature-missing.json +70 -0
- package/conformance/runner-jobs/invalid/vm-without-platform.json +81 -0
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/constants.d.ts +42 -0
- package/dist_ts/constants.js +57 -1
- package/package.json +4 -2
- package/readme.md +13 -4
- package/spec/ci-actions.md +12 -5
- package/spec/runner-protocol.md +32 -1
- package/spec/runner.openapi.json +1 -1
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/constants.ts +65 -0
package/changelog.md
CHANGED
|
@@ -1,5 +1,38 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2026-09-27 - 2.1.1
|
|
4
|
+
|
|
5
|
+
### Fixes
|
|
6
|
+
|
|
7
|
+
- state the YAML 1.2 character, byte order mark, escape, and document rules, and bound nesting depth (ci-actions)
|
|
8
|
+
- A C0 control character other than tab, line feed, and carriage return fails with `workflow_yaml_syntax` anywhere, including in a quoted scalar. DEL, C1 control characters other than NEL, U+FFFE, U+FFFF, and U+FEFF are content inside a quoted scalar, as YAML 1.2 requires for JSON compatibility, and fail with `workflow_yaml_syntax` anywhere else.
|
|
9
|
+
- Runs of U+FEFF at the start of a line are byte order marks, not content, before the line on which the document begins, on that line, after a document end marker `...`, and after the document's content when only blank and comment lines follow up to the end of the file or the next `---` or `...` marker, as YAML 1.2 allows a document prefix after a document; the file's own leading byte order mark is the first of them. Any other U+FEFF outside a quoted scalar fails with `workflow_yaml_syntax`.
|
|
10
|
+
- A `\u` high surrogate escape directly followed by a `\u` low surrogate escape denotes one supplementary character, as in JSON; every other escape of a surrogate code point, which RFC 8785 cannot serialize, fails with `workflow_yaml_syntax`.
|
|
11
|
+
- Collections nest at most 64 deep, eight times the depth of the deepest collection a schema-valid workflow holds; a collection of depth 65 fails with `workflow_yaml_syntax`, so a parser can stop there instead of exhausting its stack. Only workflows that fail schema validation are affected.
|
|
12
|
+
- Documents are counted as YAML 1.2 counts them: a `---` marker or content begins a document, and `...` markers, comments, blank lines, and byte order marks begin none. A file of only `...` fails with `workflow_yaml_document_count`, a document followed by several `...` markers is one document, and `--- # comment` is one empty document that fails schema validation.
|
|
13
|
+
- Adds 22 compile vectors: 15 YAML-layer failures, 2 workflows that pass the YAML layer and fail schema validation (depth 64 and an empty explicit document), and 5 compiled workflows that fix byte order mark lines before and after the document, `...` markers, and quoted-scalar content. The test's reference YAML layer decides them.
|
|
14
|
+
- apply the 16 KiB command argument limit to UTF-8 bytes (ci-actions, runner-protocol)
|
|
15
|
+
- Protocol Limits already counted the argument limit after UTF-8 encoding. A command argument of more than 16,384 UTF-8 bytes now has its codes: compilation fails with `command_limit_exceeded`, and Job Coherence lists the rule under `job_command_limit_exceeded`. The schemas keep `maxLength` 16,384, which counts characters.
|
|
16
|
+
- Adds the compile vector `workflow-command-argument-above-limit` and the runner job fixture `conformance/runner-jobs/incoherent/command-argument-above-limit.json`, an argument of 8,193 characters and 16,385 bytes, so every job failure code now has a case.
|
|
17
|
+
|
|
18
|
+
## 2026-09-27 - 2.1.0
|
|
19
|
+
|
|
20
|
+
### Features
|
|
21
|
+
|
|
22
|
+
- export the reserved names of the standard (ci-actions, runner-protocol)
|
|
23
|
+
- The package exports `reservedEnvironmentPrefix` (`SHIPZONE_CI_`), `matrixEnvironmentName` (`SHIPZONE_CI_MATRIX_JSON`), `inputsEnvironmentName` (`SHIPZONE_CI_INPUTS_JSON`), `reservedStepEnvironmentNames`, `npmUserConfigEnvironmentName` (`NPM_CONFIG_USERCONFIG`), `npmBuildSecretId` (`npmrc`), `reservedImageLabelPrefix` (`zone.ship.ci.`), and `reservedImageLabelKeys` (`org.opencontainers.image.revision`, `org.opencontainers.image.source`, `org.opencontainers.image.version`). The tests check every value against the schemas and the prose.
|
|
24
|
+
- define job failure codes for compiled jobs that are not coherent (runner-protocol)
|
|
25
|
+
- The new Job Coherence section lists every coherence rule of a compiled job in one table, with exactly one code per rule: `spec_incompatible`, `job_schema_invalid`, `job_secret_incoherent`, `job_limit_incoherent`, `job_resources_incoherent`, `job_environment_incoherent`, `job_command_limit_exceeded`, `job_secret_inadmissible`, and `job_digest_mismatch`, in precedence order; a job that is not coherent carries the code of the first rule it violates. The coordinator and the runner check a job with its secret values inserted. The rules are unchanged: the table gathers the coherence rules of Capabilities and Matching, the environment rules of the OCI Container Profile, the command limit, secret value admissibility, and the plan digest, and marks the rules the compiled job schema enforces. A runner still abandons such a lease as `runner_error`; `AbandonJobRequest` carries no code.
|
|
26
|
+
- `conformance/runner-job-cases.json` with `conformance/runner-job-cases.schema.json` (exported as `runner-job-cases.json` and `runner-job-cases.schema.json`) lists the codes and 45 cases: every runner job fixture with its outcome, and inline jobs for the version rule. The new `conformance/runner-jobs/incoherent/` holds 15 schema-valid jobs that fail a later rule, and `conformance/runner-jobs/invalid/` gains 6 jobs for the schema-enforced rules that had none. Every code but `job_command_limit_exceeded` has a case that breaks its rule alone.
|
|
27
|
+
- The package exports `runnerJobFailureCodes`, and `ciSpecAssetPaths` gains `runnerJobCases` and `runnerJobCasesSchema`.
|
|
28
|
+
|
|
29
|
+
### Fixes
|
|
30
|
+
|
|
31
|
+
- type-check every test file (package)
|
|
32
|
+
- The `test:types` script quotes its glob, so `tsbuild check` expands `test/**/*` itself instead of the shell.
|
|
33
|
+
- keep the newer-version compile vectors newer (ci-actions)
|
|
34
|
+
- `version-newer-before-schema` and `layer-yaml-before-version` declare `spec: 2.999.0` instead of `2.1.0`, which this release accepts.
|
|
35
|
+
|
|
3
36
|
## 2026-09-27 - 2.0.0
|
|
4
37
|
|
|
5
38
|
### Breaking Changes
|