@nebulacomponents/citable 1.18.2 → 1.20.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 +64 -0
- package/README.md +12 -1
- package/dist/universal/.agents/skills/citable/SKILL.md +11 -2
- package/dist/universal/.agents/skills/citable/VERSION +1 -1
- package/dist/universal/.agents/skills/citable/manifest.json +19 -13
- package/dist/universal/.agents/skills/citable/schemas/action-plan.schema.json +38 -1
- package/dist/universal/.agents/skills/citable/schemas/audit-coverage.schema.json +118 -0
- package/dist/universal/.agents/skills/citable/schemas/browser-evidence-plan.schema.json +186 -3
- package/dist/universal/.agents/skills/citable/schemas/browser-network-events.schema.json +142 -0
- package/dist/universal/.agents/skills/citable/schemas/browser-runtime-events.schema.json +112 -0
- package/dist/universal/.agents/skills/citable/schemas/browser-state-observations.schema.json +97 -0
- package/dist/universal/.agents/skills/citable/schemas/collection-result.schema.json +35 -0
- package/dist/universal/.agents/skills/citable/schemas/config.schema.json +2 -0
- package/dist/universal/.agents/skills/citable/schemas/cro-report.schema.json +8 -1
- package/dist/universal/.agents/skills/citable/schemas/finding.schema.json +105 -2
- package/dist/universal/.agents/skills/citable/schemas/remediation-verification.schema.json +12 -1
- package/dist/universal/.agents/skills/citable/schemas/run.schema.json +15 -2
- package/dist/universal/.agents/skills/citable/schemas/search-report.schema.json +8 -1
- package/dist/universal/.agents/skills/citable/schemas/summary.schema.json +41 -0
- package/dist/universal/.claude/agents/citable/manifest.json +2 -2
- package/dist/universal/.claude/skills/citable/SKILL.md +11 -2
- package/dist/universal/.claude/skills/citable/VERSION +1 -1
- package/dist/universal/.claude/skills/citable/manifest.json +19 -13
- package/dist/universal/.claude/skills/citable/schemas/action-plan.schema.json +38 -1
- package/dist/universal/.claude/skills/citable/schemas/audit-coverage.schema.json +118 -0
- package/dist/universal/.claude/skills/citable/schemas/browser-evidence-plan.schema.json +186 -3
- package/dist/universal/.claude/skills/citable/schemas/browser-network-events.schema.json +142 -0
- package/dist/universal/.claude/skills/citable/schemas/browser-runtime-events.schema.json +112 -0
- package/dist/universal/.claude/skills/citable/schemas/browser-state-observations.schema.json +97 -0
- package/dist/universal/.claude/skills/citable/schemas/collection-result.schema.json +35 -0
- package/dist/universal/.claude/skills/citable/schemas/config.schema.json +2 -0
- package/dist/universal/.claude/skills/citable/schemas/cro-report.schema.json +8 -1
- package/dist/universal/.claude/skills/citable/schemas/finding.schema.json +105 -2
- package/dist/universal/.claude/skills/citable/schemas/remediation-verification.schema.json +12 -1
- package/dist/universal/.claude/skills/citable/schemas/run.schema.json +15 -2
- package/dist/universal/.claude/skills/citable/schemas/search-report.schema.json +8 -1
- package/dist/universal/.claude/skills/citable/schemas/summary.schema.json +41 -0
- package/dist/universal/.cursor/skills/citable/SKILL.md +11 -2
- package/dist/universal/.cursor/skills/citable/VERSION +1 -1
- package/dist/universal/.cursor/skills/citable/manifest.json +19 -13
- package/dist/universal/.cursor/skills/citable/schemas/action-plan.schema.json +38 -1
- package/dist/universal/.cursor/skills/citable/schemas/audit-coverage.schema.json +118 -0
- package/dist/universal/.cursor/skills/citable/schemas/browser-evidence-plan.schema.json +186 -3
- package/dist/universal/.cursor/skills/citable/schemas/browser-network-events.schema.json +142 -0
- package/dist/universal/.cursor/skills/citable/schemas/browser-runtime-events.schema.json +112 -0
- package/dist/universal/.cursor/skills/citable/schemas/browser-state-observations.schema.json +97 -0
- package/dist/universal/.cursor/skills/citable/schemas/collection-result.schema.json +35 -0
- package/dist/universal/.cursor/skills/citable/schemas/config.schema.json +2 -0
- package/dist/universal/.cursor/skills/citable/schemas/cro-report.schema.json +8 -1
- package/dist/universal/.cursor/skills/citable/schemas/finding.schema.json +105 -2
- package/dist/universal/.cursor/skills/citable/schemas/remediation-verification.schema.json +12 -1
- package/dist/universal/.cursor/skills/citable/schemas/run.schema.json +15 -2
- package/dist/universal/.cursor/skills/citable/schemas/search-report.schema.json +8 -1
- package/dist/universal/.cursor/skills/citable/schemas/summary.schema.json +41 -0
- package/dist/universal/.gemini/skills/citable/SKILL.md +11 -2
- package/dist/universal/.gemini/skills/citable/VERSION +1 -1
- package/dist/universal/.gemini/skills/citable/manifest.json +19 -13
- package/dist/universal/.gemini/skills/citable/schemas/action-plan.schema.json +38 -1
- package/dist/universal/.gemini/skills/citable/schemas/audit-coverage.schema.json +118 -0
- package/dist/universal/.gemini/skills/citable/schemas/browser-evidence-plan.schema.json +186 -3
- package/dist/universal/.gemini/skills/citable/schemas/browser-network-events.schema.json +142 -0
- package/dist/universal/.gemini/skills/citable/schemas/browser-runtime-events.schema.json +112 -0
- package/dist/universal/.gemini/skills/citable/schemas/browser-state-observations.schema.json +97 -0
- package/dist/universal/.gemini/skills/citable/schemas/collection-result.schema.json +35 -0
- package/dist/universal/.gemini/skills/citable/schemas/config.schema.json +2 -0
- package/dist/universal/.gemini/skills/citable/schemas/cro-report.schema.json +8 -1
- package/dist/universal/.gemini/skills/citable/schemas/finding.schema.json +105 -2
- package/dist/universal/.gemini/skills/citable/schemas/remediation-verification.schema.json +12 -1
- package/dist/universal/.gemini/skills/citable/schemas/run.schema.json +15 -2
- package/dist/universal/.gemini/skills/citable/schemas/search-report.schema.json +8 -1
- package/dist/universal/.gemini/skills/citable/schemas/summary.schema.json +41 -0
- package/dist/universal/.github/skills/citable/SKILL.md +11 -2
- package/dist/universal/.github/skills/citable/VERSION +1 -1
- package/dist/universal/.github/skills/citable/manifest.json +19 -13
- package/dist/universal/.github/skills/citable/schemas/action-plan.schema.json +38 -1
- package/dist/universal/.github/skills/citable/schemas/audit-coverage.schema.json +118 -0
- package/dist/universal/.github/skills/citable/schemas/browser-evidence-plan.schema.json +186 -3
- package/dist/universal/.github/skills/citable/schemas/browser-network-events.schema.json +142 -0
- package/dist/universal/.github/skills/citable/schemas/browser-runtime-events.schema.json +112 -0
- package/dist/universal/.github/skills/citable/schemas/browser-state-observations.schema.json +97 -0
- package/dist/universal/.github/skills/citable/schemas/collection-result.schema.json +35 -0
- package/dist/universal/.github/skills/citable/schemas/config.schema.json +2 -0
- package/dist/universal/.github/skills/citable/schemas/cro-report.schema.json +8 -1
- package/dist/universal/.github/skills/citable/schemas/finding.schema.json +105 -2
- package/dist/universal/.github/skills/citable/schemas/remediation-verification.schema.json +12 -1
- package/dist/universal/.github/skills/citable/schemas/run.schema.json +15 -2
- package/dist/universal/.github/skills/citable/schemas/search-report.schema.json +8 -1
- package/dist/universal/.github/skills/citable/schemas/summary.schema.json +41 -0
- package/dist/universal/.kiro/skills/citable/SKILL.md +11 -2
- package/dist/universal/.kiro/skills/citable/VERSION +1 -1
- package/dist/universal/.kiro/skills/citable/manifest.json +19 -13
- package/dist/universal/.kiro/skills/citable/schemas/action-plan.schema.json +38 -1
- package/dist/universal/.kiro/skills/citable/schemas/audit-coverage.schema.json +118 -0
- package/dist/universal/.kiro/skills/citable/schemas/browser-evidence-plan.schema.json +186 -3
- package/dist/universal/.kiro/skills/citable/schemas/browser-network-events.schema.json +142 -0
- package/dist/universal/.kiro/skills/citable/schemas/browser-runtime-events.schema.json +112 -0
- package/dist/universal/.kiro/skills/citable/schemas/browser-state-observations.schema.json +97 -0
- package/dist/universal/.kiro/skills/citable/schemas/collection-result.schema.json +35 -0
- package/dist/universal/.kiro/skills/citable/schemas/config.schema.json +2 -0
- package/dist/universal/.kiro/skills/citable/schemas/cro-report.schema.json +8 -1
- package/dist/universal/.kiro/skills/citable/schemas/finding.schema.json +105 -2
- package/dist/universal/.kiro/skills/citable/schemas/remediation-verification.schema.json +12 -1
- package/dist/universal/.kiro/skills/citable/schemas/run.schema.json +15 -2
- package/dist/universal/.kiro/skills/citable/schemas/search-report.schema.json +8 -1
- package/dist/universal/.kiro/skills/citable/schemas/summary.schema.json +41 -0
- package/dist/universal/.opencode/skills/citable/SKILL.md +11 -2
- package/dist/universal/.opencode/skills/citable/VERSION +1 -1
- package/dist/universal/.opencode/skills/citable/manifest.json +19 -13
- package/dist/universal/.opencode/skills/citable/schemas/action-plan.schema.json +38 -1
- package/dist/universal/.opencode/skills/citable/schemas/audit-coverage.schema.json +118 -0
- package/dist/universal/.opencode/skills/citable/schemas/browser-evidence-plan.schema.json +186 -3
- package/dist/universal/.opencode/skills/citable/schemas/browser-network-events.schema.json +142 -0
- package/dist/universal/.opencode/skills/citable/schemas/browser-runtime-events.schema.json +112 -0
- package/dist/universal/.opencode/skills/citable/schemas/browser-state-observations.schema.json +97 -0
- package/dist/universal/.opencode/skills/citable/schemas/collection-result.schema.json +35 -0
- package/dist/universal/.opencode/skills/citable/schemas/config.schema.json +2 -0
- package/dist/universal/.opencode/skills/citable/schemas/cro-report.schema.json +8 -1
- package/dist/universal/.opencode/skills/citable/schemas/finding.schema.json +105 -2
- package/dist/universal/.opencode/skills/citable/schemas/remediation-verification.schema.json +12 -1
- package/dist/universal/.opencode/skills/citable/schemas/run.schema.json +15 -2
- package/dist/universal/.opencode/skills/citable/schemas/search-report.schema.json +8 -1
- package/dist/universal/.opencode/skills/citable/schemas/summary.schema.json +41 -0
- package/dist/universal/.pi/agent/skills/citable/SKILL.md +11 -2
- package/dist/universal/.pi/agent/skills/citable/VERSION +1 -1
- package/dist/universal/.pi/agent/skills/citable/manifest.json +19 -13
- package/dist/universal/.pi/agent/skills/citable/schemas/action-plan.schema.json +38 -1
- package/dist/universal/.pi/agent/skills/citable/schemas/audit-coverage.schema.json +118 -0
- package/dist/universal/.pi/agent/skills/citable/schemas/browser-evidence-plan.schema.json +186 -3
- package/dist/universal/.pi/agent/skills/citable/schemas/browser-network-events.schema.json +142 -0
- package/dist/universal/.pi/agent/skills/citable/schemas/browser-runtime-events.schema.json +112 -0
- package/dist/universal/.pi/agent/skills/citable/schemas/browser-state-observations.schema.json +97 -0
- package/dist/universal/.pi/agent/skills/citable/schemas/collection-result.schema.json +35 -0
- package/dist/universal/.pi/agent/skills/citable/schemas/config.schema.json +2 -0
- package/dist/universal/.pi/agent/skills/citable/schemas/cro-report.schema.json +8 -1
- package/dist/universal/.pi/agent/skills/citable/schemas/finding.schema.json +105 -2
- package/dist/universal/.pi/agent/skills/citable/schemas/remediation-verification.schema.json +12 -1
- package/dist/universal/.pi/agent/skills/citable/schemas/run.schema.json +15 -2
- package/dist/universal/.pi/agent/skills/citable/schemas/search-report.schema.json +8 -1
- package/dist/universal/.pi/agent/skills/citable/schemas/summary.schema.json +41 -0
- package/dist/universal/.qoder/skills/citable/SKILL.md +11 -2
- package/dist/universal/.qoder/skills/citable/VERSION +1 -1
- package/dist/universal/.qoder/skills/citable/manifest.json +19 -13
- package/dist/universal/.qoder/skills/citable/schemas/action-plan.schema.json +38 -1
- package/dist/universal/.qoder/skills/citable/schemas/audit-coverage.schema.json +118 -0
- package/dist/universal/.qoder/skills/citable/schemas/browser-evidence-plan.schema.json +186 -3
- package/dist/universal/.qoder/skills/citable/schemas/browser-network-events.schema.json +142 -0
- package/dist/universal/.qoder/skills/citable/schemas/browser-runtime-events.schema.json +112 -0
- package/dist/universal/.qoder/skills/citable/schemas/browser-state-observations.schema.json +97 -0
- package/dist/universal/.qoder/skills/citable/schemas/collection-result.schema.json +35 -0
- package/dist/universal/.qoder/skills/citable/schemas/config.schema.json +2 -0
- package/dist/universal/.qoder/skills/citable/schemas/cro-report.schema.json +8 -1
- package/dist/universal/.qoder/skills/citable/schemas/finding.schema.json +105 -2
- package/dist/universal/.qoder/skills/citable/schemas/remediation-verification.schema.json +12 -1
- package/dist/universal/.qoder/skills/citable/schemas/run.schema.json +15 -2
- package/dist/universal/.qoder/skills/citable/schemas/search-report.schema.json +8 -1
- package/dist/universal/.qoder/skills/citable/schemas/summary.schema.json +41 -0
- package/dist/universal/.rovodev/skills/citable/SKILL.md +11 -2
- package/dist/universal/.rovodev/skills/citable/VERSION +1 -1
- package/dist/universal/.rovodev/skills/citable/manifest.json +19 -13
- package/dist/universal/.rovodev/skills/citable/schemas/action-plan.schema.json +38 -1
- package/dist/universal/.rovodev/skills/citable/schemas/audit-coverage.schema.json +118 -0
- package/dist/universal/.rovodev/skills/citable/schemas/browser-evidence-plan.schema.json +186 -3
- package/dist/universal/.rovodev/skills/citable/schemas/browser-network-events.schema.json +142 -0
- package/dist/universal/.rovodev/skills/citable/schemas/browser-runtime-events.schema.json +112 -0
- package/dist/universal/.rovodev/skills/citable/schemas/browser-state-observations.schema.json +97 -0
- package/dist/universal/.rovodev/skills/citable/schemas/collection-result.schema.json +35 -0
- package/dist/universal/.rovodev/skills/citable/schemas/config.schema.json +2 -0
- package/dist/universal/.rovodev/skills/citable/schemas/cro-report.schema.json +8 -1
- package/dist/universal/.rovodev/skills/citable/schemas/finding.schema.json +105 -2
- package/dist/universal/.rovodev/skills/citable/schemas/remediation-verification.schema.json +12 -1
- package/dist/universal/.rovodev/skills/citable/schemas/run.schema.json +15 -2
- package/dist/universal/.rovodev/skills/citable/schemas/search-report.schema.json +8 -1
- package/dist/universal/.rovodev/skills/citable/schemas/summary.schema.json +41 -0
- package/dist/universal/.trae/skills/citable/SKILL.md +11 -2
- package/dist/universal/.trae/skills/citable/VERSION +1 -1
- package/dist/universal/.trae/skills/citable/manifest.json +19 -13
- package/dist/universal/.trae/skills/citable/schemas/action-plan.schema.json +38 -1
- package/dist/universal/.trae/skills/citable/schemas/audit-coverage.schema.json +118 -0
- package/dist/universal/.trae/skills/citable/schemas/browser-evidence-plan.schema.json +186 -3
- package/dist/universal/.trae/skills/citable/schemas/browser-network-events.schema.json +142 -0
- package/dist/universal/.trae/skills/citable/schemas/browser-runtime-events.schema.json +112 -0
- package/dist/universal/.trae/skills/citable/schemas/browser-state-observations.schema.json +97 -0
- package/dist/universal/.trae/skills/citable/schemas/collection-result.schema.json +35 -0
- package/dist/universal/.trae/skills/citable/schemas/config.schema.json +2 -0
- package/dist/universal/.trae/skills/citable/schemas/cro-report.schema.json +8 -1
- package/dist/universal/.trae/skills/citable/schemas/finding.schema.json +105 -2
- package/dist/universal/.trae/skills/citable/schemas/remediation-verification.schema.json +12 -1
- package/dist/universal/.trae/skills/citable/schemas/run.schema.json +15 -2
- package/dist/universal/.trae/skills/citable/schemas/search-report.schema.json +8 -1
- package/dist/universal/.trae/skills/citable/schemas/summary.schema.json +41 -0
- package/dist/universal/.trae-cn/skills/citable/SKILL.md +11 -2
- package/dist/universal/.trae-cn/skills/citable/VERSION +1 -1
- package/dist/universal/.trae-cn/skills/citable/manifest.json +19 -13
- package/dist/universal/.trae-cn/skills/citable/schemas/action-plan.schema.json +38 -1
- package/dist/universal/.trae-cn/skills/citable/schemas/audit-coverage.schema.json +118 -0
- package/dist/universal/.trae-cn/skills/citable/schemas/browser-evidence-plan.schema.json +186 -3
- package/dist/universal/.trae-cn/skills/citable/schemas/browser-network-events.schema.json +142 -0
- package/dist/universal/.trae-cn/skills/citable/schemas/browser-runtime-events.schema.json +112 -0
- package/dist/universal/.trae-cn/skills/citable/schemas/browser-state-observations.schema.json +97 -0
- package/dist/universal/.trae-cn/skills/citable/schemas/collection-result.schema.json +35 -0
- package/dist/universal/.trae-cn/skills/citable/schemas/config.schema.json +2 -0
- package/dist/universal/.trae-cn/skills/citable/schemas/cro-report.schema.json +8 -1
- package/dist/universal/.trae-cn/skills/citable/schemas/finding.schema.json +105 -2
- package/dist/universal/.trae-cn/skills/citable/schemas/remediation-verification.schema.json +12 -1
- package/dist/universal/.trae-cn/skills/citable/schemas/run.schema.json +15 -2
- package/dist/universal/.trae-cn/skills/citable/schemas/search-report.schema.json +8 -1
- package/dist/universal/.trae-cn/skills/citable/schemas/summary.schema.json +41 -0
- package/dist/universal/manifest.json +232 -160
- package/package.json +1 -1
- package/schemas/action-plan.schema.json +38 -1
- package/schemas/audit-coverage.schema.json +118 -0
- package/schemas/browser-evidence-plan.schema.json +186 -3
- package/schemas/browser-network-events.schema.json +142 -0
- package/schemas/browser-runtime-events.schema.json +112 -0
- package/schemas/browser-state-observations.schema.json +97 -0
- package/schemas/collection-result.schema.json +35 -0
- package/schemas/config.schema.json +2 -0
- package/schemas/cro-report.schema.json +8 -1
- package/schemas/finding.schema.json +105 -2
- package/schemas/remediation-verification.schema.json +12 -1
- package/schemas/run.schema.json +15 -2
- package/schemas/search-report.schema.json +8 -1
- package/schemas/summary.schema.json +41 -0
- package/skill/SKILL.md +11 -2
- package/src/acceptance/reproducibility.js +5 -25
- package/src/analysis/croRoadmap.js +3 -3
- package/src/analysis/strategicRoadmap.js +3 -3
- package/src/artifacts/interchange.js +2 -6
- package/src/cli/index.js +15 -3
- package/src/commands/actionPlan.js +46 -5
- package/src/commands/applyRemediation.js +5 -5
- package/src/commands/audit.js +75 -8
- package/src/commands/ciWorkflow.js +7 -2
- package/src/commands/compareSnapshots.js +155 -47
- package/src/commands/connect.js +24 -4
- package/src/commands/context.js +41 -2
- package/src/commands/croSuite.js +51 -13
- package/src/commands/delivery.js +7 -7
- package/src/commands/governance.js +9 -10
- package/src/commands/implementationKit.js +2 -1
- package/src/commands/init.js +8 -1
- package/src/commands/previewCro.js +1 -1
- package/src/commands/prioritize.js +3 -2
- package/src/commands/reviews.js +31 -5
- package/src/commands/roadmapCmd.js +7 -13
- package/src/commands/sweep.js +15 -2
- package/src/commands/verifyRemediation.js +94 -19
- package/src/connectors/collectionResult.js +80 -0
- package/src/connectors/ga4.js +46 -11
- package/src/connectors/gsc.js +41 -6
- package/src/connectors/index.js +1 -1
- package/src/connectors/webflow.js +140 -10
- package/src/connectors/wordpress.js +92 -8
- package/src/crawler/fetch.js +220 -24
- package/src/crawler/resourceValidity.js +119 -0
- package/src/crawler/sitemap.js +435 -16
- package/src/crawler/sitemapCollector.js +364 -0
- package/src/crawler/urlIdentity.js +97 -0
- package/src/detectors/agent.js +11 -0
- package/src/detectors/ans.js +16 -1
- package/src/detectors/arch.js +6 -0
- package/src/detectors/claim.js +9 -0
- package/src/detectors/crawl.js +7 -0
- package/src/detectors/cro.js +21 -0
- package/src/detectors/cwv.js +4 -0
- package/src/detectors/entity.js +7 -0
- package/src/detectors/evd.js +9 -0
- package/src/detectors/framework.js +28 -2
- package/src/detectors/geoReco.js +16 -0
- package/src/detectors/hreflang.js +3 -0
- package/src/detectors/lifeMeas.js +9 -0
- package/src/detectors/link.js +6 -1
- package/src/detectors/page.js +11 -0
- package/src/detectors/schemaData.js +16 -1
- package/src/detectors/tech.js +34 -3
- package/src/evidence/coverage.js +448 -0
- package/src/evidence/determination.js +157 -0
- package/src/evidence/downstream.js +110 -0
- package/src/evidence/hashes.js +109 -0
- package/src/evidence/run.js +68 -8
- package/src/extractor/page.js +29 -2
- package/src/extractor/site.js +298 -50
- package/src/observations/browser/correlation.js +83 -0
- package/src/observations/browser/networkCollector.js +413 -0
- package/src/observations/browser/runtimeEventCollector.js +337 -0
- package/src/observations/browser/sanitizer.js +322 -0
- package/src/observations/browser/stateCollector.js +386 -0
- package/src/observations/browserJourney.js +131 -3
- package/src/reporting/executiveCroReport.js +37 -14
- package/src/reporting/executiveExport.js +45 -16
- package/src/reporting/executiveSearchReport.js +57 -23
- package/src/reporting/report.js +56 -9
- package/src/shared/epistemicLanguage.js +86 -0
- package/src/shared/evidenceSourceResolver.js +48 -17
- package/src/shared/htmlEscape.js +8 -4
- package/src/shared/runPackageVerifier.js +99 -8
- package/src/shared/verifiedRunLoader.js +129 -0
- package/src/sow/generateSow.js +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -15,6 +15,70 @@ _No entries yet. See [`BOUNTY.md`](BOUNTY.md) to submit the first one._
|
|
|
15
15
|
|
|
16
16
|
## Unreleased
|
|
17
17
|
|
|
18
|
+
## 1.20.0 — 2026-09-20
|
|
19
|
+
|
|
20
|
+
### Added — Semantic completeness and explicit audit coverage
|
|
21
|
+
|
|
22
|
+
- Replaced the hidden 50-page URL-audit ceiling with declared, bounded budgets
|
|
23
|
+
(`--max-pages`, default 500, hard ceiling 10,000; time budget default 1,800
|
|
24
|
+
seconds, hard ceiling 86,400 seconds).
|
|
25
|
+
- Added reconciled coverage evidence and independent execution, coverage, and
|
|
26
|
+
determination statuses so truncation and partial failures cannot masquerade
|
|
27
|
+
as complete evidence.
|
|
28
|
+
- Propagated coverage requirements through determinations, snapshot comparison,
|
|
29
|
+
remediation, connectors, reports, exports, CI output, and action plans.
|
|
30
|
+
- Added sealed package verification, representation-specific evidence hashes,
|
|
31
|
+
and an adversarial 257-page end-to-end regression fixture.
|
|
32
|
+
- Qualified user-facing language for incomplete, empty, legacy, and unverified
|
|
33
|
+
evidence rather than emitting unsupported clean, verified, resolved, or
|
|
34
|
+
site-wide claims.
|
|
35
|
+
|
|
36
|
+
## 1.19.0 — 2026-09-11
|
|
37
|
+
|
|
38
|
+
### Added — Deterministic Bounded Browser-Journey Evidence Acquisition (ADR-003)
|
|
39
|
+
|
|
40
|
+
- **Browser Network Activity Observation (`network-events.json` / `schemas/browser-network-events.schema.json`)**:
|
|
41
|
+
- Captured HTTP/HTTPS network transactions during journey execution via Playwright request/response/failure hooks.
|
|
42
|
+
- Implemented configurable host allowlist filtering (exact match and wildcard subdomains) to isolate target and partner traffic.
|
|
43
|
+
- Recorded request method, URL, status code, protocol, timings, body size, redirects, and failure errors.
|
|
44
|
+
- Deny-by-default payload capture: request and response bodies default to uncaptured (`request_body: false`, `response_body: false`); host allowlist alone never triggers body capture.
|
|
45
|
+
- Explicit status separation: headers, query params, and bodies record status (`not_requested`, `filtered`, `captured`, `truncated`, `unavailable`, `hash_only`, `redacted`).
|
|
46
|
+
- Added strict sanitization of allowlisted request/response headers, query parameters, and JSON payloads with bounded size limits (`max_body_bytes`, `max_field_size`).
|
|
47
|
+
- In-flight request tracking (`summary.in_flight_requests`) and optional bounded settling timeout (`network_policy.settling_timeout_ms`).
|
|
48
|
+
- Added deterministic transaction bounds (`max_events`) with explicit `truncated` flags and epistemic status (`ABSENT`, `TRUNCATED`, `UNOBSERVABLE`, `FAILED`).
|
|
49
|
+
- **Browser State Observation (`state-observations.json` / `schemas/browser-state-observations.schema.json`)**:
|
|
50
|
+
- Captured multi-checkpoint state snapshots at journey stages (`initial`, `before_step`, `step`, `final`).
|
|
51
|
+
- Recorded final URL, allowlisted query parameters, referrer, and navigation type.
|
|
52
|
+
- Governed access to cookies, localStorage, and sessionStorage: dumps only explicitly named keys/cookies declared in policy, unconditionally blocking unlisted storage.
|
|
53
|
+
- HttpOnly cookie semantics: captures presence, length, and security flags (`http_only: true`, `secure: true`, `same_site`), while strictly suppressing raw plaintext values as `[POLICY_RESTRICTED_HTTPONLY]` in `allowlist_values` mode. Context-level failures are recorded in `unavailable_items`.
|
|
54
|
+
- Added safe global variable evaluation using strict AST identifier/bracket path validation (`[a-zA-Z0-9_$.[\]'"]+`) without `eval()` or arbitrary JavaScript execution. Throwing getters during evaluation fail closed to `unavailable_items` without asserting false absence.
|
|
55
|
+
- Extracted DOM query results (presence, text content, attributes) scoped strictly to allowlisted CSS selectors and attributes.
|
|
56
|
+
- **Explicitly Configured Runtime Events (`runtime-events.json` / `schemas/browser-runtime-events.schema.json`)**:
|
|
57
|
+
- Generic listener for global array event queues (e.g. `window.dataLayer`, custom event queues) hooking queues via `Object.defineProperty(window, prop, ...)` to intercept queue reassignment (`window.dataLayer = []`) with polling fallback for unhooked mutations.
|
|
58
|
+
- Safe in-page and Node extraction protecting against hostile throwing getters (`[GETTER_ERROR]`).
|
|
59
|
+
- Detailed collector health reporting in `summary.collector_health` (`status`, `queue_replaced`, `push_replaced`, `polling_fallback_used`, `supported_contexts: ["top_level_main_frame"]`, `unsupported_contexts: ["cross_origin_iframes", "web_workers"]`).
|
|
60
|
+
- Window event listener for declared DOM events (`DOMContentLoaded`, `load`, custom events).
|
|
61
|
+
- Explicit event allowlists, field allowlists, sensitive key redaction, and SHA-256 field hashing.
|
|
62
|
+
- Bounded collection (`max_events`) with explicit truncation counters and `filtered_events` tracking.
|
|
63
|
+
- **Monotonic Sequencing & Temporal Step Correlation**:
|
|
64
|
+
- `src/observations/browser/correlation.js`: Generates monotonically increasing event sequences and microsecond-precision offsets (`monotonic_offset_ms`) from journey start.
|
|
65
|
+
- Explicit phase classification: `during_step`, `between_steps`, and `post_journey`.
|
|
66
|
+
- Asynchronous transaction completion tagging (`ambiguous_async: true`): records `initiated_step_id` and `completed_step_id` when requests resolve across step boundaries or after journey completion.
|
|
67
|
+
- **Mandatory Secret Sanitization & Residual Risk Disclosure (`src/observations/browser/sanitizer.js`)**:
|
|
68
|
+
- Unconditional redaction to `[REDACTED_SECRET]` for Authorization/Bearer headers, Cookie/Set-Cookie headers, basic auth credentials, passwords, session tokens, API keys, private keys, credit cards, and OAuth callback codes.
|
|
69
|
+
- Defense-in-depth regex redaction paired with structural minimization; documented residual risk for novel unstructured secrets in customer-allowlisted payload fields.
|
|
70
|
+
- Recursively applied across headers, query parameters, request/response bodies, state storage values, globals, and runtime event payloads.
|
|
71
|
+
- **Strict ABSENT Epistemic Invariant**:
|
|
72
|
+
- Guarantees that absence (`ABSENT` / `exists: false`) is asserted only when target was in declared scope, collector was active full window, no truncation occurred, candidate was not filtered, and no collector errors occurred.
|
|
73
|
+
- **Resilient Evidence Preservation**:
|
|
74
|
+
- In the event of a required journey step failure, captured partial network events, state observations, and runtime events are preserved and packaged into the failure evidence bundle alongside failure JSON and screenshots.
|
|
75
|
+
- **Schema & Artifact Integration**:
|
|
76
|
+
- Evolved `schemas/browser-evidence-plan.schema.json` backward-compatibly with optional `network_policy`, `state_policy`, `runtime_event_policy`, and `action: "checkpoint"`.
|
|
77
|
+
- All artifacts validated strictly against compiled Ajv schemas via `validateAgainst`.
|
|
78
|
+
- Added summary objects (`network_summary`, `state_summary`, `runtime_events_summary`) and artifact references to the canonical observation envelope (`schemas/observation.schema.json`).
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
|
|
18
82
|
## 1.18.2 — 2026-09-10
|
|
19
83
|
|
|
20
84
|
### Fixed — Executive Reporting, Evidence Provenance, and Commercial Artifact Hardening
|
package/README.md
CHANGED
|
@@ -34,6 +34,10 @@ generator, not a Lighthouse wrapper, not an "AI visibility score".
|
|
|
34
34
|
- **Separate state reporting** for retrieval eligibility, source extraction and
|
|
35
35
|
support suitability, and observed citation behavior. These are never merged
|
|
36
36
|
into an "AI visibility score."
|
|
37
|
+
- **Scope-qualified reporting**: empty, legacy, unverified, incomplete, and
|
|
38
|
+
indeterminate evidence cannot be rendered as a clean, complete, verified, or
|
|
39
|
+
site-wide conclusion. Reports name the evaluated population and preserve
|
|
40
|
+
limitations; absence of findings is not evidence of absence.
|
|
37
41
|
- **Fail-closed governance**: claims can't become verified without evidence,
|
|
38
42
|
expired evidence invalidates claims, schema is never fabricated, missing
|
|
39
43
|
facts return `blocked` with `required_input`.
|
|
@@ -168,7 +172,7 @@ npx @nebulacomponents/citable help
|
|
|
168
172
|
cd your-site/
|
|
169
173
|
citable init # creates .citable/ (non-destructive)
|
|
170
174
|
citable plan-audit --target ./dist --base-url https://example.com # read-only profile/capability plan
|
|
171
|
-
citable audit --target ./dist --base-url https://example.com
|
|
175
|
+
citable audit --target ./dist --base-url https://example.com --max-pages 500 --time-budget-seconds 1800
|
|
172
176
|
citable action-plan <run-id> # ordered actions, blockers, review gates, verification
|
|
173
177
|
citable observe passages --target ./dist --base-url https://example.com
|
|
174
178
|
citable observe index --input search-console-export.json
|
|
@@ -225,6 +229,13 @@ citable test visual
|
|
|
225
229
|
citable corpus benchmark
|
|
226
230
|
```
|
|
227
231
|
|
|
232
|
+
URL audits are explicitly bounded. The default budget is 500 pages and 1,800
|
|
233
|
+
seconds; `--max-pages` accepts 1–10,000 and `--time-budget-seconds` accepts
|
|
234
|
+
1–86,400. Every run records requested, discovered, attempted, retrieved,
|
|
235
|
+
evaluated, failed, indeterminate, excluded, and unvisited populations in
|
|
236
|
+
`coverage.json`. A completed process can still have incomplete coverage, and
|
|
237
|
+
reports never widen subset evidence into a site-wide claim.
|
|
238
|
+
|
|
228
239
|
## Repository map
|
|
229
240
|
|
|
230
241
|
| Path | Purpose |
|
|
@@ -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.
|
|
10
|
+
version: 1.20.0
|
|
11
11
|
---
|
|
12
12
|
|
|
13
13
|
# Citable — evidence and change control for search and AI citation readiness
|
|
@@ -69,6 +69,15 @@ Every report must keep these top-level states separate:
|
|
|
69
69
|
3. **Observed citation behavior** — only controlled, timestamped provider
|
|
70
70
|
observations; absent observations are `not_evidenced`, never inferred.
|
|
71
71
|
|
|
72
|
+
Presentation language must preserve those boundaries. An empty finding list,
|
|
73
|
+
legacy package, unverified artifact, incomplete crawl, or indeterminate
|
|
74
|
+
determination must not be described as `clean`, `complete`, `verified`,
|
|
75
|
+
`resolved`, `100%`, or `site-wide`. State the evaluated population and the
|
|
76
|
+
limitation instead (for example, "No findings were produced for the 217
|
|
77
|
+
successfully evaluated resources; corpus-wide absence is not established").
|
|
78
|
+
Positive local observations may remain supported, but they must not be widened
|
|
79
|
+
to pages or resources that were not observed.
|
|
80
|
+
|
|
72
81
|
Within retrieval, distinguish `allowed_by_policy`, `synthetic_fetch_succeeded`,
|
|
73
82
|
`observed_in_production_logs`, `indexed`, and `returned_by_retrieval`. Within
|
|
74
83
|
citation testing, distinguish mention, citation, material support, canonical
|
|
@@ -86,7 +95,7 @@ prefer running it over re-deriving its checks by hand:
|
|
|
86
95
|
|
|
87
96
|
```
|
|
88
97
|
citable init # initialize .citable/ (non-destructive)
|
|
89
|
-
citable audit [scope] --target <dir|url> [--base-url <url>] [--ref-date YYYY-MM-DD]
|
|
98
|
+
citable audit [scope] --target <dir|url> [--base-url <url>] [--max-pages <1..10000>] [--time-budget-seconds <1..86400>] [--ref-date YYYY-MM-DD]
|
|
90
99
|
citable plan-audit --target <dir|url> [--base-url <url>]
|
|
91
100
|
citable sweep technical --target <dir|url> # Technical SEO sweep + Core Web Vitals metrics
|
|
92
101
|
citable inspect <page> --target <dir|url>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
1.
|
|
1
|
+
1.20.0
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "citable",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.20.0",
|
|
4
4
|
"managedBy": "citable-cli",
|
|
5
5
|
"provider": "codex",
|
|
6
6
|
"providerName": "OpenAI Codex",
|
|
7
7
|
"scope": "bundle",
|
|
8
|
-
"sourcePackage": "@nebulacomponents/citable@1.
|
|
8
|
+
"sourcePackage": "@nebulacomponents/citable@1.20.0",
|
|
9
9
|
"variantPath": ".agents/skills/citable",
|
|
10
10
|
"agentProfiles": {
|
|
11
11
|
"status": "unsupported",
|
|
@@ -55,23 +55,28 @@
|
|
|
55
55
|
"schemas/acceptance-corpus.schema.json": "sha256:b703be371ee33747d83814e448d18cd01f103f1832480a95df4331b86982165d",
|
|
56
56
|
"schemas/acceptance-run-context.schema.json": "sha256:56d75c7bcd166c3578a71699df1aa5466327c23c1e06e33773f2493f5caa1a50",
|
|
57
57
|
"schemas/acceptance-run-receipt.schema.json": "sha256:6c6e66767cf3b9adb42ace087f7e9a428312f41b7ecbaf533fc8d7ba5953da44",
|
|
58
|
-
"schemas/action-plan.schema.json": "sha256:
|
|
58
|
+
"schemas/action-plan.schema.json": "sha256:56b298e47fef5238b7971fbd7a72220e900fb1494065d6f75871da4dd85816f1",
|
|
59
59
|
"schemas/artifact-interchange.schema.json": "sha256:c6f628934c8a1b8ea2996e03c2c5abd46c2a0e74c680b0a43e44c2343dc9aa21",
|
|
60
60
|
"schemas/assumption.schema.json": "sha256:31a0f44bbf1d207e013961ec4c39eea85c3ae9efde1485b5e26084562c816844",
|
|
61
|
+
"schemas/audit-coverage.schema.json": "sha256:8787a80e9917ab83438949cb1556bc6610bc6fb768a37df00a1504e6281f51f4",
|
|
61
62
|
"schemas/bing-webmaster.schema.json": "sha256:8357c518a8cb4ccd1def2da38950fbba68270e2b1613ad522b50c568a3b8538f",
|
|
62
|
-
"schemas/browser-evidence-plan.schema.json": "sha256:
|
|
63
|
+
"schemas/browser-evidence-plan.schema.json": "sha256:1df677fb08338b832d93af2aabec565ef8d621c820cbc77f847dc1c94a814256",
|
|
64
|
+
"schemas/browser-network-events.schema.json": "sha256:aa71380998df74cff929316d7c76332a74c16cd08504214cdb2b86d9d793fee5",
|
|
65
|
+
"schemas/browser-runtime-events.schema.json": "sha256:ff9b6e486ca5a72a6613a4e3e479cd11bcadff52c7481df125aa1670f404a7e4",
|
|
66
|
+
"schemas/browser-state-observations.schema.json": "sha256:7748b9ed7110834e19c1827bd125c0d0cdb50e2dd89a713da03cd643e9c72843",
|
|
63
67
|
"schemas/canonical-index-import.schema.json": "sha256:ef633662cb30873242ca356443bc4835afe56bb020208e8f42fa47ac8047b66e",
|
|
64
68
|
"schemas/claim.schema.json": "sha256:ce79ccbfa34ece9b7a309a6962522ea06a1f44c468b4c472b5c376554a788537",
|
|
65
69
|
"schemas/cli-output-envelope.schema.json": "sha256:6964e8f2f43618bfd0d7a3f5344b37ebc26f04779796bb8ff4675b935b6208c3",
|
|
70
|
+
"schemas/collection-result.schema.json": "sha256:d844aa183300abf220030f6a000f297195a06c02f2cd3a4f15a399e317b8c5d8",
|
|
66
71
|
"schemas/common.defs.json": "sha256:ac66081df6b86f652e066ea868edecfcd36cdd1b1c81e55a1e3af880f671b727",
|
|
67
72
|
"schemas/competitor.schema.json": "sha256:2f6fd7e4543846bde56ff4dc62bb41fa366889787b794a7cdb0bff1a3392e591",
|
|
68
|
-
"schemas/config.schema.json": "sha256:
|
|
73
|
+
"schemas/config.schema.json": "sha256:da40fe568844a6303d265f83058fce9f4a9a569cd72b271bc219361c71e8e8fa",
|
|
69
74
|
"schemas/connection.schema.json": "sha256:abcedde8d62d0c0663d4f959e06132a617908058ed965078965445ef3b108310",
|
|
70
75
|
"schemas/corpus-publication-receipt.schema.json": "sha256:a4d523fd1c1fa53762522891c06c06edb668cd15e1de3c7123d2b9948445ae32",
|
|
71
76
|
"schemas/corroboration-import.schema.json": "sha256:927983d0590f1ec569e86195d2031be0cd212f9436ff98acca468cbae108d85e",
|
|
72
77
|
"schemas/crawler-identity.schema.json": "sha256:e1e3e6da203a8bc49fba8f9bbde525368891db022d542fc615b677401825351d",
|
|
73
78
|
"schemas/crawler.schema.json": "sha256:1a113dfb80bc6cde904c3ea648c82ea1d88fe50f2c1a0e7175d44abba28ac64e",
|
|
74
|
-
"schemas/cro-report.schema.json": "sha256:
|
|
79
|
+
"schemas/cro-report.schema.json": "sha256:96a9c2a7a08eafe07bc78c3f38edc82c714ed96d13024142ece338dbd1e018bf",
|
|
75
80
|
"schemas/customer-outcome.schema.json": "sha256:c0cdfee31a692feadb31dc6be734d45ae178ee53f28349c2a9e7504bdfcf9e50",
|
|
76
81
|
"schemas/decision.schema.json": "sha256:7c30f3ad83a6aa0b67ecc51ac6691e5e041b633d01bab17cee2b5218d926204e",
|
|
77
82
|
"schemas/deployment-receipt.schema.json": "sha256:789455907e7f3039fd55ee5b2568e09871128f513f5ddfe1f3afac1a4dd6b2bd",
|
|
@@ -83,7 +88,7 @@
|
|
|
83
88
|
"schemas/exception.schema.json": "sha256:c88985494ec66554330fdc5b65d033527d0005acf41f10798b1e831d171f8944",
|
|
84
89
|
"schemas/experiment.schema.json": "sha256:4b5d16481448597b152269296b67b5776be6f03d8f9afba1833bcee10bf3c05b",
|
|
85
90
|
"schemas/field-validation-metrics.schema.json": "sha256:bd5daeafc1593f1c4707d75180e1feb1e81d9345a57c1f269eadf13c36cb7012",
|
|
86
|
-
"schemas/finding.schema.json": "sha256:
|
|
91
|
+
"schemas/finding.schema.json": "sha256:06c0fc028288319828f124cea6791a7ad69a1bc3aa81c176604a83ca0f2da766",
|
|
87
92
|
"schemas/fleet.schema.json": "sha256:3bf5772695ae4bb49a8c5fdbedee230ddb1d84aff6a3176eeb41527aca6ef2a5",
|
|
88
93
|
"schemas/funnel.schema.json": "sha256:6c368f29296ac45f5d52bb3a2f95fa935a1f30f3d53aae846156e9aa4c8ec59c",
|
|
89
94
|
"schemas/initiative.schema.json": "sha256:491f6cc022c7ac1f9ea9ac9ddfcd270cb49c390e2601fe1e73aa6192a9e7689a",
|
|
@@ -103,23 +108,24 @@
|
|
|
103
108
|
"schemas/release-manifest.schema.json": "sha256:962be645e790b5f3dc6f6ea455e187492d727dcb91d00f91e4e25b40e2dbc360",
|
|
104
109
|
"schemas/release-state.schema.json": "sha256:9920f68e538915d0d07044f313a9e410775a38ce9bb46a55d9ebe02970784803",
|
|
105
110
|
"schemas/remediation-spec.schema.json": "sha256:6fe8cb773702862ba6d261198bb5cc2dca3eca0a2310a60ebddd04377654df8d",
|
|
106
|
-
"schemas/remediation-verification.schema.json": "sha256:
|
|
111
|
+
"schemas/remediation-verification.schema.json": "sha256:b56560b4f6fd82b9d3db4ad4f7fd0a0e4b289bfebf2e5a02e7c6727d5ba97291",
|
|
107
112
|
"schemas/review-item.schema.json": "sha256:df532a70385d5031bbc18654f3ccb436dc6e8d402ccf987e58f8f7e3ad2fb3f1",
|
|
108
113
|
"schemas/review-policy.schema.json": "sha256:b2d176b1886f78c384b25532a0c3eb18548dfbd17f362a305e622bab562a1d04",
|
|
109
114
|
"schemas/reviewer.schema.json": "sha256:3716697b752575a1277f2c2b318b1f2565de02bf9dce2a0c165567ab5330d18b",
|
|
110
115
|
"schemas/risk.schema.json": "sha256:ea3ca47a8457d98ea65df78e07ba6c20479906e8a3df07a6fa4be5644828fc49",
|
|
111
|
-
"schemas/run.schema.json": "sha256:
|
|
116
|
+
"schemas/run.schema.json": "sha256:d46e9d0154a4a8acddbc3b4dec69e9202c6a4848b94210ca5ba32ede0d447023",
|
|
112
117
|
"schemas/sampling-plan.schema.json": "sha256:005f70f149baaacd7de698548d556d3e401c630978748271b0e14a74726dd413",
|
|
113
118
|
"schemas/scenario.schema.json": "sha256:3f5bc2032d08f973600db068f475176a0e4706b33be42f99c778fe755a0ff38b",
|
|
114
119
|
"schemas/schedule.schema.json": "sha256:645df065bf33577a960c0bf8bb97e141e9326840303569468dae8a553d468482",
|
|
115
|
-
"schemas/search-report.schema.json": "sha256:
|
|
120
|
+
"schemas/search-report.schema.json": "sha256:d6e837580fdd53365e74d3d8b5101cd5a7d54b72f438155293aac399f676b176",
|
|
116
121
|
"schemas/source-identity-chain.schema.json": "sha256:a65d9c12eaed1bd6b637c66a2f9362c17287fdfcb454d8676fb611d2d28aa019",
|
|
117
122
|
"schemas/sow.schema.json": "sha256:3a3fd6048a747a9bc0cfaea98920376b043616a33c953a9eb8b74d0ae32dded0",
|
|
123
|
+
"schemas/summary.schema.json": "sha256:0c9eb076fe992f351c3963728ba247a003648d8fe637b7cdd3016ba5842199c6",
|
|
118
124
|
"schemas/variance.schema.json": "sha256:68389f64f0a3be13ff8951e8eefba9a5c31d0738325cb47e37c1a8435bea48f0",
|
|
119
125
|
"scripts/README.md": "sha256:9eee4e8beb4579a183bd714c9dd24b83abd020753eada5caeffae004739d60b5",
|
|
120
|
-
"SKILL.md": "sha256:
|
|
126
|
+
"SKILL.md": "sha256:77d5647c556f0ba398bcb855c7307b004020a9fec0d9ef3b8e143173ccbfb756",
|
|
121
127
|
"templates/finding-review.md": "sha256:b270a83d3f015150aac80249ae9314979c0befea39ff92ec455f9a5aaa73404c",
|
|
122
|
-
"VERSION": "sha256:
|
|
128
|
+
"VERSION": "sha256:26ac7beccb7951efb69255974ffc70a13bb2e68ae84dcb5456c3fb46294bdba8"
|
|
123
129
|
},
|
|
124
|
-
"treeHash": "sha256:
|
|
130
|
+
"treeHash": "sha256:d2abaf43458900a402f054172a8c35811b99cab2272c7503d72ea01b7ed1285b"
|
|
125
131
|
}
|
|
@@ -4,11 +4,23 @@
|
|
|
4
4
|
"title": "Finding action plan",
|
|
5
5
|
"type": "object",
|
|
6
6
|
"additionalProperties": false,
|
|
7
|
-
"required": ["source_run_id", "source_findings_hash", "generated_at", "summary", "actions"],
|
|
7
|
+
"required": ["source_run_id", "source_findings_hash", "generated_at", "summary", "actions", "source_coverage"],
|
|
8
8
|
"properties": {
|
|
9
9
|
"source_run_id": { "type": "string", "minLength": 1 },
|
|
10
10
|
"source_findings_hash": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
|
|
11
11
|
"generated_at": { "type": "string" },
|
|
12
|
+
"source_coverage": {
|
|
13
|
+
"type": "object",
|
|
14
|
+
"additionalProperties": false,
|
|
15
|
+
"required": ["coverage_status", "determination_status", "evidence_scope", "limitations"],
|
|
16
|
+
"properties": {
|
|
17
|
+
"coverage_status": { "type": "string", "enum": ["complete", "truncated", "indeterminate", "not_applicable"] },
|
|
18
|
+
"determination_status": { "type": "string", "enum": ["supported", "qualified", "indeterminate", "not_applicable"] },
|
|
19
|
+
"artifact": { "type": ["string", "null"] },
|
|
20
|
+
"evidence_scope": { "$ref": "#/definitions/evidenceScope" },
|
|
21
|
+
"limitations": { "type": "array", "items": { "type": "string" } }
|
|
22
|
+
}
|
|
23
|
+
},
|
|
12
24
|
"summary": {
|
|
13
25
|
"type": "object",
|
|
14
26
|
"additionalProperties": false,
|
|
@@ -40,6 +52,10 @@
|
|
|
40
52
|
"owner": { "type": ["string", "null"] },
|
|
41
53
|
"decision_owner": { "type": ["string", "null"] },
|
|
42
54
|
"status": { "type": "string", "enum": ["ready", "blocked"] },
|
|
55
|
+
"coverage_status": { "type": "string", "enum": ["complete", "truncated", "indeterminate", "not_applicable"] },
|
|
56
|
+
"determination_status": { "type": "string", "enum": ["supported", "qualified", "indeterminate", "not_applicable"] },
|
|
57
|
+
"evidence_scope": { "$ref": "#/definitions/evidenceScope" },
|
|
58
|
+
"limitations": { "type": "array", "items": { "type": "string" } },
|
|
43
59
|
"required_input": { "type": "array", "items": { "type": "string" } },
|
|
44
60
|
"semantic_gates": { "type": "array", "items": { "type": "string" } },
|
|
45
61
|
"unsafe_shortcuts": { "type": "array", "items": { "type": "string" } },
|
|
@@ -64,5 +80,26 @@
|
|
|
64
80
|
}
|
|
65
81
|
}
|
|
66
82
|
}
|
|
83
|
+
},
|
|
84
|
+
"definitions": {
|
|
85
|
+
"evidenceScope": {
|
|
86
|
+
"type": "object",
|
|
87
|
+
"additionalProperties": false,
|
|
88
|
+
"required": ["requirement", "satisfaction", "coverage_ref", "resource_ids"],
|
|
89
|
+
"properties": {
|
|
90
|
+
"requirement": { "type": "string", "minLength": 1 },
|
|
91
|
+
"satisfaction": { "type": "string", "enum": ["supported", "qualified", "indeterminate", "not_applicable"] },
|
|
92
|
+
"coverage_ref": { "type": ["string", "null"] },
|
|
93
|
+
"resource_ids": { "type": "array", "uniqueItems": true, "items": { "type": "string", "minLength": 1 } },
|
|
94
|
+
"population": { "type": "string", "enum": ["evaluated_subset", "none_observed"] },
|
|
95
|
+
"evaluated": { "type": ["integer", "null"], "minimum": 0 },
|
|
96
|
+
"eligible": { "type": ["integer", "null"], "minimum": 0 },
|
|
97
|
+
"excluded": { "type": ["integer", "null"], "minimum": 0 },
|
|
98
|
+
"failed": { "type": ["integer", "null"], "minimum": 0 },
|
|
99
|
+
"indeterminate": { "type": ["integer", "null"], "minimum": 0 },
|
|
100
|
+
"unvisited": { "type": ["integer", "null"], "minimum": 0 },
|
|
101
|
+
"denominator": { "type": ["integer", "null"], "minimum": 0 }
|
|
102
|
+
}
|
|
103
|
+
}
|
|
67
104
|
}
|
|
68
105
|
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$id": "citable://schemas/audit-coverage.schema.json",
|
|
3
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
4
|
+
"title": "Audit coverage",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": [
|
|
8
|
+
"schema_version",
|
|
9
|
+
"normalization_version",
|
|
10
|
+
"requested_scope",
|
|
11
|
+
"discovery",
|
|
12
|
+
"populations",
|
|
13
|
+
"resources",
|
|
14
|
+
"stop_reason",
|
|
15
|
+
"coverage_status",
|
|
16
|
+
"reconciliation",
|
|
17
|
+
"limitations"
|
|
18
|
+
],
|
|
19
|
+
"properties": {
|
|
20
|
+
"schema_version": { "const": 1 },
|
|
21
|
+
"normalization_version": { "type": "string", "minLength": 1 },
|
|
22
|
+
"requested_scope": {
|
|
23
|
+
"type": "object",
|
|
24
|
+
"additionalProperties": false,
|
|
25
|
+
"required": ["start_url", "origin", "max_pages", "time_budget_seconds"],
|
|
26
|
+
"properties": {
|
|
27
|
+
"start_url": { "type": "string", "format": "uri" },
|
|
28
|
+
"origin": { "type": "string", "format": "uri" },
|
|
29
|
+
"max_pages": { "type": "integer", "minimum": 1, "maximum": 10000 },
|
|
30
|
+
"time_budget_seconds": { "type": "integer", "minimum": 1, "maximum": 86400 }
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"discovery": {
|
|
34
|
+
"type": "object",
|
|
35
|
+
"additionalProperties": false,
|
|
36
|
+
"required": ["status", "methods", "limitations"],
|
|
37
|
+
"properties": {
|
|
38
|
+
"status": { "type": "string", "enum": ["complete", "truncated", "indeterminate"] },
|
|
39
|
+
"methods": { "type": "array", "items": { "type": "string" } },
|
|
40
|
+
"limitations": { "type": "array", "items": { "type": "string" } }
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"populations": {
|
|
44
|
+
"type": "object",
|
|
45
|
+
"additionalProperties": false,
|
|
46
|
+
"required": [
|
|
47
|
+
"discovered",
|
|
48
|
+
"eligible",
|
|
49
|
+
"excluded",
|
|
50
|
+
"attempted",
|
|
51
|
+
"retrieved",
|
|
52
|
+
"valid_resource",
|
|
53
|
+
"evaluated",
|
|
54
|
+
"valid_but_unevaluated",
|
|
55
|
+
"failed",
|
|
56
|
+
"indeterminate",
|
|
57
|
+
"unvisited"
|
|
58
|
+
],
|
|
59
|
+
"properties": {
|
|
60
|
+
"discovered": { "$ref": "#/definitions/populationCount" },
|
|
61
|
+
"eligible": { "$ref": "#/definitions/populationCount" },
|
|
62
|
+
"excluded": { "$ref": "#/definitions/populationCount" },
|
|
63
|
+
"attempted": { "$ref": "#/definitions/populationCount" },
|
|
64
|
+
"retrieved": { "$ref": "#/definitions/populationCount" },
|
|
65
|
+
"valid_resource": { "$ref": "#/definitions/populationCount" },
|
|
66
|
+
"evaluated": { "$ref": "#/definitions/populationCount" },
|
|
67
|
+
"valid_but_unevaluated": { "$ref": "#/definitions/populationCount" },
|
|
68
|
+
"failed": { "$ref": "#/definitions/populationCount" },
|
|
69
|
+
"indeterminate": { "$ref": "#/definitions/populationCount" },
|
|
70
|
+
"unvisited": { "$ref": "#/definitions/populationCount" }
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
"resources": {
|
|
74
|
+
"type": "array",
|
|
75
|
+
"items": {
|
|
76
|
+
"type": "object",
|
|
77
|
+
"properties": {
|
|
78
|
+
"resource_id": { "type": ["string", "null"] },
|
|
79
|
+
"requested_url": { "type": ["string", "null"] },
|
|
80
|
+
"effective_url": { "type": ["string", "null"] },
|
|
81
|
+
"canonical_url": { "type": ["string", "null"] },
|
|
82
|
+
"response_body_hash": { "type": ["string", "null"], "pattern": "^[a-f0-9]{64}$" },
|
|
83
|
+
"rendered_dom_hash": { "type": ["string", "null"], "pattern": "^[a-f0-9]{64}$" },
|
|
84
|
+
"extracted_text_hash": { "type": ["string", "null"], "pattern": "^[a-f0-9]{64}$" },
|
|
85
|
+
"structured_data_hash": { "type": ["string", "null"], "pattern": "^[a-f0-9]{64}$" },
|
|
86
|
+
"evidence_hash": { "type": ["string", "null"], "pattern": "^[a-f0-9]{64}$" },
|
|
87
|
+
"artifact_hash": { "type": ["string", "null"], "pattern": "^[a-f0-9]{64}$" }
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
"stop_reason": {
|
|
92
|
+
"type": "string",
|
|
93
|
+
"enum": [
|
|
94
|
+
"frontier_exhausted",
|
|
95
|
+
"page_budget_exhausted",
|
|
96
|
+
"time_budget_exhausted",
|
|
97
|
+
"fatal_collection_failure"
|
|
98
|
+
]
|
|
99
|
+
},
|
|
100
|
+
"coverage_status": {
|
|
101
|
+
"type": "string",
|
|
102
|
+
"enum": ["complete", "truncated", "indeterminate", "not_applicable"]
|
|
103
|
+
},
|
|
104
|
+
"reconciliation": {
|
|
105
|
+
"type": "object",
|
|
106
|
+
"additionalProperties": false,
|
|
107
|
+
"required": ["valid", "errors"],
|
|
108
|
+
"properties": {
|
|
109
|
+
"valid": { "type": "boolean" },
|
|
110
|
+
"errors": { "type": "array", "items": { "type": "string" } }
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
"limitations": { "type": "array", "items": { "type": "string" } }
|
|
114
|
+
},
|
|
115
|
+
"definitions": {
|
|
116
|
+
"populationCount": { "type": "integer", "minimum": 0 }
|
|
117
|
+
}
|
|
118
|
+
}
|