@atollhq/skill-codex 0.4.31 → 0.4.33

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atollhq/skill-codex",
3
- "version": "0.4.31",
3
+ "version": "0.4.33",
4
4
  "description": "Install the Atoll project management integration for Codex CLI",
5
5
  "bin": {
6
6
  "skill-codex": "bin/install.mjs"
@@ -18,7 +18,7 @@
18
18
  ],
19
19
  "repository": {
20
20
  "type": "git",
21
- "url": "git+https://github.com/atollhq/atoll.git",
21
+ "url": "git+https://github.com/antons-agents/atoll.git",
22
22
  "directory": "packages/skill-codex"
23
23
  },
24
24
  "dependencies": {
package/skill/SKILL.md CHANGED
@@ -36,6 +36,8 @@ Read only the references required for the current task:
36
36
  [integrations-and-api.md](references/integrations-and-api.md)
37
37
  - GitHub pull-request delivery context, required checks, and exact-head evidence:
38
38
  [api-fields.md](references/api-fields.md#external-operational-delivery-context)
39
+ A `plan_restricted` required-check error is actionable plan-unavailable
40
+ evidence; keep configured workflows separate because they remain `required: false`.
39
41
  - Cross-resource authorization, privacy, automation, attachment, feedback, and
40
42
  other platform-specific rules: [platform-rules.md](references/platform-rules.md)
41
43
  - Exact endpoint inventory: [api-endpoints.md](references/api-endpoints.md)
@@ -714,6 +714,12 @@ collection and stale, ambiguous, or missing evidence remain `unknown` and set
714
714
  enables the provider GET collection; it is disabled by default. The collector does not
715
715
  change GitHub hooks or other provider state and does not prove merge,
716
716
  deployment, production testing, or human acceptance.
717
+ A policy endpoint returning GitHub's exact plan-limit HTTP 403 is classified
718
+ as `plan_restricted`; other 401/403 responses remain permission failures.
719
+ The collection is `partial` if one policy source succeeds, or `unavailable`
720
+ if both fail, and its aggregate remains `unknown`. The first policy error
721
+ (rulesets before classic protection) supplies `error_code` when errors differ.
722
+ Configured workflow results remain separate evidence with `required: false`.
717
723
  The selected PR-link state is authoritative. If a same-head PR observation
718
724
  disagrees, Atoll clears its observation/provider provenance, uses the link URL
719
725
  as `source_url`, excludes it from freshness, and sets `partial`.
@@ -1188,6 +1188,12 @@ provider collection; disabled is the default. With reads disabled, state
1188
1188
  `disabled` and aggregate `none` do not set `partial`. When enabled, partial or
1189
1189
  unavailable collection, stale, ambiguous, or missing evidence remains `unknown`
1190
1190
  and sets `partial`.
1191
+ A policy endpoint returning GitHub's exact plan-limit HTTP 403 is classified
1192
+ as `plan_restricted`; other 401/403 responses remain permission failures.
1193
+ The collection is `partial` if one policy source succeeds, or `unavailable`
1194
+ if both fail, and its aggregate remains `unknown`. The first policy error
1195
+ (rulesets before classic protection) supplies `error_code` when errors differ.
1196
+ Configured workflow results remain separate evidence with `required: false`.
1191
1197
 
1192
1198
  Review aggregation keeps each reviewer's latest exact-head opinion, ignores
1193
1199
  comments, and removes dismissed opinions. Change requests win; `approved`
@@ -238,6 +238,12 @@ collection or aggregate `unknown` sets `partial`. The server-only
238
238
  off by default. This evidence does not grant merge, deployment, production
239
239
  testing, or acceptance authority, and the endpoint does not change GitHub
240
240
  state. Configured Atoll workflow paths remain `required: false`.
241
+ A policy endpoint returning GitHub's exact plan-limit HTTP 403 is classified
242
+ as `plan_restricted`; other 401/403 responses remain permission failures.
243
+ The collection is `partial` if one policy source succeeds, or `unavailable`
244
+ if both fail, and its aggregate remains `unknown`. The first policy error
245
+ (rulesets before classic protection) supplies `error_code` when errors differ.
246
+ Configured workflow results remain separate evidence with `required: false`.
241
247
 
242
248
  ## Planning Artifacts
243
249
 
@@ -90,3 +90,78 @@ are blocked while a current job exists. Refresh, config validation, and Codex
90
90
  preflight are non-destructive; there is no model retry or cleanup button.
91
91
  A UI port or asset failure does not stop headless execution. Do not proxy this
92
92
  loopback interface to another host. Service installation remains separate.
93
+
94
+ ### macOS service and lifecycle
95
+
96
+ Install an explicit user service only when unattended operation is required:
97
+
98
+ ```bash
99
+ atoll-runner --profile agent-a service install
100
+ atoll-runner --profile agent-a service install --ui --ui-port 4735
101
+ atoll-runner --profile agent-a service status
102
+ atoll-runner --profile agent-a service uninstall
103
+ ```
104
+
105
+ The service is macOS-only. Install writes an atomic user-owned `0600` plist
106
+ under `~/Library/LaunchAgents/` with canonical Node and runner entry paths,
107
+ the selected profile, `run`, and optional loopback UI arguments. It contains no
108
+ environment variables, API keys, Codex or lease tokens, shell command,
109
+ checkout path, or worktree path. Unknown or changed plists fail closed.
110
+ Package installation is passive and never installs or starts the service. Use
111
+ uninstall, package upgrade, `doctor`, then install for an upgrade. Uninstall
112
+ removes only the exact owned plist and leaves journals, tokens, logs, branches,
113
+ and worktrees. Status and uninstall validate the local plist and do not require
114
+ profile credentials; install remains authenticated.
115
+
116
+ SIGINT/SIGTERM closes the process-local intake gate immediately. The current
117
+ child drains for at most 30 seconds; TERM and then KILL after 10 seconds are
118
+ sent only when the journaled PID still has the same process-start identity. A
119
+ wall-clock event-loop gap above 30 seconds is a possible wake. The child is
120
+ stopped, durable lease state is reconciled, and intake reopens only after that
121
+ pass. A wake may release a worker only to finish an already durable result;
122
+ stop never releases a worker. No hosted pause request is sent. Existing-wire
123
+ response failures are bounded as `RUNNER_PROTOCOL_MISMATCH` and keep pending
124
+ mutation journals available for replay.
125
+
126
+ ### Opt-in real local smoke
127
+
128
+ This developer harness is available only from an Atoll source checkout. It is
129
+ not included in the installed npm CLI. After deterministic checks, use a clean
130
+ loopback fixture profile with no current or conflicting retained job, and run
131
+ from `packages/cli`:
132
+
133
+ Loopback remains the normal default. Repository owners may also run one bounded
134
+ production validation turn from a clean Atoll source checkout. This mode requires
135
+ an exact canonical production origin, organization, project, authenticated agent,
136
+ issue, runner host and instance, and the live project repository mapping's opaque
137
+ `repo_ref` plus repository full name. The supplied `repo_ref` is checked against
138
+ live issue routing and must never be hard-coded. The smoke derives the canonical
139
+ source root from its own script, requires a clean source checkout, rebuilds the
140
+ candidate in the invocation, and records the source root, source `HEAD`, and
141
+ worker-entry SHA-256 in bounded mode-`0600` evidence. Exact production admission
142
+ performs zero presence `PUT`/upsert operations for either connected or
143
+ disconnected targets. Registration and refresh belong to separate operator setup
144
+ outside this invocation. The invocation reads the connected runner identity
145
+ before claim and rechecks it immediately before the claim; a disconnected target
146
+ fails closed. The runner does not explicitly select a model. The Codex runtime
147
+ and local Codex configuration supply model selection. `@openai/codex` and
148
+ `@openai/codex-sdk` are pinned to package/runtime version `0.153.4`; this
149
+ version is not a model name. Use the internal AH-2088 production smoke
150
+ runbook for the owner-only command and cleanup procedure.
151
+
152
+
153
+ ```bash
154
+ cd packages/cli && bun run build
155
+ ATOLL_RUNNER_MANUAL_SMOKE=1 bun run runner:manual-smoke -- \
156
+ --profile agent-a --issue issue-uuid --repository /path/to/checkout \
157
+ --timeout-ms 300000 --evidence /absolute/path/evidence.json
158
+ ```
159
+
160
+ The smoke runs one real Codex turn through the existing runner. It creates and
161
+ retains its owned local branch and worktree while preserving the primary
162
+ checkout, and writes bounded fixture issue, host, generation, branch/worktree,
163
+ base/head SHA, thread, terminal, and time evidence outside the checkout. A
164
+ timeout is always failure; retained journal state is authoritative. It never
165
+ pushes or deletes retained state, publishes, deploys, or installs a service.
166
+ Codex Desktop visibility is a separate operator observation; deterministic tests
167
+ use a fake SDK.
@@ -137,6 +137,12 @@ server-only
137
137
  `ATOLL_GITHUB_REQUIRED_CHECKS_READ_ENABLED=1` flag. This namespace is separate
138
138
  from heartbeat `signals[]`, never changes provider state, and never changes
139
139
  tasks or dispatches agents.
140
+ A policy endpoint returning GitHub's exact plan-limit HTTP 403 is classified
141
+ as `plan_restricted`; other 401/403 responses remain permission failures.
142
+ The collection is `partial` if one policy source succeeds, or `unavailable`
143
+ if both fail, and its aggregate remains `unknown`. The first policy error
144
+ (rulesets before classic protection) supplies `error_code` when errors differ.
145
+ Configured workflow results remain separate evidence with `required: false`.
140
146
  The selected PR-link state is authoritative. If a same-head PR observation
141
147
  disagrees, Atoll clears its observation/provider provenance, falls back to the
142
148
  link URL, excludes it from freshness, and sets `partial`.