User Story
As the framework maintainer (me2resh) or any adopter who wants to test pre-release framework changes on a separate machine before the release tag is cut, I want a hidden --from-dev flag on /update that pulls from upstream/dev instead of the latest tagged release, prints a "PRE-RELEASE — expect breakage; revert with X" banner, and otherwise reuses the existing /update conflict-resolution flow.
Acceptance Criteria
Skill
"Hidden" semantics
Safety
Tests
Docs
Design Notes
Why "hidden". The framework's adopter contract is "tagged releases from upstream/main", per the release-cut model (AgDR-0007). Adopters who pull from dev are signing up for breakage between releases — that's an opt-in behaviour, not a default. Making the flag discoverable via /help would invite adopters to use it casually, defeating the release-cut model's stability promise.
Why not a separate skill (/update-dev). Same conflict-resolution code path, same sync-branch convention, same merge gates. A separate skill duplicates 95% of /update's logic for a one-line flag-check difference. The flag-on-existing-skill shape is cheaper to maintain.
Why the banner is load-bearing. Without it, an operator who runs --from-dev once may forget the next time and assume they're on a stable release. The banner restates the deal every invocation.
Use cases that motivated this:
- me2resh testing v1.3 work on a separate machine before cutting the v1.3 release tag (exactly the trigger that filed this ticket)
- Adopters who want to validate that an upcoming framework change is safe for their stack before the wider rollout
- CI workflows that pin to dev for integration testing (rare, but legitimate)
Out of Scope
- Pulling from a specific tag that isn't the latest (could be a separate
--tag=<tag> flag if anyone asks)
- Pulling from a fork other than the configured
upstream (out of scope; configured upstream only)
- Auto-rollback if the merged dev commits cause test failures (operator's job to verify post-merge; the framework's
/update doesn't try-and-roll-back)
- Bringing
--from-dev parity to /release (release work always pulls tagged + cuts new tags; dev isn't a release source)
Effort Estimate
TBD — likely 0.5 day. Mostly a flag-check + a banner + adjusting the fetch target.
User Story
As the framework maintainer (me2resh) or any adopter who wants to test pre-release framework changes on a separate machine before the release tag is cut, I want a hidden
--from-devflag on/updatethat pulls fromupstream/devinstead of the latest tagged release, prints a "PRE-RELEASE — expect breakage; revert with X" banner, and otherwise reuses the existing/updateconflict-resolution flow.Acceptance Criteria
Skill
.claude/skills/update/SKILL.mdaccepts a new--from-devflag--from-devis passed:upstream/dev(not the latest tag)upstream/devchore/sync-upstream-devor similar; existing convention)--rebase) using the existing conflict-resolution flow--from-devis NOT passed: behaviour identical to today (pull tagged release fromupstream/main)"Hidden" semantics
descriptionfrontmatter (so/helpdoesn't surface it)## Options/## Usagesection near the bottom, so operators who read the spec find it/setupprompt offers the flag; adopters opt in by knowing the flag exists from the specSafety
--from-devdoes NOT bypass any existing safety in/update: still creates a sync branch (no direct push to main), still walks conflict resolution, still leaves the merge for the operator to pushTests
/updatetests (if any) still pass/update --from-dev --dry-runon a synthetic fork; assert: banner printed, commits previewed againstupstream/dev(notupstream/main), no state changesDocs
docs/multi-project.mdordocs/getting-started.md§ Upgrades gains a brief note: "Pre-release testing: use/update --from-devto pull unreleased changes from upstreamdevfor testing before a release tag is cut. Not a supported general-adopter path."Design Notes
Why "hidden". The framework's adopter contract is "tagged releases from
upstream/main", per the release-cut model (AgDR-0007). Adopters who pull fromdevare signing up for breakage between releases — that's an opt-in behaviour, not a default. Making the flag discoverable via/helpwould invite adopters to use it casually, defeating the release-cut model's stability promise.Why not a separate skill (
/update-dev). Same conflict-resolution code path, same sync-branch convention, same merge gates. A separate skill duplicates 95% of/update's logic for a one-line flag-check difference. The flag-on-existing-skill shape is cheaper to maintain.Why the banner is load-bearing. Without it, an operator who runs
--from-devonce may forget the next time and assume they're on a stable release. The banner restates the deal every invocation.Use cases that motivated this:
Out of Scope
--tag=<tag>flag if anyone asks)upstream(out of scope; configured upstream only)/updatedoesn't try-and-roll-back)--from-devparity to/release(release work always pulls tagged + cuts new tags; dev isn't a release source)Effort Estimate
TBD — likely 0.5 day. Mostly a flag-check + a banner + adjusting the fetch target.