adb-ready 0.8.0 → 1.0.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.
package/CHANGELOG.md CHANGED
@@ -4,11 +4,38 @@ All notable changes to ADB Ready are documented here.
4
4
 
5
5
  The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and releases follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
- While the project is below `1.0.0`, minor releases may include documented
8
- breaking changes.
7
+ Documented public surfaces in the `1.x` line follow the compatibility and
8
+ deprecation policy in [Stability and versioning](./docs/stability.md).
9
9
 
10
10
  ## [Unreleased]
11
11
 
12
+ ## [1.0.0] - 2026-09-29
13
+
14
+ ### Added
15
+
16
+ - Activate the documented 1.x compatibility, additive-change, deprecation,
17
+ migration, exit-code, and versioned machine-contract guarantees.
18
+
19
+ ### Changed
20
+
21
+ - Keep prepared GitHub releases in draft until the exact public npm tarball
22
+ matches the verified artifact digest and passes clean-consumer execution
23
+ through npm, pnpm, Yarn Classic, modern Yarn, Bun, and Deno.
24
+
25
+ ## [0.9.0] - 2026-09-29
26
+
27
+ ### Added
28
+
29
+ - Add a packaged JSON Schema for the stable JSON result and NDJSON event
30
+ envelopes, plus an explicit 1.x compatibility, deprecation, migration, and
31
+ support-claim policy for CLI, configuration, automation, and MCP consumers.
32
+
33
+ ### Changed
34
+
35
+ - Strengthen package and release verification so the automation schema is
36
+ always shipped and generated agent contracts cannot drift from the package
37
+ version.
38
+
12
39
  ## [0.8.0] - 2026-09-29
13
40
 
14
41
  ### Added
@@ -507,7 +534,9 @@ breaking changes.
507
534
  explainable configuration precedence.
508
535
  - Human, plain, JSON, and NDJSON output across Node, Bun, and Deno entrypoints.
509
536
 
510
- [Unreleased]: https://github.com/Adam014/adb-ready/compare/v0.8.0...HEAD
537
+ [Unreleased]: https://github.com/Adam014/adb-ready/compare/v1.0.0...HEAD
538
+ [1.0.0]: https://github.com/Adam014/adb-ready/compare/v0.9.0...v1.0.0
539
+ [0.9.0]: https://github.com/Adam014/adb-ready/compare/v0.8.0...v0.9.0
511
540
  [0.8.0]: https://github.com/Adam014/adb-ready/compare/v0.7.0...v0.8.0
512
541
  [0.7.0]: https://github.com/Adam014/adb-ready/compare/v0.6.0...v0.7.0
513
542
  [0.6.0]: https://github.com/Adam014/adb-ready/compare/v0.5.1...v0.6.0
package/README.md CHANGED
@@ -292,6 +292,7 @@ Android transport backend.
292
292
  | [Logs and AI context](./docs/logs-and-context.md) | Diagnose a failure with bounded, redacted evidence. |
293
293
  | [AI agent integration](./docs/agent-integration.md) | Connect an MCP-capable coding agent. |
294
294
  | [Automation](./docs/automation.md) | Use readiness, exit codes, JSON, NDJSON, JUnit, and CI artifacts. |
295
+ | [Stability and versioning](./docs/stability.md) | Understand the 1.x API, schema, deprecation, and migration guarantees. |
295
296
  | [Gradle Managed Devices](./docs/gradle-managed-devices.md) | Run build-owned virtual-device and group tests with normalized evidence. |
296
297
  | [Firebase Test Lab](./docs/firebase-test-lab.md) | Run explicit remote instrumentation or Robo matrices with bounded evidence. |
297
298
  | [Target pools and fan-out](./docs/target-pools.md) | Bound parallel verification across an explicit target set. |
package/dist/cli.js CHANGED
@@ -3304,7 +3304,7 @@ import process15 from "node:process";
3304
3304
  // package.json
3305
3305
  var package_default = {
3306
3306
  name: "adb-ready",
3307
- version: "0.8.0",
3307
+ version: "1.0.0",
3308
3308
  description: "Agent-ready Android CLI for reliable ADB sessions, app automation, and verified evidence.",
3309
3309
  private: false,
3310
3310
  type: "module",
@@ -61628,4 +61628,4 @@ try {
61628
61628
  process16.removeListener("SIGTERM", abort);
61629
61629
  }
61630
61630
 
61631
- //# debugId=2AD0AEC355B9989464756E2164756E21
61631
+ //# debugId=42FF0E47A70CDC2764756E2164756E21
package/docs/RELEASING.md CHANGED
@@ -1,8 +1,9 @@
1
1
  # Releasing ADB Ready
2
2
 
3
3
  ADB Ready promotes one verified npm tarball through npm trusted publishing. A
4
- draft GitHub release is made public only after npm accepts that exact artifact.
5
- The workflow does not use a long-lived npm write token.
4
+ draft GitHub release is made public only after the exact public-registry
5
+ artifact passes clean-consumer verification. The workflow does not use a
6
+ long-lived npm write token.
6
7
 
7
8
  ## One-time setup
8
9
 
@@ -105,13 +106,23 @@ The workflow:
105
106
  5. records and rechecks its SHA-256 digest across the job boundary;
106
107
  6. grants OIDC only to the isolated npm publish job;
107
108
  7. publishes the verified tarball through short-lived trusted-publishing
108
- credentials; and
109
- 8. publishes the prepared GitHub release only after npm succeeds.
109
+ credentials;
110
+ 8. waits for bounded npm-registry convergence, verifies the public tarball's
111
+ SHA-256 digest, and installs and launches it through npm, pnpm, Yarn Classic,
112
+ modern Yarn, Bun, and Deno; and
113
+ 9. publishes the prepared GitHub release only after the public package passes.
110
114
 
111
115
  Do not rerun a failed publish blindly. Inspect whether the version already
112
116
  exists on npm first; published npm versions are immutable. A failed validation
113
- can be repeated safely. If npm succeeded but the final GitHub release step
114
- failed, rerun only the failed job or publish the existing draft manually.
117
+ can be repeated safely. If npm succeeded but public-registry verification has
118
+ not, keep the GitHub release as a draft, inspect the immutable npm version, and
119
+ rerun only the failed verification job after the registry has converged.
120
+
121
+ The immediate modern-Yarn consumer check uses its official one-command
122
+ `--no-time-gate` override, and the Deno check uses
123
+ `--minimum-dependency-age 0`. These narrow release-verification exceptions are
124
+ needed because both tools intentionally quarantine newly published versions;
125
+ normal consumers keep the default supply-chain age gates.
115
126
 
116
127
  ## Verify from a clean consumer
117
128
 
@@ -62,12 +62,17 @@ JSON commands return this top-level shape:
62
62
  Consumers must ignore unknown additive fields and event types within the same
63
63
  schema version.
64
64
 
65
- The npm package includes two versioned public artifacts:
65
+ The npm package includes three versioned public artifacts:
66
66
 
67
67
  - `schema/config-v1.schema.json` validates project configuration; and
68
+ - `schema/automation-v1.schema.json` validates the common JSON result and
69
+ NDJSON event envelopes; and
68
70
  - `schema/agent-tools-v1.json` catalogs every MCP tool's generated input and
69
71
  output schemas plus safety annotations for the matching package version.
70
72
 
73
+ See [Stability and versioning](./stability.md) for the 1.x compatibility,
74
+ deprecation, and migration policy.
75
+
71
76
  ## Event envelope
72
77
 
73
78
  NDJSON events include:
@@ -0,0 +1,68 @@
1
+ # Stability and versioning
2
+
3
+ ADB Ready follows Semantic Versioning for the npm package and versions its
4
+ machine contracts independently. Version `1.0.0` starts the compatibility
5
+ policy below; pre-1.0 releases remain governed by their changelog.
6
+
7
+ ## Stable in 1.x
8
+
9
+ Within the `1.x` package line, ADB Ready will not remove or rename a documented
10
+ CLI command, option, configuration field, exit-code category, result-envelope
11
+ field, event-envelope field, MCP tool, or MCP resource without a new major
12
+ version. Existing documented meanings will not be silently reassigned.
13
+
14
+ Backward-compatible additions may ship in a minor release. These include new
15
+ commands, options, event types, problem codes, optional object fields, enum
16
+ values, MCP tools, and target capabilities. Automation must ignore unknown
17
+ additive fields and handle unknown event or problem types conservatively.
18
+
19
+ Human terminal layout, animation, color, progress wording, and diagnostic prose
20
+ are presentation rather than an automation API. Do not parse them. Use JSON,
21
+ NDJSON, the packaged schemas, or MCP instead.
22
+
23
+ ## Versioned contracts
24
+
25
+ The npm package contains three contract artifacts:
26
+
27
+ - `schema/config-v1.schema.json` — declarative project configuration;
28
+ - `schema/automation-v1.schema.json` — common JSON result and NDJSON event
29
+ envelopes; and
30
+ - `schema/agent-tools-v1.json` — the exact MCP tool input/output surface for
31
+ the installed package version.
32
+
33
+ `schemaVersion` identifies an envelope or configuration shape; it is not the
34
+ npm package version. Additive changes retain the same schema version. An
35
+ incompatible machine-shape change requires a new schema version and a new npm
36
+ major release. ADB Ready 1.x continues to accept configuration schema v1.
37
+
38
+ The generated agent contract records `packageVersion`. Clients should load the
39
+ artifact from the same installed package that starts the MCP server instead of
40
+ combining contracts from different releases.
41
+
42
+ ## Exit behavior
43
+
44
+ The category exit codes documented in [Automation](./automation.md#exit-codes)
45
+ are stable in 1.x. A bounded `dev` or `run` child may preserve its own non-zero
46
+ exit code, so callers must not assume every non-zero value belongs to the ADB
47
+ Ready category table. Read the structured `problems` array for classification.
48
+
49
+ ## Deprecation and migration
50
+
51
+ A deprecated capability remains functional throughout the current major line
52
+ unless retaining it would create a security or data-integrity risk. ADB Ready
53
+ will mark the replacement in CLI help, public documentation, and the changelog
54
+ before removal. Removal or an incompatible semantic change waits for the next
55
+ major release and receives a migration section.
56
+
57
+ Security fixes, upstream Android/ADB behavior, and hosted-provider changes can
58
+ make an operation unavailable without changing its public shape. Such cases
59
+ must fail explicitly with structured evidence; ADB Ready does not fabricate a
60
+ successful result to preserve compatibility.
61
+
62
+ ## Support claims
63
+
64
+ API stability does not turn every upstream-capable environment into a tested
65
+ environment. [Compatibility](../COMPATIBILITY.md) distinguishes CI-tested,
66
+ hardware-observed, and upstream-capable tiers. A new host, runtime, transport,
67
+ or Android form factor is promoted only after its stated acceptance evidence
68
+ exists.
package/llms.txt CHANGED
@@ -45,6 +45,7 @@
45
45
  - Logs and diagnostic context: `docs/logs-and-context.md`
46
46
  - Configuration: `docs/configuration.md`
47
47
  - Automation contract: `docs/automation.md`
48
+ - Stability and versioning: `docs/stability.md`
48
49
  - Compatibility: `COMPATIBILITY.md`
49
50
  - Security: `SECURITY.md`
50
51
  - Threat model: `docs/threat-model.md`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "adb-ready",
3
- "version": "0.8.0",
3
+ "version": "1.0.0",
4
4
  "description": "Agent-ready Android CLI for reliable ADB sessions, app automation, and verified evidence.",
5
5
  "private": false,
6
6
  "type": "module",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "title": "ADB Ready agent tool contract",
3
3
  "schemaVersion": 1,
4
- "packageVersion": "0.8.0",
4
+ "packageVersion": "1.0.0",
5
5
  "protocolVersion": "2025-11-25",
6
6
  "transport": "stdio",
7
7
  "tools": [
@@ -0,0 +1,156 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://github.com/Adam014/adb-ready/blob/main/schema/automation-v1.schema.json",
4
+ "title": "ADB Ready automation envelope v1",
5
+ "description": "Common JSON result and NDJSON event envelopes emitted by ADB Ready.",
6
+ "oneOf": [{ "$ref": "#/$defs/result" }, { "$ref": "#/$defs/event" }],
7
+ "$defs": {
8
+ "jsonValue": {
9
+ "oneOf": [
10
+ { "type": "null" },
11
+ { "type": "boolean" },
12
+ { "type": "number" },
13
+ { "type": "string" },
14
+ { "type": "array", "items": { "$ref": "#/$defs/jsonValue" } },
15
+ {
16
+ "type": "object",
17
+ "additionalProperties": { "$ref": "#/$defs/jsonValue" }
18
+ }
19
+ ]
20
+ },
21
+ "correlation": {
22
+ "type": "object",
23
+ "required": ["commandId"],
24
+ "properties": {
25
+ "commandId": { "type": "string", "minLength": 1 },
26
+ "operationId": { "type": "string", "minLength": 1 },
27
+ "sessionId": { "type": "string", "minLength": 1 },
28
+ "targetId": { "type": "string", "minLength": 1 }
29
+ },
30
+ "additionalProperties": true
31
+ },
32
+ "evidence": {
33
+ "type": "object",
34
+ "required": ["source", "value"],
35
+ "properties": {
36
+ "source": { "type": "string", "minLength": 1 },
37
+ "field": { "type": "string", "minLength": 1 },
38
+ "value": { "$ref": "#/$defs/jsonValue" },
39
+ "redacted": { "type": "boolean" }
40
+ },
41
+ "additionalProperties": true
42
+ },
43
+ "action": {
44
+ "type": "object",
45
+ "required": ["id", "title", "kind", "risk", "automatic"],
46
+ "properties": {
47
+ "id": { "type": "string", "minLength": 1 },
48
+ "title": { "type": "string", "minLength": 1 },
49
+ "kind": { "enum": ["command", "user", "documentation"] },
50
+ "risk": {
51
+ "enum": [
52
+ "none",
53
+ "read-only",
54
+ "local-additive",
55
+ "device-reversible",
56
+ "shared-global",
57
+ "destructive",
58
+ "open-world"
59
+ ]
60
+ },
61
+ "automatic": { "type": "boolean" },
62
+ "idempotent": { "type": "boolean" },
63
+ "command": {
64
+ "type": "object",
65
+ "required": ["executable", "args"],
66
+ "properties": {
67
+ "executable": { "type": "string", "minLength": 1 },
68
+ "args": { "type": "array", "items": { "type": "string" } }
69
+ },
70
+ "additionalProperties": true
71
+ }
72
+ },
73
+ "additionalProperties": true
74
+ },
75
+ "problem": {
76
+ "type": "object",
77
+ "required": [
78
+ "code",
79
+ "category",
80
+ "severity",
81
+ "summary",
82
+ "detail",
83
+ "retryable",
84
+ "evidence",
85
+ "actions",
86
+ "correlation"
87
+ ],
88
+ "properties": {
89
+ "code": { "type": "string", "minLength": 1 },
90
+ "category": { "type": "string", "minLength": 1 },
91
+ "severity": { "enum": ["warning", "error"] },
92
+ "summary": { "type": "string" },
93
+ "detail": { "type": "string" },
94
+ "retryable": { "type": "boolean" },
95
+ "evidence": { "type": "array", "items": { "$ref": "#/$defs/evidence" } },
96
+ "actions": { "type": "array", "items": { "$ref": "#/$defs/action" } },
97
+ "correlation": { "$ref": "#/$defs/correlation" }
98
+ },
99
+ "additionalProperties": true
100
+ },
101
+ "result": {
102
+ "type": "object",
103
+ "required": [
104
+ "schemaVersion",
105
+ "command",
106
+ "commandId",
107
+ "ok",
108
+ "startedAt",
109
+ "finishedAt",
110
+ "durationMs",
111
+ "data",
112
+ "problems"
113
+ ],
114
+ "properties": {
115
+ "schemaVersion": { "const": 1 },
116
+ "command": { "type": "string", "minLength": 1 },
117
+ "commandId": { "type": "string", "minLength": 1 },
118
+ "ok": { "type": "boolean" },
119
+ "startedAt": { "type": "string", "format": "date-time" },
120
+ "finishedAt": { "type": "string", "format": "date-time" },
121
+ "durationMs": { "type": "number", "minimum": 0 },
122
+ "data": { "$ref": "#/$defs/jsonValue" },
123
+ "problems": { "type": "array", "items": { "$ref": "#/$defs/problem" } }
124
+ },
125
+ "additionalProperties": true
126
+ },
127
+ "event": {
128
+ "type": "object",
129
+ "required": [
130
+ "schemaVersion",
131
+ "sequence",
132
+ "timestamp",
133
+ "type",
134
+ "source",
135
+ "severity",
136
+ "message",
137
+ "correlation"
138
+ ],
139
+ "properties": {
140
+ "schemaVersion": { "const": 1 },
141
+ "sequence": { "type": "integer", "minimum": 1 },
142
+ "timestamp": { "type": "string", "format": "date-time" },
143
+ "type": { "type": "string", "minLength": 1 },
144
+ "source": { "type": "string", "minLength": 1 },
145
+ "severity": { "enum": ["debug", "info", "warning", "error"] },
146
+ "message": { "type": "string" },
147
+ "correlation": { "$ref": "#/$defs/correlation" },
148
+ "data": {
149
+ "type": "object",
150
+ "additionalProperties": { "$ref": "#/$defs/jsonValue" }
151
+ }
152
+ },
153
+ "additionalProperties": true
154
+ }
155
+ }
156
+ }
@@ -3,7 +3,7 @@ name: adb-ready
3
3
  description: Prepare, automate, debug, and verify one Android target through the ADB Ready MCP server. Use for Android development sessions, app lifecycle work, UI automation, failure evidence, screenshots, and agent-driven device checks.
4
4
  ---
5
5
 
6
- <!-- Generated by adb-ready 0.8.0; do not edit. -->
6
+ <!-- Generated by adb-ready 1.0.0; do not edit. -->
7
7
 
8
8
  # ADB Ready
9
9
 
@@ -51,4 +51,4 @@ Use the typed `adb-ready` MCP tools. Do not replace them with generic shell or r
51
51
  - `session`: 12 tools
52
52
  - `ui`: 29 tools
53
53
 
54
- Contract: ADB Ready 0.8.0, agent schema v1.
54
+ Contract: ADB Ready 1.0.0, agent schema v1.