ace-git 0.31.0 → 0.32.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 83d5b624eab98d754e4bb770fdd1a80e00237d063bc07ba2b412e31cf0b4fa87
4
- data.tar.gz: 1e8a556aedb3f9ba844ebe46a7b3c64adea58b979842bf6df7835742057c20c1
3
+ metadata.gz: 93ab21fbc075387d07fecb5c99fa35e9b3fca1134828578fd9d23fff9a8fdc65
4
+ data.tar.gz: da9b32ec8ac46c10e9c1f7e648c26ba21003f04603b80a41b15cfa3705e52da4
5
5
  SHA512:
6
- metadata.gz: 8c33109eb792dea197dc9e29a9f63839ed10d53c95aa7e1817d22cbbe2cbecc51123f8fe90ad420a2e908b35a6aa1bbaef35612340bcd667ad21b5736dbdad49
7
- data.tar.gz: a2b337d9084ff29b01cd0834e2e9e9a3ef36299d0c0704bdad61480d844cd1a0165f1d4b9c482c5acf0feb29d0dc6aaa715e992dca1e2fa50d6abeb736e234f7
6
+ metadata.gz: 2f89ac9e97703d6f9fd2b7d65b58a14ee4e444cb7e67981a860927e11de387ce7600fa4bfe4e724978b9a29252f1b2ec67848eb76977e95e18ba3f1e84caa26a
7
+ data.tar.gz: aefa646c548c7fd820e539367cbbbc79569d71b44b484e7482c0ca3ef89249172bc1fdb89338f6c3e155026236d78d785e64521d478fe8bd354a44f5f780dae6
data/CHANGELOG.md CHANGED
@@ -5,7 +5,16 @@ All notable changes to ace-git will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
- ## [Unreleased]
8
+ ## [0.32.0] - 2026-10-30
9
+
10
+ ### Added
11
+
12
+ - `wfi://git/mirror-sync` (task 8xs.t.pu0.d): the repeatable host
13
+ mirror-sync operation — explicit source/target/ref, both full SHAs read
14
+ before acting, identity no-op, fast-forward only (`--force-with-lease`
15
+ with the read SHA), divergence escalated for reviewed reconciliation
16
+ (never reset/force/ref deletion), reversed-direction detection in the
17
+ plan, and a mutation-free dry-run.
9
18
 
10
19
  ## [0.31.0] - 2026-10-23
11
20
 
@@ -0,0 +1,84 @@
1
+ ---
2
+ name: git-mirror-sync
3
+ description: Repeatable host mirror-sync operation — explicit source/target/ref, both full SHAs read before acting, identity no-op, fast-forward only, divergence escalated for reviewed reconciliation
4
+ allowed-tools: Bash, Read
5
+ doc-type: workflow
6
+ title: Host Mirror Sync Workflow
7
+ purpose: Bind the host operator's forge-mirror sync as a repeatable, evidenced operation: never destructive, always checkable, with the actual source and target SHAs in the result.
8
+ ace-docs:
9
+ last-updated: '2026-10-30'
10
+ last-checked: '2026-10-30'
11
+ ---
12
+ # Host Mirror Sync Workflow
13
+
14
+ ## Goal
15
+
16
+ Synchronize an explicitly named target ref from an explicitly named source
17
+ ref (task 8xs.t.pu0.d — for this family: source `fg` Forgejo `cs3b/ace`,
18
+ target `origin` GitHub `cs3b/ace`) as a REPEATABLE host operation with a
19
+ checkable result. This is an ordinary Git workflow — no new script, no
20
+ hardcoded lab topology, no tool change; if a capability is missing it
21
+ belongs in ace-git's adapters.
22
+
23
+ ## Instructions
24
+
25
+ Run the loaded workflow as the source of truth and execute it end-to-end
26
+ instead of only summarizing it.
27
+
28
+ ### 1) Name the operation and read BOTH full SHAs first
29
+
30
+ Before ANY action, read and record the full SHAs of the exact source and
31
+ target refs. An operation without both SHAs is not runnable:
32
+
33
+ ```bash
34
+ git ls-remote fg refs/heads/main # source SHA (record it)
35
+ git ls-remote origin refs/heads/main # target SHA (record it)
36
+ ```
37
+
38
+ ### 2) Classify
39
+
40
+ - **Identity** (source SHA == target SHA): the sync is a NO-OP. Report both
41
+ SHAs and the result `identity`; do not touch anything.
42
+ - **Fast-forward** (target SHA is an ancestor of source): proceed.
43
+ - **Divergence** (neither of the above): STOP. Divergence needs its own
44
+ reviewed reconciliation decision — NEVER resolve it here with a reset,
45
+ force push, or ref deletion. Report both SHAs and the divergence; a
46
+ historical SHA (e.g. a recorded closeout base like `af68f8fc1…`) is INPUT
47
+ EVIDENCE for the review, never a SHA to impose unconditionally on the
48
+ live target.
49
+ - **Reversed direction** (the plan shows the target ahead of the source):
50
+ report it explicitly — a dry-run that names source and target swapped is
51
+ a caught error, not a sync.
52
+
53
+ ### 3) Execute (fast-forward only)
54
+
55
+ ```bash
56
+ git fetch fg main
57
+ git push origin <source-SHA>:refs/heads/main --force-with-lease=refs/heads/main:<target-SHA>
58
+ ```
59
+
60
+ `--force-with-lease` with the READ target SHA is the guard: if anything
61
+ moved the target between the read and the push, the push is REFUSED — the
62
+ operation restarts from step 1. Plain `--force` is forbidden.
63
+
64
+ ### 4) Verify and report
65
+
66
+ Re-read the target SHA; the result names the ref, the before/after SHAs of
67
+ BOTH sides, and the verification (`git ls-remote origin` equals the source
68
+ SHA). Repetition after success reports `identity` — the repeatable
69
+ operation is idempotent at the evidence level.
70
+
71
+ ### 5) Dry-run
72
+
73
+ The same classification with no mutation: report source/target/ref, both
74
+ SHAs, the planned action (no-op / fast-forward / divergence-blocked /
75
+ reversed), and NOTHING else changed.
76
+
77
+ ## Boundaries
78
+
79
+ - Never delete refs, never reset, never `--force` without a lease.
80
+ - Salvage branches, open HITL cases, and active resources on either side
81
+ are untouched by a mirror sync; an active resource conflicting with the
82
+ plan is reported as preserved with its reason.
83
+ - Closing a single Herdr pane remains a separate follow-up — never close a
84
+ whole tab as a substitute.
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Ace
4
4
  module Git
5
- VERSION = "0.31.0"
5
+ VERSION = "0.32.0"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ace-git
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.31.0
4
+ version: 0.32.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michal Czyz
8
8
  bindir: exe
9
9
  cert_chain: []
10
- date: 2026-10-23 00:00:00.000000000 Z
10
+ date: 2026-10-30 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: ace-support-config
@@ -133,6 +133,7 @@ files:
133
133
  - handbook/templates/pr/bugfix.template.md
134
134
  - handbook/templates/pr/default.template.md
135
135
  - handbook/templates/pr/feature.template.md
136
+ - handbook/workflow-instructions/git/mirror-sync.wf.md
136
137
  - handbook/workflow-instructions/git/pr/create.wf.md
137
138
  - handbook/workflow-instructions/git/pr/update.wf.md
138
139
  - handbook/workflow-instructions/git/rebase.wf.md