@nebulacomponents/citable 1.18.1 → 1.18.2

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 (135) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/dist/universal/.agents/skills/citable/SKILL.md +1 -1
  3. package/dist/universal/.agents/skills/citable/VERSION +1 -1
  4. package/dist/universal/.agents/skills/citable/commands/artifact-interchange.md +5 -0
  5. package/dist/universal/.agents/skills/citable/commands/remediation.md +1 -1
  6. package/dist/universal/.agents/skills/citable/commands/sow.md +2 -2
  7. package/dist/universal/.agents/skills/citable/manifest.json +11 -9
  8. package/dist/universal/.agents/skills/citable/schemas/cro-report.schema.json +112 -0
  9. package/dist/universal/.agents/skills/citable/schemas/search-report.schema.json +99 -0
  10. package/dist/universal/.agents/skills/citable/schemas/sow.schema.json +3 -2
  11. package/dist/universal/.claude/agents/citable/manifest.json +2 -2
  12. package/dist/universal/.claude/skills/citable/SKILL.md +1 -1
  13. package/dist/universal/.claude/skills/citable/VERSION +1 -1
  14. package/dist/universal/.claude/skills/citable/commands/artifact-interchange.md +5 -0
  15. package/dist/universal/.claude/skills/citable/commands/remediation.md +1 -1
  16. package/dist/universal/.claude/skills/citable/commands/sow.md +2 -2
  17. package/dist/universal/.claude/skills/citable/manifest.json +11 -9
  18. package/dist/universal/.claude/skills/citable/schemas/cro-report.schema.json +112 -0
  19. package/dist/universal/.claude/skills/citable/schemas/search-report.schema.json +99 -0
  20. package/dist/universal/.claude/skills/citable/schemas/sow.schema.json +3 -2
  21. package/dist/universal/.cursor/skills/citable/SKILL.md +1 -1
  22. package/dist/universal/.cursor/skills/citable/VERSION +1 -1
  23. package/dist/universal/.cursor/skills/citable/commands/artifact-interchange.md +5 -0
  24. package/dist/universal/.cursor/skills/citable/commands/remediation.md +1 -1
  25. package/dist/universal/.cursor/skills/citable/commands/sow.md +2 -2
  26. package/dist/universal/.cursor/skills/citable/manifest.json +11 -9
  27. package/dist/universal/.cursor/skills/citable/schemas/cro-report.schema.json +112 -0
  28. package/dist/universal/.cursor/skills/citable/schemas/search-report.schema.json +99 -0
  29. package/dist/universal/.cursor/skills/citable/schemas/sow.schema.json +3 -2
  30. package/dist/universal/.gemini/skills/citable/SKILL.md +1 -1
  31. package/dist/universal/.gemini/skills/citable/VERSION +1 -1
  32. package/dist/universal/.gemini/skills/citable/commands/artifact-interchange.md +5 -0
  33. package/dist/universal/.gemini/skills/citable/commands/remediation.md +1 -1
  34. package/dist/universal/.gemini/skills/citable/commands/sow.md +2 -2
  35. package/dist/universal/.gemini/skills/citable/manifest.json +11 -9
  36. package/dist/universal/.gemini/skills/citable/schemas/cro-report.schema.json +112 -0
  37. package/dist/universal/.gemini/skills/citable/schemas/search-report.schema.json +99 -0
  38. package/dist/universal/.gemini/skills/citable/schemas/sow.schema.json +3 -2
  39. package/dist/universal/.github/skills/citable/SKILL.md +1 -1
  40. package/dist/universal/.github/skills/citable/VERSION +1 -1
  41. package/dist/universal/.github/skills/citable/commands/artifact-interchange.md +5 -0
  42. package/dist/universal/.github/skills/citable/commands/remediation.md +1 -1
  43. package/dist/universal/.github/skills/citable/commands/sow.md +2 -2
  44. package/dist/universal/.github/skills/citable/manifest.json +11 -9
  45. package/dist/universal/.github/skills/citable/schemas/cro-report.schema.json +112 -0
  46. package/dist/universal/.github/skills/citable/schemas/search-report.schema.json +99 -0
  47. package/dist/universal/.github/skills/citable/schemas/sow.schema.json +3 -2
  48. package/dist/universal/.kiro/skills/citable/SKILL.md +1 -1
  49. package/dist/universal/.kiro/skills/citable/VERSION +1 -1
  50. package/dist/universal/.kiro/skills/citable/commands/artifact-interchange.md +5 -0
  51. package/dist/universal/.kiro/skills/citable/commands/remediation.md +1 -1
  52. package/dist/universal/.kiro/skills/citable/commands/sow.md +2 -2
  53. package/dist/universal/.kiro/skills/citable/manifest.json +11 -9
  54. package/dist/universal/.kiro/skills/citable/schemas/cro-report.schema.json +112 -0
  55. package/dist/universal/.kiro/skills/citable/schemas/search-report.schema.json +99 -0
  56. package/dist/universal/.kiro/skills/citable/schemas/sow.schema.json +3 -2
  57. package/dist/universal/.opencode/skills/citable/SKILL.md +1 -1
  58. package/dist/universal/.opencode/skills/citable/VERSION +1 -1
  59. package/dist/universal/.opencode/skills/citable/commands/artifact-interchange.md +5 -0
  60. package/dist/universal/.opencode/skills/citable/commands/remediation.md +1 -1
  61. package/dist/universal/.opencode/skills/citable/commands/sow.md +2 -2
  62. package/dist/universal/.opencode/skills/citable/manifest.json +11 -9
  63. package/dist/universal/.opencode/skills/citable/schemas/cro-report.schema.json +112 -0
  64. package/dist/universal/.opencode/skills/citable/schemas/search-report.schema.json +99 -0
  65. package/dist/universal/.opencode/skills/citable/schemas/sow.schema.json +3 -2
  66. package/dist/universal/.pi/agent/skills/citable/SKILL.md +1 -1
  67. package/dist/universal/.pi/agent/skills/citable/VERSION +1 -1
  68. package/dist/universal/.pi/agent/skills/citable/commands/artifact-interchange.md +5 -0
  69. package/dist/universal/.pi/agent/skills/citable/commands/remediation.md +1 -1
  70. package/dist/universal/.pi/agent/skills/citable/commands/sow.md +2 -2
  71. package/dist/universal/.pi/agent/skills/citable/manifest.json +11 -9
  72. package/dist/universal/.pi/agent/skills/citable/schemas/cro-report.schema.json +112 -0
  73. package/dist/universal/.pi/agent/skills/citable/schemas/search-report.schema.json +99 -0
  74. package/dist/universal/.pi/agent/skills/citable/schemas/sow.schema.json +3 -2
  75. package/dist/universal/.qoder/skills/citable/SKILL.md +1 -1
  76. package/dist/universal/.qoder/skills/citable/VERSION +1 -1
  77. package/dist/universal/.qoder/skills/citable/commands/artifact-interchange.md +5 -0
  78. package/dist/universal/.qoder/skills/citable/commands/remediation.md +1 -1
  79. package/dist/universal/.qoder/skills/citable/commands/sow.md +2 -2
  80. package/dist/universal/.qoder/skills/citable/manifest.json +11 -9
  81. package/dist/universal/.qoder/skills/citable/schemas/cro-report.schema.json +112 -0
  82. package/dist/universal/.qoder/skills/citable/schemas/search-report.schema.json +99 -0
  83. package/dist/universal/.qoder/skills/citable/schemas/sow.schema.json +3 -2
  84. package/dist/universal/.rovodev/skills/citable/SKILL.md +1 -1
  85. package/dist/universal/.rovodev/skills/citable/VERSION +1 -1
  86. package/dist/universal/.rovodev/skills/citable/commands/artifact-interchange.md +5 -0
  87. package/dist/universal/.rovodev/skills/citable/commands/remediation.md +1 -1
  88. package/dist/universal/.rovodev/skills/citable/commands/sow.md +2 -2
  89. package/dist/universal/.rovodev/skills/citable/manifest.json +11 -9
  90. package/dist/universal/.rovodev/skills/citable/schemas/cro-report.schema.json +112 -0
  91. package/dist/universal/.rovodev/skills/citable/schemas/search-report.schema.json +99 -0
  92. package/dist/universal/.rovodev/skills/citable/schemas/sow.schema.json +3 -2
  93. package/dist/universal/.trae/skills/citable/SKILL.md +1 -1
  94. package/dist/universal/.trae/skills/citable/VERSION +1 -1
  95. package/dist/universal/.trae/skills/citable/commands/artifact-interchange.md +5 -0
  96. package/dist/universal/.trae/skills/citable/commands/remediation.md +1 -1
  97. package/dist/universal/.trae/skills/citable/commands/sow.md +2 -2
  98. package/dist/universal/.trae/skills/citable/manifest.json +11 -9
  99. package/dist/universal/.trae/skills/citable/schemas/cro-report.schema.json +112 -0
  100. package/dist/universal/.trae/skills/citable/schemas/search-report.schema.json +99 -0
  101. package/dist/universal/.trae/skills/citable/schemas/sow.schema.json +3 -2
  102. package/dist/universal/.trae-cn/skills/citable/SKILL.md +1 -1
  103. package/dist/universal/.trae-cn/skills/citable/VERSION +1 -1
  104. package/dist/universal/.trae-cn/skills/citable/commands/artifact-interchange.md +5 -0
  105. package/dist/universal/.trae-cn/skills/citable/commands/remediation.md +1 -1
  106. package/dist/universal/.trae-cn/skills/citable/commands/sow.md +2 -2
  107. package/dist/universal/.trae-cn/skills/citable/manifest.json +11 -9
  108. package/dist/universal/.trae-cn/skills/citable/schemas/cro-report.schema.json +112 -0
  109. package/dist/universal/.trae-cn/skills/citable/schemas/search-report.schema.json +99 -0
  110. package/dist/universal/.trae-cn/skills/citable/schemas/sow.schema.json +3 -2
  111. package/dist/universal/manifest.json +136 -112
  112. package/package.json +2 -1
  113. package/schemas/cro-report.schema.json +112 -0
  114. package/schemas/search-report.schema.json +99 -0
  115. package/schemas/sow.schema.json +3 -2
  116. package/skill/SKILL.md +1 -1
  117. package/skill/commands/artifact-interchange.md +5 -0
  118. package/skill/commands/remediation.md +1 -1
  119. package/skill/commands/sow.md +2 -2
  120. package/src/analysis/behavioral.js +5 -4
  121. package/src/analysis/eeat.js +10 -9
  122. package/src/analysis/offpage.js +19 -36
  123. package/src/analysis/readiness.js +8 -2
  124. package/src/artifacts/verifyCustomerArtifact.js +283 -0
  125. package/src/cli/index.js +8 -1
  126. package/src/reporting/executiveCroReport.js +393 -229
  127. package/src/reporting/executiveExport.js +6 -2
  128. package/src/reporting/executiveSearchReport.js +519 -271
  129. package/src/shared/domainUtils.js +140 -0
  130. package/src/shared/epistemicStatus.js +111 -0
  131. package/src/shared/evidenceSourceResolver.js +286 -0
  132. package/src/shared/htmlEscape.js +65 -0
  133. package/src/shared/runPackageVerifier.js +153 -0
  134. package/src/sow/admissibilityGate.js +20 -2
  135. package/src/sow/generateSow.js +125 -159
package/CHANGELOG.md CHANGED
@@ -15,6 +15,36 @@ _No entries yet. See [`BOUNTY.md`](BOUNTY.md) to submit the first one._
15
15
 
16
16
  ## Unreleased
17
17
 
18
+ ## 1.18.2 — 2026-09-10
19
+
20
+ ### Fixed — Executive Reporting, Evidence Provenance, and Commercial Artifact Hardening
21
+
22
+ - **Eliminated Fabricated Metrics in Executive Reports**:
23
+ - `src/reporting/executiveSearchReport.js`: Replaced all hardcoded fallback percentages and default metrics across Visibility Baseline, Organic Performance, SERP Landscape, AEO/GEO, E-E-A-T, Competitive Intelligence, Backlinks, and Measurement Integrity with standardized `NOT_OBSERVED` epistemic status envelopes whenever underlying analytics or platform telemetry (GSC, GA4, GTM, backlink crawls) is absent.
24
+ - `src/reporting/executiveCroReport.js`: Refactored to separate empirical observations from predictive hypotheses and causal evidence across all 25 enterprise pillars. Telemetry metrics (e.g. bounce rates, rage clicks, cohort divergence) fail closed to `NOT_OBSERVED` when session event streams are not provided.
25
+ - Added strict JSON schemas: `schemas/search-report.schema.json` and `schemas/cro-report.schema.json` compiled and validated with Ajv.
26
+ - **Unified Canonical Evidence Source Resolver & Run Verifier**:
27
+ - `src/shared/evidenceSourceResolver.js`: Unified evidence source resolution (`DIRECT_INPUT`, `EXPLICIT_RUN`, `LIVE_INSPECTION`, `LATEST_RECORDED_RUN`, `SAMPLE`) across SOW and Executive Reports with deterministic chronology and tie-breaking.
28
+ - `src/shared/runPackageVerifier.js`: Enforces checksum verification, file sha256 integrity, manifest schema validation, and run completion checks.
29
+ - **Epistemic Invariant Envelopes**:
30
+ - `src/shared/epistemicStatus.js`: Defined standard epistemic status values (`OBSERVED`, `DERIVED`, `MODELED`, `HUMAN_REVIEWED`, `NOT_OBSERVED`, `NOT_APPLICABLE`, `UNRESOLVED`, `SYNTHETIC_SAMPLE`) and typed value wrappers ensuring missing facts are explicitly visible rather than silently substituted with plausible numbers.
31
+ - **Domain & Public Suffix Boundary Parsing**:
32
+ - `src/shared/domainUtils.js`: Implemented multi-part public suffix extraction (`extractRegistrableDomain`, `extractPublicSuffix`, `isAuthoritativeDomain`) handling multi-part suffixes (e.g. `.co.uk`, `.com.au`, `.gov.uk`) and preventing substring boundary spoofing.
33
+ - `src/analysis/eeat.js`: Replaced naive substring matching with authoritative domain checks and enforced strict page-scoped claim filtering.
34
+ - `src/analysis/offpage.js`: Applied public suffix parsing to backlink profiles; empty anchor text is strictly categorized as `empty_anchor` rather than branded; corrected multi-token `rel` attribution (`nofollow`, `ugc`, `sponsored`).
35
+ - **AEO Readiness Scoring & Null Safety**:
36
+ - `src/analysis/readiness.js`: Standardized score naming (`score`, `readiness_score`), eliminated NaN drift, reclassified checks as `MODELED_EXTRACTION_READINESS` (`epistemic_status: 'MODELED'`).
37
+ - `src/analysis/behavioral.js`: Fixed null-handling when telemetry streams are absent.
38
+ - **Commercial SOW Contractual Mode Hardening**:
39
+ - `src/sow/generateSow.js` & `src/sow/admissibilityGate.js`: Refactored to use canonical source resolver and HTML escaping. In contractual mode, explicit commercial parameters and non-empty in-scope properties are strictly required; built-in template default owners are refused (`REFUSE-TEMPLATE-DEFAULT-OWNER`); `acceptance_basis` is recorded on every requirement; finding ID and requirement ID uniqueness invariants are enforced.
40
+ - **HTML/Markdown Escaping & Injection Protection**:
41
+ - `src/shared/htmlEscape.js`: Implemented canonical escaping utilities (`escapeHtml`, `escapeHtmlAttr`, `sanitizeUrl`, `escapeMarkdownTableCell`, `sanitizeForMarkdown`) protecting all rendered client names, finding summaries, recommendations, and subjects against raw script and event handler injection.
42
+ - **Customer Artifact Verification Tooling**:
43
+ - `src/artifacts/verifyCustomerArtifact.js`: Validates customer artifacts (SOW, Search Report, CRO Report) against schemas, verifies arithmetic invariants, enforces absence of synthetic/sample data in contractual mode, and detects unescaped script injections. Exposed via CLI command `citable artifacts verify-customer <file>`.
44
+ - **Supply Chain Security & Schema Validation**:
45
+ - Pinned all GitHub Action steps across all 8 workflows to immutable commit SHAs.
46
+ - Added `npm run validate:schemas` compiling all 64 schemas cleanly with Ajv.
47
+
18
48
  ## 1.18.1 — 2026-09-10
19
49
 
20
50
  ### Fixed — SOW Evidence Traceability & Admissibility Gate Hardening
@@ -7,7 +7,7 @@ description: >
7
7
  generative engine optimization, structured data governance, claim substantiation,
8
8
  crawler policy, entity consistency, content discoverability, or wants a site audited
9
9
  for how search and AI systems will retrieve, understand, cite, or recommend it.
10
- version: 1.18.1
10
+ version: 1.18.2
11
11
  ---
12
12
 
13
13
  # Citable — evidence and change control for search and AI citation readiness
@@ -1 +1 @@
1
- 1.18.1
1
+ 1.18.2
@@ -7,6 +7,7 @@ external workspaces without changing its canonical bytes.
7
7
  citable artifacts export <run-id> --output <directory>
8
8
  citable artifacts verify --input <directory>
9
9
  citable artifacts import --input <directory>
10
+ citable artifacts verify-customer <file>
10
11
  ```
11
12
 
12
13
  An export contains the original run package plus
@@ -26,3 +27,7 @@ was authentic, that external observations were representative or complete, or
26
27
  that an intervention caused an outcome. Hosted tenancy, authentication,
27
28
  storage, retention, billing, scheduling, and dashboards are outside this
28
29
  contract.
30
+
31
+ Use `citable artifacts verify-customer <file>` to validate customer deliverables
32
+ (SOW, Search, and CRO JSON reports) against their JSON Schemas, verify arithmetic
33
+ consistency (e.g. minor-unit fee totals), and reject unescaped script or event handler injections.
@@ -12,7 +12,7 @@ The remediation suite provides safe, gated code fixes for deterministic technica
12
12
 
13
13
  ## 1. Safe Patch Application (`citable remediate`)
14
14
 
15
- 1. **Framework Detection**: Identifies target source syntax (`jsx`, `tsx`, `vue`, `html`). Fails closed on unknown or ambiguous frameworks.
15
+ 1. **Framework Detection**: Identifies target source syntax (`jsx`, `tsx`, `vue`, `svelte`, `html`). Fails closed on unknown or ambiguous frameworks.
16
16
  2. **Idempotent AST Patching**: Patches are mathematically verified to be idempotent (`applyPatchDetailed`): applying the patch a second time produces an identical AST (a fixed point).
17
17
  3. **Structural Validation Gate**: Runs `validatePatchedSource` to confirm that the patch does not break AST structure, introduce syntax errors, or alter unrelated code blocks.
18
18
  4. **Confidence Threshold**: Computes an explicit multi-factor confidence score (`computeConfidence`). `--write` is refused if confidence falls below `0.70`.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  command: /citable sow generate [--target <dir|url>] [--run <id>] [--budget <amount>] [--budget-minor <cents>] [--format md|html|json] [--output <path>] [--sample] [--draft]
3
- purpose: Generate a contractually binding, evidence-traceable enterprise Statement of Work (SOW) from verified audit findings through a formal 7-gate scope admissibility filter and 7-column traceability matrix.
3
+ purpose: Generate a contractually binding, evidence-traceable enterprise Statement of Work (SOW) from verified audit findings through a formal 8-gate scope admissibility filter and 7-column traceability matrix.
4
4
  preconditions: [at least one finalized audit run with verified findings or live target; sample mode required for synthetic demonstrations]
5
5
  failure_behaviour: absent or unverified findings in contractual mode -> NoFindingsError; all findings refused -> NoAdmissibleRequirementsError; non-existent run -> RunNotFoundError; negative or sub-cent budget -> BudgetCalculationError; invariant drift -> SowInvariantError
6
6
  artifacts_created: [SOW.md, SOW.html, or SOW.json at specified output path]
@@ -34,7 +34,7 @@ Acceptance Test (automated closed-loop detector rerun)
34
34
 
35
35
  ## 2. The Scope Admissibility Gate
36
36
 
37
- Audit findings do NOT automatically become contractual obligations. Every candidate finding must pass 7 admissibility gates:
37
+ Audit findings do NOT automatically become contractual obligations. Every candidate finding must pass 8 admissibility gates:
38
38
 
39
39
  | Gate | Verification Check | Failure Refusal Code | Contractual Handling |
40
40
  | :--- | :--- | :--- | :--- |
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "citable",
3
- "version": "1.18.1",
3
+ "version": "1.18.2",
4
4
  "managedBy": "citable-cli",
5
5
  "provider": "codex",
6
6
  "providerName": "OpenAI Codex",
7
7
  "scope": "bundle",
8
- "sourcePackage": "@nebulacomponents/citable@1.18.1",
8
+ "sourcePackage": "@nebulacomponents/citable@1.18.2",
9
9
  "variantPath": ".agents/skills/citable",
10
10
  "agentProfiles": {
11
11
  "status": "unsupported",
@@ -17,7 +17,7 @@
17
17
  "agents/citable-semantic-reviewer.md": "sha256:77582263a048ea41ae3f7ee326dbd036222fab81ed83bda98034ec83ee21ef2e",
18
18
  "agents/citable-sow-architect.md": "sha256:d55cf8bc2ab8f364c0d95ec39fc44406684110d1e4d1ff2e34702ded003094b4",
19
19
  "commands/action-findings.md": "sha256:b1d5c4d8d8b1092bc73b99430bea0a2e460031658e42bed33eb94da9a3c0e48f",
20
- "commands/artifact-interchange.md": "sha256:18d56fbfa6bb3f23f08593a9a8135e51c268618b049e53c793969b68000875c3",
20
+ "commands/artifact-interchange.md": "sha256:300062880e141b80ce23024c0a9b309e93a1e2aeb87e22a68860d27388a3acb7",
21
21
  "commands/delivery.md": "sha256:3b29250f9e9f84442812e320a70d5d2784b4286e91af3866f99cb6062a85a10f",
22
22
  "commands/field-validation.md": "sha256:4f24b2758eef746d704b218364f1e45ee9e07418c8ae111081b1fd41f93dde2d",
23
23
  "commands/governance.md": "sha256:41792a2a08930c604cc7b635c23fb3cbdeebc5af610ef38c795f1a412c4a0816",
@@ -29,10 +29,10 @@
29
29
  "commands/page-work.md": "sha256:965a66e59bdf7b0da482d26fade53b3d265885ece5d463fe83b0789ebefaef3e",
30
30
  "commands/plan-audit.md": "sha256:69875c9654e13b84566dafb16afe5afe08cffb9f3bded1f2d8d2261ae871c869",
31
31
  "commands/README.md": "sha256:683b226020582dd93e24a2fb59ce6264735f44eb26353f977153034a615f871c",
32
- "commands/remediation.md": "sha256:7f983ecf63ec6741fa7e291243c6faeb44a5b140655a5ec3a62bcbc4c16d8870",
32
+ "commands/remediation.md": "sha256:f2a90608079d823b8192aa7acad8a60c923ac02b4e01e5ca653f45e9f52c7998",
33
33
  "commands/reporting.md": "sha256:f560f3c8349fcdaf6d3c3a27968016e20ef42ef2473292f7b83260cfb4b3b2e6",
34
34
  "commands/reviews.md": "sha256:902904aaa405fe5724cf0662c7a5a36eab9a4fe0eb81cbd95ffa2fff946e0ac8",
35
- "commands/sow.md": "sha256:576c0ff119e5a9193476c20aee65019dbe91502d624d3a8fc8469915a3bc2b19",
35
+ "commands/sow.md": "sha256:caf4b7e4b9f0e801fbc86f40e6efb8a057d1243dc488b0bc629b8fb2b90c6933",
36
36
  "commands/validate-render.md": "sha256:a8e1d04d40b84d57c35039250d98c6a7302cd44a148a8c3b9d9cfb92678c4347",
37
37
  "policies/crawler-policy-template.md": "sha256:15c88a4eeb21f53f71e5250dd3eb2d2791a814b304eaefce8bb30e2bdf2e2e59",
38
38
  "references/aeo-geo-validation.md": "sha256:4b0041764f2fdbfbff1e1a2907eaed02cf0aef491254a9c98ec9250ff1084e80",
@@ -71,6 +71,7 @@
71
71
  "schemas/corroboration-import.schema.json": "sha256:927983d0590f1ec569e86195d2031be0cd212f9436ff98acca468cbae108d85e",
72
72
  "schemas/crawler-identity.schema.json": "sha256:e1e3e6da203a8bc49fba8f9bbde525368891db022d542fc615b677401825351d",
73
73
  "schemas/crawler.schema.json": "sha256:1a113dfb80bc6cde904c3ea648c82ea1d88fe50f2c1a0e7175d44abba28ac64e",
74
+ "schemas/cro-report.schema.json": "sha256:270cfe946d3dce007672c5fd5e052f07e3322c85a2bfcc0cd47f34ce569f2fb1",
74
75
  "schemas/customer-outcome.schema.json": "sha256:c0cdfee31a692feadb31dc6be734d45ae178ee53f28349c2a9e7504bdfcf9e50",
75
76
  "schemas/decision.schema.json": "sha256:7c30f3ad83a6aa0b67ecc51ac6691e5e041b633d01bab17cee2b5218d926204e",
76
77
  "schemas/deployment-receipt.schema.json": "sha256:789455907e7f3039fd55ee5b2568e09871128f513f5ddfe1f3afac1a4dd6b2bd",
@@ -111,13 +112,14 @@
111
112
  "schemas/sampling-plan.schema.json": "sha256:005f70f149baaacd7de698548d556d3e401c630978748271b0e14a74726dd413",
112
113
  "schemas/scenario.schema.json": "sha256:3f5bc2032d08f973600db068f475176a0e4706b33be42f99c778fe755a0ff38b",
113
114
  "schemas/schedule.schema.json": "sha256:645df065bf33577a960c0bf8bb97e141e9326840303569468dae8a553d468482",
115
+ "schemas/search-report.schema.json": "sha256:0ae2dad77cf3c6f2abac22a8180d66bde8ebd044ed6324a56329cd12a3c898f2",
114
116
  "schemas/source-identity-chain.schema.json": "sha256:a65d9c12eaed1bd6b637c66a2f9362c17287fdfcb454d8676fb611d2d28aa019",
115
- "schemas/sow.schema.json": "sha256:14ff2e24e03f678d3c72f97c27b0a68e117472dcc640aab7491bba1a82457906",
117
+ "schemas/sow.schema.json": "sha256:3a3fd6048a747a9bc0cfaea98920376b043616a33c953a9eb8b74d0ae32dded0",
116
118
  "schemas/variance.schema.json": "sha256:68389f64f0a3be13ff8951e8eefba9a5c31d0738325cb47e37c1a8435bea48f0",
117
119
  "scripts/README.md": "sha256:9eee4e8beb4579a183bd714c9dd24b83abd020753eada5caeffae004739d60b5",
118
- "SKILL.md": "sha256:d50cc48a120fee6ad3c3bf0d1bfa8ceb5bba3614bdc6af8aacc4293b9e4a1970",
120
+ "SKILL.md": "sha256:a2c2ce3aced71fc2a66f2e46b4a9fcc10b65819dcef58176b2cefe674d6a941b",
119
121
  "templates/finding-review.md": "sha256:b270a83d3f015150aac80249ae9314979c0befea39ff92ec455f9a5aaa73404c",
120
- "VERSION": "sha256:71fc7bd16b1bc9b3681085fb0be8aea0b3a37d90d1685938dc2e8a31bf8c9b94"
122
+ "VERSION": "sha256:0a1b17e91d514c0c9e88520e6091e2d52a6faf8296892cad7355ff0723a42914"
121
123
  },
122
- "treeHash": "sha256:96d4589fced40f7030b6c1e48132abf2d37ebae771a1401d6f2a74e4f8fc52d1"
124
+ "treeHash": "sha256:2d4210d9dd26b7952f53964402abf06c8ae12ae43cb8ac5c568f070ab44b0001"
123
125
  }
@@ -0,0 +1,112 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "citable://schemas/cro-report.schema.json",
4
+ "title": "Enterprise CRO & Journey Intelligence Executive Report",
5
+ "type": "object",
6
+ "required": [
7
+ "fact_status",
8
+ "report_title",
9
+ "client_name",
10
+ "target_domain",
11
+ "generated_at",
12
+ "overall_conversion_readiness",
13
+ "pillars",
14
+ "evidence_register",
15
+ "decision_summary",
16
+ "generation_provenance"
17
+ ],
18
+ "properties": {
19
+ "$schema": { "type": "string" },
20
+ "fact_status": { "type": "string" },
21
+ "epistemic_status": { "type": "string" },
22
+ "report_title": { "type": "string" },
23
+ "client_name": { "type": "string" },
24
+ "target_domain": { "type": "string" },
25
+ "generated_at": { "type": "string" },
26
+ "overall_conversion_readiness": { "type": "number", "minimum": 0, "maximum": 100 },
27
+ "epistemological_framework": {
28
+ "type": "object",
29
+ "properties": {
30
+ "observation": { "type": "string" },
31
+ "hypothesis": { "type": "string" },
32
+ "causation": { "type": "string" },
33
+ "unknowns": { "type": "string" }
34
+ }
35
+ },
36
+ "pillars": {
37
+ "type": "object",
38
+ "required": [
39
+ "1", "2", "3", "4", "5", "6", "7", "8", "9", "10",
40
+ "11", "12", "13", "14", "15", "16", "17", "18", "19", "20",
41
+ "21", "22", "23", "24", "25"
42
+ ],
43
+ "additionalProperties": false,
44
+ "patternProperties": {
45
+ "^[0-9]+$": {
46
+ "type": "object",
47
+ "required": ["name", "data"],
48
+ "properties": {
49
+ "name": { "type": "string" },
50
+ "data": {}
51
+ }
52
+ }
53
+ }
54
+ },
55
+ "evidence_register": {
56
+ "type": "array",
57
+ "items": {
58
+ "type": "object",
59
+ "required": ["evidence_id", "source", "methodology", "confidence_level"],
60
+ "properties": {
61
+ "evidence_id": { "type": "string", "pattern": "^EVD-CRO-[0-9]+$" },
62
+ "source": { "type": "string" },
63
+ "title": { "type": "string" },
64
+ "observation_date": { "type": "string" },
65
+ "methodology": { "type": "string" },
66
+ "confidence_level": { "type": "string" },
67
+ "data_snapshot": {}
68
+ }
69
+ }
70
+ },
71
+ "decision_summary": {
72
+ "type": "object",
73
+ "required": [
74
+ "observed_conversion_failures",
75
+ "evidence_supported_hypotheses",
76
+ "causal_findings",
77
+ "unresolved_unknowns",
78
+ "recommended_interventions"
79
+ ],
80
+ "properties": {
81
+ "observed_conversion_failures": { "type": "array", "items": { "type": "string" } },
82
+ "evidence_supported_hypotheses": { "type": "array", "items": { "type": "string" } },
83
+ "causal_findings": { "type": "array", "items": { "type": "string" } },
84
+ "unresolved_unknowns": { "type": "array", "items": { "type": "string" } },
85
+ "recommended_interventions": { "type": "array", "items": { "type": "string" } }
86
+ },
87
+ "additionalProperties": false
88
+ },
89
+ "generation_provenance": {
90
+ "type": "object",
91
+ "required": [
92
+ "generated_at",
93
+ "generator_version",
94
+ "generation_mode",
95
+ "source_type",
96
+ "synthetic_evidence"
97
+ ],
98
+ "properties": {
99
+ "generated_at": { "type": "string" },
100
+ "generator_version": { "type": "string" },
101
+ "generation_mode": { "type": "string", "enum": ["CONTRACTUAL", "DRAFT", "NON_CONTRACTUAL_SAMPLE"] },
102
+ "source_type": { "type": "string" },
103
+ "source_identifier": { "type": ["string", "null"] },
104
+ "source_findings_count": { "type": "integer", "minimum": 0 },
105
+ "integrity_hash": { "type": ["string", "null"] },
106
+ "synthetic_evidence": { "type": "boolean" }
107
+ },
108
+ "additionalProperties": false
109
+ }
110
+ },
111
+ "additionalProperties": false
112
+ }
@@ -0,0 +1,99 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "citable://schemas/search-report.schema.json",
4
+ "title": "Enterprise Search Intelligence & Governance Executive Report",
5
+ "type": "object",
6
+ "required": [
7
+ "fact_status",
8
+ "report_title",
9
+ "client_name",
10
+ "target_domain",
11
+ "generated_at",
12
+ "overall_readiness_score",
13
+ "pillars",
14
+ "evidence_register",
15
+ "decision_summary",
16
+ "generation_provenance"
17
+ ],
18
+ "properties": {
19
+ "$schema": { "type": "string" },
20
+ "fact_status": { "type": "string" },
21
+ "epistemic_status": { "type": "string" },
22
+ "report_title": { "type": "string" },
23
+ "client_name": { "type": "string" },
24
+ "target_domain": { "type": "string" },
25
+ "generated_at": { "type": "string" },
26
+ "overall_readiness_score": { "type": "number", "minimum": 0, "maximum": 100 },
27
+ "pillars": {
28
+ "type": "object",
29
+ "required": ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19"],
30
+ "additionalProperties": false,
31
+ "patternProperties": {
32
+ "^[0-9]+$": {
33
+ "type": "object",
34
+ "required": ["name", "data"],
35
+ "properties": {
36
+ "name": { "type": "string" },
37
+ "data": {}
38
+ }
39
+ }
40
+ }
41
+ },
42
+ "evidence_register": {
43
+ "type": "array",
44
+ "items": {
45
+ "type": "object",
46
+ "required": ["evidence_id", "source", "methodology", "confidence_level"],
47
+ "properties": {
48
+ "evidence_id": { "type": "string", "pattern": "^EVD-SRCH-[0-9]+$" },
49
+ "source": { "type": "string" },
50
+ "title": { "type": "string" },
51
+ "observation_date": { "type": "string" },
52
+ "methodology": { "type": "string" },
53
+ "confidence_level": { "type": "string" },
54
+ "data_snapshot": {}
55
+ }
56
+ }
57
+ },
58
+ "decision_summary": {
59
+ "type": "object",
60
+ "required": [
61
+ "confirmed_findings",
62
+ "inferred_opportunities",
63
+ "unresolved_unknowns",
64
+ "strategic_risks",
65
+ "actions_requiring_leadership_approval"
66
+ ],
67
+ "properties": {
68
+ "confirmed_findings": { "type": "array", "items": { "type": "string" } },
69
+ "inferred_opportunities": { "type": "array", "items": { "type": "string" } },
70
+ "unresolved_unknowns": { "type": "array", "items": { "type": "string" } },
71
+ "strategic_risks": { "type": "array", "items": { "type": "string" } },
72
+ "actions_requiring_leadership_approval": { "type": "array", "items": { "type": "string" } }
73
+ },
74
+ "additionalProperties": false
75
+ },
76
+ "generation_provenance": {
77
+ "type": "object",
78
+ "required": [
79
+ "generated_at",
80
+ "generator_version",
81
+ "generation_mode",
82
+ "source_type",
83
+ "synthetic_evidence"
84
+ ],
85
+ "properties": {
86
+ "generated_at": { "type": "string" },
87
+ "generator_version": { "type": "string" },
88
+ "generation_mode": { "type": "string", "enum": ["CONTRACTUAL", "DRAFT", "NON_CONTRACTUAL_SAMPLE"] },
89
+ "source_type": { "type": "string" },
90
+ "source_identifier": { "type": ["string", "null"] },
91
+ "source_findings_count": { "type": "integer", "minimum": 0 },
92
+ "integrity_hash": { "type": ["string", "null"] },
93
+ "synthetic_evidence": { "type": "boolean" }
94
+ },
95
+ "additionalProperties": false
96
+ }
97
+ },
98
+ "additionalProperties": false
99
+ }
@@ -52,7 +52,7 @@
52
52
  },
53
53
  "additionalProperties": false
54
54
  },
55
- "effective_date": { "type": "string" },
55
+ "effective_date": { "type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}$" },
56
56
  "term_days": { "type": "integer", "minimum": 1 },
57
57
  "currency": { "type": "string", "enum": ["USD"] },
58
58
  "currency_minor_unit_exponent": { "type": "integer", "enum": [2] },
@@ -377,7 +377,8 @@
377
377
  "evidence_ids": { "type": "array", "items": { "type": "string" }, "minItems": 1 },
378
378
  "severity": { "type": "string" },
379
379
  "target_subject": { "type": "string" },
380
- "acceptance_criteria": { "type": "string" }
380
+ "acceptance_criteria": { "type": "string" },
381
+ "acceptance_basis": { "type": "string" }
381
382
  },
382
383
  "additionalProperties": false
383
384
  }
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "citable-agent-profiles",
3
- "version": "1.18.1",
3
+ "version": "1.18.2",
4
4
  "managedBy": "citable-cli",
5
5
  "provider": "claude",
6
- "sourcePackage": "@nebulacomponents/citable@1.18.1",
6
+ "sourcePackage": "@nebulacomponents/citable@1.18.2",
7
7
  "files": {
8
8
  "citable-auditor.md": "sha256:06fe8d84834b2c09b7e7083aa6f57e94e837e0643dbe4ead4bbecf651fb41cad",
9
9
  "citable-remediator.md": "sha256:c990e929f411fc2f2de3aca759333502c956e96924b3a0f809ab0927062623dc",
@@ -7,7 +7,7 @@ description: >
7
7
  generative engine optimization, structured data governance, claim substantiation,
8
8
  crawler policy, entity consistency, content discoverability, or wants a site audited
9
9
  for how search and AI systems will retrieve, understand, cite, or recommend it.
10
- version: 1.18.1
10
+ version: 1.18.2
11
11
  ---
12
12
 
13
13
  # Citable — evidence and change control for search and AI citation readiness
@@ -1 +1 @@
1
- 1.18.1
1
+ 1.18.2
@@ -7,6 +7,7 @@ external workspaces without changing its canonical bytes.
7
7
  citable artifacts export <run-id> --output <directory>
8
8
  citable artifacts verify --input <directory>
9
9
  citable artifacts import --input <directory>
10
+ citable artifacts verify-customer <file>
10
11
  ```
11
12
 
12
13
  An export contains the original run package plus
@@ -26,3 +27,7 @@ was authentic, that external observations were representative or complete, or
26
27
  that an intervention caused an outcome. Hosted tenancy, authentication,
27
28
  storage, retention, billing, scheduling, and dashboards are outside this
28
29
  contract.
30
+
31
+ Use `citable artifacts verify-customer <file>` to validate customer deliverables
32
+ (SOW, Search, and CRO JSON reports) against their JSON Schemas, verify arithmetic
33
+ consistency (e.g. minor-unit fee totals), and reject unescaped script or event handler injections.
@@ -12,7 +12,7 @@ The remediation suite provides safe, gated code fixes for deterministic technica
12
12
 
13
13
  ## 1. Safe Patch Application (`citable remediate`)
14
14
 
15
- 1. **Framework Detection**: Identifies target source syntax (`jsx`, `tsx`, `vue`, `html`). Fails closed on unknown or ambiguous frameworks.
15
+ 1. **Framework Detection**: Identifies target source syntax (`jsx`, `tsx`, `vue`, `svelte`, `html`). Fails closed on unknown or ambiguous frameworks.
16
16
  2. **Idempotent AST Patching**: Patches are mathematically verified to be idempotent (`applyPatchDetailed`): applying the patch a second time produces an identical AST (a fixed point).
17
17
  3. **Structural Validation Gate**: Runs `validatePatchedSource` to confirm that the patch does not break AST structure, introduce syntax errors, or alter unrelated code blocks.
18
18
  4. **Confidence Threshold**: Computes an explicit multi-factor confidence score (`computeConfidence`). `--write` is refused if confidence falls below `0.70`.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  command: /citable sow generate [--target <dir|url>] [--run <id>] [--budget <amount>] [--budget-minor <cents>] [--format md|html|json] [--output <path>] [--sample] [--draft]
3
- purpose: Generate a contractually binding, evidence-traceable enterprise Statement of Work (SOW) from verified audit findings through a formal 7-gate scope admissibility filter and 7-column traceability matrix.
3
+ purpose: Generate a contractually binding, evidence-traceable enterprise Statement of Work (SOW) from verified audit findings through a formal 8-gate scope admissibility filter and 7-column traceability matrix.
4
4
  preconditions: [at least one finalized audit run with verified findings or live target; sample mode required for synthetic demonstrations]
5
5
  failure_behaviour: absent or unverified findings in contractual mode -> NoFindingsError; all findings refused -> NoAdmissibleRequirementsError; non-existent run -> RunNotFoundError; negative or sub-cent budget -> BudgetCalculationError; invariant drift -> SowInvariantError
6
6
  artifacts_created: [SOW.md, SOW.html, or SOW.json at specified output path]
@@ -34,7 +34,7 @@ Acceptance Test (automated closed-loop detector rerun)
34
34
 
35
35
  ## 2. The Scope Admissibility Gate
36
36
 
37
- Audit findings do NOT automatically become contractual obligations. Every candidate finding must pass 7 admissibility gates:
37
+ Audit findings do NOT automatically become contractual obligations. Every candidate finding must pass 8 admissibility gates:
38
38
 
39
39
  | Gate | Verification Check | Failure Refusal Code | Contractual Handling |
40
40
  | :--- | :--- | :--- | :--- |
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "citable",
3
- "version": "1.18.1",
3
+ "version": "1.18.2",
4
4
  "managedBy": "citable-cli",
5
5
  "provider": "claude",
6
6
  "providerName": "Claude Code",
7
7
  "scope": "bundle",
8
- "sourcePackage": "@nebulacomponents/citable@1.18.1",
8
+ "sourcePackage": "@nebulacomponents/citable@1.18.2",
9
9
  "variantPath": ".claude/skills/citable",
10
10
  "agentProfiles": {
11
11
  "status": "available",
@@ -24,7 +24,7 @@
24
24
  "agents/citable-semantic-reviewer.md": "sha256:77582263a048ea41ae3f7ee326dbd036222fab81ed83bda98034ec83ee21ef2e",
25
25
  "agents/citable-sow-architect.md": "sha256:d55cf8bc2ab8f364c0d95ec39fc44406684110d1e4d1ff2e34702ded003094b4",
26
26
  "commands/action-findings.md": "sha256:b1d5c4d8d8b1092bc73b99430bea0a2e460031658e42bed33eb94da9a3c0e48f",
27
- "commands/artifact-interchange.md": "sha256:18d56fbfa6bb3f23f08593a9a8135e51c268618b049e53c793969b68000875c3",
27
+ "commands/artifact-interchange.md": "sha256:300062880e141b80ce23024c0a9b309e93a1e2aeb87e22a68860d27388a3acb7",
28
28
  "commands/delivery.md": "sha256:3b29250f9e9f84442812e320a70d5d2784b4286e91af3866f99cb6062a85a10f",
29
29
  "commands/field-validation.md": "sha256:4f24b2758eef746d704b218364f1e45ee9e07418c8ae111081b1fd41f93dde2d",
30
30
  "commands/governance.md": "sha256:41792a2a08930c604cc7b635c23fb3cbdeebc5af610ef38c795f1a412c4a0816",
@@ -36,10 +36,10 @@
36
36
  "commands/page-work.md": "sha256:965a66e59bdf7b0da482d26fade53b3d265885ece5d463fe83b0789ebefaef3e",
37
37
  "commands/plan-audit.md": "sha256:69875c9654e13b84566dafb16afe5afe08cffb9f3bded1f2d8d2261ae871c869",
38
38
  "commands/README.md": "sha256:683b226020582dd93e24a2fb59ce6264735f44eb26353f977153034a615f871c",
39
- "commands/remediation.md": "sha256:7f983ecf63ec6741fa7e291243c6faeb44a5b140655a5ec3a62bcbc4c16d8870",
39
+ "commands/remediation.md": "sha256:f2a90608079d823b8192aa7acad8a60c923ac02b4e01e5ca653f45e9f52c7998",
40
40
  "commands/reporting.md": "sha256:f560f3c8349fcdaf6d3c3a27968016e20ef42ef2473292f7b83260cfb4b3b2e6",
41
41
  "commands/reviews.md": "sha256:902904aaa405fe5724cf0662c7a5a36eab9a4fe0eb81cbd95ffa2fff946e0ac8",
42
- "commands/sow.md": "sha256:576c0ff119e5a9193476c20aee65019dbe91502d624d3a8fc8469915a3bc2b19",
42
+ "commands/sow.md": "sha256:caf4b7e4b9f0e801fbc86f40e6efb8a057d1243dc488b0bc629b8fb2b90c6933",
43
43
  "commands/validate-render.md": "sha256:a8e1d04d40b84d57c35039250d98c6a7302cd44a148a8c3b9d9cfb92678c4347",
44
44
  "policies/crawler-policy-template.md": "sha256:15c88a4eeb21f53f71e5250dd3eb2d2791a814b304eaefce8bb30e2bdf2e2e59",
45
45
  "references/aeo-geo-validation.md": "sha256:4b0041764f2fdbfbff1e1a2907eaed02cf0aef491254a9c98ec9250ff1084e80",
@@ -78,6 +78,7 @@
78
78
  "schemas/corroboration-import.schema.json": "sha256:927983d0590f1ec569e86195d2031be0cd212f9436ff98acca468cbae108d85e",
79
79
  "schemas/crawler-identity.schema.json": "sha256:e1e3e6da203a8bc49fba8f9bbde525368891db022d542fc615b677401825351d",
80
80
  "schemas/crawler.schema.json": "sha256:1a113dfb80bc6cde904c3ea648c82ea1d88fe50f2c1a0e7175d44abba28ac64e",
81
+ "schemas/cro-report.schema.json": "sha256:270cfe946d3dce007672c5fd5e052f07e3322c85a2bfcc0cd47f34ce569f2fb1",
81
82
  "schemas/customer-outcome.schema.json": "sha256:c0cdfee31a692feadb31dc6be734d45ae178ee53f28349c2a9e7504bdfcf9e50",
82
83
  "schemas/decision.schema.json": "sha256:7c30f3ad83a6aa0b67ecc51ac6691e5e041b633d01bab17cee2b5218d926204e",
83
84
  "schemas/deployment-receipt.schema.json": "sha256:789455907e7f3039fd55ee5b2568e09871128f513f5ddfe1f3afac1a4dd6b2bd",
@@ -118,13 +119,14 @@
118
119
  "schemas/sampling-plan.schema.json": "sha256:005f70f149baaacd7de698548d556d3e401c630978748271b0e14a74726dd413",
119
120
  "schemas/scenario.schema.json": "sha256:3f5bc2032d08f973600db068f475176a0e4706b33be42f99c778fe755a0ff38b",
120
121
  "schemas/schedule.schema.json": "sha256:645df065bf33577a960c0bf8bb97e141e9326840303569468dae8a553d468482",
122
+ "schemas/search-report.schema.json": "sha256:0ae2dad77cf3c6f2abac22a8180d66bde8ebd044ed6324a56329cd12a3c898f2",
121
123
  "schemas/source-identity-chain.schema.json": "sha256:a65d9c12eaed1bd6b637c66a2f9362c17287fdfcb454d8676fb611d2d28aa019",
122
- "schemas/sow.schema.json": "sha256:14ff2e24e03f678d3c72f97c27b0a68e117472dcc640aab7491bba1a82457906",
124
+ "schemas/sow.schema.json": "sha256:3a3fd6048a747a9bc0cfaea98920376b043616a33c953a9eb8b74d0ae32dded0",
123
125
  "schemas/variance.schema.json": "sha256:68389f64f0a3be13ff8951e8eefba9a5c31d0738325cb47e37c1a8435bea48f0",
124
126
  "scripts/README.md": "sha256:9eee4e8beb4579a183bd714c9dd24b83abd020753eada5caeffae004739d60b5",
125
- "SKILL.md": "sha256:d50cc48a120fee6ad3c3bf0d1bfa8ceb5bba3614bdc6af8aacc4293b9e4a1970",
127
+ "SKILL.md": "sha256:a2c2ce3aced71fc2a66f2e46b4a9fcc10b65819dcef58176b2cefe674d6a941b",
126
128
  "templates/finding-review.md": "sha256:b270a83d3f015150aac80249ae9314979c0befea39ff92ec455f9a5aaa73404c",
127
- "VERSION": "sha256:71fc7bd16b1bc9b3681085fb0be8aea0b3a37d90d1685938dc2e8a31bf8c9b94"
129
+ "VERSION": "sha256:0a1b17e91d514c0c9e88520e6091e2d52a6faf8296892cad7355ff0723a42914"
128
130
  },
129
- "treeHash": "sha256:96d4589fced40f7030b6c1e48132abf2d37ebae771a1401d6f2a74e4f8fc52d1"
131
+ "treeHash": "sha256:2d4210d9dd26b7952f53964402abf06c8ae12ae43cb8ac5c568f070ab44b0001"
130
132
  }