@nebulacomponents/citable 1.21.0 → 1.22.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.
Files changed (95) hide show
  1. package/CHANGELOG.md +25 -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/manifest.json +9 -5
  5. package/dist/universal/.agents/skills/citable/schemas/citation-provenance.schema.json +59 -0
  6. package/dist/universal/.agents/skills/citable/schemas/competitor-representation.schema.json +36 -0
  7. package/dist/universal/.agents/skills/citable/schemas/response-span.schema.json +16 -0
  8. package/dist/universal/.agents/skills/citable/schemas/source-retrieval.schema.json +41 -0
  9. package/dist/universal/.claude/agents/citable/manifest.json +2 -2
  10. package/dist/universal/.claude/skills/citable/SKILL.md +1 -1
  11. package/dist/universal/.claude/skills/citable/VERSION +1 -1
  12. package/dist/universal/.claude/skills/citable/manifest.json +9 -5
  13. package/dist/universal/.claude/skills/citable/schemas/citation-provenance.schema.json +59 -0
  14. package/dist/universal/.claude/skills/citable/schemas/competitor-representation.schema.json +36 -0
  15. package/dist/universal/.claude/skills/citable/schemas/response-span.schema.json +16 -0
  16. package/dist/universal/.claude/skills/citable/schemas/source-retrieval.schema.json +41 -0
  17. package/dist/universal/.cursor/skills/citable/SKILL.md +1 -1
  18. package/dist/universal/.cursor/skills/citable/VERSION +1 -1
  19. package/dist/universal/.cursor/skills/citable/manifest.json +9 -5
  20. package/dist/universal/.cursor/skills/citable/schemas/citation-provenance.schema.json +59 -0
  21. package/dist/universal/.cursor/skills/citable/schemas/competitor-representation.schema.json +36 -0
  22. package/dist/universal/.cursor/skills/citable/schemas/response-span.schema.json +16 -0
  23. package/dist/universal/.cursor/skills/citable/schemas/source-retrieval.schema.json +41 -0
  24. package/dist/universal/.gemini/skills/citable/SKILL.md +1 -1
  25. package/dist/universal/.gemini/skills/citable/VERSION +1 -1
  26. package/dist/universal/.gemini/skills/citable/manifest.json +9 -5
  27. package/dist/universal/.gemini/skills/citable/schemas/citation-provenance.schema.json +59 -0
  28. package/dist/universal/.gemini/skills/citable/schemas/competitor-representation.schema.json +36 -0
  29. package/dist/universal/.gemini/skills/citable/schemas/response-span.schema.json +16 -0
  30. package/dist/universal/.gemini/skills/citable/schemas/source-retrieval.schema.json +41 -0
  31. package/dist/universal/.github/skills/citable/SKILL.md +1 -1
  32. package/dist/universal/.github/skills/citable/VERSION +1 -1
  33. package/dist/universal/.github/skills/citable/manifest.json +9 -5
  34. package/dist/universal/.github/skills/citable/schemas/citation-provenance.schema.json +59 -0
  35. package/dist/universal/.github/skills/citable/schemas/competitor-representation.schema.json +36 -0
  36. package/dist/universal/.github/skills/citable/schemas/response-span.schema.json +16 -0
  37. package/dist/universal/.github/skills/citable/schemas/source-retrieval.schema.json +41 -0
  38. package/dist/universal/.kiro/skills/citable/SKILL.md +1 -1
  39. package/dist/universal/.kiro/skills/citable/VERSION +1 -1
  40. package/dist/universal/.kiro/skills/citable/manifest.json +9 -5
  41. package/dist/universal/.kiro/skills/citable/schemas/citation-provenance.schema.json +59 -0
  42. package/dist/universal/.kiro/skills/citable/schemas/competitor-representation.schema.json +36 -0
  43. package/dist/universal/.kiro/skills/citable/schemas/response-span.schema.json +16 -0
  44. package/dist/universal/.kiro/skills/citable/schemas/source-retrieval.schema.json +41 -0
  45. package/dist/universal/.opencode/skills/citable/SKILL.md +1 -1
  46. package/dist/universal/.opencode/skills/citable/VERSION +1 -1
  47. package/dist/universal/.opencode/skills/citable/manifest.json +9 -5
  48. package/dist/universal/.opencode/skills/citable/schemas/citation-provenance.schema.json +59 -0
  49. package/dist/universal/.opencode/skills/citable/schemas/competitor-representation.schema.json +36 -0
  50. package/dist/universal/.opencode/skills/citable/schemas/response-span.schema.json +16 -0
  51. package/dist/universal/.opencode/skills/citable/schemas/source-retrieval.schema.json +41 -0
  52. package/dist/universal/.pi/agent/skills/citable/SKILL.md +1 -1
  53. package/dist/universal/.pi/agent/skills/citable/VERSION +1 -1
  54. package/dist/universal/.pi/agent/skills/citable/manifest.json +9 -5
  55. package/dist/universal/.pi/agent/skills/citable/schemas/citation-provenance.schema.json +59 -0
  56. package/dist/universal/.pi/agent/skills/citable/schemas/competitor-representation.schema.json +36 -0
  57. package/dist/universal/.pi/agent/skills/citable/schemas/response-span.schema.json +16 -0
  58. package/dist/universal/.pi/agent/skills/citable/schemas/source-retrieval.schema.json +41 -0
  59. package/dist/universal/.qoder/skills/citable/SKILL.md +1 -1
  60. package/dist/universal/.qoder/skills/citable/VERSION +1 -1
  61. package/dist/universal/.qoder/skills/citable/manifest.json +9 -5
  62. package/dist/universal/.qoder/skills/citable/schemas/citation-provenance.schema.json +59 -0
  63. package/dist/universal/.qoder/skills/citable/schemas/competitor-representation.schema.json +36 -0
  64. package/dist/universal/.qoder/skills/citable/schemas/response-span.schema.json +16 -0
  65. package/dist/universal/.qoder/skills/citable/schemas/source-retrieval.schema.json +41 -0
  66. package/dist/universal/.rovodev/skills/citable/SKILL.md +1 -1
  67. package/dist/universal/.rovodev/skills/citable/VERSION +1 -1
  68. package/dist/universal/.rovodev/skills/citable/manifest.json +9 -5
  69. package/dist/universal/.rovodev/skills/citable/schemas/citation-provenance.schema.json +59 -0
  70. package/dist/universal/.rovodev/skills/citable/schemas/competitor-representation.schema.json +36 -0
  71. package/dist/universal/.rovodev/skills/citable/schemas/response-span.schema.json +16 -0
  72. package/dist/universal/.rovodev/skills/citable/schemas/source-retrieval.schema.json +41 -0
  73. package/dist/universal/.trae/skills/citable/SKILL.md +1 -1
  74. package/dist/universal/.trae/skills/citable/VERSION +1 -1
  75. package/dist/universal/.trae/skills/citable/manifest.json +9 -5
  76. package/dist/universal/.trae/skills/citable/schemas/citation-provenance.schema.json +59 -0
  77. package/dist/universal/.trae/skills/citable/schemas/competitor-representation.schema.json +36 -0
  78. package/dist/universal/.trae/skills/citable/schemas/response-span.schema.json +16 -0
  79. package/dist/universal/.trae/skills/citable/schemas/source-retrieval.schema.json +41 -0
  80. package/dist/universal/.trae-cn/skills/citable/SKILL.md +1 -1
  81. package/dist/universal/.trae-cn/skills/citable/VERSION +1 -1
  82. package/dist/universal/.trae-cn/skills/citable/manifest.json +9 -5
  83. package/dist/universal/.trae-cn/skills/citable/schemas/citation-provenance.schema.json +59 -0
  84. package/dist/universal/.trae-cn/skills/citable/schemas/competitor-representation.schema.json +36 -0
  85. package/dist/universal/.trae-cn/skills/citable/schemas/response-span.schema.json +16 -0
  86. package/dist/universal/.trae-cn/skills/citable/schemas/source-retrieval.schema.json +41 -0
  87. package/dist/universal/manifest.json +112 -64
  88. package/package.json +1 -1
  89. package/schemas/citation-provenance.schema.json +59 -0
  90. package/schemas/competitor-representation.schema.json +36 -0
  91. package/schemas/response-span.schema.json +16 -0
  92. package/schemas/source-retrieval.schema.json +41 -0
  93. package/skill/SKILL.md +1 -1
  94. package/src/representation/competitors.js +113 -0
  95. package/src/representation/provenance.js +214 -0
package/CHANGELOG.md CHANGED
@@ -15,6 +15,31 @@ _No entries yet. See [`BOUNTY.md`](BOUNTY.md) to submit the first one._
15
15
 
16
16
  ## Unreleased
17
17
 
18
+ ## 1.22.0 — 2026-09-21
19
+
20
+ ### Added — Citation provenance and competitor representation evidence
21
+
22
+ - Added immutable response-span and citation-provenance observations that
23
+ preserve raw provider citation markers, displayed and resolved source
24
+ identities, retrieval state, and proposition-level evidence lineage.
25
+ - Added source-retrieval observations that distinguish citation presence,
26
+ source identity, retrieval, relevance, and proposition support rather than
27
+ treating citations as proof.
28
+ - Extended bounded claim verification and longitudinal comparability to
29
+ citation-backed provider representations, including multi-proposition
30
+ responses and non-evaluable executions.
31
+ - Added provider-neutral competitor and peer representation observations with
32
+ explicit entity ambiguity, representation type, prompt/provider/execution
33
+ lineage, and citation relationships.
34
+ - Added deterministic adversarial coverage for citation ambiguity, partial and
35
+ contradictory support, tracking URLs, failed retrieval, execution
36
+ interstitials, entity ambiguity, tampered lineage, and bounded prevalence.
37
+
38
+ These capabilities preserve evidence boundaries; they do not provide live
39
+ provider collection, universal competitor intelligence, AI visibility scoring,
40
+ autonomous content generation or publishing, strategic recommendations,
41
+ backlink capabilities, a public agent API, or Nebula runtime integration.
42
+
18
43
  ## 1.21.0 — 2026-09-21
19
44
 
20
45
  ### Added — External evidence, discovery, and representation observations
@@ -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.21.0
10
+ version: 1.22.0
11
11
  ---
12
12
 
13
13
  # Citable — evidence and change control for search and AI citation readiness
@@ -1 +1 @@
1
- 1.21.0
1
+ 1.22.0
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "citable",
3
- "version": "1.21.0",
3
+ "version": "1.22.0",
4
4
  "managedBy": "citable-cli",
5
5
  "provider": "codex",
6
6
  "providerName": "OpenAI Codex",
7
7
  "scope": "bundle",
8
- "sourcePackage": "@nebulacomponents/citable@1.21.0",
8
+ "sourcePackage": "@nebulacomponents/citable@1.22.0",
9
9
  "variantPath": ".agents/skills/citable",
10
10
  "agentProfiles": {
11
11
  "status": "unsupported",
@@ -65,12 +65,14 @@
65
65
  "schemas/browser-runtime-events.schema.json": "sha256:ff9b6e486ca5a72a6613a4e3e479cd11bcadff52c7481df125aa1670f404a7e4",
66
66
  "schemas/browser-state-observations.schema.json": "sha256:7748b9ed7110834e19c1827bd125c0d0cdb50e2dd89a713da03cd643e9c72843",
67
67
  "schemas/canonical-index-import.schema.json": "sha256:ef633662cb30873242ca356443bc4835afe56bb020208e8f42fa47ac8047b66e",
68
+ "schemas/citation-provenance.schema.json": "sha256:7d964c030c39dd81bfcd113b9712e9b025882af4e3d16660f7005d58a5c9a4aa",
68
69
  "schemas/claim-evidence.schema.json": "sha256:524b4b8d47d58a7c75e5369e9bad55feaaa282c31076631d5f2517ae1328e1cb",
69
70
  "schemas/claim-verification.schema.json": "sha256:dc9f5bd2af09fad6fdc40e9e63814825350b74d67b33fd3ed241190e983e91b1",
70
71
  "schemas/claim.schema.json": "sha256:ce79ccbfa34ece9b7a309a6962522ea06a1f44c468b4c472b5c376554a788537",
71
72
  "schemas/cli-output-envelope.schema.json": "sha256:6964e8f2f43618bfd0d7a3f5344b37ebc26f04779796bb8ff4675b935b6208c3",
72
73
  "schemas/collection-result.schema.json": "sha256:d844aa183300abf220030f6a000f297195a06c02f2cd3a4f15a399e317b8c5d8",
73
74
  "schemas/common.defs.json": "sha256:ac66081df6b86f652e066ea868edecfcd36cdd1b1c81e55a1e3af880f671b727",
75
+ "schemas/competitor-representation.schema.json": "sha256:c90ce92c3c313ef817753e9eec66f0a059bce7f7795643edaf54120aa274b48b",
74
76
  "schemas/competitor.schema.json": "sha256:2f6fd7e4543846bde56ff4dc62bb41fa366889787b794a7cdb0bff1a3392e591",
75
77
  "schemas/config.schema.json": "sha256:da40fe568844a6303d265f83058fce9f4a9a569cd72b271bc219361c71e8e8fa",
76
78
  "schemas/connection.schema.json": "sha256:abcedde8d62d0c0663d4f959e06132a617908058ed965078965445ef3b108310",
@@ -117,6 +119,7 @@
117
119
  "schemas/remediation-verification.schema.json": "sha256:b56560b4f6fd82b9d3db4ad4f7fd0a0e4b289bfebf2e5a02e7c6727d5ba97291",
118
120
  "schemas/representation-data.schema.json": "sha256:eef400570f073b49947d640790610e3bc980869d9eaeb1412bcff74a3385cda9",
119
121
  "schemas/research-dataset.schema.json": "sha256:f69da3db9d3984e70e5cb3b92de7384c39ea5d10532ad5f5f5a0e5a2c0aa353e",
122
+ "schemas/response-span.schema.json": "sha256:36bd67e8a1ea8f7dce08e79fffefe2eaf5885e8bdf89985b0dbc6bc75098def3",
120
123
  "schemas/review-item.schema.json": "sha256:df532a70385d5031bbc18654f3ccb436dc6e8d402ccf987e58f8f7e3ad2fb3f1",
121
124
  "schemas/review-policy.schema.json": "sha256:b2d176b1886f78c384b25532a0c3eb18548dfbd17f362a305e622bab562a1d04",
122
125
  "schemas/reviewer.schema.json": "sha256:3716697b752575a1277f2c2b318b1f2565de02bf9dce2a0c165567ab5330d18b",
@@ -128,13 +131,14 @@
128
131
  "schemas/search-discovery-data.schema.json": "sha256:23c45442c55f2a0b5a0b910da03641319a66d3b9b6811892fe30b2b3a9663b80",
129
132
  "schemas/search-report.schema.json": "sha256:d6e837580fdd53365e74d3d8b5101cd5a7d54b72f438155293aac399f676b176",
130
133
  "schemas/source-identity-chain.schema.json": "sha256:a65d9c12eaed1bd6b637c66a2f9362c17287fdfcb454d8676fb611d2d28aa019",
134
+ "schemas/source-retrieval.schema.json": "sha256:52112d98d01471cdb95f0e0f5ff5fa08b495c45037928e760b5c1a934224732a",
131
135
  "schemas/sow.schema.json": "sha256:3a3fd6048a747a9bc0cfaea98920376b043616a33c953a9eb8b74d0ae32dded0",
132
136
  "schemas/summary.schema.json": "sha256:0c9eb076fe992f351c3963728ba247a003648d8fe637b7cdd3016ba5842199c6",
133
137
  "schemas/variance.schema.json": "sha256:68389f64f0a3be13ff8951e8eefba9a5c31d0738325cb47e37c1a8435bea48f0",
134
138
  "scripts/README.md": "sha256:9eee4e8beb4579a183bd714c9dd24b83abd020753eada5caeffae004739d60b5",
135
- "SKILL.md": "sha256:4a7e19382de8b39544c392defedb3eee189404f7ba79932c9b13bb0426743def",
139
+ "SKILL.md": "sha256:2b7c674aa4f656d29bf13eaa85440b36a4da89b447331082b664ebf36f1a0da6",
136
140
  "templates/finding-review.md": "sha256:b270a83d3f015150aac80249ae9314979c0befea39ff92ec455f9a5aaa73404c",
137
- "VERSION": "sha256:65a6bd97a4a6b72911ae6c3d45991f4326c95f792e196f8bf74857a557b27585"
141
+ "VERSION": "sha256:a482aec6f30758f5ba391b686d1f33d8ef1ab78ac649da44307ae41eb5ecad43"
138
142
  },
139
- "treeHash": "sha256:ee414162970cefa47e9b417814c0611133618987449c16027607d679f451bdb9"
143
+ "treeHash": "sha256:e24490d3f85a2d859bbf9f0ecc640303e89a8f39a3bc6c1d02de03d21ac9e70a"
140
144
  }
@@ -0,0 +1,59 @@
1
+ {
2
+ "$id": "citable://schemas/citation-provenance.schema.json",
3
+ "$schema": "http://json-schema.org/draft-07/schema#",
4
+ "title": "Provider citation provenance observation data",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["execution_reference", "response_reference", "provider", "span", "citation", "source", "retrieval", "proposition", "support"],
8
+ "properties": {
9
+ "execution_reference": { "type": "string", "minLength": 1 },
10
+ "response_reference": { "type": "string", "minLength": 1 },
11
+ "provider": { "type": "string", "minLength": 1 },
12
+ "span": { "$ref": "citable://schemas/response-span.schema.json" },
13
+ "citation": {
14
+ "type": "object", "additionalProperties": false,
15
+ "required": ["citation_id", "ordinal", "raw_marker", "placement", "displayed_title", "displayed_domain", "displayed_url"],
16
+ "properties": {
17
+ "citation_id": { "type": "string", "minLength": 1 },
18
+ "ordinal": { "type": "integer", "minimum": 1 },
19
+ "raw_marker": { "type": ["string", "null"] },
20
+ "placement": { "type": "string", "enum": ["inline", "footnote", "card", "source_list", "unknown"] },
21
+ "displayed_title": { "type": ["string", "null"] },
22
+ "displayed_domain": { "type": ["string", "null"] },
23
+ "displayed_url": { "type": ["string", "null"] }
24
+ }
25
+ },
26
+ "source": {
27
+ "type": "object", "additionalProperties": false,
28
+ "required": ["identity_status", "resolved_url", "redirect_chain", "canonical_url"],
29
+ "properties": {
30
+ "identity_status": { "type": "string", "enum": ["IDENTIFIED", "NOT_IDENTIFIED", "AMBIGUOUS"] },
31
+ "resolved_url": { "type": ["string", "null"], "format": "uri" },
32
+ "redirect_chain": { "type": "array", "items": { "type": "string", "format": "uri" } },
33
+ "canonical_url": { "type": ["string", "null"], "format": "uri" }
34
+ }
35
+ },
36
+ "retrieval": {
37
+ "type": "object", "additionalProperties": false,
38
+ "required": ["status", "observation_reference"],
39
+ "properties": {
40
+ "status": { "type": "string", "enum": ["NOT_ATTEMPTED", "ATTEMPTED", "SUCCEEDED", "FAILED", "INDETERMINATE"] },
41
+ "observation_reference": { "type": ["string", "null"] }
42
+ }
43
+ },
44
+ "proposition": {
45
+ "type": "object", "additionalProperties": false,
46
+ "required": ["proposition_id", "text"],
47
+ "properties": { "proposition_id": { "type": "string", "minLength": 1 }, "text": { "type": "string", "minLength": 1 } }
48
+ },
49
+ "support": {
50
+ "type": "object", "additionalProperties": false,
51
+ "required": ["relevance_status", "support_status", "evidence_references"],
52
+ "properties": {
53
+ "relevance_status": { "type": "string", "enum": ["NOT_ASSESSED", "RELEVANT", "IRRELEVANT", "INDETERMINATE"] },
54
+ "support_status": { "type": "string", "enum": ["NOT_ASSESSED", "SUPPORTED", "PARTIALLY_SUPPORTED", "UNSUPPORTED", "CONTRADICTED", "INDETERMINATE", "NOT_OBSERVED"] },
55
+ "evidence_references": { "type": "array", "items": { "type": "string" } }
56
+ }
57
+ }
58
+ }
59
+ }
@@ -0,0 +1,36 @@
1
+ {
2
+ "$id": "citable://schemas/competitor-representation.schema.json",
3
+ "$schema": "http://json-schema.org/draft-07/schema#",
4
+ "title": "Competitor or peer representation observation data",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["execution_reference", "provider", "prompt_reference", "prompt_set_reference", "span", "entity", "representation", "citation_reference", "proposition_reference"],
8
+ "properties": {
9
+ "execution_reference": { "type": "string", "minLength": 1 },
10
+ "provider": { "type": "string", "minLength": 1 },
11
+ "prompt_reference": { "type": "string", "minLength": 1 },
12
+ "prompt_set_reference": { "type": "string", "minLength": 1 },
13
+ "span": { "$ref": "citable://schemas/response-span.schema.json" },
14
+ "entity": {
15
+ "type": "object", "additionalProperties": false,
16
+ "required": ["entity_id", "observed_name", "domain", "resolution_status", "resolution_method"],
17
+ "properties": {
18
+ "entity_id": { "type": ["string", "null"] },
19
+ "observed_name": { "type": "string", "minLength": 1 },
20
+ "domain": { "type": ["string", "null"] },
21
+ "resolution_status": { "type": "string", "enum": ["RESOLVED", "AMBIGUOUS", "UNRESOLVED", "NOT_OBSERVED"] },
22
+ "resolution_method": { "type": "string", "minLength": 1 }
23
+ }
24
+ },
25
+ "representation": {
26
+ "type": "object", "additionalProperties": false,
27
+ "required": ["type", "observed_text"],
28
+ "properties": {
29
+ "type": { "type": "string", "enum": ["MENTION", "COMPARISON", "ALTERNATIVE", "RECOMMENDATION", "CITED_SOURCE", "CATEGORY_PEER"] },
30
+ "observed_text": { "type": "string", "minLength": 1 }
31
+ }
32
+ },
33
+ "citation_reference": { "type": ["string", "null"] },
34
+ "proposition_reference": { "type": ["string", "null"] }
35
+ }
36
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "$id": "citable://schemas/response-span.schema.json",
3
+ "$schema": "http://json-schema.org/draft-07/schema#",
4
+ "title": "Immutable provider response span",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["span_id", "execution_reference", "start", "end", "text", "text_hash"],
8
+ "properties": {
9
+ "span_id": { "type": "string", "minLength": 1 },
10
+ "execution_reference": { "type": "string", "minLength": 1 },
11
+ "start": { "type": "integer", "minimum": 0 },
12
+ "end": { "type": "integer", "minimum": 0 },
13
+ "text": { "type": "string" },
14
+ "text_hash": { "type": "string", "pattern": "^[a-f0-9]{64}$" }
15
+ }
16
+ }
@@ -0,0 +1,41 @@
1
+ {
2
+ "$id": "citable://schemas/source-retrieval.schema.json",
3
+ "$schema": "http://json-schema.org/draft-07/schema#",
4
+ "title": "Retrieved citation source observation data",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["citation_reference", "url", "retrieval", "content", "relevance"],
8
+ "properties": {
9
+ "citation_reference": { "type": "string", "minLength": 1 },
10
+ "url": { "type": "string", "format": "uri" },
11
+ "retrieval": {
12
+ "type": "object", "additionalProperties": false,
13
+ "required": ["status", "attempted_at", "final_url", "redirect_chain", "http_status"],
14
+ "properties": {
15
+ "status": { "type": "string", "enum": ["SUCCEEDED", "FAILED", "INDETERMINATE"] },
16
+ "attempted_at": { "type": "string", "format": "date-time" },
17
+ "final_url": { "type": ["string", "null"], "format": "uri" },
18
+ "redirect_chain": { "type": "array", "items": { "type": "string", "format": "uri" } },
19
+ "http_status": { "type": ["integer", "null"], "minimum": 100, "maximum": 599 }
20
+ }
21
+ },
22
+ "content": {
23
+ "type": "object", "additionalProperties": false,
24
+ "required": ["observed", "content_hash", "raw_retained"],
25
+ "properties": {
26
+ "observed": { "type": "boolean" },
27
+ "content_hash": { "type": ["string", "null"], "pattern": "^[a-f0-9]{64}$" },
28
+ "raw_retained": { "type": "boolean" }
29
+ }
30
+ },
31
+ "relevance": {
32
+ "type": "object", "additionalProperties": false,
33
+ "required": ["status", "support_status", "evidence_references"],
34
+ "properties": {
35
+ "status": { "type": "string", "enum": ["NOT_ASSESSED", "RELEVANT", "IRRELEVANT", "INDETERMINATE"] },
36
+ "support_status": { "type": "string", "enum": ["NOT_ASSESSED", "SUPPORTED", "PARTIALLY_SUPPORTED", "UNSUPPORTED", "CONTRADICTED", "INDETERMINATE", "NOT_OBSERVED"] },
37
+ "evidence_references": { "type": "array", "items": { "type": "string" } }
38
+ }
39
+ }
40
+ }
41
+ }
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "citable-agent-profiles",
3
- "version": "1.21.0",
3
+ "version": "1.22.0",
4
4
  "managedBy": "citable-cli",
5
5
  "provider": "claude",
6
- "sourcePackage": "@nebulacomponents/citable@1.21.0",
6
+ "sourcePackage": "@nebulacomponents/citable@1.22.0",
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.21.0
10
+ version: 1.22.0
11
11
  ---
12
12
 
13
13
  # Citable — evidence and change control for search and AI citation readiness
@@ -1 +1 @@
1
- 1.21.0
1
+ 1.22.0
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "citable",
3
- "version": "1.21.0",
3
+ "version": "1.22.0",
4
4
  "managedBy": "citable-cli",
5
5
  "provider": "claude",
6
6
  "providerName": "Claude Code",
7
7
  "scope": "bundle",
8
- "sourcePackage": "@nebulacomponents/citable@1.21.0",
8
+ "sourcePackage": "@nebulacomponents/citable@1.22.0",
9
9
  "variantPath": ".claude/skills/citable",
10
10
  "agentProfiles": {
11
11
  "status": "available",
@@ -72,12 +72,14 @@
72
72
  "schemas/browser-runtime-events.schema.json": "sha256:ff9b6e486ca5a72a6613a4e3e479cd11bcadff52c7481df125aa1670f404a7e4",
73
73
  "schemas/browser-state-observations.schema.json": "sha256:7748b9ed7110834e19c1827bd125c0d0cdb50e2dd89a713da03cd643e9c72843",
74
74
  "schemas/canonical-index-import.schema.json": "sha256:ef633662cb30873242ca356443bc4835afe56bb020208e8f42fa47ac8047b66e",
75
+ "schemas/citation-provenance.schema.json": "sha256:7d964c030c39dd81bfcd113b9712e9b025882af4e3d16660f7005d58a5c9a4aa",
75
76
  "schemas/claim-evidence.schema.json": "sha256:524b4b8d47d58a7c75e5369e9bad55feaaa282c31076631d5f2517ae1328e1cb",
76
77
  "schemas/claim-verification.schema.json": "sha256:dc9f5bd2af09fad6fdc40e9e63814825350b74d67b33fd3ed241190e983e91b1",
77
78
  "schemas/claim.schema.json": "sha256:ce79ccbfa34ece9b7a309a6962522ea06a1f44c468b4c472b5c376554a788537",
78
79
  "schemas/cli-output-envelope.schema.json": "sha256:6964e8f2f43618bfd0d7a3f5344b37ebc26f04779796bb8ff4675b935b6208c3",
79
80
  "schemas/collection-result.schema.json": "sha256:d844aa183300abf220030f6a000f297195a06c02f2cd3a4f15a399e317b8c5d8",
80
81
  "schemas/common.defs.json": "sha256:ac66081df6b86f652e066ea868edecfcd36cdd1b1c81e55a1e3af880f671b727",
82
+ "schemas/competitor-representation.schema.json": "sha256:c90ce92c3c313ef817753e9eec66f0a059bce7f7795643edaf54120aa274b48b",
81
83
  "schemas/competitor.schema.json": "sha256:2f6fd7e4543846bde56ff4dc62bb41fa366889787b794a7cdb0bff1a3392e591",
82
84
  "schemas/config.schema.json": "sha256:da40fe568844a6303d265f83058fce9f4a9a569cd72b271bc219361c71e8e8fa",
83
85
  "schemas/connection.schema.json": "sha256:abcedde8d62d0c0663d4f959e06132a617908058ed965078965445ef3b108310",
@@ -124,6 +126,7 @@
124
126
  "schemas/remediation-verification.schema.json": "sha256:b56560b4f6fd82b9d3db4ad4f7fd0a0e4b289bfebf2e5a02e7c6727d5ba97291",
125
127
  "schemas/representation-data.schema.json": "sha256:eef400570f073b49947d640790610e3bc980869d9eaeb1412bcff74a3385cda9",
126
128
  "schemas/research-dataset.schema.json": "sha256:f69da3db9d3984e70e5cb3b92de7384c39ea5d10532ad5f5f5a0e5a2c0aa353e",
129
+ "schemas/response-span.schema.json": "sha256:36bd67e8a1ea8f7dce08e79fffefe2eaf5885e8bdf89985b0dbc6bc75098def3",
127
130
  "schemas/review-item.schema.json": "sha256:df532a70385d5031bbc18654f3ccb436dc6e8d402ccf987e58f8f7e3ad2fb3f1",
128
131
  "schemas/review-policy.schema.json": "sha256:b2d176b1886f78c384b25532a0c3eb18548dfbd17f362a305e622bab562a1d04",
129
132
  "schemas/reviewer.schema.json": "sha256:3716697b752575a1277f2c2b318b1f2565de02bf9dce2a0c165567ab5330d18b",
@@ -135,13 +138,14 @@
135
138
  "schemas/search-discovery-data.schema.json": "sha256:23c45442c55f2a0b5a0b910da03641319a66d3b9b6811892fe30b2b3a9663b80",
136
139
  "schemas/search-report.schema.json": "sha256:d6e837580fdd53365e74d3d8b5101cd5a7d54b72f438155293aac399f676b176",
137
140
  "schemas/source-identity-chain.schema.json": "sha256:a65d9c12eaed1bd6b637c66a2f9362c17287fdfcb454d8676fb611d2d28aa019",
141
+ "schemas/source-retrieval.schema.json": "sha256:52112d98d01471cdb95f0e0f5ff5fa08b495c45037928e760b5c1a934224732a",
138
142
  "schemas/sow.schema.json": "sha256:3a3fd6048a747a9bc0cfaea98920376b043616a33c953a9eb8b74d0ae32dded0",
139
143
  "schemas/summary.schema.json": "sha256:0c9eb076fe992f351c3963728ba247a003648d8fe637b7cdd3016ba5842199c6",
140
144
  "schemas/variance.schema.json": "sha256:68389f64f0a3be13ff8951e8eefba9a5c31d0738325cb47e37c1a8435bea48f0",
141
145
  "scripts/README.md": "sha256:9eee4e8beb4579a183bd714c9dd24b83abd020753eada5caeffae004739d60b5",
142
- "SKILL.md": "sha256:4a7e19382de8b39544c392defedb3eee189404f7ba79932c9b13bb0426743def",
146
+ "SKILL.md": "sha256:2b7c674aa4f656d29bf13eaa85440b36a4da89b447331082b664ebf36f1a0da6",
143
147
  "templates/finding-review.md": "sha256:b270a83d3f015150aac80249ae9314979c0befea39ff92ec455f9a5aaa73404c",
144
- "VERSION": "sha256:65a6bd97a4a6b72911ae6c3d45991f4326c95f792e196f8bf74857a557b27585"
148
+ "VERSION": "sha256:a482aec6f30758f5ba391b686d1f33d8ef1ab78ac649da44307ae41eb5ecad43"
145
149
  },
146
- "treeHash": "sha256:ee414162970cefa47e9b417814c0611133618987449c16027607d679f451bdb9"
150
+ "treeHash": "sha256:e24490d3f85a2d859bbf9f0ecc640303e89a8f39a3bc6c1d02de03d21ac9e70a"
147
151
  }
@@ -0,0 +1,59 @@
1
+ {
2
+ "$id": "citable://schemas/citation-provenance.schema.json",
3
+ "$schema": "http://json-schema.org/draft-07/schema#",
4
+ "title": "Provider citation provenance observation data",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["execution_reference", "response_reference", "provider", "span", "citation", "source", "retrieval", "proposition", "support"],
8
+ "properties": {
9
+ "execution_reference": { "type": "string", "minLength": 1 },
10
+ "response_reference": { "type": "string", "minLength": 1 },
11
+ "provider": { "type": "string", "minLength": 1 },
12
+ "span": { "$ref": "citable://schemas/response-span.schema.json" },
13
+ "citation": {
14
+ "type": "object", "additionalProperties": false,
15
+ "required": ["citation_id", "ordinal", "raw_marker", "placement", "displayed_title", "displayed_domain", "displayed_url"],
16
+ "properties": {
17
+ "citation_id": { "type": "string", "minLength": 1 },
18
+ "ordinal": { "type": "integer", "minimum": 1 },
19
+ "raw_marker": { "type": ["string", "null"] },
20
+ "placement": { "type": "string", "enum": ["inline", "footnote", "card", "source_list", "unknown"] },
21
+ "displayed_title": { "type": ["string", "null"] },
22
+ "displayed_domain": { "type": ["string", "null"] },
23
+ "displayed_url": { "type": ["string", "null"] }
24
+ }
25
+ },
26
+ "source": {
27
+ "type": "object", "additionalProperties": false,
28
+ "required": ["identity_status", "resolved_url", "redirect_chain", "canonical_url"],
29
+ "properties": {
30
+ "identity_status": { "type": "string", "enum": ["IDENTIFIED", "NOT_IDENTIFIED", "AMBIGUOUS"] },
31
+ "resolved_url": { "type": ["string", "null"], "format": "uri" },
32
+ "redirect_chain": { "type": "array", "items": { "type": "string", "format": "uri" } },
33
+ "canonical_url": { "type": ["string", "null"], "format": "uri" }
34
+ }
35
+ },
36
+ "retrieval": {
37
+ "type": "object", "additionalProperties": false,
38
+ "required": ["status", "observation_reference"],
39
+ "properties": {
40
+ "status": { "type": "string", "enum": ["NOT_ATTEMPTED", "ATTEMPTED", "SUCCEEDED", "FAILED", "INDETERMINATE"] },
41
+ "observation_reference": { "type": ["string", "null"] }
42
+ }
43
+ },
44
+ "proposition": {
45
+ "type": "object", "additionalProperties": false,
46
+ "required": ["proposition_id", "text"],
47
+ "properties": { "proposition_id": { "type": "string", "minLength": 1 }, "text": { "type": "string", "minLength": 1 } }
48
+ },
49
+ "support": {
50
+ "type": "object", "additionalProperties": false,
51
+ "required": ["relevance_status", "support_status", "evidence_references"],
52
+ "properties": {
53
+ "relevance_status": { "type": "string", "enum": ["NOT_ASSESSED", "RELEVANT", "IRRELEVANT", "INDETERMINATE"] },
54
+ "support_status": { "type": "string", "enum": ["NOT_ASSESSED", "SUPPORTED", "PARTIALLY_SUPPORTED", "UNSUPPORTED", "CONTRADICTED", "INDETERMINATE", "NOT_OBSERVED"] },
55
+ "evidence_references": { "type": "array", "items": { "type": "string" } }
56
+ }
57
+ }
58
+ }
59
+ }
@@ -0,0 +1,36 @@
1
+ {
2
+ "$id": "citable://schemas/competitor-representation.schema.json",
3
+ "$schema": "http://json-schema.org/draft-07/schema#",
4
+ "title": "Competitor or peer representation observation data",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["execution_reference", "provider", "prompt_reference", "prompt_set_reference", "span", "entity", "representation", "citation_reference", "proposition_reference"],
8
+ "properties": {
9
+ "execution_reference": { "type": "string", "minLength": 1 },
10
+ "provider": { "type": "string", "minLength": 1 },
11
+ "prompt_reference": { "type": "string", "minLength": 1 },
12
+ "prompt_set_reference": { "type": "string", "minLength": 1 },
13
+ "span": { "$ref": "citable://schemas/response-span.schema.json" },
14
+ "entity": {
15
+ "type": "object", "additionalProperties": false,
16
+ "required": ["entity_id", "observed_name", "domain", "resolution_status", "resolution_method"],
17
+ "properties": {
18
+ "entity_id": { "type": ["string", "null"] },
19
+ "observed_name": { "type": "string", "minLength": 1 },
20
+ "domain": { "type": ["string", "null"] },
21
+ "resolution_status": { "type": "string", "enum": ["RESOLVED", "AMBIGUOUS", "UNRESOLVED", "NOT_OBSERVED"] },
22
+ "resolution_method": { "type": "string", "minLength": 1 }
23
+ }
24
+ },
25
+ "representation": {
26
+ "type": "object", "additionalProperties": false,
27
+ "required": ["type", "observed_text"],
28
+ "properties": {
29
+ "type": { "type": "string", "enum": ["MENTION", "COMPARISON", "ALTERNATIVE", "RECOMMENDATION", "CITED_SOURCE", "CATEGORY_PEER"] },
30
+ "observed_text": { "type": "string", "minLength": 1 }
31
+ }
32
+ },
33
+ "citation_reference": { "type": ["string", "null"] },
34
+ "proposition_reference": { "type": ["string", "null"] }
35
+ }
36
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "$id": "citable://schemas/response-span.schema.json",
3
+ "$schema": "http://json-schema.org/draft-07/schema#",
4
+ "title": "Immutable provider response span",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["span_id", "execution_reference", "start", "end", "text", "text_hash"],
8
+ "properties": {
9
+ "span_id": { "type": "string", "minLength": 1 },
10
+ "execution_reference": { "type": "string", "minLength": 1 },
11
+ "start": { "type": "integer", "minimum": 0 },
12
+ "end": { "type": "integer", "minimum": 0 },
13
+ "text": { "type": "string" },
14
+ "text_hash": { "type": "string", "pattern": "^[a-f0-9]{64}$" }
15
+ }
16
+ }
@@ -0,0 +1,41 @@
1
+ {
2
+ "$id": "citable://schemas/source-retrieval.schema.json",
3
+ "$schema": "http://json-schema.org/draft-07/schema#",
4
+ "title": "Retrieved citation source observation data",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["citation_reference", "url", "retrieval", "content", "relevance"],
8
+ "properties": {
9
+ "citation_reference": { "type": "string", "minLength": 1 },
10
+ "url": { "type": "string", "format": "uri" },
11
+ "retrieval": {
12
+ "type": "object", "additionalProperties": false,
13
+ "required": ["status", "attempted_at", "final_url", "redirect_chain", "http_status"],
14
+ "properties": {
15
+ "status": { "type": "string", "enum": ["SUCCEEDED", "FAILED", "INDETERMINATE"] },
16
+ "attempted_at": { "type": "string", "format": "date-time" },
17
+ "final_url": { "type": ["string", "null"], "format": "uri" },
18
+ "redirect_chain": { "type": "array", "items": { "type": "string", "format": "uri" } },
19
+ "http_status": { "type": ["integer", "null"], "minimum": 100, "maximum": 599 }
20
+ }
21
+ },
22
+ "content": {
23
+ "type": "object", "additionalProperties": false,
24
+ "required": ["observed", "content_hash", "raw_retained"],
25
+ "properties": {
26
+ "observed": { "type": "boolean" },
27
+ "content_hash": { "type": ["string", "null"], "pattern": "^[a-f0-9]{64}$" },
28
+ "raw_retained": { "type": "boolean" }
29
+ }
30
+ },
31
+ "relevance": {
32
+ "type": "object", "additionalProperties": false,
33
+ "required": ["status", "support_status", "evidence_references"],
34
+ "properties": {
35
+ "status": { "type": "string", "enum": ["NOT_ASSESSED", "RELEVANT", "IRRELEVANT", "INDETERMINATE"] },
36
+ "support_status": { "type": "string", "enum": ["NOT_ASSESSED", "SUPPORTED", "PARTIALLY_SUPPORTED", "UNSUPPORTED", "CONTRADICTED", "INDETERMINATE", "NOT_OBSERVED"] },
37
+ "evidence_references": { "type": "array", "items": { "type": "string" } }
38
+ }
39
+ }
40
+ }
41
+ }
@@ -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.21.0
10
+ version: 1.22.0
11
11
  ---
12
12
 
13
13
  # Citable — evidence and change control for search and AI citation readiness
@@ -1 +1 @@
1
- 1.21.0
1
+ 1.22.0
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "citable",
3
- "version": "1.21.0",
3
+ "version": "1.22.0",
4
4
  "managedBy": "citable-cli",
5
5
  "provider": "cursor",
6
6
  "providerName": "Cursor",
7
7
  "scope": "bundle",
8
- "sourcePackage": "@nebulacomponents/citable@1.21.0",
8
+ "sourcePackage": "@nebulacomponents/citable@1.22.0",
9
9
  "variantPath": ".cursor/skills/citable",
10
10
  "agentProfiles": {
11
11
  "status": "unsupported",
@@ -65,12 +65,14 @@
65
65
  "schemas/browser-runtime-events.schema.json": "sha256:ff9b6e486ca5a72a6613a4e3e479cd11bcadff52c7481df125aa1670f404a7e4",
66
66
  "schemas/browser-state-observations.schema.json": "sha256:7748b9ed7110834e19c1827bd125c0d0cdb50e2dd89a713da03cd643e9c72843",
67
67
  "schemas/canonical-index-import.schema.json": "sha256:ef633662cb30873242ca356443bc4835afe56bb020208e8f42fa47ac8047b66e",
68
+ "schemas/citation-provenance.schema.json": "sha256:7d964c030c39dd81bfcd113b9712e9b025882af4e3d16660f7005d58a5c9a4aa",
68
69
  "schemas/claim-evidence.schema.json": "sha256:524b4b8d47d58a7c75e5369e9bad55feaaa282c31076631d5f2517ae1328e1cb",
69
70
  "schemas/claim-verification.schema.json": "sha256:dc9f5bd2af09fad6fdc40e9e63814825350b74d67b33fd3ed241190e983e91b1",
70
71
  "schemas/claim.schema.json": "sha256:ce79ccbfa34ece9b7a309a6962522ea06a1f44c468b4c472b5c376554a788537",
71
72
  "schemas/cli-output-envelope.schema.json": "sha256:6964e8f2f43618bfd0d7a3f5344b37ebc26f04779796bb8ff4675b935b6208c3",
72
73
  "schemas/collection-result.schema.json": "sha256:d844aa183300abf220030f6a000f297195a06c02f2cd3a4f15a399e317b8c5d8",
73
74
  "schemas/common.defs.json": "sha256:ac66081df6b86f652e066ea868edecfcd36cdd1b1c81e55a1e3af880f671b727",
75
+ "schemas/competitor-representation.schema.json": "sha256:c90ce92c3c313ef817753e9eec66f0a059bce7f7795643edaf54120aa274b48b",
74
76
  "schemas/competitor.schema.json": "sha256:2f6fd7e4543846bde56ff4dc62bb41fa366889787b794a7cdb0bff1a3392e591",
75
77
  "schemas/config.schema.json": "sha256:da40fe568844a6303d265f83058fce9f4a9a569cd72b271bc219361c71e8e8fa",
76
78
  "schemas/connection.schema.json": "sha256:abcedde8d62d0c0663d4f959e06132a617908058ed965078965445ef3b108310",
@@ -117,6 +119,7 @@
117
119
  "schemas/remediation-verification.schema.json": "sha256:b56560b4f6fd82b9d3db4ad4f7fd0a0e4b289bfebf2e5a02e7c6727d5ba97291",
118
120
  "schemas/representation-data.schema.json": "sha256:eef400570f073b49947d640790610e3bc980869d9eaeb1412bcff74a3385cda9",
119
121
  "schemas/research-dataset.schema.json": "sha256:f69da3db9d3984e70e5cb3b92de7384c39ea5d10532ad5f5f5a0e5a2c0aa353e",
122
+ "schemas/response-span.schema.json": "sha256:36bd67e8a1ea8f7dce08e79fffefe2eaf5885e8bdf89985b0dbc6bc75098def3",
120
123
  "schemas/review-item.schema.json": "sha256:df532a70385d5031bbc18654f3ccb436dc6e8d402ccf987e58f8f7e3ad2fb3f1",
121
124
  "schemas/review-policy.schema.json": "sha256:b2d176b1886f78c384b25532a0c3eb18548dfbd17f362a305e622bab562a1d04",
122
125
  "schemas/reviewer.schema.json": "sha256:3716697b752575a1277f2c2b318b1f2565de02bf9dce2a0c165567ab5330d18b",
@@ -128,13 +131,14 @@
128
131
  "schemas/search-discovery-data.schema.json": "sha256:23c45442c55f2a0b5a0b910da03641319a66d3b9b6811892fe30b2b3a9663b80",
129
132
  "schemas/search-report.schema.json": "sha256:d6e837580fdd53365e74d3d8b5101cd5a7d54b72f438155293aac399f676b176",
130
133
  "schemas/source-identity-chain.schema.json": "sha256:a65d9c12eaed1bd6b637c66a2f9362c17287fdfcb454d8676fb611d2d28aa019",
134
+ "schemas/source-retrieval.schema.json": "sha256:52112d98d01471cdb95f0e0f5ff5fa08b495c45037928e760b5c1a934224732a",
131
135
  "schemas/sow.schema.json": "sha256:3a3fd6048a747a9bc0cfaea98920376b043616a33c953a9eb8b74d0ae32dded0",
132
136
  "schemas/summary.schema.json": "sha256:0c9eb076fe992f351c3963728ba247a003648d8fe637b7cdd3016ba5842199c6",
133
137
  "schemas/variance.schema.json": "sha256:68389f64f0a3be13ff8951e8eefba9a5c31d0738325cb47e37c1a8435bea48f0",
134
138
  "scripts/README.md": "sha256:9eee4e8beb4579a183bd714c9dd24b83abd020753eada5caeffae004739d60b5",
135
- "SKILL.md": "sha256:4a7e19382de8b39544c392defedb3eee189404f7ba79932c9b13bb0426743def",
139
+ "SKILL.md": "sha256:2b7c674aa4f656d29bf13eaa85440b36a4da89b447331082b664ebf36f1a0da6",
136
140
  "templates/finding-review.md": "sha256:b270a83d3f015150aac80249ae9314979c0befea39ff92ec455f9a5aaa73404c",
137
- "VERSION": "sha256:65a6bd97a4a6b72911ae6c3d45991f4326c95f792e196f8bf74857a557b27585"
141
+ "VERSION": "sha256:a482aec6f30758f5ba391b686d1f33d8ef1ab78ac649da44307ae41eb5ecad43"
138
142
  },
139
- "treeHash": "sha256:ee414162970cefa47e9b417814c0611133618987449c16027607d679f451bdb9"
143
+ "treeHash": "sha256:e24490d3f85a2d859bbf9f0ecc640303e89a8f39a3bc6c1d02de03d21ac9e70a"
140
144
  }