@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.
@@ -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
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@guiho/runx",
3
3
  "description": "A language-agnostic, documented command catalog and local CLI executor.",
4
- "version": "0.2.4",
4
+ "version": "0.2.5",
5
5
  "type": "module",
6
6
  "main": "./library/guiho-runx.js",
7
7
  "types": "./library/guiho-runx.d.ts",