Repository navigation
Commit e7d7bcf
feat(cursor-review): axes_alongside_panel — run cursor-approve's start phase and the gating axes beside the panel (#434)
* feat(cursor-review): axes_alongside_panel — run cursor-approve's start phase and the gating axes beside the panel
New opt-in input (default false; every job it adds is `if:
inputs.axes_alongside_panel && …`, so nothing changes with it off):
- approve-start-early: cursor-approve.yml `start` right after round-cap,
approve_gate `pending` (or `capped`), round = round-cap's real next_round.
- axis-correctness / axis-conformance: the axis workflows beside the panel,
needing a SUCCESSFUL start, secrets passed explicitly, not in
panel-integrity's or blocking-gate's needs.
- axes-closeout: card.py closeout rewrites a still-pending early card to
no_decision/push_then_relabel when the round's approve_gate is not pass.
- axes_started output; axes / axis_prior_rounds / axis_direct_model inputs.
card.py: a `pending` start card carries no LANE_MARKER (approve_only_on_push
must never read an undecided panel as passed), plus the `closeout` subcommand.
auto-approve.py: withdraw treats `pending` as `pass`.
cursor-approve.yml drops its unused `actions: read`: a nested job cannot
exceed its caller's grant, and the documented cursor-review caller grants
contents + pull-requests only, so keeping it would fail every caller at
startup on the pin bump, input on or off. Nothing in that workflow calls the
Actions API; same-run artifact upload/download needs no actions scope.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix(cursor-review): harden axes_alongside_panel per the panel's review
- axes_ok output: false when an axis job started beside the panel did not
succeed. A panel cell can claim the run-global `axis-<name>` artifact
first, so the genuine upload fails; the documented decide `if:` now skips
on axes_ok false, and axes-closeout rewrites the card on that path.
- approve-start-early requires defer_approval, runs only for a round within
the diff-size cap with a passing preflight (or the capped hand-off), and is
ordered after dismiss-stale-approval; post-review waits for it, so a late
pending card cannot overwrite decide's round card.
- cursor-approve's start validates `axes` under approve_gate `pending` (a
non-empty subset of correctness,conformance) and exports it normalized;
the axis jobs' `if:` reads that output.
- axes-closeout runs under !cancelled() (not always()) on any start that ran,
and card.py closeout only rewrites a card whose run link is this run's.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>1 parent 7fdd9be commit e7d7bcf
14 files changed
Lines changed: 1011 additions & 24 deletions
File tree
- .github
- cursor-approve
- tests
- cursor-review
- tests
- workflow-pins/tests
- workflows
- docs/callers
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
12 | | - | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
13 | 22 | | |
14 | 23 | | |
15 | 24 | | |
| |||
91 | 100 | | |
92 | 101 | | |
93 | 102 | | |
| 103 | + | |
94 | 104 | | |
95 | 105 | | |
96 | 106 | | |
| |||
443 | 453 | | |
444 | 454 | | |
445 | 455 | | |
| 456 | + | |
| 457 | + | |
| 458 | + | |
446 | 459 | | |
| 460 | + | |
| 461 | + | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
| 466 | + | |
| 467 | + | |
| 468 | + | |
447 | 469 | | |
| 470 | + | |
448 | 471 | | |
449 | 472 | | |
450 | 473 | | |
451 | 474 | | |
452 | 475 | | |
453 | 476 | | |
454 | 477 | | |
455 | | - | |
| 478 | + | |
| 479 | + | |
| 480 | + | |
456 | 481 | | |
457 | | - | |
| 482 | + | |
458 | 483 | | |
459 | 484 | | |
460 | 485 | | |
| |||
650 | 675 | | |
651 | 676 | | |
652 | 677 | | |
| 678 | + | |
653 | 679 | | |
654 | 680 | | |
655 | 681 | | |
| |||
662 | 688 | | |
663 | 689 | | |
664 | 690 | | |
665 | | - | |
| 691 | + | |
| 692 | + | |
| 693 | + | |
666 | 694 | | |
667 | 695 | | |
668 | 696 | | |
| |||
705 | 733 | | |
706 | 734 | | |
707 | 735 | | |
| 736 | + | |
| 737 | + | |
| 738 | + | |
| 739 | + | |
| 740 | + | |
| 741 | + | |
708 | 742 | | |
709 | 743 | | |
710 | 744 | | |
| |||
1279 | 1313 | | |
1280 | 1314 | | |
1281 | 1315 | | |
| 1316 | + | |
| 1317 | + | |
| 1318 | + | |
| 1319 | + | |
| 1320 | + | |
| 1321 | + | |
| 1322 | + | |
| 1323 | + | |
| 1324 | + | |
| 1325 | + | |
| 1326 | + | |
| 1327 | + | |
1282 | 1328 | | |
1283 | 1329 | | |
1284 | 1330 | | |
| |||
1303 | 1349 | | |
1304 | 1350 | | |
1305 | 1351 | | |
| 1352 | + | |
| 1353 | + | |
1306 | 1354 | | |
1307 | 1355 | | |
1308 | 1356 | | |
| |||
1403 | 1451 | | |
1404 | 1452 | | |
1405 | 1453 | | |
| 1454 | + | |
| 1455 | + | |
| 1456 | + | |
| 1457 | + | |
| 1458 | + | |
| 1459 | + | |
| 1460 | + | |
| 1461 | + | |
| 1462 | + | |
| 1463 | + | |
| 1464 | + | |
| 1465 | + | |
| 1466 | + | |
| 1467 | + | |
| 1468 | + | |
| 1469 | + | |
| 1470 | + | |
| 1471 | + | |
| 1472 | + | |
| 1473 | + | |
| 1474 | + | |
| 1475 | + | |
| 1476 | + | |
| 1477 | + | |
| 1478 | + | |
| 1479 | + | |
| 1480 | + | |
| 1481 | + | |
| 1482 | + | |
| 1483 | + | |
| 1484 | + | |
| 1485 | + | |
| 1486 | + | |
| 1487 | + | |
| 1488 | + | |
| 1489 | + | |
| 1490 | + | |
| 1491 | + | |
| 1492 | + | |
| 1493 | + | |
| 1494 | + | |
| 1495 | + | |
| 1496 | + | |
| 1497 | + | |
| 1498 | + | |
| 1499 | + | |
| 1500 | + | |
| 1501 | + | |
| 1502 | + | |
| 1503 | + | |
| 1504 | + | |
| 1505 | + | |
| 1506 | + | |
| 1507 | + | |
| 1508 | + | |
| 1509 | + | |
| 1510 | + | |
| 1511 | + | |
| 1512 | + | |
| 1513 | + | |
| 1514 | + | |
| 1515 | + | |
| 1516 | + | |
| 1517 | + | |
| 1518 | + | |
| 1519 | + | |
| 1520 | + | |
| 1521 | + | |
| 1522 | + | |
1406 | 1523 | | |
1407 | 1524 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
914 | 914 | | |
915 | 915 | | |
916 | 916 | | |
| 917 | + | |
| 918 | + | |
| 919 | + | |
| 920 | + | |
| 921 | + | |
| 922 | + | |
| 923 | + | |
| 924 | + | |
| 925 | + | |
| 926 | + | |
| 927 | + | |
| 928 | + | |
| 929 | + | |
| 930 | + | |
| 931 | + | |
| 932 | + | |
| 933 | + | |
| 934 | + | |
| 935 | + | |
| 936 | + | |
| 937 | + | |
| 938 | + | |
| 939 | + | |
| 940 | + | |
| 941 | + | |
| 942 | + | |
| 943 | + | |
| 944 | + | |
| 945 | + | |
| 946 | + | |
| 947 | + | |
| 948 | + | |
| 949 | + | |
| 950 | + | |
| 951 | + | |
| 952 | + | |
| 953 | + | |
| 954 | + | |
| 955 | + | |
| 956 | + | |
| 957 | + | |
| 958 | + | |
| 959 | + | |
| 960 | + | |
| 961 | + | |
| 962 | + | |
| 963 | + | |
| 964 | + | |
| 965 | + | |
| 966 | + | |
| 967 | + | |
| 968 | + | |
| 969 | + | |
| 970 | + | |
| 971 | + | |
| 972 | + | |
| 973 | + | |
| 974 | + | |
| 975 | + | |
| 976 | + | |
| 977 | + | |
| 978 | + | |
| 979 | + | |
| 980 | + | |
| 981 | + | |
| 982 | + | |
| 983 | + | |
| 984 | + | |
| 985 | + | |
| 986 | + | |
| 987 | + | |
| 988 | + | |
| 989 | + | |
| 990 | + | |
| 991 | + | |
| 992 | + | |
| 993 | + | |
| 994 | + | |
| 995 | + | |
| 996 | + | |
| 997 | + | |
| 998 | + | |
| 999 | + | |
| 1000 | + | |
| 1001 | + | |
| 1002 | + | |
| 1003 | + | |
| 1004 | + | |
| 1005 | + | |
| 1006 | + | |
| 1007 | + | |
| 1008 | + | |
| 1009 | + | |
| 1010 | + | |
| 1011 | + | |
| 1012 | + | |
| 1013 | + | |
| 1014 | + | |
| 1015 | + | |
| 1016 | + | |
| 1017 | + | |
| 1018 | + | |
| 1019 | + | |
917 | 1020 | | |
918 | 1021 | | |
0 commit comments