@arbiterforge/ca-pi 0.10.13 → 0.14.6

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.
Files changed (57) hide show
  1. package/README.md +1 -1
  2. package/package.json +2 -1
  3. package/plugins/ca-pi/CHANGELOG.md +159 -0
  4. package/plugins/ca-pi/SKILLS.md +1 -1
  5. package/plugins/ca-pi/SPRINT.md +40 -10
  6. package/plugins/ca-pi/agents/backend-author.md +1 -1
  7. package/plugins/ca-pi/agents/frontend-author.md +1 -1
  8. package/plugins/ca-pi/generated/command-catalog.json +1 -1
  9. package/plugins/ca-pi/helpers/artifacts/ca-artifact-darwin-amd64 +0 -0
  10. package/plugins/ca-pi/helpers/artifacts/ca-artifact-darwin-arm64 +0 -0
  11. package/plugins/ca-pi/helpers/artifacts/ca-artifact-linux-amd64 +0 -0
  12. package/plugins/ca-pi/helpers/artifacts/ca-artifact-linux-arm64 +0 -0
  13. package/plugins/ca-pi/helpers/artifacts/ca-artifact-windows-amd64.exe +0 -0
  14. package/plugins/ca-pi/helpers/artifacts/ca-artifact-windows-arm64.exe +0 -0
  15. package/plugins/ca-pi/helpers/artifacts/release.json +38 -0
  16. package/plugins/ca-pi/hooks/_approvallib.py +355 -0
  17. package/plugins/ca-pi/hooks/_artifactlib.py +855 -0
  18. package/plugins/ca-pi/hooks/_cleanuplib.py +1553 -0
  19. package/plugins/ca-pi/hooks/_hooklib.py +37 -13
  20. package/plugins/ca-pi/hooks/_host.py +1 -1
  21. package/plugins/ca-pi/hooks/_intentlib.py +31 -0
  22. package/plugins/ca-pi/hooks/_planfilelib.py +34 -1
  23. package/plugins/ca-pi/hooks/_protectedstatelib.py +11 -1
  24. package/plugins/ca-pi/hooks/_readinjectlib.py +120 -0
  25. package/plugins/ca-pi/hooks/_releaselib.py +933 -85
  26. package/plugins/ca-pi/hooks/_standuplib.py +38 -10
  27. package/plugins/ca-pi/hooks/doctor.py +103 -0
  28. package/plugins/ca-pi/hooks/hostapi.py +1 -1
  29. package/plugins/ca-pi/hooks/pi-bridge.py +5 -1
  30. package/plugins/ca-pi/hooks/prompt-submit.py +33 -10
  31. package/plugins/ca-pi/hooks/releasehash.py +46 -32
  32. package/plugins/ca-pi/includes/artifacts.md +166 -0
  33. package/plugins/ca-pi/includes/author-tdd-workflow.md +2 -1
  34. package/plugins/ca-pi/includes/farm.md +27 -4
  35. package/plugins/ca-pi/includes/routing-table.md +2 -2
  36. package/plugins/ca-pi/includes/verification-boundary.md +27 -0
  37. package/plugins/ca-pi/package.json +18 -0
  38. package/plugins/ca-pi/routines/INDEX.md +4 -4
  39. package/plugins/ca-pi/routines/brainstorming/SKILL.md +23 -4
  40. package/plugins/ca-pi/routines/commit-gate/SKILL.md +30 -5
  41. package/plugins/ca-pi/routines/executing-plans/SKILL.md +52 -7
  42. package/plugins/ca-pi/routines/finishing-a-development-branch/SKILL.md +25 -3
  43. package/plugins/ca-pi/routines/refactor/SKILL.md +3 -2
  44. package/plugins/ca-pi/routines/release/SKILL.md +150 -44
  45. package/plugins/ca-pi/routines/subagent-driven-development/SKILL.md +53 -9
  46. package/plugins/ca-pi/routines/subagent-driven-development/references/farm-dispatch.md +20 -3
  47. package/plugins/ca-pi/routines/tdd/SKILL.md +27 -5
  48. package/plugins/ca-pi/routines/using-git-worktrees/SKILL.md +11 -2
  49. package/plugins/ca-pi/routines/writing-plans/SKILL.md +39 -10
  50. package/plugins/ca-pi/routines/writing-plans/references/farm-plan.md +34 -13
  51. package/plugins/ca-pi/skills/ca-chore/SKILL.md +7 -3
  52. package/plugins/ca-pi/skills/ca-commit/SKILL.md +3 -2
  53. package/plugins/ca-pi/skills/ca-doctor/SKILL.md +14 -0
  54. package/plugins/ca-pi/skills/ca-feature/SKILL.md +42 -8
  55. package/plugins/ca-pi/skills/ca-refactor/SKILL.md +4 -2
  56. package/plugins/ca-pi/skills/ca-release/SKILL.md +7 -6
  57. package/plugins/ca-pi/skills/ca-standup/SKILL.md +36 -8
package/README.md CHANGED
@@ -10,7 +10,7 @@ project context. You decide. codeArbiter enforces.
10
10
  <img alt="Claude Code plugin" src="https://img.shields.io/badge/Claude_Code-plugin-d97757">
11
11
  <img alt="Codex plugin" src="https://img.shields.io/badge/OpenAI_Codex-plugin-10a37f">
12
12
  <img alt="Pi Feature Forge preview" src="https://img.shields.io/badge/ca--pi-Feature_Forge_preview-d97757">
13
- <img alt="version 2.17.11" src="https://img.shields.io/badge/version-2.17.11-2b7489">
13
+ <img alt="version 2.21.6" src="https://img.shields.io/badge/version-2.21.6-2b7489">
14
14
  <img alt="core lanes" src="https://img.shields.io/badge/core_lanes-18-555">
15
15
  <img alt="skills" src="https://img.shields.io/badge/skills-23-555">
16
16
  <img alt="agents" src="https://img.shields.io/badge/agents-19-555">
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arbiterforge/ca-pi",
3
- "version": "0.10.13",
3
+ "version": "0.14.6",
4
4
  "license": "AGPL-3.0-only",
5
5
  "repository": {
6
6
  "type": "git",
@@ -15,6 +15,7 @@
15
15
  },
16
16
  "files": [
17
17
  "plugins/ca-pi/*.md",
18
+ "plugins/ca-pi/package.json",
18
19
  "plugins/ca-pi/agents/",
19
20
  "plugins/ca-pi/extensions/",
20
21
  "plugins/ca-pi/generated/",
@@ -4,6 +4,165 @@ All notable changes to `ca-pi` are documented in this file.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.14.6] - 2026-09-20
8
+
9
+ ### Fixed
10
+
11
+ - Reject projected merges that would strand an eligible ca-pi version, and
12
+ preserve the exact main CI run that supplies its release trigger and package.
13
+
14
+ ## [0.14.5] - 2026-09-19
15
+
16
+ ### Fixed
17
+
18
+ - Preserve structured-artifact approval evidence in packaged receipts and fail
19
+ closed for prompt-backed approvals because Pi has no supported prompt adapter.
20
+
21
+ ## [0.14.4] - 2026-09-19
22
+
23
+ ### Fixed
24
+
25
+ - `/ca:standup`'s archival sweep now creates its own dedicated chore branch
26
+ before archiving anything and hands off to `/ca:chore docs`, instead of
27
+ writing directly to `open-tasks.md`/`done-tasks.md` on whatever branch was
28
+ current with no commit path at all (#573).
29
+ - `commit-gate`'s Phase 6 board-edit exemption no longer over-attributes an
30
+ unconditional "any deleted entry is scope creep" rule to ADR-0008; a docs
31
+ chore whose own Phase 3 classification is the board change is in-scope by
32
+ that classification directly.
33
+
34
+ ## [0.14.3] - 2026-09-18
35
+
36
+ ### Fixed
37
+
38
+ - Default new full-lane feature and sprint work to qualified typed HTML
39
+ specifications and plans while preserving exact-format legacy pairs and
40
+ keeping HTML farm dispatch disabled.
41
+
42
+ ## [0.14.2] - 2026-09-18
43
+
44
+ ### Fixed
45
+
46
+ - Preserve payload pathspec argument boundaries, validate Cargo manifests,
47
+ establish first-release and zero-tag behavior before classification, and
48
+ derive provenance identities from one remote ref snapshot. Run package
49
+ generation through the portable Python command on Windows and CI hosts,
50
+ preserve helper records as LF, reject ambiguous committed release notes
51
+ before tag mutation, and bind hosted assets and automatic publication to the
52
+ exact qualified changelog commit and manifest blobs.
53
+
54
+ ## [0.14.1] - 2026-09-18
55
+
56
+ ### Fixed
57
+
58
+ - Require a merged default-branch commit and green hosted exact-head evidence
59
+ before release tag composition, and establish one POSIX shell before the
60
+ portable workflow runs on Windows.
61
+
62
+ ## [0.14.0] - 2026-09-17
63
+
64
+ ### Added
65
+
66
+ - Publish the exact preassembled structured-artifact npm tarball only from the
67
+ native-qualified release cohort with cold-install and read-back receipts. New
68
+ full-lane work remains Markdown by default; typed HTML is available only as an
69
+ explicitly requested, fail-closed pilot, and partial Git-tag installs remain
70
+ usable.
71
+
72
+ ## [0.13.2] - 2026-09-17
73
+
74
+ ### Fixed
75
+
76
+ - `_hooklib.py`: `gate-events.log` no longer accumulates REMIND/WARN noise
77
+ (shared core/pysrc change, synced via `tools/sync-core.py`). See the root
78
+ `CHANGELOG.md` for full detail.
79
+
80
+ ## [0.13.1] - 2026-09-17
81
+
82
+ ### Fixed
83
+
84
+ - `_cleanuplib.py`: follow-on fixes to 0.13.0's T-03 remediation, found by a further independent review after that fix had merged (shared core/pysrc change). See the root `CHANGELOG.md` for full detail.
85
+
86
+ ## [0.13.0] - 2026-09-17
87
+
88
+ ### Added
89
+
90
+ - `_cleanuplib.py`: adds T-03, the authoritative branch/worktree inventory (shared core/pysrc change, synced via `tools/sync-core.py`). See the root `CHANGELOG.md` for full detail.
91
+
92
+ ### Fixed
93
+
94
+ - `_cleanuplib.py`: closes 3 blocking and 5 high-severity gaps an independent review found in T-03 as first merged (shared core/pysrc change). See the root `CHANGELOG.md` for full detail.
95
+
96
+ ## [0.12.0] - 2026-09-16
97
+
98
+ ### Added
99
+
100
+ - Add the disabled structured-artifact foundation, Linux and Windows recovery support, verified native bridges, descriptor-relative Unix installation, and generated Pi workflow guidance while preserving the existing public surface. The Windows developer installer and HTML farm dispatch remain fail-closed pending their respective release/integration qualification.
101
+
102
+ ## [0.11.9] - 2026-09-17
103
+
104
+ ### Fixed
105
+
106
+ - `core/pysrc/_cleanuplib.py`: closes 6 blocking and several high-severity gaps an independent review found in the T-03/T-04/T-05 cleanup-framework backend against ADR-0036's supersession gate (verdict: NO-GO on the backend as it stood). `execute_branch_deletion` now requires a `ProofResult` and refuses an unproven target outright; the force/atomic-delete path is unlocked only by `proof.method == "pr_delivery"`, never a caller-supplied flag; `evaluate_merge_proof`'s ancestry path is now repository-qualified; worktree occupancy is revalidated fresh at every mutation attempt; a claimed-successful delete is reverified before being recorded "applied"; a read failure is never folded into "branch confirmed absent"; the journal's retention bound now exceeds the proposal's own named 40-branch batch example. The journal file is renamed `.cleanup-journal.json` (was `.resources.json`). Still not wired into any live cleanup route -- that remains T-06's job.
107
+
108
+ ## [0.11.8] - 2026-09-17
109
+
110
+ ### Added
111
+
112
+ - `core/pysrc/_cleanuplib.py`: the cleanup-framework's shared decision and interaction vocabulary (T-02) -- typed `Scope`, `Target`, and `Decision` objects with explicit `unknown`/`error` outcome states, plus two pure classifiers: `scope_covers` (a scope never authorizes a resource kind or member it didn't explicitly name) and `required_confirmation_count` (how many new confirmations an operation needs, based only on its authorization source -- zero for an already-bound direct instruction, snapshot reply, or accepted work lifecycle; exactly one for an unauthorized proposal; always one more for an unresolved unique-content loss, regardless of how many). Not yet wired into any live cleanup route.
113
+
114
+ ## [0.11.7] - 2026-09-17
115
+
116
+ ### Added
117
+
118
+ - `core/pysrc/_cleanuplib.py`: a repository-bound operation journal and a guarded, revalidating branch-deletion executor for the cleanup-framework mutation backend (T-05, branch-deletion slice). The executor journals intent before mutating, revalidates a branch's tip immediately before every delete attempt (including the forced retry), refuses current/default/explicitly-protected/worktree-occupied branches, and reconciles any still-pending record from actual repository state rather than retrying blindly. Not yet wired into any live cleanup route. Worktree-removal guarding and filesystem-operation constraints are separate, not-yet-built increments sharing this same pattern.
119
+
120
+ ### Fixed
121
+
122
+ - CI now runs the T-04 integration-proof evaluator's and T-05's own unit test suites (`test_cleanuplib.py`, `test_cleanuplib_mutation.py`) — both had been merged without a CI step invoking them, so they ran locally but were invisible to the pipeline.
123
+
124
+ ## [0.11.6] - 2026-09-17
125
+
126
+ ### Added
127
+
128
+ - `core/pysrc/_cleanuplib.py`: a repository-qualified integration-proof evaluator (`evaluate_merge_proof`) for routine branch cleanup. Proves a candidate branch tip's content landed on an authorized integration target via ancestry (no `gh` required) or an exact, repository-qualified PR-delivery record; tree-equality is accepted only as corroboration and never grants eligibility by itself. Not yet wired into any live cleanup route.
129
+
130
+ ## [0.11.5] - 2026-09-16
131
+
132
+ ### Fixed
133
+
134
+ - `core/pysrc/_standuplib.py`'s worktree inventory now captures lock state, detached-HEAD status, and the exact OID from `git worktree list --porcelain` output instead of silently dropping them; a locked worktree is now excluded outright from standup's hygiene-candidate list.
135
+
136
+ ## [0.11.4] - 2026-09-16
137
+
138
+ ### Fixed
139
+
140
+ - `includes/routing-table.md`'s Hard gate column had drifted behind already-shipped skill behavior: the standup row required per-item confirmation for every worktree removal even though `commands/standup.md` already permits one named enumerated group, and the post-merge-cleanup row named ancestry + `branch -d` only even though `skills/post-merge-cleanup/SKILL.md` already documents the PR-record squash-proof path and its restricted `-D` exception.
141
+
142
+ ## [0.11.3] - 2026-09-16
143
+
144
+ ### Fixed
145
+
146
+ - `marker_name_for()` now case-folds every path segment before encoding, matching `_canon`/`lookup_policy`'s existing case-insensitive registry comparison, so a differently-cased Write/Edit target no longer computes a marker name that was never minted (#624).
147
+
148
+ ## [0.11.2] - 2026-09-15
149
+
150
+ ### Fixed
151
+
152
+ - Keep exhaustive repository and cross-platform verification on exact-head hosted CI instead of requiring contributors to replay the full matrix locally before committing or opening a pull request.
153
+
154
+ ## [0.11.1] - 2026-09-14
155
+
156
+ ### Fixed
157
+
158
+ - Permit explicit changelog reconciliation only for exact published commits through a reviewed, default-branch-bound ledger while retaining strict failure for ordinary missing footers.
159
+
160
+ ## [0.11.0] - 2026-09-13
161
+
162
+ ### Added
163
+
164
+ - Support declared numeric release policies and exact verified asset inventories while preserving SemVer defaults and explicit publication authorization.
165
+
7
166
  ## [0.10.13] - 2026-09-13
8
167
 
9
168
  ### Fixed
@@ -60,7 +60,7 @@ skill is invoked — never bulk-read this directory.
60
60
  |---|---|
61
61
  | `/ca-commit` | Run the full commit gate — the only sanctioned path to a git commit. |
62
62
  | `/ca-pr` | Open a pull request the only sanctioned way — clear every BLOCK-level review finding, then stage the PR. Never a direct write to the default branch. |
63
- | `/ca-release` | Cut a release the only sanctioned way — SemVer bump from the commit log, a CHANGELOG section, an annotated tag. Takes the declared target's name as its only argument, or --dry-run to preview one with no write. The only path to a version tag. |
63
+ | `/ca-release` | Cut a release the only sanctioned way — derive the target's declared version policy from the commit log, roll its changelog, compose an annotated tag, and optionally publish its exact declared assets. Takes the declared target's name as its only argument, or --dry-run to preview one with no write. The only path to a version tag. |
64
64
 
65
65
  ### Operate
66
66
 
@@ -7,11 +7,30 @@ file is the thin entry point, this file is the procedure. -->
7
7
  Brainstorm a sprint with the user, then execute it end-to-end — deciding "as the user" on everything
8
8
  that is not a true hard gate. Every auto-decision is logged. Hard gates are real stops, rare by design.
9
9
 
10
+ ## Structured-artifact boundary
11
+
12
+ For new sprint work or an existing `.html` spec/plan match, load
13
+ `<plugin-root>/includes/artifacts.md` before resume classification or artifact
14
+ I/O. Call `_select_authoring_route` with the trusted project root, slug,
15
+ `workflow: sprint`, and `lane: full`; use only its returned format and paths. For a selected HTML
16
+ route it checks the installed capability before writing; a missing or invalid
17
+ helper is a STOP and the workflow must not fall back to Markdown.
18
+ Its validated identity, authority, binding and task-state operations replace the
19
+ `.md` and status-column assumptions below for that pipeline. An existing `.md`
20
+ pair remains on the legacy path. Discovery requires a
21
+ complete same-extension spec/plan pair: select that exact pair as authoritative. A
22
+ mixed-extension or duplicate match is a STOP. A lone spec resumes in its exact format, and the
23
+ next plan must use the same extension. The workflow must not create, rename, or
24
+ convert its counterpart to repair ambiguity. New full-lane sprint specs use the
25
+ installed structured-artifact engine and default to canonical `.html`. The HTML
26
+ path must block `--farm` before canary
27
+ or dispatch; do not project it into legacy farm JSON.
28
+
10
29
  ## Execution backend: premium (default) vs. `--farm`
11
30
 
12
- > **`--farm` is a Feature Forge `preview`** — shipped off by default and not yet validated on real
13
- > runs. The premium subagent path is the blessed default. The promotion bar lives in
14
- > `<project-root>/.codearbiter/open-questions.md` (CONFIRM-05).
31
+ > **`--farm` is a Feature Forge `preview`** — shipped off by default. Historical runs informed its
32
+ > design but count as zero current qualification evidence. The premium subagent path is the blessed
33
+ > default. The fresh-evidence promotion bar lives in `<plugin-root>/includes/farm.md`.
15
34
 
16
35
  `/sprint` runs the normal premium-subagent path unless invoked as `/sprint --farm`. The `--farm` flag
17
36
  selects the pluggable execution backend: Claude still authors the spec, the failing tests, and the plan,
@@ -25,16 +44,27 @@ backends. The worker-seam design (the cheap/premium/agentic policies the seam ad
25
44
 
26
45
  ## Phase 1 — Sprint spec · gate: STOP
27
46
 
28
- **Resume first:** if `<project-root>/.codearbiter/specs/<sprint-slug>.md` and
29
- `plans/<sprint-slug>.md` already exist for this sprint, do not re-brainstorm — confirm the resume
47
+ **Resume first:** discover this sprint's existing artifacts. Call the private
48
+ bridge resolver `_resolve_workflow_pair` with the trusted project root and sprint
49
+ slug; its returned paths and format own this resume. Select a complete
50
+ same-extension spec/plan pair as authoritative. A lone spec resumes in its exact
51
+ format, and the next plan must use the same extension. A mixed-extension or
52
+ duplicate match is a STOP. For an HTML pair, obtain state only through the
53
+ installed engine `identity`, `index`, and symbol-scoped `read` operations. For a
54
+ Markdown pair, use the existing Markdown status ledger. Resume either exact format
55
+ without creating or consulting a shadow artifact; the workflow must not create,
56
+ rename, or convert its counterpart. Do not re-brainstorm — confirm the resume
30
57
  with the user and re-enter per `/feature`'s Resume ladder (approved spec + plan with non-`ACCEPTED`
31
- tasks → straight to Phase 2, executing only the remaining tasks; the plan's `status` column is the
32
- ledger). An interrupted sprint is re-entered, never restarted.
58
+ tasks → straight to Phase 2, executing only the remaining tasks; the legacy plan's
59
+ `status` column or the typed engine's execution ledger is authoritative for its
60
+ own format). An interrupted sprint is re-entered, never restarted.
33
61
 
34
62
  Route to `brainstorming` (`<plugin-root>/routines/brainstorming/SKILL.md`), scoped to a **sprint** — a coherent chunk of work (several features or one
35
- goal), not a single feature. Drive it to a concrete sprint spec at
36
- `<project-root>/.codearbiter/specs/<sprint-slug>.md`, then to `writing-plans` (`<plugin-root>/routines/writing-plans/SKILL.md`) for the task
37
- breakdown at `<project-root>/.codearbiter/plans/<sprint-slug>.md`.
63
+ goal), not a single feature. Drive it to a concrete sprint spec at the
64
+ route-selected spec path, then to `writing-plans`
65
+ (`<plugin-root>/routines/writing-plans/SKILL.md`) for the task breakdown at the
66
+ matching route-selected plan path. New sprint work uses `.html` through the
67
+ installed engine.
38
68
 
39
69
  This is the ONE interactive gate, and it is load-bearing: the thoroughness of the spec is what makes
40
70
  hard-gate stops rare later. Capture the user's intent, priorities, risk tolerance, and any
@@ -23,7 +23,7 @@ Read in full before writing any code:
23
23
 
24
24
  ## TDD Workflow (Non-Negotiable)
25
25
 
26
- Follow the six-step fixed order in `<plugin-root>/includes/author-tdd-workflow.md` for every task — failing tests first, minimum implementation, full suite, lint/type-check, only then stage.
26
+ Follow the six-step fixed order in `<plugin-root>/includes/author-tdd-workflow.md` for every task — failing tests first, minimum implementation, impact-bounded local verification, lint/type-check, only then stage. The shared `verification-boundary` reserves exhaustive cross-platform proof for exact-head hosted CI.
27
27
 
28
28
  ## Required Test Coverage per Feature
29
29
 
@@ -23,7 +23,7 @@ Read in full before writing any code:
23
23
 
24
24
  ## TDD Workflow (Non-Negotiable)
25
25
 
26
- Follow the six-step fixed order in `<plugin-root>/includes/author-tdd-workflow.md` for every task — failing tests first, minimum implementation, full suite, lint/type-check, only then stage.
26
+ Follow the six-step fixed order in `<plugin-root>/includes/author-tdd-workflow.md` for every task — failing tests first, minimum implementation, impact-bounded local verification, lint/type-check, only then stage. The shared `verification-boundary` reserves exhaustive cross-platform proof for exact-head hosted CI.
27
27
 
28
28
  ## Required Test Coverage per Feature
29
29
 
@@ -293,7 +293,7 @@
293
293
  },
294
294
  "release": {
295
295
  "name": "release",
296
- "description": "Cut a release the only sanctioned way — SemVer bump from the commit log, a CHANGELOG section, an annotated tag. Takes the declared target's name as its only argument, or --dry-run to preview one with no write. The only path to a version tag.",
296
+ "description": "Cut a release the only sanctioned way — derive the target's declared version policy from the commit log, roll its changelog, compose an annotated tag, and optionally publish its exact declared assets. Takes the declared target's name as its only argument, or --dry-run to preview one with no write. The only path to a version tag.",
297
297
  "skillPath": "skills/ca-release/SKILL.md",
298
298
  "visibility": "core",
299
299
  "workflow": "ship",
@@ -0,0 +1,38 @@
1
+ {
2
+ "format": "codearbiter.artifact-release/0.1.0",
3
+ "version": "0.1.0",
4
+ "protocol": "codearbiter.artifact-api/0.1.0",
5
+ "schema_version": "0.3.1",
6
+ "binaries": {
7
+ "darwin/amd64": {
8
+ "file": "ca-artifact-darwin-amd64",
9
+ "sha256": "fab98b0fd68bafe5f2f52941f704dc32bf623eaa68be18e9e68cc9bc07f05cac",
10
+ "native_tested": true
11
+ },
12
+ "darwin/arm64": {
13
+ "file": "ca-artifact-darwin-arm64",
14
+ "sha256": "44211f23050e42ac155432e6d3e3edc58fd7180171a982c6c4a39378ec15218d",
15
+ "native_tested": true
16
+ },
17
+ "linux/amd64": {
18
+ "file": "ca-artifact-linux-amd64",
19
+ "sha256": "100e36cf452a79fb678ee2f99956953ae97da5b49bc673e77cef094a87bd1cab",
20
+ "native_tested": true
21
+ },
22
+ "linux/arm64": {
23
+ "file": "ca-artifact-linux-arm64",
24
+ "sha256": "6c1aa70e582e5054c8125cb89585bfd0f0eda6a2b32f3c67c9cdbff76ca78e0f",
25
+ "native_tested": true
26
+ },
27
+ "windows/amd64": {
28
+ "file": "ca-artifact-windows-amd64.exe",
29
+ "sha256": "6a17e6188fede9f8b8271d0f9eeab41512b58118e5b12781e62b4ce8dc0c5519",
30
+ "native_tested": true
31
+ },
32
+ "windows/arm64": {
33
+ "file": "ca-artifact-windows-arm64.exe",
34
+ "sha256": "746bfd19ed124b14376326b05a435aad381d7a72093f0e8002fa66e186e64194",
35
+ "native_tested": true
36
+ }
37
+ }
38
+ }