@guiho/runx 0.2.4 → 0.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/decisions/decisions.xdocs.md +3 -0
- package/docs/decisions/mirror-automatic-push.md +84 -0
- package/docs/plans/mirror-automatic-push.md +77 -0
- package/docs/plans/plans.xdocs.md +3 -0
- package/docs/reviews/plans/mirror-automatic-push-review.md +57 -0
- package/docs/reviews/plans/plans.xdocs.md +3 -0
- package/package.json +1 -1
|
@@ -6,16 +6,19 @@ children: []
|
|
|
6
6
|
files:
|
|
7
7
|
alpha-boundaries.md: Captures accepted alpha scope, safety, distribution, and compatibility decisions.
|
|
8
8
|
citty-cli-migration.md: Defines the accepted full migration from handwritten parsing and routing to Citty.
|
|
9
|
+
mirror-automatic-push.md: Defines automatic Mirror release pushes with a synchronized protected-main gate.
|
|
9
10
|
npm-trusted-publishing.md: Defines the accepted npm OIDC publishing workflow and protected-branch patch-release trial.
|
|
10
11
|
documents:
|
|
11
12
|
alpha-boundaries.md: Decision record for RunX alpha boundaries.
|
|
12
13
|
citty-cli-migration.md: Decision record for the complete Citty CLI parser and router migration.
|
|
14
|
+
mirror-automatic-push.md: Accepted release-policy decision for Mirror push=true and protected delivery ordering.
|
|
13
15
|
npm-trusted-publishing.md: Decision record for GitHub Actions npm trusted publishing and the first automated patch release.
|
|
14
16
|
tags:
|
|
15
17
|
- decisions
|
|
16
18
|
keywords:
|
|
17
19
|
- runx
|
|
18
20
|
- decisions
|
|
21
|
+
- mirror push
|
|
19
22
|
flags: []
|
|
20
23
|
status: stable
|
|
21
24
|
---
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: RunX Mirror Automatic Release Push
|
|
3
|
+
purpose: Record the accepted policy that Mirror pushes RunX release commits and tags automatically.
|
|
4
|
+
description: Defines push=true, the synchronized-main precondition, protected GitHub delivery, failure behavior, and rollback boundary.
|
|
5
|
+
created: 2026-07-14
|
|
6
|
+
flags:
|
|
7
|
+
- accepted
|
|
8
|
+
tags:
|
|
9
|
+
- decisions
|
|
10
|
+
- release
|
|
11
|
+
- mirror
|
|
12
|
+
keywords:
|
|
13
|
+
- runx
|
|
14
|
+
- mirror push
|
|
15
|
+
- protected main
|
|
16
|
+
- release tags
|
|
17
|
+
owner: runx-decisions
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# RunX Mirror Automatic Release Push
|
|
21
|
+
|
|
22
|
+
## Status
|
|
23
|
+
|
|
24
|
+
Accepted by the repository owner on 2026-07-14.
|
|
25
|
+
|
|
26
|
+
## Context
|
|
27
|
+
|
|
28
|
+
RunX previously configured Mirror with `push = false`. Each release applied the
|
|
29
|
+
version commit and tag locally, then required separate branch delivery and tag
|
|
30
|
+
push commands. The owner wants RunX to match the automatic Mirror release flow
|
|
31
|
+
used by the related GUIHO repositories.
|
|
32
|
+
|
|
33
|
+
RunX also protects `main` and `@guiho/runx@*` tags. Automatic pushing must not
|
|
34
|
+
allow a release tag to reference a commit that has not reached protected
|
|
35
|
+
`main`.
|
|
36
|
+
|
|
37
|
+
## Decision
|
|
38
|
+
|
|
39
|
+
- Set `[git].push = true` in `mirror.config.toml`.
|
|
40
|
+
- Run future `mirror version apply` operations only from a clean, synchronized
|
|
41
|
+
local `main` whose HEAD equals `origin/main`.
|
|
42
|
+
- Complete implementation changes through protected pull requests before
|
|
43
|
+
applying Mirror.
|
|
44
|
+
- Treat `mirror version apply` as the single release mutation that writes the
|
|
45
|
+
version, commits, tags, and pushes the configured refs.
|
|
46
|
+
- Keep package publication behind the GitHub `production` environment approval
|
|
47
|
+
and npm OIDC trusted publishing.
|
|
48
|
+
|
|
49
|
+
## Alternatives Considered
|
|
50
|
+
|
|
51
|
+
- Keep `push = false`: rejected because it preserves the manual release step the
|
|
52
|
+
owner explicitly asked to remove.
|
|
53
|
+
- Pass `--push` per release: rejected because it makes release behavior depend
|
|
54
|
+
on operator memory instead of repository configuration.
|
|
55
|
+
- Apply Mirror on a release branch and merge later: rejected because the tag
|
|
56
|
+
could publish a commit before that commit is part of protected `main`.
|
|
57
|
+
|
|
58
|
+
## Consequences
|
|
59
|
+
|
|
60
|
+
- Successful Mirror applies will immediately push release refs and can trigger
|
|
61
|
+
the public Publish workflow.
|
|
62
|
+
- Operators must treat `mirror version apply` as an externally visible release,
|
|
63
|
+
not a local preparation step.
|
|
64
|
+
- The synchronized-main gate becomes mandatory; failures stop before apply.
|
|
65
|
+
- Existing GitHub rulesets, environment review, and OIDC remain the enforcement
|
|
66
|
+
layers for branch, tag, and package publication.
|
|
67
|
+
|
|
68
|
+
## Reversal Or Revisit Conditions
|
|
69
|
+
|
|
70
|
+
Return to `push = false` if Mirror cannot push through repository protections
|
|
71
|
+
reliably, if releases need a separate staging phase, or if automatic tag
|
|
72
|
+
publication creates unacceptable operational risk.
|
|
73
|
+
|
|
74
|
+
## Follow-up Work
|
|
75
|
+
|
|
76
|
+
- Update repository instructions and XDocs metadata.
|
|
77
|
+
- Validate resolved Mirror configuration and a read-only patch plan.
|
|
78
|
+
- Deliver the configuration through protected `main` without applying another
|
|
79
|
+
release.
|
|
80
|
+
|
|
81
|
+
## References
|
|
82
|
+
|
|
83
|
+
- [Citty CLI Migration Plan](../plans/citty-cli-migration.md)
|
|
84
|
+
- [npm Trusted Publishing Decision](npm-trusted-publishing.md)
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: RunX Mirror Automatic Push Plan
|
|
3
|
+
purpose: Execute the accepted push=true release policy through protected main without creating another release.
|
|
4
|
+
description: Sequences configuration, safety instructions, XDocs validation, protected delivery, and post-merge verification.
|
|
5
|
+
created: 2026-07-14
|
|
6
|
+
flags:
|
|
7
|
+
- approved
|
|
8
|
+
tags:
|
|
9
|
+
- plans
|
|
10
|
+
- release
|
|
11
|
+
- mirror
|
|
12
|
+
keywords:
|
|
13
|
+
- runx
|
|
14
|
+
- mirror push
|
|
15
|
+
- protected main
|
|
16
|
+
- configuration
|
|
17
|
+
owner: runx-plans
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# RunX Mirror Automatic Push Plan
|
|
21
|
+
|
|
22
|
+
## Source Decision
|
|
23
|
+
|
|
24
|
+
- [RunX Mirror Automatic Release Push](../decisions/mirror-automatic-push.md)
|
|
25
|
+
|
|
26
|
+
## Unit 1: Configure And Document Automatic Push
|
|
27
|
+
|
|
28
|
+
- Goal: Make automatic release pushing a repository-owned Mirror policy.
|
|
29
|
+
- Owner: RunX repository.
|
|
30
|
+
- Dependencies: Accepted automatic-push decision; `0.2.4` already applied and
|
|
31
|
+
pushed, so this change must not apply another version.
|
|
32
|
+
- Files:
|
|
33
|
+
- `mirror.config.toml`
|
|
34
|
+
- `AGENTS.md`
|
|
35
|
+
- `runx.xdocs.md`
|
|
36
|
+
- Data, auth, and cache: No application data, authentication, authorization, or
|
|
37
|
+
cache impact. GitHub credentials and rulesets remain external.
|
|
38
|
+
- Changes:
|
|
39
|
+
- Set `[git].push = true`.
|
|
40
|
+
- Require clean synchronized `main` before `mirror version apply`.
|
|
41
|
+
- Document that apply is an externally visible release mutation.
|
|
42
|
+
- Checks:
|
|
43
|
+
- `mirror config check`
|
|
44
|
+
- `mirror config show`
|
|
45
|
+
- `mirror version plan patch --format json`
|
|
46
|
+
- Verify the plan reports `pushEnabled: true` and next patch `0.2.5` without
|
|
47
|
+
applying it.
|
|
48
|
+
- Strict root XDocs metadata and doctor checks.
|
|
49
|
+
- Acceptance: The resolved config enables push; safety guidance prevents apply
|
|
50
|
+
from a feature branch or stale main; no version, commit, or tag is created by
|
|
51
|
+
validation.
|
|
52
|
+
- Stop conditions: Stop if Mirror cannot load the config, the read-only plan
|
|
53
|
+
mutates state, or the worktree contains unrelated changes.
|
|
54
|
+
|
|
55
|
+
## Unit 2: Deliver Through Protected Main
|
|
56
|
+
|
|
57
|
+
- Goal: Merge the configuration policy without bypassing required CI.
|
|
58
|
+
- Dependencies: Unit 1 complete and committed.
|
|
59
|
+
- Delivery:
|
|
60
|
+
- Push `codex/mirror-auto-push`.
|
|
61
|
+
- Open a ready pull request to `main`.
|
|
62
|
+
- Wait for required CI and merge through the repository ruleset.
|
|
63
|
+
- Synchronize local `main` and confirm `mirror config show` reports
|
|
64
|
+
`push: true`.
|
|
65
|
+
- Acceptance: `origin/main` owns the configuration and instructions; no new
|
|
66
|
+
release tag was created.
|
|
67
|
+
- Stop conditions: Stop on CI failure, unresolved protection failure, or an
|
|
68
|
+
unexpected version/tag mutation.
|
|
69
|
+
|
|
70
|
+
## TODO Alignment
|
|
71
|
+
|
|
72
|
+
This is a bounded owner-approved configuration change completed in one session;
|
|
73
|
+
it does not require a separate TODO entry.
|
|
74
|
+
|
|
75
|
+
## First Executable Unit
|
|
76
|
+
|
|
77
|
+
Unit 1: set and document the resolved Mirror automatic-push policy.
|
|
@@ -6,10 +6,12 @@ children: []
|
|
|
6
6
|
files:
|
|
7
7
|
alpha-implementation.md: Breaks the accepted alpha into implementation and validation units.
|
|
8
8
|
citty-cli-migration.md: Executes the full Citty command-tree migration, compatibility validation, protected delivery, and patch release.
|
|
9
|
+
mirror-automatic-push.md: Enables automatic Mirror release pushes with a synchronized protected-main safety gate.
|
|
9
10
|
npm-trusted-publishing-release.md: Sequences workflow implementation, protected delivery, Mirror patching, and public trusted-publishing verification.
|
|
10
11
|
documents:
|
|
11
12
|
alpha-implementation.md: Plan used for the initial RunX implementation.
|
|
12
13
|
citty-cli-migration.md: Active plan for replacing handwritten CLI parsing and routing with Citty and delivering its patch release.
|
|
14
|
+
mirror-automatic-push.md: Approved plan for configuring, validating, and merging Mirror push=true without applying another release.
|
|
13
15
|
npm-trusted-publishing-release.md: Approved executable plan for the RunX 0.2.1 trusted-publishing release trial.
|
|
14
16
|
tags:
|
|
15
17
|
- plans
|
|
@@ -17,6 +19,7 @@ keywords:
|
|
|
17
19
|
- runx
|
|
18
20
|
- implementation
|
|
19
21
|
- citty
|
|
22
|
+
- mirror push
|
|
20
23
|
flags: []
|
|
21
24
|
status: stable
|
|
22
25
|
---
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: RunX Mirror Automatic Push Plan Review
|
|
3
|
+
purpose: Verify that the automatic-push configuration plan is safe, bounded, and ready for execution.
|
|
4
|
+
description: Reviews synchronized-main safeguards, read-only validation, protected delivery, and release side effects.
|
|
5
|
+
created: 2026-07-14
|
|
6
|
+
flags:
|
|
7
|
+
- approved
|
|
8
|
+
tags:
|
|
9
|
+
- reviews
|
|
10
|
+
- plans
|
|
11
|
+
- release
|
|
12
|
+
keywords:
|
|
13
|
+
- runx
|
|
14
|
+
- mirror push
|
|
15
|
+
- plan review
|
|
16
|
+
- protected main
|
|
17
|
+
owner: runx-plan-reviews
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# RunX Mirror Automatic Push Plan Review
|
|
21
|
+
|
|
22
|
+
## Verdict
|
|
23
|
+
|
|
24
|
+
Ready for execution.
|
|
25
|
+
|
|
26
|
+
## Findings
|
|
27
|
+
|
|
28
|
+
- No blocker or high-severity findings remain.
|
|
29
|
+
- The clean, synchronized `main` precondition is explicit and prevents a
|
|
30
|
+
release tag from pointing at an unmerged feature or stale commit.
|
|
31
|
+
- Unit 1 uses only read-only Mirror validation and explicitly prohibits another
|
|
32
|
+
version apply, so the current `0.2.4` release remains unchanged.
|
|
33
|
+
- The plan documents that `push = true` makes every future Mirror apply an
|
|
34
|
+
externally visible release mutation.
|
|
35
|
+
- No application data, authentication, authorization, or cache behavior is
|
|
36
|
+
affected. GitHub credentials, rulesets, environment approval, and npm OIDC
|
|
37
|
+
remain external enforcement layers.
|
|
38
|
+
|
|
39
|
+
## Delivery Review
|
|
40
|
+
|
|
41
|
+
- The configuration change must pass the protected pull-request workflow
|
|
42
|
+
before reaching `main`.
|
|
43
|
+
- Post-merge verification checks the resolved configuration on synchronized
|
|
44
|
+
`main` and confirms that no `0.2.5` tag was created.
|
|
45
|
+
- A CI failure, protection failure, or unexpected version mutation is an
|
|
46
|
+
explicit stop condition.
|
|
47
|
+
|
|
48
|
+
## First Executable Unit
|
|
49
|
+
|
|
50
|
+
Execute Unit 1 in
|
|
51
|
+
[RunX Mirror Automatic Push Plan](../../plans/mirror-automatic-push.md): set and
|
|
52
|
+
document the resolved automatic-push policy without applying a release.
|
|
53
|
+
|
|
54
|
+
## References
|
|
55
|
+
|
|
56
|
+
- [RunX Mirror Automatic Push Plan](../../plans/mirror-automatic-push.md)
|
|
57
|
+
- [RunX Mirror Automatic Release Push](../../decisions/mirror-automatic-push.md)
|
|
@@ -5,9 +5,11 @@ parent: runx-reviews
|
|
|
5
5
|
children: []
|
|
6
6
|
files:
|
|
7
7
|
citty-cli-migration-review.md: Reviews completeness, compatibility, safety invariants, native packaging, and release sequencing for the Citty migration.
|
|
8
|
+
mirror-automatic-push-review.md: Reviews synchronized-main safeguards, read-only validation, protected delivery, and release side effects.
|
|
8
9
|
npm-trusted-publishing-release-review.md: Reviews sequencing, acceptance criteria, safety gates, and validation for the RunX 0.2.1 trusted-publishing plan.
|
|
9
10
|
documents:
|
|
10
11
|
citty-cli-migration-review.md: Ready-for-execution review of the full Citty CLI migration plan.
|
|
12
|
+
mirror-automatic-push-review.md: Ready-for-execution review of the Mirror automatic-push configuration plan.
|
|
11
13
|
npm-trusted-publishing-release-review.md: Ready-for-execution review of the npm trusted-publishing release plan.
|
|
12
14
|
tags:
|
|
13
15
|
- reviews
|
|
@@ -16,6 +18,7 @@ keywords:
|
|
|
16
18
|
- runx
|
|
17
19
|
- plan review
|
|
18
20
|
- citty
|
|
21
|
+
- mirror push
|
|
19
22
|
- trusted publishing
|
|
20
23
|
flags: []
|
|
21
24
|
status: stable
|
package/package.json
CHANGED