diff --git a/.fullsend/harness/triage-security.yaml b/.fullsend/harness/triage-security.yaml index 143aa74e6..448e04a5c 100644 --- a/.fullsend/harness/triage-security.yaml +++ b/.fullsend/harness/triage-security.yaml @@ -20,7 +20,7 @@ # The credential mount stays required so a missing credential fails up front on # every pinned CLI. This is the sole sandbox credential (inference only); Jira # credentials stay runner-only in env.runner. -base: https://raw.githubusercontent.com/RHEcosystemAppEng/sdlc-plugins/8f17cfaf627c11f4389896371590a32da0e82349/harness/triage-security.yaml#sha256=441a08b5d33debf409b6f710412c8d472913537d890547d94e08ac7f0bdd0991 +base: https://raw.githubusercontent.com/RHEcosystemAppEng/sdlc-plugins/0bcdff92d772db4132af79e72fcdbfdb8be57bde/harness/triage-security.yaml#sha256=441a08b5d33debf409b6f710412c8d472913537d890547d94e08ac7f0bdd0991 host_files: - src: ${GOOGLE_APPLICATION_CREDENTIALS} diff --git a/.fullsend/harness/verify-pr.yaml b/.fullsend/harness/verify-pr.yaml index 3fb8e662a..125f5a735 100644 --- a/.fullsend/harness/verify-pr.yaml +++ b/.fullsend/harness/verify-pr.yaml @@ -48,7 +48,7 @@ # (base URLs are validated against that allowlist, not inherited). # Re-pin after any base edit: push harness/verify-pr.yaml, set the SHA to the new # commit + the sha256 to `shasum -a 256 harness/verify-pr.yaml`, `fullsend lock`. -base: https://raw.githubusercontent.com/RHEcosystemAppEng/sdlc-plugins/c32f1c408f4da393b90c15b13a7d693946e0e232/harness/verify-pr.yaml#sha256=3c9dc221e2a37e7aa7ff294381b6b5b1580771ba70432c42924fc3a85f078e63 +base: https://raw.githubusercontent.com/RHEcosystemAppEng/sdlc-plugins/0bcdff92d772db4132af79e72fcdbfdb8be57bde/harness/verify-pr.yaml#sha256=81ed85130c3d42493aab890a349b8c7ce76839d3903132f084f575f72c2d8186 # CEL trigger (ADR 0061) — MUST be declared here, on the composing child, not # only on the base. `fullsend dispatch` registers this child (config.base.yaml diff --git a/.fullsend/lock.yaml b/.fullsend/lock.yaml index 96ead083a..927983a11 100644 --- a/.fullsend/lock.yaml +++ b/.fullsend/lock.yaml @@ -4,17 +4,17 @@ generated_at: 2026-09-04T13:39:01.038924Z harnesses: triage-security: source: harness/triage-security.yaml - sha256: 0da7169f959d1d2e32bdf9f77b0b8bc273068c658e023e087f40e55ea3712b5a - resolved_at: 2026-10-26T15:56:23.287203Z + sha256: f715ddb5554dcf19370495dacf6cef004b76f382c5ccfefa8eddb6ea1fdf53b4 + resolved_at: 2026-10-27T17:49:56.929159Z dependencies: - field: base - url: https://raw.githubusercontent.com/RHEcosystemAppEng/sdlc-plugins/8f17cfaf627c11f4389896371590a32da0e82349/harness/triage-security.yaml + url: https://raw.githubusercontent.com/RHEcosystemAppEng/sdlc-plugins/0bcdff92d772db4132af79e72fcdbfdb8be57bde/harness/triage-security.yaml sha256: 441a08b5d33debf409b6f710412c8d472913537d890547d94e08ac7f0bdd0991 type: file - fetched_at: 2026-10-26T15:24:17.78518Z + fetched_at: 2026-10-27T17:49:17.647127Z - field: pre_script - url: https://raw.githubusercontent.com/RHEcosystemAppEng/sdlc-plugins/8f17cfaf627c11f4389896371590a32da0e82349/plugins/sdlc-workflow/scripts/pre-triage-security.sh - sha256: 67d2a9dd6d13ce6d0d71d78efa2388055005d66248a23ccc02fecb1bfc6ab14f + url: https://raw.githubusercontent.com/RHEcosystemAppEng/sdlc-plugins/0bcdff92d772db4132af79e72fcdbfdb8be57bde/plugins/sdlc-workflow/scripts/pre-triage-security.sh + sha256: 23781310b5d4dd4d8fe99dbb55e47434badc5dc3008685148796e6f60a4bb8ce type: directory files: - path: execute-actions.py @@ -42,7 +42,7 @@ harnesses: - path: test_execute_triage_security_actions.py sha256: fe43e9307dfed275d3408113c54f4e146ca2a93fa35974f1d1b6306fd5a29843 - path: test_fullsend_gate_eval.py - sha256: 2eef0c46dded78f74cc0017f7053d0f570c56028ea8e17fb6a9131d086e206c6 + sha256: ccc67d006e872d1a6e31c8a01c49fb5eb57ea7a25f9380e2d29865ec19b98fea - path: test_jira_client.py sha256: 1b9a6cc3aa36942e373df3ed847c550b2e396bc6df6cff5f03361253f7bbc8f1 - path: test_jira_client_cli.py @@ -65,10 +65,10 @@ harnesses: sha256: 7ce1b74a91c6a7fbef5b6070dcc65ebaba018ecf9e8595e645cce503fb775e78 - path: validate-output-schema.sh sha256: 56b964145da0b62f438dbc1885780d86e2d589c5340adb93c00e3c8777979cbe - fetched_at: 2026-10-26T15:24:21.022921Z + fetched_at: 2026-10-27T17:49:21.285638Z - field: post_script - url: https://raw.githubusercontent.com/RHEcosystemAppEng/sdlc-plugins/8f17cfaf627c11f4389896371590a32da0e82349/plugins/sdlc-workflow/scripts/post-triage-security.sh - sha256: 67d2a9dd6d13ce6d0d71d78efa2388055005d66248a23ccc02fecb1bfc6ab14f + url: https://raw.githubusercontent.com/RHEcosystemAppEng/sdlc-plugins/0bcdff92d772db4132af79e72fcdbfdb8be57bde/plugins/sdlc-workflow/scripts/post-triage-security.sh + sha256: 23781310b5d4dd4d8fe99dbb55e47434badc5dc3008685148796e6f60a4bb8ce type: directory files: - path: execute-actions.py @@ -96,7 +96,7 @@ harnesses: - path: test_execute_triage_security_actions.py sha256: fe43e9307dfed275d3408113c54f4e146ca2a93fa35974f1d1b6306fd5a29843 - path: test_fullsend_gate_eval.py - sha256: 2eef0c46dded78f74cc0017f7053d0f570c56028ea8e17fb6a9131d086e206c6 + sha256: ccc67d006e872d1a6e31c8a01c49fb5eb57ea7a25f9380e2d29865ec19b98fea - path: test_jira_client.py sha256: 1b9a6cc3aa36942e373df3ed847c550b2e396bc6df6cff5f03361253f7bbc8f1 - path: test_jira_client_cli.py @@ -119,10 +119,10 @@ harnesses: sha256: 7ce1b74a91c6a7fbef5b6070dcc65ebaba018ecf9e8595e645cce503fb775e78 - path: validate-output-schema.sh sha256: 56b964145da0b62f438dbc1885780d86e2d589c5340adb93c00e3c8777979cbe - fetched_at: 2026-10-26T15:24:21.022921Z + fetched_at: 2026-10-27T17:49:21.277021Z - field: validation_loop.script - url: https://raw.githubusercontent.com/RHEcosystemAppEng/sdlc-plugins/8f17cfaf627c11f4389896371590a32da0e82349/plugins/sdlc-workflow/scripts/validate-output-schema.sh - sha256: 67d2a9dd6d13ce6d0d71d78efa2388055005d66248a23ccc02fecb1bfc6ab14f + url: https://raw.githubusercontent.com/RHEcosystemAppEng/sdlc-plugins/0bcdff92d772db4132af79e72fcdbfdb8be57bde/plugins/sdlc-workflow/scripts/validate-output-schema.sh + sha256: 23781310b5d4dd4d8fe99dbb55e47434badc5dc3008685148796e6f60a4bb8ce type: directory files: - path: execute-actions.py @@ -150,7 +150,7 @@ harnesses: - path: test_execute_triage_security_actions.py sha256: fe43e9307dfed275d3408113c54f4e146ca2a93fa35974f1d1b6306fd5a29843 - path: test_fullsend_gate_eval.py - sha256: 2eef0c46dded78f74cc0017f7053d0f570c56028ea8e17fb6a9131d086e206c6 + sha256: ccc67d006e872d1a6e31c8a01c49fb5eb57ea7a25f9380e2d29865ec19b98fea - path: test_jira_client.py sha256: 1b9a6cc3aa36942e373df3ed847c550b2e396bc6df6cff5f03361253f7bbc8f1 - path: test_jira_client_cli.py @@ -173,30 +173,30 @@ harnesses: sha256: 7ce1b74a91c6a7fbef5b6070dcc65ebaba018ecf9e8595e645cce503fb775e78 - path: validate-output-schema.sh sha256: 56b964145da0b62f438dbc1885780d86e2d589c5340adb93c00e3c8777979cbe - fetched_at: 2026-10-26T15:24:21.022921Z + fetched_at: 2026-10-27T17:49:21.277021Z - field: validation_loop.schema - url: https://raw.githubusercontent.com/RHEcosystemAppEng/sdlc-plugins/8f17cfaf627c11f4389896371590a32da0e82349/plugins/sdlc-workflow/schemas/triage-security-result.schema.json + url: https://raw.githubusercontent.com/RHEcosystemAppEng/sdlc-plugins/0bcdff92d772db4132af79e72fcdbfdb8be57bde/plugins/sdlc-workflow/schemas/triage-security-result.schema.json sha256: 572c36a599661942c60ca610b7d2b60acd1864fbe48f6ce23b854d68a116c4fe type: resource - fetched_at: 2026-10-26T15:24:21.30338Z + fetched_at: 2026-10-27T17:49:21.565392Z - field: agent - url: https://raw.githubusercontent.com/RHEcosystemAppEng/sdlc-plugins/8f17cfaf627c11f4389896371590a32da0e82349/plugins/sdlc-workflow/agents/triage-security.md + url: https://raw.githubusercontent.com/RHEcosystemAppEng/sdlc-plugins/0bcdff92d772db4132af79e72fcdbfdb8be57bde/plugins/sdlc-workflow/agents/triage-security.md sha256: 3e0680274ff99326fa219b45ccbea6ea1ed1a7eba3f78056acf9e47b29c7c9fd type: resource - fetched_at: 2026-10-26T15:24:21.59205Z + fetched_at: 2026-10-27T17:49:21.850618Z - field: policy - url: https://raw.githubusercontent.com/RHEcosystemAppEng/sdlc-plugins/8f17cfaf627c11f4389896371590a32da0e82349/plugins/sdlc-workflow/policies/triage-security.yaml + url: https://raw.githubusercontent.com/RHEcosystemAppEng/sdlc-plugins/0bcdff92d772db4132af79e72fcdbfdb8be57bde/plugins/sdlc-workflow/policies/triage-security.yaml sha256: 312f947a7c0eceab078111406c8288853c760eb0304b080262da322066046b91 type: resource - fetched_at: 2026-10-26T15:24:21.881407Z + fetched_at: 2026-10-27T17:49:52.650285Z - field: host_files[0].src - url: https://raw.githubusercontent.com/RHEcosystemAppEng/sdlc-plugins/8f17cfaf627c11f4389896371590a32da0e82349/plugins/sdlc-workflow/env/gcp-vertex.env + url: https://raw.githubusercontent.com/RHEcosystemAppEng/sdlc-plugins/0bcdff92d772db4132af79e72fcdbfdb8be57bde/plugins/sdlc-workflow/env/gcp-vertex.env sha256: 10b2ba695b1d4e65e0964a233b75d6a06853f1eaefc260c56b9eedd989ae7d41 type: resource - fetched_at: 2026-10-26T15:24:52.550938Z + fetched_at: 2026-10-27T17:49:52.974631Z - field: plugins[0] - url: https://raw.githubusercontent.com/RHEcosystemAppEng/sdlc-plugins/8f17cfaf627c11f4389896371590a32da0e82349/plugins/sdlc-workflow/ - sha256: 6c47220666dabcf9005848ae75afa54c8b9404801db05467314b017adf93314f + url: https://raw.githubusercontent.com/RHEcosystemAppEng/sdlc-plugins/0bcdff92d772db4132af79e72fcdbfdb8be57bde/plugins/sdlc-workflow/ + sha256: ba7a12fe8a9e4222e8e28128bba62b21c62c0438c9d9847aeafc1320e7d459ec type: directory files: - path: .claude-plugin/plugin.json @@ -244,7 +244,7 @@ harnesses: - path: scripts/test_execute_triage_security_actions.py sha256: fe43e9307dfed275d3408113c54f4e146ca2a93fa35974f1d1b6306fd5a29843 - path: scripts/test_fullsend_gate_eval.py - sha256: 2eef0c46dded78f74cc0017f7053d0f570c56028ea8e17fb6a9131d086e206c6 + sha256: ccc67d006e872d1a6e31c8a01c49fb5eb57ea7a25f9380e2d29865ec19b98fea - path: scripts/test_jira_client.py sha256: 1b9a6cc3aa36942e373df3ed847c550b2e396bc6df6cff5f03361253f7bbc8f1 - path: scripts/test_jira_client_cli.py @@ -300,7 +300,7 @@ harnesses: - path: skills/run-evals/scripts/test_render_summary.py sha256: 34a2333e5bee8b0f07c23e64a9e7ab096cf16e4a027cacf91b86c4b39e584cf7 - path: skills/setup/SKILL.md - sha256: a9d4a55fc35123607c445ea4ad2609e8306443f2032d360fa55b54827871bde6 + sha256: 30de9d03801044ffee67c41cde27dcee348cf799faa0ea31473ef8b1762ed504 - path: skills/setup/constraints.template.md sha256: 6a0c75f5e390eea5c42daffd8517b19ac58d41d6600d46a067bc31d3056b52b0 - path: skills/setup/conventions.template.md @@ -318,7 +318,7 @@ harnesses: - path: skills/triage-security/remediation-templates.md sha256: c4d912a61fd7e5ff9479370ffc31d0cc491f805c1be1065695782e80bdce5a04 - path: skills/triage-security/version-impact-analysis.md - sha256: 79c9bec47f07f76da2479997e0e345f0bc961485a5c4b962563cbbacdc16faa5 + sha256: 3e8ed542f22f9af458d65adb3cf983f26c93adfc5f59bcc9cdb077c86e42ceb5 - path: skills/verify-pr/SKILL.md sha256: 7874bb479db32c5a77a3b4bf4ff1b7dea44ebb1d5aad51df89bfa5d5af3b120a - path: skills/verify-pr/correctness.md @@ -333,38 +333,38 @@ harnesses: sha256: 128877cf7e156666dbb403805a0112059cc8cc3255e148c6794da29d48b8f5cf - path: skills/verify-pr/style-conventions.md sha256: 5ab920c596615c0d23354cb0e90fe5ebf5f08635ffa3602e8e2d2abd74028a19 - fetched_at: 2026-10-26T15:56:23.275476Z + fetched_at: 2026-10-27T17:49:56.922062Z verify-pr: source: harness/verify-pr.yaml - sha256: ea139120abd39e515859ad8a1cfeeeb042fc956611468d8bdd741d115f643d89 - resolved_at: 2026-10-20T10:53:14.681711Z + sha256: 1c8f6946b1e3155ae74afb261186d5bc6f9d0d4dda63553141b0b50af630e977 + resolved_at: 2026-10-27T17:49:58.822942Z dependencies: - field: base - url: https://raw.githubusercontent.com/RHEcosystemAppEng/sdlc-plugins/c32f1c408f4da393b90c15b13a7d693946e0e232/harness/verify-pr.yaml - sha256: 3c9dc221e2a37e7aa7ff294381b6b5b1580771ba70432c42924fc3a85f078e63 + url: https://raw.githubusercontent.com/RHEcosystemAppEng/sdlc-plugins/0bcdff92d772db4132af79e72fcdbfdb8be57bde/harness/verify-pr.yaml + sha256: 81ed85130c3d42493aab890a349b8c7ce76839d3903132f084f575f72c2d8186 type: file - fetched_at: 2026-10-15T14:16:03.509816Z + fetched_at: 2026-10-27T17:49:57.070607Z - field: pre_script - url: https://raw.githubusercontent.com/RHEcosystemAppEng/sdlc-plugins/c32f1c408f4da393b90c15b13a7d693946e0e232/plugins/sdlc-workflow/scripts/pre-verify-pr.sh - sha256: 1be6ba803ada6b1c41ca9bd7cdc21ebe3644da6b73ca8d63215c960f0c23f4e3 + url: https://raw.githubusercontent.com/RHEcosystemAppEng/sdlc-plugins/0bcdff92d772db4132af79e72fcdbfdb8be57bde/plugins/sdlc-workflow/scripts/pre-verify-pr.sh + sha256: 23781310b5d4dd4d8fe99dbb55e47434badc5dc3008685148796e6f60a4bb8ce type: directory files: - path: execute-actions.py sha256: 595220e3cac4426acaecfda17e9c7b73532cd9bf59a453c4093dc8e9a57a0936 - path: execute-triage-security-actions.py - sha256: 3dc59dd94a52cb2a31c576c7e48421758cdc1c8dd6f59edd4bd82eff713ed836 + sha256: 3c2fba88a6f65d349f522e5e0840bd680c0fd7f5f270c38bb1aac528e1f4e3cb - path: jira-client.py sha256: d2ed3d8188f3f0ceda5f8ed13deadaba19e0f4a3ec9a4041d7f9bef4c101e5e7 - path: post-triage-security.sh - sha256: 2e5527eddd13f3beb9a87afec9e9e443e6f72bccde32a3620144584af1b9b140 + sha256: 370e67d61a21609eae7503ae4b0fb5e79ce114352a3d36480dfbc1f392eae81a - path: post-verify-pr.sh sha256: 0cdd85d68e1c94546964747badcb1837602aae0e47a168903f39e3760d1be687 - path: pre-triage-security.sh - sha256: 3b82b146ec0c91ec93e93c7206d357121a256a8496be75b92a98ad6fe034921a + sha256: ea31567399191ad17f318d46649d68de64559c6332131112a29259d1328d4673 - path: pre-verify-pr.sh sha256: 4f80f09e8a0f43609e088eeadf2cc539854df776bcd7c34f4fa13f20817de639 - path: pre_triage_security.py - sha256: e49915e2a202806f2496051f546b757db67342d6f3b269d6b15081490c289da9 + sha256: fea2ebbb49c8bcd01371ee44fe35047c41d8e464df40d71d155b816f2892e618 - path: pre_verify_pr.py sha256: 95b4c146231bc109f45e7613dadb8a9ecbb872cbe987a5d56dd98214089e27da - path: strip_extra_properties.py @@ -372,19 +372,19 @@ harnesses: - path: test_execute_actions.py sha256: 4170eea78768a516097d212a48b4b459ffb47370c0cc224bc157113d581ab0d4 - path: test_execute_triage_security_actions.py - sha256: fd2754c3dc4fb2df2d9e3dbfb7abc26c61d314049b3345fcb13ce67711784618 + sha256: fe43e9307dfed275d3408113c54f4e146ca2a93fa35974f1d1b6306fd5a29843 - path: test_fullsend_gate_eval.py - sha256: 6b5229bf1b64e35e92a3e362f1ca2fe06d5708f8f67d44e1a44a71789b85b84c + sha256: ccc67d006e872d1a6e31c8a01c49fb5eb57ea7a25f9380e2d29865ec19b98fea - path: test_jira_client.py sha256: 1b9a6cc3aa36942e373df3ed847c550b2e396bc6df6cff5f03361253f7bbc8f1 - path: test_jira_client_cli.py sha256: d36b790c1a310111a0d2f3e81415f9576e80acc5f0bc7d0ff8084ffad001285f - path: test_native_fullsend_eval_ci.py - sha256: a32e16e1145f257ecaf3817ff5b0e5cf4453421fd57520930f82736225dc594d + sha256: a7df5cc8269c6129bf009f517343db91029dd9ed669d43d698fadde318f93363 - path: test_native_fullsend_execution.py sha256: 3b923e1e53fc410d648c9be56ef6c09c5b4cdc47ce4030541f5030b1fb757049 - path: test_pre_triage_security.py - sha256: 56fdbaf9d765baf302caa869792bc277c6804c3d34bc602c2e8961bdc84c17a8 + sha256: cddebab3bebba2df545f58bc24045ef929193536f6c328d307f74f8754c0922e - path: test_pre_verify_pr.py sha256: e23e7292d73162feb1b39105a6abdc41181c26aa8d14685163066c45d62173d6 - path: test_triage_security_fullsend.py @@ -393,30 +393,32 @@ harnesses: sha256: 94bbc65f0c6b7d10dcae0af91dab3728f659722d4058aa5bc1ac4e8eadbc5547 - path: test_verify_pr_eval_observability.py sha256: 181ec82472eb61f44b4ffc969f8fa5522d123477f447bb77e7b60f8cee5d9eb2 + - path: triage-security-input.schema.json + sha256: 7ce1b74a91c6a7fbef5b6070dcc65ebaba018ecf9e8595e645cce503fb775e78 - path: validate-output-schema.sh sha256: 56b964145da0b62f438dbc1885780d86e2d589c5340adb93c00e3c8777979cbe - fetched_at: 2026-10-15T14:16:06.294605Z + fetched_at: 2026-10-27T17:49:21.277021Z - field: post_script - url: https://raw.githubusercontent.com/RHEcosystemAppEng/sdlc-plugins/c32f1c408f4da393b90c15b13a7d693946e0e232/plugins/sdlc-workflow/scripts/post-verify-pr.sh - sha256: 1be6ba803ada6b1c41ca9bd7cdc21ebe3644da6b73ca8d63215c960f0c23f4e3 + url: https://raw.githubusercontent.com/RHEcosystemAppEng/sdlc-plugins/0bcdff92d772db4132af79e72fcdbfdb8be57bde/plugins/sdlc-workflow/scripts/post-verify-pr.sh + sha256: 23781310b5d4dd4d8fe99dbb55e47434badc5dc3008685148796e6f60a4bb8ce type: directory files: - path: execute-actions.py sha256: 595220e3cac4426acaecfda17e9c7b73532cd9bf59a453c4093dc8e9a57a0936 - path: execute-triage-security-actions.py - sha256: 3dc59dd94a52cb2a31c576c7e48421758cdc1c8dd6f59edd4bd82eff713ed836 + sha256: 3c2fba88a6f65d349f522e5e0840bd680c0fd7f5f270c38bb1aac528e1f4e3cb - path: jira-client.py sha256: d2ed3d8188f3f0ceda5f8ed13deadaba19e0f4a3ec9a4041d7f9bef4c101e5e7 - path: post-triage-security.sh - sha256: 2e5527eddd13f3beb9a87afec9e9e443e6f72bccde32a3620144584af1b9b140 + sha256: 370e67d61a21609eae7503ae4b0fb5e79ce114352a3d36480dfbc1f392eae81a - path: post-verify-pr.sh sha256: 0cdd85d68e1c94546964747badcb1837602aae0e47a168903f39e3760d1be687 - path: pre-triage-security.sh - sha256: 3b82b146ec0c91ec93e93c7206d357121a256a8496be75b92a98ad6fe034921a + sha256: ea31567399191ad17f318d46649d68de64559c6332131112a29259d1328d4673 - path: pre-verify-pr.sh sha256: 4f80f09e8a0f43609e088eeadf2cc539854df776bcd7c34f4fa13f20817de639 - path: pre_triage_security.py - sha256: e49915e2a202806f2496051f546b757db67342d6f3b269d6b15081490c289da9 + sha256: fea2ebbb49c8bcd01371ee44fe35047c41d8e464df40d71d155b816f2892e618 - path: pre_verify_pr.py sha256: 95b4c146231bc109f45e7613dadb8a9ecbb872cbe987a5d56dd98214089e27da - path: strip_extra_properties.py @@ -424,19 +426,19 @@ harnesses: - path: test_execute_actions.py sha256: 4170eea78768a516097d212a48b4b459ffb47370c0cc224bc157113d581ab0d4 - path: test_execute_triage_security_actions.py - sha256: fd2754c3dc4fb2df2d9e3dbfb7abc26c61d314049b3345fcb13ce67711784618 + sha256: fe43e9307dfed275d3408113c54f4e146ca2a93fa35974f1d1b6306fd5a29843 - path: test_fullsend_gate_eval.py - sha256: 6b5229bf1b64e35e92a3e362f1ca2fe06d5708f8f67d44e1a44a71789b85b84c + sha256: ccc67d006e872d1a6e31c8a01c49fb5eb57ea7a25f9380e2d29865ec19b98fea - path: test_jira_client.py sha256: 1b9a6cc3aa36942e373df3ed847c550b2e396bc6df6cff5f03361253f7bbc8f1 - path: test_jira_client_cli.py sha256: d36b790c1a310111a0d2f3e81415f9576e80acc5f0bc7d0ff8084ffad001285f - path: test_native_fullsend_eval_ci.py - sha256: a32e16e1145f257ecaf3817ff5b0e5cf4453421fd57520930f82736225dc594d + sha256: a7df5cc8269c6129bf009f517343db91029dd9ed669d43d698fadde318f93363 - path: test_native_fullsend_execution.py sha256: 3b923e1e53fc410d648c9be56ef6c09c5b4cdc47ce4030541f5030b1fb757049 - path: test_pre_triage_security.py - sha256: 56fdbaf9d765baf302caa869792bc277c6804c3d34bc602c2e8961bdc84c17a8 + sha256: cddebab3bebba2df545f58bc24045ef929193536f6c328d307f74f8754c0922e - path: test_pre_verify_pr.py sha256: e23e7292d73162feb1b39105a6abdc41181c26aa8d14685163066c45d62173d6 - path: test_triage_security_fullsend.py @@ -445,30 +447,32 @@ harnesses: sha256: 94bbc65f0c6b7d10dcae0af91dab3728f659722d4058aa5bc1ac4e8eadbc5547 - path: test_verify_pr_eval_observability.py sha256: 181ec82472eb61f44b4ffc969f8fa5522d123477f447bb77e7b60f8cee5d9eb2 + - path: triage-security-input.schema.json + sha256: 7ce1b74a91c6a7fbef5b6070dcc65ebaba018ecf9e8595e645cce503fb775e78 - path: validate-output-schema.sh sha256: 56b964145da0b62f438dbc1885780d86e2d589c5340adb93c00e3c8777979cbe - fetched_at: 2026-10-15T14:16:06.294605Z + fetched_at: 2026-10-27T17:49:21.277021Z - field: validation_loop.script - url: https://raw.githubusercontent.com/RHEcosystemAppEng/sdlc-plugins/c32f1c408f4da393b90c15b13a7d693946e0e232/plugins/sdlc-workflow/scripts/validate-output-schema.sh - sha256: 1be6ba803ada6b1c41ca9bd7cdc21ebe3644da6b73ca8d63215c960f0c23f4e3 + url: https://raw.githubusercontent.com/RHEcosystemAppEng/sdlc-plugins/0bcdff92d772db4132af79e72fcdbfdb8be57bde/plugins/sdlc-workflow/scripts/validate-output-schema.sh + sha256: 23781310b5d4dd4d8fe99dbb55e47434badc5dc3008685148796e6f60a4bb8ce type: directory files: - path: execute-actions.py sha256: 595220e3cac4426acaecfda17e9c7b73532cd9bf59a453c4093dc8e9a57a0936 - path: execute-triage-security-actions.py - sha256: 3dc59dd94a52cb2a31c576c7e48421758cdc1c8dd6f59edd4bd82eff713ed836 + sha256: 3c2fba88a6f65d349f522e5e0840bd680c0fd7f5f270c38bb1aac528e1f4e3cb - path: jira-client.py sha256: d2ed3d8188f3f0ceda5f8ed13deadaba19e0f4a3ec9a4041d7f9bef4c101e5e7 - path: post-triage-security.sh - sha256: 2e5527eddd13f3beb9a87afec9e9e443e6f72bccde32a3620144584af1b9b140 + sha256: 370e67d61a21609eae7503ae4b0fb5e79ce114352a3d36480dfbc1f392eae81a - path: post-verify-pr.sh sha256: 0cdd85d68e1c94546964747badcb1837602aae0e47a168903f39e3760d1be687 - path: pre-triage-security.sh - sha256: 3b82b146ec0c91ec93e93c7206d357121a256a8496be75b92a98ad6fe034921a + sha256: ea31567399191ad17f318d46649d68de64559c6332131112a29259d1328d4673 - path: pre-verify-pr.sh sha256: 4f80f09e8a0f43609e088eeadf2cc539854df776bcd7c34f4fa13f20817de639 - path: pre_triage_security.py - sha256: e49915e2a202806f2496051f546b757db67342d6f3b269d6b15081490c289da9 + sha256: fea2ebbb49c8bcd01371ee44fe35047c41d8e464df40d71d155b816f2892e618 - path: pre_verify_pr.py sha256: 95b4c146231bc109f45e7613dadb8a9ecbb872cbe987a5d56dd98214089e27da - path: strip_extra_properties.py @@ -476,19 +480,19 @@ harnesses: - path: test_execute_actions.py sha256: 4170eea78768a516097d212a48b4b459ffb47370c0cc224bc157113d581ab0d4 - path: test_execute_triage_security_actions.py - sha256: fd2754c3dc4fb2df2d9e3dbfb7abc26c61d314049b3345fcb13ce67711784618 + sha256: fe43e9307dfed275d3408113c54f4e146ca2a93fa35974f1d1b6306fd5a29843 - path: test_fullsend_gate_eval.py - sha256: 6b5229bf1b64e35e92a3e362f1ca2fe06d5708f8f67d44e1a44a71789b85b84c + sha256: ccc67d006e872d1a6e31c8a01c49fb5eb57ea7a25f9380e2d29865ec19b98fea - path: test_jira_client.py sha256: 1b9a6cc3aa36942e373df3ed847c550b2e396bc6df6cff5f03361253f7bbc8f1 - path: test_jira_client_cli.py sha256: d36b790c1a310111a0d2f3e81415f9576e80acc5f0bc7d0ff8084ffad001285f - path: test_native_fullsend_eval_ci.py - sha256: a32e16e1145f257ecaf3817ff5b0e5cf4453421fd57520930f82736225dc594d + sha256: a7df5cc8269c6129bf009f517343db91029dd9ed669d43d698fadde318f93363 - path: test_native_fullsend_execution.py sha256: 3b923e1e53fc410d648c9be56ef6c09c5b4cdc47ce4030541f5030b1fb757049 - path: test_pre_triage_security.py - sha256: 56fdbaf9d765baf302caa869792bc277c6804c3d34bc602c2e8961bdc84c17a8 + sha256: cddebab3bebba2df545f58bc24045ef929193536f6c328d307f74f8754c0922e - path: test_pre_verify_pr.py sha256: e23e7292d73162feb1b39105a6abdc41181c26aa8d14685163066c45d62173d6 - path: test_triage_security_fullsend.py @@ -497,42 +501,34 @@ harnesses: sha256: 94bbc65f0c6b7d10dcae0af91dab3728f659722d4058aa5bc1ac4e8eadbc5547 - path: test_verify_pr_eval_observability.py sha256: 181ec82472eb61f44b4ffc969f8fa5522d123477f447bb77e7b60f8cee5d9eb2 + - path: triage-security-input.schema.json + sha256: 7ce1b74a91c6a7fbef5b6070dcc65ebaba018ecf9e8595e645cce503fb775e78 - path: validate-output-schema.sh sha256: 56b964145da0b62f438dbc1885780d86e2d589c5340adb93c00e3c8777979cbe - fetched_at: 2026-10-15T14:16:06.294605Z + fetched_at: 2026-10-27T17:49:21.277021Z - field: validation_loop.schema - url: https://raw.githubusercontent.com/RHEcosystemAppEng/sdlc-plugins/c32f1c408f4da393b90c15b13a7d693946e0e232/plugins/sdlc-workflow/schemas/verify-pr-result.schema.json + url: https://raw.githubusercontent.com/RHEcosystemAppEng/sdlc-plugins/0bcdff92d772db4132af79e72fcdbfdb8be57bde/plugins/sdlc-workflow/schemas/verify-pr-result.schema.json sha256: 62c3e5ce0c47e73823b5cab9a577be7b721d8fb31389bc8602dc82ee05526ad6 type: resource - fetched_at: 2026-10-15T14:16:06.584783Z + fetched_at: 2026-10-27T17:49:57.935461Z - field: agent - url: https://raw.githubusercontent.com/RHEcosystemAppEng/sdlc-plugins/c32f1c408f4da393b90c15b13a7d693946e0e232/plugins/sdlc-workflow/agents/verify-pr.md + url: https://raw.githubusercontent.com/RHEcosystemAppEng/sdlc-plugins/0bcdff92d772db4132af79e72fcdbfdb8be57bde/plugins/sdlc-workflow/agents/verify-pr.md sha256: 229fef270b4b195f91cc46ef3ba50cbf7701f49ee546291882cff893d53844b3 type: resource - fetched_at: 2026-10-15T14:16:06.855952Z + fetched_at: 2026-10-27T17:49:58.392385Z - field: policy - url: https://raw.githubusercontent.com/RHEcosystemAppEng/sdlc-plugins/c32f1c408f4da393b90c15b13a7d693946e0e232/plugins/sdlc-workflow/policies/verify-pr.yaml + url: https://raw.githubusercontent.com/RHEcosystemAppEng/sdlc-plugins/0bcdff92d772db4132af79e72fcdbfdb8be57bde/plugins/sdlc-workflow/policies/verify-pr.yaml sha256: 62d1374be253b0b225921bd8e22e679781076ecdb3a9ea22d5e6a4805753c5a7 type: resource - fetched_at: 2026-10-15T14:16:07.287698Z + fetched_at: 2026-10-27T17:49:58.798838Z - field: host_files[0].src - url: https://raw.githubusercontent.com/RHEcosystemAppEng/sdlc-plugins/c32f1c408f4da393b90c15b13a7d693946e0e232/plugins/sdlc-workflow/env/gcp-vertex.env + url: https://raw.githubusercontent.com/RHEcosystemAppEng/sdlc-plugins/0bcdff92d772db4132af79e72fcdbfdb8be57bde/plugins/sdlc-workflow/env/gcp-vertex.env sha256: 10b2ba695b1d4e65e0964a233b75d6a06853f1eaefc260c56b9eedd989ae7d41 type: resource - fetched_at: 2026-10-20T10:51:37.823291Z - - field: openshell.profiles[0] - url: https://raw.githubusercontent.com/RHEcosystemAppEng/sdlc-plugins/c32f1c408f4da393b90c15b13a7d693946e0e232/plugins/sdlc-workflow/profiles/fullsend-vertex-ai.yaml - sha256: 76535a148387b1281be2bfb23b6724e4133327189b38c8ce1de2c6dddb8d8341 - type: resource - fetched_at: 2026-10-20T10:51:38.074017Z - - field: providers[0] - url: https://raw.githubusercontent.com/RHEcosystemAppEng/sdlc-plugins/c32f1c408f4da393b90c15b13a7d693946e0e232/plugins/sdlc-workflow/providers/vertex-ai.yaml - sha256: ae5ebe527e5d7b0fa6994346fde3f6ba11b632a3ba78ece96591b5ed85083ec1 - type: resource - fetched_at: 2026-10-20T10:51:38.338759Z + fetched_at: 2026-10-27T17:49:52.960372Z - field: plugins[0] - url: https://raw.githubusercontent.com/RHEcosystemAppEng/sdlc-plugins/c32f1c408f4da393b90c15b13a7d693946e0e232/plugins/sdlc-workflow/ - sha256: 9d85ff64fbd05f24af47e129cef573fab7dc83cd0d2a5f35aebd978b998d20f8 + url: https://raw.githubusercontent.com/RHEcosystemAppEng/sdlc-plugins/0bcdff92d772db4132af79e72fcdbfdb8be57bde/plugins/sdlc-workflow/ + sha256: ba7a12fe8a9e4222e8e28128bba62b21c62c0438c9d9847aeafc1320e7d459ec type: directory files: - path: .claude-plugin/plugin.json @@ -549,12 +545,6 @@ harnesses: sha256: 312f947a7c0eceab078111406c8288853c760eb0304b080262da322066046b91 - path: policies/verify-pr.yaml sha256: 62d1374be253b0b225921bd8e22e679781076ecdb3a9ea22d5e6a4805753c5a7 - - path: profiles/fullsend-vertex-ai.yaml - sha256: 76535a148387b1281be2bfb23b6724e4133327189b38c8ce1de2c6dddb8d8341 - - path: providers/vertex-ai.yaml - sha256: ae5ebe527e5d7b0fa6994346fde3f6ba11b632a3ba78ece96591b5ed85083ec1 - - path: schemas/triage-security-input.schema.json - sha256: 7ce1b74a91c6a7fbef5b6070dcc65ebaba018ecf9e8595e645cce503fb775e78 - path: schemas/triage-security-result.schema.json sha256: 572c36a599661942c60ca610b7d2b60acd1864fbe48f6ce23b854d68a116c4fe - path: schemas/verify-pr-input.schema.json @@ -564,19 +554,19 @@ harnesses: - path: scripts/execute-actions.py sha256: 595220e3cac4426acaecfda17e9c7b73532cd9bf59a453c4093dc8e9a57a0936 - path: scripts/execute-triage-security-actions.py - sha256: 3dc59dd94a52cb2a31c576c7e48421758cdc1c8dd6f59edd4bd82eff713ed836 + sha256: 3c2fba88a6f65d349f522e5e0840bd680c0fd7f5f270c38bb1aac528e1f4e3cb - path: scripts/jira-client.py sha256: d2ed3d8188f3f0ceda5f8ed13deadaba19e0f4a3ec9a4041d7f9bef4c101e5e7 - path: scripts/post-triage-security.sh - sha256: 2e5527eddd13f3beb9a87afec9e9e443e6f72bccde32a3620144584af1b9b140 + sha256: 370e67d61a21609eae7503ae4b0fb5e79ce114352a3d36480dfbc1f392eae81a - path: scripts/post-verify-pr.sh sha256: 0cdd85d68e1c94546964747badcb1837602aae0e47a168903f39e3760d1be687 - path: scripts/pre-triage-security.sh - sha256: 3b82b146ec0c91ec93e93c7206d357121a256a8496be75b92a98ad6fe034921a + sha256: ea31567399191ad17f318d46649d68de64559c6332131112a29259d1328d4673 - path: scripts/pre-verify-pr.sh sha256: 4f80f09e8a0f43609e088eeadf2cc539854df776bcd7c34f4fa13f20817de639 - path: scripts/pre_triage_security.py - sha256: e49915e2a202806f2496051f546b757db67342d6f3b269d6b15081490c289da9 + sha256: fea2ebbb49c8bcd01371ee44fe35047c41d8e464df40d71d155b816f2892e618 - path: scripts/pre_verify_pr.py sha256: 95b4c146231bc109f45e7613dadb8a9ecbb872cbe987a5d56dd98214089e27da - path: scripts/strip_extra_properties.py @@ -584,19 +574,19 @@ harnesses: - path: scripts/test_execute_actions.py sha256: 4170eea78768a516097d212a48b4b459ffb47370c0cc224bc157113d581ab0d4 - path: scripts/test_execute_triage_security_actions.py - sha256: fd2754c3dc4fb2df2d9e3dbfb7abc26c61d314049b3345fcb13ce67711784618 + sha256: fe43e9307dfed275d3408113c54f4e146ca2a93fa35974f1d1b6306fd5a29843 - path: scripts/test_fullsend_gate_eval.py - sha256: 6b5229bf1b64e35e92a3e362f1ca2fe06d5708f8f67d44e1a44a71789b85b84c + sha256: ccc67d006e872d1a6e31c8a01c49fb5eb57ea7a25f9380e2d29865ec19b98fea - path: scripts/test_jira_client.py sha256: 1b9a6cc3aa36942e373df3ed847c550b2e396bc6df6cff5f03361253f7bbc8f1 - path: scripts/test_jira_client_cli.py sha256: d36b790c1a310111a0d2f3e81415f9576e80acc5f0bc7d0ff8084ffad001285f - path: scripts/test_native_fullsend_eval_ci.py - sha256: a32e16e1145f257ecaf3817ff5b0e5cf4453421fd57520930f82736225dc594d + sha256: a7df5cc8269c6129bf009f517343db91029dd9ed669d43d698fadde318f93363 - path: scripts/test_native_fullsend_execution.py sha256: 3b923e1e53fc410d648c9be56ef6c09c5b4cdc47ce4030541f5030b1fb757049 - path: scripts/test_pre_triage_security.py - sha256: 56fdbaf9d765baf302caa869792bc277c6804c3d34bc602c2e8961bdc84c17a8 + sha256: cddebab3bebba2df545f58bc24045ef929193536f6c328d307f74f8754c0922e - path: scripts/test_pre_verify_pr.py sha256: e23e7292d73162feb1b39105a6abdc41181c26aa8d14685163066c45d62173d6 - path: scripts/test_triage_security_fullsend.py @@ -605,6 +595,8 @@ harnesses: sha256: 94bbc65f0c6b7d10dcae0af91dab3728f659722d4058aa5bc1ac4e8eadbc5547 - path: scripts/test_verify_pr_eval_observability.py sha256: 181ec82472eb61f44b4ffc969f8fa5522d123477f447bb77e7b60f8cee5d9eb2 + - path: scripts/triage-security-input.schema.json + sha256: 7ce1b74a91c6a7fbef5b6070dcc65ebaba018ecf9e8595e645cce503fb775e78 - path: scripts/validate-output-schema.sh sha256: 56b964145da0b62f438dbc1885780d86e2d589c5340adb93c00e3c8777979cbe - path: shared/comment-footnote.md @@ -640,7 +632,7 @@ harnesses: - path: skills/run-evals/scripts/test_render_summary.py sha256: 34a2333e5bee8b0f07c23e64a9e7ab096cf16e4a027cacf91b86c4b39e584cf7 - path: skills/setup/SKILL.md - sha256: a9d4a55fc35123607c445ea4ad2609e8306443f2032d360fa55b54827871bde6 + sha256: 30de9d03801044ffee67c41cde27dcee348cf799faa0ea31473ef8b1762ed504 - path: skills/setup/constraints.template.md sha256: 6a0c75f5e390eea5c42daffd8517b19ac58d41d6600d46a067bc31d3056b52b0 - path: skills/setup/conventions.template.md @@ -652,13 +644,13 @@ harnesses: - path: skills/triage-bug/SKILL.md sha256: e3c5f28d1c7bafdcf706d8be89110cef28217ef878a754fb89c571c5731242d4 - path: skills/triage-security/SKILL.md - sha256: 97398fa3625c7d8071eb1bdbb9db7ee7db9f93192307b67b99158599b942fef1 + sha256: 022a1c1d7127b90738be27fe7f748bfc82615f20e46096637390b1ec7835ad43 - path: skills/triage-security/jira-triage-operations.md sha256: 509678de6e9eb0ce327fb2c4c010c816711daa748d2192467350c5e031375586 - path: skills/triage-security/remediation-templates.md sha256: c4d912a61fd7e5ff9479370ffc31d0cc491f805c1be1065695782e80bdce5a04 - path: skills/triage-security/version-impact-analysis.md - sha256: 79c9bec47f07f76da2479997e0e345f0bc961485a5c4b962563cbbacdc16faa5 + sha256: 3e8ed542f22f9af458d65adb3cf983f26c93adfc5f59bcc9cdb077c86e42ceb5 - path: skills/verify-pr/SKILL.md sha256: 7874bb479db32c5a77a3b4bf4ff1b7dea44ebb1d5aad51df89bfa5d5af3b120a - path: skills/verify-pr/correctness.md @@ -673,4 +665,4 @@ harnesses: sha256: 128877cf7e156666dbb403805a0112059cc8cc3255e148c6794da29d48b8f5cf - path: skills/verify-pr/style-conventions.md sha256: 5ab920c596615c0d23354cb0e90fe5ebf5f08635ffa3602e8e2d2abd74028a19 - fetched_at: 2026-10-15T14:16:11.445793Z + fetched_at: 2026-10-27T17:49:56.901958Z diff --git a/.github/workflows/fullsend-verify-pr.yml b/.github/workflows/fullsend-verify-pr.yml index 1ea9fc677..d88f42fb4 100644 --- a/.github/workflows/fullsend-verify-pr.yml +++ b/.github/workflows/fullsend-verify-pr.yml @@ -216,31 +216,25 @@ jobs: issues: write packages: read pull-requests: write - # Pinned to a full SHA (TC-6909): the floating `@v0` tag advanced to a - # reusable-dispatch that moved GCP setup into `./.defaults` and no longer - # exports GOOGLE_APPLICATION_CREDENTIALS before `fullsend run`, failing the - # child harness's host_files validation. Advance the pin only after the - # harness credential mounts are adapted to the new vendor model. - uses: fullsend-ai/fullsend/.github/workflows/reusable-dispatch.yml@d5f36921ac754705619f38c637ef692873809fbc # v0 as of 2026-09-30 + # Pinned to the supported fullsend commit (never a floating ref such as + # `@v0`). `uses:@` and `fullsend_version` MUST move together: at this commit + # `fullsend run` itself exports GOOGLE_APPLICATION_CREDENTIALS (runner-owned + # credentials), so a newer dispatch with an older CLI fails the child + # harness's host_files validation. Bump both only through fullsend.md + # "Updating fullsend (pin-and-bump)" / "Supported fullsend commit". + uses: fullsend-ai/fullsend/.github/workflows/reusable-dispatch.yml@9f188578f0d8c94169287594b0c79cd4c4eeaa91 # main as of 2026-10-14 with: matrix: ${{ needs.wait-for-checks.outputs.matrix }} - install_mode: per-repo mint_url: ${{ vars.FULLSEND_MINT_URL }} gcp_region: ${{ vars.FULLSEND_GCP_REGION }} project_number: ${{ vars.FULLSEND_PROJECT_NUMBER }} jira_base_url: ${{ vars.JIRA_BASE_URL }} - # Pin the fullsend CLI to a released tag (vendor default `job.workflow_sha` - # floats). Bumped v0.37.0 -> v0.43.0: v0.37.0's bundled OpenShell (0.0.83) - # never reached sandbox readiness (`not ready after 2m0s` x3 -> `Failed to - # create sandbox`), while fullsend's own dispatch jobs — same composite - # action `./.defaults/`, same ubuntu-24.04 runner, differing ONLY in CLI - # version (they float to latest) — create the sandbox in ~49s. v0.43.0 was - # the latest release when pinned and carries the newer OpenShell; it is no - # longer the latest (v0.47.1 as of 2026-10-15). The supported commit to bump - # to, and the process, are in fullsend.md "Updating fullsend - # (pin-and-bump)" / "Supported fullsend commit". Tag format matches the - # vendor's git tags (v-prefixed). - fullsend_version: "v0.43.0" + # Same commit as `uses:@`. The supported commit is untagged, so the full + # SHA is passed (the vendor action accepts a 40-char SHA and builds the CLI + # from source when no release matches). An empty value would fall back to + # `job.workflow_sha` (the `uses:` SHA); it is kept explicit so the CLI pin + # is visible in review. + fullsend_version: "9f188578f0d8c94169287594b0c79cd4c4eeaa91" runner_image: ubuntu-24.04 # The reusable workflow declares Jira credentials under vendor names # (JIRA_TOKEN / JIRA_USER_EMAIL); this repo stores them under the canonical diff --git a/fullsend.md b/fullsend.md index 1204a4983..d4ab8109b 100644 --- a/fullsend.md +++ b/fullsend.md @@ -103,9 +103,11 @@ github egress from the sandbox — those are handled on the runner. ## Prerequisites - [fullsend](https://github.com/fullsend-ai/fullsend) CLI installed — **≥ v0.45.0** - for the built-in `vertex-ai` provider the harnesses declare (the live - verify-pr dispatch still pins **v0.43.0** against an older locked harness — see - [Updating fullsend (pin-and-bump)](#updating-fullsend-pin-and-bump)). + for the built-in `vertex-ai` provider the harnesses declare. To match CI + exactly, use the supported commit the GitHub verify-pr dispatch pins + (`9f188578`, untagged — build it from source with + `go build -o fullsend ./cmd/fullsend` in a fullsend checkout at that commit); + see [Updating fullsend (pin-and-bump)](#updating-fullsend-pin-and-bump). - OpenShell **0.1.x** (the version the chosen fullsend release pins in `.github/scripts/openshell-version.sh`; 0.1.2 for v0.47.1 and `9f188578`). - An OpenShell gateway running — fullsend uses OpenShell as its sandbox runtime. @@ -246,8 +248,9 @@ The dispatch job hands a pre-built single-entry matrix (agent `verify-pr`, role `review`) to the vendor reusable workflow `fullsend-ai/fullsend/.github/workflows/reusable-dispatch.yml`, whose `harness-run` job mints the review-role App token via OIDC and runs `fullsend run`. -The reusable workflow is **pinned by full SHA** -(`@d5f36921ac754705619f38c637ef692873809fbc # v0 as of 2026-09-30`), not the +The reusable workflow and the CLI (`fullsend_version`) are **both pinned by full +SHA to the supported fullsend commit** +(`@9f188578f0d8c94169287594b0c79cd4c4eeaa91 # main as of 2026-10-14`), never the floating `@v0` tag — see [Updating fullsend (pin-and-bump)](#updating-fullsend-pin-and-bump) below. This `pull_request_target` trigger is the CI-side equivalent of the harness's own @@ -389,7 +392,7 @@ schedule, but both target the supported commit): | Deployment | Pin today | Target | |---|---|---| -| GitHub verify-pr (this repo) | CLI `v0.43.0`, reusable-dispatch `d5f36921ac754705619f38c637ef692873809fbc` | supported commit (after the child-harness credential mounts are adapted — see *Breaking changes* below) | +| GitHub verify-pr (this repo) | CLI and reusable-dispatch both at the supported commit `9f188578f0d8c94169287594b0c79cd4c4eeaa91` (TC-6936; previously CLI `v0.43.0` + reusable-dispatch `d5f36921`) | supported commit — **reached** | | GitLab triage-security (`sdlc-fullsend`) | — (not deployed yet) | supported commit from the first deployment | | Native Fullsend eval CI (`eval-pr-run.yml`) | CLI release `v0.47.1` (`c68903c0373e2216af03f5412642d4aa4019057f`), OpenShell `0.1.2` | stays on a tagged release: the eval CI installs the CLI only from digest-checked release archives, and `9f188578` is untagged. v0.47.1 is the newest release before the supported commit; its built-in Vertex provider/profile, OpenShell pin and CI install scripts are identical to `9f188578`'s (TC-7141) | @@ -408,8 +411,10 @@ that affect this repo: harness validation (`host_files[1].src: host variable GOOGLE_APPLICATION_CREDENTIALS is not set`). This is why reusable-dispatch was pinned off the floating `@v0` to `d5f36921` (the `v0` commit of the last green - run). **The child harness's credential mounts must be adapted to the runner-owned - model before the GitHub pins move.** + run). **Resolved:** the child harness credential mounts follow the runner-owned + model (TC-6933) — at the supported commit `fullsend run` itself exports + `GOOGLE_APPLICATION_CREDENTIALS` / `GCP_OIDC_TOKEN_FILE` — and the GitHub pins + moved together to the supported commit (TC-6936). - **Vertex credential preflight** (#7980, v0.46.0). A harness that mounts `${GOOGLE_APPLICATION_CREDENTIALS}` as its only credential file now fails before the pre_script when the file is missing, instead of failing mid-run — the @@ -438,9 +443,12 @@ that affect this repo: v0.45.0; TC-7141). `harness/verify-pr.yaml` and `harness/triage-security.yaml` now declare the bare provider `vertex-ai` and no `openshell.profiles`, and `providers/vertex-ai.yaml` / `profiles/fullsend-vertex-ai.yaml` are deleted. - The live GitHub deployment keeps working on CLI `v0.43.0` only because - `.fullsend/lock.yaml` still pins an older harness commit; **re-pinning the - verify-pr base past TC-7141 requires the CLI bump in the same step.** + The GitHub deployment stayed on CLI `v0.43.0` only while `.fullsend/lock.yaml` + pinned a pre-TC-7141 harness commit; TC-6936 re-pinned the verify-pr base past + TC-7141 in the same change as the CLI bump. +- **`install_mode` input ignored** (reusable-dispatch, `main`). Installations are + always per-repo; the input is kept only for compatibility, so the dispatch + workflow no longer passes it. The nested-job permission union is unchanged. - **No-op for this repo, but checked:** a failed agent now fails `fullsend run` for a harness without a `validation_loop` (#8305, v0.47.1) and a harness with no `policy` fails before sandbox create (#7849, `main`) — both harnesses declare @@ -504,7 +512,18 @@ untouched — the GitHub and GitLab deployments bump independently. Set both to the same fullsend commit. `fullsend_version` takes the v-prefixed release tag; for an untagged commit use the full SHA (an empty `fullsend_version` falls back to `job.workflow_sha` — the `uses:` SHA — but - keep it explicit so the CLI pin is visible in review). + keep it explicit so the CLI pin is visible in review). The vendor action + resolves a 40-char SHA to its release tag when one exists and otherwise + **builds the CLI from source** (adds a Go build to every dispatch). + Re-check the vendor workflow's `inputs:` / `secrets:` and the nested-job + `permissions:` union against the caller's `with:` / `secrets:` / + `permissions:` — GitHub validates caller permissions statically against + every nested job: + ```bash + gh api "repos/fullsend-ai/fullsend/contents/.github/workflows/reusable-dispatch.yml?ref=" --jq .content | base64 -d > old.yml + gh api "repos/fullsend-ai/fullsend/contents/.github/workflows/reusable-dispatch.yml?ref=" --jq .content | base64 -d > new.yml + diff old.yml new.yml + ``` - **GitLab triage-security** — the fullsend CLI pin in `.gitlab-ci.yml` of the `sdlc-fullsend` repo. - **Harness content** — if the adaptation in step 2 changed a harness or any @@ -516,6 +535,11 @@ untouched — the GitHub and GitLab deployments bump independently. ```bash fullsend lock --fullsend-dir .fullsend # verify-pr, triage-security ``` + Lock with a CLI **at the new supported commit**, not an older local install — + an older CLI may reject harness content written for the newer one. For an + untagged commit, build it from a fullsend checkout + (`git worktree add --detach && cd && go build -o ./cmd/fullsend`). + Run the lock twice; the second run must leave `lock.yaml` unchanged. `fullsend agent update` does not apply here — both agents are local-path agents (see the note in [Releasing an update](#releasing-an-update-this-repo)). Adopter repositories that register the harness **by URL** (such as @@ -523,12 +547,28 @@ untouched — the GitHub and GitLab deployments bump independently. .fullsend` instead — see [Adopting verify-pr](#adopting-verify-pr-external-fullsend-users). Commit the updated `.fullsend/` in the same PR as the pin change. 5. **Verify end to end** before merging: - - **GitHub verify-pr** — open a throwaway qualifying PR and confirm the - dispatch reaches sandbox readiness and posts a report. An OpenShell/runtime - regression surfaces as `Failed to create sandbox` (v0.37.0's bundled - OpenShell never reached readiness: `not ready after 2m0s`); a credential-model - mismatch surfaces as a `host_files` validation error. Only merge once a live - run passes. + - **GitHub verify-pr** — confirm a live dispatch on a qualifying PR reaches + sandbox readiness and posts a report on GitHub and Jira. An + OpenShell/runtime regression surfaces as `Failed to create sandbox` (v0.37.0's + bundled OpenShell never reached readiness: `not ready after 2m0s`); a + credential-model mismatch surfaces as a `host_files` validation error. Only + merge once a live run passes. Because `pull_request_target` always runs the + workflow copy on `main` (see **Fork PRs**), the bump PR itself still + dispatches on the **old** pins. To prove the new pins before merging, push + the bump branch to `RHEcosystemAppEng` (same-repo) and add a **temporary + commit** with a copy of the workflow triggered on `pull_request` + (types `opened`/`synchronize`/`reopened`, `branches: [main]`), with its own + `name:` and `concurrency` group and without the `ok-to-test` / + `remove-ok-to-test` logic. On a same-repo `pull_request` the + dispatch checks out the PR merge ref (`github.sha`), so the new `.fullsend/` + pins run against the bump PR itself once its Jira issue is in Review. Record + the run, then drop the temporary commit (force-push) before merging. The + `main` copy also starts on the old pins, but its agent job is cancelled: + reusable-dispatch's `harness-run` job has its own `concurrency` group + (agent + repo + PR number, `cancel-in-progress: true`) shared by both + copies, so only one verify-pr report is posted. Confirm in the run log that + the surviving `harness-run` is the temporary copy's (`fullsend version` + prints the new commit). - **GitLab triage-security** — run a manual pipeline dispatch on a known Vulnerability issue and confirm it completes and produces its report. - Update the `## Prerequisites` CLI note if the local CLI must track CI. @@ -548,6 +588,11 @@ for the new one. The GitLab deployment may adopt such content as soon as its own CLI pin points at the supported commit; the GitHub `base:` re-pin waits for the GitHub bump. +**Guard rule status: satisfied for `9f188578`** (TC-6936). The GitHub CLI and +reusable-dispatch pins are at the supported commit, so verify-pr may be re-pinned +to sdlc-plugins content adapted for it. The rule applies again from the next +supported-commit change. + The fullsend pins are independent of the harness `base:` re-pin (which tracks sdlc-plugins content) and of the plugin version below.