@arbiterforge/ca-pi 0.14.16 → 0.14.17

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/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.21.16" src="https://img.shields.io/badge/version-2.21.16-2b7489">
13
+ <img alt="version 2.21.17" src="https://img.shields.io/badge/version-2.21.17-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-20-555">
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arbiterforge/ca-pi",
3
- "version": "0.14.16",
3
+ "version": "0.14.17",
4
4
  "license": "AGPL-3.0-only",
5
5
  "repository": {
6
6
  "type": "git",
@@ -4,6 +4,13 @@ All notable changes to `ca-pi` are documented in this file.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.14.17] - 2026-09-25
8
+
9
+ ### Fixed
10
+
11
+ - Accept null diagnostics from successful HTML intent validation without bypassing
12
+ invalid-spec, stale-read or issue-coverage checks; reject malformed collections.
13
+
7
14
  ## [0.14.16] - 2026-09-25
8
15
 
9
16
  ### Changed
@@ -11,7 +11,7 @@ import hostapi # noqa: E402
11
11
  class PiHost(hostapi.Host):
12
12
  name = "pi"
13
13
  adapter_name = "@arbiterforge/ca-pi"
14
- adapter_version = "0.14.16"
14
+ adapter_version = "0.14.17"
15
15
  update_target = "ca-pi"
16
16
  update_tag_prefix = "ca-pi-v"
17
17
  update_command = "pi update npm:@arbiterforge/ca-pi"
@@ -239,8 +239,13 @@ def main(argv):
239
239
  from _artifactlib import resolve_spec_file, helper_installation
240
240
  client, entry = resolve_spec_file(positional[0], helper_installation(__file__))
241
241
  result = client.call("validate", {"artifact_id": entry["artifact_id"], "gate": "ready"}, permit_invalid=True)
242
+ diagnostics = result.get("diagnostics")
243
+ if diagnostics is None:
244
+ diagnostics = [] # The native engine serializes no findings as null.
245
+ if not isinstance(diagnostics, list):
246
+ raise ValueError("HTML validation diagnostics must be a list or null")
242
247
  findings = ["[INVALID-HTML-SPEC] " + item["code"] + ": " + item["message"]
243
- for item in result.get("diagnostics", [])]
248
+ for item in diagnostics]
244
249
  # Explicit source->criterion mappings replace fuzzy scope matching.
245
250
  # The legacy issue-checkbox heuristic is retained ONLY for external
246
251
  # issue text until issue-source records receive their own schema.
@@ -313,7 +313,7 @@ class Host:
313
313
 
314
314
  name = "claude"
315
315
  adapter_name = "ca"
316
- adapter_version = "2.21.16"
316
+ adapter_version = "2.21.17"
317
317
 
318
318
  # Update-notifier descriptor. Each independently versioned host overrides
319
319
  # these three values in its per-plugin _host.py. Keeping the target,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arbiterforge/ca-pi",
3
- "version": "0.14.16",
3
+ "version": "0.14.17",
4
4
  "private": true,
5
5
  "license": "AGPL-3.0-only",
6
6
  "type": "module",