@nebulacomponents/citable 1.4.0 → 1.5.1

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 (137) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/README.md +34 -6
  3. package/dist/universal/.agents/skills/citable/SKILL.md +8 -3
  4. package/dist/universal/.agents/skills/citable/VERSION +1 -1
  5. package/dist/universal/.agents/skills/citable/commands/README.md +4 -1
  6. package/dist/universal/.agents/skills/citable/commands/measurement.md +17 -0
  7. package/dist/universal/.agents/skills/citable/manifest.json +12 -8
  8. package/dist/universal/.agents/skills/citable/schemas/connection.schema.json +32 -0
  9. package/dist/universal/.agents/skills/citable/schemas/intervention.schema.json +33 -0
  10. package/dist/universal/.agents/skills/citable/schemas/metric.schema.json +42 -0
  11. package/dist/universal/.agents/skills/citable/schemas/objective.schema.json +65 -0
  12. package/dist/universal/.agents/skills/citable/schemas/observation.schema.json +1 -1
  13. package/dist/universal/.claude/skills/citable/SKILL.md +8 -3
  14. package/dist/universal/.claude/skills/citable/VERSION +1 -1
  15. package/dist/universal/.claude/skills/citable/commands/README.md +4 -1
  16. package/dist/universal/.claude/skills/citable/commands/measurement.md +17 -0
  17. package/dist/universal/.claude/skills/citable/manifest.json +12 -8
  18. package/dist/universal/.claude/skills/citable/schemas/connection.schema.json +32 -0
  19. package/dist/universal/.claude/skills/citable/schemas/intervention.schema.json +33 -0
  20. package/dist/universal/.claude/skills/citable/schemas/metric.schema.json +42 -0
  21. package/dist/universal/.claude/skills/citable/schemas/objective.schema.json +65 -0
  22. package/dist/universal/.claude/skills/citable/schemas/observation.schema.json +1 -1
  23. package/dist/universal/.cursor/skills/citable/SKILL.md +8 -3
  24. package/dist/universal/.cursor/skills/citable/VERSION +1 -1
  25. package/dist/universal/.cursor/skills/citable/commands/README.md +4 -1
  26. package/dist/universal/.cursor/skills/citable/commands/measurement.md +17 -0
  27. package/dist/universal/.cursor/skills/citable/manifest.json +12 -8
  28. package/dist/universal/.cursor/skills/citable/schemas/connection.schema.json +32 -0
  29. package/dist/universal/.cursor/skills/citable/schemas/intervention.schema.json +33 -0
  30. package/dist/universal/.cursor/skills/citable/schemas/metric.schema.json +42 -0
  31. package/dist/universal/.cursor/skills/citable/schemas/objective.schema.json +65 -0
  32. package/dist/universal/.cursor/skills/citable/schemas/observation.schema.json +1 -1
  33. package/dist/universal/.gemini/skills/citable/SKILL.md +8 -3
  34. package/dist/universal/.gemini/skills/citable/VERSION +1 -1
  35. package/dist/universal/.gemini/skills/citable/commands/README.md +4 -1
  36. package/dist/universal/.gemini/skills/citable/commands/measurement.md +17 -0
  37. package/dist/universal/.gemini/skills/citable/manifest.json +12 -8
  38. package/dist/universal/.gemini/skills/citable/schemas/connection.schema.json +32 -0
  39. package/dist/universal/.gemini/skills/citable/schemas/intervention.schema.json +33 -0
  40. package/dist/universal/.gemini/skills/citable/schemas/metric.schema.json +42 -0
  41. package/dist/universal/.gemini/skills/citable/schemas/objective.schema.json +65 -0
  42. package/dist/universal/.gemini/skills/citable/schemas/observation.schema.json +1 -1
  43. package/dist/universal/.github/skills/citable/SKILL.md +8 -3
  44. package/dist/universal/.github/skills/citable/VERSION +1 -1
  45. package/dist/universal/.github/skills/citable/commands/README.md +4 -1
  46. package/dist/universal/.github/skills/citable/commands/measurement.md +17 -0
  47. package/dist/universal/.github/skills/citable/manifest.json +12 -8
  48. package/dist/universal/.github/skills/citable/schemas/connection.schema.json +32 -0
  49. package/dist/universal/.github/skills/citable/schemas/intervention.schema.json +33 -0
  50. package/dist/universal/.github/skills/citable/schemas/metric.schema.json +42 -0
  51. package/dist/universal/.github/skills/citable/schemas/objective.schema.json +65 -0
  52. package/dist/universal/.github/skills/citable/schemas/observation.schema.json +1 -1
  53. package/dist/universal/.kiro/skills/citable/SKILL.md +8 -3
  54. package/dist/universal/.kiro/skills/citable/VERSION +1 -1
  55. package/dist/universal/.kiro/skills/citable/commands/README.md +4 -1
  56. package/dist/universal/.kiro/skills/citable/commands/measurement.md +17 -0
  57. package/dist/universal/.kiro/skills/citable/manifest.json +12 -8
  58. package/dist/universal/.kiro/skills/citable/schemas/connection.schema.json +32 -0
  59. package/dist/universal/.kiro/skills/citable/schemas/intervention.schema.json +33 -0
  60. package/dist/universal/.kiro/skills/citable/schemas/metric.schema.json +42 -0
  61. package/dist/universal/.kiro/skills/citable/schemas/objective.schema.json +65 -0
  62. package/dist/universal/.kiro/skills/citable/schemas/observation.schema.json +1 -1
  63. package/dist/universal/.opencode/skills/citable/SKILL.md +8 -3
  64. package/dist/universal/.opencode/skills/citable/VERSION +1 -1
  65. package/dist/universal/.opencode/skills/citable/commands/README.md +4 -1
  66. package/dist/universal/.opencode/skills/citable/commands/measurement.md +17 -0
  67. package/dist/universal/.opencode/skills/citable/manifest.json +12 -8
  68. package/dist/universal/.opencode/skills/citable/schemas/connection.schema.json +32 -0
  69. package/dist/universal/.opencode/skills/citable/schemas/intervention.schema.json +33 -0
  70. package/dist/universal/.opencode/skills/citable/schemas/metric.schema.json +42 -0
  71. package/dist/universal/.opencode/skills/citable/schemas/objective.schema.json +65 -0
  72. package/dist/universal/.opencode/skills/citable/schemas/observation.schema.json +1 -1
  73. package/dist/universal/.pi/agent/skills/citable/SKILL.md +8 -3
  74. package/dist/universal/.pi/agent/skills/citable/VERSION +1 -1
  75. package/dist/universal/.pi/agent/skills/citable/commands/README.md +4 -1
  76. package/dist/universal/.pi/agent/skills/citable/commands/measurement.md +17 -0
  77. package/dist/universal/.pi/agent/skills/citable/manifest.json +12 -8
  78. package/dist/universal/.pi/agent/skills/citable/schemas/connection.schema.json +32 -0
  79. package/dist/universal/.pi/agent/skills/citable/schemas/intervention.schema.json +33 -0
  80. package/dist/universal/.pi/agent/skills/citable/schemas/metric.schema.json +42 -0
  81. package/dist/universal/.pi/agent/skills/citable/schemas/objective.schema.json +65 -0
  82. package/dist/universal/.pi/agent/skills/citable/schemas/observation.schema.json +1 -1
  83. package/dist/universal/.qoder/skills/citable/SKILL.md +8 -3
  84. package/dist/universal/.qoder/skills/citable/VERSION +1 -1
  85. package/dist/universal/.qoder/skills/citable/commands/README.md +4 -1
  86. package/dist/universal/.qoder/skills/citable/commands/measurement.md +17 -0
  87. package/dist/universal/.qoder/skills/citable/manifest.json +12 -8
  88. package/dist/universal/.qoder/skills/citable/schemas/connection.schema.json +32 -0
  89. package/dist/universal/.qoder/skills/citable/schemas/intervention.schema.json +33 -0
  90. package/dist/universal/.qoder/skills/citable/schemas/metric.schema.json +42 -0
  91. package/dist/universal/.qoder/skills/citable/schemas/objective.schema.json +65 -0
  92. package/dist/universal/.qoder/skills/citable/schemas/observation.schema.json +1 -1
  93. package/dist/universal/.rovodev/skills/citable/SKILL.md +8 -3
  94. package/dist/universal/.rovodev/skills/citable/VERSION +1 -1
  95. package/dist/universal/.rovodev/skills/citable/commands/README.md +4 -1
  96. package/dist/universal/.rovodev/skills/citable/commands/measurement.md +17 -0
  97. package/dist/universal/.rovodev/skills/citable/manifest.json +12 -8
  98. package/dist/universal/.rovodev/skills/citable/schemas/connection.schema.json +32 -0
  99. package/dist/universal/.rovodev/skills/citable/schemas/intervention.schema.json +33 -0
  100. package/dist/universal/.rovodev/skills/citable/schemas/metric.schema.json +42 -0
  101. package/dist/universal/.rovodev/skills/citable/schemas/objective.schema.json +65 -0
  102. package/dist/universal/.rovodev/skills/citable/schemas/observation.schema.json +1 -1
  103. package/dist/universal/.trae/skills/citable/SKILL.md +8 -3
  104. package/dist/universal/.trae/skills/citable/VERSION +1 -1
  105. package/dist/universal/.trae/skills/citable/commands/README.md +4 -1
  106. package/dist/universal/.trae/skills/citable/commands/measurement.md +17 -0
  107. package/dist/universal/.trae/skills/citable/manifest.json +12 -8
  108. package/dist/universal/.trae/skills/citable/schemas/connection.schema.json +32 -0
  109. package/dist/universal/.trae/skills/citable/schemas/intervention.schema.json +33 -0
  110. package/dist/universal/.trae/skills/citable/schemas/metric.schema.json +42 -0
  111. package/dist/universal/.trae/skills/citable/schemas/objective.schema.json +65 -0
  112. package/dist/universal/.trae/skills/citable/schemas/observation.schema.json +1 -1
  113. package/dist/universal/.trae-cn/skills/citable/SKILL.md +8 -3
  114. package/dist/universal/.trae-cn/skills/citable/VERSION +1 -1
  115. package/dist/universal/.trae-cn/skills/citable/commands/README.md +4 -1
  116. package/dist/universal/.trae-cn/skills/citable/commands/measurement.md +17 -0
  117. package/dist/universal/.trae-cn/skills/citable/manifest.json +12 -8
  118. package/dist/universal/.trae-cn/skills/citable/schemas/connection.schema.json +32 -0
  119. package/dist/universal/.trae-cn/skills/citable/schemas/intervention.schema.json +33 -0
  120. package/dist/universal/.trae-cn/skills/citable/schemas/metric.schema.json +42 -0
  121. package/dist/universal/.trae-cn/skills/citable/schemas/objective.schema.json +65 -0
  122. package/dist/universal/.trae-cn/skills/citable/schemas/observation.schema.json +1 -1
  123. package/dist/universal/manifest.json +147 -99
  124. package/package.json +4 -1
  125. package/schemas/connection.schema.json +32 -0
  126. package/schemas/intervention.schema.json +33 -0
  127. package/schemas/metric.schema.json +42 -0
  128. package/schemas/objective.schema.json +65 -0
  129. package/schemas/observation.schema.json +1 -1
  130. package/skill/SKILL.md +8 -3
  131. package/skill/commands/README.md +4 -1
  132. package/skill/commands/measurement.md +17 -0
  133. package/src/cli/index.js +28 -0
  134. package/src/commands/measurement.js +205 -0
  135. package/src/installer/index.js +35 -7
  136. package/src/installer/providers.js +1 -1
  137. package/src/registries/index.js +13 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,42 @@
1
1
  # Changelog
2
2
 
3
+ ## Unreleased
4
+
5
+ ## 1.5.1 — 2026-07-18
6
+
7
+ ### Fixed
8
+
9
+ - `Ship release` now explicitly dispatches trusted npm publishing at the newly
10
+ created tag because GitHub suppresses workflow events generated by its own
11
+ repository token.
12
+
13
+ ## 1.5.0 — 2026-07-18
14
+
15
+ ### Added
16
+
17
+ - Installer aliases compatible with the common `skills` CLI interface:
18
+ repeatable `--agent`/`-a`, `--skill`/`-s`, `--copy`, `-p`, `-g`, and `*`
19
+ provider selection.
20
+ - Explicit copy-only integrity policy and actionable rejection of unsupported
21
+ symlink installs.
22
+ - Structured pull request controls with code ownership, a required PR contract,
23
+ Conventional Commits title validation, and release-note enforcement.
24
+ - Review-gated release preparation and shipping workflows with semantic-version
25
+ consistency checks, changelog-derived GitHub releases, protected tagging, and
26
+ npm trusted publishing handoff.
27
+ - Optional provider-neutral metric, objective, intervention, and connection-state
28
+ contracts with strict schema and referential validation.
29
+ - CSV/JSON metric imports, user-owned objective creation and validation, and
30
+ evidence-deduplicated baseline/evaluation reporting with explicit guardrails
31
+ and inconclusive outcomes.
32
+
33
+ ### Fixed
34
+
35
+ - `citable install --all` now selects every supported provider in addition to
36
+ confirming non-interactively.
37
+ - Release preparation now updates and validates the canonical skill version in
38
+ addition to package, lockfile, changelog, and roadmap versions.
39
+
3
40
  ## 1.4.0 — 2026-07-18
4
41
 
5
42
  ### Added
package/README.md CHANGED
@@ -52,6 +52,20 @@ Install into specific agents:
52
52
  npx @nebulacomponents/citable install --providers=claude,codex,cursor
53
53
  ```
54
54
 
55
+ The installer also accepts the common `skills` CLI conventions. `--agent` is
56
+ repeatable, `--skill` accepts `citable` or `*`, and `--copy` explicitly selects
57
+ Citable's default managed-copy mode:
58
+
59
+ ```bash
60
+ npx @nebulacomponents/citable install --agent claude-code --agent codex --skill citable --copy -p -y
61
+ ```
62
+
63
+ Install into every supported provider layout without prompting:
64
+
65
+ ```bash
66
+ npx @nebulacomponents/citable install --all --project
67
+ ```
68
+
55
69
  Install globally:
56
70
 
57
71
  ```bash
@@ -91,10 +105,13 @@ provider-specific home paths, including `~/.claude/skills/citable/`,
91
105
  Target resolution is deterministic: explicit `--providers` wins, then project
92
106
  harness directories, then user-home harness hints. `--providers=detected`
93
107
  selects every detected supported provider; `--providers=all` selects every
94
- supported provider layout for the requested scope. Unknown provider names fail
95
- non-zero. In non-interactive mode, use `--yes`; project scope is the default
96
- unless `--global`/`--user`/`--scope=global` is supplied. The installer never
97
- reports success when no install target was selected.
108
+ supported provider layout for the requested scope. `--providers=*` and `--all`
109
+ are equivalent provider selections; `--all` also confirms non-interactively.
110
+ Repeatable `--agent`/`-a`, `--skill`/`-s`, `--copy`, `-p`, and `-g` follow the
111
+ familiar `skills` CLI interface. Unknown provider or skill names fail non-zero.
112
+ Project scope is the default unless `--global`/`--user`/`--scope=global` is
113
+ supplied. The installer never reports success when no install target was
114
+ selected.
98
115
 
99
116
  Managed installs carry `manifest.json` with `managedBy: "citable-cli"` and
100
117
  SHA-256 hashes for the installed payload. Repeated installs validate the tree
@@ -102,7 +119,9 @@ and report `already current`. `update` compares the complete managed tree, not
102
119
  only `SKILL.md` or the version string. `uninstall` removes managed files only
103
120
  and preserves unrelated files in the skill directory. Locally modified managed
104
121
  installs and unmanaged `citable/` collisions are refused unless `--force` is
105
- used.
122
+ used. Symlink mode is intentionally unsupported: provider-specific payloads and
123
+ their manifests must remain an atomic managed unit so validation and uninstall
124
+ do not cross ownership boundaries.
106
125
 
107
126
  The initial installer installs the skill payload only. It does not install
108
127
  provider hooks, sidecar configuration, telemetry, or unrelated agent settings.
@@ -133,6 +152,10 @@ citable observe performance --target https://example.com # CRUX_API_KEY
133
152
  citable apply --input remediation-spec.json # dry run
134
153
  citable apply --input remediation-spec.json --write # reviewed + hash-locked
135
154
  citable monitor [runA runB]
155
+ citable metrics import --provider gsc --input metrics.csv
156
+ citable objectives init --input objective.json --write
157
+ citable objectives validate
158
+ citable evaluate OBJECTIVE-PRODUCT_DISCOVERY --ref-date 2026-07-18
136
159
  citable substantiate # claim/evidence assessment (dry run)
137
160
  citable validate # registry schema + referential integrity
138
161
  ```
@@ -143,7 +166,7 @@ citable validate # registry schema + referential integrity
143
166
  | --- | --- |
144
167
  | `skill/` | Canonical agent skill: SKILL.md, command contracts, rubrics, anti-patterns, policies, templates |
145
168
  | `src/` | CLI, commands, registries, detectors, crawler/extractor, evidence, reporting |
146
- | `schemas/` | JSON Schemas: 9 registries plus findings, runs, observations, remediation, config, and prompt results |
169
+ | `schemas/` | JSON Schemas: 13 registries plus findings, runs, observations, remediation, config, and prompt results |
147
170
  | `tests/` | Unit + integration suites; positive/negative fixtures |
148
171
  | `docs/` | ADR, traceability matrix, known limitations |
149
172
  | `dist/` | Generated distribution packages (run `npm run build:dist`) |
@@ -159,6 +182,8 @@ citable validate # registry schema + referential integrity
159
182
  any coverage claim
160
183
  - [Capability gap analysis](docs/capability-gap-analysis.md) — implemented,
161
184
  partial, operator-supplied, and missing evidence boundaries
185
+ - [Measurement objectives](docs/measurement-objectives.md) — optional metric
186
+ imports, user-owned objectives, comparison windows, and guardrails
162
187
 
163
188
  ## Requirements
164
189
 
@@ -168,6 +193,9 @@ an installed Chromium browser. Google index inspection uses `GSC_ACCESS_TOKEN`
168
193
  and `--site-url`; CrUX uses `CRUX_API_KEY`. Missing dependencies or credentials
169
194
  produce incomplete evidence. Supported frameworks for auto-detection: Next.js,
170
195
  Astro, Nuxt, SvelteKit, Gatsby (other stacks: audit their built HTML output).
196
+ Metrics and objectives are optional. No analytics or webmaster connection is
197
+ required for core Citable workflows; owner CSV/JSON imports work without live
198
+ provider authorization.
171
199
 
172
200
  ## License
173
201
 
@@ -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.4.0
10
+ version: 1.5.1
11
11
  ---
12
12
 
13
13
  # Citable — search & generative discoverability governance
@@ -88,6 +88,10 @@ citable action-plan [run-id] # ordered actions, blockers, semantic gate
88
88
  citable observe <mode> [options] # render/index/citation/log/passage/consensus/performance evidence
89
89
  citable apply --input <spec> [--write] # reviewed, hash-locked remediation; dry run by default
90
90
  citable monitor [runA runB] # observation regression alerts
91
+ citable metrics import --provider <name> --input <csv|json>
92
+ citable objectives init --input <json|yaml> [--write]
93
+ citable objectives validate
94
+ citable evaluate [objective-id] [--ref-date YYYY-MM-DD]
91
95
  ```
92
96
 
93
97
  Audit scopes: `technical seo aeo geo architecture entity claims evidence schema
@@ -144,8 +148,9 @@ mandatory.
144
148
 
145
149
  ## Registries are the source of truth
146
150
 
147
- `.citable/` holds nine YAML registries (queries, prompts, entities, claims,
148
- evidence, pages, crawlers, competitors, experiments), all schema-validated
151
+ `.citable/` holds YAML registries for queries, prompts, entities, claims,
152
+ evidence, pages, crawlers, competitors, experiments, metrics, objectives,
153
+ interventions, and optional connection state, all schema-validated
149
154
  (`schemas/*.schema.json`) with referential integrity checks. Rules:
150
155
 
151
156
  - Never overwrite registry content without history — use the loader/saver in
@@ -1 +1 @@
1
- 1.4.0
1
+ 1.5.1
@@ -24,11 +24,14 @@ intent, not executability, so statuses are strict:
24
24
  | /citable observe | implemented — render, index, citation, crawler-log, passage, consensus, performance, and corroboration evidence |
25
25
  | /citable apply | implemented — reviewed, hash-locked source replacements; dry run by default |
26
26
  | /citable monitor | implemented — compares immutable observation runs and emits evidence-linked alerts |
27
+ | /citable metrics import | implemented — validates declared CSV/JSON metrics and writes immutable observations |
28
+ | /citable objectives init / validate | implemented — user-owned metric selection, cohorts, windows, and guardrails |
29
+ | /citable evaluate | implemented — independent baseline/evaluation comparisons with inconclusive handling |
27
30
  | /citable ingest, map-site, map-queries, map-prompts, map-entities, map-evidence | specified (ingest.md) |
28
31
  | /citable optimize-page | specified (optimize-page.md) — requires source-to-render mapping, claim-preserving rewrites, build execution, rollback; none of that is proven yet |
29
32
  | /citable create-page, answer-block, architect, interlink, consolidate, metadata | specified (page-work.md) |
30
33
  | /citable validate-render | partially implemented by `observe render`; mobile/cross-browser and interaction exploration remain |
31
- | /citable measure seo/aeo/geo, test-prompts, monitor-crawlers, monitor-contradictions | partially implemented by observation imports, Google/CrUX live APIs, custom citation adapters, and monitor comparisons |
34
+ | /citable measure seo/aeo/geo, test-prompts, monitor-crawlers, monitor-contradictions | partially implemented by metric/observation imports, objective evaluation, Google/CrUX live APIs, custom citation adapters, and monitor comparisons |
32
35
 
33
36
  Shared refusal conditions (all commands): any action that would fabricate
34
37
  facts, citations, evidence, authorship, reviews, corroboration, or hidden
@@ -10,6 +10,23 @@ imports, and a disclosed custom citation-adapter protocol. It does not claim
10
10
  Bing AI Performance automation or equivalence between an API adapter and a
11
11
  consumer answer product. Preserve collector and product mode on every result.
12
12
 
13
+ # implemented metric and objective workflow
14
+
15
+ `citable metrics import --provider <name> --input <csv|json>` validates every
16
+ row against a declared entry in `metrics.yaml` and writes immutable metric
17
+ observations. `citable objectives init --input <json|yaml>` is dry-run by
18
+ default; `--write` adds the validated objective with registry history.
19
+ `citable objectives validate` checks contracts and metric references.
20
+ `citable evaluate [objective-id]` compares independent baseline and evaluation
21
+ windows, deduplicates repeated evidence, and reports each metric and guardrail
22
+ separately. Insufficient data is `inconclusive`, never zero. Results describe
23
+ temporal association and do not establish causation.
24
+
25
+ Metrics, objectives, interventions, and connection state are optional. The
26
+ absence of provider credentials is `not_configured`, not a finding and not
27
+ evidence of zero activity. Credentials must never enter registries or evidence
28
+ packages.
29
+
13
30
  # measure seo
14
31
  Inputs the operator exports (Search Console/Bing/analytics CSV or JSON).
15
32
  Workflow: validate segmentation (brand vs non-brand, intent, page type,
@@ -1,20 +1,20 @@
1
1
  {
2
2
  "name": "citable",
3
- "version": "1.4.0",
3
+ "version": "1.5.1",
4
4
  "managedBy": "citable-cli",
5
5
  "provider": "codex",
6
6
  "providerName": "OpenAI Codex",
7
7
  "scope": "bundle",
8
- "sourcePackage": "@nebulacomponents/citable@1.4.0",
8
+ "sourcePackage": "@nebulacomponents/citable@1.5.1",
9
9
  "variantPath": ".agents/skills/citable",
10
10
  "files": {
11
11
  "commands/action-findings.md": "sha256:510361461f24fcd4a550e0a8d960c383aefe23f9a65a54a3ffc44abd4c1293e7",
12
12
  "commands/ingest.md": "sha256:cf35659aecd9d0e160909003efdbe056864fc5d824c71b4ef0ee801ce07ff598",
13
- "commands/measurement.md": "sha256:c90352849a589b4cb66d1275a1888e9a2de5052a62399224c42b00f92bbdd814",
13
+ "commands/measurement.md": "sha256:5d7d94b496d2772ad433cf9fafa85af5c9638c8f326ec2017d2c8d6ef4dd1650",
14
14
  "commands/observe-and-act.md": "sha256:02a93bbbfddc3d8e11cb921ddccd19b0666133c4bdb4f4a280bcb131bed37e8c",
15
15
  "commands/optimize-page.md": "sha256:35866f3d7cdeef0376ea7a7d7036085a9b9cf95bbb300ecf4bd77610ebd74d85",
16
16
  "commands/page-work.md": "sha256:965a66e59bdf7b0da482d26fade53b3d265885ece5d463fe83b0789ebefaef3e",
17
- "commands/README.md": "sha256:71b7f2b7fc5e98cfa2b699ec48f58f3b4e32dfb0233315759fc98f7ae7eecac0",
17
+ "commands/README.md": "sha256:be1f55b439af94670d0711dcd7476eab09a2d7c86c4bcbf85b2ee0b454fb8684",
18
18
  "commands/validate-render.md": "sha256:a8e1d04d40b84d57c35039250d98c6a7302cd44a148a8c3b9d9cfb92678c4347",
19
19
  "policies/crawler-policy-template.md": "sha256:15c88a4eeb21f53f71e5250dd3eb2d2791a814b304eaefce8bb30e2bdf2e2e59",
20
20
  "references/aeo-geo-validation.md": "sha256:e45828d3ccca54a08513cb4235578c8a8ecf1dc47d1cb98e4a497838103bef70",
@@ -38,13 +38,17 @@
38
38
  "schemas/common.defs.json": "sha256:effdd812910d1c275c50520bb70d8aec085e53fa8cb68054dc58c04a5d4a66b3",
39
39
  "schemas/competitor.schema.json": "sha256:2f6fd7e4543846bde56ff4dc62bb41fa366889787b794a7cdb0bff1a3392e591",
40
40
  "schemas/config.schema.json": "sha256:a87f3bb0087de09035b9f2dafea66e32e4fcc2e3e329abcd0fd8a5ec33318f2a",
41
+ "schemas/connection.schema.json": "sha256:cf0e9698dee697fb2c124989c3f478187297594c6ae76ecd04a43470e0a73616",
41
42
  "schemas/crawler.schema.json": "sha256:1a113dfb80bc6cde904c3ea648c82ea1d88fe50f2c1a0e7175d44abba28ac64e",
42
43
  "schemas/detector-quality.schema.json": "sha256:5e9e1ac80b1198a0ff8fa17b9f7a543d3ccf3ed3d60196152f6ff095cfdebccd",
43
44
  "schemas/entity.schema.json": "sha256:78a08c35c8f4eb7a804ab46b61a238502f59621ac5218991e783251fbde61c4f",
44
45
  "schemas/evidence.schema.json": "sha256:76baec7ad7e89c6952473c01dacb9e3b26953c088331e6314d531ce620df9ec1",
45
46
  "schemas/experiment.schema.json": "sha256:3cebebc5745a9eb359261408b0a0421b8370d2c94f8244ce939827cd9da41cb6",
46
47
  "schemas/finding.schema.json": "sha256:85907cd04cd8d2fe24a1e618e0df7160f6d56aa1818db501f345aebce5eb5edb",
47
- "schemas/observation.schema.json": "sha256:81d8994591fff4bc23a10f813f1957719d5a2093171520f661ab8792e14748da",
48
+ "schemas/intervention.schema.json": "sha256:fcf28e117b207e64ffc96088aa70a95370841a2a9fa43ecb1c82b34c2058a818",
49
+ "schemas/metric.schema.json": "sha256:2ada648e7274a8d78cc9d6e7ed616f91faa79cf9ed07613e2c1fc53b247aac8d",
50
+ "schemas/objective.schema.json": "sha256:94404dc95d04a6641ea7b9654317d0222793251ad44d3dfd2875738622a36025",
51
+ "schemas/observation.schema.json": "sha256:240ab0030e900dd8d779b63ef0558b1cca3b59a6de1a10cf9b2418b73ad92f02",
48
52
  "schemas/page.schema.json": "sha256:627613c35f461177fa946df08edf66fbf6f6bbdfc57eef812572b3af796d5e07",
49
53
  "schemas/project.schema.json": "sha256:ea48fdb6480f7047ba4594bd5908bc1f79c1ad6b9a2c204df900959b5f203dc6",
50
54
  "schemas/prompt-result.schema.json": "sha256:b55be47d7d58d7b1dd8c3b1e849e24e55216212c592cde7eb836953379b85737",
@@ -53,9 +57,9 @@
53
57
  "schemas/remediation-spec.schema.json": "sha256:6fe8cb773702862ba6d261198bb5cc2dca3eca0a2310a60ebddd04377654df8d",
54
58
  "schemas/run.schema.json": "sha256:46c3178620f3a358d936d535aeadb83454b9b35b551e53e6615cc9862063dacb",
55
59
  "scripts/README.md": "sha256:1c3e952950ef353849621b07c5f615bf7cd20cc5654da4635492a7bd6384e747",
56
- "SKILL.md": "sha256:1e53637f88647dba7bdafc08545ad966f0f77b2814d956d3fbd57b38b3e34fa0",
60
+ "SKILL.md": "sha256:ef61c795af6e99099cd6247f4f6fec62ceb8c64f3eaa3e17eeb6b24057f7498c",
57
61
  "templates/finding-review.md": "sha256:b270a83d3f015150aac80249ae9314979c0befea39ff92ec455f9a5aaa73404c",
58
- "VERSION": "sha256:78b591400c56b7b67b8cb3b2b8a8e65e9093897f02ce0878e6b5405c68620fa7"
62
+ "VERSION": "sha256:dfe7d71b3f428eb73ed853f8fded65e2986896e21d69f45ebf06bb623b450e14"
59
63
  },
60
- "treeHash": "sha256:d5eb2a8baf1230bc82f28610cf0a875f58f5070cb3953838b8310bad07eca012"
64
+ "treeHash": "sha256:32f29a5d5aaab9b58e1ceae7ab894fe66fa2b55091248a20221f5f93b8e60915"
61
65
  }
@@ -0,0 +1,32 @@
1
+ {
2
+ "$id": "citable://schemas/connection.schema.json",
3
+ "$schema": "http://json-schema.org/draft-07/schema#",
4
+ "title": "Optional connector state registry",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["version", "kind", "updated", "entries"],
8
+ "properties": {
9
+ "version": { "const": 1 },
10
+ "kind": { "const": "connections" },
11
+ "updated": { "type": "string", "format": "date-time" },
12
+ "entries": {
13
+ "type": "array",
14
+ "items": {
15
+ "type": "object",
16
+ "additionalProperties": false,
17
+ "required": ["connection_id", "provider", "state", "authentication", "scopes", "limitations"],
18
+ "properties": {
19
+ "connection_id": { "type": "string", "pattern": "^CONNECTION-[A-Z0-9][A-Z0-9_-]*$" },
20
+ "provider": { "type": "string", "minLength": 1 },
21
+ "property_id": { "type": ["string", "null"] },
22
+ "state": { "type": "string", "enum": ["not_configured", "configured", "synchronized", "partial", "authorization_expired", "permission_denied", "quota_limited", "temporarily_unavailable"] },
23
+ "authentication": { "type": "string", "enum": ["none", "environment", "os_keychain", "external_secret_manager", "owner_import"] },
24
+ "scopes": { "type": "array", "items": { "type": "string" } },
25
+ "last_synchronized_at": { "type": ["string", "null"], "format": "date-time" },
26
+ "cursor": { "type": ["string", "null"] },
27
+ "limitations": { "type": "array", "items": { "type": "string" } }
28
+ }
29
+ }
30
+ }
31
+ }
32
+ }
@@ -0,0 +1,33 @@
1
+ {
2
+ "$id": "citable://schemas/intervention.schema.json",
3
+ "$schema": "http://json-schema.org/draft-07/schema#",
4
+ "title": "Intervention registry",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["version", "kind", "updated", "entries"],
8
+ "properties": {
9
+ "version": { "const": 1 },
10
+ "kind": { "const": "interventions" },
11
+ "updated": { "type": "string", "format": "date-time" },
12
+ "entries": {
13
+ "type": "array",
14
+ "items": {
15
+ "type": "object",
16
+ "additionalProperties": false,
17
+ "required": ["intervention_id", "name", "status", "deployed_at", "affected_urls", "finding_ids", "objective_ids", "limitations"],
18
+ "properties": {
19
+ "intervention_id": { "type": "string", "pattern": "^INTERVENTION-[A-Z0-9][A-Z0-9_-]*$" },
20
+ "name": { "type": "string", "minLength": 1 },
21
+ "status": { "type": "string", "enum": ["planned", "deployed", "rolled_back", "superseded"] },
22
+ "deployed_at": { "type": ["string", "null"], "format": "date-time" },
23
+ "commit": { "type": ["string", "null"] },
24
+ "pull_request": { "type": ["string", "null"] },
25
+ "affected_urls": { "type": "array", "items": { "type": "string" } },
26
+ "finding_ids": { "type": "array", "items": { "type": "string" } },
27
+ "objective_ids": { "type": "array", "items": { "type": "string", "pattern": "^OBJECTIVE-" } },
28
+ "limitations": { "type": "array", "items": { "type": "string" } }
29
+ }
30
+ }
31
+ }
32
+ }
33
+ }
@@ -0,0 +1,42 @@
1
+ {
2
+ "$id": "citable://schemas/metric.schema.json",
3
+ "$schema": "http://json-schema.org/draft-07/schema#",
4
+ "title": "Metric registry",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["version", "kind", "updated", "entries"],
8
+ "properties": {
9
+ "version": { "const": 1 },
10
+ "kind": { "const": "metrics" },
11
+ "updated": { "type": "string", "format": "date-time" },
12
+ "entries": {
13
+ "type": "array",
14
+ "items": {
15
+ "type": "object",
16
+ "additionalProperties": false,
17
+ "required": ["metric_id", "name", "provider", "external_name", "unit", "value_type", "aggregation", "direction", "dimensions", "limitations"],
18
+ "properties": {
19
+ "metric_id": { "type": "string", "pattern": "^METRIC-[A-Z0-9][A-Z0-9_-]*$" },
20
+ "name": { "type": "string", "minLength": 1 },
21
+ "description": { "type": "string" },
22
+ "provider": { "type": "string", "minLength": 1 },
23
+ "external_name": { "type": "string", "minLength": 1 },
24
+ "unit": { "type": "string", "enum": ["count", "ratio", "percent", "currency", "duration_ms", "position", "score", "custom"] },
25
+ "custom_unit": { "type": "string", "minLength": 1 },
26
+ "value_type": { "type": "string", "enum": ["integer", "number"] },
27
+ "aggregation": { "type": "string", "enum": ["sum", "average", "minimum", "maximum", "latest", "provider_defined"] },
28
+ "direction": { "type": "string", "enum": ["increase", "decrease", "maintain", "contextual"] },
29
+ "dimensions": { "type": "array", "uniqueItems": true, "items": { "type": "string", "minLength": 1 } },
30
+ "limitations": { "type": "array", "items": { "type": "string", "minLength": 1 } },
31
+ "status": { "type": "string", "enum": ["active", "deprecated"] }
32
+ },
33
+ "allOf": [
34
+ {
35
+ "if": { "properties": { "unit": { "const": "custom" } } },
36
+ "then": { "required": ["custom_unit"] }
37
+ }
38
+ ]
39
+ }
40
+ }
41
+ }
42
+ }
@@ -0,0 +1,65 @@
1
+ {
2
+ "$id": "citable://schemas/objective.schema.json",
3
+ "$schema": "http://json-schema.org/draft-07/schema#",
4
+ "title": "Objective registry",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["version", "kind", "updated", "entries"],
8
+ "properties": {
9
+ "version": { "const": 1 },
10
+ "kind": { "const": "objectives" },
11
+ "updated": { "type": "string", "format": "date-time" },
12
+ "entries": {
13
+ "type": "array",
14
+ "items": {
15
+ "type": "object",
16
+ "additionalProperties": false,
17
+ "required": ["objective_id", "name", "status", "primary_metrics", "supporting_metrics", "guardrails", "cohort", "comparison"],
18
+ "properties": {
19
+ "objective_id": { "type": "string", "pattern": "^OBJECTIVE-[A-Z0-9][A-Z0-9_-]*$" },
20
+ "name": { "type": "string", "minLength": 1 },
21
+ "description": { "type": "string" },
22
+ "owner": { "type": ["string", "null"] },
23
+ "status": { "type": "string", "enum": ["draft", "active", "paused", "archived"] },
24
+ "primary_metrics": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/definitions/metricRef" } },
25
+ "supporting_metrics": { "type": "array", "uniqueItems": true, "items": { "$ref": "#/definitions/metricRef" } },
26
+ "guardrails": { "type": "array", "items": { "$ref": "#/definitions/guardrail" } },
27
+ "cohort": { "$ref": "#/definitions/cohort" },
28
+ "comparison": {
29
+ "type": "object",
30
+ "additionalProperties": false,
31
+ "required": ["baseline_days", "evaluation_days", "minimum_observations"],
32
+ "properties": {
33
+ "baseline_days": { "type": "integer", "minimum": 1 },
34
+ "evaluation_days": { "type": "integer", "minimum": 1 },
35
+ "minimum_observations": { "type": "integer", "minimum": 1 }
36
+ }
37
+ }
38
+ }
39
+ }
40
+ }
41
+ },
42
+ "definitions": {
43
+ "metricRef": { "type": "string", "pattern": "^METRIC-[A-Z0-9][A-Z0-9_-]*$" },
44
+ "guardrail": {
45
+ "type": "object",
46
+ "additionalProperties": false,
47
+ "required": ["metric_id", "operator", "threshold"],
48
+ "properties": {
49
+ "metric_id": { "$ref": "#/definitions/metricRef" },
50
+ "operator": { "type": "string", "enum": ["gte", "lte", "increase_by", "decrease_by", "no_regression"] },
51
+ "threshold": { "type": "number" }
52
+ }
53
+ },
54
+ "cohort": {
55
+ "type": "object",
56
+ "additionalProperties": false,
57
+ "required": ["urls", "queries", "labels"],
58
+ "properties": {
59
+ "urls": { "type": "array", "items": { "type": "string" } },
60
+ "queries": { "type": "array", "items": { "type": "string" } },
61
+ "labels": { "type": "array", "items": { "type": "string" } }
62
+ }
63
+ }
64
+ }
65
+ }
@@ -7,7 +7,7 @@
7
7
  "required": ["observation_id", "kind", "state", "collected_at", "collection_method", "confidence", "source", "evidence_hash", "data"],
8
8
  "properties": {
9
9
  "observation_id": { "type": "string", "minLength": 1 },
10
- "kind": { "type": "string", "enum": ["render", "index", "citation", "citation_review", "crawler_log", "passage", "canonical_freshness", "performance", "corroboration"] },
10
+ "kind": { "type": "string", "enum": ["render", "index", "citation", "citation_review", "crawler_log", "passage", "canonical_freshness", "performance", "corroboration", "metric"] },
11
11
  "state": { "type": "string", "enum": ["observed", "not_observed", "not_evidenced", "incomplete", "review_required", "failed"] },
12
12
  "collected_at": { "type": "string", "format": "date-time" },
13
13
  "collection_method": { "type": "string", "enum": ["live_api", "browser", "owner_import", "synthetic_fetch", "static_analysis", "human_review"] },
@@ -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.4.0
10
+ version: 1.5.1
11
11
  ---
12
12
 
13
13
  # Citable — search & generative discoverability governance
@@ -88,6 +88,10 @@ citable action-plan [run-id] # ordered actions, blockers, semantic gate
88
88
  citable observe <mode> [options] # render/index/citation/log/passage/consensus/performance evidence
89
89
  citable apply --input <spec> [--write] # reviewed, hash-locked remediation; dry run by default
90
90
  citable monitor [runA runB] # observation regression alerts
91
+ citable metrics import --provider <name> --input <csv|json>
92
+ citable objectives init --input <json|yaml> [--write]
93
+ citable objectives validate
94
+ citable evaluate [objective-id] [--ref-date YYYY-MM-DD]
91
95
  ```
92
96
 
93
97
  Audit scopes: `technical seo aeo geo architecture entity claims evidence schema
@@ -144,8 +148,9 @@ mandatory.
144
148
 
145
149
  ## Registries are the source of truth
146
150
 
147
- `.citable/` holds nine YAML registries (queries, prompts, entities, claims,
148
- evidence, pages, crawlers, competitors, experiments), all schema-validated
151
+ `.citable/` holds YAML registries for queries, prompts, entities, claims,
152
+ evidence, pages, crawlers, competitors, experiments, metrics, objectives,
153
+ interventions, and optional connection state, all schema-validated
149
154
  (`schemas/*.schema.json`) with referential integrity checks. Rules:
150
155
 
151
156
  - Never overwrite registry content without history — use the loader/saver in
@@ -1 +1 @@
1
- 1.4.0
1
+ 1.5.1
@@ -24,11 +24,14 @@ intent, not executability, so statuses are strict:
24
24
  | /citable observe | implemented — render, index, citation, crawler-log, passage, consensus, performance, and corroboration evidence |
25
25
  | /citable apply | implemented — reviewed, hash-locked source replacements; dry run by default |
26
26
  | /citable monitor | implemented — compares immutable observation runs and emits evidence-linked alerts |
27
+ | /citable metrics import | implemented — validates declared CSV/JSON metrics and writes immutable observations |
28
+ | /citable objectives init / validate | implemented — user-owned metric selection, cohorts, windows, and guardrails |
29
+ | /citable evaluate | implemented — independent baseline/evaluation comparisons with inconclusive handling |
27
30
  | /citable ingest, map-site, map-queries, map-prompts, map-entities, map-evidence | specified (ingest.md) |
28
31
  | /citable optimize-page | specified (optimize-page.md) — requires source-to-render mapping, claim-preserving rewrites, build execution, rollback; none of that is proven yet |
29
32
  | /citable create-page, answer-block, architect, interlink, consolidate, metadata | specified (page-work.md) |
30
33
  | /citable validate-render | partially implemented by `observe render`; mobile/cross-browser and interaction exploration remain |
31
- | /citable measure seo/aeo/geo, test-prompts, monitor-crawlers, monitor-contradictions | partially implemented by observation imports, Google/CrUX live APIs, custom citation adapters, and monitor comparisons |
34
+ | /citable measure seo/aeo/geo, test-prompts, monitor-crawlers, monitor-contradictions | partially implemented by metric/observation imports, objective evaluation, Google/CrUX live APIs, custom citation adapters, and monitor comparisons |
32
35
 
33
36
  Shared refusal conditions (all commands): any action that would fabricate
34
37
  facts, citations, evidence, authorship, reviews, corroboration, or hidden
@@ -10,6 +10,23 @@ imports, and a disclosed custom citation-adapter protocol. It does not claim
10
10
  Bing AI Performance automation or equivalence between an API adapter and a
11
11
  consumer answer product. Preserve collector and product mode on every result.
12
12
 
13
+ # implemented metric and objective workflow
14
+
15
+ `citable metrics import --provider <name> --input <csv|json>` validates every
16
+ row against a declared entry in `metrics.yaml` and writes immutable metric
17
+ observations. `citable objectives init --input <json|yaml>` is dry-run by
18
+ default; `--write` adds the validated objective with registry history.
19
+ `citable objectives validate` checks contracts and metric references.
20
+ `citable evaluate [objective-id]` compares independent baseline and evaluation
21
+ windows, deduplicates repeated evidence, and reports each metric and guardrail
22
+ separately. Insufficient data is `inconclusive`, never zero. Results describe
23
+ temporal association and do not establish causation.
24
+
25
+ Metrics, objectives, interventions, and connection state are optional. The
26
+ absence of provider credentials is `not_configured`, not a finding and not
27
+ evidence of zero activity. Credentials must never enter registries or evidence
28
+ packages.
29
+
13
30
  # measure seo
14
31
  Inputs the operator exports (Search Console/Bing/analytics CSV or JSON).
15
32
  Workflow: validate segmentation (brand vs non-brand, intent, page type,
@@ -1,20 +1,20 @@
1
1
  {
2
2
  "name": "citable",
3
- "version": "1.4.0",
3
+ "version": "1.5.1",
4
4
  "managedBy": "citable-cli",
5
5
  "provider": "claude",
6
6
  "providerName": "Claude Code",
7
7
  "scope": "bundle",
8
- "sourcePackage": "@nebulacomponents/citable@1.4.0",
8
+ "sourcePackage": "@nebulacomponents/citable@1.5.1",
9
9
  "variantPath": ".claude/skills/citable",
10
10
  "files": {
11
11
  "commands/action-findings.md": "sha256:510361461f24fcd4a550e0a8d960c383aefe23f9a65a54a3ffc44abd4c1293e7",
12
12
  "commands/ingest.md": "sha256:cf35659aecd9d0e160909003efdbe056864fc5d824c71b4ef0ee801ce07ff598",
13
- "commands/measurement.md": "sha256:c90352849a589b4cb66d1275a1888e9a2de5052a62399224c42b00f92bbdd814",
13
+ "commands/measurement.md": "sha256:5d7d94b496d2772ad433cf9fafa85af5c9638c8f326ec2017d2c8d6ef4dd1650",
14
14
  "commands/observe-and-act.md": "sha256:02a93bbbfddc3d8e11cb921ddccd19b0666133c4bdb4f4a280bcb131bed37e8c",
15
15
  "commands/optimize-page.md": "sha256:35866f3d7cdeef0376ea7a7d7036085a9b9cf95bbb300ecf4bd77610ebd74d85",
16
16
  "commands/page-work.md": "sha256:965a66e59bdf7b0da482d26fade53b3d265885ece5d463fe83b0789ebefaef3e",
17
- "commands/README.md": "sha256:71b7f2b7fc5e98cfa2b699ec48f58f3b4e32dfb0233315759fc98f7ae7eecac0",
17
+ "commands/README.md": "sha256:be1f55b439af94670d0711dcd7476eab09a2d7c86c4bcbf85b2ee0b454fb8684",
18
18
  "commands/validate-render.md": "sha256:a8e1d04d40b84d57c35039250d98c6a7302cd44a148a8c3b9d9cfb92678c4347",
19
19
  "policies/crawler-policy-template.md": "sha256:15c88a4eeb21f53f71e5250dd3eb2d2791a814b304eaefce8bb30e2bdf2e2e59",
20
20
  "references/aeo-geo-validation.md": "sha256:e45828d3ccca54a08513cb4235578c8a8ecf1dc47d1cb98e4a497838103bef70",
@@ -38,13 +38,17 @@
38
38
  "schemas/common.defs.json": "sha256:effdd812910d1c275c50520bb70d8aec085e53fa8cb68054dc58c04a5d4a66b3",
39
39
  "schemas/competitor.schema.json": "sha256:2f6fd7e4543846bde56ff4dc62bb41fa366889787b794a7cdb0bff1a3392e591",
40
40
  "schemas/config.schema.json": "sha256:a87f3bb0087de09035b9f2dafea66e32e4fcc2e3e329abcd0fd8a5ec33318f2a",
41
+ "schemas/connection.schema.json": "sha256:cf0e9698dee697fb2c124989c3f478187297594c6ae76ecd04a43470e0a73616",
41
42
  "schemas/crawler.schema.json": "sha256:1a113dfb80bc6cde904c3ea648c82ea1d88fe50f2c1a0e7175d44abba28ac64e",
42
43
  "schemas/detector-quality.schema.json": "sha256:5e9e1ac80b1198a0ff8fa17b9f7a543d3ccf3ed3d60196152f6ff095cfdebccd",
43
44
  "schemas/entity.schema.json": "sha256:78a08c35c8f4eb7a804ab46b61a238502f59621ac5218991e783251fbde61c4f",
44
45
  "schemas/evidence.schema.json": "sha256:76baec7ad7e89c6952473c01dacb9e3b26953c088331e6314d531ce620df9ec1",
45
46
  "schemas/experiment.schema.json": "sha256:3cebebc5745a9eb359261408b0a0421b8370d2c94f8244ce939827cd9da41cb6",
46
47
  "schemas/finding.schema.json": "sha256:85907cd04cd8d2fe24a1e618e0df7160f6d56aa1818db501f345aebce5eb5edb",
47
- "schemas/observation.schema.json": "sha256:81d8994591fff4bc23a10f813f1957719d5a2093171520f661ab8792e14748da",
48
+ "schemas/intervention.schema.json": "sha256:fcf28e117b207e64ffc96088aa70a95370841a2a9fa43ecb1c82b34c2058a818",
49
+ "schemas/metric.schema.json": "sha256:2ada648e7274a8d78cc9d6e7ed616f91faa79cf9ed07613e2c1fc53b247aac8d",
50
+ "schemas/objective.schema.json": "sha256:94404dc95d04a6641ea7b9654317d0222793251ad44d3dfd2875738622a36025",
51
+ "schemas/observation.schema.json": "sha256:240ab0030e900dd8d779b63ef0558b1cca3b59a6de1a10cf9b2418b73ad92f02",
48
52
  "schemas/page.schema.json": "sha256:627613c35f461177fa946df08edf66fbf6f6bbdfc57eef812572b3af796d5e07",
49
53
  "schemas/project.schema.json": "sha256:ea48fdb6480f7047ba4594bd5908bc1f79c1ad6b9a2c204df900959b5f203dc6",
50
54
  "schemas/prompt-result.schema.json": "sha256:b55be47d7d58d7b1dd8c3b1e849e24e55216212c592cde7eb836953379b85737",
@@ -53,9 +57,9 @@
53
57
  "schemas/remediation-spec.schema.json": "sha256:6fe8cb773702862ba6d261198bb5cc2dca3eca0a2310a60ebddd04377654df8d",
54
58
  "schemas/run.schema.json": "sha256:46c3178620f3a358d936d535aeadb83454b9b35b551e53e6615cc9862063dacb",
55
59
  "scripts/README.md": "sha256:1c3e952950ef353849621b07c5f615bf7cd20cc5654da4635492a7bd6384e747",
56
- "SKILL.md": "sha256:1e53637f88647dba7bdafc08545ad966f0f77b2814d956d3fbd57b38b3e34fa0",
60
+ "SKILL.md": "sha256:ef61c795af6e99099cd6247f4f6fec62ceb8c64f3eaa3e17eeb6b24057f7498c",
57
61
  "templates/finding-review.md": "sha256:b270a83d3f015150aac80249ae9314979c0befea39ff92ec455f9a5aaa73404c",
58
- "VERSION": "sha256:78b591400c56b7b67b8cb3b2b8a8e65e9093897f02ce0878e6b5405c68620fa7"
62
+ "VERSION": "sha256:dfe7d71b3f428eb73ed853f8fded65e2986896e21d69f45ebf06bb623b450e14"
59
63
  },
60
- "treeHash": "sha256:d5eb2a8baf1230bc82f28610cf0a875f58f5070cb3953838b8310bad07eca012"
64
+ "treeHash": "sha256:32f29a5d5aaab9b58e1ceae7ab894fe66fa2b55091248a20221f5f93b8e60915"
61
65
  }