Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
cd84d88
test(security): require patched Strix and Rust fixture locks
seonghobae Sep 30, 2026
1ca4b94
fix(security): refresh shared PyJWT and PyO3 locks
seonghobae Sep 30, 2026
02c70d5
test(security): reject duplicate vulnerable dependency locks
seonghobae Sep 30, 2026
d1aa365
test(security): normalize requirement extras
seonghobae Sep 30, 2026
5e807bd
fix(security): pin patched urllib3 for pip audit
seonghobae Sep 30, 2026
bb3bcad
fix(security): pin patched urllib3 for Strix
seonghobae Sep 30, 2026
109b542
build(security): regenerate pip audit lock
seonghobae Sep 30, 2026
8dba299
build(security): regenerate Strix lock
seonghobae Sep 30, 2026
165b6fe
test(security): bind patched urllib3 locks
seonghobae Sep 30, 2026
0d5a2c3
docs(security): record urllib3 lock repair
seonghobae Sep 30, 2026
e65f595
docs(doctoring): trace urllib3 CVE repair
seonghobae Sep 30, 2026
dde3ea7
docs(gap): track shared urllib3 closure
seonghobae Sep 30, 2026
9b4258d
fix(security): advance PyJWT beyond parser DoS
seonghobae Sep 30, 2026
e5359ba
fix(security): advance shared PyJWT lock to 2.15.0
seonghobae Sep 30, 2026
516471f
merge: integrate concurrent PyJWT security repair
seonghobae Sep 30, 2026
08d8506
fix(security): patch document reader transitives
seonghobae Sep 30, 2026
29ebc1e
test(security): require Noema transitive source owner
seonghobae Sep 30, 2026
91f20d2
fix(security): own Noema transitive overrides
seonghobae Sep 30, 2026
93433af
merge(security): integrate shared dependency prerequisite
seonghobae Sep 30, 2026
9a4af5e
fix(security): narrow transitive floor and scan nested locks
seonghobae Sep 30, 2026
fe879f7
fix(security): patch shared Strix LiteLLM lock
seonghobae Oct 1, 2026
eb05a35
fix(security): replace suppressed maturin URL opener
seonghobae Oct 1, 2026
94c48f9
docs(security): bind Gap baseline to exact-head evidence
seonghobae Oct 1, 2026
8f7a674
docs(security): record exact-head admission state
seonghobae Oct 1, 2026
e33d97d
merge(security): integrate bounded maturin downloader
seonghobae Oct 1, 2026
eede925
fix(security): replace audited HTTPSConnection downloader
seonghobae Oct 1, 2026
a5ddcfc
docs(security): bind Maturin SAST RCA to exact evidence
seonghobae Oct 1, 2026
f42da78
fix(docs): restore complete gap baseline after binary corruption
seonghobae Oct 1, 2026
c48981d
docs(security): record bounded Maturin SAST closure
seonghobae Oct 1, 2026
21467ef
fix(security): disable ambient release proxies
seonghobae Oct 1, 2026
7900ba4
merge(security): integrate proxy-free downloader with live evidence
seonghobae Oct 1, 2026
4743e7f
fix(ci): restore inherited quality gate coverage
seonghobae Oct 1, 2026
298a226
fix(ci): close HTTP error streams before response cleanup
seonghobae Oct 1, 2026
0059367
test(ci): verify gateway failures through structured CLI events
seonghobae Oct 1, 2026
2510cbb
test(ci): wait for terminal CLI error evidence
seonghobae Oct 1, 2026
b4a24d2
test(security): reproduce prerelease lock parsing gap
seonghobae Oct 2, 2026
e169a9d
fix(security): compare lock versions semantically
seonghobae Oct 2, 2026
49b54b0
docs(security): record prerelease oracle repair
seonghobae Oct 2, 2026
b2f1ab7
docs(security): bind prerelease repair to exact commits
seonghobae Oct 3, 2026
b8b56dc
merge(ci): preserve prerequisite security oracle repair
seonghobae Oct 3, 2026
094ae5f
merge(ci): integrate npm SemVer security floor repair
seonghobae Oct 3, 2026
dcfc473
merge(ci): preserve npm SemVer floor repair
seonghobae Oct 3, 2026
a07ef2b
fix(security): compare npm lock versions as SemVer
seonghobae Oct 4, 2026
b37356d
merge(ci): preserve documented npm SemVer repair
seonghobae Oct 4, 2026
d1e7bc8
ci(gyeot): stage central self-hosted verification
seonghobae Oct 9, 2026
87a371a
fix(ci): repair central sandbox and clock tests
seonghobae Oct 9, 2026
dc59db2
Merge commit 'b37356d5c5180d29638302308a4ff2ea0df613c1' into feat/gye…
seonghobae Oct 9, 2026
29ff898
ci: add reviewed self-hosted procurement reusable workflow
seonghobae Oct 10, 2026
aaccb7a
docs(ci): clarify procurement product caller ownership
seonghobae Oct 12, 2026
79b8061
fix(ci): verify preinstalled procurement toolchain safely
seonghobae Oct 12, 2026
2445909
ci: integrate reviewed procurement reusable workflow (#2620)
seonghobae Oct 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
184 changes: 184 additions & 0 deletions .github/workflows/gyeot-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,184 @@
name: Gyeot CI

on:
workflow_call:

permissions:
contents: read

# Two-stage publication: publish/review the helpers first, then replace this
# sentinel with their immutable central commit. Never infer it from the caller.
env:
GYEOT_HELPER_COMMIT: UNPUBLISHED_GYEOT_HELPER_COMMIT

# Concurrency belongs only to the product caller.
jobs:
verify:
runs-on:
group: CWL Gyeot CI
labels: [self-hosted, Linux, X64, gyeot-ci]
timeout-minutes: 30
steps:
- name: Admit trusted source
id: source_admission
shell: bash
env:
EVENT_NAME: ${{ github.event_name }}
SOURCE_REPOSITORY: ${{ github.event.pull_request.head.repo.full_name }}
TARGET_REPOSITORY: ${{ github.repository }}
run: |
set -euo pipefail
if [[ "$TARGET_REPOSITORY" != "ContextualWisdomLab/gyeot" ]]; then
printf '%s\n' 'Unsupported caller repository; validation was not executed.' >&2
exit 1
fi
case "$EVENT_NAME" in
pull_request)
if [[ "$SOURCE_REPOSITORY" != "ContextualWisdomLab/gyeot" ]]; then
printf '%s\n' 'Unsupported fork source; validation was not executed.' >&2
exit 1
fi
;;
push|workflow_dispatch) ;;
*) printf '%s\n' 'Unsupported workflow event.' >&2; exit 1 ;;
esac
- name: Checkout admitted product source
id: source_checkout
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
repository: ContextualWisdomLab/gyeot
ref: ${{ github.sha }}
path: source
persist-credentials: false
- name: Require published immutable helper snapshot
id: helper_pin
shell: bash
run: |
set -euo pipefail
if ! [[ "$GYEOT_HELPER_COMMIT" =~ ^[0-9a-f]{40}$ ]]; then
printf '%s\n' 'Central Gyeot helpers are not published/pinned; CI is unavailable.' >&2
exit 1
fi
- name: Checkout immutable central helpers
id: central_checkout
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
repository: ContextualWisdomLab/.github
ref: ${{ env.GYEOT_HELPER_COMMIT }}
path: central
persist-credentials: false
sparse-checkout: scripts/ci/
- name: Verify fixed helper checkout identity
shell: bash
run: |
set -euo pipefail
test "$(git -C central rev-parse HEAD)" = "$GYEOT_HELPER_COMMIT"
origin="$(git -C central remote get-url origin)"
case "$origin" in
https://github.com/ContextualWisdomLab/.github|https://github.com/ContextualWisdomLab/.github.git) ;;
*) printf '%s\n' 'Foreign helper repository.' >&2; exit 1 ;;
esac
git -C central diff --exit-code HEAD -- scripts/ci/
for helper in gyeot_verify_app.sh gyeot_verify_server.sh gyeot_verify_export.sh gyeot_check_export.cjs; do
test -f "central/scripts/ci/$helper"
test ! -L "central/scripts/ci/$helper"
done
- name: Setup Node 24
uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
with:
node-version: '24'
- name: Verify app
id: app_verification
shell: bash
env:
GYEOT_SOURCE_ROOT: ${{ github.workspace }}/source
RUNNER_TEMP: ${{ runner.temp }}
run: bash central/scripts/ci/gyeot_verify_app.sh "$GYEOT_SOURCE_ROOT"
- name: Upload current-source coverage
if: always() && steps.source_admission.outcome == 'success' && steps.source_checkout.outcome == 'success' && steps.central_checkout.outcome == 'success' && steps.app_verification.outputs.coverage_ready == 'true'
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: coverage-report
path: source/coverage/
if-no-files-found: error
server-verify:
runs-on:
group: CWL Gyeot CI
labels: [self-hosted, Linux, X64, gyeot-ci]
timeout-minutes: 30
steps:
- name: Admit trusted source
id: source_admission
shell: bash
env:
EVENT_NAME: ${{ github.event_name }}
SOURCE_REPOSITORY: ${{ github.event.pull_request.head.repo.full_name }}
TARGET_REPOSITORY: ${{ github.repository }}
run: |
set -euo pipefail
if [[ "$TARGET_REPOSITORY" != "ContextualWisdomLab/gyeot" ]]; then
printf '%s\n' 'Unsupported caller repository; validation was not executed.' >&2
exit 1
fi
case "$EVENT_NAME" in
pull_request)
if [[ "$SOURCE_REPOSITORY" != "ContextualWisdomLab/gyeot" ]]; then
printf '%s\n' 'Unsupported fork source; validation was not executed.' >&2
exit 1
fi
;;
push|workflow_dispatch) ;;
*) printf '%s\n' 'Unsupported workflow event.' >&2; exit 1 ;;
esac
- name: Checkout admitted product source
id: source_checkout
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
repository: ContextualWisdomLab/gyeot
ref: ${{ github.sha }}
path: source
persist-credentials: false
- name: Require published immutable helper snapshot
id: helper_pin
shell: bash
run: |
set -euo pipefail
if ! [[ "$GYEOT_HELPER_COMMIT" =~ ^[0-9a-f]{40}$ ]]; then
printf '%s\n' 'Central Gyeot helpers are not published/pinned; CI is unavailable.' >&2
exit 1
fi
- name: Checkout immutable central helpers
id: central_checkout
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
repository: ContextualWisdomLab/.github
ref: ${{ env.GYEOT_HELPER_COMMIT }}
path: central
persist-credentials: false
sparse-checkout: scripts/ci/
- name: Verify fixed helper checkout identity
shell: bash
run: |
set -euo pipefail
test "$(git -C central rev-parse HEAD)" = "$GYEOT_HELPER_COMMIT"
origin="$(git -C central remote get-url origin)"
case "$origin" in
https://github.com/ContextualWisdomLab/.github|https://github.com/ContextualWisdomLab/.github.git) ;;
*) printf '%s\n' 'Foreign helper repository.' >&2; exit 1 ;;
esac
git -C central diff --exit-code HEAD -- scripts/ci/
for helper in gyeot_verify_app.sh gyeot_verify_server.sh gyeot_verify_export.sh gyeot_check_export.cjs; do
test -f "central/scripts/ci/$helper"
test ! -L "central/scripts/ci/$helper"
done
- name: Setup Node 24
uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
with:
node-version: '24'
- name: Verify server
id: server_verification
shell: bash
env:
GYEOT_SOURCE_ROOT: ${{ github.workspace }}/source
RUNNER_TEMP: ${{ runner.temp }}
run: bash central/scripts/ci/gyeot_verify_server.sh "$GYEOT_SOURCE_ROOT"
Loading
Loading