Skip to content
Closed
19 changes: 19 additions & 0 deletions .gitleaks.toml
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,25 @@ regexes = [
'''^\s*"Launcher/bin/Debug/QuantConnect\.Api\.xml": "828ef6359e33844b81ca839238ffac8f2dcd10995c5629cb40956bf5d4853e5c",?\s*$'''
]

# Pinned Codex Action source digests, independently compared with upstream Git
# blobs. gitleaks 8.30.1's generic-key rule flags "Credentials" in these filenames.
# Scope both the exact artifact paths AND whole lines with the two exact digests;
# other values, fields, extra secrets on a line and other paths stay detectable.
# Source: https://github.com/gitleaks/gitleaks/blob/v8.30.1/README.md#configuration
[[rules.allowlists]]
description = "Exact independently verified Codex Action credential-source file digests"
condition = "AND"
paths = [
'''^evidence/artifacts/gpt-lifecycle-convergence-20260930/source-sha256-before\.json$''',
'''^evidence/artifacts/gpt-lifecycle-convergence-20260930/source-sha256-after\.json$''',
'''^evidence/artifacts/gpt-lifecycle-convergence-20260930/action-upstream\.json$''',
]
regexTarget = "line"
regexes = [
'''^\s*"src/linuxCredentials\.ts": "aa75358ce28991c1fc20db9c177848b40a7ebd840ad1e5b095f93552c55301fe",?\s*$''',
'''^\s*"test/linuxCredentials\.test\.mjs": "fe9b14006f0f41a5742c4d08973b7fced46d480cfc97b9fe2a140e490f92dbbd",?\s*$''',
]

# Content digests held under a closed set of named JSON fields (sha256/commit/pin
# style keys), restricted to the exact files that were reviewed and produced them.
[[rules.allowlists]]
Expand Down
380 changes: 380 additions & 0 deletions docs/decisions/2026-09-30-gpt-lifecycle-convergence.md

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,246 @@
{
"schema_version": 1,
"evidence_class": "unchanged_upstream_tests",
"result": "pass_with_one_upstream_prerequisite_skip",
"completed_at": "2026-09-30T15:38:36.079785+00:00",
"source": {
"repository": "https://github.com/openai/codex-action",
"tag": "v1.12",
"commit": "86365089eb2b84e0a8fb0717b304f8bdcb13b20e",
"git_tree": "81b31f506095e8ae70a5512d4981972de179878a",
"tag_verification": "Annotated GitHub tag resolves to the qualified commit.",
"references": [
"https://github.com/openai/codex-action/blob/86365089eb2b84e0a8fb0717b304f8bdcb13b20e/package.json",
"https://github.com/openai/codex-action/blob/86365089eb2b84e0a8fb0717b304f8bdcb13b20e/.github/workflows/ci.yml",
"https://github.com/openai/codex-action/blob/86365089eb2b84e0a8fb0717b304f8bdcb13b20e/test/runCodexExec.test.mjs",
"https://github.com/openai/codex-action/blob/86365089eb2b84e0a8fb0717b304f8bdcb13b20e/test/dropSudo.test.mjs"
],
"license": "Apache-2.0",
"license_sha256": "d17f227e4df5da1600391338865ce0f3055211760a36688f816941d58232d8dc"
},
"runtime": {
"node": "v24.21.0",
"npm": "11.19.0",
"pnpm": "10.33.0",
"rtk": "rtk 0.50.0",
"git": "git version 2.43.0",
"gh": "gh version 2.101.0 (2026-09-15)",
"platform": {
"os": "Linux",
"kernel": "6.18.33.2-microsoft-standard-WSL2",
"arch": "x86_64"
}
},
"installation": {
"native_command": "npm install --prefix <owned>/tools/pnpm --cache <owned>/npm-cache --save-exact pnpm@10.33.0",
"exit_code": 0,
"elapsed_seconds": 2.635,
"pnpm_package_integrity_matches_upstream_package_manager": true,
"global_install": false,
"native_sources": [
"https://pnpm.io/10.x/installation",
"https://docs.npmjs.com/cli/v11/configuring-npm/folders"
]
},
"checks": [
{
"id": "install-dependencies",
"native_command": "pnpm install --frozen-lockfile",
"exit_code": 0,
"elapsed_seconds": 1.604,
"stdout": {
"bytes": 1895,
"sha256": "06cdc99e5af0128d7e2635604d5bde31423fd377436f20907dfdfe58e7b6654a"
},
"stderr": {
"bytes": 0,
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
}
},
{
"id": "check",
"native_command": "pnpm run check",
"exit_code": 0,
"elapsed_seconds": 2.032,
"stdout": {
"bytes": 152,
"sha256": "0780a50132661b87d9ec6e7f62f79a2fb0687885314ac3346a1dc78339413e72"
},
"stderr": {
"bytes": 0,
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
}
},
{
"id": "test",
"native_command": "pnpm test",
"exit_code": 0,
"elapsed_seconds": 15.874,
"stdout": {
"bytes": 12646,
"sha256": "f43a16f01965250e3af398afb478e45ce55827edcc2cde3e43c7ac0981b0075e"
},
"stderr": {
"bytes": 48,
"sha256": "f35eeb42e6b2651cc2d437b7540d8d43492eb5beea766ebb4861fe327c09031b"
}
},
{
"id": "build",
"native_command": "pnpm run build",
"exit_code": 0,
"elapsed_seconds": 0.49,
"stdout": {
"bytes": 246,
"sha256": "64d0580b7b5ef65a4f215e81a02f6885ae80759648906cb79bae051f4f402633"
},
"stderr": {
"bytes": 48,
"sha256": "0492fcca6bd3b7899e4676ea7aa32ac9bebc5851bcc3bd6c18b80bd8c14fe833"
}
},
{
"id": "dist-status",
"native_command": "git status --short -- dist",
"exit_code": 0,
"elapsed_seconds": 0.115,
"stdout": {
"bytes": 0,
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
},
"stderr": {
"bytes": 0,
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
}
},
{
"id": "dist-diff",
"native_command": "git diff --exit-code -- dist",
"exit_code": 0,
"elapsed_seconds": 0.129,
"stdout": {
"bytes": 0,
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
},
"stderr": {
"bytes": 0,
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
}
},
{
"id": "source-diff",
"native_command": "git diff --exit-code -- src test package.json pnpm-lock.yaml",
"exit_code": 0,
"elapsed_seconds": 0.152,
"stdout": {
"bytes": 0,
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
},
"stderr": {
"bytes": 0,
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
}
},
{
"id": "full-status",
"native_command": "git status --porcelain=v1 --untracked-files=all",
"exit_code": 0,
"elapsed_seconds": 0.106,
"stdout": {
"bytes": 0,
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
},
"stderr": {
"bytes": 0,
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
}
}
],
"tests": {
"native_runner": "node:test",
"native_summary": {
"tests": 144,
"suites": 0,
"pass": 143,
"fail": 0,
"cancelled": 0,
"skipped": 1,
"todo": 0,
"duration_ms": 14988.624011
},
"upstream_test_file_count": 6,
"unchanged_test_source": true,
"skip": "drop-sudo closes inherited Linux credential and service-socket bypasses",
"skip_reason": "No /var/run/docker.sock; pinned test prerequisite is false.",
"scope": "Upstream unit/integration fixtures; runCodexExec tests invoke a fake Codex executable.",
"does_not_establish": [
"Model execution",
"OmniRoute/provider acceptance",
"A GitHub Actions job execution",
"The skipped Linux service-socket isolation behavior"
]
},
"integrity": {
"tracked_file_count": 30,
"all_tracked_file_bytes_unchanged": true,
"tracked_tree_contents_sha256_before": "0aeb7e315f76bc2f0bf61e6bccd6759da6eeddf9834aa9df423b156129d0625f",
"tracked_tree_contents_sha256_after": "0aeb7e315f76bc2f0bf61e6bccd6759da6eeddf9834aa9df423b156129d0625f",
"tree_sha256_algorithm": "SHA256 of canonical UTF-8 JSON mapping sorted tracked relative paths to per-file SHA256; file mode is excluded.",
"test_file_sha256": {
"test/actionHardening.test.mjs": "f9bb0493753cc74453d58995bc3ff0f48bc7991026aa33e46b7fb8adf12a16ed",
"test/checkActorPermissions.test.mjs": "b9801478714e4349300c47d2cfed867d0016e6a6b69dc49bf6665000feef740a",
"test/dropSudo.test.mjs": "c8a41511e63a3b02a3929a830d1bacc817c12c7b5bb99fe5752b947fe8f82550",
"test/dropSudoRootPath.test.mjs": "d0e0af55fffb6ca46b771cb46695e3169240656a2a9aa666ca3aa7eb8b74a98d",
"test/linuxCredentials.test.mjs": "fe9b14006f0f41a5742c4d08973b7fced46d480cfc97b9fe2a140e490f92dbbd",
"test/runCodexExec.test.mjs": "69837ad78104488d67128e0d97e7a1ced2aafe68ad30a882895d097a7db57ccc"
},
"dist_status_empty": true,
"dist_diff_empty": true
},
"deviations": [
{
"kind": "runtime",
"detail": "Pinned CI uses Node22; qualification used installed Node24.21.0. CodexAction package.json has no engines field; pnpm10.33.0 requires Node>=18.12."
},
{
"kind": "scoped_environment",
"detail": "Only qualification child PATH/TMPDIR/npm_config_store_dir/npm_config_cache/XDG_CACHE_HOME point at owned tool, temporary and cache paths. Native store-config check confirms owned store."
},
{
"kind": "discovery_cache",
"detail": "The first npm view metadata command used native default cache; whether it changed cached metadata outside the owned directory was not observed. Installation and qualification then used owned caches."
}
],
"failed_attempts": [
{
"native_command": "gh api repos/openai/codex-action/releases/tags/v1.12",
"exit_code": 1,
"stderr": "gh: Not Found (HTTP 404)",
"classification": "Release-record discovery only; exact annotated tag/source verification succeeded.",
"retry": false
}
],
"retries": 0,
"capture": {
"wrapper": "rtk env -- forwards native commands; separate original stdout/stderr retained privately.",
"stdin": "DEVNULL",
"raw_logs_published": false,
"logs_manifest": {
"path": "logs-manifest.json",
"sha256": "d7467ceca3d66b8f7d3cf879d85d81812fffd2a9deaa1cf6730cce2132e9b8de",
"stream_count": 50
},
"commands_manifest": {
"path": "commands-sanitized.json",
"sha256": "80fc000931122a3eba3ab578f185514fb3ee0e32c5e7ff1204e0d5edf512a9a9"
},
"source_before_manifest": {
"path": "source-sha256-before.json",
"sha256": "69d50afa398a6a3da0166c89cc5c23e4f3a752e910436bcef0f35034c5ca1f12"
},
"source_after_manifest": {
"path": "source-sha256-after.json",
"sha256": "69d50afa398a6a3da0166c89cc5c23e4f3a752e910436bcef0f35034c5ca1f12"
}
}
}
Loading
Loading