Skip to content

T-009: Add GitHub Actions build badges#4

Closed
SuperInstance wants to merge 1 commit intomainfrom
superz/T-009
Closed

T-009: Add GitHub Actions build badges#4
SuperInstance wants to merge 1 commit intomainfrom
superz/T-009

Conversation

@SuperInstance
Copy link
Copy Markdown
Owner

@SuperInstance SuperInstance commented Apr 13, 2026

T-009: Add GitHub Actions build badges

Adds CI/build status badges to README.md for fleet visibility.

Badges added:

  • MIT License badge (no CI workflow found)

🤖 Auto-generated by Super Z (FLUX Fleet Greenhorn)


Staging: Open in Devin

Copy link
Copy Markdown

@beta-devin-ai-integration beta-devin-ai-integration Bot left a comment

Choose a reason for hiding this comment

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

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no bugs or issues to report.

Staging: Open in Devin

@SuperInstance
Copy link
Copy Markdown
Owner Author

Closing: superseded by merged work on main. The changes from this PR have been incorporated through other merged PRs. Thank you for the contribution! 🙏

Copy link
Copy Markdown

@beta-devin-ai-integration beta-devin-ai-integration Bot left a comment

Choose a reason for hiding this comment

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

Devin Review found 2 new potential issues.

🐛 2 issues in files not directly in the diff

🐛 ContextVersion restore fails silently because to_dict() includes semver key not accepted by dataclass constructor (flux_baton.py:1074-1075)

When snapshot() writes CONTEXT_VERSION.json via ctx_version.to_dict() (flux_baton.py:1247), the output dict includes a "semver" key (from to_dict() at flux_baton.py:631). When restore() reads this file and calls ContextVersion(**cv_data) (flux_baton.py:1075), the semver key is passed as a keyword argument, but ContextVersion is a dataclass with no semver field — it's a @property (flux_baton.py:585-587). This raises TypeError: __init__() got an unexpected keyword argument 'semver', which is silently swallowed by the bare except: pass. As a result, context version data is never actually restored across generations, completely breaking the context versioning feature for persisted state.


⚠️ GENERATION commit marker is no longer written last — HANDOFF_METRICS.json is written after it (flux_baton.py:1290-1305)

The baton's atomicity contract (documented in the module docstring at flux_baton.py:16 as "Atomic writes: GENERATION file is commit marker, written last") requires GENERATION to be the final write so that a reader never sees a new generation before all state is committed. In v3, HANDOFF_METRICS.json (Write 13, flux_baton.py:1303) is written after GENERATION (Write 12, flux_baton.py:1291). If the process crashes between these two writes, a restoring agent will see a new generation number but with stale/missing metrics data. The metrics write and the record_handoff() call should be moved before the GENERATION write to preserve the atomicity invariant.

View 6 additional findings in Devin Review.

Open in Devin Review (Beta)

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.

1 participant