carson 4.3.4 → 4.3.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.
- checksums.yaml +4 -4
- data/RELEASE.md +17 -7
- data/VERSION +1 -1
- data/lib/carson/warehouse/workbench.rb +1 -1
- data/lib/cli.rb +9 -9
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f75abd3dbe087565ec4338de23c0b6ca0e5a3269dd217deebfd4e13653e9cc71
|
|
4
|
+
data.tar.gz: bdfd8b3c61839f93d1424d28b94d3314a1a6f07158b961e2a4f04cbcedf5f6de
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f90470bef8509ee72e7dfffc57463f7c6fcb10918ee3e4b9a5af72698302edfa7c4259971d23ff50225e63d2a5900fa05f8308b296c56316f88ae903ed5f276d
|
|
7
|
+
data.tar.gz: a115dd2f198afd4f014165588e476538137611aea3186599d539fb65ac7eccfc13f3fcd920e2786597ba0dec4ce7a1a2339d81af59158cd4337032c5c2e59990
|
data/RELEASE.md
CHANGED
|
@@ -7,33 +7,43 @@ Release-note scope rule:
|
|
|
7
7
|
|
|
8
8
|
## Unreleased
|
|
9
9
|
|
|
10
|
+
## 4.3.5
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- **Story language purged from CLI output.** `checkin`/`checkout` (#509) shipped after the story-language purge (#458) and used "workbench" in every user-facing string — help text, status messages, error messages. All 9 output strings now use technical language ("worktree"). Source-code names unchanged.
|
|
15
|
+
|
|
16
|
+
### New
|
|
17
|
+
|
|
18
|
+
- **Story-language guard test.** `test/story_language_guard_test.rb` scans all output-producing lines in `lib/` for forbidden story-language terms (workbench, warehouse, parcel, courier, bureau, waybill, vault). Strips `#{}` interpolation before checking. Catches future leaks mechanically — the purge is now a permanent rule, not a one-time pass.
|
|
19
|
+
|
|
10
20
|
### Removed
|
|
11
21
|
|
|
12
22
|
- **`carson audit` dissolved.** The audit command and its pre-commit gate have been removed entirely. Three of its seven checks were already enforced by the commands that need them (sealed workbench by `pack!`, working tree by Courier, main sync by `sync!`). The remaining four (PR status, CI baseline, hooks health, outsider fingerprints) were either unproven at commit time or already called by individual commands. Bare `carson` now defaults to `status` instead of `audit`. The pre-commit hook is now a no-op reserved for future use.
|
|
13
23
|
|
|
14
24
|
### Why
|
|
15
25
|
|
|
16
|
-
|
|
26
|
+
Story language in output has no mechanical enforcement — conventions fail on new code. The guard test closes that gap. Audit dissolution: audit was a remote-centred pre-commit gate; in local-centred mode it was dead weight.
|
|
17
27
|
|
|
18
28
|
## 4.3.4
|
|
19
29
|
|
|
20
|
-
###
|
|
30
|
+
### New
|
|
21
31
|
|
|
22
|
-
-
|
|
32
|
+
- **Empty parcel guard.** `carson deliver` refuses to deliver a branch with zero commits ahead of main. Previously, delivering an empty branch was a silent no-op — `git merge --ff-only` succeeded, Carson reported "merged into main", the courier synced to remote, and the workbench was destroyed. All edits that existed only in the working directory were lost. Now `Warehouse#prepare!` stamps each parcel with its origin (via `git merge-base`) and `Parcel#empty?` compares head to origin. An empty parcel blocks with: "Nothing to deliver — no commits ahead of main."
|
|
23
33
|
|
|
24
34
|
### Why
|
|
25
35
|
|
|
26
|
-
|
|
36
|
+
An agent edited four files in a worktree, ran `carson deliver` without committing, and lost all work. Carson merged a branch with zero commits ahead of main — a valid fast-forward, technically a no-op. The edits existed only in the working directory and were destroyed on workbench cleanup. The agent then wrote a confident delivery summary describing changes that did not exist on main.
|
|
27
37
|
|
|
28
38
|
## 4.3.3
|
|
29
39
|
|
|
30
|
-
###
|
|
40
|
+
### Fixed
|
|
31
41
|
|
|
32
|
-
-
|
|
42
|
+
- **`carson checkin` is 13× faster.** Removed two redundant `git fetch` calls that hit GitHub on every checkin. `checkin` now branches from local main — zero network, 0.7s instead of 9.4s. Local main is the standard; GitHub is a backup, not a gating dependency.
|
|
33
43
|
|
|
34
44
|
### Why
|
|
35
45
|
|
|
36
|
-
|
|
46
|
+
Local-centred mode means local main is the source of truth. Fetching from GitHub on every checkin was a remote-centred assumption baked into the command. The two sequential network round-trips accounted for 90% of the wall time.
|
|
37
47
|
|
|
38
48
|
## 4.3.2
|
|
39
49
|
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
4.3.
|
|
1
|
+
4.3.5
|
|
@@ -166,7 +166,7 @@ module Carson
|
|
|
166
166
|
tracking = seal_check.sealed_tracking_number || "unknown"
|
|
167
167
|
return { command: "checkout", status: "block",
|
|
168
168
|
name: File.basename( workbench.path ), branch: workbench.branch,
|
|
169
|
-
error: "
|
|
169
|
+
error: "worktree is sealed — PR ##{tracking} is still in flight",
|
|
170
170
|
recovery: "wait for CI checks to complete, or run carson deliver to check status" }
|
|
171
171
|
end
|
|
172
172
|
end
|
data/lib/cli.rb
CHANGED
|
@@ -134,7 +134,7 @@ module Carson
|
|
|
134
134
|
parser.separator "Keep agents from breaking main. Keep agents from breaking each other."
|
|
135
135
|
parser.separator ""
|
|
136
136
|
parser.separator "Agent workflow:"
|
|
137
|
-
parser.separator " checkin Get a fresh
|
|
137
|
+
parser.separator " checkin Get a fresh worktree"
|
|
138
138
|
parser.separator " deliver Accept into main and back up to remote"
|
|
139
139
|
parser.separator ""
|
|
140
140
|
parser.separator "Portfolio:"
|
|
@@ -528,15 +528,15 @@ module Carson
|
|
|
528
528
|
checkin_parser = OptionParser.new do |parser|
|
|
529
529
|
parser.banner = "Usage: carson checkin <name> [--json]"
|
|
530
530
|
parser.separator ""
|
|
531
|
-
parser.separator "Prepare a fresh
|
|
532
|
-
parser.separator "The
|
|
531
|
+
parser.separator "Prepare a fresh worktree from the latest main."
|
|
532
|
+
parser.separator "The name becomes the branch."
|
|
533
533
|
parser.separator ""
|
|
534
534
|
parser.separator "Options:"
|
|
535
535
|
parser.on( "--json", "Machine-readable JSON output" ) { options[ :json ] = true }
|
|
536
536
|
parser.separator ""
|
|
537
537
|
parser.separator "Examples:"
|
|
538
538
|
parser.separator " carson checkin feature-auth"
|
|
539
|
-
parser.separator " carson checkin oo/refactor-
|
|
539
|
+
parser.separator " carson checkin oo/refactor-auth"
|
|
540
540
|
end
|
|
541
541
|
checkin_parser.parse!( arguments )
|
|
542
542
|
name = arguments.shift.to_s.strip
|
|
@@ -560,7 +560,7 @@ module Carson
|
|
|
560
560
|
checkout_parser = OptionParser.new do |parser|
|
|
561
561
|
parser.banner = "Usage: carson checkout <name> [--json] [--force]"
|
|
562
562
|
parser.separator ""
|
|
563
|
-
parser.separator "Release a
|
|
563
|
+
parser.separator "Release a worktree when safe."
|
|
564
564
|
parser.separator "Removes the directory and local branch."
|
|
565
565
|
parser.separator ""
|
|
566
566
|
parser.separator "Options:"
|
|
@@ -569,7 +569,7 @@ module Carson
|
|
|
569
569
|
parser.separator ""
|
|
570
570
|
parser.separator "Examples:"
|
|
571
571
|
parser.separator " carson checkout feature-auth"
|
|
572
|
-
parser.separator " carson checkout oo/refactor-
|
|
572
|
+
parser.separator " carson checkout oo/refactor-auth --force"
|
|
573
573
|
end
|
|
574
574
|
checkout_parser.parse!( arguments )
|
|
575
575
|
name = arguments.shift.to_s.strip
|
|
@@ -1036,7 +1036,7 @@ module Carson
|
|
|
1036
1036
|
name = parsed.fetch( :workbench_name )
|
|
1037
1037
|
result = { command: "checkout", status: "error",
|
|
1038
1038
|
name: name,
|
|
1039
|
-
error: "#{name} is not a registered
|
|
1039
|
+
error: "#{name} is not a registered worktree",
|
|
1040
1040
|
recovery: "carson worktree list" }
|
|
1041
1041
|
return report_workbench( result: result, json: parsed.fetch( :json, false ), output: runtime.output )
|
|
1042
1042
|
end
|
|
@@ -1155,11 +1155,11 @@ module Carson
|
|
|
1155
1155
|
when "ok"
|
|
1156
1156
|
case result[ :command ]
|
|
1157
1157
|
when "checkin"
|
|
1158
|
-
output.puts "#{BADGE}
|
|
1158
|
+
output.puts "#{BADGE} Worktree ready: #{result[ :name ]}"
|
|
1159
1159
|
output.puts " path: #{result[ :path ]}"
|
|
1160
1160
|
output.puts " branch: #{result[ :branch ]}"
|
|
1161
1161
|
when "checkout"
|
|
1162
|
-
output.puts "#{BADGE}
|
|
1162
|
+
output.puts "#{BADGE} Worktree released: #{result[ :name ]}"
|
|
1163
1163
|
end
|
|
1164
1164
|
when "error"
|
|
1165
1165
|
output.puts "#{BADGE} #{result[ :error ]}"
|