Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
764 commits
Select commit Hold shift + click to select a range
ec525f4
test(registry): read the bench cap from the executor, and name the gap
Aug 8, 2026
9f7579c
Merge pull request #1110 from AMD-AGI/feature/chenyi/deepseek-provide…
xiaofei-zheng Aug 8, 2026
8dded61
fix(cli): refuse a custom launch on a backend that cannot run the script
xiaofei-zheng Aug 8, 2026
c8fc19d
fix(phases): evidence a budget exit with the time that decided it
xiaofei-zheng Aug 8, 2026
663b59a
fix(kb): report the withdrawn KB variable instead of refusing to start
Aug 8, 2026
9c74763
revert(registry): leave integrate_patch's lease alone
Aug 8, 2026
2d0699c
Merge pull request #1080 from AMD-AGI/feature/xiaofei/worldplay-e2e-b…
xiaofei-zheng Aug 8, 2026
739d107
fix(kernel): run the forge fellow on codex when the deployment is Ope…
xiaofei-zheng Aug 8, 2026
1a370f2
fix(kb): stop the migration littering a directory the KB serves as co…
Aug 8, 2026
5a52a94
Merge origin/main into the framework-rename audit fixes
Aug 8, 2026
fd1c445
refactor(llm): own OpenAI client construction in llm_config
xiaofei-zheng Aug 8, 2026
28a05a0
refactor(llm): route three call sites through the llm_config client c…
xiaofei-zheng Aug 8, 2026
d17b542
refactor(llm): route the Responses API through llm_config too
xiaofei-zheng Aug 8, 2026
c52488c
fix(install): keep the kernel_agents log prefix the idempotency tests…
xiaofei-zheng Aug 8, 2026
040099a
refactor(kernel): run TraceLens analysis on the Codex Agent SDK
xiaofei-zheng Aug 8, 2026
a442524
Fix warm replay JSON argument quoting
meinali-566 Aug 8, 2026
ad28833
Merge pull request #1122 from AMD-AGI/feature/leixin/framework-rename…
zengleixin-amd Aug 8, 2026
cf2fcd1
fix(preflight): provision the codex agent runtime alongside the claud…
xiaofei-zheng Aug 8, 2026
edfac2b
refactor(llm): route the Anthropic transport through one shared contract
xiaofei-zheng Aug 8, 2026
f909dfa
docs(common): point the import constraint at llm_config, not the dele…
xiaofei-zheng Aug 8, 2026
c438868
fix(knowledge): harden warm replay argument transport
meinali-566 Aug 8, 2026
d65b28b
Merge remote-tracking branch 'origin/main' into feature/xiaofei/forge…
xiaofei-zheng Aug 8, 2026
058c6d8
Merge branch 'feature/xiaofei/tracelens-codex-sdk' into feature/xiaof…
xiaofei-zheng Aug 8, 2026
b70d546
feat(llm): reach the OpenAI protocol from an Anthropic-only deployment
xiaofei-zheng Aug 8, 2026
968fb59
Merge branch 'feature/xiaofei/llm-single-entry' into feature/xiaofei/…
xiaofei-zheng Aug 8, 2026
e51dd45
Merge branch 'feature/xiaofei/anthropic-transport' into feature/xiaof…
xiaofei-zheng Aug 8, 2026
fd985c1
Merge branch 'feature/xiaofei/llm-gateway-entrypoint' into feature/xi…
xiaofei-zheng Aug 8, 2026
d0b42d5
fix(orchestrator): close argv validation gaps
meinali-566 Aug 8, 2026
73e7329
test(llm): empty the architecture-guard ratchet now every call site i…
xiaofei-zheng Aug 8, 2026
efe9aa3
refactor(llm): keep the breakdown reporter on a non-streaming request
xiaofei-zheng Aug 8, 2026
e4852a9
fix(kernel): stop sentinel strings from short-circuiting source resol…
zhanglei-amd Aug 8, 2026
a950ff1
fix(kernel): resolve a traced Triton kernel by its curated kind
ZhengGong-amd Aug 8, 2026
cfa8edb
refactor(kernel): drop the superseded forge kernel pack system
ZhengGong-amd Aug 8, 2026
b551eca
Merge remote-tracking branch 'origin/main' into feature/xiaofei/forge…
xiaofei-zheng Aug 8, 2026
f04bc52
refactor(kernel): route the LLM source fallback through the client co…
xiaofei-zheng Aug 8, 2026
5834c4e
refactor(kernel): let the producer author every rewrite driver
ZhengGong-amd Aug 8, 2026
6c038a1
fix(llm): clear the two CodeQL findings in this branch's new code
xiaofei-zheng Aug 8, 2026
228d0a2
Update JSON dedupe test expectations
meinali-566 Aug 8, 2026
934a101
Merge pull request #1127 from AMD-AGI/fix/warm-replay-json-arg-quoting
meinali-566 Aug 8, 2026
6f4f369
fix(llm): decide the credential shape and its endpoint in one place
xiaofei-zheng Aug 8, 2026
484cc2d
feat(kb): migrate remote recipes to KB Store
meinali-566 Aug 8, 2026
df4db9e
fix(kb): unify facade and restore CI coverage
meinali-566 Aug 8, 2026
aff464d
fix(kb): make degraded mode a complete opt-out
meinali-566 Aug 8, 2026
173df4e
fix(kb): audit remote publish outcomes
meinali-566 Aug 8, 2026
609d059
fix(test): avoid side effects in assertions
meinali-566 Aug 8, 2026
191c04f
Merge origin/main into feat/zgong/flydsl-integrate
ZhengGong-amd Aug 8, 2026
083e1d8
fix(codex): let a Codex session run where bubblewrap is absent
xiaofei-zheng Aug 8, 2026
97852fc
fix(specialists): spawn the agent CLI the deployment can authenticate
xiaofei-zheng Aug 8, 2026
cbee297
fix(kernel): close the apply-back gate hole and stop burning budget s…
ZhengGong-amd Aug 8, 2026
9c4556d
feat(kb): replay Explore config from remote champion
meinali-566 Aug 8, 2026
b578e3e
fix(codex): make agent containment explicit and secret-safe
xiaofei-zheng Aug 8, 2026
8ee8d74
fix(ray): isolate specialist environments and stdin
xiaofei-zheng Aug 8, 2026
b889652
fix(kernel): infer source-review provider from credential shape
xiaofei-zheng Aug 8, 2026
7607c88
fix(trace): preserve actionable Codex failure reasons
xiaofei-zheng Aug 8, 2026
87659c8
fix(specialists): complete secure Codex runtime parity
xiaofei-zheng Aug 8, 2026
fdcf246
fix(fusion): route discovery and authoring by provider shape
xiaofei-zheng Aug 8, 2026
d3bc5df
test(kernel): compare dispatchability wording case-insensitively
xiaofei-zheng Aug 8, 2026
676fb9c
fix(codex): absorb late CODEX_HOME writer shutdown
xiaofei-zheng Aug 8, 2026
3d8ab6d
fix(review): clear static-analysis findings in Codex tests
xiaofei-zheng Aug 8, 2026
fc5c0fa
fix(kernel): take the source language from the handshake, and drop de…
ZhengGong-amd Aug 8, 2026
4d8ea59
fix(kb): consume direct best records
meinali-566 Aug 8, 2026
1a7d4a6
test(kb): cover direct recommendation guards
meinali-566 Aug 8, 2026
8c4d7ca
Merge pull request #1129 from AMD-AGI/feature/xiaofei/forge-codex-pro…
haishuok0525 Aug 8, 2026
624fbc6
refactor(kernel): trim the review fixes to their logic
ZhengGong-amd Aug 8, 2026
60f73bf
Merge origin/main into feat/zgong/flydsl-integrate
ZhengGong-amd Aug 8, 2026
e5c9f55
Merge pull request #1128 from AMD-AGI/feat/zgong/flydsl-integrate
xiaofei-zheng Aug 9, 2026
8b3e0b1
fix(kb): resync vendored KB Store SDK with upstream
Aug 9, 2026
9534560
feat(kb): let an agent declare its own column instead of being guessed
Aug 9, 2026
859150b
fix(kb): keep forwarding GBrain to the Forge paths still on it
Aug 9, 2026
5b8df17
feat(kb): give the kernel agent a column surface it can wire directly
Aug 9, 2026
eefaf87
fix(kb): sanitize shared knowledge before publish
meinali-566 Aug 10, 2026
322b09b
docs: point recommended images to rocm/hyperloom and bump versions
xiaofei-zheng Aug 10, 2026
2f3f097
fix: correct vLLM 0.24.0 rocm variant and doc/image inconsistencies
xiaofei-zheng Aug 10, 2026
db0a424
docs: drop duplicated click pin rationale in remote demo
xiaofei-zheng Aug 10, 2026
28c8f3d
Merge pull request #1133 from AMD-AGI/feature/yunkai/update-image-refs
xiaofei-zheng Aug 10, 2026
1e7143c
Merge remote-tracking branch 'origin/main' into feature/critic-claude…
lishuoshuo-amd Aug 10, 2026
7e72e6a
refactor(anthropic): drive single-shot inference through the Claude CLI
lishuoshuo-amd Aug 10, 2026
5c7ba8d
test(credentials): drop the retired DEEPSEEK_API_KEY signal-key asser…
lishuoshuo-amd Aug 10, 2026
c45ec56
fix(preflight): restore the endpoint a subscription token implies
lishuoshuo-amd Aug 10, 2026
7e1b9c4
fix(preflight): spell out the oauth variable name in operator messages
lishuoshuo-amd Aug 10, 2026
af6ab05
fix(kernel): trust the editable aiter jit/build dir on revert
zhanglei-amd Aug 10, 2026
8d63084
fix(kb): fail closed on champion and artifact drift
meinali-566 Aug 10, 2026
93259b5
fix(kb): keep KernelForge children on KB Store
meinali-566 Aug 10, 2026
b487fa7
fix(kernel): stop claiming an analytic diffusion ceiling for custom w…
lishuoshuo-amd Aug 10, 2026
1a72580
feat(state): record structured failure evidence for explore variants
Aug 10, 2026
f3abd38
refactor(framework): retire the hunyuan_image3 framework entry
lishuoshuo-amd Aug 10, 2026
09b851b
feat(loop): surface per-variant failure detail in inbox and variant l…
Aug 10, 2026
f8ca520
fix(kb): preserve staged refs without misreading text
meinali-566 Aug 10, 2026
451408d
feat(roles): add failure and artifact context tools
Aug 10, 2026
eba5023
feat(phases): allow specialist dispatch in framework and kernel phases
Aug 10, 2026
925bd16
feat(llm): own the Anthropic transport choice in llm_config
lishuoshuo-amd Aug 10, 2026
7067ae0
refactor(llm): route the single-turn Anthropic call sites through llm…
lishuoshuo-amd Aug 10, 2026
f5f6108
feat(phases): scale cycle-reloop budget floor to session length
Aug 10, 2026
17ff2fa
Give the Codex Coordinator the transport and vocabulary its role alre…
xiaofei-zheng Aug 10, 2026
09ca522
fix(kernel): decline a video patch instead of costing it as one frame
lishuoshuo-amd Aug 10, 2026
5e283b1
docs: cover enterprise LLM gateway setup; fix .env dropping gateway a…
xiaofei-zheng Aug 10, 2026
b7f85e3
refactor: tighten failure evidence plumbing and fix artifact tail reads
Aug 10, 2026
e27e895
fix(kernel): read a 2D patch on both axes, keep the DiT-only memory b…
lishuoshuo-amd Aug 10, 2026
d7bb724
fix(kb): ignore malformed free-text references
meinali-566 Aug 10, 2026
884532f
Merge pull request #1130 from AMD-AGI/feat/remote-kb-store-v2
meinali-566 Aug 10, 2026
6dd865d
docs(kernel): document the token sentinel; pin UTF-8 on the atomic JS…
lishuoshuo-amd Aug 10, 2026
7e67c49
Merge pull request #1136 from AMD-AGI/fix/custom-no-diffusion-ceiling
xiaofei-zheng Aug 10, 2026
9816800
fix(kernel): flag impossible Kineto durations, fix the denoise-step d…
sushildubey171 Aug 10, 2026
c8b41f6
fix(trace): keep the critic's prompt-cache counters in their own columns
lishuoshuo-amd Aug 10, 2026
e996a77
docs(env): offer the subscription token in the credential template
lishuoshuo-amd Aug 10, 2026
58c00cf
Merge remote-tracking branch 'origin/main' into feature/critic-claude…
lishuoshuo-amd Aug 10, 2026
168ef51
fix(llm): carry the caller's environment into the Claude CLI transport
lishuoshuo-amd Aug 11, 2026
28d9d8c
fix(preflight): catch a subscription token aimed at a third-party end…
lishuoshuo-amd Aug 11, 2026
224457a
fix(install): stop a stale DEEPSEEK_* export from overriding a subscr…
lishuoshuo-amd Aug 11, 2026
4471424
refactor(cli): derive Anthropic credential gates from the registry
lishuoshuo-amd Aug 11, 2026
fc061b2
fix(cli): let --critic-protocol=openai ask the resolver that builds t…
lishuoshuo-amd Aug 11, 2026
30c6e36
docs(critic): describe the transport the review call actually takes
lishuoshuo-amd Aug 11, 2026
2f6cca0
revert(env): drop ANTHROPIC_AUTH_TOKEN from the dotenv read allowlist
lishuoshuo-amd Aug 11, 2026
a1a15f6
fix(rca): restore the temperature the Anthropic engine used to send
lishuoshuo-amd Aug 11, 2026
84ba8a2
fix(cli): stop preflight publishing an endpoint a subscription token …
lishuoshuo-amd Aug 11, 2026
907d0d5
test(preflight): pin the config.json guard that keeps a token off disk
lishuoshuo-amd Aug 11, 2026
67b5d34
fix(kernel): export the subscription token into kernel-agent.env.sh
lishuoshuo-amd Aug 11, 2026
4526279
Merge pull request #1120 from AMD-AGI/feature/critic-claude-cli-oauth
xiaofei-zheng Aug 11, 2026
9e9ef49
[FIX] Stop four fail-soft paths from silently dropping validated conf…
ZhengGong-amd Aug 11, 2026
1752612
feat(kb): give the kernel-agent KB its own independent record
xiaofei-zheng Aug 11, 2026
bd5dc95
feat(kb): read the independent kernel-agent KB at PRELUDE and validat…
xiaofei-zheng Aug 11, 2026
37ba98c
feat(kb): stage kernel-agent columns per round from the live kernel p…
xiaofei-zheng Aug 11, 2026
734cfbe
fix(kernel): invert the per-step divisor preference in the helper, no…
sushildubey171 Aug 11, 2026
e7ba6a6
Merge remote-tracking branch 'origin/main' into feature/yunkai/kernel…
xiaofei-zheng Aug 11, 2026
55d1ee3
feat(kb): apply a champion GEMM at PRELUDE instead of deferring it
xiaofei-zheng Aug 11, 2026
6aa3a9c
fix(kb): carry a champion's env switches into the PRELUDE re-apply
xiaofei-zheng Aug 11, 2026
abef6f9
fix(baseline): reset the prefix cache before the measured round
ZhengGong-amd Aug 11, 2026
653b9a0
feat(kernel): route FLUX.2 and count cross-attention Q/O projections
sushildubey171 Aug 10, 2026
6c52bcd
fix(kb): grade the warm kernel champion set with one re-baseline
xiaofei-zheng Aug 11, 2026
44b9650
fix(kernel): hand KernelForge the card a run measured on
Aug 11, 2026
f0975de
fix(kb): close the review gaps in the kernel-agent KB round trip
xiaofei-zheng Aug 11, 2026
7087d18
fix(kernel): align the divisor docs, cover both call sites, match the…
sushildubey171 Aug 11, 2026
505b2c2
fix(kernel): name the card on the command line and say when it is mis…
Aug 11, 2026
cc46375
Merge pull request #1147 from AMD-AGI/feature/yunkai/kernel-agent-kb
xiaofei-zheng Aug 11, 2026
c0c908d
Merge pull request #1115 from sushildubey171/feat/diffusion-flops-wan…
xiaofei-zheng Aug 11, 2026
f4a5430
fix(eval): bound each accuracy-gate request, and refuse to run one wh…
zoroyihan7 Aug 11, 2026
1f1b71c
fix(kernel): report the unnamed card where it is decided
Aug 11, 2026
6e0a0dd
fix(inference-optimizer): preserve baseline accuracy in explore
lishuoshuo-amd Aug 11, 2026
28df1bd
Merge pull request #1151 from AMD-AGI/fix/explore-accuracy-gate
xiaofei-zheng Aug 11, 2026
4630610
refactor(roles): drop read_artifact in favour of the built-in Read tool
ZhengGong-amd Aug 12, 2026
b735ecc
Merge origin/main into feat/zgong/explore-opt-14
ZhengGong-amd Aug 12, 2026
cd04fc0
Merge branch 'main' into fix/1144-eval-probe-anchor
zoroyihan7 Aug 12, 2026
150d147
fix(kernel): keep regenerated bytecode out of the published patch
Aug 12, 2026
862fc0c
fix(eval): send the terminators the model declares, which lm-eval str…
zoroyihan7 Aug 12, 2026
7ad18e1
fix(kernel): run GEAK with the optimizer Python
Aug 12, 2026
42ec637
Merge pull request #1159 from AMD-AGI/fix/geak-runner-python
xiaofei-zheng Aug 12, 2026
ca24f01
fix(xdit): preserve session framework for roofline
luochen-amd Aug 12, 2026
e9ba9f7
fix(xdit): scope raw trace override
luochen-amd Aug 12, 2026
9480f66
chore(release): cut 1.0.0b1 and install it from PyPI (#1148)
lishuoshuo-amd Aug 12, 2026
bbc8e10
fix(xdit): surface framework override context
luochen-amd Aug 12, 2026
dbc0e1a
Merge pull request #1150 from AMD-AGI/fix/1144-eval-probe-anchor
xiaofei-zheng Aug 12, 2026
3cd88af
Merge pull request #1160 from AMD-AGI/fix/xdit-raw-roofline-traces
xiaofei-zheng Aug 12, 2026
bb328ad
Merge pull request #1116 from sushildubey171/fix/bypass-trace-health
xiaofei-zheng Aug 12, 2026
2c54253
fix(explore): unblock P0/P1 review items
ZhengGong-amd Aug 12, 2026
a04bc97
fix(kernel): derive the aiter jit/build pin from one editable root
zhanglei-amd Aug 12, 2026
064d0ab
fix(eval): bound the candidate arm on the same terms as the baseline,…
zoroyihan7 Aug 12, 2026
f8cbff5
refactor(kernel): trim the aiter jit/build trust check to its logic
zhanglei-amd Aug 12, 2026
20f4b12
fix(kernel): say the card is unknown instead of leaving it out
Aug 12, 2026
4409b20
Merge pull request #1158 from AMD-AGI/feature/leixin/forge-kb-adapt
xiaofei-zheng Aug 12, 2026
12fc3a0
Merge pull request #1138 from AMD-AGI/feat/zgong/explore-opt-14
xiaofei-zheng Aug 12, 2026
4a8ab13
Merge pull request #1135 from AMD-AGI/fix/zhanglei/aiter-editable-jit…
xiaofei-zheng Aug 12, 2026
90ac2ef
fix(gemm): key tuned-GEMM CSVs on the M values aiter actually looks up
chennyiiis Aug 12, 2026
628cf66
fix(gemm): cover unsampled M with aiter's power-of-two lookup ladder
chennyiiis Aug 12, 2026
0d8f942
fix(gemm): size the shape ladder to the tuner's remaining window
chennyiiis Aug 12, 2026
0e6ff7e
fix(gemm): name the table the runtime consulted when an artifact is i…
chennyiiis Aug 12, 2026
7783658
fix(eval): give the RUN_EVAL reader a leaf home and declare the senti…
zoroyihan7 Aug 12, 2026
0e8b2e4
fix(gemm): route aiter-served BF16 vLLM runs to the AITER dense tuner
chennyiiis Aug 13, 2026
ea019b1
fix(gemm): route aiter-served MoE vLLM runs to fmoe_ck
chennyiiis Aug 13, 2026
d275775
feat(kernel): resolve kernel sources from installed frameworks (retir…
Ahmedhasssan-aig Aug 13, 2026
07d7284
Merge pull request #1162 from AMD-AGI/fix/1144-followup-bounds-anchor
chaojhou Aug 13, 2026
15246d2
fix(ci): stop an ordinary PR comment from cancelling the e2e run
zoroyihan7 Aug 13, 2026
b7cfc79
fix(gemm): do not route MoE the CK tuner cannot tune
chennyiiis Aug 13, 2026
536c3a7
fix(kb): accumulate the kernel-agent KB per optimization, not per doc…
xiaofei-zheng Aug 13, 2026
97cf532
fix(kernel): stop discarding a salvaged best over coverage nobody rep…
xiaofei-zheng Aug 13, 2026
2339d14
Merge pull request #1179 from AMD-AGI/bugfix/yunkai/forge-checkpoint-…
xiaofei-zheng Aug 13, 2026
a650857
Merge pull request #1173 from AMD-AGI/fix/ci-e2e-comment-cancels-run
xiaofei-zheng Aug 13, 2026
a708dec
[CLEAN] Retire the unreachable kernel-harness stack; fix benchmark wo…
ZhengGong-amd Aug 13, 2026
6a7e5f9
Merge pull request #1180 from AMD-AGI/feature/chenyi/gemm-tune-shape-…
xiaofei-zheng Aug 13, 2026
25f30ca
[CLEAN] Follow-ups to #1163: finish the workspace fix, close the cata…
ZhengGong-amd Aug 13, 2026
db8ba40
fix(kernel): stop the install-time credential snapshot from overridin…
xiaofei-zheng Aug 13, 2026
cd912db
fix(kb): carry inherited kernel records with their own files and refs
xiaofei-zheng Aug 13, 2026
a87db87
fix(kernel): write Claude credentials where their readers look
lishuoshuo-amd Aug 13, 2026
ddcfce4
fix(kernel): stop pointing the GEAK prompt at a root-only skills path
lishuoshuo-amd Aug 13, 2026
1a6321e
fix(docs): stop .env from inverting env precedence in the launch recipes
lishuoshuo-amd Aug 13, 2026
e5ee059
fix(kernel): make model CI outputs actionable
fengshaoyi-amd Aug 13, 2026
2397f38
Merge pull request #1184 from AMD-AGI/bugfix/yunkai/kernel-agent-env-…
xiaofei-zheng Aug 13, 2026
8dcc046
fix(kernel): stop aiter lock-sweep resolution from raising on an unre…
lishuoshuo-amd Aug 13, 2026
6b2fd49
fix(docs): protect credentials from .env too, and say so when restore…
lishuoshuo-amd Aug 13, 2026
94f6f4a
fix(kernel): stop sending forge-loop the options it never declared (#…
jiaqiang-dot-liu Aug 13, 2026
75c4464
fix(kernel): keep a foreign-owned checkout operable for git
lishuoshuo-amd Aug 13, 2026
ec9d46e
fix(kb): refuse to publish the kernel record over an unreadable incum…
xiaofei-zheng Aug 14, 2026
84b28ea
fix(gemm): preserve model identity after path resolution
fengshaoyi-amd Aug 14, 2026
56064e2
fix(kb): take the champion over from an equally scored foreign session
xiaofei-zheng Aug 14, 2026
321f6f3
feat(kernel): add collective forge optimization lane (#1132)
zhanglei-amd Aug 14, 2026
d7fccf8
Merge pull request #1174 from AMD-AGI/bugfix/yunkai/kernel-kb-per-col…
xiaofei-zheng Aug 14, 2026
afea2e3
test(gemm): make model path contract explicit
fengshaoyi-amd Aug 14, 2026
5e08d9d
fix(kernel): report the aiter build trees the sweep could not inspect
lishuoshuo-amd Aug 14, 2026
a00a42d
fix(kernel): extend the safe.directory exception past the _git.py cal…
lishuoshuo-amd Aug 14, 2026
70c8bdf
fix(kernel): cover the git callers whose refusal is silent or misattr…
lishuoshuo-amd Aug 14, 2026
ac7cb87
fix(kernel): stop a foreign-owned checkout from reading as "not a git…
lishuoshuo-amd Aug 14, 2026
d865700
fix(kernel): give npm a writable prefix instead of aborting off root
lishuoshuo-amd Aug 14, 2026
d4b73b5
fix(paths): let the workspace default follow the host it lands on
lishuoshuo-amd Aug 14, 2026
afbdba6
fix(docs): let the shell report a failed dotenv restore, and stop ove…
lishuoshuo-amd Aug 14, 2026
0ceec7e
fix(kernel): keep the Forge backend operable on a foreign-owned checkout
lishuoshuo-amd Aug 14, 2026
4785132
Merge pull request #1186 from AMD-AGI/feature/topci-model-gaps
xiaofei-zheng Aug 14, 2026
cc6df20
fix(kernel): route the remaining private git wrappers through safe.di…
lishuoshuo-amd Aug 14, 2026
e8a9304
test(kernel): cover the isolation git wrapper the tool-caller suite i…
lishuoshuo-amd Aug 14, 2026
ece9701
Merge remote-tracking branch 'origin/main' into fix/1142-home-derived…
lishuoshuo-amd Aug 14, 2026
b12dcf4
fix(kernel): route the git sites main added while this branch was open
lishuoshuo-amd Aug 14, 2026
584200a
Unblock bare-metal setup on hosts that ship a preinstalled engine (#1…
chennyiiis Aug 14, 2026
72ce618
fix(paths): keep a creatable /workspace, and test the sweep the way i…
lishuoshuo-amd Aug 14, 2026
584ed0d
fix(xdit): analyse the raw capture, not a split fragment (#1189)
luochen-amd Aug 14, 2026
82b1ce4
Merge pull request #1185 from AMD-AGI/fix/1142-home-derived-paths
xiaofei-zheng Aug 14, 2026
063a49c
feat(kb): replay agent overlays as one validated warm set
meinali-566 Aug 13, 2026
e776e21
refactor(kb): unify agent knowledge in one Recipe
meinali-566 Aug 13, 2026
64ef78d
feat(kb): seven-tuple degradation matching for warm replay
meinali-566 Aug 13, 2026
3b46fb3
refactor(kb): fix config-only KEEP staging and tidy recipe code
meinali-566 Aug 13, 2026
f764252
refactor(kb): drop the Config/Env-only warm-replay fallback
meinali-566 Aug 13, 2026
d3cf7e4
refactor(kb): remove the recipe prs_tested mechanism
meinali-566 Aug 13, 2026
1008954
fix(kb): fail closed on incomplete replay state
meinali-566 Aug 13, 2026
ac73e3a
fix(kb): safely replay kernel patches
meinali-566 Aug 14, 2026
bb8fc4e
refactor(kb): promote the validated Recipe checkout once
meinali-566 Aug 14, 2026
6c2abf1
fix(kb): preserve explicit warm-replay stop reasons
meinali-566 Aug 14, 2026
587f74e
refactor(kb): unify warm replay rollback recovery
meinali-566 Aug 14, 2026
a6a33ba
refactor(kb): publish one config and one kernel projection
meinali-566 Aug 14, 2026
897178b
refactor(kb): preserve the unified Recipe after main rebase
meinali-566 Aug 14, 2026
fb2fec7
fix(ci): document warm replay stop reasons
meinali-566 Aug 14, 2026
5acfefe
fix(kb): harden warm replay recovery and knowledge reuse
meinali-566 Aug 14, 2026
bbcf4b8
fix(kb): isolate precision donors and dead-letter missing patches
meinali-566 Aug 14, 2026
76fcf20
fix(kb): close warm replay persistence gaps
meinali-566 Aug 14, 2026
132ecc1
fix(kb): validate rollback manifests and stabilize profile CI
meinali-566 Aug 14, 2026
77686e6
fix(preflight): gate optimize on an importable ROCm serving framework…
lishuoshuo-amd Aug 14, 2026
d496bf9
fix(ci): guard warm replay git calls for foreign checkouts
meinali-566 Aug 14, 2026
6bfc228
Merge pull request #1172 from AMD-AGI/feat/explore-framework-kb-sdk
xiaofei-zheng Aug 14, 2026
9a488f7
fix(kernel): improve source resolver for Tensile, MIOpen, CK, and ATe…
kyle-hoffmeyer Aug 11, 2026
1c54cb7
parse vllm dir
kyle-hoffmeyer Aug 11, 2026
d860f3a
use tier 2 ranking for tier 3 (aside from shortest name matching)
kyle-hoffmeyer Aug 11, 2026
740d1fb
revert vllm scan roots and tier 3 ranking (not needed for xDiT)
kyle-hoffmeyer Aug 14, 2026
a36e5f9
revert CK guard tightening (redundant with itanium-demangler)
kyle-hoffmeyer Aug 14, 2026
f400f9f
revert CK scan path changes (no practical effect)
kyle-hoffmeyer Aug 14, 2026
dcf9575
dont go to tier2 and tier3 when triton kernel cant be patched
kyle-hoffmeyer Aug 17, 2026
6a64f71
remove cyclical import. fix base_from_demangled instead
kyle-hoffmeyer Aug 17, 2026
6fa649c
add dep. log warning if not installed
kyle-hoffmeyer Aug 17, 2026
c163c9c
match main
kyle-hoffmeyer Aug 17, 2026
fa3ff11
pass op name to non_patchable_kind to identify miopen kernels as not …
kyle-hoffmeyer Aug 17, 2026
09f67b8
add reason for failure
kyle-hoffmeyer Aug 18, 2026
8a1a755
restore comments
kyle-hoffmeyer Aug 18, 2026
d2857d4
restore comments
kyle-hoffmeyer Aug 18, 2026
e9d4477
use c++filt as fallback
kyle-hoffmeyer Aug 19, 2026
8046574
updated tests
kyle-hoffmeyer Aug 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
240 changes: 184 additions & 56 deletions .env.template

Large diffs are not rendered by default.

27 changes: 23 additions & 4 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,26 @@
/*.yml @AMD-AGI/SaFE
/*.toml @AMD-AGI/SaFE

# v0.6 product code (Coordinator + agents)
/inference_optimizer/ @AMD-AGI/SaFE
/critic-agent/ @AMD-AGI/SaFE
/kernel-agent/ @AMD-AGI/SaFE
# Hyperloom Core
/src/hyperloom/inference_optimizer/ @AMD-AGI/SaFE
/src/hyperloom/agents/critic/ @AMD-AGI/SaFE
/src/hyperloom/agents/kernel/ @AMD-AGI/SaFE

# TraceLens Agent (agent-driven analysis route + agent-output sanitizer)
/src/hyperloom/agents/kernel/tools/tracelens_analysis.py @tsrikris @devalshahamd @AMD-AGI/SaFE
/src/hyperloom/agents/kernel/tools/tracelens_skill_runner.py @tsrikris @devalshahamd @AMD-AGI/SaFE
/src/hyperloom/agents/kernel/tools/_analysis_md.py @tsrikris @devalshahamd @AMD-AGI/SaFE
/src/hyperloom/agents/kernel/tools/_idle_gate.py @tsrikris @devalshahamd @AMD-AGI/SaFE
/src/hyperloom/inference_optimizer/tracelens_md.py @tsrikris @devalshahamd @AMD-AGI/SaFE

# Benchmarking / profiling
/src/hyperloom/agents/kernel/tools/tracelens_arch_benchmark.py @devalshahamd @AMD-AGI/SaFE
/src/hyperloom/orchestrator/actions/executors/profile.py @devalshahamd @AMD-AGI/SaFE
/src/hyperloom/orchestrator/actions/executors/roofline.py @devalshahamd @AMD-AGI/SaFE

# Post-TraceLens -> GEAK processing layer + glue
/src/hyperloom/agents/kernel/tools/kernel_optimization.py @tsrikris @devalshahamd @Ahmedhasssan-aig @AMD-AGI/SaFE
/src/hyperloom/agents/kernel/tools/source_resolver.py @tsrikris @devalshahamd @Ahmedhasssan-aig @AMD-AGI/SaFE
/src/hyperloom/agents/kernel/tools/kernel_source_index.py @tsrikris @devalshahamd @Ahmedhasssan-aig @AMD-AGI/SaFE
/src/hyperloom/agents/kernel/tools/source_env.py @tsrikris @devalshahamd @Ahmedhasssan-aig @AMD-AGI/SaFE
/docs/components/tracelens.md @tsrikris @devalshahamd @Ahmedhasssan-aig @AMD-AGI/SaFE
2 changes: 1 addition & 1 deletion .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# SPDX-FileCopyrightText: 2025 Advanced Micro Devices, Inc.
# SPDX-FileCopyrightText: 2026 Advanced Micro Devices, Inc.
# SPDX-License-Identifier: MIT

version: 2
Expand Down
295 changes: 295 additions & 0 deletions .github/scripts/ci-e2e-dispatch.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,295 @@
#!/usr/bin/env bash
# End-to-end CI smoke test: submit ONE single-GPU inference-optimizer run built from
# *this PR's* branch to the run API, poll until terminal, and map
# Succeeded -> green / Failed|timeout -> red. The run's workload uid == session_id,
# printed on every path.
#
# Requires: bash, curl, jq on the (self-hosted, in-network) runner.
#
# Inputs (env):
# E2E_API_BASE run API base url (required)
# E2E_API_KEY API key (required)
# E2E_INFRA_TYPE infra type for the submission (required)
# MODEL HF repo id (default Qwen/Qwen3-0.6B)
# MODEL_CLASS dense|moe_mla|moe_swa|moe_mla_nsa|"" (default dense; "" -> auto-infer)
# GPUS physical GPUs per replica (default 1)
# TP tensor-parallel degree (default 1)
# MAX_HOURS optimizer time budget (hours) (default 0.5)
# PR_NUMBER PR number (for the job name)
# HEAD_REF PR head branch name (the code to run)
# HEAD_SHA immutable PR head commit SHA (the exact code to run)
# HEAD_REPO_URL PR head repo clone url (for forks)
# BASE_REPO_URL base repo clone url
# MODEL_BASE local model base dir (optional; backend fills if empty)
# POLL_INTERVAL_S seconds between polls (default 30)
# POLL_MAX max polls before timeout (default 120 => ~60min)
# KNOWLEDGE_STORE_MODE explicit local|remote mode (default local)
# KB_STORE_URL / KB_STORE_TOKEN required together when mode=remote
# CI_E2E_PR_CHECK_BASE base dir for per-PR checkouts (default /tmp/ci-e2e)
# CI_E2E_CACERT / CI_E2E_INSECURE TLS to the API endpoint (CA bundle / skip-verify)
#
# Optional live commit status on the PR (all three required to enable):
# GH_STATUS_TOKEN GitHub token with statuses:write (Actions: secrets.GITHUB_TOKEN)
# GH_STATUS_REPO owner/repo
# GH_STATUS_SHA PR head sha to attach the status to
# GH_STATUS_DETAILS_URL link back to the Actions run (optional)
# STATUS_CONTEXT status context/name (default ci-e2e/run)
# STATUS_INTERVAL_S seconds between status refreshes (default 300 => 5min)
# On terminal, a sticky PR report comment is upserted when GH_STATUS_TOKEN +
# GH_STATUS_REPO + numeric PR_NUMBER are set.
set -euo pipefail

MODEL="${MODEL:-Qwen/Qwen3-0.6B}"
MODEL_CLASS="${MODEL_CLASS:-dense}"
GPUS="${GPUS:-1}"
TP="${TP:-1}"
MAX_HOURS="${MAX_HOURS:-0.5}"
POLL_INTERVAL_S="${POLL_INTERVAL_S:-30}"
POLL_MAX="${POLL_MAX:-120}"
KNOWLEDGE_STORE_MODE="${KNOWLEDGE_STORE_MODE:-local}"

: "${E2E_API_BASE:?E2E_API_BASE is required}"
: "${E2E_API_KEY:?E2E_API_KEY is required}"
: "${E2E_INFRA_TYPE:?E2E_INFRA_TYPE is required}"
: "${HEAD_REF:?HEAD_REF (PR head branch) is required}"
: "${HEAD_SHA:?HEAD_SHA (immutable PR head commit) is required}"
case "$KNOWLEDGE_STORE_MODE" in
local|remote) ;;
*) echo "KNOWLEDGE_STORE_MODE must be local or remote" >&2; exit 2 ;;
esac
if [ "$KNOWLEDGE_STORE_MODE" = "remote" ]; then
: "${KB_STORE_URL:?KB_STORE_URL is required when KNOWLEDGE_STORE_MODE=remote}"
: "${KB_STORE_TOKEN:?KB_STORE_TOKEN is required when KNOWLEDGE_STORE_MODE=remote}"
fi
if [ "$E2E_INFRA_TYPE" != "kubernetes" ]; then
echo "CI E2E supports only E2E_INFRA_TYPE=kubernetes; source-SHA pinning is not implemented for '$E2E_INFRA_TYPE'" >&2
exit 2
fi
API="${E2E_API_BASE%/}/api/v1/orchestration/workloads"

# Fork PRs: the head branch lives in the contributor's fork, so clone from the head
# repo. Same-repo PRs use the base repo.
SRC_REPO="${BASE_REPO_URL:-}"
if [ -n "${HEAD_REPO_URL:-}" ] && [ "${HEAD_REPO_URL}" != "${BASE_REPO_URL:-}" ]; then
SRC_REPO="${HEAD_REPO_URL}"
fi
# The exact commit is part of the source path. Do not reuse a branch-only checkout:
# a later push must never make this CI run test a different commit from the one its
# GitHub status is attached to. The default is Kubernetes Job-local /tmp, which is
# discarded when the Job ends. CI_E2E_SOURCE_DIR is an explicit persistent override;
# its owner is responsible for retention and cleanup.
PR_CHECK_BASE="${CI_E2E_PR_CHECK_BASE:-/tmp/ci-e2e}"
SRC_DIR="${CI_E2E_SOURCE_DIR:-${PR_CHECK_BASE%/}/pr_${PR_NUMBER:-manual}/${HEAD_SHA}/hyperloom}"

summary() { echo "$*" | tee -a "${GITHUB_STEP_SUMMARY:-/dev/null}"; }
auth=(-H "Authorization: Bearer ${E2E_API_KEY}")

# TLS to the API endpoint: prefer a CA bundle (CI_E2E_CACERT), fall back to skip-verify
# only when CI_E2E_INSECURE=1 (test convenience on trusted networks).
tls=()
if [ -n "${CI_E2E_CACERT:-}" ]; then
tls=(--cacert "$CI_E2E_CACERT")
elif [ "${CI_E2E_INSECURE:-0}" = "1" ]; then
tls=(-k)
fi

# ---- GitHub commit status (optional live status on the PR) ----------------
# When GH_STATUS_TOKEN + GH_STATUS_REPO + GH_STATUS_SHA are set we publish a commit
# status against the PR head sha and refresh it every STATUS_INTERVAL_S, so the PR's
# checks section shows the live phase without opening the job log. No-op when absent.
STATUS_INTERVAL_S="${STATUS_INTERVAL_S:-300}"
STATUS_CONTEXT="${STATUS_CONTEXT:-ci-e2e/run}"
GH_API="${GH_API:-https://api.github.com}"
gh_status_on() { [ -n "${GH_STATUS_TOKEN:-}" ] && [ -n "${GH_STATUS_REPO:-}" ] && [ -n "${GH_STATUS_SHA:-}" ]; }
post_status() { # state(pending|success|failure|error) description
gh_status_on || return 0
local desc="${2:0:139}"
curl -sS -X POST \
-H "Authorization: Bearer ${GH_STATUS_TOKEN}" \
-H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" \
"${GH_API}/repos/${GH_STATUS_REPO}/statuses/${GH_STATUS_SHA}" \
-d "$(jq -n --arg s "$1" --arg d "$desc" --arg u "${GH_STATUS_DETAILS_URL:-}" --arg c "$STATUS_CONTEXT" \
'{state:$s, description:$d, context:$c} + (if $u=="" then {} else {target_url:$u} end)')" \
>/dev/null 2>&1 || true
}

# ---- GitHub PR report comment (optional) ----------------------------------
# On terminal, upsert ONE sticky comment on the PR with a compact run report
# (metadata + timeline). Needs GH_STATUS_TOKEN + GH_STATUS_REPO + numeric PR_NUMBER.
REPORT_MARKER="<!-- ci-e2e-report:${STATUS_CONTEXT} -->"
gh_report_on() { [ -n "${GH_STATUS_TOKEN:-}" ] && [ -n "${GH_STATUS_REPO:-}" ] && [[ "${PR_NUMBER:-}" =~ ^[0-9]+$ ]]; }
_epoch() { date -d "$1" +%s 2>/dev/null || true; }
_hdur() { local s="${1:-}"; [ -z "$s" ] && { echo "–"; return; }; if [ "$s" -lt 60 ]; then echo "${s}s"; else echo "$((s/60))m $((s%60))s"; fi; }

# Turn a raw platform error into a one-line, plain-language reason a reviewer can act on.
humanize_reason() {
case "$1" in
*JobHoldMaxRequeue*)
echo "The scheduler kept holding & requeuing the job until it gave up — usually a flaky node; just re-run." ;;
*baseline_accuracy*|*accuracy_failed*)
echo "Baseline accuracy gate failed — the model server ran but the baseline benchmark didn't pass; check the baseline logs." ;;
*NonZeroExitCode*|*"exhausted retries"*)
echo "The run exited non-zero on the node — usually a node/env hiccup (e.g. a leftover process holding a port) or a runtime error; often transient, re-run first." ;;
*"not terminal"*|*[Tt]imeout*)
echo "Timed out — the run never reached a terminal state in time (task stuck, or the GPU stayed queued too long)." ;;
*"not associated"*|*user_name*)
echo "Dispatch identity rejected — CI_E2E_USER_NAME must be an account the runs are allowed to dispatch under." ;;
*128*|*Authentication*|*"could not read Username"*)
echo "Could not clone the PR code on the node — GitHub auth/permission issue." ;;
"")
echo "Unknown failure — the platform reported no error detail." ;;
*)
echo "$1" ;;
esac
}

report_upsert() { # result_md (e.g. "✅ Succeeded")
gh_report_on || return 0
local result="$1" q d qe de nows qd="" rt="" tot="" actions="" reason_row="" body cid
q="$(printf '%s' "${detail:-}" | jq -r '[.orchestration.conditions[]|select(.phase=="Queued")][0].time // empty' 2>/dev/null || true)"
d="$(printf '%s' "${detail:-}" | jq -r '[.orchestration.conditions[]|select(.phase=="Dispatched")][0].time // empty' 2>/dev/null || true)"
qe="$(_epoch "$q")"; de="$(_epoch "$d")"; nows="$(date +%s)"
[ -n "$qe" ] && [ -n "$de" ] && qd="$(_hdur $((de - qe)))"
[ -n "$de" ] && rt="$(_hdur $((nows - de)))"
[ -n "$qe" ] && tot="$(_hdur $((nows - qe)))"
[ -n "${GH_STATUS_DETAILS_URL:-}" ] && actions="[details](${GH_STATUS_DETAILS_URL})"
if [ -n "${err:-}" ]; then
reason_row="| reason | $(humanize_reason "$err") |
| detail | \`${err}\` |
"
fi
body="${REPORT_MARKER}
## CI E2E report — ${result}

| item | value |
|---|---|
| result | ${result} |
| model | \`${MODEL}\` (${MODEL_CLASS:-dense}) |
| resources | ${GPUS}× GPU, TP=${TP} |
| PR branch | \`${HEAD_REF}\` |
| commit | \`${HEAD_SHA}\` |
| session_id | \`${UID_}\` |
| queue → dispatch | ${qd:-–} |
| run time | ${rt:-–} |
| total | ${tot:-–} |
${reason_row}
${actions}"
cid="$(curl -sS -H "Authorization: Bearer ${GH_STATUS_TOKEN}" -H "Accept: application/vnd.github+json" \
"${GH_API}/repos/${GH_STATUS_REPO}/issues/${PR_NUMBER}/comments?per_page=100" 2>/dev/null \
| jq -r --arg m "$REPORT_MARKER" '[.[]|select(.body|contains($m))|.id][0] // empty' 2>/dev/null || true)"
if [ -n "$cid" ]; then
curl -sS -X PATCH -H "Authorization: Bearer ${GH_STATUS_TOKEN}" -H "Accept: application/vnd.github+json" \
"${GH_API}/repos/${GH_STATUS_REPO}/issues/comments/${cid}" \
-d "$(jq -n --arg b "$body" '{body:$b}')" >/dev/null 2>&1 || true
else
curl -sS -X POST -H "Authorization: Bearer ${GH_STATUS_TOKEN}" -H "Accept: application/vnd.github+json" \
"${GH_API}/repos/${GH_STATUS_REPO}/issues/${PR_NUMBER}/comments" \
-d "$(jq -n --arg b "$body" '{body:$b}')" >/dev/null 2>&1 || true
fi
}

# ---- submit ---------------------------------------------------------------
params="$(jq -n \
--arg repo_id "$MODEL" --arg tp "$TP" --arg mh "$MAX_HOURS" \
--arg ref "$HEAD_REF" --arg sha "$HEAD_SHA" --arg srcrepo "$SRC_REPO" --arg srcdir "$SRC_DIR" \
--arg task_source "github-e2e-ci" --arg pr_number "${PR_NUMBER:-}" \
--arg mc "$MODEL_CLASS" --arg mbase "${MODEL_BASE:-}" \
'{REPO_ID:$repo_id, TP:$tp, MAX_HOURS:$mh,
HYPERLOOM_SOURCE_REF:$ref, HYPERLOOM_SOURCE_SHA:$sha,
HYPERLOOM_SOURCE_REPO:$srcrepo, HYPERLOOM_SOURCE_DIR:$srcdir,
HYPERLOOM_TASK_SOURCE:$task_source, HYPERLOOM_SOURCE_PR:$pr_number}
+ (if $mc == "" then {} else {MODEL_CLASS:$mc} end)
+ (if $mbase == "" then {} else {HL_MODEL_BASE:$mbase} end)')"
body="$(jq -n \
--arg name "ci-pr-${PR_NUMBER:-manual}-${GITHUB_RUN_ID:-local}" \
--arg uname "${CI_E2E_USER_NAME:-}" --arg itype "$E2E_INFRA_TYPE" \
--arg knowledge_mode "$KNOWLEDGE_STORE_MODE" \
--arg kb_store_url "${KB_STORE_URL:-}" \
--arg kb_store_token "${KB_STORE_TOKEN:-}" \
--argjson gpus "$GPUS" --argjson params "$params" \
'{name:$name, infra_type:$itype, kind:"hyperloom", replicas:1,
gpu_per_replica:$gpus,
template:{params:$params, env:
({HL_CI_E2E:"1", KNOWLEDGE_STORE_MODE:$knowledge_mode}
+ (if $knowledge_mode == "remote"
then {KB_STORE_URL:$kb_store_url, KB_STORE_TOKEN:$kb_store_token}
else {}
end))}}
+ (if $uname == "" then {} else {user_name:$uname} end)')"

echo "[ci-e2e] submitting: model=$MODEL ref=$HEAD_REF sha=$HEAD_SHA gpus=$GPUS tp=$TP max_hours=$MAX_HOURS"
resp="$(curl -sS "${tls[@]}" -w $'\n%{http_code}' -X POST "$API" \
"${auth[@]}" -H "Content-Type: application/json" -d "$body")"
code="$(printf '%s' "$resp" | tail -n1)"
json="$(printf '%s' "$resp" | sed '$d')"

if [ "$code" -lt 200 ] || [ "$code" -ge 300 ]; then
summary "❌ submit failed (HTTP $code): $(printf '%s' "$json" | head -c 500)"
exit 1
fi
UID_="$(printf '%s' "$json" | jq -r '.uid // empty')"
if [ -z "$UID_" ]; then
summary "❌ submit returned no uid: $(printf '%s' "$json" | head -c 500)"
exit 1
fi
summary "**session_id (workload uid):** \`$UID_\`"
echo "session_id=$UID_" >> "${GITHUB_OUTPUT:-/dev/null}"
# Persist the uid so a workflow `if: cancelled()` step can cancel the workload even
# if this process is hard-killed on cancel (the trap below is best-effort only).
echo "$UID_" > "${E2E_UID_FILE:-${RUNNER_TEMP:-/tmp}/e2e_session_uid}" 2>/dev/null || true

# Seed the live commit status (no-op unless GH_STATUS_* are set).
post_status "pending" "submitted; uid=${UID_}; model=${MODEL}; ref=${HEAD_REF}; sha=${HEAD_SHA:0:12}"
last_push="$(date +%s)"

# On cancellation (e.g. a newer commit via concurrency cancel-in-progress),
# best-effort cancel the workload so we don't leak a GPU run.
cleanup() { curl -sS "${tls[@]}" -X DELETE "$API/$UID_" "${auth[@]}" >/dev/null 2>&1 || true; }
trap 'echo "[ci-e2e] cancelled; deleting workload $UID_"; post_status "error" "cancelled; uid=${UID_}; sha=${HEAD_SHA:0:12}"; cleanup; exit 1' INT TERM

# ---- poll -----------------------------------------------------------------
i=0
prev_phase=""
while [ "$i" -lt "$POLL_MAX" ]; do
i=$((i + 1))
detail="$(curl -sS "${tls[@]}" "$API/$UID_" "${auth[@]}" || true)"
phase="$(printf '%s' "$detail" | jq -r '.orchestration.phase // "Unknown"' 2>/dev/null || echo Unknown)"
jobref="$(printf '%s' "$detail" | jq -r '.dispatches[-1].platform_ref // "-"' 2>/dev/null || echo -)"
node="$(printf '%s' "$detail" | jq -r '.dispatches[-1].nodes // "-"' 2>/dev/null || echo -)"
echo "[ci-e2e] poll $i/$POLL_MAX phase=$phase node=$node job=$jobref uid=$UID_"
# Announce phase transitions (from the orchestration conditions ledger).
if [ "$phase" != "$prev_phase" ]; then
cond="$(printf '%s' "$detail" | jq -r '.orchestration.conditions[-1] | "\(.time) \(.phase): \(.message)"' 2>/dev/null || echo "")"
echo "[ci-e2e] >> phase ${prev_phase:-<start>} -> ${phase}${cond:+ ($cond)}"
prev_phase="$phase"
fi
case "$phase" in
Succeeded)
summary "✅ **PASS** — run completed. session_id=\`$UID_\` job=\`$jobref\`"
post_status "success" "PASS — uid=${UID_}; job=${jobref}; sha=${HEAD_SHA:0:12}"
report_upsert "✅ Succeeded"
exit 0 ;;
Failed)
err="$(printf '%s' "$detail" | jq -r '.orchestration.last_error // (.orchestration.conditions[-1].message) // "unknown"' 2>/dev/null)"
summary "❌ **FAIL** — session_id=\`$UID_\` job=\`$jobref\` node=\`$node\`"
summary "reason: $err"
post_status "failure" "FAIL (${HEAD_SHA:0:12}): $(humanize_reason "$err")"
report_upsert "❌ Failed"
exit 1 ;;
esac
# Throttled live status: push at most once per STATUS_INTERVAL_S (default 5min).
now_s="$(date +%s)"
if [ $((now_s - last_push)) -ge "$STATUS_INTERVAL_S" ]; then
post_status "pending" "running ${phase}; job=${jobref}; uid=${UID_}; sha=${HEAD_SHA:0:12}"
last_push="$now_s"
fi
sleep "$POLL_INTERVAL_S"
done

err="not terminal after $((POLL_MAX * POLL_INTERVAL_S))s"
summary "❌ **FAIL (timeout)** — ${err}. session_id=\`$UID_\`"
post_status "failure" "timeout; uid=${UID_}; sha=${HEAD_SHA:0:12}"
report_upsert "❌ Timeout"
cleanup
exit 1
2 changes: 1 addition & 1 deletion .github/workflows/auto-label.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# SPDX-FileCopyrightText: 2025 Advanced Micro Devices, Inc.
# SPDX-FileCopyrightText: 2026 Advanced Micro Devices, Inc.
# SPDX-License-Identifier: MIT

name: Auto Label Issues
Expand Down
Loading
Loading