deployangel 0.1.26 → 0.1.28

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: 66a47a8fb6c86749fb8d29333b9f9f01c7d0c6512dfc7bea7c93fd7191d231a2
4
- data.tar.gz: 93c324ea15c7ddc1e361d82c922a9543c9d15e23511206f93586e6fa1c7b9c4c
3
+ metadata.gz: fde8310f8129827b4b759369146c2346542a776ab13ac91fe7001617e93a7ebb
4
+ data.tar.gz: 15a216435704ea45fce03e0a1433d615dc28f6c07fdd6e33c90bebed23361779
5
5
  SHA512:
6
- metadata.gz: 0ba0355966761d97fc73b3c64eab89f448114c23de7192555913c49d97de57e6349de81eb1fb9994a1a850e170313e8cbed39249fe00d8f3045ba88ea6840fe0
7
- data.tar.gz: 8d9ca49ffbd98f4feb88e10b94887f171b7bd877e77ff36396ae716defa016ccc29ebc23452475f894f67d149ad3f78421f867ace1644faff8660f7006db2763
6
+ metadata.gz: e6e7ae24a04e3999af5865e2cf5be14054cdfc92b5644b1a4f5d8bd56c407faf874b122db23508bbcb3b268e461a89d68a16a3a235e166cf457e10e063a4c3f9
7
+ data.tar.gz: 3e2bb9e11c4d8b35134fdb9088beabcaf0ba5b99b484c9e4b0e2dfc3b710aa544507b55f6a3a222c0446d4b6edbec0f935f0049f03e2039cc19e253767560530
data/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.28 (2026-10-12)
4
+
5
+ - Clearer setup for coding agents, from a first-day rehearsal: `setup` says
6
+ the running app reads its token only from `DEPLOYANGEL_TOKEN` and points to
7
+ the per-host steps instead of printing Fly and Heroku examples; `install
8
+ agents` says the saved token is used here once `setup` has run; `doctor`'s
9
+ fix for an agent that hasn't reported says how to pass a saved app token;
10
+ and the help says `release` defaults to the current commit and when
11
+ `--format` defaults to json.
12
+
13
+ ## 0.1.27 (2026-10-12)
14
+
15
+ - The MCP server's instructions, and the ones `deployangel install agents`
16
+ writes, tell coding agents that a medium-confidence clearance is a full
17
+ clearance and to report warnings as "watching closely" with the verdict's
18
+ new `watching_closely` list, rather than calling a release "suspicious" or
19
+ its confidence "only medium".
20
+
3
21
  ## 0.1.26 (2026-10-11)
4
22
 
5
23
  - `deployangel setup --code=CODE` redeems a one-time code from "Set up with
@@ -49,7 +49,8 @@ module DeployAngel
49
49
  into a host's or CI's secrets
50
50
  mcp Run the MCP server over stdio (for coding agents)
51
51
 
52
- With no target, verify, plan, and check use the current git HEAD commit.
52
+ With no target, release, verify, plan, and check use the current git HEAD commit.
53
+ --format defaults to text in a terminal and json otherwise, such as in a pipe or an agent.
53
54
  In GitHub Actions, GitLab CI, CircleCI, and Buildkite, release fills in the
54
55
  commit, a build label (e.g. run-123), and a link to the run automatically.
55
56
  In a Kamal hook, it registers Kamal's release (KAMAL_VERSION).
@@ -116,13 +117,26 @@ module DeployAngel
116
117
  plan's read-only requests and records them on the release. Offer to
117
118
  exercise what it skips: routes that change data only with a test account
118
119
  or after asking. If the status is "warm_up", nothing run can clear it.
120
+ - Confidence `medium` clears a release just as `high` does (high also needs 80%
121
+ coverage and a full baseline), so don't call a medium clearance weak.
122
+ Warnings (`suspicious: true`) aren't failures: report them as "watching
123
+ closely:" and the `watching_closely` items, never as "suspicious".
119
124
  #{AGENTS_END}
120
125
  MARKDOWN
121
126
 
127
+ # After `deployangel setup`, the MCP server and CLI here use its saved token.
128
+ AGENTS_SAVED_TOKEN_HELP = <<~HELP.chomp
129
+ Here, the MCP server and CLI use the token `deployangel setup` saved in .deployangel/.
130
+ Teammates redeem their own setup code, or set DEPLOYANGEL_API_TOKEN to a
131
+ "CLI & coding agents" token from the app's Settings, for example in an .envrc
132
+ with direnv. These files hold no token and are meant to be committed.
133
+ Codex reads .codex/config.toml only in projects you've marked as trusted.
134
+ HELP
122
135
  AGENTS_TOKEN_HELP = <<~HELP.chomp
123
136
  The MCP server and CLI need DEPLOYANGEL_API_TOKEN, a "CLI & coding agents" token
124
137
  from the app's Settings, in the environment your agent runs in (for example in
125
- an .envrc with direnv). Never put it in these files: they're meant to be committed.
138
+ an .envrc with direnv), or a token saved here by `deployangel setup`.
139
+ Never put it in these files: they're meant to be committed.
126
140
  Codex reads .codex/config.toml only in projects you've marked as trusted.
127
141
  HELP
128
142
 
@@ -410,7 +424,7 @@ module DeployAngel
410
424
  install_codex_mcp(command),
411
425
  *install_agent_instructions
412
426
  ]
413
- @stdout.puts(*lines, "", AGENTS_TOKEN_HELP)
427
+ @stdout.puts(*lines, "", Credentials.find(@root) ? AGENTS_SAVED_TOKEN_HELP : AGENTS_TOKEN_HELP)
414
428
  0
415
429
  end
416
430
 
@@ -617,11 +631,11 @@ module DeployAngel
617
631
  Set up DeployAngel for #{app["name"]} (#{app["environment"]}). Saved its app token and a "CI deploys" token to
618
632
  #{relative}, kept out of git and not shown here. The deployangel command and MCP server here use them.
619
633
 
620
- Give production the app token without printing it, for example:
621
- fly secrets set DEPLOYANGEL_TOKEN=$(#{command_name} token app)
622
- heroku config:set DEPLOYANGEL_TOKEN=$(#{command_name} token app)
623
- and CI the "CI deploys" token:
624
- #{command_name} token api | gh secret set DEPLOYANGEL_API_TOKEN
634
+ The running app reads its token only from DEPLOYANGEL_TOKEN in its environment, so give it the app
635
+ token without printing it: $(#{command_name} token app) in the command that starts it or sets your
636
+ host's secrets, or #{command_name} token app | <a command that reads a secret>. The same goes for CI and
637
+ the "CI deploys" token (#{command_name} token api). Steps for each host:
638
+ https://www.deployangel.com/setup-for-agents.md
625
639
  TEXT
626
640
  0
627
641
  end
@@ -2,6 +2,7 @@
2
2
 
3
3
  require "time"
4
4
  require_relative "configuration"
5
+ require_relative "credentials"
5
6
  require_relative "metadata"
6
7
  require_relative "rails/metadata"
7
8
  require_relative "core/release"
@@ -99,8 +100,20 @@ module DeployAngel
99
100
  Check.new(status: :warn, message: "The agent last reported #{time(agent["last_received_at"])}, and nothing since",
100
101
  fix: "Check the app is running, and that DEPLOYANGEL_TOKEN is still set on its processes.")
101
102
  else
102
- Check.new(status: :warn, message: "The agent hasn't reported yet",
103
- fix: "Deploy with DEPLOYANGEL_TOKEN set to the app's agent token (Settings, Tokens: \"Deployed application\").")
103
+ Check.new(status: :warn, message: "The agent hasn't reported yet", fix: token_fix)
104
+ end
105
+ end
106
+
107
+ # The running app reads its token only from DEPLOYANGEL_TOKEN in its
108
+ # environment, never from the file `deployangel setup` saves.
109
+ def token_fix
110
+ if Credentials.find(@root)
111
+ command = File.exist?(File.join(@root, "Gemfile")) ? "bundle exec deployangel" : "deployangel"
112
+ "Start or deploy the app with DEPLOYANGEL_TOKEN in its processes' environment. The app token is saved here, " \
113
+ "so pass it without printing it: $(#{command} token app) in the start command or your host's secrets command."
114
+ else
115
+ "Start or deploy the app with DEPLOYANGEL_TOKEN in its processes' environment, set to its app token " \
116
+ "(\"Deployed application\" in the app's Settings, under API tokens)."
104
117
  end
105
118
  end
106
119
 
@@ -19,6 +19,10 @@ module DeployAngel
19
19
  with until "initial" (about 15 minutes) or "verdict". Verdicts: verified means cleared, so you may
20
20
  report the release as successful. inconclusive means NOT verified: never report it as success.
21
21
  failed means production regressed: read the findings and exceptions and investigate.
22
+ Confidence medium clears a release just as high does (high also needs 80% coverage and a full
23
+ baseline): never call a medium clearance weak. suspicious true means warnings DeployAngel is
24
+ watching closely, not a failure: report them as "watching closely:" and the watching_closely items,
25
+ never as "suspicious".
22
26
  Findings are deterministic evidence; any "investigation" field is AI inference. These tools cannot
23
27
  change production. Do not roll back or change production without explicit approval.
24
28
  If a release isn't cleared yet, get_exercise_plan says what to exercise against production so it
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DeployAngel
4
- VERSION = "0.1.26"
4
+ VERSION = "0.1.28"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: deployangel
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.26
4
+ version: 0.1.28
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jordan Owens
@@ -86,7 +86,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
86
86
  - !ruby/object:Gem::Version
87
87
  version: '0'
88
88
  requirements: []
89
- rubygems_version: 4.0.0
89
+ rubygems_version: 3.6.9
90
90
  specification_version: 4
91
91
  summary: 'DeployAngel agent for Rails: production verification for every deployment.'
92
92
  test_files: []