Skip to content

chore(release): merge release/v1.1.5 into main - #2272

Merged
chaojhou merged 3 commits into
mainfrom
feature/xiaofei/merge-release-1.1.5
Oct 28, 2026
Merged

chaojhou merged 3 commits into
mainfrom
feature/xiaofei/merge-release-1.1.5

Conversation

@xiaofei-zheng

Copy link
Copy Markdown
Collaborator
  • Description: what and why

Merges release/v1.1.5 back into main after the v1.1.5 release, so main carries the 1.1.5 version bump, release notes and compatibility-matrix fixes, and the v1.1.5 tag becomes an ancestor of main.

The release branch has two commits main lacks:

Please merge with "Create a merge commit", not squash: squashing drops the release branch as a parent, and v1.1.5 stops being reachable from main.

  • Linked issue(s): none.
  • Tests: no code change against main; CI runs the release and doc version tests. Checked that git diff origin/main is limited to the eight version sites, docs/compatibility.rst and docs/release-notes.md, that no 1.1.4 package pin remains outside the release notes, that the Magpie pin on main is still 6a1ee26f (Magpie 0.3.0), and that v1.1.5 is an ancestor of the merge commit.
  • Size/complexity triggers crossed: none; the release-notes section is the bulk of the diff.
  • If this simplifies or refactors: N/A.
  • Observable effect: main reports version 1.1.5 and its install pins and HYPERLOOM_WHEEL_TAG default point at the published v1.1.5 release.
  • Breaking changes: no.
  • PR addresses single concern: yes, syncing the 1.1.5 release back to main.
  • Root cause is upstream (Magpie/TraceLens/GEAK/IntelliKit/AgentKernelArena), ticket filed: N/A.

fengshaoyi-amd and others added 3 commits October 26, 2026 20:13
…nitial-roofline hold (#2175) (#2185)

* fix(orchestrator): refuse a skip_to_close the session's own facts contradict

A skip_to_close ends the run on the agent's word and is booked as
global_converged whenever budget is left. Session d11ccead closed at
cycle 0 with a measured baseline and 9.3 h of budget left, and release
qualification read that close as PASSED.

The intent router now denies the hint (rule skip_to_close_contradicted)
when a baseline is measured and the remaining budget still funds another
cycle, so a live skip_to_close can only earn baseline_failed or
time_exhausted. GPU work that keeps failing after the baseline still ends
the run, through the sweep. compute_next_phase is unchanged: recorded
decisions replay as they were made, and a hint already pending still
closes the run.

Part of #2167.



* fix(orchestrator): tighten the skip_to_close refusal

Drop the unread now_unix parameter, build the denial before recording it, and keep the PHASE CONTRACT rewording to the lines it replaces.



* fix(orchestrator): show the agent the initial-roofline hold in the Phase block

While PRELUDE or ENABLEMENT waits for the initial roofline it enqueued, the
`=== Phase ===` block now carries a `hold` line: the roofline it waits for,
how long the wait can still last, that no hint advances the phase, that
`remaining_sec` is the phase's share rather than the session's, and that a
`send_message` observation is the expected answer each tick. The PHASE
CONTRACT no longer says `baseline_tput > 0` alone exits PRELUDE, and
orchestration.md stops reading that share as urgency under a hold.

One helper reads the hold's two inputs for both phase predicates and for the
block, so the line the agent is shown and the exit decision cannot disagree.

Part of #2167.



---------


(cherry picked from commit e7b8bc7)

Co-authored-by: Cursor <cursoragent@cursor.com>
* chore(release): cut 1.1.5

Move every site that tracks the packaged version to 1.1.5 and write the
1.1.5 section of docs/release-notes.md from the PRs merged between the
1.1.4 branch point (60b5770) and the 1.1.5 branch point (9da8788), plus
#2185. The Unreleased entry moves into that section, and #2186, merged to
main after the cut, is listed as a known issue.

Co-authored-by: Cursor <cursoragent@cursor.com>

* docs(release): correct the Magpie version, list the R9700 and quote the forge-loop refusal

The component matrix names the Magpie release the 1.1.5 pin carries (0.3.0), the support matrix lists the Radeon AI PRO R9700 that 1.1.5 adds, and the upgrade note quotes the message forge-loop --resume prints for a 1.1.4 checkpoint.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
@xiaofei-zheng
xiaofei-zheng requested a review from a team as a code owner October 28, 2026 07:45
@github-actions

Copy link
Copy Markdown

Code metrics gate: PASSED

Judged: the 9 files this change touches. Files it does not touch never fail it; anything found there is listed under Outside this change for information.

Dimension Limit New Worse Baseline out of date Baseline entries vs base
Cyclomatic complexity fails > 20 0 0 0 0 +0
Cognitive complexity fails > 30 0 0 0 35 +0
Function length (lines) fails > 50 0 0 0 475 +0
Nested block depth fails > 4 0 0 0 42 +0
Parameter count fails > 5 0 0 0 3 +0
Module length (lines) warns > 800, fails > 1200 0 0 0 41 +0
Duplicated lines per file fails > 0 0 0 0 86 +0
Dead code (vulture) fails > 0 0 0 0 2 +0
Directory size (entries) fails > 50 0 0 0 2 +0
Check Findings Effect
Comments 0
Broad catch without a reason 0
Broad catch that records nothing 0
English only 0
Production code imports test code 0
Repeated literals 0
A1 Private name of another package 0
A8 Flag argument 0
A9 Tuple return 0
A10 Raw vocabulary comparison 0
A11 Hidden global write 0
A12 Pure forwarder 0
A12 Single-implementation abstraction 0
47 findings in files this change does not touch

Outside this change (informational): 47

Unit Dimension Baseline Now
src/hyperloom/orchestrator/kernel/serving_log_evidence.py resolve_forge_server_log Cognitive complexity absent 49
src/hyperloom_kb/collect/mapping.py _experience Cognitive complexity absent 31
src/kernelforge/loop/iteration/iteration_phases.py IterationPhasesMixin._collect_session_candidate Cognitive complexity absent 36
src/hyperloom/orchestrator/actions/executors/_grid_runner.py _run_warmup_round Function length (lines) absent 51
src/hyperloom/orchestrator/kernel/integrate_accuracy.py grade_integrate_accuracy Function length (lines) absent 56
src/hyperloom/orchestrator/loop/_resume_recovery.py ResumeRecoveryMixin._resume_recover_pending_warm_replay Function length (lines) absent 75
src/kernelforge/loop/iteration/attempt_verdict.py AttemptVerdictMixin._close_iteration Function length (lines) absent 81
src/kernelforge/loop/iteration/attempt_verdict.py AttemptVerdictMixin._decide_iteration_keep Function length (lines) absent 58
src/kernelforge/loop/iteration/attempt_verdict.py AttemptVerdictMixin.run_one_iteration Function length (lines) absent 61
src/kernelforge/loop/iteration/best_publication.py BestPublicationMixin._reconcile_best_publication Function length (lines) absent 66
src/kernelforge/loop/iteration/campaign_report.py CampaignReportMixin._implementer_history Function length (lines) absent 81
src/kernelforge/loop/iteration/campaign_runtime.py CampaignMixin._adopt_validated_warm_start Function length (lines) absent 80
src/kernelforge/loop/iteration/campaign_runtime.py CampaignMixin._restore_or_begin_campaign Function length (lines) absent 64
src/kernelforge/loop/iteration/case_coverage.py CaseCoverageMixin._case_config_coverage Function length (lines) absent 58
src/kernelforge/loop/iteration/case_coverage.py CaseCoverageMixin._render_case_config_coverage Function length (lines) absent 70
src/kernelforge/loop/iteration/iteration_phases.py IterationPhasesMixin._collect_session_candidate Function length (lines) absent 140
src/kernelforge/loop/iteration/iteration_phases.py IterationPhasesMixin._source_attempt Function length (lines) absent 147
src/kernelforge/loop/iteration/keep_checkpoint.py KeepCheckpointMixin._build_pending_keep Function length (lines) absent 55
src/kernelforge/loop/iteration/locked_run.py LockedRunMixin._begin_locked_run Function length (lines) absent 59
src/kernelforge/loop/iteration/locked_run.py LockedRunMixin._run_locked Function length (lines) absent 61
src/kernelforge/loop/iteration/outcome_runtime.py OutcomeMixin._archive_attempt Function length (lines) absent 51
src/kernelforge/loop/iteration/outcome_runtime.py OutcomeMixin._record_iteration_handoff Function length (lines) absent 65
src/kernelforge/loop/iteration/outcome_runtime.py OutcomeMixin._record_iteration_outcome Function length (lines) absent 55
src/kernelforge/loop/iteration/outcome_runtime.py OutcomeMixin._record_lesson Function length (lines) absent 86
src/kernelforge/loop/iteration/round_admission.py RoundAdmissionMixin._update_search_policy Function length (lines) absent 51

...and 22 more; the job log lists every row.

Verdict computed by the gate scripts in /home/runner/work/_temp/code-metrics-gate, not by this tree's copy.

Thresholds and sources: [tool.hyperloom.code_metrics] in pyproject.toml. Tools: complexipy 8.0.1, jscpd 5.4.1, radon 6.0.1, ruff 0.16.2, vulture 2.16.

@chaojhou
chaojhou merged commit bf7d55b into main Oct 28, 2026
42 checks passed
@chaojhou
chaojhou deleted the feature/xiaofei/merge-release-1.1.5 branch October 28, 2026 07:53

@chaojhou chaojhou left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR #2272 -- chore(release): merge release/v1.1.5 into main

What it does: merges release/v1.1.5 back into main, so main carries the 1.1.5 version bump, the 1.1.5 release notes and the compatibility-matrix fixes (R9700 row, Magpie 0.3.0), and the v1.1.5 tag becomes an ancestor of main. Against the merge base 21aa9d4 the PR changes only the eight version sites, docs/compatibility.rst and docs/release-notes.md.

Blocking issues: none

LGTM

Merged with "Create a merge commit" as the description asks: a squash would drop the release branch as a parent, and v1.1.5 would stop being reachable from main.

Checked: git diff 21aa9d4ce..81d8c2326 (README badge, docs/conf.py, pyproject.toml, install docs, examples/README.md, hyperloom-setup SKILL.md, HYPERLOOM_WHEEL_TAG default in install_baremetal.sh, compatibility.rst, release-notes.md); docs/release-notes.md from "## Hyperloom 1.1.5 release" down is byte-identical to the v1.1.5 tag, and its "## Unreleased" section equals current main's; no 1.1.4 version site remains (the two remaining hits are history in upgrade.md and the sphinx theme pin); v1.1.5 is an ancestor of the head | Ran: git merge-tree against current main (clean); gh pr checks (35 pass, 7 skipped) | Head: 81d8c23

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants