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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9a188fed6453dc86ca1da87766cf9e594e3eb8a92fccdc091fa6d9daeca57fcf
4
- data.tar.gz: a817693746cbd73a690c16de3f75e5e6b0ec6312d42a94f1cec0b02ed418ff89
3
+ metadata.gz: f75abd3dbe087565ec4338de23c0b6ca0e5a3269dd217deebfd4e13653e9cc71
4
+ data.tar.gz: bdfd8b3c61839f93d1424d28b94d3314a1a6f07158b961e2a4f04cbcedf5f6de
5
5
  SHA512:
6
- metadata.gz: cd7ce61eadfac8406738d2eb8bfaa15c18ec64fca01912e2e01866e91c362bec82b62708863fd6cffd8f7f1d7e3d55efd8240f911a141f29ec792af8e1d5341b
7
- data.tar.gz: 83c23c3de5d30229a718c393201a9f0af70c8a3336266baacc0ac891b771fd8f27a6d924baa84a098363e2cb121cbebdfed24cbfac758eb10236e265b959e1d9
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
- Audit was a remote-centred pre-commit gate it blocked commits based on delivery-time concerns (PR checks, CI baseline) that don't belong at commit time. In local-centred mode it was purely dead weight. Rather than relocate it to bureau, we verified that none of its unique checks had proven value at any gate, and dissolved the whole thing. Scars, not speculation.
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
- ### Fixed
30
+ ### New
21
31
 
22
- - **`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.
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
- 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.
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
- ### New
40
+ ### Fixed
31
41
 
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."
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
- 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.
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.4
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: "workbench is sealed — PR ##{tracking} is still in flight",
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 workbench"
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 workbench from the latest standard."
532
- parser.separator "The agent names the workbench — it becomes the branch."
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-courier"
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 workbench when safe."
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-courier --force"
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 workbench",
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} Workbench ready: #{result[ :name ]}"
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} Workbench released: #{result[ :name ]}"
1162
+ output.puts "#{BADGE} Worktree released: #{result[ :name ]}"
1163
1163
  end
1164
1164
  when "error"
1165
1165
  output.puts "#{BADGE} #{result[ :error ]}"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: carson
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.3.4
4
+ version: 4.3.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hailei Wang