Repository navigation
fix(skills): retire missing Workshop drafts safely - #141009
Conversation
|
🦞👀 Pull request received. I will update this pull request when review starts. ClawSweeper review completeClawSweeper finished reviewing this revision. The review result is being finalized. |
|
Codex review: blocked before merge. Reviewed September 7, 2026, 6:16 AM ET / 10:16 UTC. ClawSweeper reviewWhat this changesSkill Workshop identifies missing drafts, disables unavailable content actions, preserves unfinished recovery during dismissal, and lets Doctor retire unrecoverable proposals without resetting ownership-migration edit dates. Merge readiness⛔ Blocked before merge - 2 items remain This remains a useful fix absent from inspected current main. The prior correctness findings are addressed, and the updated body records acceptance of the recovery contract; no new blocking defect was found. Priority: P2 Review scores
Verification
How this fits togetherSkill Workshop stores proposed skill changes and presents them through the Gateway, agent tools, and Suggestions UI. Its recovery layer coordinates proposal metadata, draft files, and rollback evidence before installed skills can change. flowchart TD
A[Proposal metadata and draft files] --> B[Workshop availability check]
B --> C[Suggestions and agent tools]
C --> D[Revision guarded decisions]
A --> E[Doctor recovery]
E --> F{Rollback evidence exists}
F -->|Yes| G[Preserve pending recovery]
F -->|No draft or rollback| H[Mark proposal stale]
Before merge
Agent review detailsSecurityNone. PR surfaceSource +108, Tests +427, Docs +10. Total +545 across 20 files. View PR surface stats
Review metrics
Stored data modelPersistent data-model change detected: Merge-risk optionsMaintainer options:
Technical reviewBest possible solution: Retain the documented, accepted recovery policy with atomic dismissal guards, preserved installed content, and the demonstrated existing-state recovery behavior. Do we have a high-confidence way to reproduce the issue? Yes: removing a pending proposal's draft exposes the source-proven availability gap on inspected main; the body also reports a baseline compiled-runtime reproduction. This review did not execute that scenario. Is this the best way to solve the issue? Yes: the patch repairs availability and recovery at their existing owners, preserves full-bundle validation for content actions, and addresses the previous findings without introducing a parallel lifecycle. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning medium; reviewed against de844c19cc1e. LabelsLabel justifications:
EvidenceWhat I checked:
Likely related people:
Rating scale
Overall follows the weaker of proof and patch quality. Workflow
HistoryReview history (4 earlier review cycles)
|
|
Final-head CI triage for The six failed child jobs are unrelated to this patch. The actual tested merge is
The separate, non-required actionlint job never ran its linter or checkout: GitHub codeload returned HTTP 429 three times for the unchanged action pin introduced by #132921. No unrelated source, limits, workflow, dependency, or test budgets were changed. This PR's two attributable CI issues were fixed in |
|
landpr-approve-unrelated-red |
|
Landed as e3e2953f4b9a from reviewed head 137a324dc3b5, with Ayaan's attribution preserved. Proof: 103 focused owner/controller tests plus seven agent-tool checks passed. Independent compiled CLI/Gateway acceptance passed all four recovery clauses. Original UI/Doctor evidence remains bound to its recorded build; the follow-up build is
CI exception: CI was not green. The guarded dry run and merge validated the owner-approved exception for completed run 34109260887, attempt 1. Full causal evidence and exact base/merge comparisons were posted before merging.
The separate, non-required actionlint job stopped before checkout after GitHub returned HTTP 429 for the unchanged action pin from #132921. No unrelated code, limits, dependencies, or workflow policies were changed. The owned test Gateway and hosted Testbox are stopped. This landing does not deploy or run Doctor on production. |
Retire missing-draft suggestions through Doctor without deleting recovery evidence or installed skills. Preserve edit dates during ownership moves. Keep suggestion listing independent of support-file integrity while retaining full validation for Inspect and Apply. Refuse Reject and Quarantine during unfinished apply recovery, then allow normal decisions after recovery completes. Verified with focused regression tests and independent compiled CLI, Gateway, and retained UI/Doctor behavior evidence. Co-authored-by: Ayaan Zaidi <hi@obviy.us>
What Problem This Solves
Skill Workshop could show usable-looking suggestions whose drafts no longer existed. Ownership migration could also make old proposals appear newly edited, and dismissal could strand unfinished apply recovery.
Why This Change Was Made
Doctor marks missing drafts stale only when no rollback remains. Listing checks draft availability through the store owner, while Inspect and Apply still validate the full bundle. Reject and Quarantine check recovery within their state-change transaction. Ownership-only moves preserve edit time.
User Impact
Missing drafts show as unavailable with content actions disabled. Safe rejection remains possible; unfinished recovery must complete first. Restore the draft and use Inspect to finish recovery. Doctor repair preserves remaining files and installed skills. No schema or configuration change is added.
Consumers: proposal lists, Workshop actions, Doctor repair, and recovery dismissal share draft availability and recovery state.
Evidence
The original Doctor left missing drafts pending. Compiled UI/Gateway/Doctor checks verified retirement, rejection, valid siblings, preserved dates, and restart persistence. Follow-up checks preserved unfinished recovery and kept healthy suggestions visible despite damaged support files. Restored drafts completed recovery through Inspect. Doctor correctly refused during active Gateway maintenance ownership. Final mechanical test/lint fixes retain earlier proof.