@nebulacomponents/citable 1.1.0 → 1.3.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.
- package/CHANGELOG.md +40 -1
- package/README.md +14 -2
- package/dist/universal/.agents/skills/citable/SKILL.md +49 -1
- package/dist/universal/.agents/skills/citable/VERSION +1 -1
- package/dist/universal/.agents/skills/citable/commands/README.md +1 -0
- package/dist/universal/.agents/skills/citable/commands/action-findings.md +37 -0
- package/dist/universal/.agents/skills/citable/manifest.json +20 -16
- package/dist/universal/.agents/skills/citable/references/aeo-geo-validation.md +50 -0
- package/dist/universal/.agents/skills/citable/references/capability-boundaries.md +34 -0
- package/dist/universal/.agents/skills/citable/schemas/action-plan.schema.json +55 -0
- package/dist/universal/.agents/skills/citable/schemas/claim.schema.json +2 -0
- package/dist/universal/.agents/skills/citable/schemas/common.defs.json +2 -0
- package/dist/universal/.agents/skills/citable/schemas/competitor.schema.json +1 -0
- package/dist/universal/.agents/skills/citable/schemas/crawler.schema.json +1 -0
- package/dist/universal/.agents/skills/citable/schemas/entity.schema.json +2 -1
- package/dist/universal/.agents/skills/citable/schemas/evidence.schema.json +1 -0
- package/dist/universal/.agents/skills/citable/schemas/experiment.schema.json +1 -0
- package/dist/universal/.agents/skills/citable/schemas/page.schema.json +1 -0
- package/dist/universal/.agents/skills/citable/schemas/prompt.schema.json +1 -0
- package/dist/universal/.agents/skills/citable/schemas/query.schema.json +1 -0
- package/dist/universal/.claude/skills/citable/SKILL.md +49 -1
- package/dist/universal/.claude/skills/citable/VERSION +1 -1
- package/dist/universal/.claude/skills/citable/commands/README.md +1 -0
- package/dist/universal/.claude/skills/citable/commands/action-findings.md +37 -0
- package/dist/universal/.claude/skills/citable/manifest.json +20 -16
- package/dist/universal/.claude/skills/citable/references/aeo-geo-validation.md +50 -0
- package/dist/universal/.claude/skills/citable/references/capability-boundaries.md +34 -0
- package/dist/universal/.claude/skills/citable/schemas/action-plan.schema.json +55 -0
- package/dist/universal/.claude/skills/citable/schemas/claim.schema.json +2 -0
- package/dist/universal/.claude/skills/citable/schemas/common.defs.json +2 -0
- package/dist/universal/.claude/skills/citable/schemas/competitor.schema.json +1 -0
- package/dist/universal/.claude/skills/citable/schemas/crawler.schema.json +1 -0
- package/dist/universal/.claude/skills/citable/schemas/entity.schema.json +2 -1
- package/dist/universal/.claude/skills/citable/schemas/evidence.schema.json +1 -0
- package/dist/universal/.claude/skills/citable/schemas/experiment.schema.json +1 -0
- package/dist/universal/.claude/skills/citable/schemas/page.schema.json +1 -0
- package/dist/universal/.claude/skills/citable/schemas/prompt.schema.json +1 -0
- package/dist/universal/.claude/skills/citable/schemas/query.schema.json +1 -0
- package/dist/universal/.cursor/skills/citable/SKILL.md +49 -1
- package/dist/universal/.cursor/skills/citable/VERSION +1 -1
- package/dist/universal/.cursor/skills/citable/commands/README.md +1 -0
- package/dist/universal/.cursor/skills/citable/commands/action-findings.md +37 -0
- package/dist/universal/.cursor/skills/citable/manifest.json +20 -16
- package/dist/universal/.cursor/skills/citable/references/aeo-geo-validation.md +50 -0
- package/dist/universal/.cursor/skills/citable/references/capability-boundaries.md +34 -0
- package/dist/universal/.cursor/skills/citable/schemas/action-plan.schema.json +55 -0
- package/dist/universal/.cursor/skills/citable/schemas/claim.schema.json +2 -0
- package/dist/universal/.cursor/skills/citable/schemas/common.defs.json +2 -0
- package/dist/universal/.cursor/skills/citable/schemas/competitor.schema.json +1 -0
- package/dist/universal/.cursor/skills/citable/schemas/crawler.schema.json +1 -0
- package/dist/universal/.cursor/skills/citable/schemas/entity.schema.json +2 -1
- package/dist/universal/.cursor/skills/citable/schemas/evidence.schema.json +1 -0
- package/dist/universal/.cursor/skills/citable/schemas/experiment.schema.json +1 -0
- package/dist/universal/.cursor/skills/citable/schemas/page.schema.json +1 -0
- package/dist/universal/.cursor/skills/citable/schemas/prompt.schema.json +1 -0
- package/dist/universal/.cursor/skills/citable/schemas/query.schema.json +1 -0
- package/dist/universal/.gemini/skills/citable/SKILL.md +49 -1
- package/dist/universal/.gemini/skills/citable/VERSION +1 -1
- package/dist/universal/.gemini/skills/citable/commands/README.md +1 -0
- package/dist/universal/.gemini/skills/citable/commands/action-findings.md +37 -0
- package/dist/universal/.gemini/skills/citable/manifest.json +20 -16
- package/dist/universal/.gemini/skills/citable/references/aeo-geo-validation.md +50 -0
- package/dist/universal/.gemini/skills/citable/references/capability-boundaries.md +34 -0
- package/dist/universal/.gemini/skills/citable/schemas/action-plan.schema.json +55 -0
- package/dist/universal/.gemini/skills/citable/schemas/claim.schema.json +2 -0
- package/dist/universal/.gemini/skills/citable/schemas/common.defs.json +2 -0
- package/dist/universal/.gemini/skills/citable/schemas/competitor.schema.json +1 -0
- package/dist/universal/.gemini/skills/citable/schemas/crawler.schema.json +1 -0
- package/dist/universal/.gemini/skills/citable/schemas/entity.schema.json +2 -1
- package/dist/universal/.gemini/skills/citable/schemas/evidence.schema.json +1 -0
- package/dist/universal/.gemini/skills/citable/schemas/experiment.schema.json +1 -0
- package/dist/universal/.gemini/skills/citable/schemas/page.schema.json +1 -0
- package/dist/universal/.gemini/skills/citable/schemas/prompt.schema.json +1 -0
- package/dist/universal/.gemini/skills/citable/schemas/query.schema.json +1 -0
- package/dist/universal/.github/skills/citable/SKILL.md +49 -1
- package/dist/universal/.github/skills/citable/VERSION +1 -1
- package/dist/universal/.github/skills/citable/commands/README.md +1 -0
- package/dist/universal/.github/skills/citable/commands/action-findings.md +37 -0
- package/dist/universal/.github/skills/citable/manifest.json +20 -16
- package/dist/universal/.github/skills/citable/references/aeo-geo-validation.md +50 -0
- package/dist/universal/.github/skills/citable/references/capability-boundaries.md +34 -0
- package/dist/universal/.github/skills/citable/schemas/action-plan.schema.json +55 -0
- package/dist/universal/.github/skills/citable/schemas/claim.schema.json +2 -0
- package/dist/universal/.github/skills/citable/schemas/common.defs.json +2 -0
- package/dist/universal/.github/skills/citable/schemas/competitor.schema.json +1 -0
- package/dist/universal/.github/skills/citable/schemas/crawler.schema.json +1 -0
- package/dist/universal/.github/skills/citable/schemas/entity.schema.json +2 -1
- package/dist/universal/.github/skills/citable/schemas/evidence.schema.json +1 -0
- package/dist/universal/.github/skills/citable/schemas/experiment.schema.json +1 -0
- package/dist/universal/.github/skills/citable/schemas/page.schema.json +1 -0
- package/dist/universal/.github/skills/citable/schemas/prompt.schema.json +1 -0
- package/dist/universal/.github/skills/citable/schemas/query.schema.json +1 -0
- package/dist/universal/.kiro/skills/citable/SKILL.md +49 -1
- package/dist/universal/.kiro/skills/citable/VERSION +1 -1
- package/dist/universal/.kiro/skills/citable/commands/README.md +1 -0
- package/dist/universal/.kiro/skills/citable/commands/action-findings.md +37 -0
- package/dist/universal/.kiro/skills/citable/manifest.json +20 -16
- package/dist/universal/.kiro/skills/citable/references/aeo-geo-validation.md +50 -0
- package/dist/universal/.kiro/skills/citable/references/capability-boundaries.md +34 -0
- package/dist/universal/.kiro/skills/citable/schemas/action-plan.schema.json +55 -0
- package/dist/universal/.kiro/skills/citable/schemas/claim.schema.json +2 -0
- package/dist/universal/.kiro/skills/citable/schemas/common.defs.json +2 -0
- package/dist/universal/.kiro/skills/citable/schemas/competitor.schema.json +1 -0
- package/dist/universal/.kiro/skills/citable/schemas/crawler.schema.json +1 -0
- package/dist/universal/.kiro/skills/citable/schemas/entity.schema.json +2 -1
- package/dist/universal/.kiro/skills/citable/schemas/evidence.schema.json +1 -0
- package/dist/universal/.kiro/skills/citable/schemas/experiment.schema.json +1 -0
- package/dist/universal/.kiro/skills/citable/schemas/page.schema.json +1 -0
- package/dist/universal/.kiro/skills/citable/schemas/prompt.schema.json +1 -0
- package/dist/universal/.kiro/skills/citable/schemas/query.schema.json +1 -0
- package/dist/universal/.opencode/skills/citable/SKILL.md +49 -1
- package/dist/universal/.opencode/skills/citable/VERSION +1 -1
- package/dist/universal/.opencode/skills/citable/commands/README.md +1 -0
- package/dist/universal/.opencode/skills/citable/commands/action-findings.md +37 -0
- package/dist/universal/.opencode/skills/citable/manifest.json +20 -16
- package/dist/universal/.opencode/skills/citable/references/aeo-geo-validation.md +50 -0
- package/dist/universal/.opencode/skills/citable/references/capability-boundaries.md +34 -0
- package/dist/universal/.opencode/skills/citable/schemas/action-plan.schema.json +55 -0
- package/dist/universal/.opencode/skills/citable/schemas/claim.schema.json +2 -0
- package/dist/universal/.opencode/skills/citable/schemas/common.defs.json +2 -0
- package/dist/universal/.opencode/skills/citable/schemas/competitor.schema.json +1 -0
- package/dist/universal/.opencode/skills/citable/schemas/crawler.schema.json +1 -0
- package/dist/universal/.opencode/skills/citable/schemas/entity.schema.json +2 -1
- package/dist/universal/.opencode/skills/citable/schemas/evidence.schema.json +1 -0
- package/dist/universal/.opencode/skills/citable/schemas/experiment.schema.json +1 -0
- package/dist/universal/.opencode/skills/citable/schemas/page.schema.json +1 -0
- package/dist/universal/.opencode/skills/citable/schemas/prompt.schema.json +1 -0
- package/dist/universal/.opencode/skills/citable/schemas/query.schema.json +1 -0
- package/dist/universal/.pi/agent/skills/citable/SKILL.md +49 -1
- package/dist/universal/.pi/agent/skills/citable/VERSION +1 -1
- package/dist/universal/.pi/agent/skills/citable/commands/README.md +1 -0
- package/dist/universal/.pi/agent/skills/citable/commands/action-findings.md +37 -0
- package/dist/universal/.pi/agent/skills/citable/manifest.json +20 -16
- package/dist/universal/.pi/agent/skills/citable/references/aeo-geo-validation.md +50 -0
- package/dist/universal/.pi/agent/skills/citable/references/capability-boundaries.md +34 -0
- package/dist/universal/.pi/agent/skills/citable/schemas/action-plan.schema.json +55 -0
- package/dist/universal/.pi/agent/skills/citable/schemas/claim.schema.json +2 -0
- package/dist/universal/.pi/agent/skills/citable/schemas/common.defs.json +2 -0
- package/dist/universal/.pi/agent/skills/citable/schemas/competitor.schema.json +1 -0
- package/dist/universal/.pi/agent/skills/citable/schemas/crawler.schema.json +1 -0
- package/dist/universal/.pi/agent/skills/citable/schemas/entity.schema.json +2 -1
- package/dist/universal/.pi/agent/skills/citable/schemas/evidence.schema.json +1 -0
- package/dist/universal/.pi/agent/skills/citable/schemas/experiment.schema.json +1 -0
- package/dist/universal/.pi/agent/skills/citable/schemas/page.schema.json +1 -0
- package/dist/universal/.pi/agent/skills/citable/schemas/prompt.schema.json +1 -0
- package/dist/universal/.pi/agent/skills/citable/schemas/query.schema.json +1 -0
- package/dist/universal/.qoder/skills/citable/SKILL.md +49 -1
- package/dist/universal/.qoder/skills/citable/VERSION +1 -1
- package/dist/universal/.qoder/skills/citable/commands/README.md +1 -0
- package/dist/universal/.qoder/skills/citable/commands/action-findings.md +37 -0
- package/dist/universal/.qoder/skills/citable/manifest.json +20 -16
- package/dist/universal/.qoder/skills/citable/references/aeo-geo-validation.md +50 -0
- package/dist/universal/.qoder/skills/citable/references/capability-boundaries.md +34 -0
- package/dist/universal/.qoder/skills/citable/schemas/action-plan.schema.json +55 -0
- package/dist/universal/.qoder/skills/citable/schemas/claim.schema.json +2 -0
- package/dist/universal/.qoder/skills/citable/schemas/common.defs.json +2 -0
- package/dist/universal/.qoder/skills/citable/schemas/competitor.schema.json +1 -0
- package/dist/universal/.qoder/skills/citable/schemas/crawler.schema.json +1 -0
- package/dist/universal/.qoder/skills/citable/schemas/entity.schema.json +2 -1
- package/dist/universal/.qoder/skills/citable/schemas/evidence.schema.json +1 -0
- package/dist/universal/.qoder/skills/citable/schemas/experiment.schema.json +1 -0
- package/dist/universal/.qoder/skills/citable/schemas/page.schema.json +1 -0
- package/dist/universal/.qoder/skills/citable/schemas/prompt.schema.json +1 -0
- package/dist/universal/.qoder/skills/citable/schemas/query.schema.json +1 -0
- package/dist/universal/.rovodev/skills/citable/SKILL.md +49 -1
- package/dist/universal/.rovodev/skills/citable/VERSION +1 -1
- package/dist/universal/.rovodev/skills/citable/commands/README.md +1 -0
- package/dist/universal/.rovodev/skills/citable/commands/action-findings.md +37 -0
- package/dist/universal/.rovodev/skills/citable/manifest.json +20 -16
- package/dist/universal/.rovodev/skills/citable/references/aeo-geo-validation.md +50 -0
- package/dist/universal/.rovodev/skills/citable/references/capability-boundaries.md +34 -0
- package/dist/universal/.rovodev/skills/citable/schemas/action-plan.schema.json +55 -0
- package/dist/universal/.rovodev/skills/citable/schemas/claim.schema.json +2 -0
- package/dist/universal/.rovodev/skills/citable/schemas/common.defs.json +2 -0
- package/dist/universal/.rovodev/skills/citable/schemas/competitor.schema.json +1 -0
- package/dist/universal/.rovodev/skills/citable/schemas/crawler.schema.json +1 -0
- package/dist/universal/.rovodev/skills/citable/schemas/entity.schema.json +2 -1
- package/dist/universal/.rovodev/skills/citable/schemas/evidence.schema.json +1 -0
- package/dist/universal/.rovodev/skills/citable/schemas/experiment.schema.json +1 -0
- package/dist/universal/.rovodev/skills/citable/schemas/page.schema.json +1 -0
- package/dist/universal/.rovodev/skills/citable/schemas/prompt.schema.json +1 -0
- package/dist/universal/.rovodev/skills/citable/schemas/query.schema.json +1 -0
- package/dist/universal/.trae/skills/citable/SKILL.md +49 -1
- package/dist/universal/.trae/skills/citable/VERSION +1 -1
- package/dist/universal/.trae/skills/citable/commands/README.md +1 -0
- package/dist/universal/.trae/skills/citable/commands/action-findings.md +37 -0
- package/dist/universal/.trae/skills/citable/manifest.json +20 -16
- package/dist/universal/.trae/skills/citable/references/aeo-geo-validation.md +50 -0
- package/dist/universal/.trae/skills/citable/references/capability-boundaries.md +34 -0
- package/dist/universal/.trae/skills/citable/schemas/action-plan.schema.json +55 -0
- package/dist/universal/.trae/skills/citable/schemas/claim.schema.json +2 -0
- package/dist/universal/.trae/skills/citable/schemas/common.defs.json +2 -0
- package/dist/universal/.trae/skills/citable/schemas/competitor.schema.json +1 -0
- package/dist/universal/.trae/skills/citable/schemas/crawler.schema.json +1 -0
- package/dist/universal/.trae/skills/citable/schemas/entity.schema.json +2 -1
- package/dist/universal/.trae/skills/citable/schemas/evidence.schema.json +1 -0
- package/dist/universal/.trae/skills/citable/schemas/experiment.schema.json +1 -0
- package/dist/universal/.trae/skills/citable/schemas/page.schema.json +1 -0
- package/dist/universal/.trae/skills/citable/schemas/prompt.schema.json +1 -0
- package/dist/universal/.trae/skills/citable/schemas/query.schema.json +1 -0
- package/dist/universal/.trae-cn/skills/citable/SKILL.md +49 -1
- package/dist/universal/.trae-cn/skills/citable/VERSION +1 -1
- package/dist/universal/.trae-cn/skills/citable/commands/README.md +1 -0
- package/dist/universal/.trae-cn/skills/citable/commands/action-findings.md +37 -0
- package/dist/universal/.trae-cn/skills/citable/manifest.json +20 -16
- package/dist/universal/.trae-cn/skills/citable/references/aeo-geo-validation.md +50 -0
- package/dist/universal/.trae-cn/skills/citable/references/capability-boundaries.md +34 -0
- package/dist/universal/.trae-cn/skills/citable/schemas/action-plan.schema.json +55 -0
- package/dist/universal/.trae-cn/skills/citable/schemas/claim.schema.json +2 -0
- package/dist/universal/.trae-cn/skills/citable/schemas/common.defs.json +2 -0
- package/dist/universal/.trae-cn/skills/citable/schemas/competitor.schema.json +1 -0
- package/dist/universal/.trae-cn/skills/citable/schemas/crawler.schema.json +1 -0
- package/dist/universal/.trae-cn/skills/citable/schemas/entity.schema.json +2 -1
- package/dist/universal/.trae-cn/skills/citable/schemas/evidence.schema.json +1 -0
- package/dist/universal/.trae-cn/skills/citable/schemas/experiment.schema.json +1 -0
- package/dist/universal/.trae-cn/skills/citable/schemas/page.schema.json +1 -0
- package/dist/universal/.trae-cn/skills/citable/schemas/prompt.schema.json +1 -0
- package/dist/universal/.trae-cn/skills/citable/schemas/query.schema.json +1 -0
- package/dist/universal/manifest.json +243 -195
- package/package.json +1 -1
- package/schemas/action-plan.schema.json +55 -0
- package/schemas/claim.schema.json +2 -0
- package/schemas/common.defs.json +2 -0
- package/schemas/competitor.schema.json +1 -0
- package/schemas/crawler.schema.json +1 -0
- package/schemas/entity.schema.json +2 -1
- package/schemas/evidence.schema.json +1 -0
- package/schemas/experiment.schema.json +1 -0
- package/schemas/page.schema.json +1 -0
- package/schemas/prompt.schema.json +1 -0
- package/schemas/query.schema.json +1 -0
- package/skill/SKILL.md +49 -1
- package/skill/commands/README.md +1 -0
- package/skill/commands/action-findings.md +37 -0
- package/skill/references/aeo-geo-validation.md +50 -0
- package/skill/references/capability-boundaries.md +34 -0
- package/src/cli/index.js +19 -0
- package/src/commands/actionPlan.js +120 -0
- package/src/commands/audit.js +6 -1
- package/src/commands/context.js +2 -2
- package/src/commands/selfUpgrade.js +155 -0
- package/src/commands/substantiate.js +2 -2
- package/src/crawler/fetch.js +98 -41
- package/src/detectors/ans.js +43 -0
- package/src/detectors/geoReco.js +48 -0
- package/src/extractor/site.js +12 -4
- package/src/reporting/report.js +58 -1
- package/src/shared/io.js +12 -0
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$id": "citable://schemas/action-plan.schema.json",
|
|
3
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
4
|
+
"title": "Finding action plan",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": ["source_run_id", "source_findings_hash", "generated_at", "summary", "actions"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"source_run_id": { "type": "string", "minLength": 1 },
|
|
10
|
+
"source_findings_hash": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
|
|
11
|
+
"generated_at": { "type": "string" },
|
|
12
|
+
"summary": {
|
|
13
|
+
"type": "object",
|
|
14
|
+
"additionalProperties": false,
|
|
15
|
+
"required": ["total_actions", "ready", "blocked"],
|
|
16
|
+
"properties": {
|
|
17
|
+
"total_actions": { "type": "integer", "minimum": 0 },
|
|
18
|
+
"ready": { "type": "integer", "minimum": 0 },
|
|
19
|
+
"blocked": { "type": "integer", "minimum": 0 }
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"actions": {
|
|
23
|
+
"type": "array",
|
|
24
|
+
"items": {
|
|
25
|
+
"type": "object",
|
|
26
|
+
"additionalProperties": false,
|
|
27
|
+
"required": ["action_id", "finding_ids", "phase", "priority", "subject", "action", "owner", "status", "required_input", "semantic_gates", "unsafe_shortcuts", "verification"],
|
|
28
|
+
"properties": {
|
|
29
|
+
"action_id": { "$ref": "citable://schemas/common.defs.json#/definitions/id" },
|
|
30
|
+
"finding_ids": { "type": "array", "minItems": 1, "items": { "type": "string" } },
|
|
31
|
+
"phase": { "type": "string", "enum": ["unblock", "governance", "content", "optimization"] },
|
|
32
|
+
"priority": { "type": "string", "enum": ["critical", "high", "medium", "low"] },
|
|
33
|
+
"subject": { "type": "string" },
|
|
34
|
+
"action": { "type": "string", "minLength": 1 },
|
|
35
|
+
"owner": { "type": ["string", "null"] },
|
|
36
|
+
"status": { "type": "string", "enum": ["ready", "blocked"] },
|
|
37
|
+
"required_input": { "type": "array", "items": { "type": "string" } },
|
|
38
|
+
"semantic_gates": { "type": "array", "items": { "type": "string" } },
|
|
39
|
+
"unsafe_shortcuts": { "type": "array", "items": { "type": "string" } },
|
|
40
|
+
"verification": {
|
|
41
|
+
"type": "object",
|
|
42
|
+
"additionalProperties": false,
|
|
43
|
+
"required": ["method", "detector", "command", "expected_result"],
|
|
44
|
+
"properties": {
|
|
45
|
+
"method": { "type": "string" },
|
|
46
|
+
"detector": { "type": "string" },
|
|
47
|
+
"command": { "type": "string" },
|
|
48
|
+
"expected_result": { "type": "string" }
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"definitions": {
|
|
11
11
|
"claim": {
|
|
12
12
|
"type": "object",
|
|
13
|
+
"additionalProperties": false,
|
|
13
14
|
"required": ["claim_id", "claim", "claim_type", "status"],
|
|
14
15
|
"properties": {
|
|
15
16
|
"claim_id": { "$ref": "citable://schemas/common.defs.json#/definitions/id" },
|
|
@@ -34,6 +35,7 @@
|
|
|
34
35
|
"source_location": { "type": "string" },
|
|
35
36
|
"support_assessment": {
|
|
36
37
|
"type": "object",
|
|
38
|
+
"additionalProperties": false,
|
|
37
39
|
"required": ["status"],
|
|
38
40
|
"properties": {
|
|
39
41
|
"status": { "type": "string", "enum": ["directly_supported", "partially_supported", "inferred", "contradicted", "not_assessed"] },
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
},
|
|
13
13
|
"provenance": {
|
|
14
14
|
"type": "object",
|
|
15
|
+
"additionalProperties": false,
|
|
15
16
|
"properties": {
|
|
16
17
|
"created": { "$ref": "#/definitions/isoDate" },
|
|
17
18
|
"updated": { "$ref": "#/definitions/isoDate" },
|
|
@@ -21,6 +22,7 @@
|
|
|
21
22
|
},
|
|
22
23
|
"registryFile": {
|
|
23
24
|
"type": "object",
|
|
25
|
+
"additionalProperties": false,
|
|
24
26
|
"required": ["version", "kind", "entries"],
|
|
25
27
|
"properties": {
|
|
26
28
|
"version": { "type": "integer", "minimum": 1 },
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"definitions": {
|
|
11
11
|
"crawler": {
|
|
12
12
|
"type": "object",
|
|
13
|
+
"additionalProperties": false,
|
|
13
14
|
"required": ["crawler_id", "user_agent", "purpose", "decision", "status"],
|
|
14
15
|
"properties": {
|
|
15
16
|
"crawler_id": { "$ref": "citable://schemas/common.defs.json#/definitions/id" },
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"definitions": {
|
|
11
11
|
"entity": {
|
|
12
12
|
"type": "object",
|
|
13
|
+
"additionalProperties": false,
|
|
13
14
|
"required": ["entity_id", "canonical_name", "entity_type", "status"],
|
|
14
15
|
"properties": {
|
|
15
16
|
"entity_id": { "$ref": "citable://schemas/common.defs.json#/definitions/id" },
|
|
@@ -26,7 +27,7 @@
|
|
|
26
27
|
"secondary_categories": { "type": "array", "items": { "type": "string" } },
|
|
27
28
|
"definition": { "type": "string" },
|
|
28
29
|
"exclusions": { "type": "array", "items": { "type": "string" } },
|
|
29
|
-
"relationships": { "type": "array", "items": { "type": "object", "required": ["type", "entity"], "properties": { "type": { "type": "string" }, "entity": { "type": "string" } } } },
|
|
30
|
+
"relationships": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": ["type", "entity"], "properties": { "type": { "type": "string" }, "entity": { "type": "string" } } } },
|
|
30
31
|
"evidence": { "type": "array", "items": { "type": "string" } },
|
|
31
32
|
"schema_types": { "type": "array", "items": { "type": "string" } },
|
|
32
33
|
"status": { "$ref": "citable://schemas/common.defs.json#/definitions/status" },
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"definitions": {
|
|
11
11
|
"evidence": {
|
|
12
12
|
"type": "object",
|
|
13
|
+
"additionalProperties": false,
|
|
13
14
|
"required": ["evidence_id", "title", "evidence_type", "verification_status"],
|
|
14
15
|
"properties": {
|
|
15
16
|
"evidence_id": { "$ref": "citable://schemas/common.defs.json#/definitions/id" },
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"definitions": {
|
|
11
11
|
"experiment": {
|
|
12
12
|
"type": "object",
|
|
13
|
+
"additionalProperties": false,
|
|
13
14
|
"required": ["experiment_id", "hypothesis", "primary_metric", "status"],
|
|
14
15
|
"properties": {
|
|
15
16
|
"experiment_id": { "$ref": "citable://schemas/common.defs.json#/definitions/id" },
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"definitions": {
|
|
11
11
|
"prompt": {
|
|
12
12
|
"type": "object",
|
|
13
|
+
"additionalProperties": false,
|
|
13
14
|
"required": ["prompt_id", "canonical_prompt", "prompt_class", "status"],
|
|
14
15
|
"properties": {
|
|
15
16
|
"prompt_id": { "$ref": "citable://schemas/common.defs.json#/definitions/id" },
|
|
@@ -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:
|
|
10
|
+
version: 1.3.0
|
|
11
11
|
---
|
|
12
12
|
|
|
13
13
|
# Citable — search & generative discoverability governance
|
|
@@ -57,6 +57,19 @@ recommendation would require invented facts.
|
|
|
57
57
|
Report posture per dimension (e.g. `retrieval_eligibility: strong`,
|
|
58
58
|
`answer_extractability: weak`) — never one opaque 0–100 "AI visibility score".
|
|
59
59
|
|
|
60
|
+
Every report must keep these top-level states separate:
|
|
61
|
+
|
|
62
|
+
1. **Retrieval eligibility** — policy and captured technical conditions.
|
|
63
|
+
2. **Source extraction and support suitability** — passage, entity, claim,
|
|
64
|
+
evidence, freshness, and structured-data conditions.
|
|
65
|
+
3. **Observed citation behavior** — only controlled, timestamped provider
|
|
66
|
+
observations; absent observations are `not_evidenced`, never inferred.
|
|
67
|
+
|
|
68
|
+
Within retrieval, distinguish `allowed_by_policy`, `synthetic_fetch_succeeded`,
|
|
69
|
+
`observed_in_production_logs`, `indexed`, and `returned_by_retrieval`. Within
|
|
70
|
+
citation testing, distinguish mention, citation, material support, canonical
|
|
71
|
+
source selection, and recommendation. These states are not interchangeable.
|
|
72
|
+
|
|
60
73
|
## Tooling
|
|
61
74
|
|
|
62
75
|
The `citable` CLI in this repository performs the deterministic work. Always
|
|
@@ -71,6 +84,7 @@ citable substantiate [--write]
|
|
|
71
84
|
citable schema --target <dir|url>
|
|
72
85
|
citable validate [registries|claims|evidence|schema|links]
|
|
73
86
|
citable compare-snapshots [runA runB]
|
|
87
|
+
citable action-plan [run-id] # ordered actions, blockers, semantic gates, verification
|
|
74
88
|
```
|
|
75
89
|
|
|
76
90
|
Audit scopes: `technical seo aeo geo architecture entity claims evidence schema
|
|
@@ -79,6 +93,40 @@ lifecycle corroboration`. Every audit writes an evidence package to
|
|
|
79
93
|
sitemaps, schema, link graph, checksums). A report without its evidence package
|
|
80
94
|
is not a deliverable.
|
|
81
95
|
|
|
96
|
+
## Finding-to-action protocol
|
|
97
|
+
|
|
98
|
+
Detection is the start of the workflow, not the deliverable. For every audit:
|
|
99
|
+
|
|
100
|
+
1. Run `citable action-plan <run-id>`. Use the generated files under
|
|
101
|
+
`.citable/actions/<run-id>/`; never edit the immutable source run.
|
|
102
|
+
2. Work phases in order: **unblock** retrieval/security failures,
|
|
103
|
+
**governance** for owners/entities/claims/evidence, **content** for page and
|
|
104
|
+
answer changes, then **optimization**. Within a phase, critical/high precede
|
|
105
|
+
lower-severity work. Severity never substitutes for confidence.
|
|
106
|
+
3. Before editing, assign an accountable owner and satisfy every
|
|
107
|
+
`required_input`. A blocked action stays blocked; do not write around missing
|
|
108
|
+
facts, evidence, legal review, or source-to-render mapping.
|
|
109
|
+
4. Apply the listed semantic gates. AEO changes require intent alignment and
|
|
110
|
+
answer-extractability review. GEO changes require entity clarity,
|
|
111
|
+
recommendation eligibility, and narrative-accuracy review. Claim/evidence
|
|
112
|
+
changes additionally require claim-boundedness and evidence-strength review.
|
|
113
|
+
5. Make the smallest source or registry change that addresses the evidence.
|
|
114
|
+
Reject every listed unsafe shortcut and every matching anti-pattern.
|
|
115
|
+
6. Run the repository build/test commands, then the action's verification
|
|
116
|
+
command. Re-audit the affected scope and run `compare-snapshots` against the
|
|
117
|
+
source run. A finding is resolved only when its detector no longer reports
|
|
118
|
+
the same subject and no new critical/high regression appears.
|
|
119
|
+
7. Report resolved, persisting, blocked, accepted-risk, and newly introduced
|
|
120
|
+
findings separately. Preserve run IDs, diffs, owners, review evidence, and
|
|
121
|
+
residual risk. Never translate "detector absent" into an outcome guarantee.
|
|
122
|
+
|
|
123
|
+
For the complete AEO/GEO acceptance profile, follow
|
|
124
|
+
`references/aeo-geo-validation.md`. Skipped deterministic checks or incomplete
|
|
125
|
+
mandatory semantic reviews make the relevant posture `not_established`.
|
|
126
|
+
Consult `references/capability-boundaries.md` before claiming any observation;
|
|
127
|
+
it identifies which states the current CLI can collect and which require
|
|
128
|
+
operator data or future adapters.
|
|
129
|
+
|
|
82
130
|
## Command workflows
|
|
83
131
|
|
|
84
132
|
Detailed per-command workflows live in `commands/`. Follow them; they define
|
|
@@ -1 +1 @@
|
|
|
1
|
-
1.
|
|
1
|
+
1.3.0
|
|
@@ -20,6 +20,7 @@ intent, not executability, so statuses are strict:
|
|
|
20
20
|
| /citable schema | implemented |
|
|
21
21
|
| /citable validate, validate-claims, validate-evidence, validate-schema, validate-links | implemented |
|
|
22
22
|
| /citable compare-snapshots / validate-regression | implemented |
|
|
23
|
+
| /citable action-plan | implemented — writes ordered, source-run-bound action artifacts outside immutable evidence packages |
|
|
23
24
|
| /citable ingest, map-site, map-queries, map-prompts, map-entities, map-evidence | specified (ingest.md) |
|
|
24
25
|
| /citable optimize-page | specified (optimize-page.md) — requires source-to-render mapping, claim-preserving rewrites, build execution, rollback; none of that is proven yet |
|
|
25
26
|
| /citable create-page, answer-block, architect, interlink, consolidate, metadata | specified (page-work.md) |
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
command: /citable action-plan [run-id]
|
|
3
|
+
purpose: Convert observed findings into ordered remediation work without changing the immutable audit package or inventing implementation facts.
|
|
4
|
+
preconditions: [completed audit run with findings.json and manifest.json]
|
|
5
|
+
artifacts_created: [.citable/actions/<run-id>/action-plan.json, .citable/actions/<run-id>/action-plan.md]
|
|
6
|
+
failure_behaviour: missing or invalid source run -> fail; review-required action without owner -> blocked with required_input
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Detection-to-action workflow
|
|
10
|
+
|
|
11
|
+
1. Generate the plan with `citable action-plan <run-id>`. Confirm the stored
|
|
12
|
+
`source_findings_hash` still matches the source audit before acting.
|
|
13
|
+
2. Triage in generated phase order: unblock, governance, content, optimization.
|
|
14
|
+
Do not skip an earlier phase when it invalidates later evidence or rendering.
|
|
15
|
+
3. Assign owners. Resolve each blocked action's exact required input. Missing
|
|
16
|
+
facts, evidence, legal review, or semantic review are blockers, not drafting
|
|
17
|
+
opportunities.
|
|
18
|
+
4. Capture a before state for each subject. Use the finding's evidence,
|
|
19
|
+
preferred remediation, unsafe shortcuts, and detector lineage as the change
|
|
20
|
+
boundary.
|
|
21
|
+
5. Apply the semantic gates listed on the action using the named rubrics. Store
|
|
22
|
+
quoted passages and registry records supporting the posture decision.
|
|
23
|
+
6. Implement the smallest defensible change in canonical source. Registry
|
|
24
|
+
writes use the loader/saver and retain history. Content claims remain equal
|
|
25
|
+
to or narrower than their registered scope.
|
|
26
|
+
7. Build and test the target repository. Run the generated verification
|
|
27
|
+
command, then compare the new audit to the source run.
|
|
28
|
+
8. Close only with evidence: resolved detector/subject pair, before/after run
|
|
29
|
+
IDs, diff, reviewer, and residual risk. Mark blocked, accepted risk, and
|
|
30
|
+
false positive explicitly; do not silently drop findings.
|
|
31
|
+
|
|
32
|
+
# Execution boundary
|
|
33
|
+
|
|
34
|
+
`action-plan` plans and records work; it does not automatically rewrite a site.
|
|
35
|
+
Source mutation remains agent/operator work because arbitrary repositories need
|
|
36
|
+
their own build architecture, review authority, and rollback path. Follow
|
|
37
|
+
`optimize-page.md` or `page-work.md` when the action requires page changes.
|
|
@@ -1,21 +1,24 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "citable",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"managedBy": "citable-cli",
|
|
5
5
|
"provider": "github",
|
|
6
6
|
"providerName": "GitHub Copilot",
|
|
7
7
|
"scope": "bundle",
|
|
8
|
-
"sourcePackage": "@nebulacomponents/citable@1.
|
|
8
|
+
"sourcePackage": "@nebulacomponents/citable@1.3.0",
|
|
9
9
|
"variantPath": ".github/skills/citable",
|
|
10
10
|
"files": {
|
|
11
|
+
"commands/action-findings.md": "sha256:510361461f24fcd4a550e0a8d960c383aefe23f9a65a54a3ffc44abd4c1293e7",
|
|
11
12
|
"commands/ingest.md": "sha256:cf35659aecd9d0e160909003efdbe056864fc5d824c71b4ef0ee801ce07ff598",
|
|
12
13
|
"commands/measurement.md": "sha256:3550b1e747c5a38cdb712016b9bc773d93596bc4d1b49a309f9cddd816c1b662",
|
|
13
14
|
"commands/optimize-page.md": "sha256:35866f3d7cdeef0376ea7a7d7036085a9b9cf95bbb300ecf4bd77610ebd74d85",
|
|
14
15
|
"commands/page-work.md": "sha256:965a66e59bdf7b0da482d26fade53b3d265885ece5d463fe83b0789ebefaef3e",
|
|
15
|
-
"commands/README.md": "sha256:
|
|
16
|
+
"commands/README.md": "sha256:186ca808e0f303938ef9f8f98c8273c4b7cb76cc791e7d751c3639bf201e3bb1",
|
|
16
17
|
"commands/validate-render.md": "sha256:a8e1d04d40b84d57c35039250d98c6a7302cd44a148a8c3b9d9cfb92678c4347",
|
|
17
18
|
"policies/crawler-policy-template.md": "sha256:15c88a4eeb21f53f71e5250dd3eb2d2791a814b304eaefce8bb30e2bdf2e2e59",
|
|
19
|
+
"references/aeo-geo-validation.md": "sha256:e45828d3ccca54a08513cb4235578c8a8ecf1dc47d1cb98e4a497838103bef70",
|
|
18
20
|
"references/anti-patterns.md": "sha256:de63f8e646af0fbf479b45eb1d050ae62a8637acc320d21b87e4a083fd4c47e7",
|
|
21
|
+
"references/capability-boundaries.md": "sha256:901840fe87080071d0b11aa329d6a7954ffa6c601c58fadc275b55a7a988376a",
|
|
19
22
|
"rubrics/answer-extractability.md": "sha256:c8e741143c34e53afdb3dc7b6976ce7b4485dce13b12d14c193fccb17bacf1da",
|
|
20
23
|
"rubrics/claim-boundedness.md": "sha256:0bab1b85248c252b966175912ebfae13bf18aa7e41573f7466831ac78b5d3e27",
|
|
21
24
|
"rubrics/comparison-fairness.md": "sha256:7afc86903aa4a695060be7b6bca42ba505c106ea7cfa153344189afc5b78a5ba",
|
|
@@ -29,26 +32,27 @@
|
|
|
29
32
|
"rubrics/recommendation-eligibility.md": "sha256:38d2055fc5f6ab5e40fd1b48de4e0518fc4382da0b7062ad09c5afebcc673fc3",
|
|
30
33
|
"rubrics/semantic-clarity.md": "sha256:66d9f4843a4a620ea8c00625c5e17c02baeaa373f2b445ce13de6f81d78ec7ba",
|
|
31
34
|
"rubrics/source-authority.md": "sha256:8dbfe46bdcd0b5351f038be503601268c7d0abb9bed83be9ca58bf54dec5a73b",
|
|
32
|
-
"schemas/
|
|
33
|
-
"schemas/
|
|
34
|
-
"schemas/
|
|
35
|
+
"schemas/action-plan.schema.json": "sha256:4b6c4c877840a065c7c0c0c7b52f696502bf3d4ca6d31179622fc364ea868d5e",
|
|
36
|
+
"schemas/claim.schema.json": "sha256:ce79ccbfa34ece9b7a309a6962522ea06a1f44c468b4c472b5c376554a788537",
|
|
37
|
+
"schemas/common.defs.json": "sha256:effdd812910d1c275c50520bb70d8aec085e53fa8cb68054dc58c04a5d4a66b3",
|
|
38
|
+
"schemas/competitor.schema.json": "sha256:2f6fd7e4543846bde56ff4dc62bb41fa366889787b794a7cdb0bff1a3392e591",
|
|
35
39
|
"schemas/config.schema.json": "sha256:a87f3bb0087de09035b9f2dafea66e32e4fcc2e3e329abcd0fd8a5ec33318f2a",
|
|
36
|
-
"schemas/crawler.schema.json": "sha256:
|
|
40
|
+
"schemas/crawler.schema.json": "sha256:1a113dfb80bc6cde904c3ea648c82ea1d88fe50f2c1a0e7175d44abba28ac64e",
|
|
37
41
|
"schemas/detector-quality.schema.json": "sha256:5e9e1ac80b1198a0ff8fa17b9f7a543d3ccf3ed3d60196152f6ff095cfdebccd",
|
|
38
|
-
"schemas/entity.schema.json": "sha256:
|
|
39
|
-
"schemas/evidence.schema.json": "sha256:
|
|
40
|
-
"schemas/experiment.schema.json": "sha256:
|
|
42
|
+
"schemas/entity.schema.json": "sha256:78a08c35c8f4eb7a804ab46b61a238502f59621ac5218991e783251fbde61c4f",
|
|
43
|
+
"schemas/evidence.schema.json": "sha256:76baec7ad7e89c6952473c01dacb9e3b26953c088331e6314d531ce620df9ec1",
|
|
44
|
+
"schemas/experiment.schema.json": "sha256:3cebebc5745a9eb359261408b0a0421b8370d2c94f8244ce939827cd9da41cb6",
|
|
41
45
|
"schemas/finding.schema.json": "sha256:85907cd04cd8d2fe24a1e618e0df7160f6d56aa1818db501f345aebce5eb5edb",
|
|
42
|
-
"schemas/page.schema.json": "sha256:
|
|
46
|
+
"schemas/page.schema.json": "sha256:627613c35f461177fa946df08edf66fbf6f6bbdfc57eef812572b3af796d5e07",
|
|
43
47
|
"schemas/project.schema.json": "sha256:ea48fdb6480f7047ba4594bd5908bc1f79c1ad6b9a2c204df900959b5f203dc6",
|
|
44
48
|
"schemas/prompt-result.schema.json": "sha256:b55be47d7d58d7b1dd8c3b1e849e24e55216212c592cde7eb836953379b85737",
|
|
45
|
-
"schemas/prompt.schema.json": "sha256:
|
|
46
|
-
"schemas/query.schema.json": "sha256:
|
|
49
|
+
"schemas/prompt.schema.json": "sha256:7f0f50c83a86ac91faa7b79895dbc1fed371e8c0342e18d8c2877cc81f4f0f4c",
|
|
50
|
+
"schemas/query.schema.json": "sha256:3c0793a8c0c48ab39320416790840b345ea987696f35b1cc364f23245a62aacb",
|
|
47
51
|
"schemas/run.schema.json": "sha256:46c3178620f3a358d936d535aeadb83454b9b35b551e53e6615cc9862063dacb",
|
|
48
52
|
"scripts/README.md": "sha256:1c3e952950ef353849621b07c5f615bf7cd20cc5654da4635492a7bd6384e747",
|
|
49
|
-
"SKILL.md": "sha256:
|
|
53
|
+
"SKILL.md": "sha256:b9864498dd1507003386ac82b4cb8aea9056af7435c313e1aa19faa5cb185bf1",
|
|
50
54
|
"templates/finding-review.md": "sha256:b270a83d3f015150aac80249ae9314979c0befea39ff92ec455f9a5aaa73404c",
|
|
51
|
-
"VERSION": "sha256:
|
|
55
|
+
"VERSION": "sha256:64d23f858ef51b0f996e4966d4e27c0371b437e2d2787890b1f7ad22d4ec5663"
|
|
52
56
|
},
|
|
53
|
-
"treeHash": "sha256:
|
|
57
|
+
"treeHash": "sha256:f9dab639bf6d9fa5b638eefa2cc9ee73c7a30cc37d7f85f625ae608976b195aa"
|
|
54
58
|
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# AEO/GEO validation profile
|
|
2
|
+
|
|
3
|
+
This profile is an acceptance gate for eligibility and governance conditions,
|
|
4
|
+
not a prediction of citation or recommendation. Report every row as
|
|
5
|
+
`pass | finding | skipped | not_established`; never collapse rows into one score.
|
|
6
|
+
|
|
7
|
+
## Top-level state separation
|
|
8
|
+
|
|
9
|
+
| State | Current evidence boundary |
|
|
10
|
+
| --- | --- |
|
|
11
|
+
| Retrieval eligibility | Static policy plus captured synthetic HTTP response; crawler identity remains simulated unless verified logs/IP evidence are supplied |
|
|
12
|
+
| Source extraction and support suitability | Initial-HTML extraction plus registries/detectors/rubrics; rendered-DOM parity remains not established without a renderer |
|
|
13
|
+
| Observed citation behavior | Operator-supplied prompt-result observations only; report cohort size and property citation presence, never infer from readiness |
|
|
14
|
+
|
|
15
|
+
## AEO checks
|
|
16
|
+
|
|
17
|
+
| Condition | Deterministic controls | Semantic gate |
|
|
18
|
+
| --- | --- | --- |
|
|
19
|
+
| Retrievable, indexable answer surface | TECH, CRAWL, LINK; no skipped critical transport checks | intent-alignment |
|
|
20
|
+
| Governed question coverage | ANS-009; page target_prompts resolve to active prompts | intent-alignment |
|
|
21
|
+
| Direct, self-contained answer | ANS-001…004, ANS-008 | answer-extractability |
|
|
22
|
+
| Atomic, bounded factual claims | ANS-005, CLAIM-004/007/009 | claim-boundedness |
|
|
23
|
+
| Evidence adjacent and supportable | ANS-010, EVD-001…007 | evidence-strength, source-authority |
|
|
24
|
+
| Procedures and comparisons extract cleanly | ANS-006/007 | answer-extractability, comparison-fairness |
|
|
25
|
+
| Entity attribution is stable | ENTITY-001…007, GEO-005 | entity-clarity |
|
|
26
|
+
| Visible schema agrees with content | SCHEMA-001…008 | semantic-clarity |
|
|
27
|
+
|
|
28
|
+
## GEO checks
|
|
29
|
+
|
|
30
|
+
| Condition | Deterministic controls | Semantic gate |
|
|
31
|
+
| --- | --- | --- |
|
|
32
|
+
| Prompt portfolio is evaluable | GEO-006, MEAS-001…003 | narrative-accuracy |
|
|
33
|
+
| Entity and category representation is explicit | GEO-002/003/005, ENTITY-001…007 | entity-clarity |
|
|
34
|
+
| Claims preserve scope, evidence, and legal status | CLAIM-001…009, EVD-001…007, ANS-010 | claim-boundedness, evidence-strength |
|
|
35
|
+
| Recommendation inputs are complete | RECO-001…006 | recommendation-eligibility |
|
|
36
|
+
| Comparisons are fair and corroborated | ANS-007, EXT-001/002 | comparison-fairness, source-authority |
|
|
37
|
+
| Model-directed manipulation is absent | GEO-001/004 | mandatory human review for ambiguous hidden content |
|
|
38
|
+
| Temporal and narrative integrity is governed | LIFE, MEAS, SCHEMA-004/006 | narrative-accuracy |
|
|
39
|
+
|
|
40
|
+
## Acceptance rules
|
|
41
|
+
|
|
42
|
+
- A deterministic finding means the corresponding condition is not met.
|
|
43
|
+
- A skipped detector means the condition is `not_established`, not pass.
|
|
44
|
+
- A heuristic detector absence is not proof; complete the semantic rubric.
|
|
45
|
+
- Any rubric ambiguity condition produces `not_established + review_required`.
|
|
46
|
+
- AEO/GEO posture can improve only after a before/after audit resolves the
|
|
47
|
+
relevant detector/subject pair without introducing critical/high regression.
|
|
48
|
+
- Effectiveness is measured only from repeated, segmented observations using
|
|
49
|
+
the measurement workflow. Eligibility checks alone do not establish engine
|
|
50
|
+
behavior or causal impact.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Capability and observation boundaries
|
|
2
|
+
|
|
3
|
+
Use the narrowest supported state. Never promote evidence across rows.
|
|
4
|
+
|
|
5
|
+
| State | Current capability | Required evidence |
|
|
6
|
+
| --- | --- | --- |
|
|
7
|
+
| Allowed by policy | Implemented | Effective robots rule plus crawler-purpose registry decision |
|
|
8
|
+
| Synthetic fetch succeeded | Partial | Captured status, redirects, headers, body from the declared user agent; label identity simulated |
|
|
9
|
+
| Verified crawler reached edge | Operator supplied | Request log plus provider-published IP verification where supported |
|
|
10
|
+
| Observed in production logs | Operator supplied | Timestamped server/CDN log with URL, status, bytes, latency, cache result, UA, and verification result |
|
|
11
|
+
| Indexed | Operator supplied | Search Console/Bing Webmaster/API or timestamped engine observation |
|
|
12
|
+
| Returned by retrieval | Operator supplied | Provider observation containing retrieved source URL |
|
|
13
|
+
| Cited | Operator supplied | Complete answer observation with citation URL |
|
|
14
|
+
| Materially supports answer | Human review required | Answer claim mapped to a passage that entails it |
|
|
15
|
+
| Recommended | Operator supplied + review | Explicit recommendation, constraints, provider/mode/locale/time |
|
|
16
|
+
|
|
17
|
+
Current CLI URL mode does not prove crawler identity, WAF allowlisting,
|
|
18
|
+
production-log access, index presence, selected canonical, rendered DOM parity,
|
|
19
|
+
or provider citation behavior. Record those states as `not_evidenced` unless the
|
|
20
|
+
specified evidence is supplied.
|
|
21
|
+
|
|
22
|
+
Primary-source lineage for these boundaries:
|
|
23
|
+
|
|
24
|
+
- Perplexity documents separate `PerplexityBot` and `Perplexity-User` purposes,
|
|
25
|
+
published IP lists, and UA-plus-IP verification:
|
|
26
|
+
https://docs.perplexity.ai/docs/resources/perplexity-crawlers
|
|
27
|
+
- Google documents `noindex` as preventing inclusion in Google Search and
|
|
28
|
+
distinguishes crawl/content controls:
|
|
29
|
+
https://developers.google.com/search/docs/crawling-indexing/control-what-you-share
|
|
30
|
+
- Bing documents citation counts as observations that do not indicate ranking,
|
|
31
|
+
authority, or placement:
|
|
32
|
+
https://blogs.bing.com/webmaster/February-2026/Introducing-AI-Performance-in-Bing-Webmaster-Tools-Public-Preview
|
|
33
|
+
- Google requires structured data to describe visible page content:
|
|
34
|
+
https://developers.google.com/search/docs/appearance/structured-data/sd-policies
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$id": "citable://schemas/action-plan.schema.json",
|
|
3
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
4
|
+
"title": "Finding action plan",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": ["source_run_id", "source_findings_hash", "generated_at", "summary", "actions"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"source_run_id": { "type": "string", "minLength": 1 },
|
|
10
|
+
"source_findings_hash": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
|
|
11
|
+
"generated_at": { "type": "string" },
|
|
12
|
+
"summary": {
|
|
13
|
+
"type": "object",
|
|
14
|
+
"additionalProperties": false,
|
|
15
|
+
"required": ["total_actions", "ready", "blocked"],
|
|
16
|
+
"properties": {
|
|
17
|
+
"total_actions": { "type": "integer", "minimum": 0 },
|
|
18
|
+
"ready": { "type": "integer", "minimum": 0 },
|
|
19
|
+
"blocked": { "type": "integer", "minimum": 0 }
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"actions": {
|
|
23
|
+
"type": "array",
|
|
24
|
+
"items": {
|
|
25
|
+
"type": "object",
|
|
26
|
+
"additionalProperties": false,
|
|
27
|
+
"required": ["action_id", "finding_ids", "phase", "priority", "subject", "action", "owner", "status", "required_input", "semantic_gates", "unsafe_shortcuts", "verification"],
|
|
28
|
+
"properties": {
|
|
29
|
+
"action_id": { "$ref": "citable://schemas/common.defs.json#/definitions/id" },
|
|
30
|
+
"finding_ids": { "type": "array", "minItems": 1, "items": { "type": "string" } },
|
|
31
|
+
"phase": { "type": "string", "enum": ["unblock", "governance", "content", "optimization"] },
|
|
32
|
+
"priority": { "type": "string", "enum": ["critical", "high", "medium", "low"] },
|
|
33
|
+
"subject": { "type": "string" },
|
|
34
|
+
"action": { "type": "string", "minLength": 1 },
|
|
35
|
+
"owner": { "type": ["string", "null"] },
|
|
36
|
+
"status": { "type": "string", "enum": ["ready", "blocked"] },
|
|
37
|
+
"required_input": { "type": "array", "items": { "type": "string" } },
|
|
38
|
+
"semantic_gates": { "type": "array", "items": { "type": "string" } },
|
|
39
|
+
"unsafe_shortcuts": { "type": "array", "items": { "type": "string" } },
|
|
40
|
+
"verification": {
|
|
41
|
+
"type": "object",
|
|
42
|
+
"additionalProperties": false,
|
|
43
|
+
"required": ["method", "detector", "command", "expected_result"],
|
|
44
|
+
"properties": {
|
|
45
|
+
"method": { "type": "string" },
|
|
46
|
+
"detector": { "type": "string" },
|
|
47
|
+
"command": { "type": "string" },
|
|
48
|
+
"expected_result": { "type": "string" }
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"definitions": {
|
|
11
11
|
"claim": {
|
|
12
12
|
"type": "object",
|
|
13
|
+
"additionalProperties": false,
|
|
13
14
|
"required": ["claim_id", "claim", "claim_type", "status"],
|
|
14
15
|
"properties": {
|
|
15
16
|
"claim_id": { "$ref": "citable://schemas/common.defs.json#/definitions/id" },
|
|
@@ -34,6 +35,7 @@
|
|
|
34
35
|
"source_location": { "type": "string" },
|
|
35
36
|
"support_assessment": {
|
|
36
37
|
"type": "object",
|
|
38
|
+
"additionalProperties": false,
|
|
37
39
|
"required": ["status"],
|
|
38
40
|
"properties": {
|
|
39
41
|
"status": { "type": "string", "enum": ["directly_supported", "partially_supported", "inferred", "contradicted", "not_assessed"] },
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
},
|
|
13
13
|
"provenance": {
|
|
14
14
|
"type": "object",
|
|
15
|
+
"additionalProperties": false,
|
|
15
16
|
"properties": {
|
|
16
17
|
"created": { "$ref": "#/definitions/isoDate" },
|
|
17
18
|
"updated": { "$ref": "#/definitions/isoDate" },
|
|
@@ -21,6 +22,7 @@
|
|
|
21
22
|
},
|
|
22
23
|
"registryFile": {
|
|
23
24
|
"type": "object",
|
|
25
|
+
"additionalProperties": false,
|
|
24
26
|
"required": ["version", "kind", "entries"],
|
|
25
27
|
"properties": {
|
|
26
28
|
"version": { "type": "integer", "minimum": 1 },
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"definitions": {
|
|
11
11
|
"crawler": {
|
|
12
12
|
"type": "object",
|
|
13
|
+
"additionalProperties": false,
|
|
13
14
|
"required": ["crawler_id", "user_agent", "purpose", "decision", "status"],
|
|
14
15
|
"properties": {
|
|
15
16
|
"crawler_id": { "$ref": "citable://schemas/common.defs.json#/definitions/id" },
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"definitions": {
|
|
11
11
|
"entity": {
|
|
12
12
|
"type": "object",
|
|
13
|
+
"additionalProperties": false,
|
|
13
14
|
"required": ["entity_id", "canonical_name", "entity_type", "status"],
|
|
14
15
|
"properties": {
|
|
15
16
|
"entity_id": { "$ref": "citable://schemas/common.defs.json#/definitions/id" },
|
|
@@ -26,7 +27,7 @@
|
|
|
26
27
|
"secondary_categories": { "type": "array", "items": { "type": "string" } },
|
|
27
28
|
"definition": { "type": "string" },
|
|
28
29
|
"exclusions": { "type": "array", "items": { "type": "string" } },
|
|
29
|
-
"relationships": { "type": "array", "items": { "type": "object", "required": ["type", "entity"], "properties": { "type": { "type": "string" }, "entity": { "type": "string" } } } },
|
|
30
|
+
"relationships": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": ["type", "entity"], "properties": { "type": { "type": "string" }, "entity": { "type": "string" } } } },
|
|
30
31
|
"evidence": { "type": "array", "items": { "type": "string" } },
|
|
31
32
|
"schema_types": { "type": "array", "items": { "type": "string" } },
|
|
32
33
|
"status": { "$ref": "citable://schemas/common.defs.json#/definitions/status" },
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"definitions": {
|
|
11
11
|
"evidence": {
|
|
12
12
|
"type": "object",
|
|
13
|
+
"additionalProperties": false,
|
|
13
14
|
"required": ["evidence_id", "title", "evidence_type", "verification_status"],
|
|
14
15
|
"properties": {
|
|
15
16
|
"evidence_id": { "$ref": "citable://schemas/common.defs.json#/definitions/id" },
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"definitions": {
|
|
11
11
|
"experiment": {
|
|
12
12
|
"type": "object",
|
|
13
|
+
"additionalProperties": false,
|
|
13
14
|
"required": ["experiment_id", "hypothesis", "primary_metric", "status"],
|
|
14
15
|
"properties": {
|
|
15
16
|
"experiment_id": { "$ref": "citable://schemas/common.defs.json#/definitions/id" },
|