Skip to content

fix(release): pin PSR past GitPython break so labels can ship to PyPI - #79

Merged
xergioalex merged 1 commit into
mainfrom
fix/auto-release-gitpython-psr
Aug 30, 2026
Merged

fix(release): pin PSR past GitPython break so labels can ship to PyPI#79
xergioalex merged 1 commit into
mainfrom
fix/auto-release-gitpython-psr

Conversation

@xergioalex

Copy link
Copy Markdown
Member

Summary

  • Unblocks Auto Release / PyPI after the labels merge (PR feat(cli): add label and featured commands #78): pin python-semantic-release>=10.6.2,<11 and GitPython!=3.1.60 so config load no longer crashes on the removed Actor.name_email_regex (run 33115288463, PSR #1476).
  • Document the failure mode and recovery (gh workflow run auto-release.yml --ref main) in docs/RELEASE_AND_DISTRIBUTION.md.
  • Expose a stable uuid on checkin create|config|show --json when the API only returns id, so label assign scripts match forms/workflows (found during local Labels E2E).

Test plan

  • Confirm auto-release.yml install step pins PSR ≥10.6.2 and excludes GitPython 3.1.60
  • pytest tests/checkin_authoring_test.py tests/authoring_helpers_test.py::TestAuthoringDisplay::test_checkin_created -q
  • After merge: gh workflow run auto-release.yml --ref main (or wait for the merge-triggered run) and verify a new v* tag + PyPI publish beyond 3.8.0
  • Optional local smoke: dailybot checkin create … --json → payload includes both id and uuid

Risks

  • Low: dependency pin only for CI release job; checkin --json adds a non-breaking alias field.

Made with Cursor

Auto Release for the labels merge failed because GitPython 3.1.60 removed
Actor.name_email_regex and python-semantic-release ≤10.6.1 crashed on
config load — no tag, no PyPI publish past v3.8.0. Pin PSR ≥10.6.2 and
exclude the broken GitPython wheel. Also expose uuid on checkin create/
config/show --json (API returns id) so label-assign scripts stay consistent.

Co-authored-by: Cursor <cursoragent@cursor.com>
@xergioalex xergioalex added the Ready Trigger AI code review label Aug 30, 2026
@github-actions

github-actions Bot commented Aug 30, 2026

Copy link
Copy Markdown

AI review for 6668665 — ✅ done

View review →

Highest severity: warning

Strictness gate: ✅ highest severity warning ≤ critical threshold

2 inline comment(s) attached.

Iteration-Aware Review: gen 1, round 1, policy=first-pass-exhaustive (first_review) — 2 surfaced.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Verdict

Solid unblocker for Auto Release / PyPI — the PSR ≥10.6.2 + GitPython!=3.1.60 pin matches upstream #1476, and the check-in --json uuid alias is a sensible non-breaking fix for Labels scripting. A couple of test/consistency gaps on the alias helper are worth tightening.

Findings

# Severity File Summary
1 ⚠️ warning dailybot_cli/commands/public_api_helpers.py:533 Preserve-uuid / followup_uuid-only branches and config/show --json wiring are untested
2 ℹ️ info dailybot_cli/display.py:1466 Reimplements _checkin_uuid with a different key priority

Notes

  • Release pin + recovery docs look correct; gh workflow run auto-release.yml --ref main after merge is the right recovery path for the stuck labels release.
  • Creating the uuid alias only when missing (never overwriting) is the right contract for Forms/Labels parity.
  • Human panel label ID:UUID: aligns print_checkin_created with check-in detail (already UUID:); machine consumers should keep using --json.

Recommendation

comment — ship the release pin; tighten alias test coverage when convenient (does not need to block unblocking PyPI).

Comment on lines +533 to +536
if not enriched.get("uuid"):
legacy_id: Any = enriched.get("id") or enriched.get("followup_uuid")
if legacy_id:
enriched["uuid"] = str(legacy_id)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Missing coverage for the non-trivial branches of this helper (and two of three call sites).

The only new test exercises checkin create --json when the payload has id and no uuid. That leaves untested:

  1. Preserve explicit uuid — the docstring promises never to overwrite; a regression that always copies iduuid would still pass the create test.
  2. followup_uuid-only payloads — the fallback used when id is absent.
  3. checkin config --json / checkin show --json — both call this helper in this PR, but neither asserts uuid (the existing show JSON test still only checks nested question fields).

Suggested additions (unit or CliRunner):

assert normalize_checkin_entity_json({"id": "a", "uuid": "b"})["uuid"] == "b"
assert normalize_checkin_entity_json({"followup_uuid": "fu"})["uuid"] == "fu"

plus a show/config --json assertion that payload["uuid"] is present when the API returns only id.

Comment thread dailybot_cli/display.py
Comment on lines +1465 to +1468
checkin_uuid: str = str(
checkin.get("uuid") or checkin.get("id") or checkin.get("followup_uuid") or ""
)
lines: list[str] = [f"[bold]{name}[/bold]", f"UUID: {checkin_uuid}"]

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

_checkin_uuid already exists a few hundred lines above with a different key order.

This block inlines uuid → id → followup_uuid, while _checkin_uuid (dailybot_cli/display.py ~813) uses uuid → followup_uuid → id. For create/config payloads that only have id the result matches; if a payload ever carries both id and followup_uuid with different values, create output and status tables would disagree.

Prefer reusing the helper so authoring and status stay consistent:

Suggested change
checkin_uuid: str = str(
checkin.get("uuid") or checkin.get("id") or checkin.get("followup_uuid") or ""
)
lines: list[str] = [f"[bold]{name}[/bold]", f"UUID: {checkin_uuid}"]
checkin_uuid: str = _checkin_uuid(checkin)
lines: list[str] = [f"[bold]{name}[/bold]", f"UUID: {checkin_uuid}"]

@github-actions github-actions Bot added the pr-reviewed Passed AI code review label Aug 30, 2026
@xergioalex
xergioalex merged commit 50bc734 into main Aug 30, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pr-reviewed Passed AI code review Ready Trigger AI code review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant