Skip to content

Track Pylon fork parity and upstream overlap #1

Description

@rynfar

This is the fork-side tracker for Pylon-specific Prime Agent integration work. The Pylon application-side umbrella is pylon-code/pylon#114.

Foundation

Pylon reliability and delivery sequence

Pylon consumes the installed package's public SDK and detached-daemon API as its primary connector. ACP remains a tested degraded fallback only where native daemon mode is unavailable or unsafe. The Pylon application checklist is pylon-code/pylon#114.

Prime issue #20 and the separate Comet correlated-turn consumer are not dependencies of Pylon provider parity. Preserve that work independently; do not serialize Pylon delivery behind it.

Parity sequence

  • Complete managed plan support for ACP behind a negotiated capability.
  • Expose the missing Prime background-process lifecycle needed by Pylon.
  • Add exact autonomous-run correlation and cancellation where Prime APIs are insufficient.
  • Support heartbeat and scheduled-run projection after Pylon owns occurrence, turn, and checkpoint semantics.

For each item, search current Prime issues, pull requests, releases, and source first. Choose adopt, hybridize, retain, or redesign; do not remove Pylon behavior merely because upstream adds an overlapping feature.

September10–12 first-class provider delivery — complete

The requested managed-publication path is shipped. PRs#55,#56,#58,#59,#60,#61 and#63 are merged. Cooperative migration/generation recovery resolved#53; corrected accepted-event cursor metadata shipped in#63 (65d9c0274). Both independent Linux/macOS audits verify205 publication tests,29 stress tests,all3034 crash cuts,and the actual16MiB maximum. Protected preview34680283818 and stable34684305605 succeeded; stable sequence2 is public, with an append-only withdrawal of affected stable1.

Pylon#496 and#521 are merged. Actual merged-Pylon artifact graduation passed33 with0failures/0skips; Pylon's stable update selected the corrected Native/Authenticated managed build. Final web and mobile ten-turn acceptance, including real supervised approval/denial, Stop, active server restart and follow-up, passed with retained identity, rotated ownership/recovery handle, ready completed checkpoints and zero busy owned native sessions after Stop. The final evidence checkpoint passed and owned test services were cleaned up.

Full scope, merged PRs, recordings, source binding and explicitly recorded limits.

This closes the September first-class delivery scope only. The other independent parity, automation and lifecycle items in this umbrella remain separately tracked.

Activity

  1. rynfar commented on Aug 29, 2026

    @rynfar
    Author

    Coordination item opened: #3 defines the cross-repository correlated_prompt_lifecycle_v1 contract for exact daemon prompt ownership, event attribution, scoped cancellation, reconnect reconciliation, and usage isolation.

    Implementation will use isolated branches after foundation PR #2 lands. The active foundation clone and the Pylon PR PrimeIntellect-ai#137 rebase remain untouched.

  2. rynfar commented on Aug 29, 2026

    @rynfar
    Author

    Foundation status after PR #2:

    The sync workflow is functioning correctly; #4 now owns the required human overlap decision and resolution branch.

  3. rynfar commented on Aug 29, 2026

    @rynfar
    Author

    Upstream integration landed:

    Remaining foundation work is limited to PR-token credentials, final branch/check policy, the inherited Linear workflow decision, and release naming/signing/provenance. Issue #3 remains owned by its coordinating agent.

  4. self-assigned this
    on Aug 29, 2026
  5. rynfar commented on Aug 29, 2026

    @rynfar
    Author

    Fork operations checkpoint:

    • pylon now requires strict GitHub Actions checks build-check-test and Check changelog fragment, conversation resolution, and PRs. Admin enforcement is on. Formal approvals are zero while rynfar is the only eligible reviewer; the count must return to one when a second reviewer exists.
    • PR chore(pylon): disable inherited upstream workflows #6 removes the inherited Linear and release workflows from the default product branch and documents the reviewed workflow inventory and singleton protection. Both independent audits found no blocker; fresh hosted checks are running on 843891d30c61b67c08fa38b011461afaba1ffce0.
    • An Actions-only main ruleset was rejected by GitHub because the built-in Actions integration cannot be a repository ruleset bypass actor. The safe fork-native fallback is viable: POST /repos/pylon-code/prime-agent/merge-upstream for branch main returned merge_type: none at the exact synced head. A follow-up will switch the sync script to that API before locking main with fork syncing enabled.
    • Release audit confirms no releases, environments, repository secrets, or variables exist. Removing the inherited workflow is necessary but not sufficient; local publish commands, foreign npm package names, tag controls, and provenance remain release blockers.
    • The optional custom PR token remains unset. Candidate-ready issues are the current fail-safe path; automatic draft PR credentials need a separate least-privilege decision.

    Issue #3 remains untouched and independently owned.

  6. rynfar commented on Aug 29, 2026

    @rynfar
    Author

    The focused fork-sync hardening is now in PR #7: #7

    Reviewed head: fdf44c4acad2ba139c037f09357eb0ae852f26c6.

    The change removes direct main pushes and the optional privileged-token path, gates GitHub fork synchronization behind an exact fail-closed repository ruleset, verifies exact post-sync mirror identity, and makes review candidates and their CI evidence deterministic. Two independent final reviews found no code blockers.

    Rollout remains intentionally separate from the code change. After PR #7 lands and its workflow definition is trusted on pylon, maintainers must enable squash merging, provision and externally audit the zero-bypass exact-main ruleset, remove the superseded classic protection, then validate a real manual sync before calling main locked. Until provisioning, the new workflow will fail closed.

  7. rynfar commented on Aug 29, 2026

    @rynfar
    Author

    The next parity candidate is now in coordinated unmerged PRs:

    This hybridizes Prime's existing queue/background primitives behind an explicitly negotiated ownership, delivery, provenance, cancellation, usage, and recovery contract. The decision and upstream overlap are recorded in .pylon/features.yaml and .pylon/upstream-review.md.

    This does not expose heartbeat creation or scheduled-run projection. Those remain separate until Pylon owns occurrence, turn, checkpoint, clear, stop, and deletion semantics. Both PRs remain unmerged pending hosted checks and maintainer approval.

  8. rynfar commented on Aug 29, 2026

    @rynfar
    Author

    The coordinated lifecycle work has merged:

    The optional correlated prompt contract and conservative stock-Prime admission fallback are now landed. Heartbeat creation, autonomous occurrence projection, and scheduled-run checkpoint ownership remain separate parity items; this tracker stays open.

  9. rynfar commented on Aug 29, 2026

    @rynfar
    Author

    Comet has joined this cross-repository Prime Agent work through its own umbrella issue: rynfar/comet#1

    The Comet repository policy is merged in rynfar/comet@b520992. It makes the native daemon the primary integration path and requires cross-linked issues, isolated worktrees, capability negotiation, private host-local state, two-consumer compatibility review, and recorded merge order.

    Any Comet dependency on a Prime fork contract will be linked here before implementation or merge. No fork change is requested by this comment.

  10. rynfar commented on Aug 30, 2026

    @rynfar
    Author

    Comet's reviewed native-daemon foundation is now open: rynfar/comet#4

    It validates the public Prime package/SDK and stock protocol-v7 capability baseline, owns a stable private daemon lifecycle, and records optional capabilities only as server offers. Stock Prime Agent 0.8.1 passes the real load/connect/shutdown smoke without the correlated-lifecycle extension.

    This PR makes no Prime changes and starts no sessions. Comet's next asynchronous session-host slice remains blocked on #13 for bounded SDK ingress and must separately consume the recovery/correctness outcomes from #8 and #11. Final Comet receipts are at rynfar/comet#3 (comment).

  11. rynfar commented on Aug 30, 2026

    @rynfar
    Author

    Dependency milestone: correlated lifecycle follow-up merged

    Prime Agent PR #12 merged into pylon as f728316dabbaa85aa561e6d6b08550ed337574be after exact-head maintainer approval, all hosted checks, two independent rereviews, and a repaired recovered-tail persistence blocker.

    The merged contract now preserves correlated ownership through post-compaction continuation, rejects correlated queued-payload replacement, keeps unrelated events uncorrelated, and fails closed when real event persistence fails even if a later agent_end recovers the shared queue.

    The safe dependency order advances to #11. Its existing dirty worktree is under a collision-avoidance hold until the owner checkpoints and records a formal issue claim. The old #8 upstream candidate remains stale. Required order: finish/review #11, regenerate/review #8 from the resulting exact pylon, then implement #13 bounded public daemon ingress, then Comet #5.

  12. rynfar commented on Aug 30, 2026

    @rynfar
    Author

    Dependency milestone: Prime #11 is closed via merged PR #14 at fd5cadc600f867a0a5a989064cce22934e9dad94.

    The merge commit has exact parents f728316dabbaa85aa561e6d6b08550ed337574be and c5a34dffcd44eaaa4d66ea43786d19260a10e7f2, and its tree equals the reviewed head tree. Final hosted checks, three independent production reviews, two independent CI-repair diagnoses, exact upstream synthetic review, zero-thread audit, and exact-head maintainer approval all passed.

    Next gate is a fresh #8 upstream candidate from this exact post-#11 pylon. Regeneration is claimed on branch sync/prime-upstream-a903-from-fd5cadc / isolated worktree /Users/rynfar/.prime/worktrees/prime-upstream-a903-from-fd5cadc against Prime a903d4b6768f484bd6d459b7b0aa7dee38e461e2. The old a37efe92f candidate is discarded. #13 and rynfar/comet#5 remain downstream.

  13. rynfar commented on Aug 30, 2026

    @rynfar
    Author

    Prime upstream governance gate #8 is complete. PR #15 merged as e7871eb699d0f65047a21d179216ebfec7755d0c after exact-head reviews, zero conversations, and all trusted hosted jobs passed.

    Bounded public ingress Prime #13 is now claimed from exact merged pylon at e7871eb699d0f65047a21d179216ebfec7755d0c in an isolated worktree. The declared client-local feature proof/raw-byte limit/error/reconnect contract is under the final joint Prime/Comet design review before source edits.

    Dependency order is now: #15/#8 (done) → #13 (active) → Comet #5.

  14. rynfar commented on Aug 30, 2026

    @rynfar
    Author

    Prime bounded-ingress candidate is now ready as PR #16 at exact head 9013a63a76fa339b5e2898947e9cff040505d72c / tree 814cfa93bfdbab0d43acaa92c208205fd7dd5749 on base e7871eb699d0f65047a21d179216ebfec7755d0c.

    Three commit-bound reviews approved with no P0/P1: transport security, API/resource/governance, and Comet consumer compatibility. Local validation includes 53 focused tests, 13 real-process passes with 8 fixture skips, both stock/current 0.8.1 adoption directions, the 36 MiB indivisible message, deterministic 100/500 MiB bounded-client reconstruction, and exact 64/128 MiB resource probes.

    Trusted exact-head hosted CI is running. Comet #5 remains blocked until PR #16 passes CI, has no unresolved conversations, receives exact head/base maintainer approval, and merges into pylon.

  15. rynfar commented on Aug 30, 2026

    @rynfar
    Author

    Prime bounded public daemon ingress PR #16 passed trusted hosted CI and merged as 7238ac8cff25962ada9ffe4530b7d4d1cddc1b47 (parents e7871eb699d0f65047a21d179216ebfec7755d0c + 9013a63a76fa339b5e2898947e9cff040505d72c, tree 814cfa93bfdbab0d43acaa92c208205fd7dd5749). Prime #13 is closed.

    Comet #5 has now been claimed from origin/main@de66c08c3687208effe2e2fdb514d6d690f1cc0a on feat/prime-session-host-7238 in an isolated worktree. It will require the exact public-root bounded_daemon_ingress_v1 token and construct DaemonClient with a 64 MiB inbound frame limit under an isolated 512 MiB V8 heap. No production session path will accept stock 0.8.1 or infer support from versions, schemas, methods, constructor arity, or daemon offers.

  16. rynfar commented on Aug 30, 2026

    @rynfar
    Author

    Comet consumer update: rynfar/comet PR #6 merged as 9ef2295877d33fe241479471e908105fccbeb434 using the exact reviewed Prime dependency 7238ac8cff25962ada9ffe4530b7d4d1cddc1b47 and branded artifact SHA d6065af7b7eb0bf8bb945d84618c4d06fecea66cf3d07ed75737310b447913cc.

    The merged Comet tree now capability-gates bounded_daemon_ingress_v1, client_owned_sessions, chunked_snapshot, immutable_snapshot_transfer_v1, and authoritative_owned_session_cleanup_v1; creates/attaches only its own fresh draft; and proves authoritative cleanup without exposing native identities. Exact stock 0.8.1 fails before session client construction. Three commit-bound reviews and hosted x86/ARM/macOS builds passed.

    Next consumer slice: a separately reviewed bounded correlated_prompt_lifecycle_v1 prompt/event contract. It will not infer negotiation from method presence or server offers, and it will precede Comet Harness/registry/UI exposure.

  17. rynfar commented on Aug 30, 2026

    @rynfar
    Author

    Prime #20 now tracks the nonpersistent-worker capability needed by rynfar/comet#7. Review of the merged correlated lifecycle found that worker recovery journals persist lifecycle correlation IDs. The new slice leaves ordinary recovery unchanged and adds an exact fresh-create proof for consumers that forbid persistence.

  18. rynfar commented on Aug 31, 2026

    @rynfar
    Author

    Opened #22 as the umbrella for Meridian provider reliability (concurrent RLM subagents over Claude Max), with focused slices #23 (stable child-scoped provider identity), #24 (kind-aware retry / Retry-After / dead maxRetryDelayMs), #25 (requestAbort cascade to RLM children), #26 (prompt-cache prefix stability). Root causes verified in-source with Meridian telemetry evidence; details in #22. This work is independent of the snapshot/daemon slices tracked here — flagging it so concurrent fork agents don't collide on packages/coding-agent core seams (#23 and #25 touch agent-session.ts).

  19. rynfar commented on Aug 31, 2026

    @rynfar
    Author

    Pylon background-writing parity is now implemented in draft pylon-code/pylon#201 at exact head 0ce5a304b44f8db3ee395413ed51ba674a09906a (Pylon PrimeIntellect-ai#198). It imports only the selected Prime installation’s public SDK entry in an isolated helper, preserves account/model affinity, and covers ACP/native interactive configurations without a Prime fork change. Local checks are green; hosted native/package smokes are running.

  20. rynfar commented on Aug 31, 2026

    @rynfar
    Author

    Milestone update: Prime caller-owned session contract PR #37 is fully green at d83903f4dc9e649317e49862fcf676a02fc6d3f8, including hosted Windows named-pipe coverage. It awaits exact-head maintainer approval and merge. This unblocks Pylon PrimeIntellect-ai#199 implementation only after merge; native multi-instance advertising, Windows native trust, and restart adoption remain gated as documented.

    Independent work has started on Pylon PrimeIntellect-ai#200 PR 1 (rollback P0 truth/safety gate) only; no Prime leaf rollback or durable saga work is being combined with it.

  21. rynfar commented on Aug 31, 2026

    @rynfar
    Author

    Publication audit update: Prime #29 has a file-level protected preview/stable design, but implementation correctly remains blocked on merging deterministic artifact PR #32. The audit also found that protected Check changelog fragment currently has no exact merged-pylon SHA result because it runs only on PRs; #29 must add a canonical push proof before stable admission can truthfully require every branch-protection context. Admin prerequisites (immutable releases and guarded preview/stable environments) remain absent and must exist before #29 merges. No publication setting or repository file was changed by the audit.

  22. rynfar commented on Aug 31, 2026

    @rynfar
    Author

    Parity milestone: environment contract and deterministic fork artifacts landed

    Merged in dependency order:

    The exact #32 artifact head passed byte-for-byte reproducibility, public package/bin identity, current caller-owned negotiation/proof/disposal, POSIX native daemon smoke, explicit Windows ACP fallback, and all hosted platform gates.

    Protected publication (#29) is now being implemented from the merged #32 base. No environment, setting, tag, release, deployment, attestation, or publication has been created yet. Immutable preview/stable publication remains a required maintainer gate before Pylon can install or update this fork artifact.

    Rollback work was deliberately reset after three adversarial reviews found P0 races and false absolute-provider claims in the uncommitted saga draft. The replacement PR1 only classifies relative/unsupported capability, disables every production rollback surface, and fails before any filesystem/provider/projection mutation. Exact anchors, canonical writer fencing, postcondition proof, restart recovery, compensation, and repair UX remain separate follow-ups; no unsafe rollback code was pushed.

    Next dependency order remains: #29 protected publication → Pylon managed install/update (PrimeIntellect-ai#193/PrimeIntellect-ai#194) → Prime #27/Pylon #84 restart adoption → Pylon PrimeIntellect-ai#199 multi-instance phases → coordinated rollback follow-ups → Windows native-security decision and the full graduation matrix. Comet and dirty Prime #20 remain excluded and untouched.

  23. rynfar commented on Aug 31, 2026

    @rynfar
    Author

    Parity milestone: rollback truth gate landed; protected publication is in review

    • Pylon #220 merged as b4e61a32750590d1be625ce2d4cf5af70264c881. Every production provider now fails closed for coordinated rollback, the unsupported web control is hidden, mobile remains without an entry point, and requests are rejected before filesystem/provider/ref/projection mutation. Exact rollback remains intentionally disabled pending the durable saga and Prime leaf-anchor phases.
    • Prime publication is draft PR #42. Immutable Releases, repository-wide full-SHA action enforcement, preview/stable reviewer environments, the upstream-sync reviewer environment, and no-bypass publication tag permanence are configured and read back.
    • Adversarial review correctly kept feat(release): add protected Pylon publication #42 in draft. The amendment now owns persistent consumer high-water state, signed existing-history admission, approval-before-attestation, durable pre-CAS drafts and post-CAS sequence recovery, older-recipe rollback, and gating every repository contents-write workflow. No tag, release, deployment, or attestation exists.
    • Pylon condense ipython tool calls into a single-line summary PrimeIntellect-ai/prime-agent#193 distribution-verification and Prime Add capability-gated adoption for disconnected client-owned sessions #27 restart-adoption audits are running in parallel. Managed install/update, restart adoption, multi-instance enablement, exact rollback, and the complete graduation matrix remain open.
  24. rynfar commented on Sep 11, 2026

    @rynfar
    Author

    Prime 0.9.4 integration landed through merge PR #55 (8069dbd67ad1e7863dc56072a9c56ba0ab6066b9), preserving the frozen upstream 1eee2938b4eeb7a4d72e17035adda669a89b63de ancestry. The reviewed tree includes native worker replay, recovery-owned reconnect requests, and acknowledgment-before-cleanup with safe failed-journal retry. All final CI checks passed, including Windows named pipe, process smoke, reproducible packs, and macOS/Linux artifact installs.

    Private final-build verification passed: four SDK features, recoverable adoption capability, all 10 release-contract tests, native first/follow-up turns, denied and approved writes, and Stop. Manual restart reports an explicit interruption and preserves ownership quarantine; managed continuation remains a publication acceptance requirement. Browser evidence and video.

    The original sync workflow succeeded on the exact current merge (run34570563183); #44 and the stale candidate issue #39 are closed. No additional maintainer credential fallback was used. The preview publication triggered by the merge was canceled before publication because #53 is still in progress.

    Publication group4 migration implementation and its protected old-client tests are underway. Group5 crash/stress, final macOS/Linux maximum tests, three final independent reviews, and guarded preview/stable publication remain required. Nothing has been released yet.

    Model: GPT-6 Astra. Harness: Codex in Pylon.

  25. rynfar commented on Sep 14, 2026

    @rynfar
    Author

    September 14 Pylon/Prime review checkpoint

    Pylon #548 is merged as a1efaf3ec44480fe53ba6f24a5b93a1220c152fe after adversarial review and green CI. The review checked the native constructor, valid session/prompt provenance, malformed/foreign custom messages, identity changes, and private-content exclusion. The implementation's 524 focused tests and server typecheck passed; no production update was performed.

    The broader source review found a separate, reproducible current-build gap: Pylon #550. Managed Prime emits refinement_notice as well as refinement_outcome; the former is still rejected by Pylon's decoder. Fix that and audit native message coverage first. PrimeIntellect-ai#548 is a narrow outcome-message fix, not completion of the entire refinement compatibility audit.

    Review range: the ledger's last integrated upstream 1eee2938b4eeb7a4d72e17035adda669a89b63de through freshly fetched upstream cfb2d3fe35c7c23cf6678ec235412b0d3f286fae (71 commits). Prime product remains 65d9c0274866f1bacb3959a16718718d102ee593. The mirror/candidate in #57 ends at fb2db8ee1b61c69d53a84404e617bc74d6f205c9, 69 commits behind this review head. This is triage plus source inspection of relevant integration changes, not an integration-test certification or approval to bulk merge.

    Recommended order:

    Priority Upstream changes Pylon relevance and proposed handling
    First reliability batch #2213, #2151, #2314 Adopt candidates: kernel stdin/stdout error listeners prevent EPIPE from crashing the worker; waitForIdle parks whenever the input pump is blocked instead of spinning; Codex retries a stale previous_response_id once with full context before any output. Current product source lacks these fixes. Preserve cancellation and one terminal settlement. Run kernel pipe/shutdown, session queue, and Codex stream regressions.
    Context and maintenance correctness #2217, #2226, #2220 Retain tool-output tails and kernel edit paths in summaries; route refinement through a configured usable auxiliary model to reduce prompt-cache eviction. Hybridize auxiliary routing with the fork's scoped provider hooks/session identity; verify fallback authentication. Run compaction serialization/file-ops and refinement auxiliary-model tests.
    Model restoration and catalog latency #2313, #2299, #2229 Avoid premature saved-model fallback and transcript scans blocking roster/worker access. Review bounded readiness and metadata caching together; verify session identity and model selection after managed restart.
    Goals and autonomous turns #2215, #2224, #2284 Preserve accounting across compaction, refresh queued continuation budgets at delivery, and hold autonomous continuations while children run. Hybridize with Pylon's occurrence/turn ownership; do not imply unsupported automation is enabled.
    Separate ownership/recovery review #2260, #2242, #2246, #2276 Snapshot caching/deferred events, persistent SupervisorLink, orphan-worker GC, and session append optimizations touch fork-critical boundaries. Hybridize; preserve immutable bounded snapshots, attachment generations, per-event recovery cursors, authenticated ownership, cleanup receipts and durable ordering. Require focused real-daemon/managed-artifact integration gates before merge.

    Existing #64–#68 remain relevant: background completion notice deduplication, OpenCode maintenance identity, Prime CLI auth isolation, compiled installation/update/rollback, and Grok subscription login. The new macOS signing fix #2265 belongs with #67's packaging decision.

    Additional deliberate decisions: #2280 adds bounded quota waiting (default up to 15 minutes) and an optional backup model; review projected waiting/cancellation and model identity before enabling it. #2256's service catalog/generic MCP overlaps Pylon MCP ownership; retain current behavior pending a maintainer decision. Harness relevance ranking (PrimeIntellect-ai#2241), typed child collection (PrimeIntellect-ai#2223/PrimeIntellect-ai#2307), model option/selector fixes (PrimeIntellect-ai#2309/PrimeIntellect-ai#2308), extension timers (PrimeIntellect-ai#2095), and the destructive-git guard (PrimeIntellect-ai#2275) are secondary candidates requiring scoped review. TUI layout/keybinding, onboarding, benchmark and upstream publication automation changes are not Pylon app feature gaps and should not drive this reliability batch.

    No Prime source, live userdata, managed installation or release was changed. The frozen adoption ledger remains at the last actually integrated upstream head. Next implementation should record per-feature adopt/hybridize/retain decisions and publish a new immutable managed artifact only after the existing consumer gates pass.

  26. rynfar commented on Sep 22, 2026

    @rynfar
    Author

    Upstream Catch-Up Triage: Post-v0.9.4 (cfb2d3fe3..18a56bf35 and Sept 14 items)

    Following review of the 72 upstream commits from cfb2d3fe35c7c23cf6678ec235412b0d3f286fae to 18a56bf3557063c0cd0be12f99f0bcce2a46da32 (including release v0.9.5 a7d791bc1) and open Sept 14 triage items, the ledger (.pylon/upstream-review.md) and feature inventory (.pylon/features.yaml) have been updated.

    The merge-base and complete integration checkpoint remain frozen at v0.9.4 1eee2938b4eeb7a4d72e17035adda669a89b63de. Selective adoption does not advance the full integration checkpoint.

    Phase 1: Fork Reliability Batch (In Progress)

    Excluded / Deferred from Batch (Snapshot/Catalog/Supervisor Invariant Protection)

    Phase 2 Follow-ups & Maintainer Decisions

    Independent adversarial review checkpoint 1 completed and incorporated.

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

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions