diff --git a/client_reference/kosli.md b/client_reference/kosli.md
index 971de10..877c1e1 100644
--- a/client_reference/kosli.md
+++ b/client_reference/kosli.md
@@ -18,7 +18,7 @@ Setting the API token to DRY_RUN sets the --dry-run flag.
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-h`, `--help` | bool | help for kosli |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
diff --git a/client_reference/kosli_allow_artifact.md b/client_reference/kosli_allow_artifact.md
index f945051..aa0b7a4 100644
--- a/client_reference/kosli_allow_artifact.md
+++ b/client_reference/kosli_allow_artifact.md
@@ -38,7 +38,10 @@ is set), registry credentials are resolved as follows:
To specify paths in a directory artifact that should always be excluded from the SHA256 calculation, you can add a `.kosli_ignore` file to the root of the artifact.
Each line should specify a relative path or path glob to be ignored. You can include comments in this file, using `#`.
-The `.kosli_ignore` will be treated as part of the artifact like any other file, unless it is explicitly ignored itself.
+The `.kosli_ignore` file is always treated as part of the artifact: its own entries cannot exclude it, so the exclusion list cannot be changed without changing the fingerprint.
+Paths the list already matches stay excluded whatever is later added there, so keep its entries as narrow as possible.
+Excluding the file with `--exclude` keeps it out of the fingerprint but still applies the paths it lists, which lets a writable directory change the list again.
+To drop the file from the fingerprint safely, move its entries to `--exclude` and delete it.
## Flags
| Flag | Type | Description |
@@ -59,7 +62,7 @@ The `.kosli_ignore` will be treated as part of the artifact like any other file,
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_archive_attestation-type.md b/client_reference/kosli_archive_attestation-type.md
index fa86419..f28c2c9 100644
--- a/client_reference/kosli_archive_attestation-type.md
+++ b/client_reference/kosli_archive_attestation-type.md
@@ -24,7 +24,7 @@ New custom attestations using this type cannot be made, but existing attestation
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_archive_control.md b/client_reference/kosli_archive_control.md
index df7bac8..bb865df 100644
--- a/client_reference/kosli_archive_control.md
+++ b/client_reference/kosli_archive_control.md
@@ -30,7 +30,7 @@ via `kosli list controls --archived`, and can be restored with `kosli unarchive
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_archive_environment.md b/client_reference/kosli_archive_environment.md
index 86f134a..b86e4ca 100644
--- a/client_reference/kosli_archive_environment.md
+++ b/client_reference/kosli_archive_environment.md
@@ -24,7 +24,7 @@ The environment will no longer be visible in list of environments, data is still
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_archive_flow.md b/client_reference/kosli_archive_flow.md
index 7440c56..69e2b7b 100644
--- a/client_reference/kosli_archive_flow.md
+++ b/client_reference/kosli_archive_flow.md
@@ -24,7 +24,7 @@ The flow will no longer be visible in list of flows, data is still stored in the
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_assert_artifact.md b/client_reference/kosli_assert_artifact.md
index 6a5c948..0064f6f 100644
--- a/client_reference/kosli_assert_artifact.md
+++ b/client_reference/kosli_assert_artifact.md
@@ -35,7 +35,10 @@ non-zero code if non-compliant status.
To specify paths in a directory artifact that should always be excluded from the SHA256 calculation, you can add a `.kosli_ignore` file to the root of the artifact.
Each line should specify a relative path or path glob to be ignored. You can include comments in this file, using `#`.
-The `.kosli_ignore` will be treated as part of the artifact like any other file, unless it is explicitly ignored itself.
+The `.kosli_ignore` file is always treated as part of the artifact: its own entries cannot exclude it, so the exclusion list cannot be changed without changing the fingerprint.
+Paths the list already matches stay excluded whatever is later added there, so keep its entries as narrow as possible.
+Excluding the file with `--exclude` keeps it out of the fingerprint but still applies the paths it lists, which lets a writable directory change the list again.
+To drop the file from the fingerprint safely, move its entries to `--exclude` and delete it.
## Flags
| Flag | Type | Description |
@@ -58,7 +61,7 @@ The `.kosli_ignore` will be treated as part of the artifact like any other file,
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
@@ -73,7 +76,7 @@ The `.kosli_ignore` will be treated as part of the artifact like any other file,
View an example of the `kosli assert artifact` command in GitHub.
- In [this YAML file](https://github.com/cyber-dojo/differ/blob/bcac1c18385b2573ef6c6e8eeae0f62ed14a03de/.github/workflows/main.yml#L271)
+ In [this YAML file](https://github.com/cyber-dojo/differ/blob/06dc33ad1a46960bd685d00be993098a74a6dca0/.github/workflows/main.yml#L274)
View an example of the `kosli assert artifact` command in GitLab.
diff --git a/client_reference/kosli_assert_pullrequest_azure.md b/client_reference/kosli_assert_pullrequest_azure.md
index 67c55f1..2f67c00 100644
--- a/client_reference/kosli_assert_pullrequest_azure.md
+++ b/client_reference/kosli_assert_pullrequest_azure.md
@@ -29,7 +29,7 @@ if no pull requests were found for the commit.
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_assert_pullrequest_bitbucket.md b/client_reference/kosli_assert_pullrequest_bitbucket.md
index 61184c4..404c8ab 100644
--- a/client_reference/kosli_assert_pullrequest_bitbucket.md
+++ b/client_reference/kosli_assert_pullrequest_bitbucket.md
@@ -31,7 +31,7 @@ Bitbucket app passwords are no longer supported as of 28 July 2026; replace any
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_assert_pullrequest_github.md b/client_reference/kosli_assert_pullrequest_github.md
index 0f36f00..f59f86d 100644
--- a/client_reference/kosli_assert_pullrequest_github.md
+++ b/client_reference/kosli_assert_pullrequest_github.md
@@ -29,7 +29,7 @@ if no pull requests were found for the commit.
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_assert_pullrequest_gitlab.md b/client_reference/kosli_assert_pullrequest_gitlab.md
index ce89ace..d5f21ab 100644
--- a/client_reference/kosli_assert_pullrequest_gitlab.md
+++ b/client_reference/kosli_assert_pullrequest_gitlab.md
@@ -29,7 +29,7 @@ if no merge requests were found for the commit.
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_assert_snapshot.md b/client_reference/kosli_assert_snapshot.md
index d10ca0f..21bd3d4 100644
--- a/client_reference/kosli_assert_snapshot.md
+++ b/client_reference/kosli_assert_snapshot.md
@@ -35,7 +35,7 @@ Examples of valid expressions are:
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_assert_status.md b/client_reference/kosli_assert_status.md
index 5e37336..a21c30a 100644
--- a/client_reference/kosli_assert_status.md
+++ b/client_reference/kosli_assert_status.md
@@ -22,7 +22,7 @@ Exits with non-zero code if the Kosli server down.
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_attach-policy.md b/client_reference/kosli_attach-policy.md
index d7a485a..2bfba31 100644
--- a/client_reference/kosli_attach-policy.md
+++ b/client_reference/kosli_attach-policy.md
@@ -23,7 +23,7 @@ Attach a policy to one or more Kosli environments.
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_attest_artifact.md b/client_reference/kosli_attest_artifact.md
index 0640cbe..9572adb 100644
--- a/client_reference/kosli_attest_artifact.md
+++ b/client_reference/kosli_attest_artifact.md
@@ -38,7 +38,10 @@ is set), registry credentials are resolved as follows:
To specify paths in a directory artifact that should always be excluded from the SHA256 calculation, you can add a `.kosli_ignore` file to the root of the artifact.
Each line should specify a relative path or path glob to be ignored. You can include comments in this file, using `#`.
-The `.kosli_ignore` will be treated as part of the artifact like any other file, unless it is explicitly ignored itself.
+The `.kosli_ignore` file is always treated as part of the artifact: its own entries cannot exclude it, so the exclusion list cannot be changed without changing the fingerprint.
+Paths the list already matches stay excluded whatever is later added there, so keep its entries as narrow as possible.
+Excluding the file with `--exclude` keeps it out of the fingerprint but still applies the paths it lists, which lets a writable directory change the list again.
+To drop the file from the fingerprint safely, move its entries to `--exclude` and delete it.
This command requires access to a git repo to associate the artifact to the git commit it is originating from.
You can optionally redact some of the git commit data sent to Kosli using `--redact-commit-info`.
To record repository information, all three of `--repo-id`, `--repo-url`, and `--repository` must be set together.
@@ -78,7 +81,7 @@ In other CI systems, set them explicitly to capture repository metadata.
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
@@ -93,12 +96,12 @@ In other CI systems, set them explicitly to capture repository metadata.
View an example of the `kosli attest artifact` command in GitHub.
- In [this YAML file](https://github.com/cyber-dojo/reusable-actions-workflows/blob/25f0b797c18403de1c8490a9a71bbe9789c809a9/.github/workflows/secure-docker-build.yml#L210), which created [this Kosli Event](https://app.kosli.com/cyber-dojo/flows/differ-ci/trails/bcac1c18385b2573ef6c6e8eeae0f62ed14a03de?attestation_id=11345222-f37a-4f8d-8051-ec26a321).
+ In [this YAML file](https://github.com/cyber-dojo/reusable-actions-workflows/blob/25f0b797c18403de1c8490a9a71bbe9789c809a9/.github/workflows/secure-docker-build.yml#L210), which created [this Kosli Event](https://app.kosli.com/cyber-dojo/flows/differ-ci/trails/2e9bd969b50fff6b86578d69b7139f2d688ef6e2?attestation_id=054eef05-3aee-49ae-9e4d-55f768b7).
View an example of the `kosli attest artifact` command in GitLab.
- In [this YAML file](https://gitlab.com/cyber-dojo/creator/-/blob/65fd2bfa2478534ea4bc5ccf30f6bfc6aab7550c/.gitlab/workflows/main.yml#L111), which created [this Kosli Event](https://app.kosli.com/cyber-dojo/flows/creator-ci/trails/d64d2b11879179255f11dc991e81fbaf4a040264?attestation_id=61384b36-4d32-43f2-8d5d-a72e2e7e).
+ In [this YAML file](https://gitlab.com/cyber-dojo/creator/-/blob/65fd2bfa2478534ea4bc5ccf30f6bfc6aab7550c/.gitlab/workflows/main.yml#L111), which created [this Kosli Event](https://app.kosli.com/cyber-dojo/flows/creator-ci/trails/99d7b74f39e311d492902ad48dbe97da63f2c687?attestation_id=205424b6-5741-4071-bd36-c26e83f6).
diff --git a/client_reference/kosli_attest_custom.md b/client_reference/kosli_attest_custom.md
index 1887107..3c18e31 100644
--- a/client_reference/kosli_attest_custom.md
+++ b/client_reference/kosli_attest_custom.md
@@ -21,7 +21,10 @@ The attestation can be bound to an *artifact* in two ways:
To specify paths in a directory artifact that should always be excluded from the SHA256 calculation, you can add a `.kosli_ignore` file to the root of the artifact.
Each line should specify a relative path or path glob to be ignored. You can include comments in this file, using `#`.
-The `.kosli_ignore` will be treated as part of the artifact like any other file, unless it is explicitly ignored itself.
+The `.kosli_ignore` file is always treated as part of the artifact: its own entries cannot exclude it, so the exclusion list cannot be changed without changing the fingerprint.
+Paths the list already matches stay excluded whatever is later added there, so keep its entries as narrow as possible.
+Excluding the file with `--exclude` keeps it out of the fingerprint but still applies the paths it lists, which lets a writable directory change the list again.
+To drop the file from the fingerprint safely, move its entries to `--exclude` and delete it.
You can optionally associate the attestation to a git commit using `--commit` (requires access to a git repo).
You can optionally redact some of the git commit data sent to Kosli using `--redact-commit-info`.
@@ -37,7 +40,7 @@ In other CI systems, set them explicitly to capture repository metadata.
| `--annotate` | stringToString | [optional] Annotate the attestation with data using key=value. |
| `-t`, `--artifact-type` | string | The type of the artifact to calculate its SHA256 fingerprint. One of: [oci, docker, file, dir]. Only required if you want Kosli to calculate the fingerprint for you (i.e. when you don't specify '`--fingerprint`' on commands that allow it). |
| `--attachments` | strings | [optional] The comma-separated list of paths of attachments for the reported attestation. Attachments can be files or directories. All attachments are compressed and uploaded to Kosli's evidence vault. |
-| `--attestation-data` | string | The filepath of a json file containing the custom attestation data. |
+| `--attestation-data` | string | The filepath of a JSON file containing the custom attestation data. The maximum JSON payload size is 1MB. |
| `-g`, `--commit` | string | [conditional] The git commit for which the attestation is associated to. Becomes required when reporting an attestation for an artifact before reporting it to Kosli. (defaulted in some CIs: [docs](/integrations/ci_cd) ). |
| `--description` | string | [optional] attestation description |
| `-D`, `--dry-run` | bool | [optional] Run in dry-run mode. When enabled, no data is sent to Kosli and the CLI exits with 0 exit code regardless of any errors. |
@@ -60,14 +63,14 @@ In other CI systems, set them explicitly to capture repository metadata.
| `--repository` | string | [conditional] The name of the repository (e.g. owner/repo-name). All three of `--repo-id`, `--repo-url` and `--repository` must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). |
| `-T`, `--trail` | string | The Kosli trail name. |
| `--type` | string | The name of the custom attestation type. |
-| `-u`, `--user-data` | string | [optional] The path to a JSON file containing additional data you would like to attach to the attestation. |
+| `-u`, `--user-data` | string | [optional] The path to a JSON file containing additional data you would like to attach to the attestation. The maximum JSON payload size is 1MB. |
## Flags inherited from parent commands
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
@@ -82,7 +85,7 @@ In other CI systems, set them explicitly to capture repository metadata.
View an example of the `kosli attest custom` command in GitHub.
- In [this YAML file](https://github.com/cyber-dojo/differ/blob/bcac1c18385b2573ef6c6e8eeae0f62ed14a03de/.github/workflows/main.yml#L168), which created [this Kosli Event](https://app.kosli.com/cyber-dojo/flows/differ-ci/trails/bcac1c18385b2573ef6c6e8eeae0f62ed14a03de?attestation_id=8dfb2b55-0e6d-4d76-8396-4c85e9aa).
+ In [this YAML file](https://github.com/cyber-dojo/differ/blob/2e9bd969b50fff6b86578d69b7139f2d688ef6e2/.github/workflows/main.yml#L168), which created [this Kosli Event](https://app.kosli.com/cyber-dojo/flows/differ-ci/trails/2e9bd969b50fff6b86578d69b7139f2d688ef6e2?attestation_id=46b51e1e-c0db-463e-b8d0-63dd8d20).
diff --git a/client_reference/kosli_attest_decision.md b/client_reference/kosli_attest_decision.md
index 7277301..f3fbf75 100644
--- a/client_reference/kosli_attest_decision.md
+++ b/client_reference/kosli_attest_decision.md
@@ -27,7 +27,10 @@ The attestation can be bound to an *artifact* in two ways:
To specify paths in a directory artifact that should always be excluded from the SHA256 calculation, you can add a `.kosli_ignore` file to the root of the artifact.
Each line should specify a relative path or path glob to be ignored. You can include comments in this file, using `#`.
-The `.kosli_ignore` will be treated as part of the artifact like any other file, unless it is explicitly ignored itself.
+The `.kosli_ignore` file is always treated as part of the artifact: its own entries cannot exclude it, so the exclusion list cannot be changed without changing the fingerprint.
+Paths the list already matches stay excluded whatever is later added there, so keep its entries as narrow as possible.
+Excluding the file with `--exclude` keeps it out of the fingerprint but still applies the paths it lists, which lets a writable directory change the list again.
+To drop the file from the fingerprint safely, move its entries to `--exclude` and delete it.
You can optionally associate the attestation to a git commit using `--commit` (requires access to a git repo).
You can optionally redact some of the git commit data sent to Kosli using `--redact-commit-info`.
@@ -66,14 +69,14 @@ In other CI systems, set them explicitly to capture repository metadata.
| `--repo-url` | string | [conditional] The URL of the repository. Must be a valid URL. All three of `--repo-id`, `--repo-url` and `--repository` must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). |
| `--repository` | string | [conditional] The name of the repository (e.g. owner/repo-name). All three of `--repo-id`, `--repo-url` and `--repository` must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). |
| `-T`, `--trail` | string | The Kosli trail name. |
-| `-u`, `--user-data` | string | [optional] The path to a JSON file containing additional data you would like to attach to the attestation. |
+| `-u`, `--user-data` | string | [optional] The path to a JSON file containing additional data you would like to attach to the attestation. The maximum JSON payload size is 1MB. |
## Flags inherited from parent commands
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_attest_generic.md b/client_reference/kosli_attest_generic.md
index 6170329..574afd3 100644
--- a/client_reference/kosli_attest_generic.md
+++ b/client_reference/kosli_attest_generic.md
@@ -18,7 +18,10 @@ The attestation can be bound to an *artifact* in two ways:
To specify paths in a directory artifact that should always be excluded from the SHA256 calculation, you can add a `.kosli_ignore` file to the root of the artifact.
Each line should specify a relative path or path glob to be ignored. You can include comments in this file, using `#`.
-The `.kosli_ignore` will be treated as part of the artifact like any other file, unless it is explicitly ignored itself.
+The `.kosli_ignore` file is always treated as part of the artifact: its own entries cannot exclude it, so the exclusion list cannot be changed without changing the fingerprint.
+Paths the list already matches stay excluded whatever is later added there, so keep its entries as narrow as possible.
+Excluding the file with `--exclude` keeps it out of the fingerprint but still applies the paths it lists, which lets a writable directory change the list again.
+To drop the file from the fingerprint safely, move its entries to `--exclude` and delete it.
You can optionally associate the attestation to a git commit using `--commit` (requires access to a git repo).
You can optionally redact some of the git commit data sent to Kosli using `--redact-commit-info`.
@@ -56,14 +59,14 @@ In other CI systems, set them explicitly to capture repository metadata.
| `--repo-url` | string | [conditional] The URL of the repository. Must be a valid URL. All three of `--repo-id`, `--repo-url` and `--repository` must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). |
| `--repository` | string | [conditional] The name of the repository (e.g. owner/repo-name). All three of `--repo-id`, `--repo-url` and `--repository` must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). |
| `-T`, `--trail` | string | The Kosli trail name. |
-| `-u`, `--user-data` | string | [optional] The path to a JSON file containing additional data you would like to attach to the attestation. |
+| `-u`, `--user-data` | string | [optional] The path to a JSON file containing additional data you would like to attach to the attestation. The maximum JSON payload size is 1MB. |
## Flags inherited from parent commands
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
@@ -78,12 +81,12 @@ In other CI systems, set them explicitly to capture repository metadata.
View an example of the `kosli attest generic` command in GitHub.
- In [this YAML file](https://github.com/cyber-dojo/dashboard/blob/ff9f292e809801d35246183988b7812826bc2760/.github/workflows/main.yml#L198), which created [this Kosli Event](https://app.kosli.com/cyber-dojo/flows/dashboard-ci/trails/ff9f292e809801d35246183988b7812826bc2760?attestation_id=dcf20aee-975c-4b20-9d25-02c789f8).
+ In [this YAML file](https://github.com/cyber-dojo/dashboard/blob/6b20a423d5ce05139d4480e9ce67f40e3eda2e07/.github/workflows/main.yml#L198), which created [this Kosli Event](https://app.kosli.com/cyber-dojo/flows/dashboard-ci/trails/6b20a423d5ce05139d4480e9ce67f40e3eda2e07?attestation_id=907e3880-bd6b-437c-93ec-5c06d7b7).
View an example of the `kosli attest generic` command in GitLab.
- In [this YAML file](https://gitlab.com/cyber-dojo/creator/-/blob/65fd2bfa2478534ea4bc5ccf30f6bfc6aab7550c/.gitlab/workflows/main.yml#L131), which created [this Kosli Event](https://app.kosli.com/cyber-dojo/flows/creator-ci/trails/d64d2b11879179255f11dc991e81fbaf4a040264?attestation_id=b72fe1fe-90da-4738-a506-d803f5a6).
+ In [this YAML file](https://gitlab.com/cyber-dojo/creator/-/blob/65fd2bfa2478534ea4bc5ccf30f6bfc6aab7550c/.gitlab/workflows/main.yml#L131), which created [this Kosli Event](https://app.kosli.com/cyber-dojo/flows/creator-ci/trails/99d7b74f39e311d492902ad48dbe97da63f2c687?attestation_id=9c8259bd-ae21-40ad-9907-c5b94498).
diff --git a/client_reference/kosli_attest_jira.md b/client_reference/kosli_attest_jira.md
index b38f2b4..792ce5f 100644
--- a/client_reference/kosli_attest_jira.md
+++ b/client_reference/kosli_attest_jira.md
@@ -10,8 +10,15 @@ kosli attest jira [IMAGE-NAME | FILE-PATH | DIR-PATH] [flags]
```
Report a jira attestation to an artifact or a trail in a Kosli flow.
-Parses the given commit's message, current branch name or the content of the `--jira-secondary-source`
-argument for Jira issue references of the form:
+By default, parses the given commit's message, current branch name, or the content of the
+`--jira-secondary-source` argument for Jira issue references.
+Use `--jira-trailer` to read issue keys exclusively from a named git trailer line instead
+(e.g. `Jira: PROJ-42`); only the last block of lines in the commit message is scanned
+(everything after the final blank line, or the whole message if there is no blank line).
+The rest of the commit message and branch name are not scanned.
+`--jira-trailer` and `--jira-secondary-source` are mutually exclusive.
+
+Jira issue references have the form:
'at least 2 characters long, starting with an uppercase letter project key followed by
dash and one or more digits'.
@@ -31,13 +38,19 @@ because `CVE-2026` would be followed by `-4`. This applies across all parsed sou
(commit message, branch name, and secondary source).
Note: if your Jira project key collides with this pattern (e.g. a project key of `CVE`), an
issue reference that happens to be the prefix of a longer hyphenated number (such as a CVE
-identifier) will be filtered out. Use `--jira-secondary-source` with a different identifier
-format as a workaround.
+identifier) will be filtered out. Use `--jira-trailer` to read issue keys from a dedicated
+git trailer line (e.g. `Jira: CVE-42`), which confines scanning to the trailer value and
+removes collisions caused by surrounding commit text; write the issue key alone in the
+trailer value, not embedded in a longer hyphenated string (e.g. `Jira: CVE-2026-41284`
+would still be filtered out). Alternatively, use `--jira-secondary-source` with a different
+identifier format.
If you want to restrict the Jira issue matching to a specific project, use the
`--jira-project-key` flag to specify your own project key. You can specify multiple project keys if needed.
If the `--ignore-branch-match` is set, the branch name is not parsed for a match.
+`--ignore-branch-match` has no effect when `--jira-trailer` is set, since the branch is
+never scanned in trailer mode.
The found issue references will be checked against Jira to confirm their existence.
The attestation is reported in all cases, and its compliance status depends on referencing
@@ -62,7 +75,10 @@ The attestation can be bound to an *artifact* in two ways:
To specify paths in a directory artifact that should always be excluded from the SHA256 calculation, you can add a `.kosli_ignore` file to the root of the artifact.
Each line should specify a relative path or path glob to be ignored. You can include comments in this file, using `#`.
-The `.kosli_ignore` will be treated as part of the artifact like any other file, unless it is explicitly ignored itself.
+The `.kosli_ignore` file is always treated as part of the artifact: its own entries cannot exclude it, so the exclusion list cannot be changed without changing the fingerprint.
+Paths the list already matches stay excluded whatever is later added there, so keep its entries as narrow as possible.
+Excluding the file with `--exclude` keeps it out of the fingerprint but still applies the paths it lists, which lets a writable directory change the list again.
+To drop the file from the fingerprint safely, move its entries to `--exclude` and delete it.
You can optionally associate the attestation to a git commit using `--commit` (requires access to a git repo).
You can optionally redact some of the git commit data sent to Kosli using `--redact-commit-info`.
@@ -94,7 +110,8 @@ In other CI systems, set them explicitly to capture repository metadata.
| `--jira-issue-fields` | string | [optional] The comma separated list of fields to include from the Jira issue. Default no fields are included. '*all' will give all fields. |
| `--jira-pat` | string | Jira personal access token (for self-hosted Jira) |
| `--jira-project-key` | strings | [optional] Jira project key to match against. Can be repeated, or given as a comma-separated list. Defaults to matching any jira project key. |
-| `--jira-secondary-source` | string | [optional] An optional string to search for Jira ticket reference, e.g. '`--jira-secondary-source` $\{\{ github.head_ref \}\}' |
+| `--jira-secondary-source` | string | [optional] An optional string to search for Jira ticket reference, e.g. '`--jira-secondary-source` $\{\{ github.head_ref \}\}'. Mutually exclusive with `--jira-trailer`. |
+| `--jira-trailer` | string | [optional] The git trailer key to use as the sole source of Jira issue references (e.g. '`--jira-trailer` Jira' extracts the value of 'Jira: `issue-key`' lines from the final paragraph of the commit message). When set, the rest of the commit message and branch name are not scanned. Mutually exclusive with `--jira-secondary-source`. |
| `--jira-username` | string | Jira username (for Jira Cloud) |
| `-n`, `--name` | string | The name of the attestation as declared in the flow or trail yaml template. |
| `-o`, `--origin-url` | string | [optional] The url pointing to where the attestation came from or is related. (defaulted to the CI url in some CIs: [docs](/integrations/ci_cd/#defaulted-kosli-command-flags-from-ci-variables) ). |
@@ -108,14 +125,14 @@ In other CI systems, set them explicitly to capture repository metadata.
| `--repo-url` | string | [conditional] The URL of the repository. Must be a valid URL. All three of `--repo-id`, `--repo-url` and `--repository` must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). |
| `--repository` | string | [conditional] The name of the repository (e.g. owner/repo-name). All three of `--repo-id`, `--repo-url` and `--repository` must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). |
| `-T`, `--trail` | string | The Kosli trail name. |
-| `-u`, `--user-data` | string | [optional] The path to a JSON file containing additional data you would like to attach to the attestation. |
+| `-u`, `--user-data` | string | [optional] The path to a JSON file containing additional data you would like to attach to the attestation. The maximum JSON payload size is 1MB. |
## Flags inherited from parent commands
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
@@ -224,6 +241,32 @@ kosli attest jira
--jira-base-url https://kosli.atlassian.net
--jira-username user@domain.com
--jira-api-token yourJiraAPIToken
+
+```
+
+
+```shell
+
+```
+
+
+```shell
+
+```
+
+
+```shell
+
+```
+
+
+```shell
+kosli attest jira
+ --name yourAttestationName
+ --jira-trailer Jira
+ --jira-base-url https://kosli.atlassian.net
+ --jira-username user@domain.com
+ --jira-api-token yourJiraAPIToken
```
diff --git a/client_reference/kosli_attest_junit.md b/client_reference/kosli_attest_junit.md
index 70aa78c..04e5fcb 100644
--- a/client_reference/kosli_attest_junit.md
+++ b/client_reference/kosli_attest_junit.md
@@ -22,7 +22,10 @@ The attestation can be bound to an *artifact* in two ways:
To specify paths in a directory artifact that should always be excluded from the SHA256 calculation, you can add a `.kosli_ignore` file to the root of the artifact.
Each line should specify a relative path or path glob to be ignored. You can include comments in this file, using `#`.
-The `.kosli_ignore` will be treated as part of the artifact like any other file, unless it is explicitly ignored itself.
+The `.kosli_ignore` file is always treated as part of the artifact: its own entries cannot exclude it, so the exclusion list cannot be changed without changing the fingerprint.
+Paths the list already matches stay excluded whatever is later added there, so keep its entries as narrow as possible.
+Excluding the file with `--exclude` keeps it out of the fingerprint but still applies the paths it lists, which lets a writable directory change the list again.
+To drop the file from the fingerprint safely, move its entries to `--exclude` and delete it.
You can optionally associate the attestation to a git commit using `--commit` (requires access to a git repo).
You can optionally redact some of the git commit data sent to Kosli using `--redact-commit-info`.
@@ -61,14 +64,14 @@ In other CI systems, set them explicitly to capture repository metadata.
| `-R`, `--results-dir` | string | [defaulted] The path to a directory with JUnit test results. By default, the directory will be uploaded to Kosli's evidence vault. (default ".") |
| `-T`, `--trail` | string | The Kosli trail name. |
| `--upload-results` | bool | [defaulted] Whether to upload the provided Junit results directory as an attachment to Kosli or not. (default true) |
-| `-u`, `--user-data` | string | [optional] The path to a JSON file containing additional data you would like to attach to the attestation. |
+| `-u`, `--user-data` | string | [optional] The path to a JSON file containing additional data you would like to attach to the attestation. The maximum JSON payload size is 1MB. |
## Flags inherited from parent commands
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
@@ -83,12 +86,12 @@ In other CI systems, set them explicitly to capture repository metadata.
View an example of the `kosli attest junit` command in GitHub.
- In [this YAML file](https://github.com/cyber-dojo/differ/blob/bcac1c18385b2573ef6c6e8eeae0f62ed14a03de/.github/workflows/main.yml#L101), which created [this Kosli Event](https://app.kosli.com/cyber-dojo/flows/differ-ci/trails/bcac1c18385b2573ef6c6e8eeae0f62ed14a03de?attestation_id=1143f5cc-9e0e-4bbc-a6bd-be16b348).
+ In [this YAML file](https://github.com/cyber-dojo/differ/blob/2e9bd969b50fff6b86578d69b7139f2d688ef6e2/.github/workflows/main.yml#L101), which created [this Kosli Event](https://app.kosli.com/cyber-dojo/flows/differ-ci/trails/2e9bd969b50fff6b86578d69b7139f2d688ef6e2?attestation_id=e6d4ca97-543f-43e2-85c5-24013053).
View an example of the `kosli attest junit` command in GitLab.
- In [this YAML file](https://gitlab.com/cyber-dojo/creator/-/blob/65fd2bfa2478534ea4bc5ccf30f6bfc6aab7550c/.gitlab/workflows/main.yml#L126), which created [this Kosli Event](https://app.kosli.com/cyber-dojo/flows/creator-ci/trails/d64d2b11879179255f11dc991e81fbaf4a040264?attestation_id=bea54670-c4f5-4e14-93b1-e234c111).
+ In [this YAML file](https://gitlab.com/cyber-dojo/creator/-/blob/65fd2bfa2478534ea4bc5ccf30f6bfc6aab7550c/.gitlab/workflows/main.yml#L126), which created [this Kosli Event](https://app.kosli.com/cyber-dojo/flows/creator-ci/trails/99d7b74f39e311d492902ad48dbe97da63f2c687?attestation_id=5401706d-eaca-41ff-a481-7fc8a1b8).
diff --git a/client_reference/kosli_attest_pullrequest_azure.md b/client_reference/kosli_attest_pullrequest_azure.md
index 0bf0628..bdce727 100644
--- a/client_reference/kosli_attest_pullrequest_azure.md
+++ b/client_reference/kosli_attest_pullrequest_azure.md
@@ -20,7 +20,10 @@ The attestation can be bound to an *artifact* in two ways:
To specify paths in a directory artifact that should always be excluded from the SHA256 calculation, you can add a `.kosli_ignore` file to the root of the artifact.
Each line should specify a relative path or path glob to be ignored. You can include comments in this file, using `#`.
-The `.kosli_ignore` will be treated as part of the artifact like any other file, unless it is explicitly ignored itself.
+The `.kosli_ignore` file is always treated as part of the artifact: its own entries cannot exclude it, so the exclusion list cannot be changed without changing the fingerprint.
+Paths the list already matches stay excluded whatever is later added there, so keep its entries as narrow as possible.
+Excluding the file with `--exclude` keeps it out of the fingerprint but still applies the paths it lists, which lets a writable directory change the list again.
+To drop the file from the fingerprint safely, move its entries to `--exclude` and delete it.
## Flags
| Flag | Type | Description |
@@ -53,14 +56,14 @@ The `.kosli_ignore` will be treated as part of the artifact like any other file,
| `--repo-url` | string | [conditional] The URL of the repository. Must be a valid URL. All three of `--repo-id`, `--repo-url` and `--repository` must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). |
| `--repository` | string | [conditional] The name of the repository (e.g. owner/repo-name). All three of `--repo-id`, `--repo-url` and `--repository` must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). |
| `-T`, `--trail` | string | The Kosli trail name. |
-| `-u`, `--user-data` | string | [optional] The path to a JSON file containing additional data you would like to attach to the attestation. |
+| `-u`, `--user-data` | string | [optional] The path to a JSON file containing additional data you would like to attach to the attestation. The maximum JSON payload size is 1MB. |
## Flags inherited from parent commands
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_attest_pullrequest_bitbucket.md b/client_reference/kosli_attest_pullrequest_bitbucket.md
index fcc7b0a..de143b5 100644
--- a/client_reference/kosli_attest_pullrequest_bitbucket.md
+++ b/client_reference/kosli_attest_pullrequest_bitbucket.md
@@ -22,7 +22,10 @@ The attestation can be bound to an *artifact* in two ways:
To specify paths in a directory artifact that should always be excluded from the SHA256 calculation, you can add a `.kosli_ignore` file to the root of the artifact.
Each line should specify a relative path or path glob to be ignored. You can include comments in this file, using `#`.
-The `.kosli_ignore` will be treated as part of the artifact like any other file, unless it is explicitly ignored itself.
+The `.kosli_ignore` file is always treated as part of the artifact: its own entries cannot exclude it, so the exclusion list cannot be changed without changing the fingerprint.
+Paths the list already matches stay excluded whatever is later added there, so keep its entries as narrow as possible.
+Excluding the file with `--exclude` keeps it out of the fingerprint but still applies the paths it lists, which lets a writable directory change the list again.
+To drop the file from the fingerprint safely, move its entries to `--exclude` and delete it.
## Flags
| Flag | Type | Description |
@@ -56,14 +59,14 @@ The `.kosli_ignore` will be treated as part of the artifact like any other file,
| `--repo-url` | string | [conditional] The URL of the repository. Must be a valid URL. All three of `--repo-id`, `--repo-url` and `--repository` must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). |
| `--repository` | string | [conditional] The name of the repository (e.g. owner/repo-name). All three of `--repo-id`, `--repo-url` and `--repository` must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). |
| `-T`, `--trail` | string | The Kosli trail name. |
-| `-u`, `--user-data` | string | [optional] The path to a JSON file containing additional data you would like to attach to the attestation. |
+| `-u`, `--user-data` | string | [optional] The path to a JSON file containing additional data you would like to attach to the attestation. The maximum JSON payload size is 1MB. |
## Flags inherited from parent commands
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_attest_pullrequest_github.md b/client_reference/kosli_attest_pullrequest_github.md
index 877869c..caeccd5 100644
--- a/client_reference/kosli_attest_pullrequest_github.md
+++ b/client_reference/kosli_attest_pullrequest_github.md
@@ -20,7 +20,10 @@ The attestation can be bound to an *artifact* in two ways:
To specify paths in a directory artifact that should always be excluded from the SHA256 calculation, you can add a `.kosli_ignore` file to the root of the artifact.
Each line should specify a relative path or path glob to be ignored. You can include comments in this file, using `#`.
-The `.kosli_ignore` will be treated as part of the artifact like any other file, unless it is explicitly ignored itself.
+The `.kosli_ignore` file is always treated as part of the artifact: its own entries cannot exclude it, so the exclusion list cannot be changed without changing the fingerprint.
+Paths the list already matches stay excluded whatever is later added there, so keep its entries as narrow as possible.
+Excluding the file with `--exclude` keeps it out of the fingerprint but still applies the paths it lists, which lets a writable directory change the list again.
+To drop the file from the fingerprint safely, move its entries to `--exclude` and delete it.
## Flags
| Flag | Type | Description |
@@ -53,14 +56,14 @@ The `.kosli_ignore` will be treated as part of the artifact like any other file,
| `--repo-url` | string | [conditional] The URL of the repository. Must be a valid URL. All three of `--repo-id`, `--repo-url` and `--repository` must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). |
| `--repository` | string | [conditional] The name of the repository (e.g. owner/repo-name). All three of `--repo-id`, `--repo-url` and `--repository` must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). |
| `-T`, `--trail` | string | The Kosli trail name. |
-| `-u`, `--user-data` | string | [optional] The path to a JSON file containing additional data you would like to attach to the attestation. |
+| `-u`, `--user-data` | string | [optional] The path to a JSON file containing additional data you would like to attach to the attestation. The maximum JSON payload size is 1MB. |
## Flags inherited from parent commands
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
@@ -75,7 +78,7 @@ The `.kosli_ignore` will be treated as part of the artifact like any other file,
View an example of the `kosli attest pullrequest github` command in GitHub.
- In [this YAML file](https://github.com/cyber-dojo/differ/blob/bcac1c18385b2573ef6c6e8eeae0f62ed14a03de/.github/workflows/main.yml#L81), which created [this Kosli Event](https://app.kosli.com/cyber-dojo/flows/differ-ci/trails/bcac1c18385b2573ef6c6e8eeae0f62ed14a03de?attestation_id=7cf44301-0ca2-4b1f-9ce2-6f17ee0d).
+ In [this YAML file](https://github.com/cyber-dojo/differ/blob/2e9bd969b50fff6b86578d69b7139f2d688ef6e2/.github/workflows/main.yml#L81), which created [this Kosli Event](https://app.kosli.com/cyber-dojo/flows/differ-ci/trails/2e9bd969b50fff6b86578d69b7139f2d688ef6e2?attestation_id=4074789c-67a2-4c79-ac47-e98c308b).
diff --git a/client_reference/kosli_attest_pullrequest_gitlab.md b/client_reference/kosli_attest_pullrequest_gitlab.md
index d4845f3..c4f1618 100644
--- a/client_reference/kosli_attest_pullrequest_gitlab.md
+++ b/client_reference/kosli_attest_pullrequest_gitlab.md
@@ -20,7 +20,10 @@ The attestation can be bound to an *artifact* in two ways:
To specify paths in a directory artifact that should always be excluded from the SHA256 calculation, you can add a `.kosli_ignore` file to the root of the artifact.
Each line should specify a relative path or path glob to be ignored. You can include comments in this file, using `#`.
-The `.kosli_ignore` will be treated as part of the artifact like any other file, unless it is explicitly ignored itself.
+The `.kosli_ignore` file is always treated as part of the artifact: its own entries cannot exclude it, so the exclusion list cannot be changed without changing the fingerprint.
+Paths the list already matches stay excluded whatever is later added there, so keep its entries as narrow as possible.
+Excluding the file with `--exclude` keeps it out of the fingerprint but still applies the paths it lists, which lets a writable directory change the list again.
+To drop the file from the fingerprint safely, move its entries to `--exclude` and delete it.
## Flags
| Flag | Type | Description |
@@ -53,14 +56,14 @@ The `.kosli_ignore` will be treated as part of the artifact like any other file,
| `--repo-url` | string | [conditional] The URL of the repository. Must be a valid URL. All three of `--repo-id`, `--repo-url` and `--repository` must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). |
| `--repository` | string | [conditional] The name of the repository (e.g. owner/repo-name). All three of `--repo-id`, `--repo-url` and `--repository` must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). |
| `-T`, `--trail` | string | The Kosli trail name. |
-| `-u`, `--user-data` | string | [optional] The path to a JSON file containing additional data you would like to attach to the attestation. |
+| `-u`, `--user-data` | string | [optional] The path to a JSON file containing additional data you would like to attach to the attestation. The maximum JSON payload size is 1MB. |
## Flags inherited from parent commands
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
@@ -75,7 +78,7 @@ The `.kosli_ignore` will be treated as part of the artifact like any other file,
View an example of the `kosli attest pullrequest gitlab` command in GitLab.
- In [this YAML file](https://gitlab.com/cyber-dojo/creator/-/blob/65fd2bfa2478534ea4bc5ccf30f6bfc6aab7550c/.gitlab/workflows/main.yml#L75), which created [this Kosli Event](https://app.kosli.com/cyber-dojo/flows/creator-ci/trails/d64d2b11879179255f11dc991e81fbaf4a040264?attestation_id=c02a9fb9-70fd-44e8-80f0-ec85ea83).
+ In [this YAML file](https://gitlab.com/cyber-dojo/creator/-/blob/65fd2bfa2478534ea4bc5ccf30f6bfc6aab7550c/.gitlab/workflows/main.yml#L75), which created [this Kosli Event](https://app.kosli.com/cyber-dojo/flows/creator-ci/trails/99d7b74f39e311d492902ad48dbe97da63f2c687?attestation_id=a70287f4-c9fa-4072-9221-34faa89d).
diff --git a/client_reference/kosli_attest_snyk.md b/client_reference/kosli_attest_snyk.md
index d04247e..1b61881 100644
--- a/client_reference/kosli_attest_snyk.md
+++ b/client_reference/kosli_attest_snyk.md
@@ -26,7 +26,10 @@ The attestation can be bound to an *artifact* in two ways:
To specify paths in a directory artifact that should always be excluded from the SHA256 calculation, you can add a `.kosli_ignore` file to the root of the artifact.
Each line should specify a relative path or path glob to be ignored. You can include comments in this file, using `#`.
-The `.kosli_ignore` will be treated as part of the artifact like any other file, unless it is explicitly ignored itself.
+The `.kosli_ignore` file is always treated as part of the artifact: its own entries cannot exclude it, so the exclusion list cannot be changed without changing the fingerprint.
+Paths the list already matches stay excluded whatever is later added there, so keep its entries as narrow as possible.
+Excluding the file with `--exclude` keeps it out of the fingerprint but still applies the paths it lists, which lets a writable directory change the list again.
+To drop the file from the fingerprint safely, move its entries to `--exclude` and delete it.
You can optionally associate the attestation to a git commit using `--commit` (requires access to a git repo).
You can optionally redact some of the git commit data sent to Kosli using `--redact-commit-info`.
@@ -65,14 +68,14 @@ In other CI systems, set them explicitly to capture repository metadata.
| `-R`, `--scan-results` | string | The path to Snyk scan SARIF results file from 'snyk test' and 'snyk container test'. By default, the Snyk results will be uploaded to Kosli's evidence vault. |
| `-T`, `--trail` | string | The Kosli trail name. |
| `--upload-results` | bool | [defaulted] Whether to upload the provided Snyk results file as an attachment to Kosli or not. (default true) |
-| `-u`, `--user-data` | string | [optional] The path to a JSON file containing additional data you would like to attach to the attestation. |
+| `-u`, `--user-data` | string | [optional] The path to a JSON file containing additional data you would like to attach to the attestation. The maximum JSON payload size is 1MB. |
## Flags inherited from parent commands
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_attest_sonar.md b/client_reference/kosli_attest_sonar.md
index f997c9a..be11c65 100644
--- a/client_reference/kosli_attest_sonar.md
+++ b/client_reference/kosli_attest_sonar.md
@@ -46,7 +46,10 @@ The attestation can be bound to an *artifact* in two ways:
To specify paths in a directory artifact that should always be excluded from the SHA256 calculation, you can add a `.kosli_ignore` file to the root of the artifact.
Each line should specify a relative path or path glob to be ignored. You can include comments in this file, using `#`.
-The `.kosli_ignore` will be treated as part of the artifact like any other file, unless it is explicitly ignored itself.
+The `.kosli_ignore` file is always treated as part of the artifact: its own entries cannot exclude it, so the exclusion list cannot be changed without changing the fingerprint.
+Paths the list already matches stay excluded whatever is later added there, so keep its entries as narrow as possible.
+Excluding the file with `--exclude` keeps it out of the fingerprint but still applies the paths it lists, which lets a writable directory change the list again.
+To drop the file from the fingerprint safely, move its entries to `--exclude` and delete it.
## Flags
| Flag | Type | Description |
@@ -84,14 +87,14 @@ The `.kosli_ignore` will be treated as part of the artifact like any other file,
| `--sonar-server-url` | string | [conditional] The URL of your SonarQube server. Only required if you are using SonarQube Server and not using SonarQube's metadata file to get scan results. (default "https://sonarcloud.io") |
| `--sonar-working-dir` | string | [conditional] The base directory of the repo scanned by SonarQube. Only required if you have overridden the default in the Sonar scanner or you are running the CLI locally in a separate folder from the repo. (default ".scannerwork") |
| `-T`, `--trail` | string | The Kosli trail name. |
-| `-u`, `--user-data` | string | [optional] The path to a JSON file containing additional data you would like to attach to the attestation. |
+| `-u`, `--user-data` | string | [optional] The path to a JSON file containing additional data you would like to attach to the attestation. The maximum JSON payload size is 1MB. |
## Flags inherited from parent commands
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
@@ -106,7 +109,7 @@ The `.kosli_ignore` will be treated as part of the artifact like any other file,
View an example of the `kosli attest sonar` command in GitHub.
- In [this YAML file](https://github.com/cyber-dojo/dashboard/blob/ff9f292e809801d35246183988b7812826bc2760/.github/workflows/main.yml#L123), which created [this Kosli Event](https://app.kosli.com/cyber-dojo/flows/dashboard-ci/trails/ff9f292e809801d35246183988b7812826bc2760?attestation_id=6d693383-c6de-4551-8a29-1025803a).
+ In [this YAML file](https://github.com/cyber-dojo/dashboard/blob/6b20a423d5ce05139d4480e9ce67f40e3eda2e07/.github/workflows/main.yml#L123), which created [this Kosli Event](https://app.kosli.com/cyber-dojo/flows/dashboard-ci/trails/6b20a423d5ce05139d4480e9ce67f40e3eda2e07?attestation_id=484f07e3-f170-4790-9b2e-0c5b6688).
diff --git a/client_reference/kosli_begin_trail.md b/client_reference/kosli_begin_trail.md
index 507ad3c..157c64f 100644
--- a/client_reference/kosli_begin_trail.md
+++ b/client_reference/kosli_begin_trail.md
@@ -38,14 +38,14 @@ In other CI systems, set them explicitly to capture repository metadata.
| `--repo-url` | string | [conditional] The URL of the repository. Must be a valid URL. All three of `--repo-id`, `--repo-url` and `--repository` must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). |
| `--repository` | string | [conditional] The name of the repository (e.g. owner/repo-name). All three of `--repo-id`, `--repo-url` and `--repository` must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). |
| `-f`, `--template-file` | string | [optional] The path to a yaml template file. |
-| `-u`, `--user-data` | string | [optional] The path to a JSON file containing additional data you would like to attach to the flow trail. |
+| `-u`, `--user-data` | string | [optional] The path to a JSON file containing additional data you would like to attach to the flow trail. The maximum JSON payload size is 1MB. |
## Flags inherited from parent commands
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
@@ -60,12 +60,12 @@ In other CI systems, set them explicitly to capture repository metadata.
View an example of the `kosli begin trail` command in GitHub.
- In [this YAML file](https://github.com/cyber-dojo/runner/blob/ca65b67c3e311fbdd2435609fdb6f8a5479f66f9/.github/workflows/main.yml#L78), which created [this Kosli Event](https://app.kosli.com/cyber-dojo/flows/runner-ci/trails/ca65b67c3e311fbdd2435609fdb6f8a5479f66f9?attestation_id=1).
+ In [this YAML file](https://github.com/cyber-dojo/runner/blob/4b2bfc038576e2a7648090c4c1289fbc9ebfc481/.github/workflows/main.yml#L78), which created [this Kosli Event](https://app.kosli.com/cyber-dojo/flows/runner-ci/trails/4b2bfc038576e2a7648090c4c1289fbc9ebfc481?attestation_id=1).
View an example of the `kosli begin trail` command in GitLab.
- In [this YAML file](https://gitlab.com/cyber-dojo/creator/-/blob/65fd2bfa2478534ea4bc5ccf30f6bfc6aab7550c/.gitlab/workflows/main.yml#L55), which created [this Kosli Event](https://app.kosli.com/cyber-dojo/flows/creator-ci/trails/d64d2b11879179255f11dc991e81fbaf4a040264?attestation_id=1).
+ In [this YAML file](https://gitlab.com/cyber-dojo/creator/-/blob/65fd2bfa2478534ea4bc5ccf30f6bfc6aab7550c/.gitlab/workflows/main.yml#L55), which created [this Kosli Event](https://app.kosli.com/cyber-dojo/flows/creator-ci/trails/99d7b74f39e311d492902ad48dbe97da63f2c687?attestation_id=1).
diff --git a/client_reference/kosli_completion.md b/client_reference/kosli_completion.md
index b66eadc..4715e08 100644
--- a/client_reference/kosli_completion.md
+++ b/client_reference/kosli_completion.md
@@ -68,7 +68,7 @@ you will need to enable it. You can execute the following once:
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_config.md b/client_reference/kosli_config.md
index 5fe439b..2a6fd0c 100644
--- a/client_reference/kosli_config.md
+++ b/client_reference/kosli_config.md
@@ -1,6 +1,6 @@
---
title: "kosli config"
-description: "Config global Kosli flags values and store them in $HOME/.kosli . "
+description: "Config global Kosli flags values and store them in $HOME/.kosli.yml . "
---
## Synopsis
@@ -9,13 +9,16 @@ description: "Config global Kosli flags values and store them in $HOME/.kosli .
kosli config [flags]
```
-Config global Kosli flags values and store them in $HOME/.kosli .
+Config global Kosli flags values and store them in $HOME/.kosli.yml .
Flag values are determined in the following order (highest precedence first):
- command line flags on each executed command.
- environment variables.
-- custom config file provided with --config-file flag.
-- default config file in $HOME/.kosli
+- custom config file provided with the --config-file flag or the KOSLI_CONFIG_FILE env var.
+- default config file in $HOME/.kosli.yml
+
+A config file in the directory a command runs from is never read unless it is named
+with --config-file or KOSLI_CONFIG_FILE.
You can configure global Kosli flags (the ones that apply to all/most commands) using their dedicated
convenience flags (e.g. --org).
@@ -38,7 +41,7 @@ Keys correspond to the specific flag name, capitalized. For instance: --flow wou
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_create_api-key.md b/client_reference/kosli_create_api-key.md
index e99aad1..6a19f19 100644
--- a/client_reference/kosli_create_api-key.md
+++ b/client_reference/kosli_create_api-key.md
@@ -28,7 +28,7 @@ The key value is only returned once, at creation time, so make sure to store it
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_create_attestation-type.md b/client_reference/kosli_create_attestation-type.md
index 59b3155..a41bd85 100644
--- a/client_reference/kosli_create_attestation-type.md
+++ b/client_reference/kosli_create_attestation-type.md
@@ -54,7 +54,7 @@ Attestation types created without a summary fall back to the `jq` evaluation rul
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_create_control.md b/client_reference/kosli_create_control.md
index e500490..2f2ccac 100644
--- a/client_reference/kosli_create_control.md
+++ b/client_reference/kosli_create_control.md
@@ -32,7 +32,7 @@ Create a Kosli control.
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_create_environment.md b/client_reference/kosli_create_environment.md
index 8ee8b2d..996d657 100644
--- a/client_reference/kosli_create_environment.md
+++ b/client_reference/kosli_create_environment.md
@@ -46,7 +46,7 @@ to them.
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_create_flow.md b/client_reference/kosli_create_flow.md
index 6c295a1..15671fb 100644
--- a/client_reference/kosli_create_flow.md
+++ b/client_reference/kosli_create_flow.md
@@ -31,7 +31,7 @@ You can specify flow parameters in flags.
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
@@ -46,7 +46,7 @@ You can specify flow parameters in flags.
View an example of the `kosli create flow` command in GitHub.
- In [this YAML file](https://github.com/cyber-dojo/runner/blob/ca65b67c3e311fbdd2435609fdb6f8a5479f66f9/.github/workflows/main.yml#L62)
+ In [this YAML file](https://github.com/cyber-dojo/runner/blob/4b2bfc038576e2a7648090c4c1289fbc9ebfc481/.github/workflows/main.yml#L62)
View an example of the `kosli create flow` command in GitLab.
diff --git a/client_reference/kosli_create_policy.md b/client_reference/kosli_create_policy.md
index 4d4244c..6b05125 100644
--- a/client_reference/kosli_create_policy.md
+++ b/client_reference/kosli_create_policy.md
@@ -25,7 +25,7 @@ Updating policy content creates a new version of the policy.
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_create_service-account.md b/client_reference/kosli_create_service-account.md
index c1ec1ce..54652ab 100644
--- a/client_reference/kosli_create_service-account.md
+++ b/client_reference/kosli_create_service-account.md
@@ -27,7 +27,7 @@ created separately for it with `kosli create api-key`.
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_delete_api-key.md b/client_reference/kosli_delete_api-key.md
index 995a5a8..f1d0419 100644
--- a/client_reference/kosli_delete_api-key.md
+++ b/client_reference/kosli_delete_api-key.md
@@ -31,7 +31,7 @@ command fails without deleting anything, so pass `--assume-yes` there.
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_delete_service-account.md b/client_reference/kosli_delete_service-account.md
index 266a3a4..102f4ea 100644
--- a/client_reference/kosli_delete_service-account.md
+++ b/client_reference/kosli_delete_service-account.md
@@ -31,7 +31,7 @@ command fails without deleting anything, so pass `--assume-yes` there.
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_detach-policy.md b/client_reference/kosli_detach-policy.md
index 81aa62e..f3f04c9 100644
--- a/client_reference/kosli_detach-policy.md
+++ b/client_reference/kosli_detach-policy.md
@@ -23,7 +23,7 @@ If the environment has no more policies attached to it, then its snapshots' stat
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_diff_snapshots.md b/client_reference/kosli_diff_snapshots.md
index e1da6ae..548d82b 100644
--- a/client_reference/kosli_diff_snapshots.md
+++ b/client_reference/kosli_diff_snapshots.md
@@ -40,7 +40,7 @@ Specify SNAPPISH_1 and SNAPPISH_2 by:
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
@@ -66,104 +66,178 @@ kosli diff snapshots aws-beta aws-prod --output=json
```json
{
"snappish1": {
- "snapshot_id": "aws-beta#8249",
- "artifacts": []
- },
- "snappish2": {
- "snapshot_id": "aws-prod#5309",
- "artifacts": []
- },
- "changed": {
- "artifacts": []
- },
- "not-changed": {
+ "snapshot_id": "aws-beta#8350",
"artifacts": [
{
- "fingerprint": "03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab",
- "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/differ:bcac1c1@sha256:03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab",
- "most_recent_timestamp": 1788255749,
- "flow": "differ-ci",
- "commit_url": "https://github.com/cyber-dojo/differ/commit/bcac1c18385b2573ef6c6e8eeae0f62ed14a03de",
+ "fingerprint": "1d819a21e793bffbe50a39c9b6b8c4154e0b4271051931839dc8a2fa0c564e2a",
+ "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/nginx:2e1a942@sha256:1d819a21e793bffbe50a39c9b6b8c4154e0b4271051931839dc8a2fa0c564e2a",
+ "most_recent_timestamp": 1788966072,
+ "flow": "nginx-ci",
+ "commit_url": "https://github.com/cyber-dojo/nginx/commit/2e1a942c3d17cae29db3bc94336f06773e3573c3",
"instance_count": 1
},
{
- "fingerprint": "06f85cc53010535e46f13c348a1aaf5c8dfee0c0fea7f81105312b6c87d5d05f",
- "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/saver:84e986a@sha256:06f85cc53010535e46f13c348a1aaf5c8dfee0c0fea7f81105312b6c87d5d05f",
- "most_recent_timestamp": 1788255396,
+ "fingerprint": "1ff25328272b6a1c85d6751e326b2d941cf927a040a41e2e3cb96b606b01709f",
+ "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/exercises-start-points:c61d934@sha256:1ff25328272b6a1c85d6751e326b2d941cf927a040a41e2e3cb96b606b01709f",
+ "most_recent_timestamp": 1788966002,
+ "flow": "exercises-start-points-ci",
+ "commit_url": "https://github.com/cyber-dojo/exercises-start-points/commit/c61d9342b4008c664ffdabaf851538ede9085b76",
+ "instance_count": 1
+ },
+ {
+ "fingerprint": "7a8cbbe05f8659a3ad37e537756c313dcb10e25e49ed1a1c9a656bde472ce887",
+ "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/web:75d91ed@sha256:7a8cbbe05f8659a3ad37e537756c313dcb10e25e49ed1a1c9a656bde472ce887",
+ "most_recent_timestamp": 1788966515,
+ "flow": "web-ci",
+ "commit_url": "https://github.com/cyber-dojo/web/commit/75d91edd753298bf7e4f9b07ae20ba16707dea5f",
+ "instance_count": 3
+ },
+ {
+ "fingerprint": "7b246678863435a956925627616acd8969d0f23b3b9f3db375e7ed0f68e3373a",
+ "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/saver:de3178a@sha256:7b246678863435a956925627616acd8969d0f23b3b9f3db375e7ed0f68e3373a",
+ "most_recent_timestamp": 1788966207,
"flow": "saver-ci",
- "commit_url": "https://github.com/cyber-dojo/saver/commit/84e986ad70d32e9be362d5bd9ce7c7af94f6eaab",
+ "commit_url": "https://github.com/cyber-dojo/saver/commit/de3178a3d647276644a0dde662af8a53005c97d2",
"instance_count": 1
},
{
- "fingerprint": "1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21",
- "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/nginx:27b3504@sha256:1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21",
- "most_recent_timestamp": 1788255750,
- "flow": "nginx-ci",
- "commit_url": "https://github.com/cyber-dojo/nginx/commit/27b350410ebcca5ff192f2ca4cdd0e3e49f5ac65",
+ "fingerprint": "b250b0603dd70628fdf46ff1e73cb29491febf5f4e127728f2a2e4a7aad2ee02",
+ "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/custom-start-points:8c3bffd@sha256:b250b0603dd70628fdf46ff1e73cb29491febf5f4e127728f2a2e4a7aad2ee02",
+ "most_recent_timestamp": 1788965787,
+ "flow": "custom-start-points-ci",
+ "commit_url": "https://github.com/cyber-dojo/custom-start-points/commit/8c3bffd55590a7d6c180980b263117096a9add32",
"instance_count": 1
},
{
- "fingerprint": "2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f",
- "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:ff9f292@sha256:2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f",
- "most_recent_timestamp": 1788255387,
- "flow": "dashboard-ci",
- "commit_url": "https://github.com/cyber-dojo/dashboard/commit/ff9f292e809801d35246183988b7812826bc2760",
+ "fingerprint": "ba00a3efafbea83322e018ae78fd97defd8f018c794a135859dcc02a7e70bd5c",
+ "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/languages-start-points:da21200@sha256:ba00a3efafbea83322e018ae78fd97defd8f018c794a135859dcc02a7e70bd5c",
+ "most_recent_timestamp": 1789113338,
+ "flow": "languages-start-points-ci",
+ "commit_url": "https://github.com/cyber-dojo/languages-start-points/commit/da2120004a066092cc36c0f8d20f5186106b3d04",
+ "instance_count": 1
+ },
+ {
+ "fingerprint": "ba63a80521117f0778ca0e2f564fffba0926292eeeaf0a9e1103952fafbec472",
+ "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/spooler:a339a8f@sha256:ba63a80521117f0778ca0e2f564fffba0926292eeeaf0a9e1103952fafbec472",
+ "most_recent_timestamp": 1788965009,
+ "flow": "spooler-ci",
+ "commit_url": "https://github.com/cyber-dojo/spooler/commit/a339a8f19075445057a1466a44ca241f093384e4",
"instance_count": 1
},
{
- "fingerprint": "28bc41a2185a154249b1d06983741c39beb3574ebdce7273963ecde2ae9dd832",
- "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/languages-start-points:a357ebd@sha256:28bc41a2185a154249b1d06983741c39beb3574ebdce7273963ecde2ae9dd832",
- "most_recent_timestamp": 1788255750,
+ "fingerprint": "dbd68f81c38a9bdbccac20e2ca5c23c6377a7093b0c7e5730156431eb06d64cf",
+ "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/differ:06dc33a@sha256:dbd68f81c38a9bdbccac20e2ca5c23c6377a7093b0c7e5730156431eb06d64cf",
+ "most_recent_timestamp": 1788979049,
+ "flow": "differ-ci",
+ "commit_url": "https://github.com/cyber-dojo/differ/commit/06dc33ad1a46960bd685d00be993098a74a6dca0",
+ "instance_count": 1
+ },
+ {
+ "fingerprint": "e5197f0eda74fc1a6311f8745ef9d8eecefcbf3e75eb1179dc1c1c44075608ae",
+ "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:1e3d084@sha256:e5197f0eda74fc1a6311f8745ef9d8eecefcbf3e75eb1179dc1c1c44075608ae",
+ "most_recent_timestamp": 1788966462,
+ "flow": "dashboard-ci",
+ "commit_url": "https://github.com/cyber-dojo/dashboard/commit/1e3d084c20f92afd8747d3d1f70c00b30d07c5fe",
+ "instance_count": 1
+ }
+ ]
+ },
+ "snappish2": {
+ "snapshot_id": "aws-prod#5352",
+ "artifacts": [
+ {
+ "fingerprint": "040bd44819d9e92728fb3b338f6582d4345cd69df769c59e94c61ac0336ad909",
+ "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/languages-start-points:5d1d4b6@sha256:040bd44819d9e92728fb3b338f6582d4345cd69df769c59e94c61ac0336ad909",
+ "most_recent_timestamp": 1789022826,
"flow": "languages-start-points-ci",
- "commit_url": "https://github.com/cyber-dojo/languages-start-points/commit/a357ebd85acdd54968fa0192405aaf2e289d27c9",
+ "commit_url": "https://github.com/cyber-dojo/languages-start-points/commit/5d1d4b6035691d7986e05ab263e521b3e711fa0c",
"instance_count": 1
},
{
- "fingerprint": "34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09",
- "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/custom-start-points:b12a5c9@sha256:34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09",
- "most_recent_timestamp": 1788255398,
- "flow": "custom-start-points-ci",
- "commit_url": "https://github.com/cyber-dojo/custom-start-points/commit/b12a5c9b17023462d13e81381a69c7ef05f84dc2",
+ "fingerprint": "4889ce921333abe3acc52880342a6ceb27cd66482e4f8fc93e20d5a91d972d29",
+ "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:6b20a42@sha256:4889ce921333abe3acc52880342a6ceb27cd66482e4f8fc93e20d5a91d972d29",
+ "most_recent_timestamp": 1789022830,
+ "flow": "dashboard-ci",
+ "commit_url": "https://github.com/cyber-dojo/dashboard/commit/6b20a423d5ce05139d4480e9ce67f40e3eda2e07",
"instance_count": 1
},
{
- "fingerprint": "36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc",
- "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/web:cbe481c@sha256:36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc",
- "most_recent_timestamp": 1788074889,
- "flow": "web-ci",
- "commit_url": "https://github.com/cyber-dojo/web/commit/cbe481c4b842f897e4e9e411cd78461a3a12a334",
- "instance_count": 3
+ "fingerprint": "9cfef3281fc531a3c5a5a00ed8a67256e1b954b5271b03936808623960afebfc",
+ "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/saver:7c4708f@sha256:9cfef3281fc531a3c5a5a00ed8a67256e1b954b5271b03936808623960afebfc",
+ "most_recent_timestamp": 1789022816,
+ "flow": "saver-ci",
+ "commit_url": "https://github.com/cyber-dojo/saver/commit/7c4708f675a7717376529273ec32d08cd93f5c26",
+ "instance_count": 1
+ },
+ {
+ "fingerprint": "9ef10b455706661560fee5c47aebcb592f0936fdaa1db1a0ad06590c6f39b86f",
+ "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/spooler:5e4740c@sha256:9ef10b455706661560fee5c47aebcb592f0936fdaa1db1a0ad06590c6f39b86f",
+ "most_recent_timestamp": 1789022819,
+ "flow": "spooler-ci",
+ "commit_url": "https://github.com/cyber-dojo/spooler/commit/5e4740c1146988f2e90cd2eb2fc6de0f8603e20a",
+ "instance_count": 1
+ },
+ {
+ "fingerprint": "aa63057d266fea8e2336b5d046a85889dd2ec37023cb81a465f6fff6c999c2c5",
+ "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/nginx:bd3938c@sha256:aa63057d266fea8e2336b5d046a85889dd2ec37023cb81a465f6fff6c999c2c5",
+ "most_recent_timestamp": 1789022826,
+ "flow": "nginx-ci",
+ "commit_url": "https://github.com/cyber-dojo/nginx/commit/bd3938c88623bff4f02e1c2f12e97f7cd60523e3",
+ "instance_count": 1
},
{
- "fingerprint": "41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6",
- "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/exercises-start-points:f22a30e@sha256:41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6",
- "most_recent_timestamp": 1788255396,
+ "fingerprint": "bc1dae4e8ce742e027a6dc6b68e44c65361cd48e588483d3fd9f6d6911a84c31",
+ "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/exercises-start-points:d01bb39@sha256:bc1dae4e8ce742e027a6dc6b68e44c65361cd48e588483d3fd9f6d6911a84c31",
+ "most_recent_timestamp": 1789022822,
"flow": "exercises-start-points-ci",
- "commit_url": "https://github.com/cyber-dojo/exercises-start-points/commit/f22a30ed7659b05a88c22e9f22dc2388f2deb8c8",
+ "commit_url": "https://github.com/cyber-dojo/exercises-start-points/commit/d01bb39495a1356eabe934bef84b92cc964a26f1",
"instance_count": 1
},
{
- "fingerprint": "6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd",
- "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/spooler:90c8d98@sha256:6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd",
- "most_recent_timestamp": 1788255396,
- "flow": "spooler-ci",
- "commit_url": "https://github.com/cyber-dojo/spooler/commit/90c8d982d2ff8c4950f7aca4d0a1e9d29ac74e1f",
+ "fingerprint": "e24bd03714d2e583a2196c0eaf82b2aad8eeecf73f29aec58875994b82f0f418",
+ "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/web:236898f@sha256:e24bd03714d2e583a2196c0eaf82b2aad8eeecf73f29aec58875994b82f0f418",
+ "most_recent_timestamp": 1789022884,
+ "flow": "web-ci",
+ "commit_url": "https://github.com/cyber-dojo/web/commit/236898f12a3bcce3b60625dd71c6f817d4cc37c2",
+ "instance_count": 3
+ },
+ {
+ "fingerprint": "ed0b8b8cc04f951bc7224d792c9c68010388f9ebf3c45d9a5d375be3a68d0b2e",
+ "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/custom-start-points:86c839e@sha256:ed0b8b8cc04f951bc7224d792c9c68010388f9ebf3c45d9a5d375be3a68d0b2e",
+ "most_recent_timestamp": 1789022818,
+ "flow": "custom-start-points-ci",
+ "commit_url": "https://github.com/cyber-dojo/custom-start-points/commit/86c839ee588f393d84a6b9c036478d10bb6f2a2d",
"instance_count": 1
},
{
- "fingerprint": "a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638",
- "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:ca65b67@sha256:a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638",
- "most_recent_timestamp": 1788255844,
+ "fingerprint": "f61d363b12c540302c97e4f694c76edc6fcb594852e2dcdb8ce92d2d22521409",
+ "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/differ:2e9bd96@sha256:f61d363b12c540302c97e4f694c76edc6fcb594852e2dcdb8ce92d2d22521409",
+ "most_recent_timestamp": 1789022811,
+ "flow": "differ-ci",
+ "commit_url": "https://github.com/cyber-dojo/differ/commit/2e9bd969b50fff6b86578d69b7139f2d688ef6e2",
+ "instance_count": 1
+ }
+ ]
+ },
+ "changed": {
+ "artifacts": []
+ },
+ "not-changed": {
+ "artifacts": [
+ {
+ "fingerprint": "8e36719b74e24f93433b2fa52107beec253f7f5dc2fcefc4aad60befe31db65f",
+ "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:4b2bfc0@sha256:8e36719b74e24f93433b2fa52107beec253f7f5dc2fcefc4aad60befe31db65f",
+ "most_recent_timestamp": 1789022877,
"flow": "runner-ci",
- "commit_url": "https://github.com/cyber-dojo/runner/commit/ca65b67c3e311fbdd2435609fdb6f8a5479f66f9",
+ "commit_url": "https://github.com/cyber-dojo/runner/commit/4b2bfc038576e2a7648090c4c1289fbc9ebfc481",
"instance_count": 3
},
{
- "fingerprint": "c48710e3304e24406c03381a31d01f520ab2f60846aa0b57adbda0a776ebc1ab",
- "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/creator:d64d2b1@sha256:c48710e3304e24406c03381a31d01f520ab2f60846aa0b57adbda0a776ebc1ab",
- "most_recent_timestamp": 1788256052,
+ "fingerprint": "a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424",
+ "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/creator:99d7b74@sha256:a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424",
+ "most_recent_timestamp": 1789023319,
"flow": "creator-ci",
- "commit_url": "https://github.com/cyber-dojo/creator/commit/d64d2b11879179255f11dc991e81fbaf4a040264",
+ "commit_url": "https://github.com/cyber-dojo/creator/commit/99d7b74f39e311d492902ad48dbe97da63f2c687",
"instance_count": 1
}
]
diff --git a/client_reference/kosli_disable_beta.md b/client_reference/kosli_disable_beta.md
index 238fc3b..6399d60 100644
--- a/client_reference/kosli_disable_beta.md
+++ b/client_reference/kosli_disable_beta.md
@@ -21,7 +21,7 @@ Disable beta features for an organization.
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_enable_beta.md b/client_reference/kosli_enable_beta.md
index 7e22a4c..fe7a401 100644
--- a/client_reference/kosli_enable_beta.md
+++ b/client_reference/kosli_enable_beta.md
@@ -21,7 +21,7 @@ Enable beta features for an organization.
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_evaluate_input.md b/client_reference/kosli_evaluate_input.md
index e7c0bf6..4f0bbc6 100644
--- a/client_reference/kosli_evaluate_input.md
+++ b/client_reference/kosli_evaluate_input.md
@@ -49,7 +49,7 @@ This accepts inline JSON or a file reference (`@file.json`).
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
@@ -64,7 +64,7 @@ This accepts inline JSON or a file reference (`@file.json`).
View an example of the `kosli evaluate input` command in GitHub.
- In [this YAML file](https://github.com/cyber-dojo/snyk-scanning/blob/ed3c81d7322bb8058615095f4aab28c147c53933/tests/test_rego_rules.sh#L286)
+ In [this YAML file](https://github.com/cyber-dojo/snyk-scanning/blob/30111f180ac4e3611cdbd7d805381a0bb9f53cff/tests/test_rego_rules.sh#L304)
diff --git a/client_reference/kosli_evaluate_trail.md b/client_reference/kosli_evaluate_trail.md
index 6f339e1..bb57fc6 100644
--- a/client_reference/kosli_evaluate_trail.md
+++ b/client_reference/kosli_evaluate_trail.md
@@ -40,7 +40,7 @@ full data structure available to the policy. Use `--output json` for structured
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_evaluate_trails.md b/client_reference/kosli_evaluate_trails.md
index 317a810..cf5d424 100644
--- a/client_reference/kosli_evaluate_trails.md
+++ b/client_reference/kosli_evaluate_trails.md
@@ -41,7 +41,7 @@ full data structure available to the policy. Use `--output json` for structured
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_fingerprint.md b/client_reference/kosli_fingerprint.md
index afb34db..109e741 100644
--- a/client_reference/kosli_fingerprint.md
+++ b/client_reference/kosli_fingerprint.md
@@ -46,7 +46,10 @@ If the directory structure contains a symbolic link to a *directory* (for exampl
To specify paths in a directory artifact that should always be excluded from the SHA256 calculation, you can add a `.kosli_ignore` file to the root of the artifact.
Each line should specify a relative path or path glob to be ignored. You can include comments in this file, using `#`.
-The `.kosli_ignore` will be treated as part of the artifact like any other file, unless it is explicitly ignored itself.
+The `.kosli_ignore` file is always treated as part of the artifact: its own entries cannot exclude it, so the exclusion list cannot be changed without changing the fingerprint.
+Paths the list already matches stay excluded whatever is later added there, so keep its entries as narrow as possible.
+Excluding the file with `--exclude` keeps it out of the fingerprint but still applies the paths it lists, which lets a writable directory change the list again.
+To drop the file from the fingerprint safely, move its entries to `--exclude` and delete it.
## Flags
| Flag | Type | Description |
@@ -64,7 +67,7 @@ The `.kosli_ignore` will be treated as part of the artifact like any other file,
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
@@ -79,7 +82,7 @@ The `.kosli_ignore` will be treated as part of the artifact like any other file,
View an example of the `kosli fingerprint` command in GitHub.
- In [this YAML file](https://github.com/cyber-dojo/snyk-scanning/blob/ed3c81d7322bb8058615095f4aab28c147c53933/.github/workflows/artifact_snyk_test.yml#L179)
+ In [this YAML file](https://github.com/cyber-dojo/snyk-scanning/blob/30111f180ac4e3611cdbd7d805381a0bb9f53cff/.github/workflows/artifact_snyk_test.yml#L180)
diff --git a/client_reference/kosli_get_api-key.md b/client_reference/kosli_get_api-key.md
index 24b19f1..319595d 100644
--- a/client_reference/kosli_get_api-key.md
+++ b/client_reference/kosli_get_api-key.md
@@ -26,7 +26,7 @@ returned (it is only shown once, at creation or rotation time).
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_get_artifact.md b/client_reference/kosli_get_artifact.md
index 4d7df41..c7ea081 100644
--- a/client_reference/kosli_get_artifact.md
+++ b/client_reference/kosli_get_artifact.md
@@ -39,7 +39,7 @@ Examples of valid expressions are:
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_get_attestation-type.md b/client_reference/kosli_get_attestation-type.md
index 08c0683..181c305 100644
--- a/client_reference/kosli_get_attestation-type.md
+++ b/client_reference/kosli_get_attestation-type.md
@@ -31,7 +31,7 @@ The TYPE-NAME can be specified as follows:
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_get_attestation.md b/client_reference/kosli_get_attestation.md
index 32faadf..cbf41d3 100644
--- a/client_reference/kosli_get_attestation.md
+++ b/client_reference/kosli_get_attestation.md
@@ -37,7 +37,7 @@ or any of the `--flow`, `--trail` or `--fingerprint` flags.
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
@@ -104,11 +104,11 @@ kosli get attestation snyk-container-scan --flow=differ-ci --fingerprint=0cbbe3a
]
},
"attestation_id": "f7cd9b3a-2738-47e6-be36-689d511d",
- "html_url": "https://app.kosli.com/cyber-dojo/flows/differ-ci/trails/5ccc5c141fdd1fbd97905b7fe0af87e5a592bfb6?attestation_id=f7cd9b3a-2738-47e6-be36-689d511d",
"flow_name": "differ-ci",
"trail_name": "5ccc5c141fdd1fbd97905b7fe0af87e5a592bfb6",
"reported_by": "ci-pipelines",
"has_audit_package": true,
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/differ-ci/trails/5ccc5c141fdd1fbd97905b7fe0af87e5a592bfb6?attestation_id=f7cd9b3a-2738-47e6-be36-689d511d",
"_links": {
"self": {
"href": "https://app.kosli.com/api/v2/attestations/cyber-dojo/differ-ci/artifact/0cbbe3a6e73e733e8ca4b8813738d68e824badad0508ff20842832b5143b48c0/snyk-container-scan"
diff --git a/client_reference/kosli_get_control.md b/client_reference/kosli_get_control.md
index ab0a8fe..2e669c0 100644
--- a/client_reference/kosli_get_control.md
+++ b/client_reference/kosli_get_control.md
@@ -27,7 +27,7 @@ Get a Kosli control.
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_get_default-org.md b/client_reference/kosli_get_default-org.md
index 93a03cd..5db7582 100644
--- a/client_reference/kosli_get_default-org.md
+++ b/client_reference/kosli_get_default-org.md
@@ -23,7 +23,7 @@ The default organization is the one selected by default in the Kosli Web UI when
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_get_environment.md b/client_reference/kosli_get_environment.md
index e2c6f6b..7f25061 100644
--- a/client_reference/kosli_get_environment.md
+++ b/client_reference/kosli_get_environment.md
@@ -22,7 +22,7 @@ Get an environment's metadata.
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
@@ -50,9 +50,9 @@ kosli get environment aws-prod --output=json
"name": "aws-prod",
"type": "ECS",
"description": "The ECS cluster for production cyber-dojo",
- "last_modified_at": 1788260398.5436597,
- "last_reported_at": 1788260398.5436597,
- "last_changed_at": 1788256325.6192138,
+ "last_modified_at": 1789114018.585112,
+ "last_reported_at": 1789114018.585112,
+ "last_changed_at": 1789108858.5535865,
"state": true,
"include_scaling": false,
"tags": {
diff --git a/client_reference/kosli_get_flow.md b/client_reference/kosli_get_flow.md
index 644afd3..3b925a9 100644
--- a/client_reference/kosli_get_flow.md
+++ b/client_reference/kosli_get_flow.md
@@ -22,7 +22,7 @@ Get the metadata of a specific flow.
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_get_policy.md b/client_reference/kosli_get_policy.md
index 411fed7..ae08029 100644
--- a/client_reference/kosli_get_policy.md
+++ b/client_reference/kosli_get_policy.md
@@ -22,7 +22,7 @@ Get a policy's metadata.
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_get_repo.md b/client_reference/kosli_get_repo.md
index f972ce2..700278f 100644
--- a/client_reference/kosli_get_repo.md
+++ b/client_reference/kosli_get_repo.md
@@ -30,7 +30,7 @@ across VCS providers.
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_get_service-account.md b/client_reference/kosli_get_service-account.md
index 260b7ba..49e7d8e 100644
--- a/client_reference/kosli_get_service-account.md
+++ b/client_reference/kosli_get_service-account.md
@@ -26,7 +26,7 @@ to get the raw response for scripting.
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_get_snapshot.md b/client_reference/kosli_get_snapshot.md
index 4b4cf96..f159bda 100644
--- a/client_reference/kosli_get_snapshot.md
+++ b/client_reference/kosli_get_snapshot.md
@@ -39,7 +39,7 @@ ENVIRONMENT-NAME-OR-EXPRESSION can be specified as follows:
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
@@ -64,7 +64,7 @@ kosli get snapshot aws-prod --output=json
```json
{
- "index": 5309,
+ "index": 5352,
"is_latest": true,
"next_snapshot_timestamp": null,
"artifact_compliance_count": {
@@ -72,18 +72,18 @@ kosli get snapshot aws-prod --output=json
"false": 0,
"null": 0
},
- "timestamp": 1788256325.6192138,
+ "timestamp": 1789108858.5535865,
"type": "ECS",
"compliant": true,
- "html_url": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/5309",
+ "html_url": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/5352",
"artifacts": [
{
- "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/creator:d64d2b1@sha256:c48710e3304e24406c03381a31d01f520ab2f60846aa0b57adbda0a776ebc1ab",
+ "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/creator:99d7b74@sha256:a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424",
"compliant": true,
"deployments": [],
"policy_decisions": [
{
- "policy_version": 3,
+ "policy_version": 2,
"status": "COMPLIANT",
"rule_evaluations": [
{
@@ -101,23 +101,23 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "creator-ci",
- "trail_name": "d64d2b11879179255f11dc991e81fbaf4a040264",
+ "trail_name": "99d7b74f39e311d492902ad48dbe97da63f2c687",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "creator-c48710e3304e24406c03381a31d01f520ab2f60846aa0b57adbda0a776ebc1ab",
+ "flow_name": "production-promotion",
+ "trail_name": "promotion-one-165",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "creator-a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424",
"artifact_status": null
}
},
@@ -125,7 +125,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "creator-c48710e3304e24406c03381a31d01f520ab2f60846aa0b57adbda0a776ebc1ab",
+ "trail_name": "creator-a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424",
"artifact_status": null
}
}
@@ -146,23 +146,23 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "creator-ci",
- "trail_name": "d64d2b11879179255f11dc991e81fbaf4a040264",
+ "trail_name": "99d7b74f39e311d492902ad48dbe97da63f2c687",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "creator-c48710e3304e24406c03381a31d01f520ab2f60846aa0b57adbda0a776ebc1ab",
+ "flow_name": "production-promotion",
+ "trail_name": "promotion-one-165",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "creator-a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424",
"artifact_status": "COMPLIANT"
}
},
@@ -170,7 +170,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "creator-c48710e3304e24406c03381a31d01f520ab2f60846aa0b57adbda0a776ebc1ab",
+ "trail_name": "creator-a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424",
"artifact_status": "COMPLIANT"
}
}
@@ -181,10 +181,10 @@ kosli get snapshot aws-prod --output=json
"type": "attestation",
"definition": {
"if": {
- "text": "flow.tags.kind == \"build\""
+ "text": "flow.name == \"production-promotion\""
},
- "name": "*",
- "type": "pull_request",
+ "name": "snyk-scan",
+ "type": "decision",
"must_be_compliant": true,
"for_control": null
}
@@ -193,26 +193,26 @@ kosli get snapshot aws-prod --output=json
"ignored": false,
"resolutions": [
{
- "type": "rule_satisfied",
+ "type": "rule_not_applicable",
"context": {
"flow_name": "creator-ci",
- "trail_name": "d64d2b11879179255f11dc991e81fbaf4a040264",
+ "trail_name": "99d7b74f39e311d492902ad48dbe97da63f2c687",
"artifact_status": null
}
},
{
- "type": "rule_not_applicable",
+ "type": "rule_satisfied",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "creator-c48710e3304e24406c03381a31d01f520ab2f60846aa0b57adbda0a776ebc1ab",
+ "flow_name": "production-promotion",
+ "trail_name": "promotion-one-165",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "creator-a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424",
"artifact_status": null
}
},
@@ -220,14 +220,14 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "creator-c48710e3304e24406c03381a31d01f520ab2f60846aa0b57adbda0a776ebc1ab",
+ "trail_name": "creator-a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424",
"artifact_status": null
}
}
]
}
],
- "policy_name": "pull-request"
+ "policy_name": "production-promotion"
},
{
"policy_version": 3,
@@ -248,23 +248,23 @@ kosli get snapshot aws-prod --output=json
"type": "rule_satisfied",
"context": {
"flow_name": "creator-ci",
- "trail_name": "d64d2b11879179255f11dc991e81fbaf4a040264",
+ "trail_name": "99d7b74f39e311d492902ad48dbe97da63f2c687",
"artifact_status": null
}
},
{
"type": "rule_satisfied",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "creator-c48710e3304e24406c03381a31d01f520ab2f60846aa0b57adbda0a776ebc1ab",
+ "flow_name": "production-promotion",
+ "trail_name": "promotion-one-165",
"artifact_status": null
}
},
{
"type": "rule_satisfied",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "creator-a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424",
"artifact_status": null
}
},
@@ -272,7 +272,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_satisfied",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "creator-c48710e3304e24406c03381a31d01f520ab2f60846aa0b57adbda0a776ebc1ab",
+ "trail_name": "creator-a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424",
"artifact_status": null
}
}
@@ -293,23 +293,23 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "creator-ci",
- "trail_name": "d64d2b11879179255f11dc991e81fbaf4a040264",
+ "trail_name": "99d7b74f39e311d492902ad48dbe97da63f2c687",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "creator-c48710e3304e24406c03381a31d01f520ab2f60846aa0b57adbda0a776ebc1ab",
+ "flow_name": "production-promotion",
+ "trail_name": "promotion-one-165",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "creator-a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424",
"artifact_status": "COMPLIANT"
}
},
@@ -317,7 +317,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "creator-c48710e3304e24406c03381a31d01f520ab2f60846aa0b57adbda0a776ebc1ab",
+ "trail_name": "creator-a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424",
"artifact_status": "COMPLIANT"
}
}
@@ -343,7 +343,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_satisfied",
"context": {
"flow_name": "creator-ci",
- "trail_name": "d64d2b11879179255f11dc991e81fbaf4a040264",
+ "trail_name": "99d7b74f39e311d492902ad48dbe97da63f2c687",
"artifact_status": null,
"for_control": "SDLC-CTRL-0002"
}
@@ -351,8 +351,8 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "creator-c48710e3304e24406c03381a31d01f520ab2f60846aa0b57adbda0a776ebc1ab",
+ "flow_name": "production-promotion",
+ "trail_name": "promotion-one-165",
"artifact_status": null,
"for_control": "SDLC-CTRL-0002"
}
@@ -360,8 +360,8 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "creator-a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424",
"artifact_status": null,
"for_control": "SDLC-CTRL-0002"
}
@@ -370,7 +370,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "creator-c48710e3304e24406c03381a31d01f520ab2f60846aa0b57adbda0a776ebc1ab",
+ "trail_name": "creator-a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424",
"artifact_status": null,
"for_control": "SDLC-CTRL-0002"
}
@@ -381,7 +381,7 @@ kosli get snapshot aws-prod --output=json
"policy_name": "provenance"
},
{
- "policy_version": 4,
+ "policy_version": 3,
"status": "COMPLIANT",
"rule_evaluations": [
{
@@ -399,23 +399,23 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "creator-ci",
- "trail_name": "d64d2b11879179255f11dc991e81fbaf4a040264",
+ "trail_name": "99d7b74f39e311d492902ad48dbe97da63f2c687",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "creator-c48710e3304e24406c03381a31d01f520ab2f60846aa0b57adbda0a776ebc1ab",
+ "flow_name": "production-promotion",
+ "trail_name": "promotion-one-165",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "creator-a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424",
"artifact_status": null
}
},
@@ -423,7 +423,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "creator-c48710e3304e24406c03381a31d01f520ab2f60846aa0b57adbda0a776ebc1ab",
+ "trail_name": "creator-a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424",
"artifact_status": null
}
}
@@ -444,23 +444,23 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "creator-ci",
- "trail_name": "d64d2b11879179255f11dc991e81fbaf4a040264",
+ "trail_name": "99d7b74f39e311d492902ad48dbe97da63f2c687",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "creator-c48710e3304e24406c03381a31d01f520ab2f60846aa0b57adbda0a776ebc1ab",
+ "flow_name": "production-promotion",
+ "trail_name": "promotion-one-165",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "creator-a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424",
"artifact_status": "COMPLIANT"
}
},
@@ -468,7 +468,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "creator-c48710e3304e24406c03381a31d01f520ab2f60846aa0b57adbda0a776ebc1ab",
+ "trail_name": "creator-a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424",
"artifact_status": "COMPLIANT"
}
}
@@ -479,60 +479,56 @@ kosli get snapshot aws-prod --output=json
"type": "attestation",
"definition": {
"if": {
- "text": "flow.name == \"snyk-aws-prod-per-artifact\""
+ "text": "flow.tags.kind == \"build\""
},
- "name": "snyk-container-scan",
- "type": "decision",
+ "name": "*",
+ "type": "pull_request",
"must_be_compliant": true,
- "for_control": "SDLC-CTRL-0022"
+ "for_control": null
}
},
"satisfied": true,
"ignored": false,
"resolutions": [
{
- "type": "rule_not_applicable",
+ "type": "rule_satisfied",
"context": {
"flow_name": "creator-ci",
- "trail_name": "d64d2b11879179255f11dc991e81fbaf4a040264",
- "artifact_status": null,
- "for_control": "SDLC-CTRL-0022"
+ "trail_name": "99d7b74f39e311d492902ad48dbe97da63f2c687",
+ "artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "creator-c48710e3304e24406c03381a31d01f520ab2f60846aa0b57adbda0a776ebc1ab",
- "artifact_status": null,
- "for_control": "SDLC-CTRL-0022"
+ "flow_name": "production-promotion",
+ "trail_name": "promotion-one-165",
+ "artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
- "artifact_status": null,
- "for_control": "SDLC-CTRL-0022"
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "creator-a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424",
+ "artifact_status": null
}
},
{
- "type": "rule_satisfied",
+ "type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "creator-c48710e3304e24406c03381a31d01f520ab2f60846aa0b57adbda0a776ebc1ab",
- "artifact_status": null,
- "for_control": "SDLC-CTRL-0022"
+ "trail_name": "creator-a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424",
+ "artifact_status": null
}
}
]
}
],
- "policy_name": "snyk-scan-aws-prod"
+ "policy_name": "pull-request"
},
{
- "policy_version": 2,
+ "policy_version": 4,
"status": "COMPLIANT",
"rule_evaluations": [
{
@@ -550,23 +546,23 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "creator-ci",
- "trail_name": "d64d2b11879179255f11dc991e81fbaf4a040264",
+ "trail_name": "99d7b74f39e311d492902ad48dbe97da63f2c687",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "creator-c48710e3304e24406c03381a31d01f520ab2f60846aa0b57adbda0a776ebc1ab",
+ "flow_name": "production-promotion",
+ "trail_name": "promotion-one-165",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "creator-a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424",
"artifact_status": null
}
},
@@ -574,7 +570,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "creator-c48710e3304e24406c03381a31d01f520ab2f60846aa0b57adbda0a776ebc1ab",
+ "trail_name": "creator-a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424",
"artifact_status": null
}
}
@@ -595,23 +591,23 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "creator-ci",
- "trail_name": "d64d2b11879179255f11dc991e81fbaf4a040264",
+ "trail_name": "99d7b74f39e311d492902ad48dbe97da63f2c687",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "creator-c48710e3304e24406c03381a31d01f520ab2f60846aa0b57adbda0a776ebc1ab",
+ "flow_name": "production-promotion",
+ "trail_name": "promotion-one-165",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "creator-a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424",
"artifact_status": "COMPLIANT"
}
},
@@ -619,7 +615,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "creator-c48710e3304e24406c03381a31d01f520ab2f60846aa0b57adbda0a776ebc1ab",
+ "trail_name": "creator-a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424",
"artifact_status": "COMPLIANT"
}
}
@@ -630,12 +626,12 @@ kosli get snapshot aws-prod --output=json
"type": "attestation",
"definition": {
"if": {
- "text": "flow.name == \"production-promotion\""
+ "text": "flow.name == \"snyk-aws-prod-per-artifact\""
},
- "name": "snyk-scan",
+ "name": "snyk-container-scan",
"type": "decision",
"must_be_compliant": true,
- "for_control": null
+ "for_control": "SDLC-CTRL-0022"
}
},
"satisfied": true,
@@ -645,38 +641,42 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "creator-ci",
- "trail_name": "d64d2b11879179255f11dc991e81fbaf4a040264",
- "artifact_status": null
+ "trail_name": "99d7b74f39e311d492902ad48dbe97da63f2c687",
+ "artifact_status": null,
+ "for_control": "SDLC-CTRL-0022"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "creator-c48710e3304e24406c03381a31d01f520ab2f60846aa0b57adbda0a776ebc1ab",
- "artifact_status": null
+ "flow_name": "production-promotion",
+ "trail_name": "promotion-one-165",
+ "artifact_status": null,
+ "for_control": "SDLC-CTRL-0022"
}
},
{
- "type": "rule_satisfied",
+ "type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
- "artifact_status": null
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "creator-a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424",
+ "artifact_status": null,
+ "for_control": "SDLC-CTRL-0022"
}
},
{
- "type": "rule_not_applicable",
+ "type": "rule_satisfied",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "creator-c48710e3304e24406c03381a31d01f520ab2f60846aa0b57adbda0a776ebc1ab",
- "artifact_status": null
+ "trail_name": "creator-a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424",
+ "artifact_status": null,
+ "for_control": "SDLC-CTRL-0022"
}
}
]
}
],
- "policy_name": "production-promotion"
+ "policy_name": "snyk-scan-aws-prod"
},
{
"policy_version": 2,
@@ -697,23 +697,23 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "creator-ci",
- "trail_name": "d64d2b11879179255f11dc991e81fbaf4a040264",
+ "trail_name": "99d7b74f39e311d492902ad48dbe97da63f2c687",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "creator-c48710e3304e24406c03381a31d01f520ab2f60846aa0b57adbda0a776ebc1ab",
+ "flow_name": "production-promotion",
+ "trail_name": "promotion-one-165",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "creator-a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424",
"artifact_status": null
}
},
@@ -721,7 +721,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "creator-c48710e3304e24406c03381a31d01f520ab2f60846aa0b57adbda0a776ebc1ab",
+ "trail_name": "creator-a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424",
"artifact_status": null
}
}
@@ -748,23 +748,23 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "creator-ci",
- "trail_name": "d64d2b11879179255f11dc991e81fbaf4a040264",
+ "trail_name": "99d7b74f39e311d492902ad48dbe97da63f2c687",
"artifact_status": "COMPLIANT"
}
},
{
- "type": "rule_not_applicable",
+ "type": "rule_satisfied",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "creator-c48710e3304e24406c03381a31d01f520ab2f60846aa0b57adbda0a776ebc1ab",
+ "flow_name": "production-promotion",
+ "trail_name": "promotion-one-165",
"artifact_status": "COMPLIANT"
}
},
{
- "type": "rule_satisfied",
+ "type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "creator-a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424",
"artifact_status": "COMPLIANT"
}
},
@@ -772,7 +772,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_satisfied",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "creator-c48710e3304e24406c03381a31d01f520ab2f60846aa0b57adbda0a776ebc1ab",
+ "trail_name": "creator-a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424",
"artifact_status": "COMPLIANT"
}
}
@@ -783,9 +783,9 @@ kosli get snapshot aws-prod --output=json
}
],
"reasons_for_incompliance": [],
- "fingerprint": "c48710e3304e24406c03381a31d01f520ab2f60846aa0b57adbda0a776ebc1ab",
+ "fingerprint": "a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424",
"creationTimestamp": [
- 1788256052
+ 1789023319
],
"pods": null,
"annotation": {
@@ -794,161 +794,161 @@ kosli get snapshot aws-prod --output=json
"now": 1
},
"flow_name": "creator-ci",
- "git_commit": "d64d2b11879179255f11dc991e81fbaf4a040264",
- "commit_url": "https://github.com/cyber-dojo/creator/commit/d64d2b11879179255f11dc991e81fbaf4a040264",
- "html_url": "https://app.kosli.com/cyber-dojo/flows/creator-ci/artifacts/c48710e3304e24406c03381a31d01f520ab2f60846aa0b57adbda0a776ebc1ab?artifact_id=61384b36-4d32-43f2-8d5d-a72e2e7e",
+ "git_commit": "99d7b74f39e311d492902ad48dbe97da63f2c687",
+ "commit_url": "https://github.com/cyber-dojo/creator/commit/99d7b74f39e311d492902ad48dbe97da63f2c687",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/creator-ci/artifacts/a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424?artifact_id=205424b6-5741-4071-bd36-c26e83f6",
"flow_html_url": "https://app.kosli.com/cyber-dojo/flows/creator-ci",
"deployment_diff": {
- "diff_url": "https://github.com/cyber-dojo/creator/compare/83357f112ef5c10b157cb84732c77965cc8ddc48...d64d2b11879179255f11dc991e81fbaf4a040264",
- "previous_git_commit": "83357f112ef5c10b157cb84732c77965cc8ddc48",
- "previous_fingerprint": "adb922d738b50876f1cd13f5a998ade341abfd64b3561d0889264399c33c528b",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/creator:83357f1@sha256:adb922d738b50876f1cd13f5a998ade341abfd64b3561d0889264399c33c528b",
+ "diff_url": "https://github.com/cyber-dojo/creator/compare/abdc61396b5031dbb1e90f5c9c190d303ff243e1...99d7b74f39e311d492902ad48dbe97da63f2c687",
+ "previous_git_commit": "abdc61396b5031dbb1e90f5c9c190d303ff243e1",
+ "previous_fingerprint": "ba988cfdac64da22bc8268442c467504fe8df565e65c2f3c4344ce00c83e561a",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/creator:abdc613@sha256:ba988cfdac64da22bc8268442c467504fe8df565e65c2f3c4344ce00c83e561a",
"previous_artifact_compliance_state": "COMPLIANT",
"previous_running": false,
- "previous_git_commit_url": "https://github.com/cyber-dojo/creator/commit/83357f112ef5c10b157cb84732c77965cc8ddc48",
- "previous_trail_name": "83357f112ef5c10b157cb84732c77965cc8ddc48",
+ "previous_git_commit_url": "https://github.com/cyber-dojo/creator/commit/abdc61396b5031dbb1e90f5c9c190d303ff243e1",
+ "previous_trail_name": "abdc61396b5031dbb1e90f5c9c190d303ff243e1",
"previous_template_reference_name": "creator"
},
- "commit_lead_time": 420668.0,
+ "commit_lead_time": 3383.0,
"flows": [
{
"flow_name": "creator-ci",
- "trail_name": "d64d2b11879179255f11dc991e81fbaf4a040264",
+ "trail_name": "99d7b74f39e311d492902ad48dbe97da63f2c687",
"template_reference_name": "creator",
- "git_commit": "d64d2b11879179255f11dc991e81fbaf4a040264",
- "commit_url": "https://github.com/cyber-dojo/creator/commit/d64d2b11879179255f11dc991e81fbaf4a040264",
+ "git_commit": "99d7b74f39e311d492902ad48dbe97da63f2c687",
+ "commit_url": "https://github.com/cyber-dojo/creator/commit/99d7b74f39e311d492902ad48dbe97da63f2c687",
"git_commit_info": {
- "sha1": "d64d2b11879179255f11dc991e81fbaf4a040264",
- "message": "Merge update-base-image into main (#56)\n\n* Dockerfile - Automated base-image update\n\n* Make the test harness work on the simplecov the new base image carries\n\n The automated base-image bump brings simplecov 0.21.2 -> 1.1.1, and\n three things here were written against the older one. Only the first\n fails the build; the other two announce themselves on stderr every run.\n\n simplecov_json.rb reopened SimpleCov::Formatter::JSONFormatter to\n redefine format. In 1.1.1 that class defines format itself, so ruby -w\n reports the redefinition twice and test_log_warnings goes from 0 to 2.\n It is now CoverageMetricsFormatter, named for the coverage_metrics.json\n it writes, which is the same name runner gives the same job. It never\n needed to be that class: what it produces is per-group totals, not the\n per-file shape the shipped formatter writes, so it was only borrowing\n the name to make itself win.\n\n SimpleCov.add_group is deprecated in favour of group. The block\n parameter goes from src to path while passing, since it is a source\n file in both groups and src said otherwise in the test one.\n\n # :nocov: is deprecated in favour of # simplecov:disable / :enable. The\n pair wrapping id58_test_base.rb is the only one in the repo.\n\n Coverage is unchanged: code.lines.total 526, test.lines.total 677,\n nothing missed in either. coverage.rb already cleared filters, so the\n test group survived 1.1.1 tightening the default test_frameworks skip\n to an anchored regex, which is what caught start-points-base out.\n\n---------\n\nCo-authored-by: JonJagger ",
+ "sha1": "99d7b74f39e311d492902ad48dbe97da63f2c687",
+ "message": "Remove upgrade notice (#60)",
"author": "Jon Jagger ",
"branch": "",
- "timestamp": 1787835384.0,
- "url": "https://github.com/cyber-dojo/creator/commit/d64d2b11879179255f11dc991e81fbaf4a040264"
+ "timestamp": 1789019936.0,
+ "url": "https://github.com/cyber-dojo/creator/commit/99d7b74f39e311d492902ad48dbe97da63f2c687"
},
- "html_url": "https://app.kosli.com/cyber-dojo/flows/creator-ci/artifacts/c48710e3304e24406c03381a31d01f520ab2f60846aa0b57adbda0a776ebc1ab?artifact_id=61384b36-4d32-43f2-8d5d-a72e2e7e",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/creator-ci/artifacts/a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424?artifact_id=205424b6-5741-4071-bd36-c26e83f6",
"flow_html_url": "https://app.kosli.com/cyber-dojo/flows/creator-ci",
"deployment_diff": {
- "diff_url": "https://github.com/cyber-dojo/creator/compare/83357f112ef5c10b157cb84732c77965cc8ddc48...d64d2b11879179255f11dc991e81fbaf4a040264",
- "previous_git_commit": "83357f112ef5c10b157cb84732c77965cc8ddc48",
- "previous_fingerprint": "adb922d738b50876f1cd13f5a998ade341abfd64b3561d0889264399c33c528b",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/creator:83357f1@sha256:adb922d738b50876f1cd13f5a998ade341abfd64b3561d0889264399c33c528b",
+ "diff_url": "https://github.com/cyber-dojo/creator/compare/abdc61396b5031dbb1e90f5c9c190d303ff243e1...99d7b74f39e311d492902ad48dbe97da63f2c687",
+ "previous_git_commit": "abdc61396b5031dbb1e90f5c9c190d303ff243e1",
+ "previous_fingerprint": "ba988cfdac64da22bc8268442c467504fe8df565e65c2f3c4344ce00c83e561a",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/creator:abdc613@sha256:ba988cfdac64da22bc8268442c467504fe8df565e65c2f3c4344ce00c83e561a",
"previous_artifact_compliance_state": "COMPLIANT",
"previous_running": false,
- "previous_git_commit_url": "https://github.com/cyber-dojo/creator/commit/83357f112ef5c10b157cb84732c77965cc8ddc48",
- "previous_trail_name": "83357f112ef5c10b157cb84732c77965cc8ddc48",
+ "previous_git_commit_url": "https://github.com/cyber-dojo/creator/commit/abdc61396b5031dbb1e90f5c9c190d303ff243e1",
+ "previous_trail_name": "abdc61396b5031dbb1e90f5c9c190d303ff243e1",
"previous_template_reference_name": "creator"
},
- "commit_lead_time": 420668.0,
+ "commit_lead_time": 3383.0,
"artifact_compliance_in_flow": true,
"flow_reasons_for_non_compliance": []
},
{
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "creator-c48710e3304e24406c03381a31d01f520ab2f60846aa0b57adbda0a776ebc1ab",
+ "flow_name": "production-promotion",
+ "trail_name": "promotion-one-165",
"template_reference_name": "creator",
- "git_commit": "ed3c81d7322bb8058615095f4aab28c147c53933",
- "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933",
+ "git_commit": "7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
+ "commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
"git_commit_info": {
- "sha1": "ed3c81d7322bb8058615095f4aab28c147c53933",
- "message": "Unpack one pinned commit instead of fetching each file\n\n a0c005a moved these two jobs' files to RUNNER_TEMP, which kept them out of\n the caller's checkout but left the prefix repeated at every use. The paths\n are absolute because the run steps stay in the checkout, where the Kosli\n CLI reads git commit information from the working directory, so the prefix\n cannot be dropped. It can only be folded into the definitions, and a\n literal /tmp folds where runner.temp does not: the runner context is\n unavailable in workflow- and job-level env blocks. Both jobs are pinned to\n ubuntu-latest, one fresh VM per job, so /tmp neither collides nor persists.\n\n The files also arrived as five separate fetches of main, one per file, so a\n push landing mid-run could pair a rego policy with params from a different\n commit. find-snyk-vulns already checks this repo out, so it now publishes\n the SHA it resolved, and the two later jobs unpack that exact commit as a\n single tarball. One run reads one version.\n\n An env-var's prefix now says where its file came from: SNYK_SCANNING_ from\n this repo at the pinned commit, CALLER_ from the repo being scanned, TMP_\n produced by the run. That split is worth naming because only one of these\n files is the caller's, and it is the one .snyk that the decision attests\n against. Two bare filenames survive because an artifact name cannot\n contain a '/'.\n\n fetch-url-to-file now has exactly one caller, for that .snyk.",
+ "sha1": "7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
+ "message": "Drop lone use of = separator on Kosli CLI boolean flag",
"author": "JonJagger ",
"branch": "main",
- "timestamp": 1787661987.0,
- "url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933"
+ "timestamp": 1785316994.0,
+ "url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584"
},
- "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact/artifacts/c48710e3304e24406c03381a31d01f520ab2f60846aa0b57adbda0a776ebc1ab?artifact_id=5d73a605-4286-4a94-be8c-e2262a67",
- "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424?artifact_id=a6ea2552-c978-4a49-a9c1-91f3402a",
+ "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion",
"deployment_diff": {
- "diff_url": "https://github.com/cyber-dojo/snyk-scanning/compare/c0666c020044ac5b5181999ec153db1e7f6cd303...ed3c81d7322bb8058615095f4aab28c147c53933",
- "previous_git_commit": "c0666c020044ac5b5181999ec153db1e7f6cd303",
- "previous_fingerprint": "adb922d738b50876f1cd13f5a998ade341abfd64b3561d0889264399c33c528b",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/creator:83357f1@sha256:adb922d738b50876f1cd13f5a998ade341abfd64b3561d0889264399c33c528b",
+ "diff_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/compare/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584...7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
+ "previous_git_commit": "7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
+ "previous_fingerprint": "ba988cfdac64da22bc8268442c467504fe8df565e65c2f3c4344ce00c83e561a",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/creator:abdc613@sha256:ba988cfdac64da22bc8268442c467504fe8df565e65c2f3c4344ce00c83e561a",
"previous_artifact_compliance_state": "COMPLIANT",
"previous_running": false,
- "previous_git_commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/c0666c020044ac5b5181999ec153db1e7f6cd303",
- "previous_trail_name": "creator-adb922d738b50876f1cd13f5a998ade341abfd64b3561d0889264399c33c528b",
+ "previous_git_commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
+ "previous_trail_name": "promote-all-35",
"previous_template_reference_name": "creator"
},
- "commit_lead_time": 594065.0,
+ "commit_lead_time": 3706325.0,
"artifact_compliance_in_flow": true,
"flow_reasons_for_non_compliance": []
},
{
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "creator-a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424",
"template_reference_name": "creator",
- "git_commit": "7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
- "commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
+ "git_commit": "30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/30111f180ac4e3611cdbd7d805381a0bb9f53cff",
"git_commit_info": {
- "sha1": "7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
- "message": "Drop lone use of = separator on Kosli CLI boolean flag",
- "author": "JonJagger ",
+ "sha1": "30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "message": "Merge pull request #4 from cyber-dojo/take-both-age-instants-from-one-trail-read\n\nMeasure a vuln's age on the Kosli server's clock alone",
+ "author": "Jon Jagger ",
"branch": "main",
- "timestamp": 1785316994.0,
- "url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584"
+ "timestamp": 1788945655.0,
+ "url": "https://github.com/cyber-dojo/snyk-scanning/commit/30111f180ac4e3611cdbd7d805381a0bb9f53cff"
},
- "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/c48710e3304e24406c03381a31d01f520ab2f60846aa0b57adbda0a776ebc1ab?artifact_id=615d01cb-77c4-4429-9531-60460983",
- "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact/artifacts/a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424?artifact_id=8538b0e6-c57c-4137-9e81-53163437",
+ "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact",
"deployment_diff": {
- "diff_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/compare/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584...7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
- "previous_git_commit": "7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
- "previous_fingerprint": "adb922d738b50876f1cd13f5a998ade341abfd64b3561d0889264399c33c528b",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/creator:83357f1@sha256:adb922d738b50876f1cd13f5a998ade341abfd64b3561d0889264399c33c528b",
+ "diff_url": "https://github.com/cyber-dojo/snyk-scanning/compare/30111f180ac4e3611cdbd7d805381a0bb9f53cff...30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "previous_git_commit": "30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "previous_fingerprint": "ba988cfdac64da22bc8268442c467504fe8df565e65c2f3c4344ce00c83e561a",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/creator:abdc613@sha256:ba988cfdac64da22bc8268442c467504fe8df565e65c2f3c4344ce00c83e561a",
"previous_artifact_compliance_state": "COMPLIANT",
"previous_running": false,
- "previous_git_commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
- "previous_trail_name": "promote-all-33",
+ "previous_git_commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "previous_trail_name": "creator-ba988cfdac64da22bc8268442c467504fe8df565e65c2f3c4344ce00c83e561a",
"previous_template_reference_name": "creator"
},
- "commit_lead_time": 2939058.0,
+ "commit_lead_time": 77664.0,
"artifact_compliance_in_flow": true,
"flow_reasons_for_non_compliance": []
},
{
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "creator-c48710e3304e24406c03381a31d01f520ab2f60846aa0b57adbda0a776ebc1ab",
+ "trail_name": "creator-a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424",
"template_reference_name": "creator",
- "git_commit": "ed3c81d7322bb8058615095f4aab28c147c53933",
- "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933",
+ "git_commit": "30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/30111f180ac4e3611cdbd7d805381a0bb9f53cff",
"git_commit_info": {
- "sha1": "ed3c81d7322bb8058615095f4aab28c147c53933",
- "message": "Unpack one pinned commit instead of fetching each file\n\n a0c005a moved these two jobs' files to RUNNER_TEMP, which kept them out of\n the caller's checkout but left the prefix repeated at every use. The paths\n are absolute because the run steps stay in the checkout, where the Kosli\n CLI reads git commit information from the working directory, so the prefix\n cannot be dropped. It can only be folded into the definitions, and a\n literal /tmp folds where runner.temp does not: the runner context is\n unavailable in workflow- and job-level env blocks. Both jobs are pinned to\n ubuntu-latest, one fresh VM per job, so /tmp neither collides nor persists.\n\n The files also arrived as five separate fetches of main, one per file, so a\n push landing mid-run could pair a rego policy with params from a different\n commit. find-snyk-vulns already checks this repo out, so it now publishes\n the SHA it resolved, and the two later jobs unpack that exact commit as a\n single tarball. One run reads one version.\n\n An env-var's prefix now says where its file came from: SNYK_SCANNING_ from\n this repo at the pinned commit, CALLER_ from the repo being scanned, TMP_\n produced by the run. That split is worth naming because only one of these\n files is the caller's, and it is the one .snyk that the decision attests\n against. Two bare filenames survive because an artifact name cannot\n contain a '/'.\n\n fetch-url-to-file now has exactly one caller, for that .snyk.",
- "author": "JonJagger ",
+ "sha1": "30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "message": "Merge pull request #4 from cyber-dojo/take-both-age-instants-from-one-trail-read\n\nMeasure a vuln's age on the Kosli server's clock alone",
+ "author": "Jon Jagger ",
"branch": "main",
- "timestamp": 1787661987.0,
- "url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933"
+ "timestamp": 1788945655.0,
+ "url": "https://github.com/cyber-dojo/snyk-scanning/commit/30111f180ac4e3611cdbd7d805381a0bb9f53cff"
},
- "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/c48710e3304e24406c03381a31d01f520ab2f60846aa0b57adbda0a776ebc1ab?artifact_id=d4d51513-4c22-4eb3-b8b3-caa88478",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424?artifact_id=55242b51-f519-487f-beb5-9d02017c",
"flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact",
"deployment_diff": {
- "diff_url": "https://github.com/cyber-dojo/snyk-scanning/compare/7172cc22125f480a9f12127edb481a4d84aabea3...ed3c81d7322bb8058615095f4aab28c147c53933",
- "previous_git_commit": "7172cc22125f480a9f12127edb481a4d84aabea3",
- "previous_fingerprint": "e8b5e25c5550658cdbd2b8339684b18bce86aaf6538611124ff62f2582c2e5b6",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/creator:a288de5@sha256:e8b5e25c5550658cdbd2b8339684b18bce86aaf6538611124ff62f2582c2e5b6",
+ "diff_url": "https://github.com/cyber-dojo/snyk-scanning/compare/30111f180ac4e3611cdbd7d805381a0bb9f53cff...30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "previous_git_commit": "30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "previous_fingerprint": "ba988cfdac64da22bc8268442c467504fe8df565e65c2f3c4344ce00c83e561a",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/creator:abdc613@sha256:ba988cfdac64da22bc8268442c467504fe8df565e65c2f3c4344ce00c83e561a",
"previous_artifact_compliance_state": "COMPLIANT",
"previous_running": false,
- "previous_git_commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/7172cc22125f480a9f12127edb481a4d84aabea3",
- "previous_trail_name": "creator-e8b5e25c5550658cdbd2b8339684b18bce86aaf6538611124ff62f2582c2e5b6",
+ "previous_git_commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "previous_trail_name": "creator-ba988cfdac64da22bc8268442c467504fe8df565e65c2f3c4344ce00c83e561a",
"previous_template_reference_name": "creator"
},
- "commit_lead_time": 594065.0,
+ "commit_lead_time": 77664.0,
"artifact_compliance_in_flow": true,
"flow_reasons_for_non_compliance": []
}
],
"ecs_context": {
- "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/3497b80bc2ff41e792b5ca4a833882fc",
+ "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/f5fb12ba8c944853886ff4f0faffde50",
"cluster_name": null,
"service_name": null
}
},
{
- "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/nginx:27b3504@sha256:1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21",
+ "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/web:236898f@sha256:e24bd03714d2e583a2196c0eaf82b2aad8eeecf73f29aec58875994b82f0f418",
"compliant": true,
"deployments": [],
"policy_decisions": [
{
- "policy_version": 3,
+ "policy_version": 2,
"status": "COMPLIANT",
"rule_evaluations": [
{
@@ -965,24 +965,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "nginx-ci",
- "trail_name": "27b350410ebcca5ff192f2ca4cdd0e3e49f5ac65",
+ "flow_name": "web-ci",
+ "trail_name": "236898f12a3bcce3b60625dd71c6f817d4cc37c2",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "nginx-1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "web-e24bd03714d2e583a2196c0eaf82b2aad8eeecf73f29aec58875994b82f0f418",
"artifact_status": null
}
},
@@ -990,7 +990,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "nginx-1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21",
+ "trail_name": "web-e24bd03714d2e583a2196c0eaf82b2aad8eeecf73f29aec58875994b82f0f418",
"artifact_status": null
}
}
@@ -1010,24 +1010,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "nginx-ci",
- "trail_name": "27b350410ebcca5ff192f2ca4cdd0e3e49f5ac65",
+ "flow_name": "web-ci",
+ "trail_name": "236898f12a3bcce3b60625dd71c6f817d4cc37c2",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "nginx-1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "web-e24bd03714d2e583a2196c0eaf82b2aad8eeecf73f29aec58875994b82f0f418",
"artifact_status": "COMPLIANT"
}
},
@@ -1035,7 +1035,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "nginx-1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21",
+ "trail_name": "web-e24bd03714d2e583a2196c0eaf82b2aad8eeecf73f29aec58875994b82f0f418",
"artifact_status": "COMPLIANT"
}
}
@@ -1046,10 +1046,10 @@ kosli get snapshot aws-prod --output=json
"type": "attestation",
"definition": {
"if": {
- "text": "flow.tags.kind == \"build\""
+ "text": "flow.name == \"production-promotion\""
},
- "name": "*",
- "type": "pull_request",
+ "name": "snyk-scan",
+ "type": "decision",
"must_be_compliant": true,
"for_control": null
}
@@ -1058,26 +1058,26 @@ kosli get snapshot aws-prod --output=json
"ignored": false,
"resolutions": [
{
- "type": "rule_satisfied",
+ "type": "rule_not_applicable",
"context": {
- "flow_name": "nginx-ci",
- "trail_name": "27b350410ebcca5ff192f2ca4cdd0e3e49f5ac65",
+ "flow_name": "web-ci",
+ "trail_name": "236898f12a3bcce3b60625dd71c6f817d4cc37c2",
"artifact_status": null
}
},
{
- "type": "rule_not_applicable",
+ "type": "rule_satisfied",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "nginx-1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "web-e24bd03714d2e583a2196c0eaf82b2aad8eeecf73f29aec58875994b82f0f418",
"artifact_status": null
}
},
@@ -1085,14 +1085,14 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "nginx-1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21",
+ "trail_name": "web-e24bd03714d2e583a2196c0eaf82b2aad8eeecf73f29aec58875994b82f0f418",
"artifact_status": null
}
}
]
}
],
- "policy_name": "pull-request"
+ "policy_name": "production-promotion"
},
{
"policy_version": 3,
@@ -1112,24 +1112,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_satisfied",
"context": {
- "flow_name": "nginx-ci",
- "trail_name": "27b350410ebcca5ff192f2ca4cdd0e3e49f5ac65",
+ "flow_name": "web-ci",
+ "trail_name": "236898f12a3bcce3b60625dd71c6f817d4cc37c2",
"artifact_status": null
}
},
{
"type": "rule_satisfied",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "nginx-1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_satisfied",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "web-e24bd03714d2e583a2196c0eaf82b2aad8eeecf73f29aec58875994b82f0f418",
"artifact_status": null
}
},
@@ -1137,7 +1137,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_satisfied",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "nginx-1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21",
+ "trail_name": "web-e24bd03714d2e583a2196c0eaf82b2aad8eeecf73f29aec58875994b82f0f418",
"artifact_status": null
}
}
@@ -1157,24 +1157,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "nginx-ci",
- "trail_name": "27b350410ebcca5ff192f2ca4cdd0e3e49f5ac65",
+ "flow_name": "web-ci",
+ "trail_name": "236898f12a3bcce3b60625dd71c6f817d4cc37c2",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "nginx-1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "web-e24bd03714d2e583a2196c0eaf82b2aad8eeecf73f29aec58875994b82f0f418",
"artifact_status": "COMPLIANT"
}
},
@@ -1182,7 +1182,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "nginx-1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21",
+ "trail_name": "web-e24bd03714d2e583a2196c0eaf82b2aad8eeecf73f29aec58875994b82f0f418",
"artifact_status": "COMPLIANT"
}
}
@@ -1207,8 +1207,8 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_satisfied",
"context": {
- "flow_name": "nginx-ci",
- "trail_name": "27b350410ebcca5ff192f2ca4cdd0e3e49f5ac65",
+ "flow_name": "web-ci",
+ "trail_name": "236898f12a3bcce3b60625dd71c6f817d4cc37c2",
"artifact_status": null,
"for_control": "SDLC-CTRL-0002"
}
@@ -1216,8 +1216,8 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "nginx-1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null,
"for_control": "SDLC-CTRL-0002"
}
@@ -1225,8 +1225,8 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "web-e24bd03714d2e583a2196c0eaf82b2aad8eeecf73f29aec58875994b82f0f418",
"artifact_status": null,
"for_control": "SDLC-CTRL-0002"
}
@@ -1235,7 +1235,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "nginx-1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21",
+ "trail_name": "web-e24bd03714d2e583a2196c0eaf82b2aad8eeecf73f29aec58875994b82f0f418",
"artifact_status": null,
"for_control": "SDLC-CTRL-0002"
}
@@ -1246,7 +1246,7 @@ kosli get snapshot aws-prod --output=json
"policy_name": "provenance"
},
{
- "policy_version": 4,
+ "policy_version": 3,
"status": "COMPLIANT",
"rule_evaluations": [
{
@@ -1263,24 +1263,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "nginx-ci",
- "trail_name": "27b350410ebcca5ff192f2ca4cdd0e3e49f5ac65",
+ "flow_name": "web-ci",
+ "trail_name": "236898f12a3bcce3b60625dd71c6f817d4cc37c2",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "nginx-1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "web-e24bd03714d2e583a2196c0eaf82b2aad8eeecf73f29aec58875994b82f0f418",
"artifact_status": null
}
},
@@ -1288,7 +1288,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "nginx-1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21",
+ "trail_name": "web-e24bd03714d2e583a2196c0eaf82b2aad8eeecf73f29aec58875994b82f0f418",
"artifact_status": null
}
}
@@ -1308,24 +1308,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "nginx-ci",
- "trail_name": "27b350410ebcca5ff192f2ca4cdd0e3e49f5ac65",
+ "flow_name": "web-ci",
+ "trail_name": "236898f12a3bcce3b60625dd71c6f817d4cc37c2",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "nginx-1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "web-e24bd03714d2e583a2196c0eaf82b2aad8eeecf73f29aec58875994b82f0f418",
"artifact_status": "COMPLIANT"
}
},
@@ -1333,7 +1333,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "nginx-1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21",
+ "trail_name": "web-e24bd03714d2e583a2196c0eaf82b2aad8eeecf73f29aec58875994b82f0f418",
"artifact_status": "COMPLIANT"
}
}
@@ -1344,60 +1344,56 @@ kosli get snapshot aws-prod --output=json
"type": "attestation",
"definition": {
"if": {
- "text": "flow.name == \"snyk-aws-prod-per-artifact\""
+ "text": "flow.tags.kind == \"build\""
},
- "name": "snyk-container-scan",
- "type": "decision",
+ "name": "*",
+ "type": "pull_request",
"must_be_compliant": true,
- "for_control": "SDLC-CTRL-0022"
+ "for_control": null
}
},
"satisfied": true,
"ignored": false,
"resolutions": [
{
- "type": "rule_not_applicable",
+ "type": "rule_satisfied",
"context": {
- "flow_name": "nginx-ci",
- "trail_name": "27b350410ebcca5ff192f2ca4cdd0e3e49f5ac65",
- "artifact_status": null,
- "for_control": "SDLC-CTRL-0022"
+ "flow_name": "web-ci",
+ "trail_name": "236898f12a3bcce3b60625dd71c6f817d4cc37c2",
+ "artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "nginx-1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21",
- "artifact_status": null,
- "for_control": "SDLC-CTRL-0022"
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
+ "artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
- "artifact_status": null,
- "for_control": "SDLC-CTRL-0022"
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "web-e24bd03714d2e583a2196c0eaf82b2aad8eeecf73f29aec58875994b82f0f418",
+ "artifact_status": null
}
},
{
- "type": "rule_satisfied",
+ "type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "nginx-1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21",
- "artifact_status": null,
- "for_control": "SDLC-CTRL-0022"
+ "trail_name": "web-e24bd03714d2e583a2196c0eaf82b2aad8eeecf73f29aec58875994b82f0f418",
+ "artifact_status": null
}
}
]
}
],
- "policy_name": "snyk-scan-aws-prod"
+ "policy_name": "pull-request"
},
{
- "policy_version": 2,
+ "policy_version": 4,
"status": "COMPLIANT",
"rule_evaluations": [
{
@@ -1414,24 +1410,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "nginx-ci",
- "trail_name": "27b350410ebcca5ff192f2ca4cdd0e3e49f5ac65",
+ "flow_name": "web-ci",
+ "trail_name": "236898f12a3bcce3b60625dd71c6f817d4cc37c2",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "nginx-1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "web-e24bd03714d2e583a2196c0eaf82b2aad8eeecf73f29aec58875994b82f0f418",
"artifact_status": null
}
},
@@ -1439,7 +1435,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "nginx-1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21",
+ "trail_name": "web-e24bd03714d2e583a2196c0eaf82b2aad8eeecf73f29aec58875994b82f0f418",
"artifact_status": null
}
}
@@ -1459,24 +1455,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "nginx-ci",
- "trail_name": "27b350410ebcca5ff192f2ca4cdd0e3e49f5ac65",
+ "flow_name": "web-ci",
+ "trail_name": "236898f12a3bcce3b60625dd71c6f817d4cc37c2",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "nginx-1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "web-e24bd03714d2e583a2196c0eaf82b2aad8eeecf73f29aec58875994b82f0f418",
"artifact_status": "COMPLIANT"
}
},
@@ -1484,7 +1480,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "nginx-1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21",
+ "trail_name": "web-e24bd03714d2e583a2196c0eaf82b2aad8eeecf73f29aec58875994b82f0f418",
"artifact_status": "COMPLIANT"
}
}
@@ -1495,12 +1491,12 @@ kosli get snapshot aws-prod --output=json
"type": "attestation",
"definition": {
"if": {
- "text": "flow.name == \"production-promotion\""
+ "text": "flow.name == \"snyk-aws-prod-per-artifact\""
},
- "name": "snyk-scan",
+ "name": "snyk-container-scan",
"type": "decision",
"must_be_compliant": true,
- "for_control": null
+ "for_control": "SDLC-CTRL-0022"
}
},
"satisfied": true,
@@ -1509,39 +1505,43 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "nginx-ci",
- "trail_name": "27b350410ebcca5ff192f2ca4cdd0e3e49f5ac65",
- "artifact_status": null
+ "flow_name": "web-ci",
+ "trail_name": "236898f12a3bcce3b60625dd71c6f817d4cc37c2",
+ "artifact_status": null,
+ "for_control": "SDLC-CTRL-0022"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "nginx-1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21",
- "artifact_status": null
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
+ "artifact_status": null,
+ "for_control": "SDLC-CTRL-0022"
}
},
{
- "type": "rule_satisfied",
+ "type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
- "artifact_status": null
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "web-e24bd03714d2e583a2196c0eaf82b2aad8eeecf73f29aec58875994b82f0f418",
+ "artifact_status": null,
+ "for_control": "SDLC-CTRL-0022"
}
},
{
- "type": "rule_not_applicable",
+ "type": "rule_satisfied",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "nginx-1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21",
- "artifact_status": null
+ "trail_name": "web-e24bd03714d2e583a2196c0eaf82b2aad8eeecf73f29aec58875994b82f0f418",
+ "artifact_status": null,
+ "for_control": "SDLC-CTRL-0022"
}
}
]
}
],
- "policy_name": "production-promotion"
+ "policy_name": "snyk-scan-aws-prod"
},
{
"policy_version": 2,
@@ -1561,24 +1561,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "nginx-ci",
- "trail_name": "27b350410ebcca5ff192f2ca4cdd0e3e49f5ac65",
+ "flow_name": "web-ci",
+ "trail_name": "236898f12a3bcce3b60625dd71c6f817d4cc37c2",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "nginx-1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "web-e24bd03714d2e583a2196c0eaf82b2aad8eeecf73f29aec58875994b82f0f418",
"artifact_status": null
}
},
@@ -1586,7 +1586,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "nginx-1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21",
+ "trail_name": "web-e24bd03714d2e583a2196c0eaf82b2aad8eeecf73f29aec58875994b82f0f418",
"artifact_status": null
}
}
@@ -1612,24 +1612,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "nginx-ci",
- "trail_name": "27b350410ebcca5ff192f2ca4cdd0e3e49f5ac65",
+ "flow_name": "web-ci",
+ "trail_name": "236898f12a3bcce3b60625dd71c6f817d4cc37c2",
"artifact_status": "COMPLIANT"
}
},
{
- "type": "rule_not_applicable",
+ "type": "rule_satisfied",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "nginx-1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
{
- "type": "rule_satisfied",
+ "type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "web-e24bd03714d2e583a2196c0eaf82b2aad8eeecf73f29aec58875994b82f0f418",
"artifact_status": "COMPLIANT"
}
},
@@ -1637,7 +1637,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_satisfied",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "nginx-1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21",
+ "trail_name": "web-e24bd03714d2e583a2196c0eaf82b2aad8eeecf73f29aec58875994b82f0f418",
"artifact_status": "COMPLIANT"
}
}
@@ -1648,100 +1648,71 @@ kosli get snapshot aws-prod --output=json
}
],
"reasons_for_incompliance": [],
- "fingerprint": "1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21",
+ "fingerprint": "e24bd03714d2e583a2196c0eaf82b2aad8eeecf73f29aec58875994b82f0f418",
"creationTimestamp": [
- 1788255750
+ 1789022826,
+ 1789022880,
+ 1789022884
],
"pods": null,
"annotation": {
- "type": "updated-provenance",
- "was": 1,
- "now": 1
+ "type": "unchanged",
+ "was": 3,
+ "now": 3
},
- "flow_name": "nginx-ci",
- "git_commit": "27b350410ebcca5ff192f2ca4cdd0e3e49f5ac65",
- "commit_url": "https://github.com/cyber-dojo/nginx/commit/27b350410ebcca5ff192f2ca4cdd0e3e49f5ac65",
- "html_url": "https://app.kosli.com/cyber-dojo/flows/nginx-ci/artifacts/1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21?artifact_id=9045bb07-ea42-482f-99c3-4fe5b86f",
- "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/nginx-ci",
+ "flow_name": "web-ci",
+ "git_commit": "236898f12a3bcce3b60625dd71c6f817d4cc37c2",
+ "commit_url": "https://github.com/cyber-dojo/web/commit/236898f12a3bcce3b60625dd71c6f817d4cc37c2",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/web-ci/artifacts/e24bd03714d2e583a2196c0eaf82b2aad8eeecf73f29aec58875994b82f0f418?artifact_id=9d418e45-a78d-462a-b8be-aaf2fc85",
+ "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/web-ci",
"deployment_diff": {
- "diff_url": "https://github.com/cyber-dojo/nginx/compare/fb791742054fa28dd89269aac8002ebfd7b3386e...27b350410ebcca5ff192f2ca4cdd0e3e49f5ac65",
- "previous_git_commit": "fb791742054fa28dd89269aac8002ebfd7b3386e",
- "previous_fingerprint": "b70ff1f9493f5d4205e0e95e565b3fc4d909de237b10e490b250671d0d6895cf",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/nginx:fb79174@sha256:b70ff1f9493f5d4205e0e95e565b3fc4d909de237b10e490b250671d0d6895cf",
+ "diff_url": "https://github.com/cyber-dojo/web/compare/cbe481c4b842f897e4e9e411cd78461a3a12a334...236898f12a3bcce3b60625dd71c6f817d4cc37c2",
+ "previous_git_commit": "cbe481c4b842f897e4e9e411cd78461a3a12a334",
+ "previous_fingerprint": "36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/web:cbe481c@sha256:36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc",
"previous_artifact_compliance_state": "COMPLIANT",
"previous_running": false,
- "previous_git_commit_url": "https://github.com/cyber-dojo/nginx/commit/fb791742054fa28dd89269aac8002ebfd7b3386e",
- "previous_trail_name": "fb791742054fa28dd89269aac8002ebfd7b3386e",
- "previous_template_reference_name": "nginx"
+ "previous_git_commit_url": "https://github.com/cyber-dojo/web/commit/cbe481c4b842f897e4e9e411cd78461a3a12a334",
+ "previous_trail_name": "cbe481c4b842f897e4e9e411cd78461a3a12a334",
+ "previous_template_reference_name": "web"
},
- "commit_lead_time": 1790.0,
+ "commit_lead_time": 88708.0,
"flows": [
{
- "flow_name": "nginx-ci",
- "trail_name": "27b350410ebcca5ff192f2ca4cdd0e3e49f5ac65",
- "template_reference_name": "nginx",
- "git_commit": "27b350410ebcca5ff192f2ca4cdd0e3e49f5ac65",
- "commit_url": "https://github.com/cyber-dojo/nginx/commit/27b350410ebcca5ff192f2ca4cdd0e3e49f5ac65",
+ "flow_name": "web-ci",
+ "trail_name": "236898f12a3bcce3b60625dd71c6f817d4cc37c2",
+ "template_reference_name": "web",
+ "git_commit": "236898f12a3bcce3b60625dd71c6f817d4cc37c2",
+ "commit_url": "https://github.com/cyber-dojo/web/commit/236898f12a3bcce3b60625dd71c6f817d4cc37c2",
"git_commit_info": {
- "sha1": "27b350410ebcca5ff192f2ca4cdd0e3e49f5ac65",
- "message": "Merge pull request #169 from cyber-dojo/run-workflow-to-pick-up-fixes-to-snyk-vulns\n\nRun workflow to pick up fixes to new snyk vulns",
+ "sha1": "236898f12a3bcce3b60625dd71c6f817d4cc37c2",
+ "message": "Dockerfile - Automated base-image update (#425)\n\nCo-authored-by: JonJagger ",
"author": "Jon Jagger ",
"branch": "",
- "timestamp": 1788253960.0,
- "url": "https://github.com/cyber-dojo/nginx/commit/27b350410ebcca5ff192f2ca4cdd0e3e49f5ac65"
- },
- "html_url": "https://app.kosli.com/cyber-dojo/flows/nginx-ci/artifacts/1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21?artifact_id=9045bb07-ea42-482f-99c3-4fe5b86f",
- "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/nginx-ci",
- "deployment_diff": {
- "diff_url": "https://github.com/cyber-dojo/nginx/compare/fb791742054fa28dd89269aac8002ebfd7b3386e...27b350410ebcca5ff192f2ca4cdd0e3e49f5ac65",
- "previous_git_commit": "fb791742054fa28dd89269aac8002ebfd7b3386e",
- "previous_fingerprint": "b70ff1f9493f5d4205e0e95e565b3fc4d909de237b10e490b250671d0d6895cf",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/nginx:fb79174@sha256:b70ff1f9493f5d4205e0e95e565b3fc4d909de237b10e490b250671d0d6895cf",
- "previous_artifact_compliance_state": "COMPLIANT",
- "previous_running": false,
- "previous_git_commit_url": "https://github.com/cyber-dojo/nginx/commit/fb791742054fa28dd89269aac8002ebfd7b3386e",
- "previous_trail_name": "fb791742054fa28dd89269aac8002ebfd7b3386e",
- "previous_template_reference_name": "nginx"
+ "timestamp": 1788778385.0,
+ "url": "https://github.com/cyber-dojo/web/commit/236898f12a3bcce3b60625dd71c6f817d4cc37c2"
},
- "commit_lead_time": 1790.0,
- "artifact_compliance_in_flow": true,
- "flow_reasons_for_non_compliance": []
- },
- {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "nginx-1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21",
- "template_reference_name": "nginx",
- "git_commit": "ed3c81d7322bb8058615095f4aab28c147c53933",
- "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933",
- "git_commit_info": {
- "sha1": "ed3c81d7322bb8058615095f4aab28c147c53933",
- "message": "Unpack one pinned commit instead of fetching each file\n\n a0c005a moved these two jobs' files to RUNNER_TEMP, which kept them out of\n the caller's checkout but left the prefix repeated at every use. The paths\n are absolute because the run steps stay in the checkout, where the Kosli\n CLI reads git commit information from the working directory, so the prefix\n cannot be dropped. It can only be folded into the definitions, and a\n literal /tmp folds where runner.temp does not: the runner context is\n unavailable in workflow- and job-level env blocks. Both jobs are pinned to\n ubuntu-latest, one fresh VM per job, so /tmp neither collides nor persists.\n\n The files also arrived as five separate fetches of main, one per file, so a\n push landing mid-run could pair a rego policy with params from a different\n commit. find-snyk-vulns already checks this repo out, so it now publishes\n the SHA it resolved, and the two later jobs unpack that exact commit as a\n single tarball. One run reads one version.\n\n An env-var's prefix now says where its file came from: SNYK_SCANNING_ from\n this repo at the pinned commit, CALLER_ from the repo being scanned, TMP_\n produced by the run. That split is worth naming because only one of these\n files is the caller's, and it is the one .snyk that the decision attests\n against. Two bare filenames survive because an artifact name cannot\n contain a '/'.\n\n fetch-url-to-file now has exactly one caller, for that .snyk.",
- "author": "JonJagger ",
- "branch": "main",
- "timestamp": 1787661987.0,
- "url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933"
- },
- "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact/artifacts/1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21?artifact_id=d14d27b1-2d09-43a9-bf35-f58f3164",
- "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/web-ci/artifacts/e24bd03714d2e583a2196c0eaf82b2aad8eeecf73f29aec58875994b82f0f418?artifact_id=9d418e45-a78d-462a-b8be-aaf2fc85",
+ "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/web-ci",
"deployment_diff": {
- "diff_url": "https://github.com/cyber-dojo/snyk-scanning/compare/c0666c020044ac5b5181999ec153db1e7f6cd303...ed3c81d7322bb8058615095f4aab28c147c53933",
- "previous_git_commit": "c0666c020044ac5b5181999ec153db1e7f6cd303",
- "previous_fingerprint": "b70ff1f9493f5d4205e0e95e565b3fc4d909de237b10e490b250671d0d6895cf",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/nginx:fb79174@sha256:b70ff1f9493f5d4205e0e95e565b3fc4d909de237b10e490b250671d0d6895cf",
+ "diff_url": "https://github.com/cyber-dojo/web/compare/cbe481c4b842f897e4e9e411cd78461a3a12a334...236898f12a3bcce3b60625dd71c6f817d4cc37c2",
+ "previous_git_commit": "cbe481c4b842f897e4e9e411cd78461a3a12a334",
+ "previous_fingerprint": "36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/web:cbe481c@sha256:36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc",
"previous_artifact_compliance_state": "COMPLIANT",
"previous_running": false,
- "previous_git_commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/c0666c020044ac5b5181999ec153db1e7f6cd303",
- "previous_trail_name": "nginx-b70ff1f9493f5d4205e0e95e565b3fc4d909de237b10e490b250671d0d6895cf",
- "previous_template_reference_name": "nginx"
+ "previous_git_commit_url": "https://github.com/cyber-dojo/web/commit/cbe481c4b842f897e4e9e411cd78461a3a12a334",
+ "previous_trail_name": "cbe481c4b842f897e4e9e411cd78461a3a12a334",
+ "previous_template_reference_name": "web"
},
- "commit_lead_time": 593763.0,
+ "commit_lead_time": 88708.0,
"artifact_compliance_in_flow": true,
"flow_reasons_for_non_compliance": []
},
{
"flow_name": "production-promotion",
- "trail_name": "promote-all-34",
- "template_reference_name": "nginx",
+ "trail_name": "promote-all-35",
+ "template_reference_name": "web",
"git_commit": "7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
"commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
"git_commit_info": {
@@ -1752,68 +1723,99 @@ kosli get snapshot aws-prod --output=json
"timestamp": 1785316994.0,
"url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584"
},
- "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21?artifact_id=1b78fe0b-61c8-4e00-bc5a-d54ae788",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/e24bd03714d2e583a2196c0eaf82b2aad8eeecf73f29aec58875994b82f0f418?artifact_id=2db7454f-b774-4c13-b755-516ec573",
"flow_html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion",
"deployment_diff": {
"diff_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/compare/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584...7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
"previous_git_commit": "7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
- "previous_fingerprint": "b70ff1f9493f5d4205e0e95e565b3fc4d909de237b10e490b250671d0d6895cf",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/nginx:fb79174@sha256:b70ff1f9493f5d4205e0e95e565b3fc4d909de237b10e490b250671d0d6895cf",
+ "previous_fingerprint": "36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/web:cbe481c@sha256:36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc",
"previous_artifact_compliance_state": "COMPLIANT",
"previous_running": false,
"previous_git_commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
- "previous_trail_name": "promote-all-33",
- "previous_template_reference_name": "nginx"
+ "previous_trail_name": "promotion-one-161",
+ "previous_template_reference_name": "web"
+ },
+ "commit_lead_time": 3550099.0,
+ "artifact_compliance_in_flow": true,
+ "flow_reasons_for_non_compliance": []
+ },
+ {
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "web-e24bd03714d2e583a2196c0eaf82b2aad8eeecf73f29aec58875994b82f0f418",
+ "template_reference_name": "web",
+ "git_commit": "30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "git_commit_info": {
+ "sha1": "30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "message": "Merge pull request #4 from cyber-dojo/take-both-age-instants-from-one-trail-read\n\nMeasure a vuln's age on the Kosli server's clock alone",
+ "author": "Jon Jagger ",
+ "branch": "main",
+ "timestamp": 1788945655.0,
+ "url": "https://github.com/cyber-dojo/snyk-scanning/commit/30111f180ac4e3611cdbd7d805381a0bb9f53cff"
+ },
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact/artifacts/e24bd03714d2e583a2196c0eaf82b2aad8eeecf73f29aec58875994b82f0f418?artifact_id=f65df9d1-cb49-4f5a-a751-785138de",
+ "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact",
+ "deployment_diff": {
+ "diff_url": "https://github.com/cyber-dojo/snyk-scanning/compare/ed3c81d7322bb8058615095f4aab28c147c53933...30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "previous_git_commit": "ed3c81d7322bb8058615095f4aab28c147c53933",
+ "previous_fingerprint": "36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/web:cbe481c@sha256:36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc",
+ "previous_artifact_compliance_state": "NON-COMPLIANT",
+ "previous_running": false,
+ "previous_git_commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933",
+ "previous_trail_name": "web-36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc",
+ "previous_template_reference_name": "web"
},
- "commit_lead_time": 2938756.0,
+ "commit_lead_time": -78562.0,
"artifact_compliance_in_flow": true,
"flow_reasons_for_non_compliance": []
},
{
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "nginx-1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21",
- "template_reference_name": "nginx",
- "git_commit": "ed3c81d7322bb8058615095f4aab28c147c53933",
- "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933",
+ "trail_name": "web-e24bd03714d2e583a2196c0eaf82b2aad8eeecf73f29aec58875994b82f0f418",
+ "template_reference_name": "web",
+ "git_commit": "30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/30111f180ac4e3611cdbd7d805381a0bb9f53cff",
"git_commit_info": {
- "sha1": "ed3c81d7322bb8058615095f4aab28c147c53933",
- "message": "Unpack one pinned commit instead of fetching each file\n\n a0c005a moved these two jobs' files to RUNNER_TEMP, which kept them out of\n the caller's checkout but left the prefix repeated at every use. The paths\n are absolute because the run steps stay in the checkout, where the Kosli\n CLI reads git commit information from the working directory, so the prefix\n cannot be dropped. It can only be folded into the definitions, and a\n literal /tmp folds where runner.temp does not: the runner context is\n unavailable in workflow- and job-level env blocks. Both jobs are pinned to\n ubuntu-latest, one fresh VM per job, so /tmp neither collides nor persists.\n\n The files also arrived as five separate fetches of main, one per file, so a\n push landing mid-run could pair a rego policy with params from a different\n commit. find-snyk-vulns already checks this repo out, so it now publishes\n the SHA it resolved, and the two later jobs unpack that exact commit as a\n single tarball. One run reads one version.\n\n An env-var's prefix now says where its file came from: SNYK_SCANNING_ from\n this repo at the pinned commit, CALLER_ from the repo being scanned, TMP_\n produced by the run. That split is worth naming because only one of these\n files is the caller's, and it is the one .snyk that the decision attests\n against. Two bare filenames survive because an artifact name cannot\n contain a '/'.\n\n fetch-url-to-file now has exactly one caller, for that .snyk.",
- "author": "JonJagger ",
+ "sha1": "30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "message": "Merge pull request #4 from cyber-dojo/take-both-age-instants-from-one-trail-read\n\nMeasure a vuln's age on the Kosli server's clock alone",
+ "author": "Jon Jagger ",
"branch": "main",
- "timestamp": 1787661987.0,
- "url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933"
+ "timestamp": 1788945655.0,
+ "url": "https://github.com/cyber-dojo/snyk-scanning/commit/30111f180ac4e3611cdbd7d805381a0bb9f53cff"
},
- "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21?artifact_id=c340a947-0136-4de1-acc8-2a89f741",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/e24bd03714d2e583a2196c0eaf82b2aad8eeecf73f29aec58875994b82f0f418?artifact_id=60234182-f1d9-4d59-aa4e-2d29180f",
"flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact",
"deployment_diff": {
- "diff_url": "https://github.com/cyber-dojo/snyk-scanning/compare/00c479764cb9eca038fdaaaef108672d0bb0ed26...ed3c81d7322bb8058615095f4aab28c147c53933",
+ "diff_url": "https://github.com/cyber-dojo/snyk-scanning/compare/00c479764cb9eca038fdaaaef108672d0bb0ed26...30111f180ac4e3611cdbd7d805381a0bb9f53cff",
"previous_git_commit": "00c479764cb9eca038fdaaaef108672d0bb0ed26",
- "previous_fingerprint": "b7ff2cf22c934716a4280f0450ae52fe822cda7fce7fc5488bf62853860cddc8",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/nginx:7065268@sha256:b7ff2cf22c934716a4280f0450ae52fe822cda7fce7fc5488bf62853860cddc8",
+ "previous_fingerprint": "29c69c2f30f261a26fff4793fd8ae44b9081def1d4bcaaa27b0fef0501d949e4",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/web:f66cc5c@sha256:29c69c2f30f261a26fff4793fd8ae44b9081def1d4bcaaa27b0fef0501d949e4",
"previous_artifact_compliance_state": "COMPLIANT",
"previous_running": false,
"previous_git_commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/00c479764cb9eca038fdaaaef108672d0bb0ed26",
- "previous_trail_name": "nginx-b7ff2cf22c934716a4280f0450ae52fe822cda7fce7fc5488bf62853860cddc8",
- "previous_template_reference_name": "nginx"
+ "previous_trail_name": "web-29c69c2f30f261a26fff4793fd8ae44b9081def1d4bcaaa27b0fef0501d949e4",
+ "previous_template_reference_name": "web"
},
- "commit_lead_time": 593763.0,
+ "commit_lead_time": -78562.0,
"artifact_compliance_in_flow": true,
"flow_reasons_for_non_compliance": []
}
],
"ecs_context": {
- "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/675ca6104c294b369094b918f30ab6b9",
+ "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/f800bdc877ff4579aff38aae2a2b8db9",
"cluster_name": null,
"service_name": null
}
},
{
- "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/languages-start-points:a357ebd@sha256:28bc41a2185a154249b1d06983741c39beb3574ebdce7273963ecde2ae9dd832",
+ "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:4b2bfc0@sha256:8e36719b74e24f93433b2fa52107beec253f7f5dc2fcefc4aad60befe31db65f",
"compliant": true,
"deployments": [],
"policy_decisions": [
{
- "policy_version": 3,
+ "policy_version": 2,
"status": "COMPLIANT",
"rule_evaluations": [
{
@@ -1830,24 +1832,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "languages-start-points-ci",
- "trail_name": "a357ebd85acdd54968fa0192405aaf2e289d27c9",
+ "flow_name": "runner-ci",
+ "trail_name": "4b2bfc038576e2a7648090c4c1289fbc9ebfc481",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "languages-start-points-28bc41a2185a154249b1d06983741c39beb3574ebdce7273963ecde2ae9dd832",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "runner-8e36719b74e24f93433b2fa52107beec253f7f5dc2fcefc4aad60befe31db65f",
"artifact_status": null
}
},
@@ -1855,7 +1857,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "languages-start-points-28bc41a2185a154249b1d06983741c39beb3574ebdce7273963ecde2ae9dd832",
+ "trail_name": "runner-8e36719b74e24f93433b2fa52107beec253f7f5dc2fcefc4aad60befe31db65f",
"artifact_status": null
}
}
@@ -1875,24 +1877,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "languages-start-points-ci",
- "trail_name": "a357ebd85acdd54968fa0192405aaf2e289d27c9",
+ "flow_name": "runner-ci",
+ "trail_name": "4b2bfc038576e2a7648090c4c1289fbc9ebfc481",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "languages-start-points-28bc41a2185a154249b1d06983741c39beb3574ebdce7273963ecde2ae9dd832",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "runner-8e36719b74e24f93433b2fa52107beec253f7f5dc2fcefc4aad60befe31db65f",
"artifact_status": "COMPLIANT"
}
},
@@ -1900,7 +1902,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "languages-start-points-28bc41a2185a154249b1d06983741c39beb3574ebdce7273963ecde2ae9dd832",
+ "trail_name": "runner-8e36719b74e24f93433b2fa52107beec253f7f5dc2fcefc4aad60befe31db65f",
"artifact_status": "COMPLIANT"
}
}
@@ -1911,10 +1913,10 @@ kosli get snapshot aws-prod --output=json
"type": "attestation",
"definition": {
"if": {
- "text": "flow.tags.kind == \"build\""
+ "text": "flow.name == \"production-promotion\""
},
- "name": "*",
- "type": "pull_request",
+ "name": "snyk-scan",
+ "type": "decision",
"must_be_compliant": true,
"for_control": null
}
@@ -1923,26 +1925,26 @@ kosli get snapshot aws-prod --output=json
"ignored": false,
"resolutions": [
{
- "type": "rule_satisfied",
+ "type": "rule_not_applicable",
"context": {
- "flow_name": "languages-start-points-ci",
- "trail_name": "a357ebd85acdd54968fa0192405aaf2e289d27c9",
+ "flow_name": "runner-ci",
+ "trail_name": "4b2bfc038576e2a7648090c4c1289fbc9ebfc481",
"artifact_status": null
}
},
{
- "type": "rule_not_applicable",
+ "type": "rule_satisfied",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "languages-start-points-28bc41a2185a154249b1d06983741c39beb3574ebdce7273963ecde2ae9dd832",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "runner-8e36719b74e24f93433b2fa52107beec253f7f5dc2fcefc4aad60befe31db65f",
"artifact_status": null
}
},
@@ -1950,14 +1952,14 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "languages-start-points-28bc41a2185a154249b1d06983741c39beb3574ebdce7273963ecde2ae9dd832",
+ "trail_name": "runner-8e36719b74e24f93433b2fa52107beec253f7f5dc2fcefc4aad60befe31db65f",
"artifact_status": null
}
}
]
}
],
- "policy_name": "pull-request"
+ "policy_name": "production-promotion"
},
{
"policy_version": 3,
@@ -1977,24 +1979,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_satisfied",
"context": {
- "flow_name": "languages-start-points-ci",
- "trail_name": "a357ebd85acdd54968fa0192405aaf2e289d27c9",
+ "flow_name": "runner-ci",
+ "trail_name": "4b2bfc038576e2a7648090c4c1289fbc9ebfc481",
"artifact_status": null
}
},
{
"type": "rule_satisfied",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "languages-start-points-28bc41a2185a154249b1d06983741c39beb3574ebdce7273963ecde2ae9dd832",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_satisfied",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "runner-8e36719b74e24f93433b2fa52107beec253f7f5dc2fcefc4aad60befe31db65f",
"artifact_status": null
}
},
@@ -2002,7 +2004,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_satisfied",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "languages-start-points-28bc41a2185a154249b1d06983741c39beb3574ebdce7273963ecde2ae9dd832",
+ "trail_name": "runner-8e36719b74e24f93433b2fa52107beec253f7f5dc2fcefc4aad60befe31db65f",
"artifact_status": null
}
}
@@ -2022,24 +2024,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "languages-start-points-ci",
- "trail_name": "a357ebd85acdd54968fa0192405aaf2e289d27c9",
+ "flow_name": "runner-ci",
+ "trail_name": "4b2bfc038576e2a7648090c4c1289fbc9ebfc481",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "languages-start-points-28bc41a2185a154249b1d06983741c39beb3574ebdce7273963ecde2ae9dd832",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "runner-8e36719b74e24f93433b2fa52107beec253f7f5dc2fcefc4aad60befe31db65f",
"artifact_status": "COMPLIANT"
}
},
@@ -2047,7 +2049,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "languages-start-points-28bc41a2185a154249b1d06983741c39beb3574ebdce7273963ecde2ae9dd832",
+ "trail_name": "runner-8e36719b74e24f93433b2fa52107beec253f7f5dc2fcefc4aad60befe31db65f",
"artifact_status": "COMPLIANT"
}
}
@@ -2072,8 +2074,8 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_satisfied",
"context": {
- "flow_name": "languages-start-points-ci",
- "trail_name": "a357ebd85acdd54968fa0192405aaf2e289d27c9",
+ "flow_name": "runner-ci",
+ "trail_name": "4b2bfc038576e2a7648090c4c1289fbc9ebfc481",
"artifact_status": null,
"for_control": "SDLC-CTRL-0002"
}
@@ -2081,8 +2083,8 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "languages-start-points-28bc41a2185a154249b1d06983741c39beb3574ebdce7273963ecde2ae9dd832",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null,
"for_control": "SDLC-CTRL-0002"
}
@@ -2090,8 +2092,8 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "runner-8e36719b74e24f93433b2fa52107beec253f7f5dc2fcefc4aad60befe31db65f",
"artifact_status": null,
"for_control": "SDLC-CTRL-0002"
}
@@ -2100,7 +2102,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "languages-start-points-28bc41a2185a154249b1d06983741c39beb3574ebdce7273963ecde2ae9dd832",
+ "trail_name": "runner-8e36719b74e24f93433b2fa52107beec253f7f5dc2fcefc4aad60befe31db65f",
"artifact_status": null,
"for_control": "SDLC-CTRL-0002"
}
@@ -2111,7 +2113,7 @@ kosli get snapshot aws-prod --output=json
"policy_name": "provenance"
},
{
- "policy_version": 4,
+ "policy_version": 3,
"status": "COMPLIANT",
"rule_evaluations": [
{
@@ -2128,24 +2130,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "languages-start-points-ci",
- "trail_name": "a357ebd85acdd54968fa0192405aaf2e289d27c9",
+ "flow_name": "runner-ci",
+ "trail_name": "4b2bfc038576e2a7648090c4c1289fbc9ebfc481",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "languages-start-points-28bc41a2185a154249b1d06983741c39beb3574ebdce7273963ecde2ae9dd832",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "runner-8e36719b74e24f93433b2fa52107beec253f7f5dc2fcefc4aad60befe31db65f",
"artifact_status": null
}
},
@@ -2153,7 +2155,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "languages-start-points-28bc41a2185a154249b1d06983741c39beb3574ebdce7273963ecde2ae9dd832",
+ "trail_name": "runner-8e36719b74e24f93433b2fa52107beec253f7f5dc2fcefc4aad60befe31db65f",
"artifact_status": null
}
}
@@ -2173,24 +2175,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "languages-start-points-ci",
- "trail_name": "a357ebd85acdd54968fa0192405aaf2e289d27c9",
+ "flow_name": "runner-ci",
+ "trail_name": "4b2bfc038576e2a7648090c4c1289fbc9ebfc481",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "languages-start-points-28bc41a2185a154249b1d06983741c39beb3574ebdce7273963ecde2ae9dd832",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "runner-8e36719b74e24f93433b2fa52107beec253f7f5dc2fcefc4aad60befe31db65f",
"artifact_status": "COMPLIANT"
}
},
@@ -2198,7 +2200,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "languages-start-points-28bc41a2185a154249b1d06983741c39beb3574ebdce7273963ecde2ae9dd832",
+ "trail_name": "runner-8e36719b74e24f93433b2fa52107beec253f7f5dc2fcefc4aad60befe31db65f",
"artifact_status": "COMPLIANT"
}
}
@@ -2209,60 +2211,56 @@ kosli get snapshot aws-prod --output=json
"type": "attestation",
"definition": {
"if": {
- "text": "flow.name == \"snyk-aws-prod-per-artifact\""
+ "text": "flow.tags.kind == \"build\""
},
- "name": "snyk-container-scan",
- "type": "decision",
+ "name": "*",
+ "type": "pull_request",
"must_be_compliant": true,
- "for_control": "SDLC-CTRL-0022"
+ "for_control": null
}
},
"satisfied": true,
"ignored": false,
"resolutions": [
{
- "type": "rule_not_applicable",
+ "type": "rule_satisfied",
"context": {
- "flow_name": "languages-start-points-ci",
- "trail_name": "a357ebd85acdd54968fa0192405aaf2e289d27c9",
- "artifact_status": null,
- "for_control": "SDLC-CTRL-0022"
+ "flow_name": "runner-ci",
+ "trail_name": "4b2bfc038576e2a7648090c4c1289fbc9ebfc481",
+ "artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "languages-start-points-28bc41a2185a154249b1d06983741c39beb3574ebdce7273963ecde2ae9dd832",
- "artifact_status": null,
- "for_control": "SDLC-CTRL-0022"
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
+ "artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
- "artifact_status": null,
- "for_control": "SDLC-CTRL-0022"
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "runner-8e36719b74e24f93433b2fa52107beec253f7f5dc2fcefc4aad60befe31db65f",
+ "artifact_status": null
}
},
{
- "type": "rule_satisfied",
+ "type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "languages-start-points-28bc41a2185a154249b1d06983741c39beb3574ebdce7273963ecde2ae9dd832",
- "artifact_status": null,
- "for_control": "SDLC-CTRL-0022"
+ "trail_name": "runner-8e36719b74e24f93433b2fa52107beec253f7f5dc2fcefc4aad60befe31db65f",
+ "artifact_status": null
}
}
]
}
],
- "policy_name": "snyk-scan-aws-prod"
+ "policy_name": "pull-request"
},
{
- "policy_version": 2,
+ "policy_version": 4,
"status": "COMPLIANT",
"rule_evaluations": [
{
@@ -2279,24 +2277,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "languages-start-points-ci",
- "trail_name": "a357ebd85acdd54968fa0192405aaf2e289d27c9",
+ "flow_name": "runner-ci",
+ "trail_name": "4b2bfc038576e2a7648090c4c1289fbc9ebfc481",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "languages-start-points-28bc41a2185a154249b1d06983741c39beb3574ebdce7273963ecde2ae9dd832",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "runner-8e36719b74e24f93433b2fa52107beec253f7f5dc2fcefc4aad60befe31db65f",
"artifact_status": null
}
},
@@ -2304,7 +2302,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "languages-start-points-28bc41a2185a154249b1d06983741c39beb3574ebdce7273963ecde2ae9dd832",
+ "trail_name": "runner-8e36719b74e24f93433b2fa52107beec253f7f5dc2fcefc4aad60befe31db65f",
"artifact_status": null
}
}
@@ -2324,24 +2322,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "languages-start-points-ci",
- "trail_name": "a357ebd85acdd54968fa0192405aaf2e289d27c9",
+ "flow_name": "runner-ci",
+ "trail_name": "4b2bfc038576e2a7648090c4c1289fbc9ebfc481",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "languages-start-points-28bc41a2185a154249b1d06983741c39beb3574ebdce7273963ecde2ae9dd832",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "runner-8e36719b74e24f93433b2fa52107beec253f7f5dc2fcefc4aad60befe31db65f",
"artifact_status": "COMPLIANT"
}
},
@@ -2349,7 +2347,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "languages-start-points-28bc41a2185a154249b1d06983741c39beb3574ebdce7273963ecde2ae9dd832",
+ "trail_name": "runner-8e36719b74e24f93433b2fa52107beec253f7f5dc2fcefc4aad60befe31db65f",
"artifact_status": "COMPLIANT"
}
}
@@ -2360,12 +2358,12 @@ kosli get snapshot aws-prod --output=json
"type": "attestation",
"definition": {
"if": {
- "text": "flow.name == \"production-promotion\""
+ "text": "flow.name == \"snyk-aws-prod-per-artifact\""
},
- "name": "snyk-scan",
+ "name": "snyk-container-scan",
"type": "decision",
"must_be_compliant": true,
- "for_control": null
+ "for_control": "SDLC-CTRL-0022"
}
},
"satisfied": true,
@@ -2374,39 +2372,43 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "languages-start-points-ci",
- "trail_name": "a357ebd85acdd54968fa0192405aaf2e289d27c9",
- "artifact_status": null
+ "flow_name": "runner-ci",
+ "trail_name": "4b2bfc038576e2a7648090c4c1289fbc9ebfc481",
+ "artifact_status": null,
+ "for_control": "SDLC-CTRL-0022"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "languages-start-points-28bc41a2185a154249b1d06983741c39beb3574ebdce7273963ecde2ae9dd832",
- "artifact_status": null
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
+ "artifact_status": null,
+ "for_control": "SDLC-CTRL-0022"
}
},
{
- "type": "rule_satisfied",
+ "type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
- "artifact_status": null
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "runner-8e36719b74e24f93433b2fa52107beec253f7f5dc2fcefc4aad60befe31db65f",
+ "artifact_status": null,
+ "for_control": "SDLC-CTRL-0022"
}
},
{
- "type": "rule_not_applicable",
+ "type": "rule_satisfied",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "languages-start-points-28bc41a2185a154249b1d06983741c39beb3574ebdce7273963ecde2ae9dd832",
- "artifact_status": null
+ "trail_name": "runner-8e36719b74e24f93433b2fa52107beec253f7f5dc2fcefc4aad60befe31db65f",
+ "artifact_status": null,
+ "for_control": "SDLC-CTRL-0022"
}
}
]
}
],
- "policy_name": "production-promotion"
+ "policy_name": "snyk-scan-aws-prod"
},
{
"policy_version": 2,
@@ -2426,24 +2428,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "languages-start-points-ci",
- "trail_name": "a357ebd85acdd54968fa0192405aaf2e289d27c9",
+ "flow_name": "runner-ci",
+ "trail_name": "4b2bfc038576e2a7648090c4c1289fbc9ebfc481",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "languages-start-points-28bc41a2185a154249b1d06983741c39beb3574ebdce7273963ecde2ae9dd832",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "runner-8e36719b74e24f93433b2fa52107beec253f7f5dc2fcefc4aad60befe31db65f",
"artifact_status": null
}
},
@@ -2451,7 +2453,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "languages-start-points-28bc41a2185a154249b1d06983741c39beb3574ebdce7273963ecde2ae9dd832",
+ "trail_name": "runner-8e36719b74e24f93433b2fa52107beec253f7f5dc2fcefc4aad60befe31db65f",
"artifact_status": null
}
}
@@ -2477,24 +2479,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "languages-start-points-ci",
- "trail_name": "a357ebd85acdd54968fa0192405aaf2e289d27c9",
+ "flow_name": "runner-ci",
+ "trail_name": "4b2bfc038576e2a7648090c4c1289fbc9ebfc481",
"artifact_status": "COMPLIANT"
}
},
{
- "type": "rule_not_applicable",
+ "type": "rule_satisfied",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "languages-start-points-28bc41a2185a154249b1d06983741c39beb3574ebdce7273963ecde2ae9dd832",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
{
- "type": "rule_satisfied",
+ "type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "runner-8e36719b74e24f93433b2fa52107beec253f7f5dc2fcefc4aad60befe31db65f",
"artifact_status": "COMPLIANT"
}
},
@@ -2502,7 +2504,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_satisfied",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "languages-start-points-28bc41a2185a154249b1d06983741c39beb3574ebdce7273963ecde2ae9dd832",
+ "trail_name": "runner-8e36719b74e24f93433b2fa52107beec253f7f5dc2fcefc4aad60befe31db65f",
"artifact_status": "COMPLIANT"
}
}
@@ -2513,100 +2515,71 @@ kosli get snapshot aws-prod --output=json
}
],
"reasons_for_incompliance": [],
- "fingerprint": "28bc41a2185a154249b1d06983741c39beb3574ebdce7273963ecde2ae9dd832",
+ "fingerprint": "8e36719b74e24f93433b2fa52107beec253f7f5dc2fcefc4aad60befe31db65f",
"creationTimestamp": [
- 1788255750
+ 1789022821,
+ 1789022872,
+ 1789022877
],
"pods": null,
"annotation": {
- "type": "updated-provenance",
- "was": 1,
- "now": 1
+ "type": "unchanged",
+ "was": 3,
+ "now": 3
},
- "flow_name": "languages-start-points-ci",
- "git_commit": "a357ebd85acdd54968fa0192405aaf2e289d27c9",
- "commit_url": "https://github.com/cyber-dojo/languages-start-points/commit/a357ebd85acdd54968fa0192405aaf2e289d27c9",
- "html_url": "https://app.kosli.com/cyber-dojo/flows/languages-start-points-ci/artifacts/28bc41a2185a154249b1d06983741c39beb3574ebdce7273963ecde2ae9dd832?artifact_id=8e028a8d-a1f2-4732-8663-47012b29",
- "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/languages-start-points-ci",
+ "flow_name": "runner-ci",
+ "git_commit": "4b2bfc038576e2a7648090c4c1289fbc9ebfc481",
+ "commit_url": "https://github.com/cyber-dojo/runner/commit/4b2bfc038576e2a7648090c4c1289fbc9ebfc481",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/runner-ci/artifacts/8e36719b74e24f93433b2fa52107beec253f7f5dc2fcefc4aad60befe31db65f?artifact_id=612b9903-ce02-40a7-a329-77b10931",
+ "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/runner-ci",
"deployment_diff": {
- "diff_url": "https://github.com/cyber-dojo/languages-start-points/compare/068b3424c7da843a4f2d428d2e4915f33efc4a02...a357ebd85acdd54968fa0192405aaf2e289d27c9",
- "previous_git_commit": "068b3424c7da843a4f2d428d2e4915f33efc4a02",
- "previous_fingerprint": "adf2596645ae3fe9b711849a2e9aae3a65173b270963e3214b9c7ea00b03c1cb",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/languages-start-points:068b342@sha256:adf2596645ae3fe9b711849a2e9aae3a65173b270963e3214b9c7ea00b03c1cb",
+ "diff_url": "https://github.com/cyber-dojo/runner/compare/ca65b67c3e311fbdd2435609fdb6f8a5479f66f9...4b2bfc038576e2a7648090c4c1289fbc9ebfc481",
+ "previous_git_commit": "ca65b67c3e311fbdd2435609fdb6f8a5479f66f9",
+ "previous_fingerprint": "a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:ca65b67@sha256:a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638",
"previous_artifact_compliance_state": "COMPLIANT",
"previous_running": false,
- "previous_git_commit_url": "https://github.com/cyber-dojo/languages-start-points/commit/068b3424c7da843a4f2d428d2e4915f33efc4a02",
- "previous_trail_name": "068b3424c7da843a4f2d428d2e4915f33efc4a02",
- "previous_template_reference_name": "languages-start-points"
+ "previous_git_commit_url": "https://github.com/cyber-dojo/runner/commit/ca65b67c3e311fbdd2435609fdb6f8a5479f66f9",
+ "previous_trail_name": "ca65b67c3e311fbdd2435609fdb6f8a5479f66f9",
+ "previous_template_reference_name": "runner"
},
- "commit_lead_time": 10038.0,
+ "commit_lead_time": 88837.0,
"flows": [
{
- "flow_name": "languages-start-points-ci",
- "trail_name": "a357ebd85acdd54968fa0192405aaf2e289d27c9",
- "template_reference_name": "languages-start-points",
- "git_commit": "a357ebd85acdd54968fa0192405aaf2e289d27c9",
- "commit_url": "https://github.com/cyber-dojo/languages-start-points/commit/a357ebd85acdd54968fa0192405aaf2e289d27c9",
+ "flow_name": "runner-ci",
+ "trail_name": "4b2bfc038576e2a7648090c4c1289fbc9ebfc481",
+ "template_reference_name": "runner",
+ "git_commit": "4b2bfc038576e2a7648090c4c1289fbc9ebfc481",
+ "commit_url": "https://github.com/cyber-dojo/runner/commit/4b2bfc038576e2a7648090c4c1289fbc9ebfc481",
"git_commit_info": {
- "sha1": "a357ebd85acdd54968fa0192405aaf2e289d27c9",
- "message": "Merge pull request #252 from cyber-dojo/speed-updates-to-slowest-ltfs\n\nSpeed updates to the slowest LTFs",
+ "sha1": "4b2bfc038576e2a7648090c4c1289fbc9ebfc481",
+ "message": "Dockerfile - Automated base-image update (#312)\n\nCo-authored-by: JonJagger ",
"author": "Jon Jagger ",
"branch": "",
- "timestamp": 1788245712.0,
- "url": "https://github.com/cyber-dojo/languages-start-points/commit/a357ebd85acdd54968fa0192405aaf2e289d27c9"
- },
- "html_url": "https://app.kosli.com/cyber-dojo/flows/languages-start-points-ci/artifacts/28bc41a2185a154249b1d06983741c39beb3574ebdce7273963ecde2ae9dd832?artifact_id=8e028a8d-a1f2-4732-8663-47012b29",
- "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/languages-start-points-ci",
- "deployment_diff": {
- "diff_url": "https://github.com/cyber-dojo/languages-start-points/compare/068b3424c7da843a4f2d428d2e4915f33efc4a02...a357ebd85acdd54968fa0192405aaf2e289d27c9",
- "previous_git_commit": "068b3424c7da843a4f2d428d2e4915f33efc4a02",
- "previous_fingerprint": "adf2596645ae3fe9b711849a2e9aae3a65173b270963e3214b9c7ea00b03c1cb",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/languages-start-points:068b342@sha256:adf2596645ae3fe9b711849a2e9aae3a65173b270963e3214b9c7ea00b03c1cb",
- "previous_artifact_compliance_state": "COMPLIANT",
- "previous_running": false,
- "previous_git_commit_url": "https://github.com/cyber-dojo/languages-start-points/commit/068b3424c7da843a4f2d428d2e4915f33efc4a02",
- "previous_trail_name": "068b3424c7da843a4f2d428d2e4915f33efc4a02",
- "previous_template_reference_name": "languages-start-points"
- },
- "commit_lead_time": 10038.0,
- "artifact_compliance_in_flow": true,
- "flow_reasons_for_non_compliance": []
- },
- {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "languages-start-points-28bc41a2185a154249b1d06983741c39beb3574ebdce7273963ecde2ae9dd832",
- "template_reference_name": "languages-start-points",
- "git_commit": "ed3c81d7322bb8058615095f4aab28c147c53933",
- "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933",
- "git_commit_info": {
- "sha1": "ed3c81d7322bb8058615095f4aab28c147c53933",
- "message": "Unpack one pinned commit instead of fetching each file\n\n a0c005a moved these two jobs' files to RUNNER_TEMP, which kept them out of\n the caller's checkout but left the prefix repeated at every use. The paths\n are absolute because the run steps stay in the checkout, where the Kosli\n CLI reads git commit information from the working directory, so the prefix\n cannot be dropped. It can only be folded into the definitions, and a\n literal /tmp folds where runner.temp does not: the runner context is\n unavailable in workflow- and job-level env blocks. Both jobs are pinned to\n ubuntu-latest, one fresh VM per job, so /tmp neither collides nor persists.\n\n The files also arrived as five separate fetches of main, one per file, so a\n push landing mid-run could pair a rego policy with params from a different\n commit. find-snyk-vulns already checks this repo out, so it now publishes\n the SHA it resolved, and the two later jobs unpack that exact commit as a\n single tarball. One run reads one version.\n\n An env-var's prefix now says where its file came from: SNYK_SCANNING_ from\n this repo at the pinned commit, CALLER_ from the repo being scanned, TMP_\n produced by the run. That split is worth naming because only one of these\n files is the caller's, and it is the one .snyk that the decision attests\n against. Two bare filenames survive because an artifact name cannot\n contain a '/'.\n\n fetch-url-to-file now has exactly one caller, for that .snyk.",
- "author": "JonJagger ",
- "branch": "main",
- "timestamp": 1787661987.0,
- "url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933"
+ "timestamp": 1788778348.0,
+ "url": "https://github.com/cyber-dojo/runner/commit/4b2bfc038576e2a7648090c4c1289fbc9ebfc481"
},
- "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact/artifacts/28bc41a2185a154249b1d06983741c39beb3574ebdce7273963ecde2ae9dd832?artifact_id=8b7fa132-7335-4301-a248-b13e4286",
- "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/runner-ci/artifacts/8e36719b74e24f93433b2fa52107beec253f7f5dc2fcefc4aad60befe31db65f?artifact_id=612b9903-ce02-40a7-a329-77b10931",
+ "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/runner-ci",
"deployment_diff": {
- "diff_url": "https://github.com/cyber-dojo/snyk-scanning/compare/c0666c020044ac5b5181999ec153db1e7f6cd303...ed3c81d7322bb8058615095f4aab28c147c53933",
- "previous_git_commit": "c0666c020044ac5b5181999ec153db1e7f6cd303",
- "previous_fingerprint": "adf2596645ae3fe9b711849a2e9aae3a65173b270963e3214b9c7ea00b03c1cb",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/languages-start-points:068b342@sha256:adf2596645ae3fe9b711849a2e9aae3a65173b270963e3214b9c7ea00b03c1cb",
+ "diff_url": "https://github.com/cyber-dojo/runner/compare/ca65b67c3e311fbdd2435609fdb6f8a5479f66f9...4b2bfc038576e2a7648090c4c1289fbc9ebfc481",
+ "previous_git_commit": "ca65b67c3e311fbdd2435609fdb6f8a5479f66f9",
+ "previous_fingerprint": "a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:ca65b67@sha256:a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638",
"previous_artifact_compliance_state": "COMPLIANT",
"previous_running": false,
- "previous_git_commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/c0666c020044ac5b5181999ec153db1e7f6cd303",
- "previous_trail_name": "languages-start-points-adf2596645ae3fe9b711849a2e9aae3a65173b270963e3214b9c7ea00b03c1cb",
- "previous_template_reference_name": "languages-start-points"
+ "previous_git_commit_url": "https://github.com/cyber-dojo/runner/commit/ca65b67c3e311fbdd2435609fdb6f8a5479f66f9",
+ "previous_trail_name": "ca65b67c3e311fbdd2435609fdb6f8a5479f66f9",
+ "previous_template_reference_name": "runner"
},
- "commit_lead_time": 593763.0,
+ "commit_lead_time": 88837.0,
"artifact_compliance_in_flow": true,
"flow_reasons_for_non_compliance": []
},
{
"flow_name": "production-promotion",
- "trail_name": "promote-all-34",
- "template_reference_name": "languages-start-points",
+ "trail_name": "promote-all-35",
+ "template_reference_name": "runner",
"git_commit": "7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
"commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
"git_commit_info": {
@@ -2617,68 +2590,99 @@ kosli get snapshot aws-prod --output=json
"timestamp": 1785316994.0,
"url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584"
},
- "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/28bc41a2185a154249b1d06983741c39beb3574ebdce7273963ecde2ae9dd832?artifact_id=790a39b3-0c7c-4220-9d6b-63bff0f3",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/8e36719b74e24f93433b2fa52107beec253f7f5dc2fcefc4aad60befe31db65f?artifact_id=bf1d6fdd-5fa4-410f-a897-ad33e40a",
"flow_html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion",
"deployment_diff": {
"diff_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/compare/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584...7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
"previous_git_commit": "7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
- "previous_fingerprint": "adf2596645ae3fe9b711849a2e9aae3a65173b270963e3214b9c7ea00b03c1cb",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/languages-start-points:068b342@sha256:adf2596645ae3fe9b711849a2e9aae3a65173b270963e3214b9c7ea00b03c1cb",
+ "previous_fingerprint": "a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:ca65b67@sha256:a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638",
"previous_artifact_compliance_state": "COMPLIANT",
"previous_running": false,
"previous_git_commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
- "previous_trail_name": "promote-all-33",
- "previous_template_reference_name": "languages-start-points"
+ "previous_trail_name": "promote-all-34",
+ "previous_template_reference_name": "runner"
+ },
+ "commit_lead_time": 3550191.0,
+ "artifact_compliance_in_flow": true,
+ "flow_reasons_for_non_compliance": []
+ },
+ {
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "runner-8e36719b74e24f93433b2fa52107beec253f7f5dc2fcefc4aad60befe31db65f",
+ "template_reference_name": "runner",
+ "git_commit": "30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "git_commit_info": {
+ "sha1": "30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "message": "Merge pull request #4 from cyber-dojo/take-both-age-instants-from-one-trail-read\n\nMeasure a vuln's age on the Kosli server's clock alone",
+ "author": "Jon Jagger ",
+ "branch": "main",
+ "timestamp": 1788945655.0,
+ "url": "https://github.com/cyber-dojo/snyk-scanning/commit/30111f180ac4e3611cdbd7d805381a0bb9f53cff"
+ },
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact/artifacts/8e36719b74e24f93433b2fa52107beec253f7f5dc2fcefc4aad60befe31db65f?artifact_id=fbdfe540-f0e7-4b68-9bab-b752fe2a",
+ "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact",
+ "deployment_diff": {
+ "diff_url": "https://github.com/cyber-dojo/snyk-scanning/compare/ed3c81d7322bb8058615095f4aab28c147c53933...30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "previous_git_commit": "ed3c81d7322bb8058615095f4aab28c147c53933",
+ "previous_fingerprint": "a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:ca65b67@sha256:a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638",
+ "previous_artifact_compliance_state": "COMPLIANT",
+ "previous_running": false,
+ "previous_git_commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933",
+ "previous_trail_name": "runner-a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638",
+ "previous_template_reference_name": "runner"
},
- "commit_lead_time": 2938756.0,
+ "commit_lead_time": -78470.0,
"artifact_compliance_in_flow": true,
"flow_reasons_for_non_compliance": []
},
{
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "languages-start-points-28bc41a2185a154249b1d06983741c39beb3574ebdce7273963ecde2ae9dd832",
- "template_reference_name": "languages-start-points",
- "git_commit": "ed3c81d7322bb8058615095f4aab28c147c53933",
- "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933",
+ "trail_name": "runner-8e36719b74e24f93433b2fa52107beec253f7f5dc2fcefc4aad60befe31db65f",
+ "template_reference_name": "runner",
+ "git_commit": "30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/30111f180ac4e3611cdbd7d805381a0bb9f53cff",
"git_commit_info": {
- "sha1": "ed3c81d7322bb8058615095f4aab28c147c53933",
- "message": "Unpack one pinned commit instead of fetching each file\n\n a0c005a moved these two jobs' files to RUNNER_TEMP, which kept them out of\n the caller's checkout but left the prefix repeated at every use. The paths\n are absolute because the run steps stay in the checkout, where the Kosli\n CLI reads git commit information from the working directory, so the prefix\n cannot be dropped. It can only be folded into the definitions, and a\n literal /tmp folds where runner.temp does not: the runner context is\n unavailable in workflow- and job-level env blocks. Both jobs are pinned to\n ubuntu-latest, one fresh VM per job, so /tmp neither collides nor persists.\n\n The files also arrived as five separate fetches of main, one per file, so a\n push landing mid-run could pair a rego policy with params from a different\n commit. find-snyk-vulns already checks this repo out, so it now publishes\n the SHA it resolved, and the two later jobs unpack that exact commit as a\n single tarball. One run reads one version.\n\n An env-var's prefix now says where its file came from: SNYK_SCANNING_ from\n this repo at the pinned commit, CALLER_ from the repo being scanned, TMP_\n produced by the run. That split is worth naming because only one of these\n files is the caller's, and it is the one .snyk that the decision attests\n against. Two bare filenames survive because an artifact name cannot\n contain a '/'.\n\n fetch-url-to-file now has exactly one caller, for that .snyk.",
- "author": "JonJagger ",
+ "sha1": "30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "message": "Merge pull request #4 from cyber-dojo/take-both-age-instants-from-one-trail-read\n\nMeasure a vuln's age on the Kosli server's clock alone",
+ "author": "Jon Jagger ",
"branch": "main",
- "timestamp": 1787661987.0,
- "url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933"
+ "timestamp": 1788945655.0,
+ "url": "https://github.com/cyber-dojo/snyk-scanning/commit/30111f180ac4e3611cdbd7d805381a0bb9f53cff"
},
- "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/28bc41a2185a154249b1d06983741c39beb3574ebdce7273963ecde2ae9dd832?artifact_id=400979c3-f9c3-4652-8b12-2204fabb",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/8e36719b74e24f93433b2fa52107beec253f7f5dc2fcefc4aad60befe31db65f?artifact_id=f448662b-6bdd-4d64-80ef-3072846d",
"flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact",
"deployment_diff": {
- "diff_url": "https://github.com/cyber-dojo/snyk-scanning/compare/00c479764cb9eca038fdaaaef108672d0bb0ed26...ed3c81d7322bb8058615095f4aab28c147c53933",
- "previous_git_commit": "00c479764cb9eca038fdaaaef108672d0bb0ed26",
- "previous_fingerprint": "b2f51324efc1528e4dda57d235bdbc68d966e1ea23722d5d296f98eefbfc2676",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/languages-start-points:7e86fed@sha256:b2f51324efc1528e4dda57d235bdbc68d966e1ea23722d5d296f98eefbfc2676",
+ "diff_url": "https://github.com/cyber-dojo/snyk-scanning/compare/ed3c81d7322bb8058615095f4aab28c147c53933...30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "previous_git_commit": "ed3c81d7322bb8058615095f4aab28c147c53933",
+ "previous_fingerprint": "fd8c68c615a68bfa49569beea07d071950dcfeac676028543f530dd7193f5631",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:d7541d3@sha256:fd8c68c615a68bfa49569beea07d071950dcfeac676028543f530dd7193f5631",
"previous_artifact_compliance_state": "COMPLIANT",
"previous_running": false,
- "previous_git_commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/00c479764cb9eca038fdaaaef108672d0bb0ed26",
- "previous_trail_name": "languages-start-points-b2f51324efc1528e4dda57d235bdbc68d966e1ea23722d5d296f98eefbfc2676",
- "previous_template_reference_name": "languages-start-points"
+ "previous_git_commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933",
+ "previous_trail_name": "runner-fd8c68c615a68bfa49569beea07d071950dcfeac676028543f530dd7193f5631",
+ "previous_template_reference_name": "runner"
},
- "commit_lead_time": 593763.0,
+ "commit_lead_time": -78470.0,
"artifact_compliance_in_flow": true,
"flow_reasons_for_non_compliance": []
}
],
"ecs_context": {
- "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/cbb20953281f4b168eb98575717b01e7",
+ "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/ecc3523886774c3791136a12495d567c",
"cluster_name": null,
"service_name": null
}
},
{
- "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/custom-start-points:b12a5c9@sha256:34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09",
+ "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:6b20a42@sha256:4889ce921333abe3acc52880342a6ceb27cd66482e4f8fc93e20d5a91d972d29",
"compliant": true,
"deployments": [],
"policy_decisions": [
{
- "policy_version": 3,
+ "policy_version": 2,
"status": "COMPLIANT",
"rule_evaluations": [
{
@@ -2695,24 +2699,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "custom-start-points-ci",
- "trail_name": "b12a5c9b17023462d13e81381a69c7ef05f84dc2",
+ "flow_name": "dashboard-ci",
+ "trail_name": "6b20a423d5ce05139d4480e9ce67f40e3eda2e07",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "custom-start-points-34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "dashboard-4889ce921333abe3acc52880342a6ceb27cd66482e4f8fc93e20d5a91d972d29",
"artifact_status": null
}
},
@@ -2720,7 +2724,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "custom-start-points-34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09",
+ "trail_name": "dashboard-4889ce921333abe3acc52880342a6ceb27cd66482e4f8fc93e20d5a91d972d29",
"artifact_status": null
}
}
@@ -2740,24 +2744,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "custom-start-points-ci",
- "trail_name": "b12a5c9b17023462d13e81381a69c7ef05f84dc2",
+ "flow_name": "dashboard-ci",
+ "trail_name": "6b20a423d5ce05139d4480e9ce67f40e3eda2e07",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "custom-start-points-34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "dashboard-4889ce921333abe3acc52880342a6ceb27cd66482e4f8fc93e20d5a91d972d29",
"artifact_status": "COMPLIANT"
}
},
@@ -2765,7 +2769,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "custom-start-points-34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09",
+ "trail_name": "dashboard-4889ce921333abe3acc52880342a6ceb27cd66482e4f8fc93e20d5a91d972d29",
"artifact_status": "COMPLIANT"
}
}
@@ -2776,10 +2780,10 @@ kosli get snapshot aws-prod --output=json
"type": "attestation",
"definition": {
"if": {
- "text": "flow.tags.kind == \"build\""
+ "text": "flow.name == \"production-promotion\""
},
- "name": "*",
- "type": "pull_request",
+ "name": "snyk-scan",
+ "type": "decision",
"must_be_compliant": true,
"for_control": null
}
@@ -2788,26 +2792,26 @@ kosli get snapshot aws-prod --output=json
"ignored": false,
"resolutions": [
{
- "type": "rule_satisfied",
+ "type": "rule_not_applicable",
"context": {
- "flow_name": "custom-start-points-ci",
- "trail_name": "b12a5c9b17023462d13e81381a69c7ef05f84dc2",
+ "flow_name": "dashboard-ci",
+ "trail_name": "6b20a423d5ce05139d4480e9ce67f40e3eda2e07",
"artifact_status": null
}
},
{
- "type": "rule_not_applicable",
+ "type": "rule_satisfied",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "custom-start-points-34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "dashboard-4889ce921333abe3acc52880342a6ceb27cd66482e4f8fc93e20d5a91d972d29",
"artifact_status": null
}
},
@@ -2815,14 +2819,14 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "custom-start-points-34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09",
+ "trail_name": "dashboard-4889ce921333abe3acc52880342a6ceb27cd66482e4f8fc93e20d5a91d972d29",
"artifact_status": null
}
}
]
}
],
- "policy_name": "pull-request"
+ "policy_name": "production-promotion"
},
{
"policy_version": 3,
@@ -2842,24 +2846,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_satisfied",
"context": {
- "flow_name": "custom-start-points-ci",
- "trail_name": "b12a5c9b17023462d13e81381a69c7ef05f84dc2",
+ "flow_name": "dashboard-ci",
+ "trail_name": "6b20a423d5ce05139d4480e9ce67f40e3eda2e07",
"artifact_status": null
}
},
{
"type": "rule_satisfied",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "custom-start-points-34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_satisfied",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "dashboard-4889ce921333abe3acc52880342a6ceb27cd66482e4f8fc93e20d5a91d972d29",
"artifact_status": null
}
},
@@ -2867,7 +2871,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_satisfied",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "custom-start-points-34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09",
+ "trail_name": "dashboard-4889ce921333abe3acc52880342a6ceb27cd66482e4f8fc93e20d5a91d972d29",
"artifact_status": null
}
}
@@ -2887,24 +2891,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "custom-start-points-ci",
- "trail_name": "b12a5c9b17023462d13e81381a69c7ef05f84dc2",
+ "flow_name": "dashboard-ci",
+ "trail_name": "6b20a423d5ce05139d4480e9ce67f40e3eda2e07",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "custom-start-points-34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "dashboard-4889ce921333abe3acc52880342a6ceb27cd66482e4f8fc93e20d5a91d972d29",
"artifact_status": "COMPLIANT"
}
},
@@ -2912,7 +2916,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "custom-start-points-34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09",
+ "trail_name": "dashboard-4889ce921333abe3acc52880342a6ceb27cd66482e4f8fc93e20d5a91d972d29",
"artifact_status": "COMPLIANT"
}
}
@@ -2937,8 +2941,8 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_satisfied",
"context": {
- "flow_name": "custom-start-points-ci",
- "trail_name": "b12a5c9b17023462d13e81381a69c7ef05f84dc2",
+ "flow_name": "dashboard-ci",
+ "trail_name": "6b20a423d5ce05139d4480e9ce67f40e3eda2e07",
"artifact_status": null,
"for_control": "SDLC-CTRL-0002"
}
@@ -2946,8 +2950,8 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "custom-start-points-34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null,
"for_control": "SDLC-CTRL-0002"
}
@@ -2955,8 +2959,8 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "dashboard-4889ce921333abe3acc52880342a6ceb27cd66482e4f8fc93e20d5a91d972d29",
"artifact_status": null,
"for_control": "SDLC-CTRL-0002"
}
@@ -2965,7 +2969,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "custom-start-points-34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09",
+ "trail_name": "dashboard-4889ce921333abe3acc52880342a6ceb27cd66482e4f8fc93e20d5a91d972d29",
"artifact_status": null,
"for_control": "SDLC-CTRL-0002"
}
@@ -2976,7 +2980,7 @@ kosli get snapshot aws-prod --output=json
"policy_name": "provenance"
},
{
- "policy_version": 4,
+ "policy_version": 3,
"status": "COMPLIANT",
"rule_evaluations": [
{
@@ -2993,24 +2997,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "custom-start-points-ci",
- "trail_name": "b12a5c9b17023462d13e81381a69c7ef05f84dc2",
+ "flow_name": "dashboard-ci",
+ "trail_name": "6b20a423d5ce05139d4480e9ce67f40e3eda2e07",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "custom-start-points-34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "dashboard-4889ce921333abe3acc52880342a6ceb27cd66482e4f8fc93e20d5a91d972d29",
"artifact_status": null
}
},
@@ -3018,7 +3022,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "custom-start-points-34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09",
+ "trail_name": "dashboard-4889ce921333abe3acc52880342a6ceb27cd66482e4f8fc93e20d5a91d972d29",
"artifact_status": null
}
}
@@ -3038,24 +3042,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "custom-start-points-ci",
- "trail_name": "b12a5c9b17023462d13e81381a69c7ef05f84dc2",
+ "flow_name": "dashboard-ci",
+ "trail_name": "6b20a423d5ce05139d4480e9ce67f40e3eda2e07",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "custom-start-points-34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "dashboard-4889ce921333abe3acc52880342a6ceb27cd66482e4f8fc93e20d5a91d972d29",
"artifact_status": "COMPLIANT"
}
},
@@ -3063,7 +3067,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "custom-start-points-34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09",
+ "trail_name": "dashboard-4889ce921333abe3acc52880342a6ceb27cd66482e4f8fc93e20d5a91d972d29",
"artifact_status": "COMPLIANT"
}
}
@@ -3074,60 +3078,56 @@ kosli get snapshot aws-prod --output=json
"type": "attestation",
"definition": {
"if": {
- "text": "flow.name == \"snyk-aws-prod-per-artifact\""
+ "text": "flow.tags.kind == \"build\""
},
- "name": "snyk-container-scan",
- "type": "decision",
+ "name": "*",
+ "type": "pull_request",
"must_be_compliant": true,
- "for_control": "SDLC-CTRL-0022"
+ "for_control": null
}
},
"satisfied": true,
"ignored": false,
"resolutions": [
{
- "type": "rule_not_applicable",
+ "type": "rule_satisfied",
"context": {
- "flow_name": "custom-start-points-ci",
- "trail_name": "b12a5c9b17023462d13e81381a69c7ef05f84dc2",
- "artifact_status": null,
- "for_control": "SDLC-CTRL-0022"
+ "flow_name": "dashboard-ci",
+ "trail_name": "6b20a423d5ce05139d4480e9ce67f40e3eda2e07",
+ "artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "custom-start-points-34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09",
- "artifact_status": null,
- "for_control": "SDLC-CTRL-0022"
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
+ "artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
- "artifact_status": null,
- "for_control": "SDLC-CTRL-0022"
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "dashboard-4889ce921333abe3acc52880342a6ceb27cd66482e4f8fc93e20d5a91d972d29",
+ "artifact_status": null
}
},
{
- "type": "rule_satisfied",
+ "type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "custom-start-points-34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09",
- "artifact_status": null,
- "for_control": "SDLC-CTRL-0022"
+ "trail_name": "dashboard-4889ce921333abe3acc52880342a6ceb27cd66482e4f8fc93e20d5a91d972d29",
+ "artifact_status": null
}
}
]
}
],
- "policy_name": "snyk-scan-aws-prod"
+ "policy_name": "pull-request"
},
{
- "policy_version": 2,
+ "policy_version": 4,
"status": "COMPLIANT",
"rule_evaluations": [
{
@@ -3144,24 +3144,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "custom-start-points-ci",
- "trail_name": "b12a5c9b17023462d13e81381a69c7ef05f84dc2",
+ "flow_name": "dashboard-ci",
+ "trail_name": "6b20a423d5ce05139d4480e9ce67f40e3eda2e07",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "custom-start-points-34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "dashboard-4889ce921333abe3acc52880342a6ceb27cd66482e4f8fc93e20d5a91d972d29",
"artifact_status": null
}
},
@@ -3169,7 +3169,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "custom-start-points-34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09",
+ "trail_name": "dashboard-4889ce921333abe3acc52880342a6ceb27cd66482e4f8fc93e20d5a91d972d29",
"artifact_status": null
}
}
@@ -3189,24 +3189,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "custom-start-points-ci",
- "trail_name": "b12a5c9b17023462d13e81381a69c7ef05f84dc2",
+ "flow_name": "dashboard-ci",
+ "trail_name": "6b20a423d5ce05139d4480e9ce67f40e3eda2e07",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "custom-start-points-34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "dashboard-4889ce921333abe3acc52880342a6ceb27cd66482e4f8fc93e20d5a91d972d29",
"artifact_status": "COMPLIANT"
}
},
@@ -3214,7 +3214,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "custom-start-points-34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09",
+ "trail_name": "dashboard-4889ce921333abe3acc52880342a6ceb27cd66482e4f8fc93e20d5a91d972d29",
"artifact_status": "COMPLIANT"
}
}
@@ -3225,12 +3225,12 @@ kosli get snapshot aws-prod --output=json
"type": "attestation",
"definition": {
"if": {
- "text": "flow.name == \"production-promotion\""
+ "text": "flow.name == \"snyk-aws-prod-per-artifact\""
},
- "name": "snyk-scan",
+ "name": "snyk-container-scan",
"type": "decision",
"must_be_compliant": true,
- "for_control": null
+ "for_control": "SDLC-CTRL-0022"
}
},
"satisfied": true,
@@ -3239,39 +3239,43 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "custom-start-points-ci",
- "trail_name": "b12a5c9b17023462d13e81381a69c7ef05f84dc2",
- "artifact_status": null
+ "flow_name": "dashboard-ci",
+ "trail_name": "6b20a423d5ce05139d4480e9ce67f40e3eda2e07",
+ "artifact_status": null,
+ "for_control": "SDLC-CTRL-0022"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "custom-start-points-34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09",
- "artifact_status": null
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
+ "artifact_status": null,
+ "for_control": "SDLC-CTRL-0022"
}
},
{
- "type": "rule_satisfied",
+ "type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
- "artifact_status": null
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "dashboard-4889ce921333abe3acc52880342a6ceb27cd66482e4f8fc93e20d5a91d972d29",
+ "artifact_status": null,
+ "for_control": "SDLC-CTRL-0022"
}
},
{
- "type": "rule_not_applicable",
+ "type": "rule_satisfied",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "custom-start-points-34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09",
- "artifact_status": null
+ "trail_name": "dashboard-4889ce921333abe3acc52880342a6ceb27cd66482e4f8fc93e20d5a91d972d29",
+ "artifact_status": null,
+ "for_control": "SDLC-CTRL-0022"
}
}
]
}
],
- "policy_name": "production-promotion"
+ "policy_name": "snyk-scan-aws-prod"
},
{
"policy_version": 2,
@@ -3291,24 +3295,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "custom-start-points-ci",
- "trail_name": "b12a5c9b17023462d13e81381a69c7ef05f84dc2",
+ "flow_name": "dashboard-ci",
+ "trail_name": "6b20a423d5ce05139d4480e9ce67f40e3eda2e07",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "custom-start-points-34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "dashboard-4889ce921333abe3acc52880342a6ceb27cd66482e4f8fc93e20d5a91d972d29",
"artifact_status": null
}
},
@@ -3316,7 +3320,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "custom-start-points-34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09",
+ "trail_name": "dashboard-4889ce921333abe3acc52880342a6ceb27cd66482e4f8fc93e20d5a91d972d29",
"artifact_status": null
}
}
@@ -3342,8 +3346,16 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "custom-start-points-ci",
- "trail_name": "b12a5c9b17023462d13e81381a69c7ef05f84dc2",
+ "flow_name": "dashboard-ci",
+ "trail_name": "6b20a423d5ce05139d4480e9ce67f40e3eda2e07",
+ "artifact_status": "COMPLIANT"
+ }
+ },
+ {
+ "type": "rule_satisfied",
+ "context": {
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
@@ -3351,15 +3363,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "custom-start-points-34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09",
- "artifact_status": "COMPLIANT"
- }
- },
- {
- "type": "rule_satisfied",
- "context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "trail_name": "dashboard-4889ce921333abe3acc52880342a6ceb27cd66482e4f8fc93e20d5a91d972d29",
"artifact_status": "COMPLIANT"
}
},
@@ -3367,7 +3371,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_satisfied",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "custom-start-points-34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09",
+ "trail_name": "dashboard-4889ce921333abe3acc52880342a6ceb27cd66482e4f8fc93e20d5a91d972d29",
"artifact_status": "COMPLIANT"
}
}
@@ -3378,172 +3382,172 @@ kosli get snapshot aws-prod --output=json
}
],
"reasons_for_incompliance": [],
- "fingerprint": "34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09",
+ "fingerprint": "4889ce921333abe3acc52880342a6ceb27cd66482e4f8fc93e20d5a91d972d29",
"creationTimestamp": [
- 1788255398
+ 1789022830
],
"pods": null,
"annotation": {
- "type": "updated-provenance",
+ "type": "unchanged",
"was": 1,
"now": 1
},
- "flow_name": "custom-start-points-ci",
- "git_commit": "b12a5c9b17023462d13e81381a69c7ef05f84dc2",
- "commit_url": "https://github.com/cyber-dojo/custom-start-points/commit/b12a5c9b17023462d13e81381a69c7ef05f84dc2",
- "html_url": "https://app.kosli.com/cyber-dojo/flows/custom-start-points-ci/artifacts/34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09?artifact_id=2aa23627-9e91-488e-b3ea-e4bf2e22",
- "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/custom-start-points-ci",
+ "flow_name": "dashboard-ci",
+ "git_commit": "6b20a423d5ce05139d4480e9ce67f40e3eda2e07",
+ "commit_url": "https://github.com/cyber-dojo/dashboard/commit/6b20a423d5ce05139d4480e9ce67f40e3eda2e07",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/dashboard-ci/artifacts/4889ce921333abe3acc52880342a6ceb27cd66482e4f8fc93e20d5a91d972d29?artifact_id=7ba704a0-8706-4f12-9eb8-776c7e5d",
+ "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/dashboard-ci",
"deployment_diff": {
- "diff_url": "https://github.com/cyber-dojo/custom-start-points/compare/790d86b66f4d86ab47f5c521daf5039dc8aeef4d...b12a5c9b17023462d13e81381a69c7ef05f84dc2",
- "previous_git_commit": "790d86b66f4d86ab47f5c521daf5039dc8aeef4d",
- "previous_fingerprint": "8e965dda26af2d2e68032c25d68e792c85e0c7bd9814862de231bc4c6e935b81",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/custom-start-points:790d86b@sha256:8e965dda26af2d2e68032c25d68e792c85e0c7bd9814862de231bc4c6e935b81",
+ "diff_url": "https://github.com/cyber-dojo/dashboard/compare/ff9f292e809801d35246183988b7812826bc2760...6b20a423d5ce05139d4480e9ce67f40e3eda2e07",
+ "previous_git_commit": "ff9f292e809801d35246183988b7812826bc2760",
+ "previous_fingerprint": "2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:ff9f292@sha256:2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f",
"previous_artifact_compliance_state": "COMPLIANT",
"previous_running": false,
- "previous_git_commit_url": "https://github.com/cyber-dojo/custom-start-points/commit/790d86b66f4d86ab47f5c521daf5039dc8aeef4d",
- "previous_trail_name": "790d86b66f4d86ab47f5c521daf5039dc8aeef4d",
- "previous_template_reference_name": "custom-start-points"
+ "previous_git_commit_url": "https://github.com/cyber-dojo/dashboard/commit/ff9f292e809801d35246183988b7812826bc2760",
+ "previous_trail_name": "ff9f292e809801d35246183988b7812826bc2760",
+ "previous_template_reference_name": "dashboard"
},
- "commit_lead_time": 416881.0,
+ "commit_lead_time": 89179.0,
"flows": [
{
- "flow_name": "custom-start-points-ci",
- "trail_name": "b12a5c9b17023462d13e81381a69c7ef05f84dc2",
- "template_reference_name": "custom-start-points",
- "git_commit": "b12a5c9b17023462d13e81381a69c7ef05f84dc2",
- "commit_url": "https://github.com/cyber-dojo/custom-start-points/commit/b12a5c9b17023462d13e81381a69c7ef05f84dc2",
+ "flow_name": "dashboard-ci",
+ "trail_name": "6b20a423d5ce05139d4480e9ce67f40e3eda2e07",
+ "template_reference_name": "dashboard",
+ "git_commit": "6b20a423d5ce05139d4480e9ce67f40e3eda2e07",
+ "commit_url": "https://github.com/cyber-dojo/dashboard/commit/6b20a423d5ce05139d4480e9ce67f40e3eda2e07",
"git_commit_info": {
- "sha1": "b12a5c9b17023462d13e81381a69c7ef05f84dc2",
- "message": "Merge pull request #143 from cyber-dojo/update-base-image-ce45d62\n\nMerge update-base-image into main",
+ "sha1": "6b20a423d5ce05139d4480e9ce67f40e3eda2e07",
+ "message": "Dockerfile - Automated base-image update (#438)\n\nCo-authored-by: JonJagger ",
"author": "Jon Jagger ",
"branch": "",
- "timestamp": 1787838517.0,
- "url": "https://github.com/cyber-dojo/custom-start-points/commit/b12a5c9b17023462d13e81381a69c7ef05f84dc2"
+ "timestamp": 1788778346.0,
+ "url": "https://github.com/cyber-dojo/dashboard/commit/6b20a423d5ce05139d4480e9ce67f40e3eda2e07"
},
- "html_url": "https://app.kosli.com/cyber-dojo/flows/custom-start-points-ci/artifacts/34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09?artifact_id=2aa23627-9e91-488e-b3ea-e4bf2e22",
- "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/custom-start-points-ci",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/dashboard-ci/artifacts/4889ce921333abe3acc52880342a6ceb27cd66482e4f8fc93e20d5a91d972d29?artifact_id=7ba704a0-8706-4f12-9eb8-776c7e5d",
+ "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/dashboard-ci",
"deployment_diff": {
- "diff_url": "https://github.com/cyber-dojo/custom-start-points/compare/790d86b66f4d86ab47f5c521daf5039dc8aeef4d...b12a5c9b17023462d13e81381a69c7ef05f84dc2",
- "previous_git_commit": "790d86b66f4d86ab47f5c521daf5039dc8aeef4d",
- "previous_fingerprint": "8e965dda26af2d2e68032c25d68e792c85e0c7bd9814862de231bc4c6e935b81",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/custom-start-points:790d86b@sha256:8e965dda26af2d2e68032c25d68e792c85e0c7bd9814862de231bc4c6e935b81",
+ "diff_url": "https://github.com/cyber-dojo/dashboard/compare/ff9f292e809801d35246183988b7812826bc2760...6b20a423d5ce05139d4480e9ce67f40e3eda2e07",
+ "previous_git_commit": "ff9f292e809801d35246183988b7812826bc2760",
+ "previous_fingerprint": "2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:ff9f292@sha256:2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f",
"previous_artifact_compliance_state": "COMPLIANT",
"previous_running": false,
- "previous_git_commit_url": "https://github.com/cyber-dojo/custom-start-points/commit/790d86b66f4d86ab47f5c521daf5039dc8aeef4d",
- "previous_trail_name": "790d86b66f4d86ab47f5c521daf5039dc8aeef4d",
- "previous_template_reference_name": "custom-start-points"
+ "previous_git_commit_url": "https://github.com/cyber-dojo/dashboard/commit/ff9f292e809801d35246183988b7812826bc2760",
+ "previous_trail_name": "ff9f292e809801d35246183988b7812826bc2760",
+ "previous_template_reference_name": "dashboard"
},
- "commit_lead_time": 416881.0,
+ "commit_lead_time": 89179.0,
"artifact_compliance_in_flow": true,
"flow_reasons_for_non_compliance": []
},
{
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "custom-start-points-34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09",
- "template_reference_name": "custom-start-points",
- "git_commit": "ed3c81d7322bb8058615095f4aab28c147c53933",
- "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
+ "template_reference_name": "dashboard",
+ "git_commit": "7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
+ "commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
"git_commit_info": {
- "sha1": "ed3c81d7322bb8058615095f4aab28c147c53933",
- "message": "Unpack one pinned commit instead of fetching each file\n\n a0c005a moved these two jobs' files to RUNNER_TEMP, which kept them out of\n the caller's checkout but left the prefix repeated at every use. The paths\n are absolute because the run steps stay in the checkout, where the Kosli\n CLI reads git commit information from the working directory, so the prefix\n cannot be dropped. It can only be folded into the definitions, and a\n literal /tmp folds where runner.temp does not: the runner context is\n unavailable in workflow- and job-level env blocks. Both jobs are pinned to\n ubuntu-latest, one fresh VM per job, so /tmp neither collides nor persists.\n\n The files also arrived as five separate fetches of main, one per file, so a\n push landing mid-run could pair a rego policy with params from a different\n commit. find-snyk-vulns already checks this repo out, so it now publishes\n the SHA it resolved, and the two later jobs unpack that exact commit as a\n single tarball. One run reads one version.\n\n An env-var's prefix now says where its file came from: SNYK_SCANNING_ from\n this repo at the pinned commit, CALLER_ from the repo being scanned, TMP_\n produced by the run. That split is worth naming because only one of these\n files is the caller's, and it is the one .snyk that the decision attests\n against. Two bare filenames survive because an artifact name cannot\n contain a '/'.\n\n fetch-url-to-file now has exactly one caller, for that .snyk.",
+ "sha1": "7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
+ "message": "Drop lone use of = separator on Kosli CLI boolean flag",
"author": "JonJagger ",
"branch": "main",
- "timestamp": 1787661987.0,
- "url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933"
+ "timestamp": 1785316994.0,
+ "url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584"
},
- "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact/artifacts/34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09?artifact_id=b5dae6e2-12e1-47bc-a361-ead8aa3f",
- "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/4889ce921333abe3acc52880342a6ceb27cd66482e4f8fc93e20d5a91d972d29?artifact_id=26333282-8be1-4a1a-b142-1b3c958b",
+ "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion",
"deployment_diff": {
- "diff_url": "https://github.com/cyber-dojo/snyk-scanning/compare/c0666c020044ac5b5181999ec153db1e7f6cd303...ed3c81d7322bb8058615095f4aab28c147c53933",
- "previous_git_commit": "c0666c020044ac5b5181999ec153db1e7f6cd303",
- "previous_fingerprint": "8e965dda26af2d2e68032c25d68e792c85e0c7bd9814862de231bc4c6e935b81",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/custom-start-points:790d86b@sha256:8e965dda26af2d2e68032c25d68e792c85e0c7bd9814862de231bc4c6e935b81",
+ "diff_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/compare/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584...7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
+ "previous_git_commit": "7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
+ "previous_fingerprint": "2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:ff9f292@sha256:2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f",
"previous_artifact_compliance_state": "COMPLIANT",
"previous_running": false,
- "previous_git_commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/c0666c020044ac5b5181999ec153db1e7f6cd303",
- "previous_trail_name": "custom-start-points-8e965dda26af2d2e68032c25d68e792c85e0c7bd9814862de231bc4c6e935b81",
- "previous_template_reference_name": "custom-start-points"
+ "previous_git_commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
+ "previous_trail_name": "promote-all-34",
+ "previous_template_reference_name": "dashboard"
},
- "commit_lead_time": 593411.0,
+ "commit_lead_time": 3550531.0,
"artifact_compliance_in_flow": true,
"flow_reasons_for_non_compliance": []
},
{
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
- "template_reference_name": "custom-start-points",
- "git_commit": "7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
- "commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "dashboard-4889ce921333abe3acc52880342a6ceb27cd66482e4f8fc93e20d5a91d972d29",
+ "template_reference_name": "dashboard",
+ "git_commit": "30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/30111f180ac4e3611cdbd7d805381a0bb9f53cff",
"git_commit_info": {
- "sha1": "7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
- "message": "Drop lone use of = separator on Kosli CLI boolean flag",
- "author": "JonJagger ",
+ "sha1": "30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "message": "Merge pull request #4 from cyber-dojo/take-both-age-instants-from-one-trail-read\n\nMeasure a vuln's age on the Kosli server's clock alone",
+ "author": "Jon Jagger ",
"branch": "main",
- "timestamp": 1785316994.0,
- "url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584"
+ "timestamp": 1788945655.0,
+ "url": "https://github.com/cyber-dojo/snyk-scanning/commit/30111f180ac4e3611cdbd7d805381a0bb9f53cff"
},
- "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09?artifact_id=63e61c31-696e-4465-9145-2c51f6d4",
- "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact/artifacts/4889ce921333abe3acc52880342a6ceb27cd66482e4f8fc93e20d5a91d972d29?artifact_id=6cdd9974-d138-48f0-b02b-88a08901",
+ "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact",
"deployment_diff": {
- "diff_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/compare/81c216a55b2cb1787645e699ceaceca868cad253...7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
- "previous_git_commit": "81c216a55b2cb1787645e699ceaceca868cad253",
- "previous_fingerprint": "8e965dda26af2d2e68032c25d68e792c85e0c7bd9814862de231bc4c6e935b81",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/custom-start-points:790d86b@sha256:8e965dda26af2d2e68032c25d68e792c85e0c7bd9814862de231bc4c6e935b81",
+ "diff_url": "https://github.com/cyber-dojo/snyk-scanning/compare/ed3c81d7322bb8058615095f4aab28c147c53933...30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "previous_git_commit": "ed3c81d7322bb8058615095f4aab28c147c53933",
+ "previous_fingerprint": "2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:ff9f292@sha256:2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f",
"previous_artifact_compliance_state": "COMPLIANT",
"previous_running": false,
- "previous_git_commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/81c216a55b2cb1787645e699ceaceca868cad253",
- "previous_trail_name": "promote-all-31",
- "previous_template_reference_name": "custom-start-points"
+ "previous_git_commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933",
+ "previous_trail_name": "dashboard-2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f",
+ "previous_template_reference_name": "dashboard"
},
- "commit_lead_time": 2938404.0,
+ "commit_lead_time": -78130.0,
"artifact_compliance_in_flow": true,
"flow_reasons_for_non_compliance": []
},
{
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "custom-start-points-34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09",
- "template_reference_name": "custom-start-points",
- "git_commit": "ed3c81d7322bb8058615095f4aab28c147c53933",
- "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933",
+ "trail_name": "dashboard-4889ce921333abe3acc52880342a6ceb27cd66482e4f8fc93e20d5a91d972d29",
+ "template_reference_name": "dashboard",
+ "git_commit": "30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/30111f180ac4e3611cdbd7d805381a0bb9f53cff",
"git_commit_info": {
- "sha1": "ed3c81d7322bb8058615095f4aab28c147c53933",
- "message": "Unpack one pinned commit instead of fetching each file\n\n a0c005a moved these two jobs' files to RUNNER_TEMP, which kept them out of\n the caller's checkout but left the prefix repeated at every use. The paths\n are absolute because the run steps stay in the checkout, where the Kosli\n CLI reads git commit information from the working directory, so the prefix\n cannot be dropped. It can only be folded into the definitions, and a\n literal /tmp folds where runner.temp does not: the runner context is\n unavailable in workflow- and job-level env blocks. Both jobs are pinned to\n ubuntu-latest, one fresh VM per job, so /tmp neither collides nor persists.\n\n The files also arrived as five separate fetches of main, one per file, so a\n push landing mid-run could pair a rego policy with params from a different\n commit. find-snyk-vulns already checks this repo out, so it now publishes\n the SHA it resolved, and the two later jobs unpack that exact commit as a\n single tarball. One run reads one version.\n\n An env-var's prefix now says where its file came from: SNYK_SCANNING_ from\n this repo at the pinned commit, CALLER_ from the repo being scanned, TMP_\n produced by the run. That split is worth naming because only one of these\n files is the caller's, and it is the one .snyk that the decision attests\n against. Two bare filenames survive because an artifact name cannot\n contain a '/'.\n\n fetch-url-to-file now has exactly one caller, for that .snyk.",
- "author": "JonJagger ",
+ "sha1": "30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "message": "Merge pull request #4 from cyber-dojo/take-both-age-instants-from-one-trail-read\n\nMeasure a vuln's age on the Kosli server's clock alone",
+ "author": "Jon Jagger ",
"branch": "main",
- "timestamp": 1787661987.0,
- "url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933"
+ "timestamp": 1788945655.0,
+ "url": "https://github.com/cyber-dojo/snyk-scanning/commit/30111f180ac4e3611cdbd7d805381a0bb9f53cff"
},
- "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09?artifact_id=ff77dce2-dd84-40ff-b134-d21758f5",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/4889ce921333abe3acc52880342a6ceb27cd66482e4f8fc93e20d5a91d972d29?artifact_id=de8c1b00-91bd-4bd0-908a-4544ec15",
"flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact",
"deployment_diff": {
- "diff_url": "https://github.com/cyber-dojo/snyk-scanning/compare/00c479764cb9eca038fdaaaef108672d0bb0ed26...ed3c81d7322bb8058615095f4aab28c147c53933",
+ "diff_url": "https://github.com/cyber-dojo/snyk-scanning/compare/00c479764cb9eca038fdaaaef108672d0bb0ed26...30111f180ac4e3611cdbd7d805381a0bb9f53cff",
"previous_git_commit": "00c479764cb9eca038fdaaaef108672d0bb0ed26",
- "previous_fingerprint": "b4448ca68a0926e4a7a800f5b101b63e9c2f38e1caaebb7e929d992763570928",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/custom-start-points:6b5c159@sha256:b4448ca68a0926e4a7a800f5b101b63e9c2f38e1caaebb7e929d992763570928",
+ "previous_fingerprint": "45513c642ba191052bde056d56eeba8b06b0346eb444ec0008bd59bc0581bb8c",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:87f560f@sha256:45513c642ba191052bde056d56eeba8b06b0346eb444ec0008bd59bc0581bb8c",
"previous_artifact_compliance_state": "COMPLIANT",
"previous_running": false,
"previous_git_commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/00c479764cb9eca038fdaaaef108672d0bb0ed26",
- "previous_trail_name": "custom-start-points-b4448ca68a0926e4a7a800f5b101b63e9c2f38e1caaebb7e929d992763570928",
- "previous_template_reference_name": "custom-start-points"
+ "previous_trail_name": "dashboard-45513c642ba191052bde056d56eeba8b06b0346eb444ec0008bd59bc0581bb8c",
+ "previous_template_reference_name": "dashboard"
},
- "commit_lead_time": 593411.0,
+ "commit_lead_time": -78130.0,
"artifact_compliance_in_flow": true,
"flow_reasons_for_non_compliance": []
}
],
"ecs_context": {
- "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/b7894ad2c80e4774adbeab8165291101",
+ "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/1009a1194f024e6ea07508acbedf904a",
"cluster_name": null,
"service_name": null
}
},
{
- "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/saver:84e986a@sha256:06f85cc53010535e46f13c348a1aaf5c8dfee0c0fea7f81105312b6c87d5d05f",
+ "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/languages-start-points:5d1d4b6@sha256:040bd44819d9e92728fb3b338f6582d4345cd69df769c59e94c61ac0336ad909",
"compliant": true,
"deployments": [],
"policy_decisions": [
{
- "policy_version": 3,
+ "policy_version": 2,
"status": "COMPLIANT",
"rule_evaluations": [
{
@@ -3560,24 +3564,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "saver-ci",
- "trail_name": "84e986ad70d32e9be362d5bd9ce7c7af94f6eaab",
+ "flow_name": "languages-start-points-ci",
+ "trail_name": "5d1d4b6035691d7986e05ab263e521b3e711fa0c",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "saver-06f85cc53010535e46f13c348a1aaf5c8dfee0c0fea7f81105312b6c87d5d05f",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "languages-start-points-040bd44819d9e92728fb3b338f6582d4345cd69df769c59e94c61ac0336ad909",
"artifact_status": null
}
},
@@ -3585,7 +3589,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "saver-06f85cc53010535e46f13c348a1aaf5c8dfee0c0fea7f81105312b6c87d5d05f",
+ "trail_name": "languages-start-points-040bd44819d9e92728fb3b338f6582d4345cd69df769c59e94c61ac0336ad909",
"artifact_status": null
}
}
@@ -3605,24 +3609,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "saver-ci",
- "trail_name": "84e986ad70d32e9be362d5bd9ce7c7af94f6eaab",
+ "flow_name": "languages-start-points-ci",
+ "trail_name": "5d1d4b6035691d7986e05ab263e521b3e711fa0c",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "saver-06f85cc53010535e46f13c348a1aaf5c8dfee0c0fea7f81105312b6c87d5d05f",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "languages-start-points-040bd44819d9e92728fb3b338f6582d4345cd69df769c59e94c61ac0336ad909",
"artifact_status": "COMPLIANT"
}
},
@@ -3630,7 +3634,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "saver-06f85cc53010535e46f13c348a1aaf5c8dfee0c0fea7f81105312b6c87d5d05f",
+ "trail_name": "languages-start-points-040bd44819d9e92728fb3b338f6582d4345cd69df769c59e94c61ac0336ad909",
"artifact_status": "COMPLIANT"
}
}
@@ -3641,10 +3645,10 @@ kosli get snapshot aws-prod --output=json
"type": "attestation",
"definition": {
"if": {
- "text": "flow.tags.kind == \"build\""
+ "text": "flow.name == \"production-promotion\""
},
- "name": "*",
- "type": "pull_request",
+ "name": "snyk-scan",
+ "type": "decision",
"must_be_compliant": true,
"for_control": null
}
@@ -3653,26 +3657,26 @@ kosli get snapshot aws-prod --output=json
"ignored": false,
"resolutions": [
{
- "type": "rule_satisfied",
+ "type": "rule_not_applicable",
"context": {
- "flow_name": "saver-ci",
- "trail_name": "84e986ad70d32e9be362d5bd9ce7c7af94f6eaab",
+ "flow_name": "languages-start-points-ci",
+ "trail_name": "5d1d4b6035691d7986e05ab263e521b3e711fa0c",
"artifact_status": null
}
},
{
- "type": "rule_not_applicable",
+ "type": "rule_satisfied",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "saver-06f85cc53010535e46f13c348a1aaf5c8dfee0c0fea7f81105312b6c87d5d05f",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "languages-start-points-040bd44819d9e92728fb3b338f6582d4345cd69df769c59e94c61ac0336ad909",
"artifact_status": null
}
},
@@ -3680,14 +3684,14 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "saver-06f85cc53010535e46f13c348a1aaf5c8dfee0c0fea7f81105312b6c87d5d05f",
+ "trail_name": "languages-start-points-040bd44819d9e92728fb3b338f6582d4345cd69df769c59e94c61ac0336ad909",
"artifact_status": null
}
}
]
}
],
- "policy_name": "pull-request"
+ "policy_name": "production-promotion"
},
{
"policy_version": 3,
@@ -3707,24 +3711,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_satisfied",
"context": {
- "flow_name": "saver-ci",
- "trail_name": "84e986ad70d32e9be362d5bd9ce7c7af94f6eaab",
+ "flow_name": "languages-start-points-ci",
+ "trail_name": "5d1d4b6035691d7986e05ab263e521b3e711fa0c",
"artifact_status": null
}
},
{
"type": "rule_satisfied",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "saver-06f85cc53010535e46f13c348a1aaf5c8dfee0c0fea7f81105312b6c87d5d05f",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_satisfied",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "languages-start-points-040bd44819d9e92728fb3b338f6582d4345cd69df769c59e94c61ac0336ad909",
"artifact_status": null
}
},
@@ -3732,7 +3736,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_satisfied",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "saver-06f85cc53010535e46f13c348a1aaf5c8dfee0c0fea7f81105312b6c87d5d05f",
+ "trail_name": "languages-start-points-040bd44819d9e92728fb3b338f6582d4345cd69df769c59e94c61ac0336ad909",
"artifact_status": null
}
}
@@ -3752,24 +3756,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "saver-ci",
- "trail_name": "84e986ad70d32e9be362d5bd9ce7c7af94f6eaab",
+ "flow_name": "languages-start-points-ci",
+ "trail_name": "5d1d4b6035691d7986e05ab263e521b3e711fa0c",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "saver-06f85cc53010535e46f13c348a1aaf5c8dfee0c0fea7f81105312b6c87d5d05f",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "languages-start-points-040bd44819d9e92728fb3b338f6582d4345cd69df769c59e94c61ac0336ad909",
"artifact_status": "COMPLIANT"
}
},
@@ -3777,7 +3781,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "saver-06f85cc53010535e46f13c348a1aaf5c8dfee0c0fea7f81105312b6c87d5d05f",
+ "trail_name": "languages-start-points-040bd44819d9e92728fb3b338f6582d4345cd69df769c59e94c61ac0336ad909",
"artifact_status": "COMPLIANT"
}
}
@@ -3802,8 +3806,8 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_satisfied",
"context": {
- "flow_name": "saver-ci",
- "trail_name": "84e986ad70d32e9be362d5bd9ce7c7af94f6eaab",
+ "flow_name": "languages-start-points-ci",
+ "trail_name": "5d1d4b6035691d7986e05ab263e521b3e711fa0c",
"artifact_status": null,
"for_control": "SDLC-CTRL-0002"
}
@@ -3811,8 +3815,8 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "saver-06f85cc53010535e46f13c348a1aaf5c8dfee0c0fea7f81105312b6c87d5d05f",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null,
"for_control": "SDLC-CTRL-0002"
}
@@ -3820,8 +3824,8 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "languages-start-points-040bd44819d9e92728fb3b338f6582d4345cd69df769c59e94c61ac0336ad909",
"artifact_status": null,
"for_control": "SDLC-CTRL-0002"
}
@@ -3830,7 +3834,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "saver-06f85cc53010535e46f13c348a1aaf5c8dfee0c0fea7f81105312b6c87d5d05f",
+ "trail_name": "languages-start-points-040bd44819d9e92728fb3b338f6582d4345cd69df769c59e94c61ac0336ad909",
"artifact_status": null,
"for_control": "SDLC-CTRL-0002"
}
@@ -3841,7 +3845,7 @@ kosli get snapshot aws-prod --output=json
"policy_name": "provenance"
},
{
- "policy_version": 4,
+ "policy_version": 3,
"status": "COMPLIANT",
"rule_evaluations": [
{
@@ -3858,24 +3862,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "saver-ci",
- "trail_name": "84e986ad70d32e9be362d5bd9ce7c7af94f6eaab",
+ "flow_name": "languages-start-points-ci",
+ "trail_name": "5d1d4b6035691d7986e05ab263e521b3e711fa0c",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "saver-06f85cc53010535e46f13c348a1aaf5c8dfee0c0fea7f81105312b6c87d5d05f",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "languages-start-points-040bd44819d9e92728fb3b338f6582d4345cd69df769c59e94c61ac0336ad909",
"artifact_status": null
}
},
@@ -3883,7 +3887,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "saver-06f85cc53010535e46f13c348a1aaf5c8dfee0c0fea7f81105312b6c87d5d05f",
+ "trail_name": "languages-start-points-040bd44819d9e92728fb3b338f6582d4345cd69df769c59e94c61ac0336ad909",
"artifact_status": null
}
}
@@ -3903,24 +3907,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "saver-ci",
- "trail_name": "84e986ad70d32e9be362d5bd9ce7c7af94f6eaab",
+ "flow_name": "languages-start-points-ci",
+ "trail_name": "5d1d4b6035691d7986e05ab263e521b3e711fa0c",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "saver-06f85cc53010535e46f13c348a1aaf5c8dfee0c0fea7f81105312b6c87d5d05f",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "languages-start-points-040bd44819d9e92728fb3b338f6582d4345cd69df769c59e94c61ac0336ad909",
"artifact_status": "COMPLIANT"
}
},
@@ -3928,7 +3932,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "saver-06f85cc53010535e46f13c348a1aaf5c8dfee0c0fea7f81105312b6c87d5d05f",
+ "trail_name": "languages-start-points-040bd44819d9e92728fb3b338f6582d4345cd69df769c59e94c61ac0336ad909",
"artifact_status": "COMPLIANT"
}
}
@@ -3939,60 +3943,56 @@ kosli get snapshot aws-prod --output=json
"type": "attestation",
"definition": {
"if": {
- "text": "flow.name == \"snyk-aws-prod-per-artifact\""
+ "text": "flow.tags.kind == \"build\""
},
- "name": "snyk-container-scan",
- "type": "decision",
+ "name": "*",
+ "type": "pull_request",
"must_be_compliant": true,
- "for_control": "SDLC-CTRL-0022"
+ "for_control": null
}
},
"satisfied": true,
"ignored": false,
"resolutions": [
{
- "type": "rule_not_applicable",
+ "type": "rule_satisfied",
"context": {
- "flow_name": "saver-ci",
- "trail_name": "84e986ad70d32e9be362d5bd9ce7c7af94f6eaab",
- "artifact_status": null,
- "for_control": "SDLC-CTRL-0022"
+ "flow_name": "languages-start-points-ci",
+ "trail_name": "5d1d4b6035691d7986e05ab263e521b3e711fa0c",
+ "artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "saver-06f85cc53010535e46f13c348a1aaf5c8dfee0c0fea7f81105312b6c87d5d05f",
- "artifact_status": null,
- "for_control": "SDLC-CTRL-0022"
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
+ "artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
- "artifact_status": null,
- "for_control": "SDLC-CTRL-0022"
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "languages-start-points-040bd44819d9e92728fb3b338f6582d4345cd69df769c59e94c61ac0336ad909",
+ "artifact_status": null
}
},
{
- "type": "rule_satisfied",
+ "type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "saver-06f85cc53010535e46f13c348a1aaf5c8dfee0c0fea7f81105312b6c87d5d05f",
- "artifact_status": null,
- "for_control": "SDLC-CTRL-0022"
+ "trail_name": "languages-start-points-040bd44819d9e92728fb3b338f6582d4345cd69df769c59e94c61ac0336ad909",
+ "artifact_status": null
}
}
]
}
],
- "policy_name": "snyk-scan-aws-prod"
+ "policy_name": "pull-request"
},
{
- "policy_version": 2,
+ "policy_version": 4,
"status": "COMPLIANT",
"rule_evaluations": [
{
@@ -4009,24 +4009,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "saver-ci",
- "trail_name": "84e986ad70d32e9be362d5bd9ce7c7af94f6eaab",
+ "flow_name": "languages-start-points-ci",
+ "trail_name": "5d1d4b6035691d7986e05ab263e521b3e711fa0c",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "saver-06f85cc53010535e46f13c348a1aaf5c8dfee0c0fea7f81105312b6c87d5d05f",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "languages-start-points-040bd44819d9e92728fb3b338f6582d4345cd69df769c59e94c61ac0336ad909",
"artifact_status": null
}
},
@@ -4034,7 +4034,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "saver-06f85cc53010535e46f13c348a1aaf5c8dfee0c0fea7f81105312b6c87d5d05f",
+ "trail_name": "languages-start-points-040bd44819d9e92728fb3b338f6582d4345cd69df769c59e94c61ac0336ad909",
"artifact_status": null
}
}
@@ -4054,24 +4054,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "saver-ci",
- "trail_name": "84e986ad70d32e9be362d5bd9ce7c7af94f6eaab",
+ "flow_name": "languages-start-points-ci",
+ "trail_name": "5d1d4b6035691d7986e05ab263e521b3e711fa0c",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "saver-06f85cc53010535e46f13c348a1aaf5c8dfee0c0fea7f81105312b6c87d5d05f",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "languages-start-points-040bd44819d9e92728fb3b338f6582d4345cd69df769c59e94c61ac0336ad909",
"artifact_status": "COMPLIANT"
}
},
@@ -4079,7 +4079,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "saver-06f85cc53010535e46f13c348a1aaf5c8dfee0c0fea7f81105312b6c87d5d05f",
+ "trail_name": "languages-start-points-040bd44819d9e92728fb3b338f6582d4345cd69df769c59e94c61ac0336ad909",
"artifact_status": "COMPLIANT"
}
}
@@ -4090,12 +4090,12 @@ kosli get snapshot aws-prod --output=json
"type": "attestation",
"definition": {
"if": {
- "text": "flow.name == \"production-promotion\""
+ "text": "flow.name == \"snyk-aws-prod-per-artifact\""
},
- "name": "snyk-scan",
+ "name": "snyk-container-scan",
"type": "decision",
"must_be_compliant": true,
- "for_control": null
+ "for_control": "SDLC-CTRL-0022"
}
},
"satisfied": true,
@@ -4104,39 +4104,43 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "saver-ci",
- "trail_name": "84e986ad70d32e9be362d5bd9ce7c7af94f6eaab",
- "artifact_status": null
+ "flow_name": "languages-start-points-ci",
+ "trail_name": "5d1d4b6035691d7986e05ab263e521b3e711fa0c",
+ "artifact_status": null,
+ "for_control": "SDLC-CTRL-0022"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "saver-06f85cc53010535e46f13c348a1aaf5c8dfee0c0fea7f81105312b6c87d5d05f",
- "artifact_status": null
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
+ "artifact_status": null,
+ "for_control": "SDLC-CTRL-0022"
}
},
{
- "type": "rule_satisfied",
+ "type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
- "artifact_status": null
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "languages-start-points-040bd44819d9e92728fb3b338f6582d4345cd69df769c59e94c61ac0336ad909",
+ "artifact_status": null,
+ "for_control": "SDLC-CTRL-0022"
}
},
{
- "type": "rule_not_applicable",
+ "type": "rule_satisfied",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "saver-06f85cc53010535e46f13c348a1aaf5c8dfee0c0fea7f81105312b6c87d5d05f",
- "artifact_status": null
+ "trail_name": "languages-start-points-040bd44819d9e92728fb3b338f6582d4345cd69df769c59e94c61ac0336ad909",
+ "artifact_status": null,
+ "for_control": "SDLC-CTRL-0022"
}
}
]
}
],
- "policy_name": "production-promotion"
+ "policy_name": "snyk-scan-aws-prod"
},
{
"policy_version": 2,
@@ -4156,24 +4160,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "saver-ci",
- "trail_name": "84e986ad70d32e9be362d5bd9ce7c7af94f6eaab",
+ "flow_name": "languages-start-points-ci",
+ "trail_name": "5d1d4b6035691d7986e05ab263e521b3e711fa0c",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "saver-06f85cc53010535e46f13c348a1aaf5c8dfee0c0fea7f81105312b6c87d5d05f",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "languages-start-points-040bd44819d9e92728fb3b338f6582d4345cd69df769c59e94c61ac0336ad909",
"artifact_status": null
}
},
@@ -4181,7 +4185,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "saver-06f85cc53010535e46f13c348a1aaf5c8dfee0c0fea7f81105312b6c87d5d05f",
+ "trail_name": "languages-start-points-040bd44819d9e92728fb3b338f6582d4345cd69df769c59e94c61ac0336ad909",
"artifact_status": null
}
}
@@ -4207,24 +4211,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "saver-ci",
- "trail_name": "84e986ad70d32e9be362d5bd9ce7c7af94f6eaab",
+ "flow_name": "languages-start-points-ci",
+ "trail_name": "5d1d4b6035691d7986e05ab263e521b3e711fa0c",
"artifact_status": "COMPLIANT"
}
},
{
- "type": "rule_not_applicable",
+ "type": "rule_satisfied",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "saver-06f85cc53010535e46f13c348a1aaf5c8dfee0c0fea7f81105312b6c87d5d05f",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
{
- "type": "rule_satisfied",
+ "type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "languages-start-points-040bd44819d9e92728fb3b338f6582d4345cd69df769c59e94c61ac0336ad909",
"artifact_status": "COMPLIANT"
}
},
@@ -4232,7 +4236,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_satisfied",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "saver-06f85cc53010535e46f13c348a1aaf5c8dfee0c0fea7f81105312b6c87d5d05f",
+ "trail_name": "languages-start-points-040bd44819d9e92728fb3b338f6582d4345cd69df769c59e94c61ac0336ad909",
"artifact_status": "COMPLIANT"
}
}
@@ -4243,172 +4247,172 @@ kosli get snapshot aws-prod --output=json
}
],
"reasons_for_incompliance": [],
- "fingerprint": "06f85cc53010535e46f13c348a1aaf5c8dfee0c0fea7f81105312b6c87d5d05f",
+ "fingerprint": "040bd44819d9e92728fb3b338f6582d4345cd69df769c59e94c61ac0336ad909",
"creationTimestamp": [
- 1788255396
+ 1789022826
],
"pods": null,
"annotation": {
- "type": "updated-provenance",
+ "type": "unchanged",
"was": 1,
"now": 1
},
- "flow_name": "saver-ci",
- "git_commit": "84e986ad70d32e9be362d5bd9ce7c7af94f6eaab",
- "commit_url": "https://github.com/cyber-dojo/saver/commit/84e986ad70d32e9be362d5bd9ce7c7af94f6eaab",
- "html_url": "https://app.kosli.com/cyber-dojo/flows/saver-ci/artifacts/06f85cc53010535e46f13c348a1aaf5c8dfee0c0fea7f81105312b6c87d5d05f?artifact_id=a599cb04-5965-46a6-a774-24dc6341",
- "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/saver-ci",
+ "flow_name": "languages-start-points-ci",
+ "git_commit": "5d1d4b6035691d7986e05ab263e521b3e711fa0c",
+ "commit_url": "https://github.com/cyber-dojo/languages-start-points/commit/5d1d4b6035691d7986e05ab263e521b3e711fa0c",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/languages-start-points-ci/artifacts/040bd44819d9e92728fb3b338f6582d4345cd69df769c59e94c61ac0336ad909?artifact_id=f5813ac8-1ad7-433a-beee-f90a065d",
+ "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/languages-start-points-ci",
"deployment_diff": {
- "diff_url": "https://github.com/cyber-dojo/saver/compare/36f0420f728fe61e44a3ab0043cf9a3d70863cad...84e986ad70d32e9be362d5bd9ce7c7af94f6eaab",
- "previous_git_commit": "36f0420f728fe61e44a3ab0043cf9a3d70863cad",
- "previous_fingerprint": "2ec004d6e7c2668ff407b4384d6b4c62f92d9606ae18447c5fb326211921bc6a",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/saver:36f0420@sha256:2ec004d6e7c2668ff407b4384d6b4c62f92d9606ae18447c5fb326211921bc6a",
+ "diff_url": "https://github.com/cyber-dojo/languages-start-points/compare/8e6b51867675d4b652a38353611cde1d8567fce0...5d1d4b6035691d7986e05ab263e521b3e711fa0c",
+ "previous_git_commit": "8e6b51867675d4b652a38353611cde1d8567fce0",
+ "previous_fingerprint": "77bd283ca309eb2e7c88d8634ba19c66637c7030cae8129d6835cc4d450d742d",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/languages-start-points:8e6b518@sha256:77bd283ca309eb2e7c88d8634ba19c66637c7030cae8129d6835cc4d450d742d",
"previous_artifact_compliance_state": "COMPLIANT",
"previous_running": false,
- "previous_git_commit_url": "https://github.com/cyber-dojo/saver/commit/36f0420f728fe61e44a3ab0043cf9a3d70863cad",
- "previous_trail_name": "36f0420f728fe61e44a3ab0043cf9a3d70863cad",
- "previous_template_reference_name": "saver"
+ "previous_git_commit_url": "https://github.com/cyber-dojo/languages-start-points/commit/8e6b51867675d4b652a38353611cde1d8567fce0",
+ "previous_trail_name": "8e6b51867675d4b652a38353611cde1d8567fce0",
+ "previous_template_reference_name": "languages-start-points"
},
- "commit_lead_time": 3241.0,
+ "commit_lead_time": 6198.0,
"flows": [
{
- "flow_name": "saver-ci",
- "trail_name": "84e986ad70d32e9be362d5bd9ce7c7af94f6eaab",
- "template_reference_name": "saver",
- "git_commit": "84e986ad70d32e9be362d5bd9ce7c7af94f6eaab",
- "commit_url": "https://github.com/cyber-dojo/saver/commit/84e986ad70d32e9be362d5bd9ce7c7af94f6eaab",
+ "flow_name": "languages-start-points-ci",
+ "trail_name": "5d1d4b6035691d7986e05ab263e521b3e711fa0c",
+ "template_reference_name": "languages-start-points",
+ "git_commit": "5d1d4b6035691d7986e05ab263e521b3e711fa0c",
+ "commit_url": "https://github.com/cyber-dojo/languages-start-points/commit/5d1d4b6035691d7986e05ab263e521b3e711fa0c",
"git_commit_info": {
- "sha1": "84e986ad70d32e9be362d5bd9ce7c7af94f6eaab",
- "message": "Run workflow to pick up fixes to expat vulns (#443)",
+ "sha1": "5d1d4b6035691d7986e05ab263e521b3e711fa0c",
+ "message": "Merge pull request #267 from cyber-dojo/update-base-image-a2388c1\n\nMerge update-base-image into main",
"author": "Jon Jagger ",
"branch": "",
- "timestamp": 1788252155.0,
- "url": "https://github.com/cyber-dojo/saver/commit/84e986ad70d32e9be362d5bd9ce7c7af94f6eaab"
+ "timestamp": 1788860897.0,
+ "url": "https://github.com/cyber-dojo/languages-start-points/commit/5d1d4b6035691d7986e05ab263e521b3e711fa0c"
},
- "html_url": "https://app.kosli.com/cyber-dojo/flows/saver-ci/artifacts/06f85cc53010535e46f13c348a1aaf5c8dfee0c0fea7f81105312b6c87d5d05f?artifact_id=a599cb04-5965-46a6-a774-24dc6341",
- "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/saver-ci",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/languages-start-points-ci/artifacts/040bd44819d9e92728fb3b338f6582d4345cd69df769c59e94c61ac0336ad909?artifact_id=f5813ac8-1ad7-433a-beee-f90a065d",
+ "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/languages-start-points-ci",
"deployment_diff": {
- "diff_url": "https://github.com/cyber-dojo/saver/compare/36f0420f728fe61e44a3ab0043cf9a3d70863cad...84e986ad70d32e9be362d5bd9ce7c7af94f6eaab",
- "previous_git_commit": "36f0420f728fe61e44a3ab0043cf9a3d70863cad",
- "previous_fingerprint": "2ec004d6e7c2668ff407b4384d6b4c62f92d9606ae18447c5fb326211921bc6a",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/saver:36f0420@sha256:2ec004d6e7c2668ff407b4384d6b4c62f92d9606ae18447c5fb326211921bc6a",
+ "diff_url": "https://github.com/cyber-dojo/languages-start-points/compare/8e6b51867675d4b652a38353611cde1d8567fce0...5d1d4b6035691d7986e05ab263e521b3e711fa0c",
+ "previous_git_commit": "8e6b51867675d4b652a38353611cde1d8567fce0",
+ "previous_fingerprint": "77bd283ca309eb2e7c88d8634ba19c66637c7030cae8129d6835cc4d450d742d",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/languages-start-points:8e6b518@sha256:77bd283ca309eb2e7c88d8634ba19c66637c7030cae8129d6835cc4d450d742d",
"previous_artifact_compliance_state": "COMPLIANT",
"previous_running": false,
- "previous_git_commit_url": "https://github.com/cyber-dojo/saver/commit/36f0420f728fe61e44a3ab0043cf9a3d70863cad",
- "previous_trail_name": "36f0420f728fe61e44a3ab0043cf9a3d70863cad",
- "previous_template_reference_name": "saver"
+ "previous_git_commit_url": "https://github.com/cyber-dojo/languages-start-points/commit/8e6b51867675d4b652a38353611cde1d8567fce0",
+ "previous_trail_name": "8e6b51867675d4b652a38353611cde1d8567fce0",
+ "previous_template_reference_name": "languages-start-points"
},
- "commit_lead_time": 3241.0,
+ "commit_lead_time": 6198.0,
"artifact_compliance_in_flow": true,
"flow_reasons_for_non_compliance": []
},
{
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "saver-06f85cc53010535e46f13c348a1aaf5c8dfee0c0fea7f81105312b6c87d5d05f",
- "template_reference_name": "saver",
- "git_commit": "ed3c81d7322bb8058615095f4aab28c147c53933",
- "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
+ "template_reference_name": "languages-start-points",
+ "git_commit": "7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
+ "commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
"git_commit_info": {
- "sha1": "ed3c81d7322bb8058615095f4aab28c147c53933",
- "message": "Unpack one pinned commit instead of fetching each file\n\n a0c005a moved these two jobs' files to RUNNER_TEMP, which kept them out of\n the caller's checkout but left the prefix repeated at every use. The paths\n are absolute because the run steps stay in the checkout, where the Kosli\n CLI reads git commit information from the working directory, so the prefix\n cannot be dropped. It can only be folded into the definitions, and a\n literal /tmp folds where runner.temp does not: the runner context is\n unavailable in workflow- and job-level env blocks. Both jobs are pinned to\n ubuntu-latest, one fresh VM per job, so /tmp neither collides nor persists.\n\n The files also arrived as five separate fetches of main, one per file, so a\n push landing mid-run could pair a rego policy with params from a different\n commit. find-snyk-vulns already checks this repo out, so it now publishes\n the SHA it resolved, and the two later jobs unpack that exact commit as a\n single tarball. One run reads one version.\n\n An env-var's prefix now says where its file came from: SNYK_SCANNING_ from\n this repo at the pinned commit, CALLER_ from the repo being scanned, TMP_\n produced by the run. That split is worth naming because only one of these\n files is the caller's, and it is the one .snyk that the decision attests\n against. Two bare filenames survive because an artifact name cannot\n contain a '/'.\n\n fetch-url-to-file now has exactly one caller, for that .snyk.",
+ "sha1": "7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
+ "message": "Drop lone use of = separator on Kosli CLI boolean flag",
"author": "JonJagger ",
"branch": "main",
- "timestamp": 1787661987.0,
- "url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933"
+ "timestamp": 1785316994.0,
+ "url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584"
},
- "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact/artifacts/06f85cc53010535e46f13c348a1aaf5c8dfee0c0fea7f81105312b6c87d5d05f?artifact_id=954a634e-bcc4-4aeb-b74a-3228e48f",
- "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/040bd44819d9e92728fb3b338f6582d4345cd69df769c59e94c61ac0336ad909?artifact_id=c7b16f07-078b-4f71-8d61-93bbfaa4",
+ "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion",
"deployment_diff": {
- "diff_url": "https://github.com/cyber-dojo/snyk-scanning/compare/c0666c020044ac5b5181999ec153db1e7f6cd303...ed3c81d7322bb8058615095f4aab28c147c53933",
- "previous_git_commit": "c0666c020044ac5b5181999ec153db1e7f6cd303",
- "previous_fingerprint": "2ec004d6e7c2668ff407b4384d6b4c62f92d9606ae18447c5fb326211921bc6a",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/saver:36f0420@sha256:2ec004d6e7c2668ff407b4384d6b4c62f92d9606ae18447c5fb326211921bc6a",
+ "diff_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/compare/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584...7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
+ "previous_git_commit": "7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
+ "previous_fingerprint": "77bd283ca309eb2e7c88d8634ba19c66637c7030cae8129d6835cc4d450d742d",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/languages-start-points:8e6b518@sha256:77bd283ca309eb2e7c88d8634ba19c66637c7030cae8129d6835cc4d450d742d",
"previous_artifact_compliance_state": "COMPLIANT",
"previous_running": false,
- "previous_git_commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/c0666c020044ac5b5181999ec153db1e7f6cd303",
- "previous_trail_name": "saver-2ec004d6e7c2668ff407b4384d6b4c62f92d9606ae18447c5fb326211921bc6a",
- "previous_template_reference_name": "saver"
+ "previous_git_commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
+ "previous_trail_name": "promotion-one-163",
+ "previous_template_reference_name": "languages-start-points"
},
- "commit_lead_time": 593409.0,
+ "commit_lead_time": 3550101.0,
"artifact_compliance_in_flow": true,
"flow_reasons_for_non_compliance": []
},
{
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
- "template_reference_name": "saver",
- "git_commit": "7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
- "commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
- "git_commit_info": {
- "sha1": "7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
- "message": "Drop lone use of = separator on Kosli CLI boolean flag",
- "author": "JonJagger ",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "languages-start-points-040bd44819d9e92728fb3b338f6582d4345cd69df769c59e94c61ac0336ad909",
+ "template_reference_name": "languages-start-points",
+ "git_commit": "30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "git_commit_info": {
+ "sha1": "30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "message": "Merge pull request #4 from cyber-dojo/take-both-age-instants-from-one-trail-read\n\nMeasure a vuln's age on the Kosli server's clock alone",
+ "author": "Jon Jagger ",
"branch": "main",
- "timestamp": 1785316994.0,
- "url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584"
+ "timestamp": 1788945655.0,
+ "url": "https://github.com/cyber-dojo/snyk-scanning/commit/30111f180ac4e3611cdbd7d805381a0bb9f53cff"
},
- "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/06f85cc53010535e46f13c348a1aaf5c8dfee0c0fea7f81105312b6c87d5d05f?artifact_id=ad8076c0-8b7e-47ac-b82a-2f2bb220",
- "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact/artifacts/040bd44819d9e92728fb3b338f6582d4345cd69df769c59e94c61ac0336ad909?artifact_id=8d6316ab-1e65-4138-8695-27110838",
+ "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact",
"deployment_diff": {
- "diff_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/compare/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584...7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
- "previous_git_commit": "7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
- "previous_fingerprint": "2ec004d6e7c2668ff407b4384d6b4c62f92d9606ae18447c5fb326211921bc6a",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/saver:36f0420@sha256:2ec004d6e7c2668ff407b4384d6b4c62f92d9606ae18447c5fb326211921bc6a",
+ "diff_url": "https://github.com/cyber-dojo/snyk-scanning/compare/ed3c81d7322bb8058615095f4aab28c147c53933...30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "previous_git_commit": "ed3c81d7322bb8058615095f4aab28c147c53933",
+ "previous_fingerprint": "28bc41a2185a154249b1d06983741c39beb3574ebdce7273963ecde2ae9dd832",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/languages-start-points:a357ebd@sha256:28bc41a2185a154249b1d06983741c39beb3574ebdce7273963ecde2ae9dd832",
"previous_artifact_compliance_state": "COMPLIANT",
"previous_running": false,
- "previous_git_commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
- "previous_trail_name": "promote-all-33",
- "previous_template_reference_name": "saver"
+ "previous_git_commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933",
+ "previous_trail_name": "languages-start-points-28bc41a2185a154249b1d06983741c39beb3574ebdce7273963ecde2ae9dd832",
+ "previous_template_reference_name": "languages-start-points"
},
- "commit_lead_time": 2938402.0,
+ "commit_lead_time": -78560.0,
"artifact_compliance_in_flow": true,
"flow_reasons_for_non_compliance": []
},
{
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "saver-06f85cc53010535e46f13c348a1aaf5c8dfee0c0fea7f81105312b6c87d5d05f",
- "template_reference_name": "saver",
- "git_commit": "ed3c81d7322bb8058615095f4aab28c147c53933",
- "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933",
+ "trail_name": "languages-start-points-040bd44819d9e92728fb3b338f6582d4345cd69df769c59e94c61ac0336ad909",
+ "template_reference_name": "languages-start-points",
+ "git_commit": "30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/30111f180ac4e3611cdbd7d805381a0bb9f53cff",
"git_commit_info": {
- "sha1": "ed3c81d7322bb8058615095f4aab28c147c53933",
- "message": "Unpack one pinned commit instead of fetching each file\n\n a0c005a moved these two jobs' files to RUNNER_TEMP, which kept them out of\n the caller's checkout but left the prefix repeated at every use. The paths\n are absolute because the run steps stay in the checkout, where the Kosli\n CLI reads git commit information from the working directory, so the prefix\n cannot be dropped. It can only be folded into the definitions, and a\n literal /tmp folds where runner.temp does not: the runner context is\n unavailable in workflow- and job-level env blocks. Both jobs are pinned to\n ubuntu-latest, one fresh VM per job, so /tmp neither collides nor persists.\n\n The files also arrived as five separate fetches of main, one per file, so a\n push landing mid-run could pair a rego policy with params from a different\n commit. find-snyk-vulns already checks this repo out, so it now publishes\n the SHA it resolved, and the two later jobs unpack that exact commit as a\n single tarball. One run reads one version.\n\n An env-var's prefix now says where its file came from: SNYK_SCANNING_ from\n this repo at the pinned commit, CALLER_ from the repo being scanned, TMP_\n produced by the run. That split is worth naming because only one of these\n files is the caller's, and it is the one .snyk that the decision attests\n against. Two bare filenames survive because an artifact name cannot\n contain a '/'.\n\n fetch-url-to-file now has exactly one caller, for that .snyk.",
- "author": "JonJagger ",
+ "sha1": "30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "message": "Merge pull request #4 from cyber-dojo/take-both-age-instants-from-one-trail-read\n\nMeasure a vuln's age on the Kosli server's clock alone",
+ "author": "Jon Jagger ",
"branch": "main",
- "timestamp": 1787661987.0,
- "url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933"
+ "timestamp": 1788945655.0,
+ "url": "https://github.com/cyber-dojo/snyk-scanning/commit/30111f180ac4e3611cdbd7d805381a0bb9f53cff"
},
- "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/06f85cc53010535e46f13c348a1aaf5c8dfee0c0fea7f81105312b6c87d5d05f?artifact_id=91be21a4-68bf-4710-9f74-0c7a5ac5",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/040bd44819d9e92728fb3b338f6582d4345cd69df769c59e94c61ac0336ad909?artifact_id=a5af66a8-baad-4d53-8da3-7f160ded",
"flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact",
"deployment_diff": {
- "diff_url": "https://github.com/cyber-dojo/snyk-scanning/compare/00c479764cb9eca038fdaaaef108672d0bb0ed26...ed3c81d7322bb8058615095f4aab28c147c53933",
+ "diff_url": "https://github.com/cyber-dojo/snyk-scanning/compare/00c479764cb9eca038fdaaaef108672d0bb0ed26...30111f180ac4e3611cdbd7d805381a0bb9f53cff",
"previous_git_commit": "00c479764cb9eca038fdaaaef108672d0bb0ed26",
- "previous_fingerprint": "f5909cc8dd53b2105953d1a72cd5d6181367d3588964aa01a04c056205a5d419",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/saver:8c84fac@sha256:f5909cc8dd53b2105953d1a72cd5d6181367d3588964aa01a04c056205a5d419",
+ "previous_fingerprint": "b2f51324efc1528e4dda57d235bdbc68d966e1ea23722d5d296f98eefbfc2676",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/languages-start-points:7e86fed@sha256:b2f51324efc1528e4dda57d235bdbc68d966e1ea23722d5d296f98eefbfc2676",
"previous_artifact_compliance_state": "COMPLIANT",
"previous_running": false,
"previous_git_commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/00c479764cb9eca038fdaaaef108672d0bb0ed26",
- "previous_trail_name": "saver-f5909cc8dd53b2105953d1a72cd5d6181367d3588964aa01a04c056205a5d419",
- "previous_template_reference_name": "saver"
+ "previous_trail_name": "languages-start-points-b2f51324efc1528e4dda57d235bdbc68d966e1ea23722d5d296f98eefbfc2676",
+ "previous_template_reference_name": "languages-start-points"
},
- "commit_lead_time": 593409.0,
+ "commit_lead_time": -78560.0,
"artifact_compliance_in_flow": true,
"flow_reasons_for_non_compliance": []
}
],
"ecs_context": {
- "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/490f2bdcf1a2453db2a23395e26d2392",
+ "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/3654ae3b0ab3441e8826520bdebee1b4",
"cluster_name": null,
"service_name": null
}
},
{
- "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/exercises-start-points:f22a30e@sha256:41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6",
+ "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/nginx:bd3938c@sha256:aa63057d266fea8e2336b5d046a85889dd2ec37023cb81a465f6fff6c999c2c5",
"compliant": true,
"deployments": [],
"policy_decisions": [
{
- "policy_version": 3,
+ "policy_version": 2,
"status": "COMPLIANT",
"rule_evaluations": [
{
@@ -4425,24 +4429,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "exercises-start-points-ci",
- "trail_name": "f22a30ed7659b05a88c22e9f22dc2388f2deb8c8",
+ "flow_name": "nginx-ci",
+ "trail_name": "bd3938c88623bff4f02e1c2f12e97f7cd60523e3",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "exercises-start-points-41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "nginx-aa63057d266fea8e2336b5d046a85889dd2ec37023cb81a465f6fff6c999c2c5",
"artifact_status": null
}
},
@@ -4450,7 +4454,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "exercises-start-points-41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6",
+ "trail_name": "nginx-aa63057d266fea8e2336b5d046a85889dd2ec37023cb81a465f6fff6c999c2c5",
"artifact_status": null
}
}
@@ -4470,24 +4474,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "exercises-start-points-ci",
- "trail_name": "f22a30ed7659b05a88c22e9f22dc2388f2deb8c8",
+ "flow_name": "nginx-ci",
+ "trail_name": "bd3938c88623bff4f02e1c2f12e97f7cd60523e3",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "exercises-start-points-41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "nginx-aa63057d266fea8e2336b5d046a85889dd2ec37023cb81a465f6fff6c999c2c5",
"artifact_status": "COMPLIANT"
}
},
@@ -4495,7 +4499,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "exercises-start-points-41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6",
+ "trail_name": "nginx-aa63057d266fea8e2336b5d046a85889dd2ec37023cb81a465f6fff6c999c2c5",
"artifact_status": "COMPLIANT"
}
}
@@ -4506,10 +4510,10 @@ kosli get snapshot aws-prod --output=json
"type": "attestation",
"definition": {
"if": {
- "text": "flow.tags.kind == \"build\""
+ "text": "flow.name == \"production-promotion\""
},
- "name": "*",
- "type": "pull_request",
+ "name": "snyk-scan",
+ "type": "decision",
"must_be_compliant": true,
"for_control": null
}
@@ -4518,26 +4522,26 @@ kosli get snapshot aws-prod --output=json
"ignored": false,
"resolutions": [
{
- "type": "rule_satisfied",
+ "type": "rule_not_applicable",
"context": {
- "flow_name": "exercises-start-points-ci",
- "trail_name": "f22a30ed7659b05a88c22e9f22dc2388f2deb8c8",
+ "flow_name": "nginx-ci",
+ "trail_name": "bd3938c88623bff4f02e1c2f12e97f7cd60523e3",
"artifact_status": null
}
},
{
- "type": "rule_not_applicable",
+ "type": "rule_satisfied",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "exercises-start-points-41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "nginx-aa63057d266fea8e2336b5d046a85889dd2ec37023cb81a465f6fff6c999c2c5",
"artifact_status": null
}
},
@@ -4545,14 +4549,14 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "exercises-start-points-41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6",
+ "trail_name": "nginx-aa63057d266fea8e2336b5d046a85889dd2ec37023cb81a465f6fff6c999c2c5",
"artifact_status": null
}
}
]
}
],
- "policy_name": "pull-request"
+ "policy_name": "production-promotion"
},
{
"policy_version": 3,
@@ -4572,24 +4576,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_satisfied",
"context": {
- "flow_name": "exercises-start-points-ci",
- "trail_name": "f22a30ed7659b05a88c22e9f22dc2388f2deb8c8",
+ "flow_name": "nginx-ci",
+ "trail_name": "bd3938c88623bff4f02e1c2f12e97f7cd60523e3",
"artifact_status": null
}
},
{
"type": "rule_satisfied",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "exercises-start-points-41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_satisfied",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "nginx-aa63057d266fea8e2336b5d046a85889dd2ec37023cb81a465f6fff6c999c2c5",
"artifact_status": null
}
},
@@ -4597,7 +4601,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_satisfied",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "exercises-start-points-41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6",
+ "trail_name": "nginx-aa63057d266fea8e2336b5d046a85889dd2ec37023cb81a465f6fff6c999c2c5",
"artifact_status": null
}
}
@@ -4617,24 +4621,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "exercises-start-points-ci",
- "trail_name": "f22a30ed7659b05a88c22e9f22dc2388f2deb8c8",
+ "flow_name": "nginx-ci",
+ "trail_name": "bd3938c88623bff4f02e1c2f12e97f7cd60523e3",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "exercises-start-points-41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "nginx-aa63057d266fea8e2336b5d046a85889dd2ec37023cb81a465f6fff6c999c2c5",
"artifact_status": "COMPLIANT"
}
},
@@ -4642,7 +4646,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "exercises-start-points-41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6",
+ "trail_name": "nginx-aa63057d266fea8e2336b5d046a85889dd2ec37023cb81a465f6fff6c999c2c5",
"artifact_status": "COMPLIANT"
}
}
@@ -4667,8 +4671,8 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_satisfied",
"context": {
- "flow_name": "exercises-start-points-ci",
- "trail_name": "f22a30ed7659b05a88c22e9f22dc2388f2deb8c8",
+ "flow_name": "nginx-ci",
+ "trail_name": "bd3938c88623bff4f02e1c2f12e97f7cd60523e3",
"artifact_status": null,
"for_control": "SDLC-CTRL-0002"
}
@@ -4676,8 +4680,8 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "exercises-start-points-41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null,
"for_control": "SDLC-CTRL-0002"
}
@@ -4685,8 +4689,8 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "nginx-aa63057d266fea8e2336b5d046a85889dd2ec37023cb81a465f6fff6c999c2c5",
"artifact_status": null,
"for_control": "SDLC-CTRL-0002"
}
@@ -4695,7 +4699,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "exercises-start-points-41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6",
+ "trail_name": "nginx-aa63057d266fea8e2336b5d046a85889dd2ec37023cb81a465f6fff6c999c2c5",
"artifact_status": null,
"for_control": "SDLC-CTRL-0002"
}
@@ -4706,7 +4710,7 @@ kosli get snapshot aws-prod --output=json
"policy_name": "provenance"
},
{
- "policy_version": 4,
+ "policy_version": 3,
"status": "COMPLIANT",
"rule_evaluations": [
{
@@ -4723,24 +4727,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "exercises-start-points-ci",
- "trail_name": "f22a30ed7659b05a88c22e9f22dc2388f2deb8c8",
+ "flow_name": "nginx-ci",
+ "trail_name": "bd3938c88623bff4f02e1c2f12e97f7cd60523e3",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "exercises-start-points-41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "nginx-aa63057d266fea8e2336b5d046a85889dd2ec37023cb81a465f6fff6c999c2c5",
"artifact_status": null
}
},
@@ -4748,7 +4752,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "exercises-start-points-41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6",
+ "trail_name": "nginx-aa63057d266fea8e2336b5d046a85889dd2ec37023cb81a465f6fff6c999c2c5",
"artifact_status": null
}
}
@@ -4768,24 +4772,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "exercises-start-points-ci",
- "trail_name": "f22a30ed7659b05a88c22e9f22dc2388f2deb8c8",
+ "flow_name": "nginx-ci",
+ "trail_name": "bd3938c88623bff4f02e1c2f12e97f7cd60523e3",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "exercises-start-points-41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "nginx-aa63057d266fea8e2336b5d046a85889dd2ec37023cb81a465f6fff6c999c2c5",
"artifact_status": "COMPLIANT"
}
},
@@ -4793,7 +4797,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "exercises-start-points-41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6",
+ "trail_name": "nginx-aa63057d266fea8e2336b5d046a85889dd2ec37023cb81a465f6fff6c999c2c5",
"artifact_status": "COMPLIANT"
}
}
@@ -4804,60 +4808,56 @@ kosli get snapshot aws-prod --output=json
"type": "attestation",
"definition": {
"if": {
- "text": "flow.name == \"snyk-aws-prod-per-artifact\""
+ "text": "flow.tags.kind == \"build\""
},
- "name": "snyk-container-scan",
- "type": "decision",
+ "name": "*",
+ "type": "pull_request",
"must_be_compliant": true,
- "for_control": "SDLC-CTRL-0022"
+ "for_control": null
}
},
"satisfied": true,
"ignored": false,
"resolutions": [
{
- "type": "rule_not_applicable",
+ "type": "rule_satisfied",
"context": {
- "flow_name": "exercises-start-points-ci",
- "trail_name": "f22a30ed7659b05a88c22e9f22dc2388f2deb8c8",
- "artifact_status": null,
- "for_control": "SDLC-CTRL-0022"
+ "flow_name": "nginx-ci",
+ "trail_name": "bd3938c88623bff4f02e1c2f12e97f7cd60523e3",
+ "artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "exercises-start-points-41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6",
- "artifact_status": null,
- "for_control": "SDLC-CTRL-0022"
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
+ "artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
- "artifact_status": null,
- "for_control": "SDLC-CTRL-0022"
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "nginx-aa63057d266fea8e2336b5d046a85889dd2ec37023cb81a465f6fff6c999c2c5",
+ "artifact_status": null
}
},
{
- "type": "rule_satisfied",
+ "type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "exercises-start-points-41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6",
- "artifact_status": null,
- "for_control": "SDLC-CTRL-0022"
+ "trail_name": "nginx-aa63057d266fea8e2336b5d046a85889dd2ec37023cb81a465f6fff6c999c2c5",
+ "artifact_status": null
}
}
]
}
],
- "policy_name": "snyk-scan-aws-prod"
+ "policy_name": "pull-request"
},
{
- "policy_version": 2,
+ "policy_version": 4,
"status": "COMPLIANT",
"rule_evaluations": [
{
@@ -4874,24 +4874,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "exercises-start-points-ci",
- "trail_name": "f22a30ed7659b05a88c22e9f22dc2388f2deb8c8",
+ "flow_name": "nginx-ci",
+ "trail_name": "bd3938c88623bff4f02e1c2f12e97f7cd60523e3",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "exercises-start-points-41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "nginx-aa63057d266fea8e2336b5d046a85889dd2ec37023cb81a465f6fff6c999c2c5",
"artifact_status": null
}
},
@@ -4899,7 +4899,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "exercises-start-points-41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6",
+ "trail_name": "nginx-aa63057d266fea8e2336b5d046a85889dd2ec37023cb81a465f6fff6c999c2c5",
"artifact_status": null
}
}
@@ -4919,24 +4919,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "exercises-start-points-ci",
- "trail_name": "f22a30ed7659b05a88c22e9f22dc2388f2deb8c8",
+ "flow_name": "nginx-ci",
+ "trail_name": "bd3938c88623bff4f02e1c2f12e97f7cd60523e3",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "exercises-start-points-41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "nginx-aa63057d266fea8e2336b5d046a85889dd2ec37023cb81a465f6fff6c999c2c5",
"artifact_status": "COMPLIANT"
}
},
@@ -4944,7 +4944,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "exercises-start-points-41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6",
+ "trail_name": "nginx-aa63057d266fea8e2336b5d046a85889dd2ec37023cb81a465f6fff6c999c2c5",
"artifact_status": "COMPLIANT"
}
}
@@ -4955,12 +4955,12 @@ kosli get snapshot aws-prod --output=json
"type": "attestation",
"definition": {
"if": {
- "text": "flow.name == \"production-promotion\""
+ "text": "flow.name == \"snyk-aws-prod-per-artifact\""
},
- "name": "snyk-scan",
+ "name": "snyk-container-scan",
"type": "decision",
"must_be_compliant": true,
- "for_control": null
+ "for_control": "SDLC-CTRL-0022"
}
},
"satisfied": true,
@@ -4969,39 +4969,43 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "exercises-start-points-ci",
- "trail_name": "f22a30ed7659b05a88c22e9f22dc2388f2deb8c8",
- "artifact_status": null
+ "flow_name": "nginx-ci",
+ "trail_name": "bd3938c88623bff4f02e1c2f12e97f7cd60523e3",
+ "artifact_status": null,
+ "for_control": "SDLC-CTRL-0022"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "exercises-start-points-41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6",
- "artifact_status": null
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
+ "artifact_status": null,
+ "for_control": "SDLC-CTRL-0022"
}
},
{
- "type": "rule_satisfied",
+ "type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
- "artifact_status": null
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "nginx-aa63057d266fea8e2336b5d046a85889dd2ec37023cb81a465f6fff6c999c2c5",
+ "artifact_status": null,
+ "for_control": "SDLC-CTRL-0022"
}
},
{
- "type": "rule_not_applicable",
+ "type": "rule_satisfied",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "exercises-start-points-41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6",
- "artifact_status": null
+ "trail_name": "nginx-aa63057d266fea8e2336b5d046a85889dd2ec37023cb81a465f6fff6c999c2c5",
+ "artifact_status": null,
+ "for_control": "SDLC-CTRL-0022"
}
}
]
}
],
- "policy_name": "production-promotion"
+ "policy_name": "snyk-scan-aws-prod"
},
{
"policy_version": 2,
@@ -5021,24 +5025,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "exercises-start-points-ci",
- "trail_name": "f22a30ed7659b05a88c22e9f22dc2388f2deb8c8",
+ "flow_name": "nginx-ci",
+ "trail_name": "bd3938c88623bff4f02e1c2f12e97f7cd60523e3",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "exercises-start-points-41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "nginx-aa63057d266fea8e2336b5d046a85889dd2ec37023cb81a465f6fff6c999c2c5",
"artifact_status": null
}
},
@@ -5046,7 +5050,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "exercises-start-points-41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6",
+ "trail_name": "nginx-aa63057d266fea8e2336b5d046a85889dd2ec37023cb81a465f6fff6c999c2c5",
"artifact_status": null
}
}
@@ -5072,24 +5076,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "exercises-start-points-ci",
- "trail_name": "f22a30ed7659b05a88c22e9f22dc2388f2deb8c8",
+ "flow_name": "nginx-ci",
+ "trail_name": "bd3938c88623bff4f02e1c2f12e97f7cd60523e3",
"artifact_status": "COMPLIANT"
}
},
{
- "type": "rule_not_applicable",
+ "type": "rule_satisfied",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "exercises-start-points-41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
{
- "type": "rule_satisfied",
+ "type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "nginx-aa63057d266fea8e2336b5d046a85889dd2ec37023cb81a465f6fff6c999c2c5",
"artifact_status": "COMPLIANT"
}
},
@@ -5097,7 +5101,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_satisfied",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "exercises-start-points-41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6",
+ "trail_name": "nginx-aa63057d266fea8e2336b5d046a85889dd2ec37023cb81a465f6fff6c999c2c5",
"artifact_status": "COMPLIANT"
}
}
@@ -5108,172 +5112,172 @@ kosli get snapshot aws-prod --output=json
}
],
"reasons_for_incompliance": [],
- "fingerprint": "41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6",
+ "fingerprint": "aa63057d266fea8e2336b5d046a85889dd2ec37023cb81a465f6fff6c999c2c5",
"creationTimestamp": [
- 1788255396
+ 1789022826
],
"pods": null,
"annotation": {
- "type": "updated-provenance",
+ "type": "unchanged",
"was": 1,
"now": 1
},
- "flow_name": "exercises-start-points-ci",
- "git_commit": "f22a30ed7659b05a88c22e9f22dc2388f2deb8c8",
- "commit_url": "https://github.com/cyber-dojo/exercises-start-points/commit/f22a30ed7659b05a88c22e9f22dc2388f2deb8c8",
- "html_url": "https://app.kosli.com/cyber-dojo/flows/exercises-start-points-ci/artifacts/41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6?artifact_id=aa4300d4-b690-4d71-9596-6af987e1",
- "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/exercises-start-points-ci",
+ "flow_name": "nginx-ci",
+ "git_commit": "bd3938c88623bff4f02e1c2f12e97f7cd60523e3",
+ "commit_url": "https://github.com/cyber-dojo/nginx/commit/bd3938c88623bff4f02e1c2f12e97f7cd60523e3",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/nginx-ci/artifacts/aa63057d266fea8e2336b5d046a85889dd2ec37023cb81a465f6fff6c999c2c5?artifact_id=30338133-ceb7-4976-8956-e0b140cf",
+ "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/nginx-ci",
"deployment_diff": {
- "diff_url": "https://github.com/cyber-dojo/exercises-start-points/compare/258b6d07d2b28ad5cb2ce6d29934997f72380f1a...f22a30ed7659b05a88c22e9f22dc2388f2deb8c8",
- "previous_git_commit": "258b6d07d2b28ad5cb2ce6d29934997f72380f1a",
- "previous_fingerprint": "c7b7fd69d904329f9264e111bd3dc63cf98724cce567bae719e79a171e6925ea",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/exercises-start-points:258b6d0@sha256:c7b7fd69d904329f9264e111bd3dc63cf98724cce567bae719e79a171e6925ea",
+ "diff_url": "https://github.com/cyber-dojo/nginx/compare/27b350410ebcca5ff192f2ca4cdd0e3e49f5ac65...bd3938c88623bff4f02e1c2f12e97f7cd60523e3",
+ "previous_git_commit": "27b350410ebcca5ff192f2ca4cdd0e3e49f5ac65",
+ "previous_fingerprint": "1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/nginx:27b3504@sha256:1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21",
"previous_artifact_compliance_state": "COMPLIANT",
"previous_running": false,
- "previous_git_commit_url": "https://github.com/cyber-dojo/exercises-start-points/commit/258b6d07d2b28ad5cb2ce6d29934997f72380f1a",
- "previous_trail_name": "258b6d07d2b28ad5cb2ce6d29934997f72380f1a",
- "previous_template_reference_name": "exercises-start-points"
+ "previous_git_commit_url": "https://github.com/cyber-dojo/nginx/commit/27b350410ebcca5ff192f2ca4cdd0e3e49f5ac65",
+ "previous_trail_name": "27b350410ebcca5ff192f2ca4cdd0e3e49f5ac65",
+ "previous_template_reference_name": "nginx"
},
- "commit_lead_time": 416885.0,
+ "commit_lead_time": 981.0,
"flows": [
{
- "flow_name": "exercises-start-points-ci",
- "trail_name": "f22a30ed7659b05a88c22e9f22dc2388f2deb8c8",
- "template_reference_name": "exercises-start-points",
- "git_commit": "f22a30ed7659b05a88c22e9f22dc2388f2deb8c8",
- "commit_url": "https://github.com/cyber-dojo/exercises-start-points/commit/f22a30ed7659b05a88c22e9f22dc2388f2deb8c8",
+ "flow_name": "nginx-ci",
+ "trail_name": "bd3938c88623bff4f02e1c2f12e97f7cd60523e3",
+ "template_reference_name": "nginx",
+ "git_commit": "bd3938c88623bff4f02e1c2f12e97f7cd60523e3",
+ "commit_url": "https://github.com/cyber-dojo/nginx/commit/bd3938c88623bff4f02e1c2f12e97f7cd60523e3",
"git_commit_info": {
- "sha1": "f22a30ed7659b05a88c22e9f22dc2388f2deb8c8",
- "message": "Merge pull request #149 from cyber-dojo/update-base-image-ce45d62\n\nMerge update-base-image into main",
+ "sha1": "bd3938c88623bff4f02e1c2f12e97f7cd60523e3",
+ "message": "Merge pull request #171 from cyber-dojo/run-workflow-to-pickup-lib-updates\n\nRun workflow to pick up new snyk vuln fixes",
"author": "Jon Jagger ",
"branch": "",
- "timestamp": 1787838511.0,
- "url": "https://github.com/cyber-dojo/exercises-start-points/commit/f22a30ed7659b05a88c22e9f22dc2388f2deb8c8"
+ "timestamp": 1788866107.0,
+ "url": "https://github.com/cyber-dojo/nginx/commit/bd3938c88623bff4f02e1c2f12e97f7cd60523e3"
},
- "html_url": "https://app.kosli.com/cyber-dojo/flows/exercises-start-points-ci/artifacts/41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6?artifact_id=aa4300d4-b690-4d71-9596-6af987e1",
- "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/exercises-start-points-ci",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/nginx-ci/artifacts/aa63057d266fea8e2336b5d046a85889dd2ec37023cb81a465f6fff6c999c2c5?artifact_id=30338133-ceb7-4976-8956-e0b140cf",
+ "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/nginx-ci",
"deployment_diff": {
- "diff_url": "https://github.com/cyber-dojo/exercises-start-points/compare/258b6d07d2b28ad5cb2ce6d29934997f72380f1a...f22a30ed7659b05a88c22e9f22dc2388f2deb8c8",
- "previous_git_commit": "258b6d07d2b28ad5cb2ce6d29934997f72380f1a",
- "previous_fingerprint": "c7b7fd69d904329f9264e111bd3dc63cf98724cce567bae719e79a171e6925ea",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/exercises-start-points:258b6d0@sha256:c7b7fd69d904329f9264e111bd3dc63cf98724cce567bae719e79a171e6925ea",
+ "diff_url": "https://github.com/cyber-dojo/nginx/compare/27b350410ebcca5ff192f2ca4cdd0e3e49f5ac65...bd3938c88623bff4f02e1c2f12e97f7cd60523e3",
+ "previous_git_commit": "27b350410ebcca5ff192f2ca4cdd0e3e49f5ac65",
+ "previous_fingerprint": "1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/nginx:27b3504@sha256:1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21",
"previous_artifact_compliance_state": "COMPLIANT",
"previous_running": false,
- "previous_git_commit_url": "https://github.com/cyber-dojo/exercises-start-points/commit/258b6d07d2b28ad5cb2ce6d29934997f72380f1a",
- "previous_trail_name": "258b6d07d2b28ad5cb2ce6d29934997f72380f1a",
- "previous_template_reference_name": "exercises-start-points"
+ "previous_git_commit_url": "https://github.com/cyber-dojo/nginx/commit/27b350410ebcca5ff192f2ca4cdd0e3e49f5ac65",
+ "previous_trail_name": "27b350410ebcca5ff192f2ca4cdd0e3e49f5ac65",
+ "previous_template_reference_name": "nginx"
},
- "commit_lead_time": 416885.0,
+ "commit_lead_time": 981.0,
"artifact_compliance_in_flow": true,
"flow_reasons_for_non_compliance": []
},
{
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "exercises-start-points-41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6",
- "template_reference_name": "exercises-start-points",
- "git_commit": "ed3c81d7322bb8058615095f4aab28c147c53933",
- "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
+ "template_reference_name": "nginx",
+ "git_commit": "7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
+ "commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
"git_commit_info": {
- "sha1": "ed3c81d7322bb8058615095f4aab28c147c53933",
- "message": "Unpack one pinned commit instead of fetching each file\n\n a0c005a moved these two jobs' files to RUNNER_TEMP, which kept them out of\n the caller's checkout but left the prefix repeated at every use. The paths\n are absolute because the run steps stay in the checkout, where the Kosli\n CLI reads git commit information from the working directory, so the prefix\n cannot be dropped. It can only be folded into the definitions, and a\n literal /tmp folds where runner.temp does not: the runner context is\n unavailable in workflow- and job-level env blocks. Both jobs are pinned to\n ubuntu-latest, one fresh VM per job, so /tmp neither collides nor persists.\n\n The files also arrived as five separate fetches of main, one per file, so a\n push landing mid-run could pair a rego policy with params from a different\n commit. find-snyk-vulns already checks this repo out, so it now publishes\n the SHA it resolved, and the two later jobs unpack that exact commit as a\n single tarball. One run reads one version.\n\n An env-var's prefix now says where its file came from: SNYK_SCANNING_ from\n this repo at the pinned commit, CALLER_ from the repo being scanned, TMP_\n produced by the run. That split is worth naming because only one of these\n files is the caller's, and it is the one .snyk that the decision attests\n against. Two bare filenames survive because an artifact name cannot\n contain a '/'.\n\n fetch-url-to-file now has exactly one caller, for that .snyk.",
+ "sha1": "7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
+ "message": "Drop lone use of = separator on Kosli CLI boolean flag",
"author": "JonJagger ",
"branch": "main",
- "timestamp": 1787661987.0,
- "url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933"
+ "timestamp": 1785316994.0,
+ "url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584"
},
- "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact/artifacts/41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6?artifact_id=f0d94332-8b7c-4437-adf8-dc070a8e",
- "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/aa63057d266fea8e2336b5d046a85889dd2ec37023cb81a465f6fff6c999c2c5?artifact_id=6054ab54-4c97-4a31-8dc1-6cd7f492",
+ "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion",
"deployment_diff": {
- "diff_url": "https://github.com/cyber-dojo/snyk-scanning/compare/c0666c020044ac5b5181999ec153db1e7f6cd303...ed3c81d7322bb8058615095f4aab28c147c53933",
- "previous_git_commit": "c0666c020044ac5b5181999ec153db1e7f6cd303",
- "previous_fingerprint": "c7b7fd69d904329f9264e111bd3dc63cf98724cce567bae719e79a171e6925ea",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/exercises-start-points:258b6d0@sha256:c7b7fd69d904329f9264e111bd3dc63cf98724cce567bae719e79a171e6925ea",
+ "diff_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/compare/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584...7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
+ "previous_git_commit": "7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
+ "previous_fingerprint": "1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/nginx:27b3504@sha256:1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21",
"previous_artifact_compliance_state": "COMPLIANT",
"previous_running": false,
- "previous_git_commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/c0666c020044ac5b5181999ec153db1e7f6cd303",
- "previous_trail_name": "exercises-start-points-c7b7fd69d904329f9264e111bd3dc63cf98724cce567bae719e79a171e6925ea",
- "previous_template_reference_name": "exercises-start-points"
+ "previous_git_commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
+ "previous_trail_name": "promote-all-34",
+ "previous_template_reference_name": "nginx"
},
- "commit_lead_time": 593409.0,
+ "commit_lead_time": 3550094.0,
"artifact_compliance_in_flow": true,
"flow_reasons_for_non_compliance": []
},
{
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
- "template_reference_name": "exercises-start-points",
- "git_commit": "7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
- "commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "nginx-aa63057d266fea8e2336b5d046a85889dd2ec37023cb81a465f6fff6c999c2c5",
+ "template_reference_name": "nginx",
+ "git_commit": "30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/30111f180ac4e3611cdbd7d805381a0bb9f53cff",
"git_commit_info": {
- "sha1": "7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
- "message": "Drop lone use of = separator on Kosli CLI boolean flag",
- "author": "JonJagger ",
+ "sha1": "30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "message": "Merge pull request #4 from cyber-dojo/take-both-age-instants-from-one-trail-read\n\nMeasure a vuln's age on the Kosli server's clock alone",
+ "author": "Jon Jagger ",
"branch": "main",
- "timestamp": 1785316994.0,
- "url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584"
+ "timestamp": 1788945655.0,
+ "url": "https://github.com/cyber-dojo/snyk-scanning/commit/30111f180ac4e3611cdbd7d805381a0bb9f53cff"
},
- "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6?artifact_id=edc896a3-98a0-4cb0-8147-49fd6952",
- "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact/artifacts/aa63057d266fea8e2336b5d046a85889dd2ec37023cb81a465f6fff6c999c2c5?artifact_id=6c3dc579-a9b1-413e-9738-5087e69c",
+ "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact",
"deployment_diff": {
- "diff_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/compare/81c216a55b2cb1787645e699ceaceca868cad253...7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
- "previous_git_commit": "81c216a55b2cb1787645e699ceaceca868cad253",
- "previous_fingerprint": "c7b7fd69d904329f9264e111bd3dc63cf98724cce567bae719e79a171e6925ea",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/exercises-start-points:258b6d0@sha256:c7b7fd69d904329f9264e111bd3dc63cf98724cce567bae719e79a171e6925ea",
+ "diff_url": "https://github.com/cyber-dojo/snyk-scanning/compare/ed3c81d7322bb8058615095f4aab28c147c53933...30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "previous_git_commit": "ed3c81d7322bb8058615095f4aab28c147c53933",
+ "previous_fingerprint": "1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/nginx:27b3504@sha256:1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21",
"previous_artifact_compliance_state": "COMPLIANT",
"previous_running": false,
- "previous_git_commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/81c216a55b2cb1787645e699ceaceca868cad253",
- "previous_trail_name": "promote-all-31",
- "previous_template_reference_name": "exercises-start-points"
+ "previous_git_commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933",
+ "previous_trail_name": "nginx-1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21",
+ "previous_template_reference_name": "nginx"
},
- "commit_lead_time": 2938402.0,
+ "commit_lead_time": -78567.0,
"artifact_compliance_in_flow": true,
"flow_reasons_for_non_compliance": []
},
{
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "exercises-start-points-41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6",
- "template_reference_name": "exercises-start-points",
- "git_commit": "ed3c81d7322bb8058615095f4aab28c147c53933",
- "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933",
+ "trail_name": "nginx-aa63057d266fea8e2336b5d046a85889dd2ec37023cb81a465f6fff6c999c2c5",
+ "template_reference_name": "nginx",
+ "git_commit": "30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/30111f180ac4e3611cdbd7d805381a0bb9f53cff",
"git_commit_info": {
- "sha1": "ed3c81d7322bb8058615095f4aab28c147c53933",
- "message": "Unpack one pinned commit instead of fetching each file\n\n a0c005a moved these two jobs' files to RUNNER_TEMP, which kept them out of\n the caller's checkout but left the prefix repeated at every use. The paths\n are absolute because the run steps stay in the checkout, where the Kosli\n CLI reads git commit information from the working directory, so the prefix\n cannot be dropped. It can only be folded into the definitions, and a\n literal /tmp folds where runner.temp does not: the runner context is\n unavailable in workflow- and job-level env blocks. Both jobs are pinned to\n ubuntu-latest, one fresh VM per job, so /tmp neither collides nor persists.\n\n The files also arrived as five separate fetches of main, one per file, so a\n push landing mid-run could pair a rego policy with params from a different\n commit. find-snyk-vulns already checks this repo out, so it now publishes\n the SHA it resolved, and the two later jobs unpack that exact commit as a\n single tarball. One run reads one version.\n\n An env-var's prefix now says where its file came from: SNYK_SCANNING_ from\n this repo at the pinned commit, CALLER_ from the repo being scanned, TMP_\n produced by the run. That split is worth naming because only one of these\n files is the caller's, and it is the one .snyk that the decision attests\n against. Two bare filenames survive because an artifact name cannot\n contain a '/'.\n\n fetch-url-to-file now has exactly one caller, for that .snyk.",
- "author": "JonJagger ",
+ "sha1": "30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "message": "Merge pull request #4 from cyber-dojo/take-both-age-instants-from-one-trail-read\n\nMeasure a vuln's age on the Kosli server's clock alone",
+ "author": "Jon Jagger ",
"branch": "main",
- "timestamp": 1787661987.0,
- "url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933"
+ "timestamp": 1788945655.0,
+ "url": "https://github.com/cyber-dojo/snyk-scanning/commit/30111f180ac4e3611cdbd7d805381a0bb9f53cff"
},
- "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6?artifact_id=601099dd-9069-4756-8c33-35cf65e1",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/aa63057d266fea8e2336b5d046a85889dd2ec37023cb81a465f6fff6c999c2c5?artifact_id=50bee95d-36db-441e-af26-4c0f1566",
"flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact",
"deployment_diff": {
- "diff_url": "https://github.com/cyber-dojo/snyk-scanning/compare/00c479764cb9eca038fdaaaef108672d0bb0ed26...ed3c81d7322bb8058615095f4aab28c147c53933",
+ "diff_url": "https://github.com/cyber-dojo/snyk-scanning/compare/00c479764cb9eca038fdaaaef108672d0bb0ed26...30111f180ac4e3611cdbd7d805381a0bb9f53cff",
"previous_git_commit": "00c479764cb9eca038fdaaaef108672d0bb0ed26",
- "previous_fingerprint": "f00aa234bebafb1980dced29626750f84a6fe6c9c50f6a90167e4d8e6511a8a8",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/exercises-start-points:b8e5cbf@sha256:f00aa234bebafb1980dced29626750f84a6fe6c9c50f6a90167e4d8e6511a8a8",
+ "previous_fingerprint": "b7ff2cf22c934716a4280f0450ae52fe822cda7fce7fc5488bf62853860cddc8",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/nginx:7065268@sha256:b7ff2cf22c934716a4280f0450ae52fe822cda7fce7fc5488bf62853860cddc8",
"previous_artifact_compliance_state": "COMPLIANT",
"previous_running": false,
"previous_git_commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/00c479764cb9eca038fdaaaef108672d0bb0ed26",
- "previous_trail_name": "exercises-start-points-f00aa234bebafb1980dced29626750f84a6fe6c9c50f6a90167e4d8e6511a8a8",
- "previous_template_reference_name": "exercises-start-points"
+ "previous_trail_name": "nginx-b7ff2cf22c934716a4280f0450ae52fe822cda7fce7fc5488bf62853860cddc8",
+ "previous_template_reference_name": "nginx"
},
- "commit_lead_time": 593409.0,
+ "commit_lead_time": -78567.0,
"artifact_compliance_in_flow": true,
"flow_reasons_for_non_compliance": []
}
],
"ecs_context": {
- "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/ca7755573c354bb191fc03f5496f0e7a",
+ "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/4dd7dd50d39444e68bc2bbea87eb0786",
"cluster_name": null,
"service_name": null
}
},
{
- "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/spooler:90c8d98@sha256:6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd",
+ "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/exercises-start-points:d01bb39@sha256:bc1dae4e8ce742e027a6dc6b68e44c65361cd48e588483d3fd9f6d6911a84c31",
"compliant": true,
"deployments": [],
"policy_decisions": [
{
- "policy_version": 3,
+ "policy_version": 2,
"status": "COMPLIANT",
"rule_evaluations": [
{
@@ -5290,24 +5294,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "spooler-ci",
- "trail_name": "90c8d982d2ff8c4950f7aca4d0a1e9d29ac74e1f",
+ "flow_name": "exercises-start-points-ci",
+ "trail_name": "d01bb39495a1356eabe934bef84b92cc964a26f1",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "spooler-6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "exercises-start-points-bc1dae4e8ce742e027a6dc6b68e44c65361cd48e588483d3fd9f6d6911a84c31",
"artifact_status": null
}
},
@@ -5315,7 +5319,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "spooler-6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd",
+ "trail_name": "exercises-start-points-bc1dae4e8ce742e027a6dc6b68e44c65361cd48e588483d3fd9f6d6911a84c31",
"artifact_status": null
}
}
@@ -5335,24 +5339,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "spooler-ci",
- "trail_name": "90c8d982d2ff8c4950f7aca4d0a1e9d29ac74e1f",
+ "flow_name": "exercises-start-points-ci",
+ "trail_name": "d01bb39495a1356eabe934bef84b92cc964a26f1",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "spooler-6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "exercises-start-points-bc1dae4e8ce742e027a6dc6b68e44c65361cd48e588483d3fd9f6d6911a84c31",
"artifact_status": "COMPLIANT"
}
},
@@ -5360,7 +5364,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "spooler-6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd",
+ "trail_name": "exercises-start-points-bc1dae4e8ce742e027a6dc6b68e44c65361cd48e588483d3fd9f6d6911a84c31",
"artifact_status": "COMPLIANT"
}
}
@@ -5371,38 +5375,38 @@ kosli get snapshot aws-prod --output=json
"type": "attestation",
"definition": {
"if": {
- "text": "flow.tags.kind == \"build\""
+ "text": "flow.name == \"production-promotion\""
},
- "name": "*",
- "type": "pull_request",
+ "name": "snyk-scan",
+ "type": "decision",
"must_be_compliant": true,
"for_control": null
}
},
- "satisfied": null,
- "ignored": true,
+ "satisfied": true,
+ "ignored": false,
"resolutions": [
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "spooler-ci",
- "trail_name": "90c8d982d2ff8c4950f7aca4d0a1e9d29ac74e1f",
+ "flow_name": "exercises-start-points-ci",
+ "trail_name": "d01bb39495a1356eabe934bef84b92cc964a26f1",
"artifact_status": null
}
},
{
- "type": "rule_not_applicable",
+ "type": "rule_satisfied",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "spooler-6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "exercises-start-points-bc1dae4e8ce742e027a6dc6b68e44c65361cd48e588483d3fd9f6d6911a84c31",
"artifact_status": null
}
},
@@ -5410,14 +5414,14 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "spooler-6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd",
+ "trail_name": "exercises-start-points-bc1dae4e8ce742e027a6dc6b68e44c65361cd48e588483d3fd9f6d6911a84c31",
"artifact_status": null
}
}
]
}
],
- "policy_name": "pull-request"
+ "policy_name": "production-promotion"
},
{
"policy_version": 3,
@@ -5437,24 +5441,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_satisfied",
"context": {
- "flow_name": "spooler-ci",
- "trail_name": "90c8d982d2ff8c4950f7aca4d0a1e9d29ac74e1f",
+ "flow_name": "exercises-start-points-ci",
+ "trail_name": "d01bb39495a1356eabe934bef84b92cc964a26f1",
"artifact_status": null
}
},
{
"type": "rule_satisfied",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "spooler-6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_satisfied",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "exercises-start-points-bc1dae4e8ce742e027a6dc6b68e44c65361cd48e588483d3fd9f6d6911a84c31",
"artifact_status": null
}
},
@@ -5462,7 +5466,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_satisfied",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "spooler-6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd",
+ "trail_name": "exercises-start-points-bc1dae4e8ce742e027a6dc6b68e44c65361cd48e588483d3fd9f6d6911a84c31",
"artifact_status": null
}
}
@@ -5482,24 +5486,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "spooler-ci",
- "trail_name": "90c8d982d2ff8c4950f7aca4d0a1e9d29ac74e1f",
+ "flow_name": "exercises-start-points-ci",
+ "trail_name": "d01bb39495a1356eabe934bef84b92cc964a26f1",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "spooler-6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "exercises-start-points-bc1dae4e8ce742e027a6dc6b68e44c65361cd48e588483d3fd9f6d6911a84c31",
"artifact_status": "COMPLIANT"
}
},
@@ -5507,7 +5511,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "spooler-6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd",
+ "trail_name": "exercises-start-points-bc1dae4e8ce742e027a6dc6b68e44c65361cd48e588483d3fd9f6d6911a84c31",
"artifact_status": "COMPLIANT"
}
}
@@ -5526,14 +5530,14 @@ kosli get snapshot aws-prod --output=json
"for_control": "SDLC-CTRL-0002"
}
},
- "satisfied": null,
- "ignored": true,
+ "satisfied": true,
+ "ignored": false,
"resolutions": [
{
- "type": "rule_not_applicable",
+ "type": "rule_satisfied",
"context": {
- "flow_name": "spooler-ci",
- "trail_name": "90c8d982d2ff8c4950f7aca4d0a1e9d29ac74e1f",
+ "flow_name": "exercises-start-points-ci",
+ "trail_name": "d01bb39495a1356eabe934bef84b92cc964a26f1",
"artifact_status": null,
"for_control": "SDLC-CTRL-0002"
}
@@ -5541,8 +5545,8 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "spooler-6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null,
"for_control": "SDLC-CTRL-0002"
}
@@ -5550,8 +5554,8 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "exercises-start-points-bc1dae4e8ce742e027a6dc6b68e44c65361cd48e588483d3fd9f6d6911a84c31",
"artifact_status": null,
"for_control": "SDLC-CTRL-0002"
}
@@ -5560,7 +5564,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "spooler-6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd",
+ "trail_name": "exercises-start-points-bc1dae4e8ce742e027a6dc6b68e44c65361cd48e588483d3fd9f6d6911a84c31",
"artifact_status": null,
"for_control": "SDLC-CTRL-0002"
}
@@ -5571,7 +5575,7 @@ kosli get snapshot aws-prod --output=json
"policy_name": "provenance"
},
{
- "policy_version": 4,
+ "policy_version": 3,
"status": "COMPLIANT",
"rule_evaluations": [
{
@@ -5588,24 +5592,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "spooler-ci",
- "trail_name": "90c8d982d2ff8c4950f7aca4d0a1e9d29ac74e1f",
+ "flow_name": "exercises-start-points-ci",
+ "trail_name": "d01bb39495a1356eabe934bef84b92cc964a26f1",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "spooler-6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "exercises-start-points-bc1dae4e8ce742e027a6dc6b68e44c65361cd48e588483d3fd9f6d6911a84c31",
"artifact_status": null
}
},
@@ -5613,7 +5617,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "spooler-6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd",
+ "trail_name": "exercises-start-points-bc1dae4e8ce742e027a6dc6b68e44c65361cd48e588483d3fd9f6d6911a84c31",
"artifact_status": null
}
}
@@ -5633,24 +5637,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "spooler-ci",
- "trail_name": "90c8d982d2ff8c4950f7aca4d0a1e9d29ac74e1f",
+ "flow_name": "exercises-start-points-ci",
+ "trail_name": "d01bb39495a1356eabe934bef84b92cc964a26f1",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "spooler-6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "exercises-start-points-bc1dae4e8ce742e027a6dc6b68e44c65361cd48e588483d3fd9f6d6911a84c31",
"artifact_status": "COMPLIANT"
}
},
@@ -5658,7 +5662,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "spooler-6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd",
+ "trail_name": "exercises-start-points-bc1dae4e8ce742e027a6dc6b68e44c65361cd48e588483d3fd9f6d6911a84c31",
"artifact_status": "COMPLIANT"
}
}
@@ -5669,60 +5673,56 @@ kosli get snapshot aws-prod --output=json
"type": "attestation",
"definition": {
"if": {
- "text": "flow.name == \"snyk-aws-prod-per-artifact\""
+ "text": "flow.tags.kind == \"build\""
},
- "name": "snyk-container-scan",
- "type": "decision",
+ "name": "*",
+ "type": "pull_request",
"must_be_compliant": true,
- "for_control": "SDLC-CTRL-0022"
+ "for_control": null
}
},
"satisfied": true,
"ignored": false,
"resolutions": [
{
- "type": "rule_not_applicable",
+ "type": "rule_satisfied",
"context": {
- "flow_name": "spooler-ci",
- "trail_name": "90c8d982d2ff8c4950f7aca4d0a1e9d29ac74e1f",
- "artifact_status": null,
- "for_control": "SDLC-CTRL-0022"
+ "flow_name": "exercises-start-points-ci",
+ "trail_name": "d01bb39495a1356eabe934bef84b92cc964a26f1",
+ "artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "spooler-6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd",
- "artifact_status": null,
- "for_control": "SDLC-CTRL-0022"
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
+ "artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
- "artifact_status": null,
- "for_control": "SDLC-CTRL-0022"
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "exercises-start-points-bc1dae4e8ce742e027a6dc6b68e44c65361cd48e588483d3fd9f6d6911a84c31",
+ "artifact_status": null
}
},
{
- "type": "rule_satisfied",
+ "type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "spooler-6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd",
- "artifact_status": null,
- "for_control": "SDLC-CTRL-0022"
+ "trail_name": "exercises-start-points-bc1dae4e8ce742e027a6dc6b68e44c65361cd48e588483d3fd9f6d6911a84c31",
+ "artifact_status": null
}
}
]
}
],
- "policy_name": "snyk-scan-aws-prod"
+ "policy_name": "pull-request"
},
{
- "policy_version": 2,
+ "policy_version": 4,
"status": "COMPLIANT",
"rule_evaluations": [
{
@@ -5739,24 +5739,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "spooler-ci",
- "trail_name": "90c8d982d2ff8c4950f7aca4d0a1e9d29ac74e1f",
+ "flow_name": "exercises-start-points-ci",
+ "trail_name": "d01bb39495a1356eabe934bef84b92cc964a26f1",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "spooler-6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "exercises-start-points-bc1dae4e8ce742e027a6dc6b68e44c65361cd48e588483d3fd9f6d6911a84c31",
"artifact_status": null
}
},
@@ -5764,7 +5764,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "spooler-6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd",
+ "trail_name": "exercises-start-points-bc1dae4e8ce742e027a6dc6b68e44c65361cd48e588483d3fd9f6d6911a84c31",
"artifact_status": null
}
}
@@ -5784,24 +5784,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "spooler-ci",
- "trail_name": "90c8d982d2ff8c4950f7aca4d0a1e9d29ac74e1f",
+ "flow_name": "exercises-start-points-ci",
+ "trail_name": "d01bb39495a1356eabe934bef84b92cc964a26f1",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "spooler-6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "exercises-start-points-bc1dae4e8ce742e027a6dc6b68e44c65361cd48e588483d3fd9f6d6911a84c31",
"artifact_status": "COMPLIANT"
}
},
@@ -5809,7 +5809,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "spooler-6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd",
+ "trail_name": "exercises-start-points-bc1dae4e8ce742e027a6dc6b68e44c65361cd48e588483d3fd9f6d6911a84c31",
"artifact_status": "COMPLIANT"
}
}
@@ -5820,12 +5820,12 @@ kosli get snapshot aws-prod --output=json
"type": "attestation",
"definition": {
"if": {
- "text": "flow.name == \"production-promotion\""
+ "text": "flow.name == \"snyk-aws-prod-per-artifact\""
},
- "name": "snyk-scan",
+ "name": "snyk-container-scan",
"type": "decision",
"must_be_compliant": true,
- "for_control": null
+ "for_control": "SDLC-CTRL-0022"
}
},
"satisfied": true,
@@ -5834,39 +5834,43 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "spooler-ci",
- "trail_name": "90c8d982d2ff8c4950f7aca4d0a1e9d29ac74e1f",
- "artifact_status": null
+ "flow_name": "exercises-start-points-ci",
+ "trail_name": "d01bb39495a1356eabe934bef84b92cc964a26f1",
+ "artifact_status": null,
+ "for_control": "SDLC-CTRL-0022"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "spooler-6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd",
- "artifact_status": null
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
+ "artifact_status": null,
+ "for_control": "SDLC-CTRL-0022"
}
},
{
- "type": "rule_satisfied",
+ "type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
- "artifact_status": null
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "exercises-start-points-bc1dae4e8ce742e027a6dc6b68e44c65361cd48e588483d3fd9f6d6911a84c31",
+ "artifact_status": null,
+ "for_control": "SDLC-CTRL-0022"
}
},
{
- "type": "rule_not_applicable",
+ "type": "rule_satisfied",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "spooler-6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd",
- "artifact_status": null
+ "trail_name": "exercises-start-points-bc1dae4e8ce742e027a6dc6b68e44c65361cd48e588483d3fd9f6d6911a84c31",
+ "artifact_status": null,
+ "for_control": "SDLC-CTRL-0022"
}
}
]
}
],
- "policy_name": "production-promotion"
+ "policy_name": "snyk-scan-aws-prod"
},
{
"policy_version": 2,
@@ -5886,24 +5890,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "spooler-ci",
- "trail_name": "90c8d982d2ff8c4950f7aca4d0a1e9d29ac74e1f",
+ "flow_name": "exercises-start-points-ci",
+ "trail_name": "d01bb39495a1356eabe934bef84b92cc964a26f1",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "spooler-6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "exercises-start-points-bc1dae4e8ce742e027a6dc6b68e44c65361cd48e588483d3fd9f6d6911a84c31",
"artifact_status": null
}
},
@@ -5911,7 +5915,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "spooler-6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd",
+ "trail_name": "exercises-start-points-bc1dae4e8ce742e027a6dc6b68e44c65361cd48e588483d3fd9f6d6911a84c31",
"artifact_status": null
}
}
@@ -5937,24 +5941,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "spooler-ci",
- "trail_name": "90c8d982d2ff8c4950f7aca4d0a1e9d29ac74e1f",
+ "flow_name": "exercises-start-points-ci",
+ "trail_name": "d01bb39495a1356eabe934bef84b92cc964a26f1",
"artifact_status": "COMPLIANT"
}
},
{
- "type": "rule_not_applicable",
+ "type": "rule_satisfied",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "spooler-6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
{
- "type": "rule_satisfied",
+ "type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "exercises-start-points-bc1dae4e8ce742e027a6dc6b68e44c65361cd48e588483d3fd9f6d6911a84c31",
"artifact_status": "COMPLIANT"
}
},
@@ -5962,7 +5966,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_satisfied",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "spooler-6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd",
+ "trail_name": "exercises-start-points-bc1dae4e8ce742e027a6dc6b68e44c65361cd48e588483d3fd9f6d6911a84c31",
"artifact_status": "COMPLIANT"
}
}
@@ -5973,100 +5977,69 @@ kosli get snapshot aws-prod --output=json
}
],
"reasons_for_incompliance": [],
- "fingerprint": "6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd",
+ "fingerprint": "bc1dae4e8ce742e027a6dc6b68e44c65361cd48e588483d3fd9f6d6911a84c31",
"creationTimestamp": [
- 1788255396
+ 1789022822
],
"pods": null,
"annotation": {
- "type": "updated-provenance",
+ "type": "unchanged",
"was": 1,
"now": 1
},
- "flow_name": "spooler-ci",
- "git_commit": "90c8d982d2ff8c4950f7aca4d0a1e9d29ac74e1f",
- "commit_url": "https://github.com/cyber-dojo/spooler/commit/90c8d982d2ff8c4950f7aca4d0a1e9d29ac74e1f",
- "html_url": "https://app.kosli.com/cyber-dojo/flows/spooler-ci/artifacts/6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd?artifact_id=6df79438-91a2-4c2b-a945-52fb5218",
- "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/spooler-ci",
+ "flow_name": "exercises-start-points-ci",
+ "git_commit": "d01bb39495a1356eabe934bef84b92cc964a26f1",
+ "commit_url": "https://github.com/cyber-dojo/exercises-start-points/commit/d01bb39495a1356eabe934bef84b92cc964a26f1",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/exercises-start-points-ci/artifacts/bc1dae4e8ce742e027a6dc6b68e44c65361cd48e588483d3fd9f6d6911a84c31?artifact_id=6884abdb-afdd-4c56-aa14-94e8da5c",
+ "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/exercises-start-points-ci",
"deployment_diff": {
- "diff_url": "https://github.com/cyber-dojo/spooler/compare/dc7dea2d9086fcdfe4629f3ab02501ed92aad1bb...90c8d982d2ff8c4950f7aca4d0a1e9d29ac74e1f",
- "previous_git_commit": "dc7dea2d9086fcdfe4629f3ab02501ed92aad1bb",
- "previous_fingerprint": "ff871c3c8f4b5cfb60012bed1cd7f020b20f17fdabc2db0d8a5c77e75518fce0",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/spooler:dc7dea2@sha256:ff871c3c8f4b5cfb60012bed1cd7f020b20f17fdabc2db0d8a5c77e75518fce0",
+ "diff_url": "https://github.com/cyber-dojo/exercises-start-points/compare/f22a30ed7659b05a88c22e9f22dc2388f2deb8c8...d01bb39495a1356eabe934bef84b92cc964a26f1",
+ "previous_git_commit": "f22a30ed7659b05a88c22e9f22dc2388f2deb8c8",
+ "previous_fingerprint": "41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/exercises-start-points:f22a30e@sha256:41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6",
"previous_artifact_compliance_state": "COMPLIANT",
"previous_running": false,
- "previous_git_commit_url": "https://github.com/cyber-dojo/spooler/commit/dc7dea2d9086fcdfe4629f3ab02501ed92aad1bb",
- "previous_trail_name": "dc7dea2d9086fcdfe4629f3ab02501ed92aad1bb",
- "previous_template_reference_name": "spooler"
+ "previous_git_commit_url": "https://github.com/cyber-dojo/exercises-start-points/commit/f22a30ed7659b05a88c22e9f22dc2388f2deb8c8",
+ "previous_trail_name": "f22a30ed7659b05a88c22e9f22dc2388f2deb8c8",
+ "previous_template_reference_name": "exercises-start-points"
},
- "commit_lead_time": 352135.0,
+ "commit_lead_time": 6537.0,
"flows": [
{
- "flow_name": "spooler-ci",
- "trail_name": "90c8d982d2ff8c4950f7aca4d0a1e9d29ac74e1f",
- "template_reference_name": "spooler",
- "git_commit": "90c8d982d2ff8c4950f7aca4d0a1e9d29ac74e1f",
- "commit_url": "https://github.com/cyber-dojo/spooler/commit/90c8d982d2ff8c4950f7aca4d0a1e9d29ac74e1f",
+ "flow_name": "exercises-start-points-ci",
+ "trail_name": "d01bb39495a1356eabe934bef84b92cc964a26f1",
+ "template_reference_name": "exercises-start-points",
+ "git_commit": "d01bb39495a1356eabe934bef84b92cc964a26f1",
+ "commit_url": "https://github.com/cyber-dojo/exercises-start-points/commit/d01bb39495a1356eabe934bef84b92cc964a26f1",
"git_commit_info": {
- "sha1": "90c8d982d2ff8c4950f7aca4d0a1e9d29ac74e1f",
- "message": "Merge pull request #18 from cyber-dojo/give-each-saver-forward-its-own-connection\n\nGive each saver forward its own http connection",
+ "sha1": "d01bb39495a1356eabe934bef84b92cc964a26f1",
+ "message": "Merge pull request #151 from cyber-dojo/update-base-image-a2388c1\n\nMerge update-base-image into main",
"author": "Jon Jagger ",
"branch": "",
- "timestamp": 1787903261.0,
- "url": "https://github.com/cyber-dojo/spooler/commit/90c8d982d2ff8c4950f7aca4d0a1e9d29ac74e1f"
- },
- "html_url": "https://app.kosli.com/cyber-dojo/flows/spooler-ci/artifacts/6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd?artifact_id=6df79438-91a2-4c2b-a945-52fb5218",
- "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/spooler-ci",
- "deployment_diff": {
- "diff_url": "https://github.com/cyber-dojo/spooler/compare/dc7dea2d9086fcdfe4629f3ab02501ed92aad1bb...90c8d982d2ff8c4950f7aca4d0a1e9d29ac74e1f",
- "previous_git_commit": "dc7dea2d9086fcdfe4629f3ab02501ed92aad1bb",
- "previous_fingerprint": "ff871c3c8f4b5cfb60012bed1cd7f020b20f17fdabc2db0d8a5c77e75518fce0",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/spooler:dc7dea2@sha256:ff871c3c8f4b5cfb60012bed1cd7f020b20f17fdabc2db0d8a5c77e75518fce0",
- "previous_artifact_compliance_state": "COMPLIANT",
- "previous_running": false,
- "previous_git_commit_url": "https://github.com/cyber-dojo/spooler/commit/dc7dea2d9086fcdfe4629f3ab02501ed92aad1bb",
- "previous_trail_name": "dc7dea2d9086fcdfe4629f3ab02501ed92aad1bb",
- "previous_template_reference_name": "spooler"
- },
- "commit_lead_time": 352135.0,
- "artifact_compliance_in_flow": true,
- "flow_reasons_for_non_compliance": []
- },
- {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "spooler-6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd",
- "template_reference_name": "spooler",
- "git_commit": "ed3c81d7322bb8058615095f4aab28c147c53933",
- "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933",
- "git_commit_info": {
- "sha1": "ed3c81d7322bb8058615095f4aab28c147c53933",
- "message": "Unpack one pinned commit instead of fetching each file\n\n a0c005a moved these two jobs' files to RUNNER_TEMP, which kept them out of\n the caller's checkout but left the prefix repeated at every use. The paths\n are absolute because the run steps stay in the checkout, where the Kosli\n CLI reads git commit information from the working directory, so the prefix\n cannot be dropped. It can only be folded into the definitions, and a\n literal /tmp folds where runner.temp does not: the runner context is\n unavailable in workflow- and job-level env blocks. Both jobs are pinned to\n ubuntu-latest, one fresh VM per job, so /tmp neither collides nor persists.\n\n The files also arrived as five separate fetches of main, one per file, so a\n push landing mid-run could pair a rego policy with params from a different\n commit. find-snyk-vulns already checks this repo out, so it now publishes\n the SHA it resolved, and the two later jobs unpack that exact commit as a\n single tarball. One run reads one version.\n\n An env-var's prefix now says where its file came from: SNYK_SCANNING_ from\n this repo at the pinned commit, CALLER_ from the repo being scanned, TMP_\n produced by the run. That split is worth naming because only one of these\n files is the caller's, and it is the one .snyk that the decision attests\n against. Two bare filenames survive because an artifact name cannot\n contain a '/'.\n\n fetch-url-to-file now has exactly one caller, for that .snyk.",
- "author": "JonJagger ",
- "branch": "main",
- "timestamp": 1787661987.0,
- "url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933"
+ "timestamp": 1788860901.0,
+ "url": "https://github.com/cyber-dojo/exercises-start-points/commit/d01bb39495a1356eabe934bef84b92cc964a26f1"
},
- "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact/artifacts/6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd?artifact_id=83b85760-e1f3-476b-9925-19541dee",
- "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/exercises-start-points-ci/artifacts/bc1dae4e8ce742e027a6dc6b68e44c65361cd48e588483d3fd9f6d6911a84c31?artifact_id=6884abdb-afdd-4c56-aa14-94e8da5c",
+ "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/exercises-start-points-ci",
"deployment_diff": {
- "diff_url": "https://github.com/cyber-dojo/snyk-scanning/compare/10203d5d23f93844726f204390cf3d5ca8d5c913...ed3c81d7322bb8058615095f4aab28c147c53933",
- "previous_git_commit": "10203d5d23f93844726f204390cf3d5ca8d5c913",
- "previous_fingerprint": "ff871c3c8f4b5cfb60012bed1cd7f020b20f17fdabc2db0d8a5c77e75518fce0",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/spooler:dc7dea2@sha256:ff871c3c8f4b5cfb60012bed1cd7f020b20f17fdabc2db0d8a5c77e75518fce0",
+ "diff_url": "https://github.com/cyber-dojo/exercises-start-points/compare/f22a30ed7659b05a88c22e9f22dc2388f2deb8c8...d01bb39495a1356eabe934bef84b92cc964a26f1",
+ "previous_git_commit": "f22a30ed7659b05a88c22e9f22dc2388f2deb8c8",
+ "previous_fingerprint": "41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/exercises-start-points:f22a30e@sha256:41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6",
"previous_artifact_compliance_state": "COMPLIANT",
"previous_running": false,
- "previous_git_commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/10203d5d23f93844726f204390cf3d5ca8d5c913",
- "previous_trail_name": "spooler-ff871c3c8f4b5cfb60012bed1cd7f020b20f17fdabc2db0d8a5c77e75518fce0",
- "previous_template_reference_name": "spooler"
+ "previous_git_commit_url": "https://github.com/cyber-dojo/exercises-start-points/commit/f22a30ed7659b05a88c22e9f22dc2388f2deb8c8",
+ "previous_trail_name": "f22a30ed7659b05a88c22e9f22dc2388f2deb8c8",
+ "previous_template_reference_name": "exercises-start-points"
},
- "commit_lead_time": 593409.0,
+ "commit_lead_time": 6537.0,
"artifact_compliance_in_flow": true,
"flow_reasons_for_non_compliance": []
},
{
"flow_name": "production-promotion",
- "trail_name": "promote-all-34",
- "template_reference_name": "spooler",
+ "trail_name": "promote-all-35",
+ "template_reference_name": "exercises-start-points",
"git_commit": "7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
"commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
"git_commit_info": {
@@ -6077,58 +6050,99 @@ kosli get snapshot aws-prod --output=json
"timestamp": 1785316994.0,
"url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584"
},
- "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd?artifact_id=fdd39323-ac61-4894-ae67-fc003bac",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/bc1dae4e8ce742e027a6dc6b68e44c65361cd48e588483d3fd9f6d6911a84c31?artifact_id=d5da77dd-d12b-47e0-ac66-ef5e5a75",
"flow_html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion",
"deployment_diff": {
"diff_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/compare/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584...7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
"previous_git_commit": "7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
- "previous_fingerprint": "ff871c3c8f4b5cfb60012bed1cd7f020b20f17fdabc2db0d8a5c77e75518fce0",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/spooler:dc7dea2@sha256:ff871c3c8f4b5cfb60012bed1cd7f020b20f17fdabc2db0d8a5c77e75518fce0",
+ "previous_fingerprint": "41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/exercises-start-points:f22a30e@sha256:41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6",
"previous_artifact_compliance_state": "COMPLIANT",
"previous_running": false,
"previous_git_commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
- "previous_trail_name": "promote-all-33",
- "previous_template_reference_name": "spooler"
+ "previous_trail_name": "promote-all-34",
+ "previous_template_reference_name": "exercises-start-points"
+ },
+ "commit_lead_time": 3550444.0,
+ "artifact_compliance_in_flow": true,
+ "flow_reasons_for_non_compliance": []
+ },
+ {
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "exercises-start-points-bc1dae4e8ce742e027a6dc6b68e44c65361cd48e588483d3fd9f6d6911a84c31",
+ "template_reference_name": "exercises-start-points",
+ "git_commit": "30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "git_commit_info": {
+ "sha1": "30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "message": "Merge pull request #4 from cyber-dojo/take-both-age-instants-from-one-trail-read\n\nMeasure a vuln's age on the Kosli server's clock alone",
+ "author": "Jon Jagger ",
+ "branch": "main",
+ "timestamp": 1788945655.0,
+ "url": "https://github.com/cyber-dojo/snyk-scanning/commit/30111f180ac4e3611cdbd7d805381a0bb9f53cff"
+ },
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact/artifacts/bc1dae4e8ce742e027a6dc6b68e44c65361cd48e588483d3fd9f6d6911a84c31?artifact_id=78955e83-729d-430a-9024-c86c519b",
+ "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact",
+ "deployment_diff": {
+ "diff_url": "https://github.com/cyber-dojo/snyk-scanning/compare/ed3c81d7322bb8058615095f4aab28c147c53933...30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "previous_git_commit": "ed3c81d7322bb8058615095f4aab28c147c53933",
+ "previous_fingerprint": "41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/exercises-start-points:f22a30e@sha256:41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6",
+ "previous_artifact_compliance_state": "COMPLIANT",
+ "previous_running": false,
+ "previous_git_commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933",
+ "previous_trail_name": "exercises-start-points-41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6",
+ "previous_template_reference_name": "exercises-start-points"
},
- "commit_lead_time": 2938402.0,
+ "commit_lead_time": -78217.0,
"artifact_compliance_in_flow": true,
"flow_reasons_for_non_compliance": []
},
{
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "spooler-6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd",
- "template_reference_name": "spooler",
- "git_commit": "ed3c81d7322bb8058615095f4aab28c147c53933",
- "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933",
+ "trail_name": "exercises-start-points-bc1dae4e8ce742e027a6dc6b68e44c65361cd48e588483d3fd9f6d6911a84c31",
+ "template_reference_name": "exercises-start-points",
+ "git_commit": "30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/30111f180ac4e3611cdbd7d805381a0bb9f53cff",
"git_commit_info": {
- "sha1": "ed3c81d7322bb8058615095f4aab28c147c53933",
- "message": "Unpack one pinned commit instead of fetching each file\n\n a0c005a moved these two jobs' files to RUNNER_TEMP, which kept them out of\n the caller's checkout but left the prefix repeated at every use. The paths\n are absolute because the run steps stay in the checkout, where the Kosli\n CLI reads git commit information from the working directory, so the prefix\n cannot be dropped. It can only be folded into the definitions, and a\n literal /tmp folds where runner.temp does not: the runner context is\n unavailable in workflow- and job-level env blocks. Both jobs are pinned to\n ubuntu-latest, one fresh VM per job, so /tmp neither collides nor persists.\n\n The files also arrived as five separate fetches of main, one per file, so a\n push landing mid-run could pair a rego policy with params from a different\n commit. find-snyk-vulns already checks this repo out, so it now publishes\n the SHA it resolved, and the two later jobs unpack that exact commit as a\n single tarball. One run reads one version.\n\n An env-var's prefix now says where its file came from: SNYK_SCANNING_ from\n this repo at the pinned commit, CALLER_ from the repo being scanned, TMP_\n produced by the run. That split is worth naming because only one of these\n files is the caller's, and it is the one .snyk that the decision attests\n against. Two bare filenames survive because an artifact name cannot\n contain a '/'.\n\n fetch-url-to-file now has exactly one caller, for that .snyk.",
- "author": "JonJagger ",
+ "sha1": "30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "message": "Merge pull request #4 from cyber-dojo/take-both-age-instants-from-one-trail-read\n\nMeasure a vuln's age on the Kosli server's clock alone",
+ "author": "Jon Jagger ",
"branch": "main",
- "timestamp": 1787661987.0,
- "url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933"
+ "timestamp": 1788945655.0,
+ "url": "https://github.com/cyber-dojo/snyk-scanning/commit/30111f180ac4e3611cdbd7d805381a0bb9f53cff"
},
- "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd?artifact_id=24059058-ed02-4061-a4d1-b9a66269",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/bc1dae4e8ce742e027a6dc6b68e44c65361cd48e588483d3fd9f6d6911a84c31?artifact_id=229c5332-8a88-4699-8e97-58d01849",
"flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact",
- "deployment_diff": null,
- "commit_lead_time": 593409.0,
+ "deployment_diff": {
+ "diff_url": "https://github.com/cyber-dojo/snyk-scanning/compare/00c479764cb9eca038fdaaaef108672d0bb0ed26...30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "previous_git_commit": "00c479764cb9eca038fdaaaef108672d0bb0ed26",
+ "previous_fingerprint": "f00aa234bebafb1980dced29626750f84a6fe6c9c50f6a90167e4d8e6511a8a8",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/exercises-start-points:b8e5cbf@sha256:f00aa234bebafb1980dced29626750f84a6fe6c9c50f6a90167e4d8e6511a8a8",
+ "previous_artifact_compliance_state": "COMPLIANT",
+ "previous_running": false,
+ "previous_git_commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/00c479764cb9eca038fdaaaef108672d0bb0ed26",
+ "previous_trail_name": "exercises-start-points-f00aa234bebafb1980dced29626750f84a6fe6c9c50f6a90167e4d8e6511a8a8",
+ "previous_template_reference_name": "exercises-start-points"
+ },
+ "commit_lead_time": -78217.0,
"artifact_compliance_in_flow": true,
"flow_reasons_for_non_compliance": []
}
],
"ecs_context": {
- "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/61175d755bb64c5bba7130b854325414",
+ "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/ff1e094fcede458dbf94d752ad3bee18",
"cluster_name": null,
"service_name": null
}
},
{
- "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:ff9f292@sha256:2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f",
+ "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/spooler:5e4740c@sha256:9ef10b455706661560fee5c47aebcb592f0936fdaa1db1a0ad06590c6f39b86f",
"compliant": true,
"deployments": [],
"policy_decisions": [
{
- "policy_version": 3,
+ "policy_version": 2,
"status": "COMPLIANT",
"rule_evaluations": [
{
@@ -6145,24 +6159,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "dashboard-ci",
- "trail_name": "ff9f292e809801d35246183988b7812826bc2760",
+ "flow_name": "spooler-ci",
+ "trail_name": "5e4740c1146988f2e90cd2eb2fc6de0f8603e20a",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "dashboard-2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "spooler-9ef10b455706661560fee5c47aebcb592f0936fdaa1db1a0ad06590c6f39b86f",
"artifact_status": null
}
},
@@ -6170,7 +6184,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "dashboard-2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f",
+ "trail_name": "spooler-9ef10b455706661560fee5c47aebcb592f0936fdaa1db1a0ad06590c6f39b86f",
"artifact_status": null
}
}
@@ -6190,24 +6204,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "dashboard-ci",
- "trail_name": "ff9f292e809801d35246183988b7812826bc2760",
+ "flow_name": "spooler-ci",
+ "trail_name": "5e4740c1146988f2e90cd2eb2fc6de0f8603e20a",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "dashboard-2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "spooler-9ef10b455706661560fee5c47aebcb592f0936fdaa1db1a0ad06590c6f39b86f",
"artifact_status": "COMPLIANT"
}
},
@@ -6215,7 +6229,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "dashboard-2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f",
+ "trail_name": "spooler-9ef10b455706661560fee5c47aebcb592f0936fdaa1db1a0ad06590c6f39b86f",
"artifact_status": "COMPLIANT"
}
}
@@ -6226,10 +6240,10 @@ kosli get snapshot aws-prod --output=json
"type": "attestation",
"definition": {
"if": {
- "text": "flow.tags.kind == \"build\""
+ "text": "flow.name == \"production-promotion\""
},
- "name": "*",
- "type": "pull_request",
+ "name": "snyk-scan",
+ "type": "decision",
"must_be_compliant": true,
"for_control": null
}
@@ -6238,26 +6252,26 @@ kosli get snapshot aws-prod --output=json
"ignored": false,
"resolutions": [
{
- "type": "rule_satisfied",
+ "type": "rule_not_applicable",
"context": {
- "flow_name": "dashboard-ci",
- "trail_name": "ff9f292e809801d35246183988b7812826bc2760",
+ "flow_name": "spooler-ci",
+ "trail_name": "5e4740c1146988f2e90cd2eb2fc6de0f8603e20a",
"artifact_status": null
}
},
{
- "type": "rule_not_applicable",
+ "type": "rule_satisfied",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "dashboard-2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "spooler-9ef10b455706661560fee5c47aebcb592f0936fdaa1db1a0ad06590c6f39b86f",
"artifact_status": null
}
},
@@ -6265,14 +6279,14 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "dashboard-2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f",
+ "trail_name": "spooler-9ef10b455706661560fee5c47aebcb592f0936fdaa1db1a0ad06590c6f39b86f",
"artifact_status": null
}
}
]
}
],
- "policy_name": "pull-request"
+ "policy_name": "production-promotion"
},
{
"policy_version": 3,
@@ -6292,24 +6306,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_satisfied",
"context": {
- "flow_name": "dashboard-ci",
- "trail_name": "ff9f292e809801d35246183988b7812826bc2760",
+ "flow_name": "spooler-ci",
+ "trail_name": "5e4740c1146988f2e90cd2eb2fc6de0f8603e20a",
"artifact_status": null
}
},
{
"type": "rule_satisfied",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "dashboard-2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_satisfied",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "spooler-9ef10b455706661560fee5c47aebcb592f0936fdaa1db1a0ad06590c6f39b86f",
"artifact_status": null
}
},
@@ -6317,7 +6331,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_satisfied",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "dashboard-2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f",
+ "trail_name": "spooler-9ef10b455706661560fee5c47aebcb592f0936fdaa1db1a0ad06590c6f39b86f",
"artifact_status": null
}
}
@@ -6337,24 +6351,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "dashboard-ci",
- "trail_name": "ff9f292e809801d35246183988b7812826bc2760",
+ "flow_name": "spooler-ci",
+ "trail_name": "5e4740c1146988f2e90cd2eb2fc6de0f8603e20a",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "dashboard-2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "spooler-9ef10b455706661560fee5c47aebcb592f0936fdaa1db1a0ad06590c6f39b86f",
"artifact_status": "COMPLIANT"
}
},
@@ -6362,7 +6376,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "dashboard-2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f",
+ "trail_name": "spooler-9ef10b455706661560fee5c47aebcb592f0936fdaa1db1a0ad06590c6f39b86f",
"artifact_status": "COMPLIANT"
}
}
@@ -6387,8 +6401,8 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_satisfied",
"context": {
- "flow_name": "dashboard-ci",
- "trail_name": "ff9f292e809801d35246183988b7812826bc2760",
+ "flow_name": "spooler-ci",
+ "trail_name": "5e4740c1146988f2e90cd2eb2fc6de0f8603e20a",
"artifact_status": null,
"for_control": "SDLC-CTRL-0002"
}
@@ -6396,8 +6410,8 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "dashboard-2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null,
"for_control": "SDLC-CTRL-0002"
}
@@ -6405,8 +6419,8 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "spooler-9ef10b455706661560fee5c47aebcb592f0936fdaa1db1a0ad06590c6f39b86f",
"artifact_status": null,
"for_control": "SDLC-CTRL-0002"
}
@@ -6415,7 +6429,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "dashboard-2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f",
+ "trail_name": "spooler-9ef10b455706661560fee5c47aebcb592f0936fdaa1db1a0ad06590c6f39b86f",
"artifact_status": null,
"for_control": "SDLC-CTRL-0002"
}
@@ -6426,7 +6440,7 @@ kosli get snapshot aws-prod --output=json
"policy_name": "provenance"
},
{
- "policy_version": 4,
+ "policy_version": 3,
"status": "COMPLIANT",
"rule_evaluations": [
{
@@ -6443,24 +6457,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "dashboard-ci",
- "trail_name": "ff9f292e809801d35246183988b7812826bc2760",
+ "flow_name": "spooler-ci",
+ "trail_name": "5e4740c1146988f2e90cd2eb2fc6de0f8603e20a",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "dashboard-2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "spooler-9ef10b455706661560fee5c47aebcb592f0936fdaa1db1a0ad06590c6f39b86f",
"artifact_status": null
}
},
@@ -6468,7 +6482,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "dashboard-2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f",
+ "trail_name": "spooler-9ef10b455706661560fee5c47aebcb592f0936fdaa1db1a0ad06590c6f39b86f",
"artifact_status": null
}
}
@@ -6488,24 +6502,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "dashboard-ci",
- "trail_name": "ff9f292e809801d35246183988b7812826bc2760",
+ "flow_name": "spooler-ci",
+ "trail_name": "5e4740c1146988f2e90cd2eb2fc6de0f8603e20a",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "dashboard-2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "spooler-9ef10b455706661560fee5c47aebcb592f0936fdaa1db1a0ad06590c6f39b86f",
"artifact_status": "COMPLIANT"
}
},
@@ -6513,7 +6527,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "dashboard-2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f",
+ "trail_name": "spooler-9ef10b455706661560fee5c47aebcb592f0936fdaa1db1a0ad06590c6f39b86f",
"artifact_status": "COMPLIANT"
}
}
@@ -6524,60 +6538,56 @@ kosli get snapshot aws-prod --output=json
"type": "attestation",
"definition": {
"if": {
- "text": "flow.name == \"snyk-aws-prod-per-artifact\""
+ "text": "flow.tags.kind == \"build\""
},
- "name": "snyk-container-scan",
- "type": "decision",
+ "name": "*",
+ "type": "pull_request",
"must_be_compliant": true,
- "for_control": "SDLC-CTRL-0022"
+ "for_control": null
}
},
"satisfied": true,
"ignored": false,
"resolutions": [
{
- "type": "rule_not_applicable",
+ "type": "rule_satisfied",
"context": {
- "flow_name": "dashboard-ci",
- "trail_name": "ff9f292e809801d35246183988b7812826bc2760",
- "artifact_status": null,
- "for_control": "SDLC-CTRL-0022"
+ "flow_name": "spooler-ci",
+ "trail_name": "5e4740c1146988f2e90cd2eb2fc6de0f8603e20a",
+ "artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "dashboard-2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f",
- "artifact_status": null,
- "for_control": "SDLC-CTRL-0022"
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
+ "artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
- "artifact_status": null,
- "for_control": "SDLC-CTRL-0022"
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "spooler-9ef10b455706661560fee5c47aebcb592f0936fdaa1db1a0ad06590c6f39b86f",
+ "artifact_status": null
}
},
{
- "type": "rule_satisfied",
+ "type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "dashboard-2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f",
- "artifact_status": null,
- "for_control": "SDLC-CTRL-0022"
+ "trail_name": "spooler-9ef10b455706661560fee5c47aebcb592f0936fdaa1db1a0ad06590c6f39b86f",
+ "artifact_status": null
}
}
]
}
],
- "policy_name": "snyk-scan-aws-prod"
+ "policy_name": "pull-request"
},
{
- "policy_version": 2,
+ "policy_version": 4,
"status": "COMPLIANT",
"rule_evaluations": [
{
@@ -6594,24 +6604,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "dashboard-ci",
- "trail_name": "ff9f292e809801d35246183988b7812826bc2760",
+ "flow_name": "spooler-ci",
+ "trail_name": "5e4740c1146988f2e90cd2eb2fc6de0f8603e20a",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "dashboard-2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "spooler-9ef10b455706661560fee5c47aebcb592f0936fdaa1db1a0ad06590c6f39b86f",
"artifact_status": null
}
},
@@ -6619,7 +6629,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "dashboard-2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f",
+ "trail_name": "spooler-9ef10b455706661560fee5c47aebcb592f0936fdaa1db1a0ad06590c6f39b86f",
"artifact_status": null
}
}
@@ -6639,24 +6649,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "dashboard-ci",
- "trail_name": "ff9f292e809801d35246183988b7812826bc2760",
+ "flow_name": "spooler-ci",
+ "trail_name": "5e4740c1146988f2e90cd2eb2fc6de0f8603e20a",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "dashboard-2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "spooler-9ef10b455706661560fee5c47aebcb592f0936fdaa1db1a0ad06590c6f39b86f",
"artifact_status": "COMPLIANT"
}
},
@@ -6664,7 +6674,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "dashboard-2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f",
+ "trail_name": "spooler-9ef10b455706661560fee5c47aebcb592f0936fdaa1db1a0ad06590c6f39b86f",
"artifact_status": "COMPLIANT"
}
}
@@ -6675,12 +6685,12 @@ kosli get snapshot aws-prod --output=json
"type": "attestation",
"definition": {
"if": {
- "text": "flow.name == \"production-promotion\""
+ "text": "flow.name == \"snyk-aws-prod-per-artifact\""
},
- "name": "snyk-scan",
+ "name": "snyk-container-scan",
"type": "decision",
"must_be_compliant": true,
- "for_control": null
+ "for_control": "SDLC-CTRL-0022"
}
},
"satisfied": true,
@@ -6689,39 +6699,43 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "dashboard-ci",
- "trail_name": "ff9f292e809801d35246183988b7812826bc2760",
- "artifact_status": null
+ "flow_name": "spooler-ci",
+ "trail_name": "5e4740c1146988f2e90cd2eb2fc6de0f8603e20a",
+ "artifact_status": null,
+ "for_control": "SDLC-CTRL-0022"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "dashboard-2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f",
- "artifact_status": null
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
+ "artifact_status": null,
+ "for_control": "SDLC-CTRL-0022"
}
},
{
- "type": "rule_satisfied",
+ "type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
- "artifact_status": null
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "spooler-9ef10b455706661560fee5c47aebcb592f0936fdaa1db1a0ad06590c6f39b86f",
+ "artifact_status": null,
+ "for_control": "SDLC-CTRL-0022"
}
},
{
- "type": "rule_not_applicable",
+ "type": "rule_satisfied",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "dashboard-2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f",
- "artifact_status": null
+ "trail_name": "spooler-9ef10b455706661560fee5c47aebcb592f0936fdaa1db1a0ad06590c6f39b86f",
+ "artifact_status": null,
+ "for_control": "SDLC-CTRL-0022"
}
}
]
}
],
- "policy_name": "production-promotion"
+ "policy_name": "snyk-scan-aws-prod"
},
{
"policy_version": 2,
@@ -6741,24 +6755,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "dashboard-ci",
- "trail_name": "ff9f292e809801d35246183988b7812826bc2760",
+ "flow_name": "spooler-ci",
+ "trail_name": "5e4740c1146988f2e90cd2eb2fc6de0f8603e20a",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "dashboard-2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "spooler-9ef10b455706661560fee5c47aebcb592f0936fdaa1db1a0ad06590c6f39b86f",
"artifact_status": null
}
},
@@ -6766,7 +6780,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "dashboard-2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f",
+ "trail_name": "spooler-9ef10b455706661560fee5c47aebcb592f0936fdaa1db1a0ad06590c6f39b86f",
"artifact_status": null
}
}
@@ -6792,24 +6806,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "dashboard-ci",
- "trail_name": "ff9f292e809801d35246183988b7812826bc2760",
+ "flow_name": "spooler-ci",
+ "trail_name": "5e4740c1146988f2e90cd2eb2fc6de0f8603e20a",
"artifact_status": "COMPLIANT"
}
},
{
- "type": "rule_not_applicable",
+ "type": "rule_satisfied",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "dashboard-2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
{
- "type": "rule_satisfied",
+ "type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "spooler-9ef10b455706661560fee5c47aebcb592f0936fdaa1db1a0ad06590c6f39b86f",
"artifact_status": "COMPLIANT"
}
},
@@ -6817,7 +6831,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_satisfied",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "dashboard-2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f",
+ "trail_name": "spooler-9ef10b455706661560fee5c47aebcb592f0936fdaa1db1a0ad06590c6f39b86f",
"artifact_status": "COMPLIANT"
}
}
@@ -6828,100 +6842,69 @@ kosli get snapshot aws-prod --output=json
}
],
"reasons_for_incompliance": [],
- "fingerprint": "2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f",
+ "fingerprint": "9ef10b455706661560fee5c47aebcb592f0936fdaa1db1a0ad06590c6f39b86f",
"creationTimestamp": [
- 1788255387
+ 1789022819
],
"pods": null,
"annotation": {
- "type": "updated-provenance",
+ "type": "unchanged",
"was": 1,
"now": 1
},
- "flow_name": "dashboard-ci",
- "git_commit": "ff9f292e809801d35246183988b7812826bc2760",
- "commit_url": "https://github.com/cyber-dojo/dashboard/commit/ff9f292e809801d35246183988b7812826bc2760",
- "html_url": "https://app.kosli.com/cyber-dojo/flows/dashboard-ci/artifacts/2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f?artifact_id=aa6c0c1d-2d5d-4c98-9f9d-1160dd2f",
- "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/dashboard-ci",
+ "flow_name": "spooler-ci",
+ "git_commit": "5e4740c1146988f2e90cd2eb2fc6de0f8603e20a",
+ "commit_url": "https://github.com/cyber-dojo/spooler/commit/5e4740c1146988f2e90cd2eb2fc6de0f8603e20a",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/spooler-ci/artifacts/9ef10b455706661560fee5c47aebcb592f0936fdaa1db1a0ad06590c6f39b86f?artifact_id=df1b0b8e-7efa-415e-860d-9123aa27",
+ "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/spooler-ci",
"deployment_diff": {
- "diff_url": "https://github.com/cyber-dojo/dashboard/compare/2b300f450f72006f6a9000aaf9cd04485f1e8095...ff9f292e809801d35246183988b7812826bc2760",
- "previous_git_commit": "2b300f450f72006f6a9000aaf9cd04485f1e8095",
- "previous_fingerprint": "1342e060fb8af6c34d004e474544d1472b940250eb0084f206c3d7bf9d78e2b5",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:2b300f4@sha256:1342e060fb8af6c34d004e474544d1472b940250eb0084f206c3d7bf9d78e2b5",
+ "diff_url": "https://github.com/cyber-dojo/spooler/compare/90c8d982d2ff8c4950f7aca4d0a1e9d29ac74e1f...5e4740c1146988f2e90cd2eb2fc6de0f8603e20a",
+ "previous_git_commit": "90c8d982d2ff8c4950f7aca4d0a1e9d29ac74e1f",
+ "previous_fingerprint": "6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/spooler:90c8d98@sha256:6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd",
"previous_artifact_compliance_state": "COMPLIANT",
"previous_running": false,
- "previous_git_commit_url": "https://github.com/cyber-dojo/dashboard/commit/2b300f450f72006f6a9000aaf9cd04485f1e8095",
- "previous_trail_name": "2b300f450f72006f6a9000aaf9cd04485f1e8095",
- "previous_template_reference_name": "dashboard"
+ "previous_git_commit_url": "https://github.com/cyber-dojo/spooler/commit/90c8d982d2ff8c4950f7aca4d0a1e9d29ac74e1f",
+ "previous_trail_name": "90c8d982d2ff8c4950f7aca4d0a1e9d29ac74e1f",
+ "previous_template_reference_name": "spooler"
},
- "commit_lead_time": 413493.0,
+ "commit_lead_time": 89076.0,
"flows": [
{
- "flow_name": "dashboard-ci",
- "trail_name": "ff9f292e809801d35246183988b7812826bc2760",
- "template_reference_name": "dashboard",
- "git_commit": "ff9f292e809801d35246183988b7812826bc2760",
- "commit_url": "https://github.com/cyber-dojo/dashboard/commit/ff9f292e809801d35246183988b7812826bc2760",
+ "flow_name": "spooler-ci",
+ "trail_name": "5e4740c1146988f2e90cd2eb2fc6de0f8603e20a",
+ "template_reference_name": "spooler",
+ "git_commit": "5e4740c1146988f2e90cd2eb2fc6de0f8603e20a",
+ "commit_url": "https://github.com/cyber-dojo/spooler/commit/5e4740c1146988f2e90cd2eb2fc6de0f8603e20a",
"git_commit_info": {
- "sha1": "ff9f292e809801d35246183988b7812826bc2760",
- "message": "Use the simplecov 1.x spellings (#436)\n\n* Use the simplecov 1.x spellings\n\n The base image now carries simplecov 1.1.1 where it carried 0.21.2.\n Four spellings are deprecated there, each announcing itself on stderr on\n every run:\n\n add_group -> group\n add_filter -> skip\n # :nocov: -> # simplecov:disable / # simplecov:enable\n\n and the formatter reopened SimpleCov::Formatter::JSONFormatter to\n redefine format, which in 1.1.1 makes ruby -w report the redefinition.\n It is now CoverageMetricsFormatter, named for the coverage_metrics.json\n it writes. It never needed to be that class: what it produces is\n per-group totals, not the per-file shape the shipped formatter writes,\n so it was only borrowing the name to make itself win.\n\n The three :nocov: pairs are all in source, guarding the post methods\n that only the fixture scripts in test/scripts reach. The comment in\n create_v2_dashboard.rb naming those markers is renamed with them, so it\n still points at something that exists.\n\n source/client/Dockerfile was pinned to cyberdojo/sinatra-base:759c4e9 on\n Docker Hub, while everything else moved to ghcr.io. The automated\n base-image PR only rewrites the Dockerfile at the repo root, so that pin\n had gone unbumped long enough to be several ruby versions behind. It now\n names the same image as the root.\n\n That bump is unverified. The client tests cannot run: the client asks\n for hostname 'server' (source/client/code/external_dashboard.rb) and\n docker-compose.yml calls that service 'dashboard', so its healthcheck\n never resolves. Nothing noticed because no workflow runs them and the\n Makefile has no client target. Left as found, since dashboard is due to\n be merged into web.\n\n The group block parameter goes from the to path while passing.\n\n Coverage is unchanged: test.lines.total 644, code.lines.total 460,\n nothing missed in either.\n\n* Keep the simplecov markers inside the line length, and let rubocop cache\n\n simplecov:disable is seven characters longer than the :nocov: it\n replaced, which took three comment lines past 80 and failed the lint the\n previous commit had no reason to run. The prose those markers carried\n moves to its own line above them, so the marker line is only a marker\n and its length no longer depends on what is being explained.\n\n Separately, rubocop_lint.sh runs the container as the invoking uid,\n which has no entry in the container's /etc/passwd. HOME falls back to /,\n rubocop cannot create /.cache, and it says so once per file inspected -\n 35 lines of it here, and enough to bury the offences it is reporting.\n Naming a writable HOME lets it cache and say nothing.\n\n Neither changes what is inspected: 35 files, no offences, and the tests\n still report 50 runs with coverage on its limits at 644 and 460.",
+ "sha1": "5e4740c1146988f2e90cd2eb2fc6de0f8603e20a",
+ "message": "Merge pull request #20 from cyber-dojo/update-base-image-949edc1\n\nMerge update-base-image into main",
"author": "Jon Jagger ",
"branch": "",
- "timestamp": 1787841894.0,
- "url": "https://github.com/cyber-dojo/dashboard/commit/ff9f292e809801d35246183988b7812826bc2760"
- },
- "html_url": "https://app.kosli.com/cyber-dojo/flows/dashboard-ci/artifacts/2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f?artifact_id=aa6c0c1d-2d5d-4c98-9f9d-1160dd2f",
- "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/dashboard-ci",
- "deployment_diff": {
- "diff_url": "https://github.com/cyber-dojo/dashboard/compare/2b300f450f72006f6a9000aaf9cd04485f1e8095...ff9f292e809801d35246183988b7812826bc2760",
- "previous_git_commit": "2b300f450f72006f6a9000aaf9cd04485f1e8095",
- "previous_fingerprint": "1342e060fb8af6c34d004e474544d1472b940250eb0084f206c3d7bf9d78e2b5",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:2b300f4@sha256:1342e060fb8af6c34d004e474544d1472b940250eb0084f206c3d7bf9d78e2b5",
- "previous_artifact_compliance_state": "COMPLIANT",
- "previous_running": false,
- "previous_git_commit_url": "https://github.com/cyber-dojo/dashboard/commit/2b300f450f72006f6a9000aaf9cd04485f1e8095",
- "previous_trail_name": "2b300f450f72006f6a9000aaf9cd04485f1e8095",
- "previous_template_reference_name": "dashboard"
- },
- "commit_lead_time": 413493.0,
- "artifact_compliance_in_flow": true,
- "flow_reasons_for_non_compliance": []
- },
- {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "dashboard-2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f",
- "template_reference_name": "dashboard",
- "git_commit": "ed3c81d7322bb8058615095f4aab28c147c53933",
- "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933",
- "git_commit_info": {
- "sha1": "ed3c81d7322bb8058615095f4aab28c147c53933",
- "message": "Unpack one pinned commit instead of fetching each file\n\n a0c005a moved these two jobs' files to RUNNER_TEMP, which kept them out of\n the caller's checkout but left the prefix repeated at every use. The paths\n are absolute because the run steps stay in the checkout, where the Kosli\n CLI reads git commit information from the working directory, so the prefix\n cannot be dropped. It can only be folded into the definitions, and a\n literal /tmp folds where runner.temp does not: the runner context is\n unavailable in workflow- and job-level env blocks. Both jobs are pinned to\n ubuntu-latest, one fresh VM per job, so /tmp neither collides nor persists.\n\n The files also arrived as five separate fetches of main, one per file, so a\n push landing mid-run could pair a rego policy with params from a different\n commit. find-snyk-vulns already checks this repo out, so it now publishes\n the SHA it resolved, and the two later jobs unpack that exact commit as a\n single tarball. One run reads one version.\n\n An env-var's prefix now says where its file came from: SNYK_SCANNING_ from\n this repo at the pinned commit, CALLER_ from the repo being scanned, TMP_\n produced by the run. That split is worth naming because only one of these\n files is the caller's, and it is the one .snyk that the decision attests\n against. Two bare filenames survive because an artifact name cannot\n contain a '/'.\n\n fetch-url-to-file now has exactly one caller, for that .snyk.",
- "author": "JonJagger ",
- "branch": "main",
- "timestamp": 1787661987.0,
- "url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933"
+ "timestamp": 1788778354.0,
+ "url": "https://github.com/cyber-dojo/spooler/commit/5e4740c1146988f2e90cd2eb2fc6de0f8603e20a"
},
- "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact/artifacts/2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f?artifact_id=07236a18-f9e6-440c-8163-89b30638",
- "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/spooler-ci/artifacts/9ef10b455706661560fee5c47aebcb592f0936fdaa1db1a0ad06590c6f39b86f?artifact_id=df1b0b8e-7efa-415e-860d-9123aa27",
+ "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/spooler-ci",
"deployment_diff": {
- "diff_url": "https://github.com/cyber-dojo/snyk-scanning/compare/c0666c020044ac5b5181999ec153db1e7f6cd303...ed3c81d7322bb8058615095f4aab28c147c53933",
- "previous_git_commit": "c0666c020044ac5b5181999ec153db1e7f6cd303",
- "previous_fingerprint": "1342e060fb8af6c34d004e474544d1472b940250eb0084f206c3d7bf9d78e2b5",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:2b300f4@sha256:1342e060fb8af6c34d004e474544d1472b940250eb0084f206c3d7bf9d78e2b5",
+ "diff_url": "https://github.com/cyber-dojo/spooler/compare/90c8d982d2ff8c4950f7aca4d0a1e9d29ac74e1f...5e4740c1146988f2e90cd2eb2fc6de0f8603e20a",
+ "previous_git_commit": "90c8d982d2ff8c4950f7aca4d0a1e9d29ac74e1f",
+ "previous_fingerprint": "6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/spooler:90c8d98@sha256:6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd",
"previous_artifact_compliance_state": "COMPLIANT",
"previous_running": false,
- "previous_git_commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/c0666c020044ac5b5181999ec153db1e7f6cd303",
- "previous_trail_name": "dashboard-1342e060fb8af6c34d004e474544d1472b940250eb0084f206c3d7bf9d78e2b5",
- "previous_template_reference_name": "dashboard"
+ "previous_git_commit_url": "https://github.com/cyber-dojo/spooler/commit/90c8d982d2ff8c4950f7aca4d0a1e9d29ac74e1f",
+ "previous_trail_name": "90c8d982d2ff8c4950f7aca4d0a1e9d29ac74e1f",
+ "previous_template_reference_name": "spooler"
},
- "commit_lead_time": 593400.0,
+ "commit_lead_time": 89076.0,
"artifact_compliance_in_flow": true,
"flow_reasons_for_non_compliance": []
},
{
"flow_name": "production-promotion",
- "trail_name": "promote-all-34",
- "template_reference_name": "dashboard",
+ "trail_name": "promote-all-35",
+ "template_reference_name": "spooler",
"git_commit": "7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
"commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
"git_commit_info": {
@@ -6932,68 +6915,89 @@ kosli get snapshot aws-prod --output=json
"timestamp": 1785316994.0,
"url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584"
},
- "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f?artifact_id=7d30bba6-9d58-403b-b6d8-efe3ebad",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/9ef10b455706661560fee5c47aebcb592f0936fdaa1db1a0ad06590c6f39b86f?artifact_id=fc124522-a5f3-403a-a97c-75cedd2a",
"flow_html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion",
"deployment_diff": {
"diff_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/compare/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584...7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
"previous_git_commit": "7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
- "previous_fingerprint": "1342e060fb8af6c34d004e474544d1472b940250eb0084f206c3d7bf9d78e2b5",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:2b300f4@sha256:1342e060fb8af6c34d004e474544d1472b940250eb0084f206c3d7bf9d78e2b5",
+ "previous_fingerprint": "6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/spooler:90c8d98@sha256:6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd",
"previous_artifact_compliance_state": "COMPLIANT",
"previous_running": false,
"previous_git_commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
- "previous_trail_name": "promote-all-33",
- "previous_template_reference_name": "dashboard"
+ "previous_trail_name": "promote-all-34",
+ "previous_template_reference_name": "spooler"
},
- "commit_lead_time": 2938393.0,
+ "commit_lead_time": 3550436.0,
"artifact_compliance_in_flow": true,
"flow_reasons_for_non_compliance": []
},
{
- "flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "dashboard-2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f",
- "template_reference_name": "dashboard",
- "git_commit": "ed3c81d7322bb8058615095f4aab28c147c53933",
- "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "spooler-9ef10b455706661560fee5c47aebcb592f0936fdaa1db1a0ad06590c6f39b86f",
+ "template_reference_name": "spooler",
+ "git_commit": "30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/30111f180ac4e3611cdbd7d805381a0bb9f53cff",
"git_commit_info": {
- "sha1": "ed3c81d7322bb8058615095f4aab28c147c53933",
- "message": "Unpack one pinned commit instead of fetching each file\n\n a0c005a moved these two jobs' files to RUNNER_TEMP, which kept them out of\n the caller's checkout but left the prefix repeated at every use. The paths\n are absolute because the run steps stay in the checkout, where the Kosli\n CLI reads git commit information from the working directory, so the prefix\n cannot be dropped. It can only be folded into the definitions, and a\n literal /tmp folds where runner.temp does not: the runner context is\n unavailable in workflow- and job-level env blocks. Both jobs are pinned to\n ubuntu-latest, one fresh VM per job, so /tmp neither collides nor persists.\n\n The files also arrived as five separate fetches of main, one per file, so a\n push landing mid-run could pair a rego policy with params from a different\n commit. find-snyk-vulns already checks this repo out, so it now publishes\n the SHA it resolved, and the two later jobs unpack that exact commit as a\n single tarball. One run reads one version.\n\n An env-var's prefix now says where its file came from: SNYK_SCANNING_ from\n this repo at the pinned commit, CALLER_ from the repo being scanned, TMP_\n produced by the run. That split is worth naming because only one of these\n files is the caller's, and it is the one .snyk that the decision attests\n against. Two bare filenames survive because an artifact name cannot\n contain a '/'.\n\n fetch-url-to-file now has exactly one caller, for that .snyk.",
- "author": "JonJagger ",
+ "sha1": "30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "message": "Merge pull request #4 from cyber-dojo/take-both-age-instants-from-one-trail-read\n\nMeasure a vuln's age on the Kosli server's clock alone",
+ "author": "Jon Jagger ",
"branch": "main",
- "timestamp": 1787661987.0,
- "url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933"
+ "timestamp": 1788945655.0,
+ "url": "https://github.com/cyber-dojo/snyk-scanning/commit/30111f180ac4e3611cdbd7d805381a0bb9f53cff"
},
- "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f?artifact_id=95ee902d-ed5f-49ac-a772-a1ea0d78",
- "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact/artifacts/9ef10b455706661560fee5c47aebcb592f0936fdaa1db1a0ad06590c6f39b86f?artifact_id=3b1ea734-03a4-471e-b9f5-f1125b84",
+ "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact",
"deployment_diff": {
- "diff_url": "https://github.com/cyber-dojo/snyk-scanning/compare/00c479764cb9eca038fdaaaef108672d0bb0ed26...ed3c81d7322bb8058615095f4aab28c147c53933",
- "previous_git_commit": "00c479764cb9eca038fdaaaef108672d0bb0ed26",
- "previous_fingerprint": "45513c642ba191052bde056d56eeba8b06b0346eb444ec0008bd59bc0581bb8c",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:87f560f@sha256:45513c642ba191052bde056d56eeba8b06b0346eb444ec0008bd59bc0581bb8c",
+ "diff_url": "https://github.com/cyber-dojo/snyk-scanning/compare/ed3c81d7322bb8058615095f4aab28c147c53933...30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "previous_git_commit": "ed3c81d7322bb8058615095f4aab28c147c53933",
+ "previous_fingerprint": "6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/spooler:90c8d98@sha256:6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd",
"previous_artifact_compliance_state": "COMPLIANT",
"previous_running": false,
- "previous_git_commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/00c479764cb9eca038fdaaaef108672d0bb0ed26",
- "previous_trail_name": "dashboard-45513c642ba191052bde056d56eeba8b06b0346eb444ec0008bd59bc0581bb8c",
- "previous_template_reference_name": "dashboard"
+ "previous_git_commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933",
+ "previous_trail_name": "spooler-6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd",
+ "previous_template_reference_name": "spooler"
+ },
+ "commit_lead_time": -78225.0,
+ "artifact_compliance_in_flow": true,
+ "flow_reasons_for_non_compliance": []
+ },
+ {
+ "flow_name": "snyk-aws-prod-per-artifact",
+ "trail_name": "spooler-9ef10b455706661560fee5c47aebcb592f0936fdaa1db1a0ad06590c6f39b86f",
+ "template_reference_name": "spooler",
+ "git_commit": "30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "git_commit_info": {
+ "sha1": "30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "message": "Merge pull request #4 from cyber-dojo/take-both-age-instants-from-one-trail-read\n\nMeasure a vuln's age on the Kosli server's clock alone",
+ "author": "Jon Jagger ",
+ "branch": "main",
+ "timestamp": 1788945655.0,
+ "url": "https://github.com/cyber-dojo/snyk-scanning/commit/30111f180ac4e3611cdbd7d805381a0bb9f53cff"
},
- "commit_lead_time": 593400.0,
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/9ef10b455706661560fee5c47aebcb592f0936fdaa1db1a0ad06590c6f39b86f?artifact_id=83a46bf5-cc72-4dee-9f55-00c021c1",
+ "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact",
+ "deployment_diff": null,
+ "commit_lead_time": -78225.0,
"artifact_compliance_in_flow": true,
"flow_reasons_for_non_compliance": []
}
],
"ecs_context": {
- "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/f61e1822d26f4aa0a417417c3436c569",
+ "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/116f5564a14740798d58d386b69889b7",
"cluster_name": null,
"service_name": null
}
},
{
- "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/web:cbe481c@sha256:36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc",
+ "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/custom-start-points:86c839e@sha256:ed0b8b8cc04f951bc7224d792c9c68010388f9ebf3c45d9a5d375be3a68d0b2e",
"compliant": true,
"deployments": [],
"policy_decisions": [
{
- "policy_version": 3,
+ "policy_version": 2,
"status": "COMPLIANT",
"rule_evaluations": [
{
@@ -7010,8 +7014,8 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "web-ci",
- "trail_name": "cbe481c4b842f897e4e9e411cd78461a3a12a334",
+ "flow_name": "custom-start-points-ci",
+ "trail_name": "86c839ee588f393d84a6b9c036478d10bb6f2a2d",
"artifact_status": null
}
},
@@ -7019,7 +7023,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "production-promotion",
- "trail_name": "promotion-one-161",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
@@ -7027,7 +7031,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "web-36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc",
+ "trail_name": "custom-start-points-ed0b8b8cc04f951bc7224d792c9c68010388f9ebf3c45d9a5d375be3a68d0b2e",
"artifact_status": null
}
},
@@ -7035,7 +7039,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "web-36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc",
+ "trail_name": "custom-start-points-ed0b8b8cc04f951bc7224d792c9c68010388f9ebf3c45d9a5d375be3a68d0b2e",
"artifact_status": null
}
}
@@ -7055,8 +7059,8 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "web-ci",
- "trail_name": "cbe481c4b842f897e4e9e411cd78461a3a12a334",
+ "flow_name": "custom-start-points-ci",
+ "trail_name": "86c839ee588f393d84a6b9c036478d10bb6f2a2d",
"artifact_status": "COMPLIANT"
}
},
@@ -7064,7 +7068,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "production-promotion",
- "trail_name": "promotion-one-161",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
@@ -7072,7 +7076,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "web-36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc",
+ "trail_name": "custom-start-points-ed0b8b8cc04f951bc7224d792c9c68010388f9ebf3c45d9a5d375be3a68d0b2e",
"artifact_status": "COMPLIANT"
}
},
@@ -7080,7 +7084,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "web-36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc",
+ "trail_name": "custom-start-points-ed0b8b8cc04f951bc7224d792c9c68010388f9ebf3c45d9a5d375be3a68d0b2e",
"artifact_status": "COMPLIANT"
}
}
@@ -7091,10 +7095,10 @@ kosli get snapshot aws-prod --output=json
"type": "attestation",
"definition": {
"if": {
- "text": "flow.tags.kind == \"build\""
+ "text": "flow.name == \"production-promotion\""
},
- "name": "*",
- "type": "pull_request",
+ "name": "snyk-scan",
+ "type": "decision",
"must_be_compliant": true,
"for_control": null
}
@@ -7103,18 +7107,18 @@ kosli get snapshot aws-prod --output=json
"ignored": false,
"resolutions": [
{
- "type": "rule_satisfied",
+ "type": "rule_not_applicable",
"context": {
- "flow_name": "web-ci",
- "trail_name": "cbe481c4b842f897e4e9e411cd78461a3a12a334",
+ "flow_name": "custom-start-points-ci",
+ "trail_name": "86c839ee588f393d84a6b9c036478d10bb6f2a2d",
"artifact_status": null
}
},
{
- "type": "rule_not_applicable",
+ "type": "rule_satisfied",
"context": {
"flow_name": "production-promotion",
- "trail_name": "promotion-one-161",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
@@ -7122,7 +7126,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "web-36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc",
+ "trail_name": "custom-start-points-ed0b8b8cc04f951bc7224d792c9c68010388f9ebf3c45d9a5d375be3a68d0b2e",
"artifact_status": null
}
},
@@ -7130,14 +7134,14 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "web-36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc",
+ "trail_name": "custom-start-points-ed0b8b8cc04f951bc7224d792c9c68010388f9ebf3c45d9a5d375be3a68d0b2e",
"artifact_status": null
}
}
]
}
],
- "policy_name": "pull-request"
+ "policy_name": "production-promotion"
},
{
"policy_version": 3,
@@ -7157,8 +7161,8 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_satisfied",
"context": {
- "flow_name": "web-ci",
- "trail_name": "cbe481c4b842f897e4e9e411cd78461a3a12a334",
+ "flow_name": "custom-start-points-ci",
+ "trail_name": "86c839ee588f393d84a6b9c036478d10bb6f2a2d",
"artifact_status": null
}
},
@@ -7166,7 +7170,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_satisfied",
"context": {
"flow_name": "production-promotion",
- "trail_name": "promotion-one-161",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
@@ -7174,7 +7178,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_satisfied",
"context": {
"flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "web-36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc",
+ "trail_name": "custom-start-points-ed0b8b8cc04f951bc7224d792c9c68010388f9ebf3c45d9a5d375be3a68d0b2e",
"artifact_status": null
}
},
@@ -7182,7 +7186,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_satisfied",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "web-36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc",
+ "trail_name": "custom-start-points-ed0b8b8cc04f951bc7224d792c9c68010388f9ebf3c45d9a5d375be3a68d0b2e",
"artifact_status": null
}
}
@@ -7202,8 +7206,8 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "web-ci",
- "trail_name": "cbe481c4b842f897e4e9e411cd78461a3a12a334",
+ "flow_name": "custom-start-points-ci",
+ "trail_name": "86c839ee588f393d84a6b9c036478d10bb6f2a2d",
"artifact_status": "COMPLIANT"
}
},
@@ -7211,7 +7215,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "production-promotion",
- "trail_name": "promotion-one-161",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
@@ -7219,7 +7223,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "web-36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc",
+ "trail_name": "custom-start-points-ed0b8b8cc04f951bc7224d792c9c68010388f9ebf3c45d9a5d375be3a68d0b2e",
"artifact_status": "COMPLIANT"
}
},
@@ -7227,7 +7231,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "web-36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc",
+ "trail_name": "custom-start-points-ed0b8b8cc04f951bc7224d792c9c68010388f9ebf3c45d9a5d375be3a68d0b2e",
"artifact_status": "COMPLIANT"
}
}
@@ -7252,8 +7256,8 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_satisfied",
"context": {
- "flow_name": "web-ci",
- "trail_name": "cbe481c4b842f897e4e9e411cd78461a3a12a334",
+ "flow_name": "custom-start-points-ci",
+ "trail_name": "86c839ee588f393d84a6b9c036478d10bb6f2a2d",
"artifact_status": null,
"for_control": "SDLC-CTRL-0002"
}
@@ -7262,7 +7266,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "production-promotion",
- "trail_name": "promotion-one-161",
+ "trail_name": "promote-all-35",
"artifact_status": null,
"for_control": "SDLC-CTRL-0002"
}
@@ -7271,7 +7275,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "web-36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc",
+ "trail_name": "custom-start-points-ed0b8b8cc04f951bc7224d792c9c68010388f9ebf3c45d9a5d375be3a68d0b2e",
"artifact_status": null,
"for_control": "SDLC-CTRL-0002"
}
@@ -7280,7 +7284,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "web-36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc",
+ "trail_name": "custom-start-points-ed0b8b8cc04f951bc7224d792c9c68010388f9ebf3c45d9a5d375be3a68d0b2e",
"artifact_status": null,
"for_control": "SDLC-CTRL-0002"
}
@@ -7291,7 +7295,7 @@ kosli get snapshot aws-prod --output=json
"policy_name": "provenance"
},
{
- "policy_version": 4,
+ "policy_version": 3,
"status": "COMPLIANT",
"rule_evaluations": [
{
@@ -7308,8 +7312,8 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "web-ci",
- "trail_name": "cbe481c4b842f897e4e9e411cd78461a3a12a334",
+ "flow_name": "custom-start-points-ci",
+ "trail_name": "86c839ee588f393d84a6b9c036478d10bb6f2a2d",
"artifact_status": null
}
},
@@ -7317,7 +7321,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "production-promotion",
- "trail_name": "promotion-one-161",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
@@ -7325,7 +7329,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "web-36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc",
+ "trail_name": "custom-start-points-ed0b8b8cc04f951bc7224d792c9c68010388f9ebf3c45d9a5d375be3a68d0b2e",
"artifact_status": null
}
},
@@ -7333,7 +7337,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "web-36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc",
+ "trail_name": "custom-start-points-ed0b8b8cc04f951bc7224d792c9c68010388f9ebf3c45d9a5d375be3a68d0b2e",
"artifact_status": null
}
}
@@ -7353,8 +7357,8 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "web-ci",
- "trail_name": "cbe481c4b842f897e4e9e411cd78461a3a12a334",
+ "flow_name": "custom-start-points-ci",
+ "trail_name": "86c839ee588f393d84a6b9c036478d10bb6f2a2d",
"artifact_status": "COMPLIANT"
}
},
@@ -7362,7 +7366,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "production-promotion",
- "trail_name": "promotion-one-161",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
@@ -7370,7 +7374,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "web-36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc",
+ "trail_name": "custom-start-points-ed0b8b8cc04f951bc7224d792c9c68010388f9ebf3c45d9a5d375be3a68d0b2e",
"artifact_status": "COMPLIANT"
}
},
@@ -7378,7 +7382,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "web-36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc",
+ "trail_name": "custom-start-points-ed0b8b8cc04f951bc7224d792c9c68010388f9ebf3c45d9a5d375be3a68d0b2e",
"artifact_status": "COMPLIANT"
}
}
@@ -7389,60 +7393,56 @@ kosli get snapshot aws-prod --output=json
"type": "attestation",
"definition": {
"if": {
- "text": "flow.name == \"snyk-aws-prod-per-artifact\""
+ "text": "flow.tags.kind == \"build\""
},
- "name": "snyk-container-scan",
- "type": "decision",
+ "name": "*",
+ "type": "pull_request",
"must_be_compliant": true,
- "for_control": "SDLC-CTRL-0022"
+ "for_control": null
}
},
"satisfied": true,
"ignored": false,
"resolutions": [
{
- "type": "rule_not_applicable",
+ "type": "rule_satisfied",
"context": {
- "flow_name": "web-ci",
- "trail_name": "cbe481c4b842f897e4e9e411cd78461a3a12a334",
- "artifact_status": null,
- "for_control": "SDLC-CTRL-0022"
+ "flow_name": "custom-start-points-ci",
+ "trail_name": "86c839ee588f393d84a6b9c036478d10bb6f2a2d",
+ "artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
"flow_name": "production-promotion",
- "trail_name": "promotion-one-161",
- "artifact_status": null,
- "for_control": "SDLC-CTRL-0022"
+ "trail_name": "promote-all-35",
+ "artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "web-36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc",
- "artifact_status": null,
- "for_control": "SDLC-CTRL-0022"
+ "trail_name": "custom-start-points-ed0b8b8cc04f951bc7224d792c9c68010388f9ebf3c45d9a5d375be3a68d0b2e",
+ "artifact_status": null
}
},
{
- "type": "rule_satisfied",
+ "type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "web-36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc",
- "artifact_status": null,
- "for_control": "SDLC-CTRL-0022"
+ "trail_name": "custom-start-points-ed0b8b8cc04f951bc7224d792c9c68010388f9ebf3c45d9a5d375be3a68d0b2e",
+ "artifact_status": null
}
}
]
}
],
- "policy_name": "snyk-scan-aws-prod"
+ "policy_name": "pull-request"
},
{
- "policy_version": 2,
+ "policy_version": 4,
"status": "COMPLIANT",
"rule_evaluations": [
{
@@ -7459,8 +7459,8 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "web-ci",
- "trail_name": "cbe481c4b842f897e4e9e411cd78461a3a12a334",
+ "flow_name": "custom-start-points-ci",
+ "trail_name": "86c839ee588f393d84a6b9c036478d10bb6f2a2d",
"artifact_status": null
}
},
@@ -7468,7 +7468,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "production-promotion",
- "trail_name": "promotion-one-161",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
@@ -7476,7 +7476,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "web-36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc",
+ "trail_name": "custom-start-points-ed0b8b8cc04f951bc7224d792c9c68010388f9ebf3c45d9a5d375be3a68d0b2e",
"artifact_status": null
}
},
@@ -7484,7 +7484,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "web-36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc",
+ "trail_name": "custom-start-points-ed0b8b8cc04f951bc7224d792c9c68010388f9ebf3c45d9a5d375be3a68d0b2e",
"artifact_status": null
}
}
@@ -7504,8 +7504,8 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "web-ci",
- "trail_name": "cbe481c4b842f897e4e9e411cd78461a3a12a334",
+ "flow_name": "custom-start-points-ci",
+ "trail_name": "86c839ee588f393d84a6b9c036478d10bb6f2a2d",
"artifact_status": "COMPLIANT"
}
},
@@ -7513,7 +7513,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "production-promotion",
- "trail_name": "promotion-one-161",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
@@ -7521,7 +7521,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "web-36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc",
+ "trail_name": "custom-start-points-ed0b8b8cc04f951bc7224d792c9c68010388f9ebf3c45d9a5d375be3a68d0b2e",
"artifact_status": "COMPLIANT"
}
},
@@ -7529,7 +7529,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "web-36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc",
+ "trail_name": "custom-start-points-ed0b8b8cc04f951bc7224d792c9c68010388f9ebf3c45d9a5d375be3a68d0b2e",
"artifact_status": "COMPLIANT"
}
}
@@ -7540,12 +7540,12 @@ kosli get snapshot aws-prod --output=json
"type": "attestation",
"definition": {
"if": {
- "text": "flow.name == \"production-promotion\""
+ "text": "flow.name == \"snyk-aws-prod-per-artifact\""
},
- "name": "snyk-scan",
+ "name": "snyk-container-scan",
"type": "decision",
"must_be_compliant": true,
- "for_control": null
+ "for_control": "SDLC-CTRL-0022"
}
},
"satisfied": true,
@@ -7554,39 +7554,43 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "web-ci",
- "trail_name": "cbe481c4b842f897e4e9e411cd78461a3a12a334",
- "artifact_status": null
+ "flow_name": "custom-start-points-ci",
+ "trail_name": "86c839ee588f393d84a6b9c036478d10bb6f2a2d",
+ "artifact_status": null,
+ "for_control": "SDLC-CTRL-0022"
}
},
{
- "type": "rule_satisfied",
+ "type": "rule_not_applicable",
"context": {
"flow_name": "production-promotion",
- "trail_name": "promotion-one-161",
- "artifact_status": null
+ "trail_name": "promote-all-35",
+ "artifact_status": null,
+ "for_control": "SDLC-CTRL-0022"
}
},
{
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "web-36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc",
- "artifact_status": null
+ "trail_name": "custom-start-points-ed0b8b8cc04f951bc7224d792c9c68010388f9ebf3c45d9a5d375be3a68d0b2e",
+ "artifact_status": null,
+ "for_control": "SDLC-CTRL-0022"
}
},
{
- "type": "rule_not_applicable",
+ "type": "rule_satisfied",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "web-36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc",
- "artifact_status": null
+ "trail_name": "custom-start-points-ed0b8b8cc04f951bc7224d792c9c68010388f9ebf3c45d9a5d375be3a68d0b2e",
+ "artifact_status": null,
+ "for_control": "SDLC-CTRL-0022"
}
}
]
}
],
- "policy_name": "production-promotion"
+ "policy_name": "snyk-scan-aws-prod"
},
{
"policy_version": 2,
@@ -7606,8 +7610,8 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "web-ci",
- "trail_name": "cbe481c4b842f897e4e9e411cd78461a3a12a334",
+ "flow_name": "custom-start-points-ci",
+ "trail_name": "86c839ee588f393d84a6b9c036478d10bb6f2a2d",
"artifact_status": null
}
},
@@ -7615,7 +7619,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "production-promotion",
- "trail_name": "promotion-one-161",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
@@ -7623,7 +7627,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "web-36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc",
+ "trail_name": "custom-start-points-ed0b8b8cc04f951bc7224d792c9c68010388f9ebf3c45d9a5d375be3a68d0b2e",
"artifact_status": null
}
},
@@ -7631,7 +7635,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "web-36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc",
+ "trail_name": "custom-start-points-ed0b8b8cc04f951bc7224d792c9c68010388f9ebf3c45d9a5d375be3a68d0b2e",
"artifact_status": null
}
}
@@ -7657,8 +7661,8 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "web-ci",
- "trail_name": "cbe481c4b842f897e4e9e411cd78461a3a12a334",
+ "flow_name": "custom-start-points-ci",
+ "trail_name": "86c839ee588f393d84a6b9c036478d10bb6f2a2d",
"artifact_status": "COMPLIANT"
}
},
@@ -7666,7 +7670,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_satisfied",
"context": {
"flow_name": "production-promotion",
- "trail_name": "promotion-one-161",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
@@ -7674,7 +7678,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "web-36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc",
+ "trail_name": "custom-start-points-ed0b8b8cc04f951bc7224d792c9c68010388f9ebf3c45d9a5d375be3a68d0b2e",
"artifact_status": "COMPLIANT"
}
},
@@ -7682,7 +7686,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_satisfied",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "web-36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc",
+ "trail_name": "custom-start-points-ed0b8b8cc04f951bc7224d792c9c68010388f9ebf3c45d9a5d375be3a68d0b2e",
"artifact_status": "COMPLIANT"
}
}
@@ -7693,71 +7697,69 @@ kosli get snapshot aws-prod --output=json
}
],
"reasons_for_incompliance": [],
- "fingerprint": "36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc",
+ "fingerprint": "ed0b8b8cc04f951bc7224d792c9c68010388f9ebf3c45d9a5d375be3a68d0b2e",
"creationTimestamp": [
- 1788074885,
- 1788074889,
- 1788074889
+ 1789022818
],
"pods": null,
"annotation": {
- "type": "updated-provenance",
- "was": 3,
- "now": 3
+ "type": "unchanged",
+ "was": 1,
+ "now": 1
},
- "flow_name": "web-ci",
- "git_commit": "cbe481c4b842f897e4e9e411cd78461a3a12a334",
- "commit_url": "https://github.com/cyber-dojo/web/commit/cbe481c4b842f897e4e9e411cd78461a3a12a334",
- "html_url": "https://app.kosli.com/cyber-dojo/flows/web-ci/artifacts/36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc?artifact_id=41957e62-eaad-48d2-af40-46879efb",
- "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/web-ci",
+ "flow_name": "custom-start-points-ci",
+ "git_commit": "86c839ee588f393d84a6b9c036478d10bb6f2a2d",
+ "commit_url": "https://github.com/cyber-dojo/custom-start-points/commit/86c839ee588f393d84a6b9c036478d10bb6f2a2d",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/custom-start-points-ci/artifacts/ed0b8b8cc04f951bc7224d792c9c68010388f9ebf3c45d9a5d375be3a68d0b2e?artifact_id=60d0583d-4388-4a0a-925d-5b47d9a8",
+ "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/custom-start-points-ci",
"deployment_diff": {
- "diff_url": "https://github.com/cyber-dojo/web/compare/5e4b9873df93525c041c386c06e0ab8fc36b6f33...cbe481c4b842f897e4e9e411cd78461a3a12a334",
- "previous_git_commit": "5e4b9873df93525c041c386c06e0ab8fc36b6f33",
- "previous_fingerprint": "6f394e0dccb59b852fa52ffa114fde8452280054c84de05b0627b1b0f18657bd",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/web:5e4b987@sha256:6f394e0dccb59b852fa52ffa114fde8452280054c84de05b0627b1b0f18657bd",
+ "diff_url": "https://github.com/cyber-dojo/custom-start-points/compare/b12a5c9b17023462d13e81381a69c7ef05f84dc2...86c839ee588f393d84a6b9c036478d10bb6f2a2d",
+ "previous_git_commit": "b12a5c9b17023462d13e81381a69c7ef05f84dc2",
+ "previous_fingerprint": "34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/custom-start-points:b12a5c9@sha256:34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09",
"previous_artifact_compliance_state": "COMPLIANT",
"previous_running": false,
- "previous_git_commit_url": "https://github.com/cyber-dojo/web/commit/5e4b9873df93525c041c386c06e0ab8fc36b6f33",
- "previous_trail_name": "5e4b9873df93525c041c386c06e0ab8fc36b6f33",
- "previous_template_reference_name": "web"
+ "previous_git_commit_url": "https://github.com/cyber-dojo/custom-start-points/commit/b12a5c9b17023462d13e81381a69c7ef05f84dc2",
+ "previous_trail_name": "b12a5c9b17023462d13e81381a69c7ef05f84dc2",
+ "previous_template_reference_name": "custom-start-points"
},
- "commit_lead_time": 169904.0,
+ "commit_lead_time": 6352.0,
"flows": [
{
- "flow_name": "web-ci",
- "trail_name": "cbe481c4b842f897e4e9e411cd78461a3a12a334",
- "template_reference_name": "web",
- "git_commit": "cbe481c4b842f897e4e9e411cd78461a3a12a334",
- "commit_url": "https://github.com/cyber-dojo/web/commit/cbe481c4b842f897e4e9e411cd78461a3a12a334",
+ "flow_name": "custom-start-points-ci",
+ "trail_name": "86c839ee588f393d84a6b9c036478d10bb6f2a2d",
+ "template_reference_name": "custom-start-points",
+ "git_commit": "86c839ee588f393d84a6b9c036478d10bb6f2a2d",
+ "commit_url": "https://github.com/cyber-dojo/custom-start-points/commit/86c839ee588f393d84a6b9c036478d10bb6f2a2d",
"git_commit_info": {
- "sha1": "cbe481c4b842f897e4e9e411cd78461a3a12a334",
- "message": "Match the siblings on test-output buffering and frozen-string comments (#424)\n\nThe tee in the server test run makes ruby block-buffer stdout, so the\n progress dots only appeared once the whole run had finished. saver sets\n $stdout.sync in its own -e script for exactly this reason; web now does\n too.\n\n Every repo already freezes literals globally via RUBYOPT in up.sh, so a\n per-file magic comment buys nothing. runner, creator and differ exclude\n source/ from the cop, while web grandfathered each file in the todo\n instead, which is why the cop fired on the one newly added file.\n Excluding source/ matches them and leaves the todo holding only the bin/\n script that RUBYOPT does not reach.",
+ "sha1": "86c839ee588f393d84a6b9c036478d10bb6f2a2d",
+ "message": "Merge pull request #145 from cyber-dojo/update-base-image-a2388c1\n\nMerge update-base-image into main",
"author": "Jon Jagger ",
"branch": "",
- "timestamp": 1787904981.0,
- "url": "https://github.com/cyber-dojo/web/commit/cbe481c4b842f897e4e9e411cd78461a3a12a334"
+ "timestamp": 1788860905.0,
+ "url": "https://github.com/cyber-dojo/custom-start-points/commit/86c839ee588f393d84a6b9c036478d10bb6f2a2d"
},
- "html_url": "https://app.kosli.com/cyber-dojo/flows/web-ci/artifacts/36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc?artifact_id=41957e62-eaad-48d2-af40-46879efb",
- "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/web-ci",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/custom-start-points-ci/artifacts/ed0b8b8cc04f951bc7224d792c9c68010388f9ebf3c45d9a5d375be3a68d0b2e?artifact_id=60d0583d-4388-4a0a-925d-5b47d9a8",
+ "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/custom-start-points-ci",
"deployment_diff": {
- "diff_url": "https://github.com/cyber-dojo/web/compare/5e4b9873df93525c041c386c06e0ab8fc36b6f33...cbe481c4b842f897e4e9e411cd78461a3a12a334",
- "previous_git_commit": "5e4b9873df93525c041c386c06e0ab8fc36b6f33",
- "previous_fingerprint": "6f394e0dccb59b852fa52ffa114fde8452280054c84de05b0627b1b0f18657bd",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/web:5e4b987@sha256:6f394e0dccb59b852fa52ffa114fde8452280054c84de05b0627b1b0f18657bd",
+ "diff_url": "https://github.com/cyber-dojo/custom-start-points/compare/b12a5c9b17023462d13e81381a69c7ef05f84dc2...86c839ee588f393d84a6b9c036478d10bb6f2a2d",
+ "previous_git_commit": "b12a5c9b17023462d13e81381a69c7ef05f84dc2",
+ "previous_fingerprint": "34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/custom-start-points:b12a5c9@sha256:34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09",
"previous_artifact_compliance_state": "COMPLIANT",
"previous_running": false,
- "previous_git_commit_url": "https://github.com/cyber-dojo/web/commit/5e4b9873df93525c041c386c06e0ab8fc36b6f33",
- "previous_trail_name": "5e4b9873df93525c041c386c06e0ab8fc36b6f33",
- "previous_template_reference_name": "web"
+ "previous_git_commit_url": "https://github.com/cyber-dojo/custom-start-points/commit/b12a5c9b17023462d13e81381a69c7ef05f84dc2",
+ "previous_trail_name": "b12a5c9b17023462d13e81381a69c7ef05f84dc2",
+ "previous_template_reference_name": "custom-start-points"
},
- "commit_lead_time": 169904.0,
+ "commit_lead_time": 6352.0,
"artifact_compliance_in_flow": true,
"flow_reasons_for_non_compliance": []
},
{
"flow_name": "production-promotion",
- "trail_name": "promotion-one-161",
- "template_reference_name": "web",
+ "trail_name": "promote-all-35",
+ "template_reference_name": "custom-start-points",
"git_commit": "7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
"commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
"git_commit_info": {
@@ -7768,99 +7770,99 @@ kosli get snapshot aws-prod --output=json
"timestamp": 1785316994.0,
"url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584"
},
- "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc?artifact_id=3e754e79-8e4c-486a-ad94-0b183d32",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/ed0b8b8cc04f951bc7224d792c9c68010388f9ebf3c45d9a5d375be3a68d0b2e?artifact_id=6fd3fc32-bd41-4fcc-8a19-d45ae3ba",
"flow_html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion",
"deployment_diff": {
"diff_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/compare/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584...7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
"previous_git_commit": "7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
- "previous_fingerprint": "6f394e0dccb59b852fa52ffa114fde8452280054c84de05b0627b1b0f18657bd",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/web:5e4b987@sha256:6f394e0dccb59b852fa52ffa114fde8452280054c84de05b0627b1b0f18657bd",
+ "previous_fingerprint": "34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/custom-start-points:b12a5c9@sha256:34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09",
"previous_artifact_compliance_state": "COMPLIANT",
"previous_running": false,
"previous_git_commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
- "previous_trail_name": "promote-all-33",
- "previous_template_reference_name": "web"
+ "previous_trail_name": "promote-all-34",
+ "previous_template_reference_name": "custom-start-points"
},
- "commit_lead_time": 2757891.0,
+ "commit_lead_time": 3550263.0,
"artifact_compliance_in_flow": true,
"flow_reasons_for_non_compliance": []
},
{
"flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "web-36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc",
- "template_reference_name": "web",
- "git_commit": "ed3c81d7322bb8058615095f4aab28c147c53933",
- "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933",
+ "trail_name": "custom-start-points-ed0b8b8cc04f951bc7224d792c9c68010388f9ebf3c45d9a5d375be3a68d0b2e",
+ "template_reference_name": "custom-start-points",
+ "git_commit": "30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/30111f180ac4e3611cdbd7d805381a0bb9f53cff",
"git_commit_info": {
- "sha1": "ed3c81d7322bb8058615095f4aab28c147c53933",
- "message": "Unpack one pinned commit instead of fetching each file\n\n a0c005a moved these two jobs' files to RUNNER_TEMP, which kept them out of\n the caller's checkout but left the prefix repeated at every use. The paths\n are absolute because the run steps stay in the checkout, where the Kosli\n CLI reads git commit information from the working directory, so the prefix\n cannot be dropped. It can only be folded into the definitions, and a\n literal /tmp folds where runner.temp does not: the runner context is\n unavailable in workflow- and job-level env blocks. Both jobs are pinned to\n ubuntu-latest, one fresh VM per job, so /tmp neither collides nor persists.\n\n The files also arrived as five separate fetches of main, one per file, so a\n push landing mid-run could pair a rego policy with params from a different\n commit. find-snyk-vulns already checks this repo out, so it now publishes\n the SHA it resolved, and the two later jobs unpack that exact commit as a\n single tarball. One run reads one version.\n\n An env-var's prefix now says where its file came from: SNYK_SCANNING_ from\n this repo at the pinned commit, CALLER_ from the repo being scanned, TMP_\n produced by the run. That split is worth naming because only one of these\n files is the caller's, and it is the one .snyk that the decision attests\n against. Two bare filenames survive because an artifact name cannot\n contain a '/'.\n\n fetch-url-to-file now has exactly one caller, for that .snyk.",
- "author": "JonJagger ",
+ "sha1": "30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "message": "Merge pull request #4 from cyber-dojo/take-both-age-instants-from-one-trail-read\n\nMeasure a vuln's age on the Kosli server's clock alone",
+ "author": "Jon Jagger ",
"branch": "main",
- "timestamp": 1787661987.0,
- "url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933"
+ "timestamp": 1788945655.0,
+ "url": "https://github.com/cyber-dojo/snyk-scanning/commit/30111f180ac4e3611cdbd7d805381a0bb9f53cff"
},
- "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact/artifacts/36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc?artifact_id=14a0333a-7e59-454f-bcfa-f4c2e34b",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact/artifacts/ed0b8b8cc04f951bc7224d792c9c68010388f9ebf3c45d9a5d375be3a68d0b2e?artifact_id=2a293eb4-5c35-4b7c-92d5-b32ca0ba",
"flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact",
"deployment_diff": {
- "diff_url": "https://github.com/cyber-dojo/snyk-scanning/compare/c0666c020044ac5b5181999ec153db1e7f6cd303...ed3c81d7322bb8058615095f4aab28c147c53933",
- "previous_git_commit": "c0666c020044ac5b5181999ec153db1e7f6cd303",
- "previous_fingerprint": "6f394e0dccb59b852fa52ffa114fde8452280054c84de05b0627b1b0f18657bd",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/web:5e4b987@sha256:6f394e0dccb59b852fa52ffa114fde8452280054c84de05b0627b1b0f18657bd",
+ "diff_url": "https://github.com/cyber-dojo/snyk-scanning/compare/ed3c81d7322bb8058615095f4aab28c147c53933...30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "previous_git_commit": "ed3c81d7322bb8058615095f4aab28c147c53933",
+ "previous_fingerprint": "34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/custom-start-points:b12a5c9@sha256:34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09",
"previous_artifact_compliance_state": "COMPLIANT",
"previous_running": false,
- "previous_git_commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/c0666c020044ac5b5181999ec153db1e7f6cd303",
- "previous_trail_name": "web-6f394e0dccb59b852fa52ffa114fde8452280054c84de05b0627b1b0f18657bd",
- "previous_template_reference_name": "web"
+ "previous_git_commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933",
+ "previous_trail_name": "custom-start-points-34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09",
+ "previous_template_reference_name": "custom-start-points"
},
- "commit_lead_time": 412898.0,
+ "commit_lead_time": -78398.0,
"artifact_compliance_in_flow": true,
"flow_reasons_for_non_compliance": []
},
{
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "web-36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc",
- "template_reference_name": "web",
- "git_commit": "ed3c81d7322bb8058615095f4aab28c147c53933",
- "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933",
+ "trail_name": "custom-start-points-ed0b8b8cc04f951bc7224d792c9c68010388f9ebf3c45d9a5d375be3a68d0b2e",
+ "template_reference_name": "custom-start-points",
+ "git_commit": "30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/30111f180ac4e3611cdbd7d805381a0bb9f53cff",
"git_commit_info": {
- "sha1": "ed3c81d7322bb8058615095f4aab28c147c53933",
- "message": "Unpack one pinned commit instead of fetching each file\n\n a0c005a moved these two jobs' files to RUNNER_TEMP, which kept them out of\n the caller's checkout but left the prefix repeated at every use. The paths\n are absolute because the run steps stay in the checkout, where the Kosli\n CLI reads git commit information from the working directory, so the prefix\n cannot be dropped. It can only be folded into the definitions, and a\n literal /tmp folds where runner.temp does not: the runner context is\n unavailable in workflow- and job-level env blocks. Both jobs are pinned to\n ubuntu-latest, one fresh VM per job, so /tmp neither collides nor persists.\n\n The files also arrived as five separate fetches of main, one per file, so a\n push landing mid-run could pair a rego policy with params from a different\n commit. find-snyk-vulns already checks this repo out, so it now publishes\n the SHA it resolved, and the two later jobs unpack that exact commit as a\n single tarball. One run reads one version.\n\n An env-var's prefix now says where its file came from: SNYK_SCANNING_ from\n this repo at the pinned commit, CALLER_ from the repo being scanned, TMP_\n produced by the run. That split is worth naming because only one of these\n files is the caller's, and it is the one .snyk that the decision attests\n against. Two bare filenames survive because an artifact name cannot\n contain a '/'.\n\n fetch-url-to-file now has exactly one caller, for that .snyk.",
- "author": "JonJagger ",
+ "sha1": "30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "message": "Merge pull request #4 from cyber-dojo/take-both-age-instants-from-one-trail-read\n\nMeasure a vuln's age on the Kosli server's clock alone",
+ "author": "Jon Jagger ",
"branch": "main",
- "timestamp": 1787661987.0,
- "url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933"
+ "timestamp": 1788945655.0,
+ "url": "https://github.com/cyber-dojo/snyk-scanning/commit/30111f180ac4e3611cdbd7d805381a0bb9f53cff"
},
- "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc?artifact_id=d7711381-757a-437c-9c77-55bcfd5f",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/ed0b8b8cc04f951bc7224d792c9c68010388f9ebf3c45d9a5d375be3a68d0b2e?artifact_id=635c66c3-625f-44dd-98b0-d9906fa7",
"flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact",
"deployment_diff": {
- "diff_url": "https://github.com/cyber-dojo/snyk-scanning/compare/00c479764cb9eca038fdaaaef108672d0bb0ed26...ed3c81d7322bb8058615095f4aab28c147c53933",
+ "diff_url": "https://github.com/cyber-dojo/snyk-scanning/compare/00c479764cb9eca038fdaaaef108672d0bb0ed26...30111f180ac4e3611cdbd7d805381a0bb9f53cff",
"previous_git_commit": "00c479764cb9eca038fdaaaef108672d0bb0ed26",
- "previous_fingerprint": "29c69c2f30f261a26fff4793fd8ae44b9081def1d4bcaaa27b0fef0501d949e4",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/web:f66cc5c@sha256:29c69c2f30f261a26fff4793fd8ae44b9081def1d4bcaaa27b0fef0501d949e4",
+ "previous_fingerprint": "b4448ca68a0926e4a7a800f5b101b63e9c2f38e1caaebb7e929d992763570928",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/custom-start-points:6b5c159@sha256:b4448ca68a0926e4a7a800f5b101b63e9c2f38e1caaebb7e929d992763570928",
"previous_artifact_compliance_state": "COMPLIANT",
"previous_running": false,
"previous_git_commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/00c479764cb9eca038fdaaaef108672d0bb0ed26",
- "previous_trail_name": "web-29c69c2f30f261a26fff4793fd8ae44b9081def1d4bcaaa27b0fef0501d949e4",
- "previous_template_reference_name": "web"
+ "previous_trail_name": "custom-start-points-b4448ca68a0926e4a7a800f5b101b63e9c2f38e1caaebb7e929d992763570928",
+ "previous_template_reference_name": "custom-start-points"
},
- "commit_lead_time": 412898.0,
+ "commit_lead_time": -78398.0,
"artifact_compliance_in_flow": true,
"flow_reasons_for_non_compliance": []
}
],
"ecs_context": {
- "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/d68ae20a684745c6ba576ab68a51dd25",
+ "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/02b628eb907844948b7633bd9a68db2c",
"cluster_name": null,
"service_name": null
}
},
{
- "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:ca65b67@sha256:a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638",
+ "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/saver:7c4708f@sha256:9cfef3281fc531a3c5a5a00ed8a67256e1b954b5271b03936808623960afebfc",
"compliant": true,
"deployments": [],
"policy_decisions": [
{
- "policy_version": 3,
+ "policy_version": 2,
"status": "COMPLIANT",
"rule_evaluations": [
{
@@ -7877,24 +7879,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "runner-ci",
- "trail_name": "ca65b67c3e311fbdd2435609fdb6f8a5479f66f9",
+ "flow_name": "saver-ci",
+ "trail_name": "7c4708f675a7717376529273ec32d08cd93f5c26",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "runner-a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "saver-9cfef3281fc531a3c5a5a00ed8a67256e1b954b5271b03936808623960afebfc",
"artifact_status": null
}
},
@@ -7902,7 +7904,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "runner-a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638",
+ "trail_name": "saver-9cfef3281fc531a3c5a5a00ed8a67256e1b954b5271b03936808623960afebfc",
"artifact_status": null
}
}
@@ -7922,24 +7924,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "runner-ci",
- "trail_name": "ca65b67c3e311fbdd2435609fdb6f8a5479f66f9",
+ "flow_name": "saver-ci",
+ "trail_name": "7c4708f675a7717376529273ec32d08cd93f5c26",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "runner-a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "saver-9cfef3281fc531a3c5a5a00ed8a67256e1b954b5271b03936808623960afebfc",
"artifact_status": "COMPLIANT"
}
},
@@ -7947,7 +7949,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "runner-a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638",
+ "trail_name": "saver-9cfef3281fc531a3c5a5a00ed8a67256e1b954b5271b03936808623960afebfc",
"artifact_status": "COMPLIANT"
}
}
@@ -7958,10 +7960,10 @@ kosli get snapshot aws-prod --output=json
"type": "attestation",
"definition": {
"if": {
- "text": "flow.tags.kind == \"build\""
+ "text": "flow.name == \"production-promotion\""
},
- "name": "*",
- "type": "pull_request",
+ "name": "snyk-scan",
+ "type": "decision",
"must_be_compliant": true,
"for_control": null
}
@@ -7970,26 +7972,26 @@ kosli get snapshot aws-prod --output=json
"ignored": false,
"resolutions": [
{
- "type": "rule_satisfied",
+ "type": "rule_not_applicable",
"context": {
- "flow_name": "runner-ci",
- "trail_name": "ca65b67c3e311fbdd2435609fdb6f8a5479f66f9",
+ "flow_name": "saver-ci",
+ "trail_name": "7c4708f675a7717376529273ec32d08cd93f5c26",
"artifact_status": null
}
},
{
- "type": "rule_not_applicable",
+ "type": "rule_satisfied",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "runner-a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "saver-9cfef3281fc531a3c5a5a00ed8a67256e1b954b5271b03936808623960afebfc",
"artifact_status": null
}
},
@@ -7997,14 +7999,14 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "runner-a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638",
+ "trail_name": "saver-9cfef3281fc531a3c5a5a00ed8a67256e1b954b5271b03936808623960afebfc",
"artifact_status": null
}
}
]
}
],
- "policy_name": "pull-request"
+ "policy_name": "production-promotion"
},
{
"policy_version": 3,
@@ -8024,24 +8026,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_satisfied",
"context": {
- "flow_name": "runner-ci",
- "trail_name": "ca65b67c3e311fbdd2435609fdb6f8a5479f66f9",
+ "flow_name": "saver-ci",
+ "trail_name": "7c4708f675a7717376529273ec32d08cd93f5c26",
"artifact_status": null
}
},
{
"type": "rule_satisfied",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "runner-a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_satisfied",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "saver-9cfef3281fc531a3c5a5a00ed8a67256e1b954b5271b03936808623960afebfc",
"artifact_status": null
}
},
@@ -8049,7 +8051,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_satisfied",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "runner-a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638",
+ "trail_name": "saver-9cfef3281fc531a3c5a5a00ed8a67256e1b954b5271b03936808623960afebfc",
"artifact_status": null
}
}
@@ -8069,24 +8071,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "runner-ci",
- "trail_name": "ca65b67c3e311fbdd2435609fdb6f8a5479f66f9",
+ "flow_name": "saver-ci",
+ "trail_name": "7c4708f675a7717376529273ec32d08cd93f5c26",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "runner-a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "saver-9cfef3281fc531a3c5a5a00ed8a67256e1b954b5271b03936808623960afebfc",
"artifact_status": "COMPLIANT"
}
},
@@ -8094,7 +8096,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "runner-a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638",
+ "trail_name": "saver-9cfef3281fc531a3c5a5a00ed8a67256e1b954b5271b03936808623960afebfc",
"artifact_status": "COMPLIANT"
}
}
@@ -8119,8 +8121,8 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_satisfied",
"context": {
- "flow_name": "runner-ci",
- "trail_name": "ca65b67c3e311fbdd2435609fdb6f8a5479f66f9",
+ "flow_name": "saver-ci",
+ "trail_name": "7c4708f675a7717376529273ec32d08cd93f5c26",
"artifact_status": null,
"for_control": "SDLC-CTRL-0002"
}
@@ -8128,8 +8130,8 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "runner-a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null,
"for_control": "SDLC-CTRL-0002"
}
@@ -8137,8 +8139,8 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "saver-9cfef3281fc531a3c5a5a00ed8a67256e1b954b5271b03936808623960afebfc",
"artifact_status": null,
"for_control": "SDLC-CTRL-0002"
}
@@ -8147,7 +8149,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "runner-a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638",
+ "trail_name": "saver-9cfef3281fc531a3c5a5a00ed8a67256e1b954b5271b03936808623960afebfc",
"artifact_status": null,
"for_control": "SDLC-CTRL-0002"
}
@@ -8158,7 +8160,7 @@ kosli get snapshot aws-prod --output=json
"policy_name": "provenance"
},
{
- "policy_version": 4,
+ "policy_version": 3,
"status": "COMPLIANT",
"rule_evaluations": [
{
@@ -8175,24 +8177,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "runner-ci",
- "trail_name": "ca65b67c3e311fbdd2435609fdb6f8a5479f66f9",
+ "flow_name": "saver-ci",
+ "trail_name": "7c4708f675a7717376529273ec32d08cd93f5c26",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "runner-a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "saver-9cfef3281fc531a3c5a5a00ed8a67256e1b954b5271b03936808623960afebfc",
"artifact_status": null
}
},
@@ -8200,7 +8202,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "runner-a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638",
+ "trail_name": "saver-9cfef3281fc531a3c5a5a00ed8a67256e1b954b5271b03936808623960afebfc",
"artifact_status": null
}
}
@@ -8220,24 +8222,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "runner-ci",
- "trail_name": "ca65b67c3e311fbdd2435609fdb6f8a5479f66f9",
+ "flow_name": "saver-ci",
+ "trail_name": "7c4708f675a7717376529273ec32d08cd93f5c26",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "runner-a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "saver-9cfef3281fc531a3c5a5a00ed8a67256e1b954b5271b03936808623960afebfc",
"artifact_status": "COMPLIANT"
}
},
@@ -8245,7 +8247,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "runner-a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638",
+ "trail_name": "saver-9cfef3281fc531a3c5a5a00ed8a67256e1b954b5271b03936808623960afebfc",
"artifact_status": "COMPLIANT"
}
}
@@ -8256,60 +8258,56 @@ kosli get snapshot aws-prod --output=json
"type": "attestation",
"definition": {
"if": {
- "text": "flow.name == \"snyk-aws-prod-per-artifact\""
+ "text": "flow.tags.kind == \"build\""
},
- "name": "snyk-container-scan",
- "type": "decision",
+ "name": "*",
+ "type": "pull_request",
"must_be_compliant": true,
- "for_control": "SDLC-CTRL-0022"
+ "for_control": null
}
},
"satisfied": true,
"ignored": false,
"resolutions": [
{
- "type": "rule_not_applicable",
+ "type": "rule_satisfied",
"context": {
- "flow_name": "runner-ci",
- "trail_name": "ca65b67c3e311fbdd2435609fdb6f8a5479f66f9",
- "artifact_status": null,
- "for_control": "SDLC-CTRL-0022"
+ "flow_name": "saver-ci",
+ "trail_name": "7c4708f675a7717376529273ec32d08cd93f5c26",
+ "artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "runner-a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638",
- "artifact_status": null,
- "for_control": "SDLC-CTRL-0022"
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
+ "artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
- "artifact_status": null,
- "for_control": "SDLC-CTRL-0022"
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "saver-9cfef3281fc531a3c5a5a00ed8a67256e1b954b5271b03936808623960afebfc",
+ "artifact_status": null
}
},
{
- "type": "rule_satisfied",
+ "type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "runner-a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638",
- "artifact_status": null,
- "for_control": "SDLC-CTRL-0022"
+ "trail_name": "saver-9cfef3281fc531a3c5a5a00ed8a67256e1b954b5271b03936808623960afebfc",
+ "artifact_status": null
}
}
]
}
],
- "policy_name": "snyk-scan-aws-prod"
+ "policy_name": "pull-request"
},
{
- "policy_version": 2,
+ "policy_version": 4,
"status": "COMPLIANT",
"rule_evaluations": [
{
@@ -8326,24 +8324,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "runner-ci",
- "trail_name": "ca65b67c3e311fbdd2435609fdb6f8a5479f66f9",
+ "flow_name": "saver-ci",
+ "trail_name": "7c4708f675a7717376529273ec32d08cd93f5c26",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "runner-a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "saver-9cfef3281fc531a3c5a5a00ed8a67256e1b954b5271b03936808623960afebfc",
"artifact_status": null
}
},
@@ -8351,7 +8349,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "runner-a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638",
+ "trail_name": "saver-9cfef3281fc531a3c5a5a00ed8a67256e1b954b5271b03936808623960afebfc",
"artifact_status": null
}
}
@@ -8371,24 +8369,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "runner-ci",
- "trail_name": "ca65b67c3e311fbdd2435609fdb6f8a5479f66f9",
+ "flow_name": "saver-ci",
+ "trail_name": "7c4708f675a7717376529273ec32d08cd93f5c26",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "runner-a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "saver-9cfef3281fc531a3c5a5a00ed8a67256e1b954b5271b03936808623960afebfc",
"artifact_status": "COMPLIANT"
}
},
@@ -8396,7 +8394,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "runner-a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638",
+ "trail_name": "saver-9cfef3281fc531a3c5a5a00ed8a67256e1b954b5271b03936808623960afebfc",
"artifact_status": "COMPLIANT"
}
}
@@ -8407,12 +8405,12 @@ kosli get snapshot aws-prod --output=json
"type": "attestation",
"definition": {
"if": {
- "text": "flow.name == \"production-promotion\""
+ "text": "flow.name == \"snyk-aws-prod-per-artifact\""
},
- "name": "snyk-scan",
+ "name": "snyk-container-scan",
"type": "decision",
"must_be_compliant": true,
- "for_control": null
+ "for_control": "SDLC-CTRL-0022"
}
},
"satisfied": true,
@@ -8421,39 +8419,43 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "runner-ci",
- "trail_name": "ca65b67c3e311fbdd2435609fdb6f8a5479f66f9",
- "artifact_status": null
+ "flow_name": "saver-ci",
+ "trail_name": "7c4708f675a7717376529273ec32d08cd93f5c26",
+ "artifact_status": null,
+ "for_control": "SDLC-CTRL-0022"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "runner-a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638",
- "artifact_status": null
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
+ "artifact_status": null,
+ "for_control": "SDLC-CTRL-0022"
}
},
{
- "type": "rule_satisfied",
+ "type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
- "artifact_status": null
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "saver-9cfef3281fc531a3c5a5a00ed8a67256e1b954b5271b03936808623960afebfc",
+ "artifact_status": null,
+ "for_control": "SDLC-CTRL-0022"
}
},
{
- "type": "rule_not_applicable",
+ "type": "rule_satisfied",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "runner-a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638",
- "artifact_status": null
+ "trail_name": "saver-9cfef3281fc531a3c5a5a00ed8a67256e1b954b5271b03936808623960afebfc",
+ "artifact_status": null,
+ "for_control": "SDLC-CTRL-0022"
}
}
]
}
],
- "policy_name": "production-promotion"
+ "policy_name": "snyk-scan-aws-prod"
},
{
"policy_version": 2,
@@ -8473,24 +8475,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "runner-ci",
- "trail_name": "ca65b67c3e311fbdd2435609fdb6f8a5479f66f9",
+ "flow_name": "saver-ci",
+ "trail_name": "7c4708f675a7717376529273ec32d08cd93f5c26",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "runner-a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "saver-9cfef3281fc531a3c5a5a00ed8a67256e1b954b5271b03936808623960afebfc",
"artifact_status": null
}
},
@@ -8498,7 +8500,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "runner-a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638",
+ "trail_name": "saver-9cfef3281fc531a3c5a5a00ed8a67256e1b954b5271b03936808623960afebfc",
"artifact_status": null
}
}
@@ -8524,24 +8526,24 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "runner-ci",
- "trail_name": "ca65b67c3e311fbdd2435609fdb6f8a5479f66f9",
+ "flow_name": "saver-ci",
+ "trail_name": "7c4708f675a7717376529273ec32d08cd93f5c26",
"artifact_status": "COMPLIANT"
}
},
{
- "type": "rule_not_applicable",
+ "type": "rule_satisfied",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "runner-a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
{
- "type": "rule_satisfied",
+ "type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "saver-9cfef3281fc531a3c5a5a00ed8a67256e1b954b5271b03936808623960afebfc",
"artifact_status": "COMPLIANT"
}
},
@@ -8549,7 +8551,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_satisfied",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "runner-a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638",
+ "trail_name": "saver-9cfef3281fc531a3c5a5a00ed8a67256e1b954b5271b03936808623960afebfc",
"artifact_status": "COMPLIANT"
}
}
@@ -8560,102 +8562,69 @@ kosli get snapshot aws-prod --output=json
}
],
"reasons_for_incompliance": [],
- "fingerprint": "a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638",
+ "fingerprint": "9cfef3281fc531a3c5a5a00ed8a67256e1b954b5271b03936808623960afebfc",
"creationTimestamp": [
- 1788255749,
- 1788255749,
- 1788255844
+ 1789022816
],
"pods": null,
"annotation": {
"type": "unchanged",
- "was": 3,
- "now": 3
+ "was": 1,
+ "now": 1
},
- "flow_name": "runner-ci",
- "git_commit": "ca65b67c3e311fbdd2435609fdb6f8a5479f66f9",
- "commit_url": "https://github.com/cyber-dojo/runner/commit/ca65b67c3e311fbdd2435609fdb6f8a5479f66f9",
- "html_url": "https://app.kosli.com/cyber-dojo/flows/runner-ci/artifacts/a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638?artifact_id=3b03ceaf-96a6-4afa-8aa2-179e5fe9",
- "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/runner-ci",
+ "flow_name": "saver-ci",
+ "git_commit": "7c4708f675a7717376529273ec32d08cd93f5c26",
+ "commit_url": "https://github.com/cyber-dojo/saver/commit/7c4708f675a7717376529273ec32d08cd93f5c26",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/saver-ci/artifacts/9cfef3281fc531a3c5a5a00ed8a67256e1b954b5271b03936808623960afebfc?artifact_id=326e1373-e805-48be-bfc7-6631db28",
+ "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/saver-ci",
"deployment_diff": {
- "diff_url": "https://github.com/cyber-dojo/runner/compare/976b63e8001ec7441ebc7737ca69f620d47e7ffe...ca65b67c3e311fbdd2435609fdb6f8a5479f66f9",
- "previous_git_commit": "976b63e8001ec7441ebc7737ca69f620d47e7ffe",
- "previous_fingerprint": "01311f8b73bb61f65baabe680aa75ef9c0e6c5d1697ad81cfd89c89812de6fe9",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:976b63e@sha256:01311f8b73bb61f65baabe680aa75ef9c0e6c5d1697ad81cfd89c89812de6fe9",
- "previous_artifact_compliance_state": "COMPLIANT",
- "previous_running": false,
- "previous_git_commit_url": "https://github.com/cyber-dojo/runner/commit/976b63e8001ec7441ebc7737ca69f620d47e7ffe",
- "previous_trail_name": "976b63e8001ec7441ebc7737ca69f620d47e7ffe",
- "previous_template_reference_name": "runner"
- },
- "commit_lead_time": 92169.0,
- "flows": [
- {
- "flow_name": "runner-ci",
- "trail_name": "ca65b67c3e311fbdd2435609fdb6f8a5479f66f9",
- "template_reference_name": "runner",
- "git_commit": "ca65b67c3e311fbdd2435609fdb6f8a5479f66f9",
- "commit_url": "https://github.com/cyber-dojo/runner/commit/ca65b67c3e311fbdd2435609fdb6f8a5479f66f9",
- "git_commit_info": {
- "sha1": "ca65b67c3e311fbdd2435609fdb6f8a5479f66f9",
- "message": "Keep the containers stderr empty (#306)\n\n* Run rm and truncate only when the walk finds files\n\n xargs runs its command once even when its input is empty, on GNU\n findutils and busybox alike. Most katas have no binary files and none\n over the size limit, so remove_binary_files and truncate_large_files\n each ran their command with no file operand and it answered with a\n usage error.\n\n That noise went to the container's own stderr, which is the daemon's\n second attach stream. The kata's stderr is a separate thing, arriving\n as tmp/stderr inside the payload, so nothing in the suite looked at\n the stream that carried it.\n\n --no-run-if-empty is the long form of the flag, and both userlands\n accept it, unlike xargs --null.\n\n* Give tar member names it has nothing to strip\n\n The payload's member names are relative: tmp/stdout, and sandbox/...\n for the kata's own files. runner.rb and Sandbox.out read them by those\n names. tar asked to archive an absolute path makes them relative\n itself, by stripping the leading /, and writes a warning about it to\n the container's stderr. Both tar calls in send_tgz() did that, two\n lines each, four on every test-run.\n\n --directory / hands tar names that are already relative to it, so it\n has nothing to strip and nothing to say. The member names are\n unchanged: GNU tar 1.35 in a language image writes the same list\n either way, tmp/stdout through sandbox/sub/b.txt.\n\n c9Gf21 now pins the whole of it, that the container's stderr is empty.\n That stream is the daemon's second attach stream, and separate from\n the kata's own stderr, which arrives as tmp/stderr inside the payload.",
- "author": "Jon Jagger ",
- "branch": "",
- "timestamp": 1788163580.0,
- "url": "https://github.com/cyber-dojo/runner/commit/ca65b67c3e311fbdd2435609fdb6f8a5479f66f9"
- },
- "html_url": "https://app.kosli.com/cyber-dojo/flows/runner-ci/artifacts/a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638?artifact_id=3b03ceaf-96a6-4afa-8aa2-179e5fe9",
- "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/runner-ci",
- "deployment_diff": {
- "diff_url": "https://github.com/cyber-dojo/runner/compare/976b63e8001ec7441ebc7737ca69f620d47e7ffe...ca65b67c3e311fbdd2435609fdb6f8a5479f66f9",
- "previous_git_commit": "976b63e8001ec7441ebc7737ca69f620d47e7ffe",
- "previous_fingerprint": "01311f8b73bb61f65baabe680aa75ef9c0e6c5d1697ad81cfd89c89812de6fe9",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:976b63e@sha256:01311f8b73bb61f65baabe680aa75ef9c0e6c5d1697ad81cfd89c89812de6fe9",
- "previous_artifact_compliance_state": "COMPLIANT",
- "previous_running": false,
- "previous_git_commit_url": "https://github.com/cyber-dojo/runner/commit/976b63e8001ec7441ebc7737ca69f620d47e7ffe",
- "previous_trail_name": "976b63e8001ec7441ebc7737ca69f620d47e7ffe",
- "previous_template_reference_name": "runner"
- },
- "commit_lead_time": 92169.0,
- "artifact_compliance_in_flow": true,
- "flow_reasons_for_non_compliance": []
- },
+ "diff_url": "https://github.com/cyber-dojo/saver/compare/9030f8f46e738d94bd817727b8f8a9a54f106585...7c4708f675a7717376529273ec32d08cd93f5c26",
+ "previous_git_commit": "9030f8f46e738d94bd817727b8f8a9a54f106585",
+ "previous_fingerprint": "6f6be2c6ce42d0d96b320f84f6bd8cbf6f22fc01b8f32fda047f682494c1c733",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/saver:9030f8f@sha256:6f6be2c6ce42d0d96b320f84f6bd8cbf6f22fc01b8f32fda047f682494c1c733",
+ "previous_artifact_compliance_state": "COMPLIANT",
+ "previous_running": false,
+ "previous_git_commit_url": "https://github.com/cyber-dojo/saver/commit/9030f8f46e738d94bd817727b8f8a9a54f106585",
+ "previous_trail_name": "9030f8f46e738d94bd817727b8f8a9a54f106585",
+ "previous_template_reference_name": "saver"
+ },
+ "commit_lead_time": 89107.0,
+ "flows": [
{
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "runner-a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638",
- "template_reference_name": "runner",
- "git_commit": "ed3c81d7322bb8058615095f4aab28c147c53933",
- "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933",
+ "flow_name": "saver-ci",
+ "trail_name": "7c4708f675a7717376529273ec32d08cd93f5c26",
+ "template_reference_name": "saver",
+ "git_commit": "7c4708f675a7717376529273ec32d08cd93f5c26",
+ "commit_url": "https://github.com/cyber-dojo/saver/commit/7c4708f675a7717376529273ec32d08cd93f5c26",
"git_commit_info": {
- "sha1": "ed3c81d7322bb8058615095f4aab28c147c53933",
- "message": "Unpack one pinned commit instead of fetching each file\n\n a0c005a moved these two jobs' files to RUNNER_TEMP, which kept them out of\n the caller's checkout but left the prefix repeated at every use. The paths\n are absolute because the run steps stay in the checkout, where the Kosli\n CLI reads git commit information from the working directory, so the prefix\n cannot be dropped. It can only be folded into the definitions, and a\n literal /tmp folds where runner.temp does not: the runner context is\n unavailable in workflow- and job-level env blocks. Both jobs are pinned to\n ubuntu-latest, one fresh VM per job, so /tmp neither collides nor persists.\n\n The files also arrived as five separate fetches of main, one per file, so a\n push landing mid-run could pair a rego policy with params from a different\n commit. find-snyk-vulns already checks this repo out, so it now publishes\n the SHA it resolved, and the two later jobs unpack that exact commit as a\n single tarball. One run reads one version.\n\n An env-var's prefix now says where its file came from: SNYK_SCANNING_ from\n this repo at the pinned commit, CALLER_ from the repo being scanned, TMP_\n produced by the run. That split is worth naming because only one of these\n files is the caller's, and it is the one .snyk that the decision attests\n against. Two bare filenames survive because an artifact name cannot\n contain a '/'.\n\n fetch-url-to-file now has exactly one caller, for that .snyk.",
- "author": "JonJagger ",
- "branch": "main",
- "timestamp": 1787661987.0,
- "url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933"
+ "sha1": "7c4708f675a7717376529273ec32d08cd93f5c26",
+ "message": "Dockerfile - Automated base-image update (#446)\n\nCo-authored-by: JonJagger ",
+ "author": "Jon Jagger ",
+ "branch": "",
+ "timestamp": 1788778339.0,
+ "url": "https://github.com/cyber-dojo/saver/commit/7c4708f675a7717376529273ec32d08cd93f5c26"
},
- "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact/artifacts/a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638?artifact_id=e9d1f562-ed75-4e9a-ac28-18bdf67f",
- "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/saver-ci/artifacts/9cfef3281fc531a3c5a5a00ed8a67256e1b954b5271b03936808623960afebfc?artifact_id=326e1373-e805-48be-bfc7-6631db28",
+ "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/saver-ci",
"deployment_diff": {
- "diff_url": "https://github.com/cyber-dojo/snyk-scanning/compare/ad256a36cfd9d90f78acbf393e4bff5a2ef45fcf...ed3c81d7322bb8058615095f4aab28c147c53933",
- "previous_git_commit": "ad256a36cfd9d90f78acbf393e4bff5a2ef45fcf",
- "previous_fingerprint": "fd8c68c615a68bfa49569beea07d071950dcfeac676028543f530dd7193f5631",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:d7541d3@sha256:fd8c68c615a68bfa49569beea07d071950dcfeac676028543f530dd7193f5631",
+ "diff_url": "https://github.com/cyber-dojo/saver/compare/9030f8f46e738d94bd817727b8f8a9a54f106585...7c4708f675a7717376529273ec32d08cd93f5c26",
+ "previous_git_commit": "9030f8f46e738d94bd817727b8f8a9a54f106585",
+ "previous_fingerprint": "6f6be2c6ce42d0d96b320f84f6bd8cbf6f22fc01b8f32fda047f682494c1c733",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/saver:9030f8f@sha256:6f6be2c6ce42d0d96b320f84f6bd8cbf6f22fc01b8f32fda047f682494c1c733",
"previous_artifact_compliance_state": "COMPLIANT",
"previous_running": false,
- "previous_git_commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/ad256a36cfd9d90f78acbf393e4bff5a2ef45fcf",
- "previous_trail_name": "runner-fd8c68c615a68bfa49569beea07d071950dcfeac676028543f530dd7193f5631",
- "previous_template_reference_name": "runner"
+ "previous_git_commit_url": "https://github.com/cyber-dojo/saver/commit/9030f8f46e738d94bd817727b8f8a9a54f106585",
+ "previous_trail_name": "9030f8f46e738d94bd817727b8f8a9a54f106585",
+ "previous_template_reference_name": "saver"
},
- "commit_lead_time": 593762.0,
+ "commit_lead_time": 89107.0,
"artifact_compliance_in_flow": true,
"flow_reasons_for_non_compliance": []
},
{
"flow_name": "production-promotion",
- "trail_name": "promote-all-34",
- "template_reference_name": "runner",
+ "trail_name": "promote-all-35",
+ "template_reference_name": "saver",
"git_commit": "7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
"commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
"git_commit_info": {
@@ -8666,68 +8635,99 @@ kosli get snapshot aws-prod --output=json
"timestamp": 1785316994.0,
"url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584"
},
- "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638?artifact_id=95170cfc-5215-420d-a2b0-83fee5dc",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/9cfef3281fc531a3c5a5a00ed8a67256e1b954b5271b03936808623960afebfc?artifact_id=8fb8e719-d3c3-41e3-8c3d-330a1bf8",
"flow_html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion",
"deployment_diff": {
"diff_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/compare/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584...7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
"previous_git_commit": "7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
- "previous_fingerprint": "01311f8b73bb61f65baabe680aa75ef9c0e6c5d1697ad81cfd89c89812de6fe9",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:976b63e@sha256:01311f8b73bb61f65baabe680aa75ef9c0e6c5d1697ad81cfd89c89812de6fe9",
+ "previous_fingerprint": "6f6be2c6ce42d0d96b320f84f6bd8cbf6f22fc01b8f32fda047f682494c1c733",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/saver:9030f8f@sha256:6f6be2c6ce42d0d96b320f84f6bd8cbf6f22fc01b8f32fda047f682494c1c733",
"previous_artifact_compliance_state": "COMPLIANT",
"previous_running": false,
"previous_git_commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
- "previous_trail_name": "promotion-one-160",
- "previous_template_reference_name": "runner"
+ "previous_trail_name": "promotion-one-162",
+ "previous_template_reference_name": "saver"
},
- "commit_lead_time": 2938755.0,
+ "commit_lead_time": 3550452.0,
"artifact_compliance_in_flow": true,
"flow_reasons_for_non_compliance": []
},
{
- "flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "runner-a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638",
- "template_reference_name": "runner",
- "git_commit": "ed3c81d7322bb8058615095f4aab28c147c53933",
- "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "saver-9cfef3281fc531a3c5a5a00ed8a67256e1b954b5271b03936808623960afebfc",
+ "template_reference_name": "saver",
+ "git_commit": "30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/30111f180ac4e3611cdbd7d805381a0bb9f53cff",
"git_commit_info": {
- "sha1": "ed3c81d7322bb8058615095f4aab28c147c53933",
- "message": "Unpack one pinned commit instead of fetching each file\n\n a0c005a moved these two jobs' files to RUNNER_TEMP, which kept them out of\n the caller's checkout but left the prefix repeated at every use. The paths\n are absolute because the run steps stay in the checkout, where the Kosli\n CLI reads git commit information from the working directory, so the prefix\n cannot be dropped. It can only be folded into the definitions, and a\n literal /tmp folds where runner.temp does not: the runner context is\n unavailable in workflow- and job-level env blocks. Both jobs are pinned to\n ubuntu-latest, one fresh VM per job, so /tmp neither collides nor persists.\n\n The files also arrived as five separate fetches of main, one per file, so a\n push landing mid-run could pair a rego policy with params from a different\n commit. find-snyk-vulns already checks this repo out, so it now publishes\n the SHA it resolved, and the two later jobs unpack that exact commit as a\n single tarball. One run reads one version.\n\n An env-var's prefix now says where its file came from: SNYK_SCANNING_ from\n this repo at the pinned commit, CALLER_ from the repo being scanned, TMP_\n produced by the run. That split is worth naming because only one of these\n files is the caller's, and it is the one .snyk that the decision attests\n against. Two bare filenames survive because an artifact name cannot\n contain a '/'.\n\n fetch-url-to-file now has exactly one caller, for that .snyk.",
- "author": "JonJagger ",
+ "sha1": "30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "message": "Merge pull request #4 from cyber-dojo/take-both-age-instants-from-one-trail-read\n\nMeasure a vuln's age on the Kosli server's clock alone",
+ "author": "Jon Jagger ",
"branch": "main",
- "timestamp": 1787661987.0,
- "url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933"
+ "timestamp": 1788945655.0,
+ "url": "https://github.com/cyber-dojo/snyk-scanning/commit/30111f180ac4e3611cdbd7d805381a0bb9f53cff"
},
- "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638?artifact_id=d21568bf-b02a-4532-a725-6fc824a6",
- "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact/artifacts/9cfef3281fc531a3c5a5a00ed8a67256e1b954b5271b03936808623960afebfc?artifact_id=01d2ba7c-c06f-40a8-8dfc-5b71d5f9",
+ "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact",
"deployment_diff": {
- "diff_url": "https://github.com/cyber-dojo/snyk-scanning/compare/ed3c81d7322bb8058615095f4aab28c147c53933...ed3c81d7322bb8058615095f4aab28c147c53933",
+ "diff_url": "https://github.com/cyber-dojo/snyk-scanning/compare/ed3c81d7322bb8058615095f4aab28c147c53933...30111f180ac4e3611cdbd7d805381a0bb9f53cff",
"previous_git_commit": "ed3c81d7322bb8058615095f4aab28c147c53933",
- "previous_fingerprint": "fd8c68c615a68bfa49569beea07d071950dcfeac676028543f530dd7193f5631",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:d7541d3@sha256:fd8c68c615a68bfa49569beea07d071950dcfeac676028543f530dd7193f5631",
+ "previous_fingerprint": "6f6be2c6ce42d0d96b320f84f6bd8cbf6f22fc01b8f32fda047f682494c1c733",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/saver:9030f8f@sha256:6f6be2c6ce42d0d96b320f84f6bd8cbf6f22fc01b8f32fda047f682494c1c733",
"previous_artifact_compliance_state": "COMPLIANT",
"previous_running": false,
"previous_git_commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933",
- "previous_trail_name": "runner-fd8c68c615a68bfa49569beea07d071950dcfeac676028543f530dd7193f5631",
- "previous_template_reference_name": "runner"
+ "previous_trail_name": "saver-6f6be2c6ce42d0d96b320f84f6bd8cbf6f22fc01b8f32fda047f682494c1c733",
+ "previous_template_reference_name": "saver"
+ },
+ "commit_lead_time": -78209.0,
+ "artifact_compliance_in_flow": true,
+ "flow_reasons_for_non_compliance": []
+ },
+ {
+ "flow_name": "snyk-aws-prod-per-artifact",
+ "trail_name": "saver-9cfef3281fc531a3c5a5a00ed8a67256e1b954b5271b03936808623960afebfc",
+ "template_reference_name": "saver",
+ "git_commit": "30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "git_commit_info": {
+ "sha1": "30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "message": "Merge pull request #4 from cyber-dojo/take-both-age-instants-from-one-trail-read\n\nMeasure a vuln's age on the Kosli server's clock alone",
+ "author": "Jon Jagger ",
+ "branch": "main",
+ "timestamp": 1788945655.0,
+ "url": "https://github.com/cyber-dojo/snyk-scanning/commit/30111f180ac4e3611cdbd7d805381a0bb9f53cff"
+ },
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/9cfef3281fc531a3c5a5a00ed8a67256e1b954b5271b03936808623960afebfc?artifact_id=f91367c3-bdd4-4f8c-89df-7ebad571",
+ "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact",
+ "deployment_diff": {
+ "diff_url": "https://github.com/cyber-dojo/snyk-scanning/compare/00c479764cb9eca038fdaaaef108672d0bb0ed26...30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "previous_git_commit": "00c479764cb9eca038fdaaaef108672d0bb0ed26",
+ "previous_fingerprint": "f5909cc8dd53b2105953d1a72cd5d6181367d3588964aa01a04c056205a5d419",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/saver:8c84fac@sha256:f5909cc8dd53b2105953d1a72cd5d6181367d3588964aa01a04c056205a5d419",
+ "previous_artifact_compliance_state": "COMPLIANT",
+ "previous_running": false,
+ "previous_git_commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/00c479764cb9eca038fdaaaef108672d0bb0ed26",
+ "previous_trail_name": "saver-f5909cc8dd53b2105953d1a72cd5d6181367d3588964aa01a04c056205a5d419",
+ "previous_template_reference_name": "saver"
},
- "commit_lead_time": 593762.0,
+ "commit_lead_time": -78209.0,
"artifact_compliance_in_flow": true,
"flow_reasons_for_non_compliance": []
}
],
"ecs_context": {
- "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/a8c4fce1500343aa9d5dd37759266af8",
+ "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/89078662eaed4dce813ab87e8faac4af",
"cluster_name": null,
"service_name": null
}
},
{
- "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/differ:bcac1c1@sha256:03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab",
+ "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/differ:2e9bd96@sha256:f61d363b12c540302c97e4f694c76edc6fcb594852e2dcdb8ce92d2d22521409",
"compliant": true,
"deployments": [],
"policy_decisions": [
{
- "policy_version": 3,
+ "policy_version": 2,
"status": "COMPLIANT",
"rule_evaluations": [
{
@@ -8745,23 +8745,23 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "differ-ci",
- "trail_name": "bcac1c18385b2573ef6c6e8eeae0f62ed14a03de",
+ "trail_name": "2e9bd969b50fff6b86578d69b7139f2d688ef6e2",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "differ-03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "differ-f61d363b12c540302c97e4f694c76edc6fcb594852e2dcdb8ce92d2d22521409",
"artifact_status": null
}
},
@@ -8769,7 +8769,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "differ-03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab",
+ "trail_name": "differ-f61d363b12c540302c97e4f694c76edc6fcb594852e2dcdb8ce92d2d22521409",
"artifact_status": null
}
}
@@ -8790,23 +8790,23 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "differ-ci",
- "trail_name": "bcac1c18385b2573ef6c6e8eeae0f62ed14a03de",
+ "trail_name": "2e9bd969b50fff6b86578d69b7139f2d688ef6e2",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "differ-03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "differ-f61d363b12c540302c97e4f694c76edc6fcb594852e2dcdb8ce92d2d22521409",
"artifact_status": "COMPLIANT"
}
},
@@ -8814,7 +8814,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "differ-03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab",
+ "trail_name": "differ-f61d363b12c540302c97e4f694c76edc6fcb594852e2dcdb8ce92d2d22521409",
"artifact_status": "COMPLIANT"
}
}
@@ -8825,10 +8825,10 @@ kosli get snapshot aws-prod --output=json
"type": "attestation",
"definition": {
"if": {
- "text": "flow.tags.kind == \"build\""
+ "text": "flow.name == \"production-promotion\""
},
- "name": "*",
- "type": "pull_request",
+ "name": "snyk-scan",
+ "type": "decision",
"must_be_compliant": true,
"for_control": null
}
@@ -8837,26 +8837,26 @@ kosli get snapshot aws-prod --output=json
"ignored": false,
"resolutions": [
{
- "type": "rule_satisfied",
+ "type": "rule_not_applicable",
"context": {
"flow_name": "differ-ci",
- "trail_name": "bcac1c18385b2573ef6c6e8eeae0f62ed14a03de",
+ "trail_name": "2e9bd969b50fff6b86578d69b7139f2d688ef6e2",
"artifact_status": null
}
},
{
- "type": "rule_not_applicable",
+ "type": "rule_satisfied",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "differ-03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "differ-f61d363b12c540302c97e4f694c76edc6fcb594852e2dcdb8ce92d2d22521409",
"artifact_status": null
}
},
@@ -8864,14 +8864,14 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "differ-03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab",
+ "trail_name": "differ-f61d363b12c540302c97e4f694c76edc6fcb594852e2dcdb8ce92d2d22521409",
"artifact_status": null
}
}
]
}
],
- "policy_name": "pull-request"
+ "policy_name": "production-promotion"
},
{
"policy_version": 3,
@@ -8892,23 +8892,23 @@ kosli get snapshot aws-prod --output=json
"type": "rule_satisfied",
"context": {
"flow_name": "differ-ci",
- "trail_name": "bcac1c18385b2573ef6c6e8eeae0f62ed14a03de",
+ "trail_name": "2e9bd969b50fff6b86578d69b7139f2d688ef6e2",
"artifact_status": null
}
},
{
"type": "rule_satisfied",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "differ-03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_satisfied",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "differ-f61d363b12c540302c97e4f694c76edc6fcb594852e2dcdb8ce92d2d22521409",
"artifact_status": null
}
},
@@ -8916,7 +8916,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_satisfied",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "differ-03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab",
+ "trail_name": "differ-f61d363b12c540302c97e4f694c76edc6fcb594852e2dcdb8ce92d2d22521409",
"artifact_status": null
}
}
@@ -8937,23 +8937,23 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "differ-ci",
- "trail_name": "bcac1c18385b2573ef6c6e8eeae0f62ed14a03de",
+ "trail_name": "2e9bd969b50fff6b86578d69b7139f2d688ef6e2",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "differ-03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "differ-f61d363b12c540302c97e4f694c76edc6fcb594852e2dcdb8ce92d2d22521409",
"artifact_status": "COMPLIANT"
}
},
@@ -8961,7 +8961,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "differ-03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab",
+ "trail_name": "differ-f61d363b12c540302c97e4f694c76edc6fcb594852e2dcdb8ce92d2d22521409",
"artifact_status": "COMPLIANT"
}
}
@@ -8987,7 +8987,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_satisfied",
"context": {
"flow_name": "differ-ci",
- "trail_name": "bcac1c18385b2573ef6c6e8eeae0f62ed14a03de",
+ "trail_name": "2e9bd969b50fff6b86578d69b7139f2d688ef6e2",
"artifact_status": null,
"for_control": "SDLC-CTRL-0002"
}
@@ -8995,8 +8995,8 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "differ-03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null,
"for_control": "SDLC-CTRL-0002"
}
@@ -9004,8 +9004,8 @@ kosli get snapshot aws-prod --output=json
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "differ-f61d363b12c540302c97e4f694c76edc6fcb594852e2dcdb8ce92d2d22521409",
"artifact_status": null,
"for_control": "SDLC-CTRL-0002"
}
@@ -9014,7 +9014,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "differ-03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab",
+ "trail_name": "differ-f61d363b12c540302c97e4f694c76edc6fcb594852e2dcdb8ce92d2d22521409",
"artifact_status": null,
"for_control": "SDLC-CTRL-0002"
}
@@ -9025,7 +9025,7 @@ kosli get snapshot aws-prod --output=json
"policy_name": "provenance"
},
{
- "policy_version": 4,
+ "policy_version": 3,
"status": "COMPLIANT",
"rule_evaluations": [
{
@@ -9043,23 +9043,23 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "differ-ci",
- "trail_name": "bcac1c18385b2573ef6c6e8eeae0f62ed14a03de",
+ "trail_name": "2e9bd969b50fff6b86578d69b7139f2d688ef6e2",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "differ-03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "differ-f61d363b12c540302c97e4f694c76edc6fcb594852e2dcdb8ce92d2d22521409",
"artifact_status": null
}
},
@@ -9067,7 +9067,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "differ-03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab",
+ "trail_name": "differ-f61d363b12c540302c97e4f694c76edc6fcb594852e2dcdb8ce92d2d22521409",
"artifact_status": null
}
}
@@ -9088,23 +9088,23 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "differ-ci",
- "trail_name": "bcac1c18385b2573ef6c6e8eeae0f62ed14a03de",
+ "trail_name": "2e9bd969b50fff6b86578d69b7139f2d688ef6e2",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "differ-03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "differ-f61d363b12c540302c97e4f694c76edc6fcb594852e2dcdb8ce92d2d22521409",
"artifact_status": "COMPLIANT"
}
},
@@ -9112,7 +9112,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "differ-03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab",
+ "trail_name": "differ-f61d363b12c540302c97e4f694c76edc6fcb594852e2dcdb8ce92d2d22521409",
"artifact_status": "COMPLIANT"
}
}
@@ -9123,60 +9123,56 @@ kosli get snapshot aws-prod --output=json
"type": "attestation",
"definition": {
"if": {
- "text": "flow.name == \"snyk-aws-prod-per-artifact\""
+ "text": "flow.tags.kind == \"build\""
},
- "name": "snyk-container-scan",
- "type": "decision",
+ "name": "*",
+ "type": "pull_request",
"must_be_compliant": true,
- "for_control": "SDLC-CTRL-0022"
+ "for_control": null
}
},
"satisfied": true,
"ignored": false,
"resolutions": [
{
- "type": "rule_not_applicable",
+ "type": "rule_satisfied",
"context": {
"flow_name": "differ-ci",
- "trail_name": "bcac1c18385b2573ef6c6e8eeae0f62ed14a03de",
- "artifact_status": null,
- "for_control": "SDLC-CTRL-0022"
+ "trail_name": "2e9bd969b50fff6b86578d69b7139f2d688ef6e2",
+ "artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "differ-03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab",
- "artifact_status": null,
- "for_control": "SDLC-CTRL-0022"
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
+ "artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
- "artifact_status": null,
- "for_control": "SDLC-CTRL-0022"
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "differ-f61d363b12c540302c97e4f694c76edc6fcb594852e2dcdb8ce92d2d22521409",
+ "artifact_status": null
}
},
{
- "type": "rule_satisfied",
+ "type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "differ-03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab",
- "artifact_status": null,
- "for_control": "SDLC-CTRL-0022"
+ "trail_name": "differ-f61d363b12c540302c97e4f694c76edc6fcb594852e2dcdb8ce92d2d22521409",
+ "artifact_status": null
}
}
]
}
],
- "policy_name": "snyk-scan-aws-prod"
+ "policy_name": "pull-request"
},
{
- "policy_version": 2,
+ "policy_version": 4,
"status": "COMPLIANT",
"rule_evaluations": [
{
@@ -9194,23 +9190,23 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "differ-ci",
- "trail_name": "bcac1c18385b2573ef6c6e8eeae0f62ed14a03de",
+ "trail_name": "2e9bd969b50fff6b86578d69b7139f2d688ef6e2",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "differ-03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "differ-f61d363b12c540302c97e4f694c76edc6fcb594852e2dcdb8ce92d2d22521409",
"artifact_status": null
}
},
@@ -9218,7 +9214,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "differ-03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab",
+ "trail_name": "differ-f61d363b12c540302c97e4f694c76edc6fcb594852e2dcdb8ce92d2d22521409",
"artifact_status": null
}
}
@@ -9239,23 +9235,23 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "differ-ci",
- "trail_name": "bcac1c18385b2573ef6c6e8eeae0f62ed14a03de",
+ "trail_name": "2e9bd969b50fff6b86578d69b7139f2d688ef6e2",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "differ-03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "differ-f61d363b12c540302c97e4f694c76edc6fcb594852e2dcdb8ce92d2d22521409",
"artifact_status": "COMPLIANT"
}
},
@@ -9263,7 +9259,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "differ-03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab",
+ "trail_name": "differ-f61d363b12c540302c97e4f694c76edc6fcb594852e2dcdb8ce92d2d22521409",
"artifact_status": "COMPLIANT"
}
}
@@ -9274,12 +9270,12 @@ kosli get snapshot aws-prod --output=json
"type": "attestation",
"definition": {
"if": {
- "text": "flow.name == \"production-promotion\""
+ "text": "flow.name == \"snyk-aws-prod-per-artifact\""
},
- "name": "snyk-scan",
+ "name": "snyk-container-scan",
"type": "decision",
"must_be_compliant": true,
- "for_control": null
+ "for_control": "SDLC-CTRL-0022"
}
},
"satisfied": true,
@@ -9289,38 +9285,42 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "differ-ci",
- "trail_name": "bcac1c18385b2573ef6c6e8eeae0f62ed14a03de",
- "artifact_status": null
+ "trail_name": "2e9bd969b50fff6b86578d69b7139f2d688ef6e2",
+ "artifact_status": null,
+ "for_control": "SDLC-CTRL-0022"
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "differ-03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab",
- "artifact_status": null
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
+ "artifact_status": null,
+ "for_control": "SDLC-CTRL-0022"
}
},
{
- "type": "rule_satisfied",
+ "type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
- "artifact_status": null
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "differ-f61d363b12c540302c97e4f694c76edc6fcb594852e2dcdb8ce92d2d22521409",
+ "artifact_status": null,
+ "for_control": "SDLC-CTRL-0022"
}
},
{
- "type": "rule_not_applicable",
+ "type": "rule_satisfied",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "differ-03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab",
- "artifact_status": null
+ "trail_name": "differ-f61d363b12c540302c97e4f694c76edc6fcb594852e2dcdb8ce92d2d22521409",
+ "artifact_status": null,
+ "for_control": "SDLC-CTRL-0022"
}
}
]
}
],
- "policy_name": "production-promotion"
+ "policy_name": "snyk-scan-aws-prod"
},
{
"policy_version": 2,
@@ -9341,23 +9341,23 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "differ-ci",
- "trail_name": "bcac1c18385b2573ef6c6e8eeae0f62ed14a03de",
+ "trail_name": "2e9bd969b50fff6b86578d69b7139f2d688ef6e2",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "differ-03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": null
}
},
{
"type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "differ-f61d363b12c540302c97e4f694c76edc6fcb594852e2dcdb8ce92d2d22521409",
"artifact_status": null
}
},
@@ -9365,7 +9365,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "differ-03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab",
+ "trail_name": "differ-f61d363b12c540302c97e4f694c76edc6fcb594852e2dcdb8ce92d2d22521409",
"artifact_status": null
}
}
@@ -9392,23 +9392,23 @@ kosli get snapshot aws-prod --output=json
"type": "rule_not_applicable",
"context": {
"flow_name": "differ-ci",
- "trail_name": "bcac1c18385b2573ef6c6e8eeae0f62ed14a03de",
+ "trail_name": "2e9bd969b50fff6b86578d69b7139f2d688ef6e2",
"artifact_status": "COMPLIANT"
}
},
{
- "type": "rule_not_applicable",
+ "type": "rule_satisfied",
"context": {
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "differ-03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"artifact_status": "COMPLIANT"
}
},
{
- "type": "rule_satisfied",
+ "type": "rule_not_applicable",
"context": {
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "differ-f61d363b12c540302c97e4f694c76edc6fcb594852e2dcdb8ce92d2d22521409",
"artifact_status": "COMPLIANT"
}
},
@@ -9416,7 +9416,7 @@ kosli get snapshot aws-prod --output=json
"type": "rule_satisfied",
"context": {
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "differ-03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab",
+ "trail_name": "differ-f61d363b12c540302c97e4f694c76edc6fcb594852e2dcdb8ce92d2d22521409",
"artifact_status": "COMPLIANT"
}
}
@@ -9427,9 +9427,9 @@ kosli get snapshot aws-prod --output=json
}
],
"reasons_for_incompliance": [],
- "fingerprint": "03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab",
+ "fingerprint": "f61d363b12c540302c97e4f694c76edc6fcb594852e2dcdb8ce92d2d22521409",
"creationTimestamp": [
- 1788255749
+ 1789022811
],
"pods": null,
"annotation": {
@@ -9438,134 +9438,134 @@ kosli get snapshot aws-prod --output=json
"now": 1
},
"flow_name": "differ-ci",
- "git_commit": "bcac1c18385b2573ef6c6e8eeae0f62ed14a03de",
- "commit_url": "https://github.com/cyber-dojo/differ/commit/bcac1c18385b2573ef6c6e8eeae0f62ed14a03de",
- "html_url": "https://app.kosli.com/cyber-dojo/flows/differ-ci/artifacts/03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab?artifact_id=11345222-f37a-4f8d-8051-ec26a321",
+ "git_commit": "2e9bd969b50fff6b86578d69b7139f2d688ef6e2",
+ "commit_url": "https://github.com/cyber-dojo/differ/commit/2e9bd969b50fff6b86578d69b7139f2d688ef6e2",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/differ-ci/artifacts/f61d363b12c540302c97e4f694c76edc6fcb594852e2dcdb8ce92d2d22521409?artifact_id=054eef05-3aee-49ae-9e4d-55f768b7",
"flow_html_url": "https://app.kosli.com/cyber-dojo/flows/differ-ci",
"deployment_diff": {
- "diff_url": "https://github.com/cyber-dojo/differ/compare/108cccf9bccf9af5d455db66c250480b53cbecc7...bcac1c18385b2573ef6c6e8eeae0f62ed14a03de",
- "previous_git_commit": "108cccf9bccf9af5d455db66c250480b53cbecc7",
- "previous_fingerprint": "31a4c3abc3ccef33397ed1d84496a08d94ca9d6f9d0df44b6a72aba9743bc8ac",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/differ:108cccf@sha256:31a4c3abc3ccef33397ed1d84496a08d94ca9d6f9d0df44b6a72aba9743bc8ac",
+ "diff_url": "https://github.com/cyber-dojo/differ/compare/bcac1c18385b2573ef6c6e8eeae0f62ed14a03de...2e9bd969b50fff6b86578d69b7139f2d688ef6e2",
+ "previous_git_commit": "bcac1c18385b2573ef6c6e8eeae0f62ed14a03de",
+ "previous_fingerprint": "03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/differ:bcac1c1@sha256:03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab",
"previous_artifact_compliance_state": "COMPLIANT",
"previous_running": false,
- "previous_git_commit_url": "https://github.com/cyber-dojo/differ/commit/108cccf9bccf9af5d455db66c250480b53cbecc7",
- "previous_trail_name": "108cccf9bccf9af5d455db66c250480b53cbecc7",
+ "previous_git_commit_url": "https://github.com/cyber-dojo/differ/commit/bcac1c18385b2573ef6c6e8eeae0f62ed14a03de",
+ "previous_trail_name": "bcac1c18385b2573ef6c6e8eeae0f62ed14a03de",
"previous_template_reference_name": "differ"
},
- "commit_lead_time": 5862.0,
+ "commit_lead_time": 88615.0,
"flows": [
{
"flow_name": "differ-ci",
- "trail_name": "bcac1c18385b2573ef6c6e8eeae0f62ed14a03de",
+ "trail_name": "2e9bd969b50fff6b86578d69b7139f2d688ef6e2",
"template_reference_name": "differ",
- "git_commit": "bcac1c18385b2573ef6c6e8eeae0f62ed14a03de",
- "commit_url": "https://github.com/cyber-dojo/differ/commit/bcac1c18385b2573ef6c6e8eeae0f62ed14a03de",
+ "git_commit": "2e9bd969b50fff6b86578d69b7139f2d688ef6e2",
+ "commit_url": "https://github.com/cyber-dojo/differ/commit/2e9bd969b50fff6b86578d69b7139f2d688ef6e2",
"git_commit_info": {
- "sha1": "bcac1c18385b2573ef6c6e8eeae0f62ed14a03de",
- "message": "Rerun workflow to see if it fixes sonar flake (#469)",
+ "sha1": "2e9bd969b50fff6b86578d69b7139f2d688ef6e2",
+ "message": "Dockerfile - Automated base-image update (#474)\n\nCo-authored-by: JonJagger ",
"author": "Jon Jagger ",
"branch": "",
- "timestamp": 1788249887.0,
- "url": "https://github.com/cyber-dojo/differ/commit/bcac1c18385b2573ef6c6e8eeae0f62ed14a03de"
+ "timestamp": 1788778834.0,
+ "url": "https://github.com/cyber-dojo/differ/commit/2e9bd969b50fff6b86578d69b7139f2d688ef6e2"
},
- "html_url": "https://app.kosli.com/cyber-dojo/flows/differ-ci/artifacts/03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab?artifact_id=11345222-f37a-4f8d-8051-ec26a321",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/differ-ci/artifacts/f61d363b12c540302c97e4f694c76edc6fcb594852e2dcdb8ce92d2d22521409?artifact_id=054eef05-3aee-49ae-9e4d-55f768b7",
"flow_html_url": "https://app.kosli.com/cyber-dojo/flows/differ-ci",
"deployment_diff": {
- "diff_url": "https://github.com/cyber-dojo/differ/compare/108cccf9bccf9af5d455db66c250480b53cbecc7...bcac1c18385b2573ef6c6e8eeae0f62ed14a03de",
- "previous_git_commit": "108cccf9bccf9af5d455db66c250480b53cbecc7",
- "previous_fingerprint": "31a4c3abc3ccef33397ed1d84496a08d94ca9d6f9d0df44b6a72aba9743bc8ac",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/differ:108cccf@sha256:31a4c3abc3ccef33397ed1d84496a08d94ca9d6f9d0df44b6a72aba9743bc8ac",
+ "diff_url": "https://github.com/cyber-dojo/differ/compare/bcac1c18385b2573ef6c6e8eeae0f62ed14a03de...2e9bd969b50fff6b86578d69b7139f2d688ef6e2",
+ "previous_git_commit": "bcac1c18385b2573ef6c6e8eeae0f62ed14a03de",
+ "previous_fingerprint": "03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/differ:bcac1c1@sha256:03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab",
"previous_artifact_compliance_state": "COMPLIANT",
"previous_running": false,
- "previous_git_commit_url": "https://github.com/cyber-dojo/differ/commit/108cccf9bccf9af5d455db66c250480b53cbecc7",
- "previous_trail_name": "108cccf9bccf9af5d455db66c250480b53cbecc7",
+ "previous_git_commit_url": "https://github.com/cyber-dojo/differ/commit/bcac1c18385b2573ef6c6e8eeae0f62ed14a03de",
+ "previous_trail_name": "bcac1c18385b2573ef6c6e8eeae0f62ed14a03de",
"previous_template_reference_name": "differ"
},
- "commit_lead_time": 5862.0,
+ "commit_lead_time": 88615.0,
"artifact_compliance_in_flow": true,
"flow_reasons_for_non_compliance": []
},
{
- "flow_name": "snyk-aws-beta-per-artifact",
- "trail_name": "differ-03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab",
+ "flow_name": "production-promotion",
+ "trail_name": "promote-all-35",
"template_reference_name": "differ",
- "git_commit": "ed3c81d7322bb8058615095f4aab28c147c53933",
- "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933",
+ "git_commit": "7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
+ "commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
"git_commit_info": {
- "sha1": "ed3c81d7322bb8058615095f4aab28c147c53933",
- "message": "Unpack one pinned commit instead of fetching each file\n\n a0c005a moved these two jobs' files to RUNNER_TEMP, which kept them out of\n the caller's checkout but left the prefix repeated at every use. The paths\n are absolute because the run steps stay in the checkout, where the Kosli\n CLI reads git commit information from the working directory, so the prefix\n cannot be dropped. It can only be folded into the definitions, and a\n literal /tmp folds where runner.temp does not: the runner context is\n unavailable in workflow- and job-level env blocks. Both jobs are pinned to\n ubuntu-latest, one fresh VM per job, so /tmp neither collides nor persists.\n\n The files also arrived as five separate fetches of main, one per file, so a\n push landing mid-run could pair a rego policy with params from a different\n commit. find-snyk-vulns already checks this repo out, so it now publishes\n the SHA it resolved, and the two later jobs unpack that exact commit as a\n single tarball. One run reads one version.\n\n An env-var's prefix now says where its file came from: SNYK_SCANNING_ from\n this repo at the pinned commit, CALLER_ from the repo being scanned, TMP_\n produced by the run. That split is worth naming because only one of these\n files is the caller's, and it is the one .snyk that the decision attests\n against. Two bare filenames survive because an artifact name cannot\n contain a '/'.\n\n fetch-url-to-file now has exactly one caller, for that .snyk.",
+ "sha1": "7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
+ "message": "Drop lone use of = separator on Kosli CLI boolean flag",
"author": "JonJagger ",
"branch": "main",
- "timestamp": 1787661987.0,
- "url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933"
+ "timestamp": 1785316994.0,
+ "url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584"
},
- "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact/artifacts/03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab?artifact_id=c19121c7-2115-4fe0-b472-1d4ea833",
- "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/f61d363b12c540302c97e4f694c76edc6fcb594852e2dcdb8ce92d2d22521409?artifact_id=516eb6d4-9435-429b-87f2-51edb16f",
+ "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion",
"deployment_diff": {
- "diff_url": "https://github.com/cyber-dojo/snyk-scanning/compare/c0666c020044ac5b5181999ec153db1e7f6cd303...ed3c81d7322bb8058615095f4aab28c147c53933",
- "previous_git_commit": "c0666c020044ac5b5181999ec153db1e7f6cd303",
- "previous_fingerprint": "31a4c3abc3ccef33397ed1d84496a08d94ca9d6f9d0df44b6a72aba9743bc8ac",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/differ:108cccf@sha256:31a4c3abc3ccef33397ed1d84496a08d94ca9d6f9d0df44b6a72aba9743bc8ac",
+ "diff_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/compare/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584...7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
+ "previous_git_commit": "7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
+ "previous_fingerprint": "03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/differ:bcac1c1@sha256:03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab",
"previous_artifact_compliance_state": "COMPLIANT",
"previous_running": false,
- "previous_git_commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/c0666c020044ac5b5181999ec153db1e7f6cd303",
- "previous_trail_name": "differ-31a4c3abc3ccef33397ed1d84496a08d94ca9d6f9d0df44b6a72aba9743bc8ac",
+ "previous_git_commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
+ "previous_trail_name": "promote-all-34",
"previous_template_reference_name": "differ"
},
- "commit_lead_time": 593762.0,
+ "commit_lead_time": 3550455.0,
"artifact_compliance_in_flow": true,
"flow_reasons_for_non_compliance": []
},
{
- "flow_name": "production-promotion",
- "trail_name": "promote-all-34",
+ "flow_name": "snyk-aws-beta-per-artifact",
+ "trail_name": "differ-f61d363b12c540302c97e4f694c76edc6fcb594852e2dcdb8ce92d2d22521409",
"template_reference_name": "differ",
- "git_commit": "7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
- "commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
+ "git_commit": "30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/30111f180ac4e3611cdbd7d805381a0bb9f53cff",
"git_commit_info": {
- "sha1": "7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
- "message": "Drop lone use of = separator on Kosli CLI boolean flag",
- "author": "JonJagger ",
+ "sha1": "30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "message": "Merge pull request #4 from cyber-dojo/take-both-age-instants-from-one-trail-read\n\nMeasure a vuln's age on the Kosli server's clock alone",
+ "author": "Jon Jagger ",
"branch": "main",
- "timestamp": 1785316994.0,
- "url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584"
+ "timestamp": 1788945655.0,
+ "url": "https://github.com/cyber-dojo/snyk-scanning/commit/30111f180ac4e3611cdbd7d805381a0bb9f53cff"
},
- "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab?artifact_id=868b85f5-e442-42ac-9474-0cbb1ab3",
- "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact/artifacts/f61d363b12c540302c97e4f694c76edc6fcb594852e2dcdb8ce92d2d22521409?artifact_id=9fc7c402-1e99-4822-a233-50a7becb",
+ "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact",
"deployment_diff": {
- "diff_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/compare/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584...7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
- "previous_git_commit": "7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
- "previous_fingerprint": "31a4c3abc3ccef33397ed1d84496a08d94ca9d6f9d0df44b6a72aba9743bc8ac",
- "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/differ:108cccf@sha256:31a4c3abc3ccef33397ed1d84496a08d94ca9d6f9d0df44b6a72aba9743bc8ac",
+ "diff_url": "https://github.com/cyber-dojo/snyk-scanning/compare/ed3c81d7322bb8058615095f4aab28c147c53933...30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "previous_git_commit": "ed3c81d7322bb8058615095f4aab28c147c53933",
+ "previous_fingerprint": "03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab",
+ "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/differ:bcac1c1@sha256:03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab",
"previous_artifact_compliance_state": "COMPLIANT",
"previous_running": false,
- "previous_git_commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/7494758f8bbc4e66cb5df90ef4cd6b72d75ca584",
- "previous_trail_name": "promote-all-33",
+ "previous_git_commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933",
+ "previous_trail_name": "differ-03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab",
"previous_template_reference_name": "differ"
},
- "commit_lead_time": 2938755.0,
+ "commit_lead_time": -78206.0,
"artifact_compliance_in_flow": true,
"flow_reasons_for_non_compliance": []
},
{
"flow_name": "snyk-aws-prod-per-artifact",
- "trail_name": "differ-03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab",
+ "trail_name": "differ-f61d363b12c540302c97e4f694c76edc6fcb594852e2dcdb8ce92d2d22521409",
"template_reference_name": "differ",
- "git_commit": "ed3c81d7322bb8058615095f4aab28c147c53933",
- "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933",
+ "git_commit": "30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/30111f180ac4e3611cdbd7d805381a0bb9f53cff",
"git_commit_info": {
- "sha1": "ed3c81d7322bb8058615095f4aab28c147c53933",
- "message": "Unpack one pinned commit instead of fetching each file\n\n a0c005a moved these two jobs' files to RUNNER_TEMP, which kept them out of\n the caller's checkout but left the prefix repeated at every use. The paths\n are absolute because the run steps stay in the checkout, where the Kosli\n CLI reads git commit information from the working directory, so the prefix\n cannot be dropped. It can only be folded into the definitions, and a\n literal /tmp folds where runner.temp does not: the runner context is\n unavailable in workflow- and job-level env blocks. Both jobs are pinned to\n ubuntu-latest, one fresh VM per job, so /tmp neither collides nor persists.\n\n The files also arrived as five separate fetches of main, one per file, so a\n push landing mid-run could pair a rego policy with params from a different\n commit. find-snyk-vulns already checks this repo out, so it now publishes\n the SHA it resolved, and the two later jobs unpack that exact commit as a\n single tarball. One run reads one version.\n\n An env-var's prefix now says where its file came from: SNYK_SCANNING_ from\n this repo at the pinned commit, CALLER_ from the repo being scanned, TMP_\n produced by the run. That split is worth naming because only one of these\n files is the caller's, and it is the one .snyk that the decision attests\n against. Two bare filenames survive because an artifact name cannot\n contain a '/'.\n\n fetch-url-to-file now has exactly one caller, for that .snyk.",
- "author": "JonJagger ",
+ "sha1": "30111f180ac4e3611cdbd7d805381a0bb9f53cff",
+ "message": "Merge pull request #4 from cyber-dojo/take-both-age-instants-from-one-trail-read\n\nMeasure a vuln's age on the Kosli server's clock alone",
+ "author": "Jon Jagger ",
"branch": "main",
- "timestamp": 1787661987.0,
- "url": "https://github.com/cyber-dojo/snyk-scanning/commit/ed3c81d7322bb8058615095f4aab28c147c53933"
+ "timestamp": 1788945655.0,
+ "url": "https://github.com/cyber-dojo/snyk-scanning/commit/30111f180ac4e3611cdbd7d805381a0bb9f53cff"
},
- "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab?artifact_id=d014796c-e7b5-4b48-92f7-99ec7f8f",
+ "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/f61d363b12c540302c97e4f694c76edc6fcb594852e2dcdb8ce92d2d22521409?artifact_id=47b639ae-b6f8-446f-a5e0-d78cde5e",
"flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact",
"deployment_diff": {
- "diff_url": "https://github.com/cyber-dojo/snyk-scanning/compare/00c479764cb9eca038fdaaaef108672d0bb0ed26...ed3c81d7322bb8058615095f4aab28c147c53933",
+ "diff_url": "https://github.com/cyber-dojo/snyk-scanning/compare/00c479764cb9eca038fdaaaef108672d0bb0ed26...30111f180ac4e3611cdbd7d805381a0bb9f53cff",
"previous_git_commit": "00c479764cb9eca038fdaaaef108672d0bb0ed26",
"previous_fingerprint": "902ec7af03407049ac6e5ef713146d518bbffd9d99cd28715fa0df973e809b7b",
"previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/differ:981dcfc@sha256:902ec7af03407049ac6e5ef713146d518bbffd9d99cd28715fa0df973e809b7b",
@@ -9575,13 +9575,13 @@ kosli get snapshot aws-prod --output=json
"previous_trail_name": "differ-902ec7af03407049ac6e5ef713146d518bbffd9d99cd28715fa0df973e809b7b",
"previous_template_reference_name": "differ"
},
- "commit_lead_time": 593762.0,
+ "commit_lead_time": -78206.0,
"artifact_compliance_in_flow": true,
"flow_reasons_for_non_compliance": []
}
],
"ecs_context": {
- "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/2e9f021f4b484d48a46dc90a3b172b31",
+ "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/796c685a73274536b400dd72e3dea728",
"cluster_name": null,
"service_name": null
}
@@ -9589,9 +9589,9 @@ kosli get snapshot aws-prod --output=json
],
"applied_policies": [
{
- "id": "0b0c4d5a-cc1f-4725-8f97-af256289",
- "name": "pull-request",
- "version": 3,
+ "id": "bdb8a802-a406-4c76-b289-3fe30be3",
+ "name": "production-promotion",
+ "version": 2,
"policy_dump": {
"schema_version": "1",
"artifacts": {
@@ -9606,10 +9606,10 @@ kosli get snapshot aws-prod --output=json
"attestations": [
{
"if_condition": {
- "text": "flow.tags.kind == \"build\""
+ "text": "flow.name == \"production-promotion\""
},
- "name": "*",
- "type": "pull_request",
+ "name": "snyk-scan",
+ "type": "decision",
"must_be_compliant": true,
"for_control": null
}
@@ -9649,9 +9649,9 @@ kosli get snapshot aws-prod --output=json
"failing_artifacts": []
},
{
- "id": "93d8505f-bce5-4c7c-a2c8-f98236c8",
- "name": "snyk-scan-aws-prod",
- "version": 4,
+ "id": "0b0c4d5a-cc1f-4725-8f97-af256289",
+ "name": "pull-request",
+ "version": 3,
"policy_dump": {
"schema_version": "1",
"artifacts": {
@@ -9666,12 +9666,12 @@ kosli get snapshot aws-prod --output=json
"attestations": [
{
"if_condition": {
- "text": "flow.name == \"snyk-aws-prod-per-artifact\""
+ "text": "flow.tags.kind == \"build\""
},
- "name": "snyk-container-scan",
- "type": "decision",
+ "name": "*",
+ "type": "pull_request",
"must_be_compliant": true,
- "for_control": "SDLC-CTRL-0022"
+ "for_control": null
}
]
}
@@ -9679,9 +9679,9 @@ kosli get snapshot aws-prod --output=json
"failing_artifacts": []
},
{
- "id": "bdb8a802-a406-4c76-b289-3fe30be3",
- "name": "production-promotion",
- "version": 2,
+ "id": "93d8505f-bce5-4c7c-a2c8-f98236c8",
+ "name": "snyk-scan-aws-prod",
+ "version": 4,
"policy_dump": {
"schema_version": "1",
"artifacts": {
@@ -9696,12 +9696,12 @@ kosli get snapshot aws-prod --output=json
"attestations": [
{
"if_condition": {
- "text": "flow.name == \"production-promotion\""
+ "text": "flow.name == \"snyk-aws-prod-per-artifact\""
},
- "name": "snyk-scan",
+ "name": "snyk-container-scan",
"type": "decision",
"must_be_compliant": true,
- "for_control": null
+ "for_control": "SDLC-CTRL-0022"
}
]
}
diff --git a/client_reference/kosli_get_trail.md b/client_reference/kosli_get_trail.md
index af1188b..70769c0 100644
--- a/client_reference/kosli_get_trail.md
+++ b/client_reference/kosli_get_trail.md
@@ -23,7 +23,7 @@ Get the metadata of a specific trail.
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_join_environment.md b/client_reference/kosli_join_environment.md
index cb50888..772857c 100644
--- a/client_reference/kosli_join_environment.md
+++ b/client_reference/kosli_join_environment.md
@@ -24,7 +24,7 @@ Join a physical environment to a logical environment.
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_list_api-keys.md b/client_reference/kosli_list_api-keys.md
index 1884576..6ed9ff8 100644
--- a/client_reference/kosli_list_api-keys.md
+++ b/client_reference/kosli_list_api-keys.md
@@ -26,7 +26,7 @@ listed (they are only shown once, at creation or rotation time).
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_list_artifacts.md b/client_reference/kosli_list_artifacts.md
index 0d6fdca..6f6f961 100644
--- a/client_reference/kosli_list_artifacts.md
+++ b/client_reference/kosli_list_artifacts.md
@@ -28,7 +28,7 @@ By default, the page limit is 15 artifacts per page.
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_list_attestation-types.md b/client_reference/kosli_list_attestation-types.md
index 257b91d..18b575b 100644
--- a/client_reference/kosli_list_attestation-types.md
+++ b/client_reference/kosli_list_attestation-types.md
@@ -22,7 +22,7 @@ List all Kosli attestation types for an org.
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_list_controls.md b/client_reference/kosli_list_controls.md
index 5d58f2e..565fbfc 100644
--- a/client_reference/kosli_list_controls.md
+++ b/client_reference/kosli_list_controls.md
@@ -34,7 +34,7 @@ The results are paginated; use --page and --page-limit to navigate the pages.
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_list_environments.md b/client_reference/kosli_list_environments.md
index e9f381d..ea2181e 100644
--- a/client_reference/kosli_list_environments.md
+++ b/client_reference/kosli_list_environments.md
@@ -33,7 +33,7 @@ The list can be filtered by name, type, space and tags, and sorted with --sort a
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
@@ -63,9 +63,9 @@ kosli list environments --output=json
"name": "aws-beta",
"type": "ECS",
"description": "The ECS cluster for staging cyber-dojo",
- "last_modified_at": 1788260423.8795948,
- "last_reported_at": 1788260423.8795948,
- "last_changed_at": 1788256284.0239065,
+ "last_modified_at": 1789114043.9935918,
+ "last_reported_at": 1789114043.9935918,
+ "last_changed_at": 1789113443.9263997,
"state": true,
"include_scaling": false,
"tags": {
@@ -84,9 +84,9 @@ kosli list environments --output=json
"name": "aws-beta-terraform-drift-detection",
"type": "server",
"description": "Detection of drift of the Infrastructure-as-code components of aws-beta",
- "last_modified_at": 1788260408.588247,
- "last_reported_at": 1788260408.588247,
- "last_changed_at": 1788254708.6300995,
+ "last_modified_at": 1789113909.1972687,
+ "last_reported_at": 1789113909.1972687,
+ "last_changed_at": 1789113909.1972687,
"state": true,
"include_scaling": false,
"tags": {},
@@ -100,9 +100,9 @@ kosli list environments --output=json
"name": "aws-prod",
"type": "ECS",
"description": "The ECS cluster for production cyber-dojo",
- "last_modified_at": 1788260398.5436597,
- "last_reported_at": 1788260398.5436597,
- "last_changed_at": 1788256325.6192138,
+ "last_modified_at": 1789114018.585112,
+ "last_reported_at": 1789114018.585112,
+ "last_changed_at": 1789108858.5535865,
"state": true,
"include_scaling": false,
"tags": {
@@ -122,9 +122,9 @@ kosli list environments --output=json
"name": "aws-prod-terraform-drift-detection",
"type": "server",
"description": "Detection of drift of the Infrastructure-as-code components of aws-prod",
- "last_modified_at": 1788260312.0991778,
- "last_reported_at": 1788260312.0991778,
- "last_changed_at": 1788256412.1366148,
+ "last_modified_at": 1789113812.7967694,
+ "last_reported_at": 1789113812.7967694,
+ "last_changed_at": 1789033111.9033823,
"state": true,
"include_scaling": false,
"tags": {},
@@ -138,9 +138,9 @@ kosli list environments --output=json
"name": "production",
"type": "logical",
"description": "Production environments for cyber-dojo",
- "last_modified_at": 1788256412.1366148,
+ "last_modified_at": 1789108858.5535865,
"last_reported_at": null,
- "last_changed_at": 1788256412.1366148,
+ "last_changed_at": 1789108858.5535865,
"state": true,
"include_scaling": false,
"tags": {},
@@ -155,9 +155,9 @@ kosli list environments --output=json
"name": "staging",
"type": "logical",
"description": "Staging environments for cyber-dojo",
- "last_modified_at": 1788256284.0239065,
+ "last_modified_at": 1789113909.1972687,
"last_reported_at": null,
- "last_changed_at": 1788256284.0239065,
+ "last_changed_at": 1789113909.1972687,
"state": true,
"include_scaling": false,
"tags": {},
diff --git a/client_reference/kosli_list_flows.md b/client_reference/kosli_list_flows.md
index 5b82404..5d526a5 100644
--- a/client_reference/kosli_list_flows.md
+++ b/client_reference/kosli_list_flows.md
@@ -29,7 +29,7 @@ The list can be filtered by name with --name (and --ignore-case for case-insensi
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
@@ -68,7 +68,7 @@ kosli list flows --output=json
"kind": "build",
"env": "aws-beta"
},
- "latest_activity_at": 1788256138.680238,
+ "latest_activity_at": 1789023418.5988352,
"latest_state": "COMPLIANT"
},
{
@@ -85,7 +85,7 @@ kosli list flows --output=json
"kind": "build",
"env": "aws-beta"
},
- "latest_activity_at": 1788255478.4228623,
+ "latest_activity_at": 1789022818.5234735,
"latest_state": "COMPLIANT"
},
{
@@ -102,7 +102,7 @@ kosli list flows --output=json
"kind": "build",
"env": "aws-beta"
},
- "latest_activity_at": 1788255478.4228623,
+ "latest_activity_at": 1789022878.756657,
"latest_state": "COMPLIANT"
},
{
@@ -119,7 +119,7 @@ kosli list flows --output=json
"kind": "build",
"env": "aws-beta"
},
- "latest_activity_at": 1788255838.4418423,
+ "latest_activity_at": 1789022818.5234735,
"latest_state": "COMPLIANT"
},
{
@@ -136,7 +136,7 @@ kosli list flows --output=json
"kind": "build",
"env": "aws-beta"
},
- "latest_activity_at": 1788255478.4228623,
+ "latest_activity_at": 1789022878.756657,
"latest_state": "COMPLIANT"
},
{
@@ -153,7 +153,7 @@ kosli list flows --output=json
"kind": "build",
"env": "aws-beta"
},
- "latest_activity_at": 1788255838.4418423,
+ "latest_activity_at": 1789113443.9263997,
"latest_state": "COMPLIANT"
},
{
@@ -218,7 +218,7 @@ kosli list flows --output=json
"kind": "build",
"env": "aws-beta"
},
- "latest_activity_at": 1788255838.4418423,
+ "latest_activity_at": 1789022878.756657,
"latest_state": "COMPLIANT"
},
{
@@ -227,7 +227,7 @@ kosli list flows --output=json
"description": "Promotes sets of Artifacts from aws-beta to aws-prod",
"visibility": "private",
"org": "cyber-dojo",
- "template": "version: 1\n\ntrail:\n attestations:\n - name: all-promotions\n type: generic\n",
+ "template": "version: 1\n\ntrail:\n attestations:\n - name: one-promotion\n type: generic\n",
"repo_url": "https://github.com/cyber-dojo/aws-prod-co-promotion",
"tags": {
"ci": "github",
@@ -235,7 +235,7 @@ kosli list flows --output=json
"kind": "release",
"env": "aws-prod"
},
- "latest_activity_at": 1788254949.8226013,
+ "latest_activity_at": 1789023183.9163306,
"latest_state": "COMPLIANT"
},
{
@@ -264,7 +264,7 @@ kosli list flows --output=json
"kind": "build",
"env": "aws-beta"
},
- "latest_activity_at": 1788255898.5005004,
+ "latest_activity_at": 1789022878.756657,
"latest_state": "COMPLIANT"
},
{
@@ -281,7 +281,7 @@ kosli list flows --output=json
"kind": "build",
"env": "aws-beta"
},
- "latest_activity_at": 1788255478.4228623,
+ "latest_activity_at": 1789022818.5234735,
"latest_state": "COMPLIANT"
},
{
@@ -297,7 +297,7 @@ kosli list flows --output=json
"kind": "run",
"repo_url": "https://github.com/cyber-dojo/secrets"
},
- "latest_activity_at": 1788249204.33249,
+ "latest_activity_at": 1789111286.9981027,
"latest_state": "NON-COMPLIANT"
},
{
@@ -314,7 +314,7 @@ kosli list flows --output=json
"workflow_url": "https://github.com/cyber-dojo/snyk-scanning/blob/main/.github/workflows/aws-beta.yml",
"env": "aws-beta"
},
- "latest_activity_at": 1788254744.4473586,
+ "latest_activity_at": 1789108765.4501896,
"latest_state": "COMPLIANT"
},
{
@@ -331,7 +331,7 @@ kosli list flows --output=json
"kind": "run",
"workflow_url": "https://github.com/cyber-dojo/snyk-scanning/blob/main/.github/workflows/artifact_snyk_test.yml"
},
- "latest_activity_at": 1788252975.2436972,
+ "latest_activity_at": 1788849399.3254054,
"latest_state": "COMPLIANT"
},
{
@@ -348,7 +348,7 @@ kosli list flows --output=json
"workflow_url": "https://github.com/cyber-dojo/snyk-scanning/blob/main/.github/workflows/aws-prod.yml",
"env": "aws-prod"
},
- "latest_activity_at": 1788256311.5220706,
+ "latest_activity_at": 1789108810.121742,
"latest_state": "COMPLIANT"
},
{
@@ -365,7 +365,7 @@ kosli list flows --output=json
"kind": "run",
"workflow_url": "https://github.com/cyber-dojo/snyk-scanning/blob/main/.github/workflows/artifact_snyk_test.yml"
},
- "latest_activity_at": 1788256281.9068878,
+ "latest_activity_at": 1788849388.1978226,
"latest_state": "COMPLIANT"
},
{
@@ -377,9 +377,12 @@ kosli list flows --output=json
"template": "version: 1\n\ntrail:\n attestations:\n - name: pull-request\n type: pull_request\n artifacts:\n - name: spooler\n attestations:\n - name: provenance-facts\n type: custom:provenance-facts\n - name: provenance-decision\n type: decision\n\n - name: sbom-facts\n type: custom:sbom-facts\n - name: sbom-decision\n type: decision\n\n - name: snyk-container-scan\n type: decision\n\n - name: unit-test\n type: junit\n - name: unit-test-metrics\n type: custom:test-metrics\n - name: unit-test-coverage-metrics\n type: custom:coverage-metrics\n - name: integration-test\n type: junit\n - name: integration-test-metrics\n type: custom:test-metrics\n - name: integration-test-coverage-metrics\n type: custom:coverage-metrics\n",
"repo_url": "https://github.com/cyber-dojo/spooler",
"tags": {
- "env": "aws-beta"
+ "env": "aws-beta",
+ "ci": "github",
+ "kind": "build",
+ "url": "https://github.com/cyber-dojo/spooler"
},
- "latest_activity_at": 1788255478.4228623,
+ "latest_activity_at": 1789022878.756657,
"latest_state": "COMPLIANT"
},
{
@@ -391,7 +394,7 @@ kosli list flows --output=json
"template": "version: 1\ntrail:\n attestations:\n - name: terraform-plan\n type: generic\n - name: terraform-apply\n type: generic\n artifacts:\n - name: terraform-state\n - name: drift-plan\n",
"repo_url": "https://github.com/cyber-dojo/creator",
"tags": {},
- "latest_activity_at": 1787836208.8569806,
+ "latest_activity_at": 1789020610.394908,
"latest_state": "COMPLIANT"
},
{
@@ -403,7 +406,7 @@ kosli list flows --output=json
"template": "version: 1\ntrail:\n attestations:\n - name: terraform-plan\n type: generic\n - name: terraform-apply\n type: generic\n artifacts:\n - name: terraform-state\n - name: drift-plan\n",
"repo_url": "https://github.com/cyber-dojo/custom-start-points",
"tags": {},
- "latest_activity_at": 1787839208.4459617,
+ "latest_activity_at": 1788966908.7169383,
"latest_state": "COMPLIANT"
},
{
@@ -415,7 +418,7 @@ kosli list flows --output=json
"template": "version: 1\ntrail:\n attestations:\n - name: terraform-plan\n type: generic\n - name: terraform-apply\n type: generic\n artifacts:\n - name: terraform-state\n - name: drift-plan\n",
"repo_url": "https://github.com/cyber-dojo/dashboard",
"tags": {},
- "latest_activity_at": 1787843108.7875247,
+ "latest_activity_at": 1788966908.7169383,
"latest_state": "COMPLIANT"
},
{
@@ -427,7 +430,7 @@ kosli list flows --output=json
"template": "version: 1\ntrail:\n attestations:\n - name: terraform-plan\n type: generic\n - name: terraform-apply\n type: generic\n artifacts:\n - name: terraform-state\n - name: drift-plan\n",
"repo_url": "https://github.com/cyber-dojo/differ",
"tags": {},
- "latest_activity_at": 1788250508.7286773,
+ "latest_activity_at": 1788979508.704252,
"latest_state": "COMPLIANT"
},
{
@@ -439,7 +442,7 @@ kosli list flows --output=json
"template": "version: 1\ntrail:\n attestations:\n - name: terraform-plan\n type: generic\n - name: terraform-apply\n type: generic\n artifacts:\n - name: terraform-state\n - name: drift-plan\n",
"repo_url": "https://github.com/cyber-dojo/exercises-start-points",
"tags": {},
- "latest_activity_at": 1787839208.4459617,
+ "latest_activity_at": 1788966908.7169383,
"latest_state": "COMPLIANT"
},
{
@@ -451,7 +454,7 @@ kosli list flows --output=json
"template": "version: 1\ntrail:\n attestations:\n - name: terraform-plan\n type: generic\n - name: terraform-apply\n type: generic\n artifacts:\n - name: terraform-state\n - name: drift-plan\n",
"repo_url": "https://github.com/cyber-dojo/languages-start-points",
"tags": {},
- "latest_activity_at": 1788246608.7289636,
+ "latest_activity_at": 1789113909.1972687,
"latest_state": "COMPLIANT"
},
{
@@ -463,7 +466,7 @@ kosli list flows --output=json
"template": "version: 1\ntrail:\n attestations:\n - name: terraform-plan\n type: generic\n - name: terraform-apply\n type: generic\n artifacts:\n - name: terraform-state\n - name: drift-plan\n",
"repo_url": "https://github.com/cyber-dojo/nginx",
"tags": {},
- "latest_activity_at": 1788254708.6300995,
+ "latest_activity_at": 1788966908.7169383,
"latest_state": "COMPLIANT"
},
{
@@ -475,7 +478,7 @@ kosli list flows --output=json
"template": "version: 1\ntrail:\n attestations:\n - name: terraform-plan\n type: generic\n - name: terraform-apply\n type: generic\n artifacts:\n - name: terraform-state\n - name: drift-plan\n",
"repo_url": "https://github.com/cyber-dojo/runner",
"tags": {},
- "latest_activity_at": 1788164408.5952742,
+ "latest_activity_at": 1788779420.6871865,
"latest_state": "COMPLIANT"
},
{
@@ -487,7 +490,7 @@ kosli list flows --output=json
"template": "version: 1\ntrail:\n attestations:\n - name: terraform-plan\n type: generic\n - name: terraform-apply\n type: generic\n artifacts:\n - name: terraform-state\n - name: drift-plan\n",
"repo_url": "https://github.com/cyber-dojo/saver",
"tags": {},
- "latest_activity_at": 1788252908.7716892,
+ "latest_activity_at": 1788966908.7169383,
"latest_state": "COMPLIANT"
},
{
@@ -499,7 +502,7 @@ kosli list flows --output=json
"template": "version: 1\ntrail:\n attestations:\n - name: terraform-plan\n type: generic\n - name: terraform-apply\n type: generic\n artifacts:\n - name: terraform-state\n - name: drift-plan\n",
"repo_url": "https://github.com/cyber-dojo/spooler",
"tags": {},
- "latest_activity_at": 1787904009.021726,
+ "latest_activity_at": 1788965708.8099022,
"latest_state": "COMPLIANT"
},
{
@@ -511,7 +514,7 @@ kosli list flows --output=json
"template": "version: 1\ntrail:\n attestations:\n - name: terraform-plan\n type: generic\n - name: terraform-apply\n type: generic\n - name: pull-request\n type: pull_request\n artifacts:\n - name: terraform-state\n - name: drift-plan\n",
"repo_url": "https://github.com/cyber-dojo/terraform-base-infra",
"tags": {},
- "latest_activity_at": 1785232808.6739333,
+ "latest_activity_at": 1789022420.955772,
"latest_state": "COMPLIANT"
},
{
@@ -523,7 +526,7 @@ kosli list flows --output=json
"template": "version: 1\ntrail:\n attestations:\n - name: terraform-plan\n type: generic\n - name: terraform-apply\n type: generic\n artifacts:\n - name: terraform-state\n - name: drift-plan\n",
"repo_url": "https://github.com/cyber-dojo/web",
"tags": {},
- "latest_activity_at": 1787905808.789012,
+ "latest_activity_at": 1788966908.7169383,
"latest_state": "COMPLIANT"
},
{
@@ -533,9 +536,9 @@ kosli list flows --output=json
"visibility": "private",
"org": "cyber-dojo",
"template": "version: 1\ntrail:\n attestations:\n - name: terraform-plan\n type: generic\n - name: terraform-apply\n type: generic\n artifacts:\n - name: terraform-state\n - name: drift-plan\n",
- "repo_url": "https://github.com/cyber-dojo/runner",
+ "repo_url": "https://github.com/cyber-dojo/creator",
"tags": {},
- "latest_activity_at": 1788256412.1366148,
+ "latest_activity_at": 1789023513.161667,
"latest_state": "COMPLIANT"
},
{
@@ -559,7 +562,7 @@ kosli list flows --output=json
"template": "version: 1\ntrail:\n attestations:\n - name: terraform-plan\n type: generic\n - name: terraform-apply\n type: generic\n - name: pull-request\n type: pull_request\n artifacts:\n - name: terraform-state\n - name: drift-plan\n",
"repo_url": "https://github.com/cyber-dojo/terraform-base-infra",
"tags": {},
- "latest_activity_at": 1785236322.8149745,
+ "latest_activity_at": 1789033111.9033823,
"latest_state": "COMPLIANT"
},
{
@@ -571,7 +574,7 @@ kosli list flows --output=json
"template": "version: 1\ntrail:\n attestations:\n - name: terraform-plan\n type: generic\n",
"repo_url": "",
"tags": {},
- "latest_activity_at": 1785166016.9913907,
+ "latest_activity_at": 1788864204.335966,
"latest_state": "COMPLIANT"
},
{
@@ -583,7 +586,7 @@ kosli list flows --output=json
"template": "version: 1\ntrail:\n attestations:\n - name: terraform-plan\n type: generic\n",
"repo_url": "",
"tags": {},
- "latest_activity_at": 1785232718.7436328,
+ "latest_activity_at": 1789025050.5326853,
"latest_state": "COMPLIANT"
},
{
@@ -600,7 +603,7 @@ kosli list flows --output=json
"kind": "build",
"env": "aws-beta"
},
- "latest_activity_at": 1788074998.5362537,
+ "latest_activity_at": 1789022878.756657,
"latest_state": "COMPLIANT"
}
]
diff --git a/client_reference/kosli_list_policies.md b/client_reference/kosli_list_policies.md
index 3c54b12..47e5afe 100644
--- a/client_reference/kosli_list_policies.md
+++ b/client_reference/kosli_list_policies.md
@@ -22,7 +22,7 @@ List environment policies for an org.
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_list_repos.md b/client_reference/kosli_list_repos.md
index 6121252..4a12b16 100644
--- a/client_reference/kosli_list_repos.md
+++ b/client_reference/kosli_list_repos.md
@@ -36,7 +36,7 @@ Results are sorted by repo name; use --sort-direction to choose asc or desc.
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_list_service-accounts.md b/client_reference/kosli_list_service-accounts.md
index 69b58a5..9824050 100644
--- a/client_reference/kosli_list_service-accounts.md
+++ b/client_reference/kosli_list_service-accounts.md
@@ -26,7 +26,7 @@ response for scripting.
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_list_snapshots.md b/client_reference/kosli_list_snapshots.md
index 4daf90d..8c0cd4f 100644
--- a/client_reference/kosli_list_snapshots.md
+++ b/client_reference/kosli_list_snapshots.md
@@ -38,7 +38,7 @@ Either expression can be omitted to default to NOW.
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
@@ -64,109 +64,109 @@ kosli list snapshots aws-prod --output=json
```json
[
{
- "index": 5309,
- "from": 1788256325.6192138,
+ "index": 5352,
+ "from": 1789108858.5535865,
"to": 0.0,
"compliant": true,
- "duration": 4114.5881407260895
+ "duration": 5193.242860555649
},
{
- "index": 5308,
- "from": 1788256258.609352,
- "to": 1788256325.6192138,
+ "index": 5351,
+ "from": 1789108798.4511206,
+ "to": 1789108858.5535865,
"compliant": true,
- "duration": 67.00986170768738
+ "duration": 60.102465867996216
},
{
- "index": 5307,
- "from": 1788256138.680238,
- "to": 1788256258.609352,
+ "index": 5350,
+ "from": 1789023418.5988352,
+ "to": 1789108798.4511206,
"compliant": true,
- "duration": 119.92911410331726
+ "duration": 85379.85228538513
},
{
- "index": 5306,
- "from": 1788256078.451175,
- "to": 1788256138.680238,
+ "index": 5349,
+ "from": 1789023358.6002493,
+ "to": 1789023418.5988352,
"compliant": true,
- "duration": 60.22906303405762
+ "duration": 59.99858593940735
},
{
- "index": 5305,
- "from": 1788255898.5005004,
- "to": 1788256078.451175,
+ "index": 5348,
+ "from": 1789022878.756657,
+ "to": 1789023358.6002493,
"compliant": true,
- "duration": 179.950674533844
+ "duration": 479.8435924053192
},
{
- "index": 5304,
- "from": 1788255838.4418423,
- "to": 1788255898.5005004,
+ "index": 5347,
+ "from": 1789022818.5234735,
+ "to": 1789022878.756657,
"compliant": true,
- "duration": 60.05865812301636
+ "duration": 60.23318338394165
},
{
- "index": 5303,
- "from": 1788255778.7566388,
- "to": 1788255838.4418423,
- "compliant": true,
- "duration": 59.685203552246094
+ "index": 5346,
+ "from": 1789022458.3400946,
+ "to": 1789022818.5234735,
+ "compliant": false,
+ "duration": 360.18337893486023
},
{
- "index": 5302,
- "from": 1788255478.4228623,
- "to": 1788255778.7566388,
+ "index": 5345,
+ "from": 1789022398.786734,
+ "to": 1789022458.3400946,
"compliant": true,
- "duration": 300.333776473999
+ "duration": 59.55336046218872
},
{
- "index": 5301,
- "from": 1788255418.2849495,
- "to": 1788255478.4228623,
+ "index": 5344,
+ "from": 1788964738.4864616,
+ "to": 1789022398.786734,
"compliant": true,
- "duration": 60.13791275024414
+ "duration": 57660.30027246475
},
{
- "index": 5300,
- "from": 1788254758.42325,
- "to": 1788255418.2849495,
+ "index": 5343,
+ "from": 1788957658.4472558,
+ "to": 1788964738.4864616,
"compliant": true,
- "duration": 659.8616995811462
+ "duration": 7080.039205789566
},
{
- "index": 5299,
- "from": 1788253018.4181795,
- "to": 1788254758.42325,
+ "index": 5342,
+ "from": 1788945958.5053656,
+ "to": 1788957658.4472558,
"compliant": true,
- "duration": 1740.0050704479218
+ "duration": 11699.941890239716
},
{
- "index": 5298,
- "from": 1788251398.4699006,
- "to": 1788253018.4181795,
+ "index": 5341,
+ "from": 1788945898.464788,
+ "to": 1788945958.5053656,
"compliant": true,
- "duration": 1619.9482789039612
+ "duration": 60.04057765007019
},
{
- "index": 5297,
- "from": 1788245458.5681827,
- "to": 1788251398.4699006,
+ "index": 5340,
+ "from": 1788936118.496684,
+ "to": 1788945898.464788,
"compliant": true,
- "duration": 5939.90171790123
+ "duration": 9779.96810388565
},
{
- "index": 5296,
- "from": 1788245398.8278637,
- "to": 1788245458.5681827,
+ "index": 5339,
+ "from": 1788935998.397991,
+ "to": 1788936118.496684,
"compliant": true,
- "duration": 59.74031901359558
+ "duration": 120.09869313240051
},
{
- "index": 5295,
- "from": 1788245338.6744468,
- "to": 1788245398.8278637,
+ "index": 5338,
+ "from": 1788867598.4601083,
+ "to": 1788935998.397991,
"compliant": true,
- "duration": 60.153416872024536
+ "duration": 68399.93788266182
}
]
```
diff --git a/client_reference/kosli_list_trails.md b/client_reference/kosli_list_trails.md
index 8d6b6f1..50240c8 100644
--- a/client_reference/kosli_list_trails.md
+++ b/client_reference/kosli_list_trails.md
@@ -27,7 +27,7 @@ List Trails of an org.The list can be filtered by flow, flow tag and artifact fi
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_log_environment.md b/client_reference/kosli_log_environment.md
index 4e43c37..93c6b4c 100644
--- a/client_reference/kosli_log_environment.md
+++ b/client_reference/kosli_log_environment.md
@@ -45,7 +45,7 @@ You can also filter events by range using --start/--end (snapshot index or time
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
@@ -72,24 +72,24 @@ kosli log environment aws-prod --output=json
[
{
"environment_name": "aws-prod",
- "snapshot_index": 5309,
- "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/saver:84e986a@sha256:06f85cc53010535e46f13c348a1aaf5c8dfee0c0fea7f81105312b6c87d5d05f",
- "sha256": "06f85cc53010535e46f13c348a1aaf5c8dfee0c0fea7f81105312b6c87d5d05f",
+ "snapshot_index": 5352,
+ "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/creator:99d7b74@sha256:a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424",
+ "sha256": "a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424",
"description": "1 instance changed",
- "reported_at": 1788256325.6192138,
- "pipeline": "saver-ci",
+ "reported_at": 1789108858.5535865,
+ "pipeline": "creator-ci",
"deployments": [],
"flows": [
{
- "flow_name": "saver-ci",
+ "flow_name": "creator-ci",
"deployments": null
},
{
- "flow_name": "snyk-aws-beta-per-artifact",
+ "flow_name": "production-promotion",
"deployments": null
},
{
- "flow_name": "production-promotion",
+ "flow_name": "snyk-aws-beta-per-artifact",
"deployments": null
},
{
@@ -100,38 +100,38 @@ kosli log environment aws-prod --output=json
"artifact_compliance": true,
"snapshot_compliance": true,
"type": "updated-provenance",
- "code_diff": "https://github.com/cyber-dojo/saver/compare/36f0420f728fe61e44a3ab0043cf9a3d70863cad...84e986ad70d32e9be362d5bd9ce7c7af94f6eaab",
+ "code_diff": "https://github.com/cyber-dojo/creator/compare/abdc61396b5031dbb1e90f5c9c190d303ff243e1...99d7b74f39e311d492902ad48dbe97da63f2c687",
"_links": {
"artifact": {
- "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/saver-ci/fingerprint/06f85cc53010535e46f13c348a1aaf5c8dfee0c0fea7f81105312b6c87d5d05f",
- "html": "https://app.kosli.com/cyber-dojo/flows/saver-ci/artifacts/06f85cc53010535e46f13c348a1aaf5c8dfee0c0fea7f81105312b6c87d5d05f?artifact_id=a599cb04-5965-46a6-a774-24dc6341"
+ "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/creator-ci/fingerprint/a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424",
+ "html": "https://app.kosli.com/cyber-dojo/flows/creator-ci/artifacts/a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424?artifact_id=205424b6-5741-4071-bd36-c26e83f6"
},
"snapshot": {
- "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/5309",
- "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/5309"
+ "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/5352",
+ "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/5352"
}
}
},
{
"environment_name": "aws-prod",
- "snapshot_index": 5309,
- "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/nginx:27b3504@sha256:1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21",
- "sha256": "1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21",
+ "snapshot_index": 5351,
+ "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/languages-start-points:5d1d4b6@sha256:040bd44819d9e92728fb3b338f6582d4345cd69df769c59e94c61ac0336ad909",
+ "sha256": "040bd44819d9e92728fb3b338f6582d4345cd69df769c59e94c61ac0336ad909",
"description": "1 instance changed",
- "reported_at": 1788256325.6192138,
- "pipeline": "nginx-ci",
+ "reported_at": 1789108798.4511206,
+ "pipeline": "languages-start-points-ci",
"deployments": [],
"flows": [
{
- "flow_name": "nginx-ci",
+ "flow_name": "languages-start-points-ci",
"deployments": null
},
{
- "flow_name": "snyk-aws-beta-per-artifact",
+ "flow_name": "production-promotion",
"deployments": null
},
{
- "flow_name": "production-promotion",
+ "flow_name": "snyk-aws-beta-per-artifact",
"deployments": null
},
{
@@ -141,26 +141,26 @@ kosli log environment aws-prod --output=json
],
"artifact_compliance": true,
"snapshot_compliance": true,
- "type": "updated-provenance",
- "code_diff": "https://github.com/cyber-dojo/nginx/compare/fb791742054fa28dd89269aac8002ebfd7b3386e...27b350410ebcca5ff192f2ca4cdd0e3e49f5ac65",
+ "type": "changed",
+ "code_diff": "https://github.com/cyber-dojo/languages-start-points/compare/8e6b51867675d4b652a38353611cde1d8567fce0...5d1d4b6035691d7986e05ab263e521b3e711fa0c",
"_links": {
"artifact": {
- "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/nginx-ci/fingerprint/1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21",
- "html": "https://app.kosli.com/cyber-dojo/flows/nginx-ci/artifacts/1d1a2f8e2ea649bac20578eea7b18c9f03cda4cad5118cefbf425521a77ead21?artifact_id=9045bb07-ea42-482f-99c3-4fe5b86f"
+ "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/languages-start-points-ci/fingerprint/040bd44819d9e92728fb3b338f6582d4345cd69df769c59e94c61ac0336ad909",
+ "html": "https://app.kosli.com/cyber-dojo/flows/languages-start-points-ci/artifacts/040bd44819d9e92728fb3b338f6582d4345cd69df769c59e94c61ac0336ad909?artifact_id=f5813ac8-1ad7-433a-beee-f90a065d"
},
"snapshot": {
- "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/5309",
- "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/5309"
+ "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/5351",
+ "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/5351"
}
}
},
{
"environment_name": "aws-prod",
- "snapshot_index": 5309,
- "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:ff9f292@sha256:2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f",
- "sha256": "2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f",
+ "snapshot_index": 5351,
+ "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:6b20a42@sha256:4889ce921333abe3acc52880342a6ceb27cd66482e4f8fc93e20d5a91d972d29",
+ "sha256": "4889ce921333abe3acc52880342a6ceb27cd66482e4f8fc93e20d5a91d972d29",
"description": "1 instance changed",
- "reported_at": 1788256325.6192138,
+ "reported_at": 1789108798.4511206,
"pipeline": "dashboard-ci",
"deployments": [],
"flows": [
@@ -169,11 +169,11 @@ kosli log environment aws-prod --output=json
"deployments": null
},
{
- "flow_name": "snyk-aws-beta-per-artifact",
+ "flow_name": "production-promotion",
"deployments": null
},
{
- "flow_name": "production-promotion",
+ "flow_name": "snyk-aws-beta-per-artifact",
"deployments": null
},
{
@@ -183,39 +183,39 @@ kosli log environment aws-prod --output=json
],
"artifact_compliance": true,
"snapshot_compliance": true,
- "type": "updated-provenance",
- "code_diff": "https://github.com/cyber-dojo/dashboard/compare/2b300f450f72006f6a9000aaf9cd04485f1e8095...ff9f292e809801d35246183988b7812826bc2760",
+ "type": "changed",
+ "code_diff": "https://github.com/cyber-dojo/dashboard/compare/ff9f292e809801d35246183988b7812826bc2760...6b20a423d5ce05139d4480e9ce67f40e3eda2e07",
"_links": {
"artifact": {
- "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/dashboard-ci/fingerprint/2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f",
- "html": "https://app.kosli.com/cyber-dojo/flows/dashboard-ci/artifacts/2827829889b4acc994c3ffbfca250346d5f1f0ddf21847bcbe4864ae484ebe4f?artifact_id=aa6c0c1d-2d5d-4c98-9f9d-1160dd2f"
+ "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/dashboard-ci/fingerprint/4889ce921333abe3acc52880342a6ceb27cd66482e4f8fc93e20d5a91d972d29",
+ "html": "https://app.kosli.com/cyber-dojo/flows/dashboard-ci/artifacts/4889ce921333abe3acc52880342a6ceb27cd66482e4f8fc93e20d5a91d972d29?artifact_id=7ba704a0-8706-4f12-9eb8-776c7e5d"
},
"snapshot": {
- "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/5309",
- "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/5309"
+ "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/5351",
+ "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/5351"
}
}
},
{
"environment_name": "aws-prod",
- "snapshot_index": 5309,
- "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/languages-start-points:a357ebd@sha256:28bc41a2185a154249b1d06983741c39beb3574ebdce7273963ecde2ae9dd832",
- "sha256": "28bc41a2185a154249b1d06983741c39beb3574ebdce7273963ecde2ae9dd832",
- "description": "1 instance changed",
- "reported_at": 1788256325.6192138,
- "pipeline": "languages-start-points-ci",
+ "snapshot_index": 5351,
+ "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:4b2bfc0@sha256:8e36719b74e24f93433b2fa52107beec253f7f5dc2fcefc4aad60befe31db65f",
+ "sha256": "8e36719b74e24f93433b2fa52107beec253f7f5dc2fcefc4aad60befe31db65f",
+ "description": "3 instances changed",
+ "reported_at": 1789108798.4511206,
+ "pipeline": "runner-ci",
"deployments": [],
"flows": [
{
- "flow_name": "languages-start-points-ci",
+ "flow_name": "runner-ci",
"deployments": null
},
{
- "flow_name": "snyk-aws-beta-per-artifact",
+ "flow_name": "production-promotion",
"deployments": null
},
{
- "flow_name": "production-promotion",
+ "flow_name": "snyk-aws-beta-per-artifact",
"deployments": null
},
{
@@ -225,39 +225,39 @@ kosli log environment aws-prod --output=json
],
"artifact_compliance": true,
"snapshot_compliance": true,
- "type": "updated-provenance",
- "code_diff": "https://github.com/cyber-dojo/languages-start-points/compare/068b3424c7da843a4f2d428d2e4915f33efc4a02...a357ebd85acdd54968fa0192405aaf2e289d27c9",
+ "type": "changed",
+ "code_diff": "https://github.com/cyber-dojo/runner/compare/ca65b67c3e311fbdd2435609fdb6f8a5479f66f9...4b2bfc038576e2a7648090c4c1289fbc9ebfc481",
"_links": {
"artifact": {
- "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/languages-start-points-ci/fingerprint/28bc41a2185a154249b1d06983741c39beb3574ebdce7273963ecde2ae9dd832",
- "html": "https://app.kosli.com/cyber-dojo/flows/languages-start-points-ci/artifacts/28bc41a2185a154249b1d06983741c39beb3574ebdce7273963ecde2ae9dd832?artifact_id=8e028a8d-a1f2-4732-8663-47012b29"
+ "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/runner-ci/fingerprint/8e36719b74e24f93433b2fa52107beec253f7f5dc2fcefc4aad60befe31db65f",
+ "html": "https://app.kosli.com/cyber-dojo/flows/runner-ci/artifacts/8e36719b74e24f93433b2fa52107beec253f7f5dc2fcefc4aad60befe31db65f?artifact_id=612b9903-ce02-40a7-a329-77b10931"
},
"snapshot": {
- "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/5309",
- "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/5309"
+ "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/5351",
+ "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/5351"
}
}
},
{
"environment_name": "aws-prod",
- "snapshot_index": 5309,
- "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/custom-start-points:b12a5c9@sha256:34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09",
- "sha256": "34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09",
+ "snapshot_index": 5351,
+ "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/saver:7c4708f@sha256:9cfef3281fc531a3c5a5a00ed8a67256e1b954b5271b03936808623960afebfc",
+ "sha256": "9cfef3281fc531a3c5a5a00ed8a67256e1b954b5271b03936808623960afebfc",
"description": "1 instance changed",
- "reported_at": 1788256325.6192138,
- "pipeline": "custom-start-points-ci",
+ "reported_at": 1789108798.4511206,
+ "pipeline": "saver-ci",
"deployments": [],
"flows": [
{
- "flow_name": "custom-start-points-ci",
+ "flow_name": "saver-ci",
"deployments": null
},
{
- "flow_name": "snyk-aws-beta-per-artifact",
+ "flow_name": "production-promotion",
"deployments": null
},
{
- "flow_name": "production-promotion",
+ "flow_name": "snyk-aws-beta-per-artifact",
"deployments": null
},
{
@@ -267,31 +267,31 @@ kosli log environment aws-prod --output=json
],
"artifact_compliance": true,
"snapshot_compliance": true,
- "type": "updated-provenance",
- "code_diff": "https://github.com/cyber-dojo/custom-start-points/compare/790d86b66f4d86ab47f5c521daf5039dc8aeef4d...b12a5c9b17023462d13e81381a69c7ef05f84dc2",
+ "type": "changed",
+ "code_diff": "https://github.com/cyber-dojo/saver/compare/9030f8f46e738d94bd817727b8f8a9a54f106585...7c4708f675a7717376529273ec32d08cd93f5c26",
"_links": {
"artifact": {
- "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/custom-start-points-ci/fingerprint/34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09",
- "html": "https://app.kosli.com/cyber-dojo/flows/custom-start-points-ci/artifacts/34fd30b5a876821ef7047c3e3af23158705ec2ea1f63fa784854639ccd807b09?artifact_id=2aa23627-9e91-488e-b3ea-e4bf2e22"
+ "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/saver-ci/fingerprint/9cfef3281fc531a3c5a5a00ed8a67256e1b954b5271b03936808623960afebfc",
+ "html": "https://app.kosli.com/cyber-dojo/flows/saver-ci/artifacts/9cfef3281fc531a3c5a5a00ed8a67256e1b954b5271b03936808623960afebfc?artifact_id=326e1373-e805-48be-bfc7-6631db28"
},
"snapshot": {
- "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/5309",
- "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/5309"
+ "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/5351",
+ "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/5351"
}
}
},
{
"environment_name": "aws-prod",
- "snapshot_index": 5309,
- "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/web:cbe481c@sha256:36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc",
- "sha256": "36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc",
- "description": "3 instances changed",
- "reported_at": 1788256325.6192138,
- "pipeline": "web-ci",
+ "snapshot_index": 5351,
+ "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/spooler:5e4740c@sha256:9ef10b455706661560fee5c47aebcb592f0936fdaa1db1a0ad06590c6f39b86f",
+ "sha256": "9ef10b455706661560fee5c47aebcb592f0936fdaa1db1a0ad06590c6f39b86f",
+ "description": "1 instance changed",
+ "reported_at": 1789108798.4511206,
+ "pipeline": "spooler-ci",
"deployments": [],
"flows": [
{
- "flow_name": "web-ci",
+ "flow_name": "spooler-ci",
"deployments": null
},
{
@@ -309,35 +309,31 @@ kosli log environment aws-prod --output=json
],
"artifact_compliance": true,
"snapshot_compliance": true,
- "type": "updated-provenance",
- "code_diff": "https://github.com/cyber-dojo/web/compare/5e4b9873df93525c041c386c06e0ab8fc36b6f33...cbe481c4b842f897e4e9e411cd78461a3a12a334",
+ "type": "changed",
+ "code_diff": "https://github.com/cyber-dojo/spooler/compare/90c8d982d2ff8c4950f7aca4d0a1e9d29ac74e1f...5e4740c1146988f2e90cd2eb2fc6de0f8603e20a",
"_links": {
"artifact": {
- "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/web-ci/fingerprint/36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc",
- "html": "https://app.kosli.com/cyber-dojo/flows/web-ci/artifacts/36ad0020c6cd8716c1463808a185ca65379ec8151a9619d72549ee597d86accc?artifact_id=41957e62-eaad-48d2-af40-46879efb"
+ "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/spooler-ci/fingerprint/9ef10b455706661560fee5c47aebcb592f0936fdaa1db1a0ad06590c6f39b86f",
+ "html": "https://app.kosli.com/cyber-dojo/flows/spooler-ci/artifacts/9ef10b455706661560fee5c47aebcb592f0936fdaa1db1a0ad06590c6f39b86f?artifact_id=df1b0b8e-7efa-415e-860d-9123aa27"
},
"snapshot": {
- "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/5309",
- "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/5309"
+ "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/5351",
+ "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/5351"
}
}
},
{
"environment_name": "aws-prod",
- "snapshot_index": 5309,
- "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/exercises-start-points:f22a30e@sha256:41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6",
- "sha256": "41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6",
+ "snapshot_index": 5351,
+ "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/creator:99d7b74@sha256:a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424",
+ "sha256": "a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424",
"description": "1 instance changed",
- "reported_at": 1788256325.6192138,
- "pipeline": "exercises-start-points-ci",
+ "reported_at": 1789108798.4511206,
+ "pipeline": "creator-ci",
"deployments": [],
"flows": [
{
- "flow_name": "exercises-start-points-ci",
- "deployments": null
- },
- {
- "flow_name": "snyk-aws-beta-per-artifact",
+ "flow_name": "creator-ci",
"deployments": null
},
{
@@ -345,45 +341,45 @@ kosli log environment aws-prod --output=json
"deployments": null
},
{
- "flow_name": "snyk-aws-prod-per-artifact",
+ "flow_name": "snyk-aws-beta-per-artifact",
"deployments": null
}
],
"artifact_compliance": true,
"snapshot_compliance": true,
"type": "updated-provenance",
- "code_diff": "https://github.com/cyber-dojo/exercises-start-points/compare/258b6d07d2b28ad5cb2ce6d29934997f72380f1a...f22a30ed7659b05a88c22e9f22dc2388f2deb8c8",
+ "code_diff": "https://github.com/cyber-dojo/creator/compare/abdc61396b5031dbb1e90f5c9c190d303ff243e1...99d7b74f39e311d492902ad48dbe97da63f2c687",
"_links": {
"artifact": {
- "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/exercises-start-points-ci/fingerprint/41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6",
- "html": "https://app.kosli.com/cyber-dojo/flows/exercises-start-points-ci/artifacts/41aab2a45d074e91162ffde031d094118f0be3bdffa4d769ea24b415f5e8a9d6?artifact_id=aa4300d4-b690-4d71-9596-6af987e1"
+ "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/creator-ci/fingerprint/a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424",
+ "html": "https://app.kosli.com/cyber-dojo/flows/creator-ci/artifacts/a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424?artifact_id=205424b6-5741-4071-bd36-c26e83f6"
},
"snapshot": {
- "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/5309",
- "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/5309"
+ "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/5351",
+ "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/5351"
}
}
},
{
"environment_name": "aws-prod",
- "snapshot_index": 5309,
- "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/spooler:90c8d98@sha256:6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd",
- "sha256": "6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd",
+ "snapshot_index": 5351,
+ "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/nginx:bd3938c@sha256:aa63057d266fea8e2336b5d046a85889dd2ec37023cb81a465f6fff6c999c2c5",
+ "sha256": "aa63057d266fea8e2336b5d046a85889dd2ec37023cb81a465f6fff6c999c2c5",
"description": "1 instance changed",
- "reported_at": 1788256325.6192138,
- "pipeline": "spooler-ci",
+ "reported_at": 1789108798.4511206,
+ "pipeline": "nginx-ci",
"deployments": [],
"flows": [
{
- "flow_name": "spooler-ci",
+ "flow_name": "nginx-ci",
"deployments": null
},
{
- "flow_name": "snyk-aws-beta-per-artifact",
+ "flow_name": "production-promotion",
"deployments": null
},
{
- "flow_name": "production-promotion",
+ "flow_name": "snyk-aws-beta-per-artifact",
"deployments": null
},
{
@@ -393,39 +389,39 @@ kosli log environment aws-prod --output=json
],
"artifact_compliance": true,
"snapshot_compliance": true,
- "type": "updated-provenance",
- "code_diff": "https://github.com/cyber-dojo/spooler/compare/dc7dea2d9086fcdfe4629f3ab02501ed92aad1bb...90c8d982d2ff8c4950f7aca4d0a1e9d29ac74e1f",
+ "type": "changed",
+ "code_diff": "https://github.com/cyber-dojo/nginx/compare/27b350410ebcca5ff192f2ca4cdd0e3e49f5ac65...bd3938c88623bff4f02e1c2f12e97f7cd60523e3",
"_links": {
"artifact": {
- "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/spooler-ci/fingerprint/6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd",
- "html": "https://app.kosli.com/cyber-dojo/flows/spooler-ci/artifacts/6440151a9419255a47d8f9fb0e610f5af3f555ad68fa84a50f950abae8b098fd?artifact_id=6df79438-91a2-4c2b-a945-52fb5218"
+ "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/nginx-ci/fingerprint/aa63057d266fea8e2336b5d046a85889dd2ec37023cb81a465f6fff6c999c2c5",
+ "html": "https://app.kosli.com/cyber-dojo/flows/nginx-ci/artifacts/aa63057d266fea8e2336b5d046a85889dd2ec37023cb81a465f6fff6c999c2c5?artifact_id=30338133-ceb7-4976-8956-e0b140cf"
},
"snapshot": {
- "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/5309",
- "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/5309"
+ "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/5351",
+ "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/5351"
}
}
},
{
"environment_name": "aws-prod",
- "snapshot_index": 5309,
- "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/creator:d64d2b1@sha256:c48710e3304e24406c03381a31d01f520ab2f60846aa0b57adbda0a776ebc1ab",
- "sha256": "c48710e3304e24406c03381a31d01f520ab2f60846aa0b57adbda0a776ebc1ab",
+ "snapshot_index": 5351,
+ "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/exercises-start-points:d01bb39@sha256:bc1dae4e8ce742e027a6dc6b68e44c65361cd48e588483d3fd9f6d6911a84c31",
+ "sha256": "bc1dae4e8ce742e027a6dc6b68e44c65361cd48e588483d3fd9f6d6911a84c31",
"description": "1 instance changed",
- "reported_at": 1788256325.6192138,
- "pipeline": "creator-ci",
+ "reported_at": 1789108798.4511206,
+ "pipeline": "exercises-start-points-ci",
"deployments": [],
"flows": [
{
- "flow_name": "creator-ci",
+ "flow_name": "exercises-start-points-ci",
"deployments": null
},
{
- "flow_name": "snyk-aws-beta-per-artifact",
+ "flow_name": "production-promotion",
"deployments": null
},
{
- "flow_name": "production-promotion",
+ "flow_name": "snyk-aws-beta-per-artifact",
"deployments": null
},
{
@@ -435,39 +431,39 @@ kosli log environment aws-prod --output=json
],
"artifact_compliance": true,
"snapshot_compliance": true,
- "type": "updated-provenance",
- "code_diff": "https://github.com/cyber-dojo/creator/compare/83357f112ef5c10b157cb84732c77965cc8ddc48...d64d2b11879179255f11dc991e81fbaf4a040264",
+ "type": "changed",
+ "code_diff": "https://github.com/cyber-dojo/exercises-start-points/compare/f22a30ed7659b05a88c22e9f22dc2388f2deb8c8...d01bb39495a1356eabe934bef84b92cc964a26f1",
"_links": {
"artifact": {
- "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/creator-ci/fingerprint/c48710e3304e24406c03381a31d01f520ab2f60846aa0b57adbda0a776ebc1ab",
- "html": "https://app.kosli.com/cyber-dojo/flows/creator-ci/artifacts/c48710e3304e24406c03381a31d01f520ab2f60846aa0b57adbda0a776ebc1ab?artifact_id=61384b36-4d32-43f2-8d5d-a72e2e7e"
+ "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/exercises-start-points-ci/fingerprint/bc1dae4e8ce742e027a6dc6b68e44c65361cd48e588483d3fd9f6d6911a84c31",
+ "html": "https://app.kosli.com/cyber-dojo/flows/exercises-start-points-ci/artifacts/bc1dae4e8ce742e027a6dc6b68e44c65361cd48e588483d3fd9f6d6911a84c31?artifact_id=6884abdb-afdd-4c56-aa14-94e8da5c"
},
"snapshot": {
- "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/5309",
- "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/5309"
+ "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/5351",
+ "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/5351"
}
}
},
{
"environment_name": "aws-prod",
- "snapshot_index": 5308,
- "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/differ:bcac1c1@sha256:03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab",
- "sha256": "03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab",
- "description": "1 instance changed",
- "reported_at": 1788256258.609352,
- "pipeline": "differ-ci",
+ "snapshot_index": 5351,
+ "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/web:236898f@sha256:e24bd03714d2e583a2196c0eaf82b2aad8eeecf73f29aec58875994b82f0f418",
+ "sha256": "e24bd03714d2e583a2196c0eaf82b2aad8eeecf73f29aec58875994b82f0f418",
+ "description": "3 instances changed",
+ "reported_at": 1789108798.4511206,
+ "pipeline": "web-ci",
"deployments": [],
"flows": [
{
- "flow_name": "differ-ci",
+ "flow_name": "web-ci",
"deployments": null
},
{
- "flow_name": "snyk-aws-beta-per-artifact",
+ "flow_name": "production-promotion",
"deployments": null
},
{
- "flow_name": "production-promotion",
+ "flow_name": "snyk-aws-beta-per-artifact",
"deployments": null
},
{
@@ -477,39 +473,39 @@ kosli log environment aws-prod --output=json
],
"artifact_compliance": true,
"snapshot_compliance": true,
- "type": "updated-provenance",
- "code_diff": "https://github.com/cyber-dojo/differ/compare/108cccf9bccf9af5d455db66c250480b53cbecc7...bcac1c18385b2573ef6c6e8eeae0f62ed14a03de",
+ "type": "changed",
+ "code_diff": "https://github.com/cyber-dojo/web/compare/cbe481c4b842f897e4e9e411cd78461a3a12a334...236898f12a3bcce3b60625dd71c6f817d4cc37c2",
"_links": {
"artifact": {
- "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/differ-ci/fingerprint/03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab",
- "html": "https://app.kosli.com/cyber-dojo/flows/differ-ci/artifacts/03e520a0dcb9da3889b23ef3ab7f0fa29e4c4a7a9d42c2ce022b78a053157bab?artifact_id=11345222-f37a-4f8d-8051-ec26a321"
+ "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/web-ci/fingerprint/e24bd03714d2e583a2196c0eaf82b2aad8eeecf73f29aec58875994b82f0f418",
+ "html": "https://app.kosli.com/cyber-dojo/flows/web-ci/artifacts/e24bd03714d2e583a2196c0eaf82b2aad8eeecf73f29aec58875994b82f0f418?artifact_id=9d418e45-a78d-462a-b8be-aaf2fc85"
},
"snapshot": {
- "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/5308",
- "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/5308"
+ "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/5351",
+ "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/5351"
}
}
},
{
"environment_name": "aws-prod",
- "snapshot_index": 5308,
- "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:ca65b67@sha256:a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638",
- "sha256": "a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638",
- "description": "3 instances changed",
- "reported_at": 1788256258.609352,
- "pipeline": "runner-ci",
+ "snapshot_index": 5351,
+ "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/custom-start-points:86c839e@sha256:ed0b8b8cc04f951bc7224d792c9c68010388f9ebf3c45d9a5d375be3a68d0b2e",
+ "sha256": "ed0b8b8cc04f951bc7224d792c9c68010388f9ebf3c45d9a5d375be3a68d0b2e",
+ "description": "1 instance changed",
+ "reported_at": 1789108798.4511206,
+ "pipeline": "custom-start-points-ci",
"deployments": [],
"flows": [
{
- "flow_name": "runner-ci",
+ "flow_name": "custom-start-points-ci",
"deployments": null
},
{
- "flow_name": "snyk-aws-beta-per-artifact",
+ "flow_name": "production-promotion",
"deployments": null
},
{
- "flow_name": "production-promotion",
+ "flow_name": "snyk-aws-beta-per-artifact",
"deployments": null
},
{
@@ -519,39 +515,39 @@ kosli log environment aws-prod --output=json
],
"artifact_compliance": true,
"snapshot_compliance": true,
- "type": "updated-provenance",
- "code_diff": "https://github.com/cyber-dojo/runner/compare/976b63e8001ec7441ebc7737ca69f620d47e7ffe...ca65b67c3e311fbdd2435609fdb6f8a5479f66f9",
+ "type": "changed",
+ "code_diff": "https://github.com/cyber-dojo/custom-start-points/compare/b12a5c9b17023462d13e81381a69c7ef05f84dc2...86c839ee588f393d84a6b9c036478d10bb6f2a2d",
"_links": {
"artifact": {
- "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/runner-ci/fingerprint/a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638",
- "html": "https://app.kosli.com/cyber-dojo/flows/runner-ci/artifacts/a1b8379841b440286b5649db7517419457b8fdb01398a661bae9ae0c92b05638?artifact_id=3b03ceaf-96a6-4afa-8aa2-179e5fe9"
+ "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/custom-start-points-ci/fingerprint/ed0b8b8cc04f951bc7224d792c9c68010388f9ebf3c45d9a5d375be3a68d0b2e",
+ "html": "https://app.kosli.com/cyber-dojo/flows/custom-start-points-ci/artifacts/ed0b8b8cc04f951bc7224d792c9c68010388f9ebf3c45d9a5d375be3a68d0b2e?artifact_id=60d0583d-4388-4a0a-925d-5b47d9a8"
},
"snapshot": {
- "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/5308",
- "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/5308"
+ "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/5351",
+ "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/5351"
}
}
},
{
"environment_name": "aws-prod",
- "snapshot_index": 5307,
- "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/creator:83357f1@sha256:adb922d738b50876f1cd13f5a998ade341abfd64b3561d0889264399c33c528b",
- "sha256": "adb922d738b50876f1cd13f5a998ade341abfd64b3561d0889264399c33c528b",
- "description": "1 instance stopped running (from 1 to 0)",
- "reported_at": 1788256138.680238,
- "pipeline": "creator-ci",
+ "snapshot_index": 5351,
+ "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/differ:2e9bd96@sha256:f61d363b12c540302c97e4f694c76edc6fcb594852e2dcdb8ce92d2d22521409",
+ "sha256": "f61d363b12c540302c97e4f694c76edc6fcb594852e2dcdb8ce92d2d22521409",
+ "description": "1 instance changed",
+ "reported_at": 1789108798.4511206,
+ "pipeline": "differ-ci",
"deployments": [],
"flows": [
{
- "flow_name": "creator-ci",
+ "flow_name": "differ-ci",
"deployments": null
},
{
- "flow_name": "snyk-aws-beta-per-artifact",
+ "flow_name": "production-promotion",
"deployments": null
},
{
- "flow_name": "production-promotion",
+ "flow_name": "snyk-aws-beta-per-artifact",
"deployments": null
},
{
@@ -561,26 +557,26 @@ kosli log environment aws-prod --output=json
],
"artifact_compliance": true,
"snapshot_compliance": true,
- "type": "exited",
- "code_diff": "https://github.com/cyber-dojo/creator/compare/89019f6d8059406e56fa499b2dec2dbf93f4d5c7...83357f112ef5c10b157cb84732c77965cc8ddc48",
+ "type": "changed",
+ "code_diff": "https://github.com/cyber-dojo/differ/compare/bcac1c18385b2573ef6c6e8eeae0f62ed14a03de...2e9bd969b50fff6b86578d69b7139f2d688ef6e2",
"_links": {
"artifact": {
- "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/creator-ci/fingerprint/adb922d738b50876f1cd13f5a998ade341abfd64b3561d0889264399c33c528b",
- "html": "https://app.kosli.com/cyber-dojo/flows/creator-ci/artifacts/adb922d738b50876f1cd13f5a998ade341abfd64b3561d0889264399c33c528b?artifact_id=11539f6a-befb-4b79-9484-fd9f25d3"
+ "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/differ-ci/fingerprint/f61d363b12c540302c97e4f694c76edc6fcb594852e2dcdb8ce92d2d22521409",
+ "html": "https://app.kosli.com/cyber-dojo/flows/differ-ci/artifacts/f61d363b12c540302c97e4f694c76edc6fcb594852e2dcdb8ce92d2d22521409?artifact_id=054eef05-3aee-49ae-9e4d-55f768b7"
},
"snapshot": {
- "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/5307",
- "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/5307"
+ "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/5351",
+ "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/5351"
}
}
},
{
"environment_name": "aws-prod",
- "snapshot_index": 5306,
- "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/creator:d64d2b1@sha256:c48710e3304e24406c03381a31d01f520ab2f60846aa0b57adbda0a776ebc1ab",
- "sha256": "c48710e3304e24406c03381a31d01f520ab2f60846aa0b57adbda0a776ebc1ab",
- "description": "1 instance started running (from 0 to 1)",
- "reported_at": 1788256078.451175,
+ "snapshot_index": 5350,
+ "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/creator:abdc613@sha256:ba988cfdac64da22bc8268442c467504fe8df565e65c2f3c4344ce00c83e561a",
+ "sha256": "ba988cfdac64da22bc8268442c467504fe8df565e65c2f3c4344ce00c83e561a",
+ "description": "1 instance stopped running (from 1 to 0)",
+ "reported_at": 1789023418.5988352,
"pipeline": "creator-ci",
"deployments": [],
"flows": [
@@ -588,46 +584,46 @@ kosli log environment aws-prod --output=json
"flow_name": "creator-ci",
"deployments": null
},
+ {
+ "flow_name": "production-promotion",
+ "deployments": null
+ },
{
"flow_name": "snyk-aws-beta-per-artifact",
"deployments": null
},
{
- "flow_name": "production-promotion",
+ "flow_name": "snyk-aws-prod-per-artifact",
"deployments": null
}
],
"artifact_compliance": true,
"snapshot_compliance": true,
- "type": "started-compliant",
- "code_diff": "https://github.com/cyber-dojo/creator/compare/83357f112ef5c10b157cb84732c77965cc8ddc48...d64d2b11879179255f11dc991e81fbaf4a040264",
+ "type": "exited",
+ "code_diff": "https://github.com/cyber-dojo/creator/compare/3992c3ac326ff4472870fb49736a31967df95555...abdc61396b5031dbb1e90f5c9c190d303ff243e1",
"_links": {
"artifact": {
- "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/creator-ci/fingerprint/c48710e3304e24406c03381a31d01f520ab2f60846aa0b57adbda0a776ebc1ab",
- "html": "https://app.kosli.com/cyber-dojo/flows/creator-ci/artifacts/c48710e3304e24406c03381a31d01f520ab2f60846aa0b57adbda0a776ebc1ab?artifact_id=61384b36-4d32-43f2-8d5d-a72e2e7e"
+ "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/creator-ci/fingerprint/ba988cfdac64da22bc8268442c467504fe8df565e65c2f3c4344ce00c83e561a",
+ "html": "https://app.kosli.com/cyber-dojo/flows/creator-ci/artifacts/ba988cfdac64da22bc8268442c467504fe8df565e65c2f3c4344ce00c83e561a?artifact_id=77dd7d10-64d9-4d28-a29a-bc7aaba0"
},
"snapshot": {
- "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/5306",
- "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/5306"
+ "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/5350",
+ "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/5350"
}
}
},
{
"environment_name": "aws-prod",
- "snapshot_index": 5305,
- "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:976b63e@sha256:01311f8b73bb61f65baabe680aa75ef9c0e6c5d1697ad81cfd89c89812de6fe9",
- "sha256": "01311f8b73bb61f65baabe680aa75ef9c0e6c5d1697ad81cfd89c89812de6fe9",
- "description": "1 instance stopped running (from 1 to 0)",
- "reported_at": 1788255898.5005004,
- "pipeline": "runner-ci",
+ "snapshot_index": 5349,
+ "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/creator:99d7b74@sha256:a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424",
+ "sha256": "a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424",
+ "description": "1 instance started running (from 0 to 1)",
+ "reported_at": 1789023358.6002493,
+ "pipeline": "creator-ci",
"deployments": [],
"flows": [
{
- "flow_name": "runner-ci",
- "deployments": null
- },
- {
- "flow_name": "production-promotion",
+ "flow_name": "creator-ci",
"deployments": null
},
{
@@ -635,45 +631,45 @@ kosli log environment aws-prod --output=json
"deployments": null
},
{
- "flow_name": "snyk-aws-prod-per-artifact",
+ "flow_name": "production-promotion",
"deployments": null
}
],
"artifact_compliance": true,
"snapshot_compliance": true,
- "type": "exited",
- "code_diff": "https://github.com/cyber-dojo/runner/compare/d7541d3fb2c548bd68a81f812b5a6c95fcf9a1bd...976b63e8001ec7441ebc7737ca69f620d47e7ffe",
+ "type": "started-compliant",
+ "code_diff": "https://github.com/cyber-dojo/creator/compare/abdc61396b5031dbb1e90f5c9c190d303ff243e1...99d7b74f39e311d492902ad48dbe97da63f2c687",
"_links": {
"artifact": {
- "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/runner-ci/fingerprint/01311f8b73bb61f65baabe680aa75ef9c0e6c5d1697ad81cfd89c89812de6fe9",
- "html": "https://app.kosli.com/cyber-dojo/flows/runner-ci/artifacts/01311f8b73bb61f65baabe680aa75ef9c0e6c5d1697ad81cfd89c89812de6fe9?artifact_id=e63d6d6b-d7ee-4fad-a66a-32a4ebba"
+ "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/creator-ci/fingerprint/a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424",
+ "html": "https://app.kosli.com/cyber-dojo/flows/creator-ci/artifacts/a39fa3230549d3c6cb1732cc929c4e21041a09a21b2bb692cd37c9afe5fcd424?artifact_id=205424b6-5741-4071-bd36-c26e83f6"
},
"snapshot": {
- "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/5305",
- "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/5305"
+ "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/5349",
+ "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/5349"
}
}
},
{
"environment_name": "aws-prod",
- "snapshot_index": 5304,
- "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/differ:108cccf@sha256:31a4c3abc3ccef33397ed1d84496a08d94ca9d6f9d0df44b6a72aba9743bc8ac",
- "sha256": "31a4c3abc3ccef33397ed1d84496a08d94ca9d6f9d0df44b6a72aba9743bc8ac",
- "description": "1 instance stopped running (from 1 to 0)",
- "reported_at": 1788255838.4418423,
- "pipeline": "differ-ci",
+ "snapshot_index": 5348,
+ "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:6b20a42@sha256:4889ce921333abe3acc52880342a6ceb27cd66482e4f8fc93e20d5a91d972d29",
+ "sha256": "4889ce921333abe3acc52880342a6ceb27cd66482e4f8fc93e20d5a91d972d29",
+ "description": "1 instance started running (from 0 to 1)",
+ "reported_at": 1789022878.756657,
+ "pipeline": "dashboard-ci",
"deployments": [],
"flows": [
{
- "flow_name": "differ-ci",
+ "flow_name": "dashboard-ci",
"deployments": null
},
{
- "flow_name": "snyk-aws-beta-per-artifact",
+ "flow_name": "production-promotion",
"deployments": null
},
{
- "flow_name": "production-promotion",
+ "flow_name": "snyk-aws-beta-per-artifact",
"deployments": null
},
{
@@ -683,16 +679,16 @@ kosli log environment aws-prod --output=json
],
"artifact_compliance": true,
"snapshot_compliance": true,
- "type": "exited",
- "code_diff": "https://github.com/cyber-dojo/differ/compare/10e162d4e1294815375a31121f14d57e13183b34...108cccf9bccf9af5d455db66c250480b53cbecc7",
+ "type": "started-compliant",
+ "code_diff": "https://github.com/cyber-dojo/dashboard/compare/ff9f292e809801d35246183988b7812826bc2760...6b20a423d5ce05139d4480e9ce67f40e3eda2e07",
"_links": {
"artifact": {
- "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/differ-ci/fingerprint/31a4c3abc3ccef33397ed1d84496a08d94ca9d6f9d0df44b6a72aba9743bc8ac",
- "html": "https://app.kosli.com/cyber-dojo/flows/differ-ci/artifacts/31a4c3abc3ccef33397ed1d84496a08d94ca9d6f9d0df44b6a72aba9743bc8ac?artifact_id=50b8cff6-1888-4c76-b31a-fdd7a311"
+ "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/dashboard-ci/fingerprint/4889ce921333abe3acc52880342a6ceb27cd66482e4f8fc93e20d5a91d972d29",
+ "html": "https://app.kosli.com/cyber-dojo/flows/dashboard-ci/artifacts/4889ce921333abe3acc52880342a6ceb27cd66482e4f8fc93e20d5a91d972d29?artifact_id=7ba704a0-8706-4f12-9eb8-776c7e5d"
},
"snapshot": {
- "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/5304",
- "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/5304"
+ "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/5348",
+ "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/5348"
}
}
}
diff --git a/client_reference/kosli_rename_environment.md b/client_reference/kosli_rename_environment.md
index d32f581..81a2eac 100644
--- a/client_reference/kosli_rename_environment.md
+++ b/client_reference/kosli_rename_environment.md
@@ -24,7 +24,7 @@ The environment will remain accessible under its old name until that name is tak
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_rename_flow.md b/client_reference/kosli_rename_flow.md
index 8fc6842..074a203 100644
--- a/client_reference/kosli_rename_flow.md
+++ b/client_reference/kosli_rename_flow.md
@@ -24,7 +24,7 @@ The flow will remain accessible under its old name until that name is taken by a
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_report_artifact.md b/client_reference/kosli_report_artifact.md
index ee1b410..92a5121 100644
--- a/client_reference/kosli_report_artifact.md
+++ b/client_reference/kosli_report_artifact.md
@@ -45,7 +45,10 @@ is set), registry credentials are resolved as follows:
To specify paths in a directory artifact that should always be excluded from the SHA256 calculation, you can add a `.kosli_ignore` file to the root of the artifact.
Each line should specify a relative path or path glob to be ignored. You can include comments in this file, using `#`.
-The `.kosli_ignore` will be treated as part of the artifact like any other file, unless it is explicitly ignored itself.
+The `.kosli_ignore` file is always treated as part of the artifact: its own entries cannot exclude it, so the exclusion list cannot be changed without changing the fingerprint.
+Paths the list already matches stay excluded whatever is later added there, so keep its entries as narrow as possible.
+Excluding the file with `--exclude` keeps it out of the fingerprint but still applies the paths it lists, which lets a writable directory change the list again.
+To drop the file from the fingerprint safely, move its entries to `--exclude` and delete it.
## Flags
| Flag | Type | Description |
@@ -70,7 +73,7 @@ The `.kosli_ignore` will be treated as part of the artifact like any other file,
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_rotate_api-key.md b/client_reference/kosli_rotate_api-key.md
index 762fe2a..b31f147 100644
--- a/client_reference/kosli_rotate_api-key.md
+++ b/client_reference/kosli_rotate_api-key.md
@@ -31,7 +31,7 @@ make sure to store it securely.
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_search.md b/client_reference/kosli_search.md
index 34d59a9..9ff6eee 100644
--- a/client_reference/kosli_search.md
+++ b/client_reference/kosli_search.md
@@ -23,7 +23,7 @@ You can use short git commit or artifact fingerprint shas, but you must provide
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_snapshot_azure.md b/client_reference/kosli_snapshot_azure.md
index 5a02f48..fa2320f 100644
--- a/client_reference/kosli_snapshot_azure.md
+++ b/client_reference/kosli_snapshot_azure.md
@@ -20,9 +20,17 @@ will not match. See
https://learn.microsoft.com/en-us/azure/azure-functions/functions-app-settings#website_run_from_package
For zip-deployed apps, the fingerprint respects a `.kosli_ignore` file at the root of the deployed package.
+
+With `--digests-source acr`, the registry is taken from each app's own container configuration. Azure
+credentials are only ever sent to an Azure Container Registry login server. An app whose image comes
+from any other registry is read without credentials, which works for a public image but not a private
+one; report those apps with `--digests-source logs` instead.
+
+`--dry-run` suppresses only the request to Kosli. Azure discovery and registry lookups still run.
To specify paths in a directory artifact that should always be excluded from the SHA256 calculation, you can add a `.kosli_ignore` file to the root of the artifact.
Each line should specify a relative path or path glob to be ignored. You can include comments in this file, using `#`.
-The `.kosli_ignore` will be treated as part of the artifact like any other file, unless it is explicitly ignored itself.
+The `.kosli_ignore` file is always treated as part of the artifact: its own entries cannot exclude it, so the exclusion list cannot be changed without changing the fingerprint.
+Paths the list already matches stay excluded whatever is later added there, so keep its entries as narrow as possible.
To authenticate to Azure, you need to create Azure service principal with a secret
and provide these Azure credentials via flags or by exporting the equivalent KOSLI env vars (e.g. KOSLI_AZURE_CLIENT_ID).
@@ -40,7 +48,7 @@ The service principal needs to have the following permissions:
| `--azure-resource-group-name` | string | Azure resource group name. |
| `--azure-subscription-id` | string | Azure subscription ID. |
| `--azure-tenant-id` | string | Azure tenant ID. |
-| `--digests-source` | string | [defaulted] Where to get the digests from. Valid values are 'acr' and 'logs'. (default "acr") |
+| `--digests-source` | string | [defaulted] Where to get the digests from. Valid values are 'acr' and 'logs'. With 'acr', Azure credentials are only sent to Azure Container Registry login servers; an app whose image comes from any other registry is read without credentials, so a private third-party registry needs 'logs'. (default "acr") |
| `-D`, `--dry-run` | bool | [optional] Run in dry-run mode. When enabled, no data is sent to Kosli and the CLI exits with 0 exit code regardless of any errors. |
| `-h`, `--help` | bool | help for azure |
| `--zip` | bool | Download logs from Azure as zip files |
@@ -51,7 +59,7 @@ The service principal needs to have the following permissions:
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
| `-A`, `--auto-environment` | bool | [optional] Create the environment (with the type inferred from the snapshot subcommand) if it does not already exist, before reporting the snapshot. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `--environment-description` | string | [optional] The environment description. |
| `--exclude-scaling` | bool | [optional] Exclude scaling events for snapshots. Snapshots with scaling changes will not result in new environment records. (DEPRECATED: this flag is deprecated and will be removed in a future version. Scaling events do not trigger new snapshots.) |
diff --git a/client_reference/kosli_snapshot_cloud-run.md b/client_reference/kosli_snapshot_cloud-run.md
index 67b2657..eac2df4 100644
--- a/client_reference/kosli_snapshot_cloud-run.md
+++ b/client_reference/kosli_snapshot_cloud-run.md
@@ -71,7 +71,7 @@ reverse-lookup. Only supported for Artifact Registry hosts.
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
| `-A`, `--auto-environment` | bool | [optional] Create the environment (with the type inferred from the snapshot subcommand) if it does not already exist, before reporting the snapshot. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `--environment-description` | string | [optional] The environment description. |
| `--exclude-scaling` | bool | [optional] Exclude scaling events for snapshots. Snapshots with scaling changes will not result in new environment records. (DEPRECATED: this flag is deprecated and will be removed in a future version. Scaling events do not trigger new snapshots.) |
diff --git a/client_reference/kosli_snapshot_docker.md b/client_reference/kosli_snapshot_docker.md
index 52929c4..0fa76b6 100644
--- a/client_reference/kosli_snapshot_docker.md
+++ b/client_reference/kosli_snapshot_docker.md
@@ -26,7 +26,7 @@ been pushed to or pulled from a registry will be ignored.
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
| `-A`, `--auto-environment` | bool | [optional] Create the environment (with the type inferred from the snapshot subcommand) if it does not already exist, before reporting the snapshot. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `--environment-description` | string | [optional] The environment description. |
| `--exclude-scaling` | bool | [optional] Exclude scaling events for snapshots. Snapshots with scaling changes will not result in new environment records. (DEPRECATED: this flag is deprecated and will be removed in a future version. Scaling events do not trigger new snapshots.) |
diff --git a/client_reference/kosli_snapshot_ecs.md b/client_reference/kosli_snapshot_ecs.md
index 928b54b..dc5c6e6 100644
--- a/client_reference/kosli_snapshot_ecs.md
+++ b/client_reference/kosli_snapshot_ecs.md
@@ -54,7 +54,7 @@ More details can be found here: https://aws.github.io/aws-sdk-go-v2/docs/configu
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
| `-A`, `--auto-environment` | bool | [optional] Create the environment (with the type inferred from the snapshot subcommand) if it does not already exist, before reporting the snapshot. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `--environment-description` | string | [optional] The environment description. |
| `--exclude-scaling` | bool | [optional] Exclude scaling events for snapshots. Snapshots with scaling changes will not result in new environment records. (DEPRECATED: this flag is deprecated and will be removed in a future version. Scaling events do not trigger new snapshots.) |
diff --git a/client_reference/kosli_snapshot_lambda.md b/client_reference/kosli_snapshot_lambda.md
index 9ed59af..fcd9b45 100644
--- a/client_reference/kosli_snapshot_lambda.md
+++ b/client_reference/kosli_snapshot_lambda.md
@@ -42,7 +42,7 @@ More details can be found here: https://aws.github.io/aws-sdk-go-v2/docs/configu
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
| `-A`, `--auto-environment` | bool | [optional] Create the environment (with the type inferred from the snapshot subcommand) if it does not already exist, before reporting the snapshot. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `--environment-description` | string | [optional] The environment description. |
| `--exclude-scaling` | bool | [optional] Exclude scaling events for snapshots. Snapshots with scaling changes will not result in new environment records. (DEPRECATED: this flag is deprecated and will be removed in a future version. Scaling events do not trigger new snapshots.) |
diff --git a/client_reference/kosli_snapshot_path.md b/client_reference/kosli_snapshot_path.md
index c3df2c4..abeaa16 100644
--- a/client_reference/kosli_snapshot_path.md
+++ b/client_reference/kosli_snapshot_path.md
@@ -17,7 +17,10 @@ plus the ability to use recursive globs "**"
To specify paths in a directory artifact that should always be excluded from the SHA256 calculation, you can add a `.kosli_ignore` file to the root of the artifact.
Each line should specify a relative path or path glob to be ignored. You can include comments in this file, using `#`.
-The `.kosli_ignore` will be treated as part of the artifact like any other file, unless it is explicitly ignored itself.
+The `.kosli_ignore` file is always treated as part of the artifact: its own entries cannot exclude it, so the exclusion list cannot be changed without changing the fingerprint.
+Paths the list already matches stay excluded whatever is later added there, so keep its entries as narrow as possible.
+Excluding the file with `--exclude` keeps it out of the fingerprint but still applies the paths it lists, which lets a writable directory change the list again.
+To drop the file from the fingerprint safely, move its entries to `--exclude` and delete it.
## Flags
| Flag | Type | Description |
@@ -35,7 +38,7 @@ The `.kosli_ignore` will be treated as part of the artifact like any other file,
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
| `-A`, `--auto-environment` | bool | [optional] Create the environment (with the type inferred from the snapshot subcommand) if it does not already exist, before reporting the snapshot. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `--environment-description` | string | [optional] The environment description. |
| `--exclude-scaling` | bool | [optional] Exclude scaling events for snapshots. Snapshots with scaling changes will not result in new environment records. (DEPRECATED: this flag is deprecated and will be removed in a future version. Scaling events do not trigger new snapshots.) |
diff --git a/client_reference/kosli_snapshot_paths.md b/client_reference/kosli_snapshot_paths.md
index 894615c..84ee7c6 100644
--- a/client_reference/kosli_snapshot_paths.md
+++ b/client_reference/kosli_snapshot_paths.md
@@ -23,7 +23,10 @@ plus the ability to use recursive globs "**"
To specify paths in a directory artifact that should always be excluded from the SHA256 calculation, you can add a `.kosli_ignore` file to the root of the artifact.
Each line should specify a relative path or path glob to be ignored. You can include comments in this file, using `#`.
-The `.kosli_ignore` will be treated as part of the artifact like any other file, unless it is explicitly ignored itself.
+The `.kosli_ignore` file is always treated as part of the artifact: its own entries cannot exclude it, so the exclusion list cannot be changed without changing the fingerprint.
+Paths the list already matches stay excluded whatever is later added there, so keep its entries as narrow as possible.
+Excluding the file with `--exclude` keeps it out of the fingerprint but still applies the paths it lists, which lets a writable directory change the list again.
+To drop the file from the fingerprint safely, move its entries to `--exclude` and delete it.
This is an example YAML paths spec file:
```yaml
@@ -48,7 +51,7 @@ artifacts:
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
| `-A`, `--auto-environment` | bool | [optional] Create the environment (with the type inferred from the snapshot subcommand) if it does not already exist, before reporting the snapshot. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `--environment-description` | string | [optional] The environment description. |
| `--exclude-scaling` | bool | [optional] Exclude scaling events for snapshots. Snapshots with scaling changes will not result in new environment records. (DEPRECATED: this flag is deprecated and will be removed in a future version. Scaling events do not trigger new snapshots.) |
diff --git a/client_reference/kosli_snapshot_s3.md b/client_reference/kosli_snapshot_s3.md
index 1c10ea5..a70cf8f 100644
--- a/client_reference/kosli_snapshot_s3.md
+++ b/client_reference/kosli_snapshot_s3.md
@@ -21,10 +21,12 @@ More details can be found here: https://aws.github.io/aws-sdk-go-v2/docs/configu
You can report the entire bucket content, or filter some of the content using `--include` / `--exclude` (literal prefix match) or `--include-regex` / `--exclude-regex` (Go regular expressions matched against the full object key).
In all cases, the content is reported as one artifact. If you wish to report separate files/dirs within the same bucket as separate artifacts, you need to run the command twice.
+Object keys that cannot be stored as a local file, such as keys containing a `..` path segment, are rejected and fail the snapshot, naming the key. Two keys that resolve to the same local file are also an error. A legitimate key of that shape can be left out with `--exclude-regex` (anchor and escape it, since the pattern is a regular expression matched against the whole key); when `--include` or `--include-regex` is set, exclude filters are ignored, so narrow the include filter instead.
To specify paths in a directory artifact that should always be excluded from the SHA256 calculation, you can add a `.kosli_ignore` file to the root of the artifact.
Each line should specify a relative path or path glob to be ignored. You can include comments in this file, using `#`.
-The `.kosli_ignore` will be treated as part of the artifact like any other file, unless it is explicitly ignored itself.
+The `.kosli_ignore` file is always treated as part of the artifact: its own entries cannot exclude it, so the exclusion list cannot be changed without changing the fingerprint.
+Paths the list already matches stay excluded whatever is later added there, so keep its entries as narrow as possible.
## Flags
| Flag | Type | Description |
@@ -46,7 +48,7 @@ The `.kosli_ignore` will be treated as part of the artifact like any other file,
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
| `-A`, `--auto-environment` | bool | [optional] Create the environment (with the type inferred from the snapshot subcommand) if it does not already exist, before reporting the snapshot. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `--environment-description` | string | [optional] The environment description. |
| `--exclude-scaling` | bool | [optional] Exclude scaling events for snapshots. Snapshots with scaling changes will not result in new environment records. (DEPRECATED: this flag is deprecated and will be removed in a future version. Scaling events do not trigger new snapshots.) |
diff --git a/client_reference/kosli_snapshot_server.md b/client_reference/kosli_snapshot_server.md
index 91d43c1..b86d446 100644
--- a/client_reference/kosli_snapshot_server.md
+++ b/client_reference/kosli_snapshot_server.md
@@ -43,7 +43,10 @@ If the directory structure contains a symbolic link to a *directory* (for exampl
To specify paths in a directory artifact that should always be excluded from the SHA256 calculation, you can add a `.kosli_ignore` file to the root of the artifact.
Each line should specify a relative path or path glob to be ignored. You can include comments in this file, using `#`.
-The `.kosli_ignore` will be treated as part of the artifact like any other file, unless it is explicitly ignored itself.
+The `.kosli_ignore` file is always treated as part of the artifact: its own entries cannot exclude it, so the exclusion list cannot be changed without changing the fingerprint.
+Paths the list already matches stay excluded whatever is later added there, so keep its entries as narrow as possible.
+Excluding the file with `--exclude` keeps it out of the fingerprint but still applies the paths it lists, which lets a writable directory change the list again.
+To drop the file from the fingerprint safely, move its entries to `--exclude` and delete it.
## Flags
| Flag | Type | Description |
@@ -60,7 +63,7 @@ The `.kosli_ignore` will be treated as part of the artifact like any other file,
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
| `-A`, `--auto-environment` | bool | [optional] Create the environment (with the type inferred from the snapshot subcommand) if it does not already exist, before reporting the snapshot. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `--environment-description` | string | [optional] The environment description. |
| `--exclude-scaling` | bool | [optional] Exclude scaling events for snapshots. Snapshots with scaling changes will not result in new environment records. (DEPRECATED: this flag is deprecated and will be removed in a future version. Scaling events do not trigger new snapshots.) |
diff --git a/client_reference/kosli_status.md b/client_reference/kosli_status.md
index 72331a3..9eab4cb 100644
--- a/client_reference/kosli_status.md
+++ b/client_reference/kosli_status.md
@@ -24,7 +24,7 @@ If you like to assert the Kosli server status, you can use the `--assert` flag o
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_tag.md b/client_reference/kosli_tag.md
index 18227a9..0c55d1e 100644
--- a/client_reference/kosli_tag.md
+++ b/client_reference/kosli_tag.md
@@ -37,7 +37,7 @@ name as-is, whereas a real run sends the resolved ID.
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_unarchive_control.md b/client_reference/kosli_unarchive_control.md
index 08a25f0..9e7d4a8 100644
--- a/client_reference/kosli_unarchive_control.md
+++ b/client_reference/kosli_unarchive_control.md
@@ -29,7 +29,7 @@ Restores a previously archived control to the active state.
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_update_control.md b/client_reference/kosli_update_control.md
index 127caa9..e1903e5 100644
--- a/client_reference/kosli_update_control.md
+++ b/client_reference/kosli_update_control.md
@@ -33,7 +33,7 @@ Providing `--link` replaces all of the control's existing links.
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_update_default-org.md b/client_reference/kosli_update_default-org.md
index 0f9bd59..f995307 100644
--- a/client_reference/kosli_update_default-org.md
+++ b/client_reference/kosli_update_default-org.md
@@ -24,7 +24,7 @@ The default organization is the one selected by default in the Kosli Web UI when
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_update_service-account.md b/client_reference/kosli_update_service-account.md
index 2687390..bf0aec6 100644
--- a/client_reference/kosli_update_service-account.md
+++ b/client_reference/kosli_update_service-account.md
@@ -26,7 +26,7 @@ Only the flags you provide are changed; omitted fields are left untouched.
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/kosli_version.md b/client_reference/kosli_version.md
index 4e9205f..fae43a1 100644
--- a/client_reference/kosli_version.md
+++ b/client_reference/kosli_version.md
@@ -31,7 +31,7 @@ version.BuildInfo\{Version:"v0.0.1", GitCommit:"fe51cd1e31e6a202cba7dead9552a6d4
| Flag | Type | Description |
| :--- | :--- | :--- |
| `-a`, `--api-token` | string | The Kosli API token. |
-| `-c`, `--config-file` | string | [optional] The Kosli config file path. (default "kosli") |
+| `-c`, `--config-file` | string | [optional] The Kosli config file path. Config is read from this path or the default only, never implicitly from the current directory. (default "$HOME/.kosli.yml") |
| `--debug` | bool | [optional] Print debug logs to stdout. |
| `-H`, `--host` | string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") |
| `--http-proxy` | string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` |
diff --git a/client_reference/overview.md b/client_reference/overview.md
index f7b1062..f31ed2d 100644
--- a/client_reference/overview.md
+++ b/client_reference/overview.md
@@ -4,7 +4,7 @@ description: "Reference documentation for the Kosli CLI."
---
- This reference was generated from Kosli CLI **v2.39.2**.
+ This reference was generated from Kosli CLI **v2.40.0**.
The Kosli CLI allows you to interact with Kosli from your terminal and CI/CD pipelines.