jekyll-agent-audit 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +8 -0
  3. data/Gemfile +10 -0
  4. data/LICENSE.txt +17 -0
  5. data/README.md +180 -0
  6. data/Rakefile +38 -0
  7. data/doc/Jekyll/AgentAudit/BuildInventory.md +29 -0
  8. data/doc/Jekyll/AgentAudit/Configuration.md +42 -0
  9. data/doc/Jekyll/AgentAudit/ConfigurationError.md +6 -0
  10. data/doc/Jekyll/AgentAudit/Error.md +6 -0
  11. data/doc/Jekyll/AgentAudit/Extractor.md +20 -0
  12. data/doc/Jekyll/AgentAudit/Finding.md +30 -0
  13. data/doc/Jekyll/AgentAudit/InputError.md +6 -0
  14. data/doc/Jekyll/AgentAudit/LinkGraph.md +26 -0
  15. data/doc/Jekyll/AgentAudit/Registry.md +38 -0
  16. data/doc/Jekyll/AgentAudit/Report.md +27 -0
  17. data/doc/Jekyll/AgentAudit/ReportError.md +6 -0
  18. data/doc/Jekyll/AgentAudit/Reporters/Console.md +19 -0
  19. data/doc/Jekyll/AgentAudit/Reporters/JSON.md +9 -0
  20. data/doc/Jekyll/AgentAudit/Reporters.md +5 -0
  21. data/doc/Jekyll/AgentAudit/Rules/Provenance.md +127 -0
  22. data/doc/Jekyll/AgentAudit/Rules/Publication.md +73 -0
  23. data/doc/Jekyll/AgentAudit/Rules.md +5 -0
  24. data/doc/Jekyll/AgentAudit/Runner.md +13 -0
  25. data/doc/Jekyll/AgentAudit/UrlResolver.md +13 -0
  26. data/doc/Jekyll/AgentAudit.md +35 -0
  27. data/doc/Jekyll/Commands/AgentAudit/CommandParser.md +9 -0
  28. data/doc/Jekyll/Commands/AgentAudit/ParserErrors.md +9 -0
  29. data/doc/Jekyll/Commands/AgentAudit.md +13 -0
  30. data/doc/Jekyll/Commands.md +5 -0
  31. data/doc/Jekyll.md +5 -0
  32. data/doc/README.md +180 -0
  33. data/doc/index.csv +154 -0
  34. data/docs/example-report.json +281 -0
  35. data/docs/implementation-plan.md +26 -0
  36. data/docs/limitations.md +31 -0
  37. data/docs/verification.md +52 -0
  38. data/lib/jekyll/agent_audit/build_inventory.rb +196 -0
  39. data/lib/jekyll/agent_audit/command.rb +179 -0
  40. data/lib/jekyll/agent_audit/configuration.rb +196 -0
  41. data/lib/jekyll/agent_audit/errors.rb +10 -0
  42. data/lib/jekyll/agent_audit/extractor.rb +230 -0
  43. data/lib/jekyll/agent_audit/finding.rb +57 -0
  44. data/lib/jekyll/agent_audit/link_graph.rb +82 -0
  45. data/lib/jekyll/agent_audit/registry.rb +133 -0
  46. data/lib/jekyll/agent_audit/report.rb +79 -0
  47. data/lib/jekyll/agent_audit/reporters/console.rb +144 -0
  48. data/lib/jekyll/agent_audit/reporters/json.rb +16 -0
  49. data/lib/jekyll/agent_audit/rules/provenance.rb +412 -0
  50. data/lib/jekyll/agent_audit/rules/publication.rb +186 -0
  51. data/lib/jekyll/agent_audit/runner.rb +266 -0
  52. data/lib/jekyll/agent_audit/url_resolver.rb +98 -0
  53. data/lib/jekyll/agent_audit/version.rb +7 -0
  54. data/lib/jekyll-agent-audit.rb +24 -0
  55. data/llms.txt +35 -0
  56. data/schema/report-1.0.json +66 -0
  57. data/script/benchmark.rb +68 -0
  58. metadata +133 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 4b88653ad0aae082e172a8ceb319711ed790ebf7f23180a20b9b9d63c9e883ba
4
+ data.tar.gz: cc9c187003514356d851ad8b01f7da6df7f54b6825c56c8b76c5ed3106e8aba2
5
+ SHA512:
6
+ metadata.gz: 425e7f130492105c22bcac894e31d715eda5c739ac0bc117adca57a1bdd9f28437b92263f7f4b1a8cbe8d3eafbfb954bb74604df11b39430b7cbd55e32d7a7df
7
+ data.tar.gz: '0034998e52a8f13bc8088e7dc9f74d9de202e5b179b309b9b065ef093129ff7add37ab54274816cc8774798c3dd4888578fdb66cff18947215c869e123ce47fe'
data/CHANGELOG.md ADDED
@@ -0,0 +1,8 @@
1
+ # Changelog
2
+
3
+ ## [0.1.0] - Unreleased
4
+
5
+ - Add an offline audit of rendered Jekyll publications.
6
+ - Report broken local references, conflicting document identity, structural markup problems, and observable metadata contradictions.
7
+ - Provide configurable console and JSON reports, rule selection, explanations, suppressions, and bounded resource limits.
8
+ - Add the `jekyll agent:audit` command with isolated temporary builds and generated API documentation.
data/Gemfile ADDED
@@ -0,0 +1,10 @@
1
+ source "https://rubygems.org"
2
+
3
+ gemspec
4
+
5
+ gem "minitest", ">= 5"
6
+ gem "rake"
7
+ gem "jekyll-seo-tag", "~> 2.9"
8
+ gem "jekyll-sitemap", "~> 1.4"
9
+ gem "yard", "~> 0.9", require: false
10
+ gem "yard-markdown", "~> 0.9", require: false
data/LICENSE.txt ADDED
@@ -0,0 +1,17 @@
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ Copyright 2026 Lucian Ghinda
6
+
7
+ Licensed under the Apache License, Version 2.0 (the "License");
8
+ you may not use this file except in compliance with the License.
9
+ You may obtain a copy of the License at
10
+
11
+ http://www.apache.org/licenses/LICENSE-2.0
12
+
13
+ Unless required by applicable law or agreed to in writing, software
14
+ distributed under the License is distributed on an "AS IS" BASIS,
15
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ See the License for the specific language governing permissions and
17
+ limitations under the License.
data/README.md ADDED
@@ -0,0 +1,180 @@
1
+ # jekyll-agent-audit
2
+
3
+ An offline audit of rendered Jekyll publications. It finds broken local references, conflicting document identity, structural markup problems, and observable metadata contradictions. It does not predict search rankings or AI citations, score pages, rewrite content, or check deployed HTTP behavior.
4
+
5
+ ## Install and run
6
+
7
+ Add the gem to your site's **Gemfile**, in the command-loading group:
8
+
9
+ ```ruby
10
+ group :jekyll_plugins do
11
+ gem "jekyll-agent-audit", "~> 0.1.0"
12
+ end
13
+ ```
14
+
15
+ For an unpublished local checkout, add `path: "/path/to/jekyll-agent-audit"` to that declaration. Run `bundle install`, then:
16
+
17
+ ```sh
18
+ bundle exec jekyll agent:audit
19
+ bundle exec jekyll agent:audit --format json --output tmp/agent-audit.json
20
+ bundle exec jekyll agent:audit --config _config.yml,_config.production.yml
21
+ bundle exec jekyll agent:audit --fail-on warning
22
+ bundle exec jekyll agent:audit --only links.target_missing,identity.canonical_multiple
23
+ bundle exec jekyll agent:audit --list-rules --format json
24
+ bundle exec jekyll agent:audit --explain identity.canonical_multiple
25
+ ```
26
+
27
+ Putting the gem only under `_config.yml`'s `plugins` setting is too late for initial command discovery. See [Jekyll's command integration documentation](https://jekyllrb.com/docs/plugins/commands/).
28
+
29
+ The command makes one full build in a temporary directory, with a separate temporary cache, and inspects the final output. Existing `_site` output is preserved. Build logs go to stderr; JSON stdout contains one report. `--output` writes atomically. Merely loading the gem does not audit an ordinary `jekyll build`.
30
+
31
+ The analyzer performs no network requests. Your site's ordinary build plugins retain their own behavior, including any network requests or custom filesystem writes they perform. Temporary build isolation cannot constrain arbitrary third-party plugin side effects.
32
+
33
+ ## Findings and exit codes
34
+
35
+ The default release enables these 17 rules:
36
+
37
+ | Severity | Rules |
38
+ | --- | --- |
39
+ | Error | `architecture.output_collision`, `links.target_missing`, `links.fragment_missing`, `identity.canonical_invalid`, `identity.canonical_multiple`, `identity.canonical_target_missing`, `structure.id_duplicate`, `provenance.jsonld_invalid` |
40
+ | Warning | `architecture.orphan`, `structure.title_missing`, `structure.heading_empty`, `structure.link_unnamed`, `provenance.date_invalid`, `provenance.date_order`, `provenance.metadata_conflict` |
41
+ | Info | `structure.h1_absent`, `structure.heading_jump` |
42
+
43
+ `--explain RULE` gives applicability, evidence, limitations, and remediation. Deferred catalog rules cannot be selected. Multiple H1s, an external canonical, no modification date, long prose, and no external citations are acceptable by themselves.
44
+
45
+ | Exit | Meaning |
46
+ | --- | --- |
47
+ | 0 | Completed; no active findings meet the failure policy |
48
+ | 1 | Completed; active errors, or warnings with `--fail-on warning` |
49
+ | 2 | Invalid configuration/invocation, failed build/report write, resource limit, or incomplete supported-input analysis |
50
+ | 130 | Interrupted by SIGINT |
51
+
52
+ Default `fail_on: error` leaves warnings and info nonblocking. `none` disables finding-based failure; operational failures still return 2. A build with no HTML returns 2. Discovery always reports **not assessed**, owned by `jekyll-agent-discovery`.
53
+
54
+ ## Configuration
55
+
56
+ These are the defaults, under `_config.yml`. CLI audit options override them after ordinary Jekyll config layering. Jekyll environment, drafts, future posts, URL, and baseurl retain the site's configuration.
57
+
58
+ ```yaml
59
+ agent_audit:
60
+ fail_on: error
61
+ format: console
62
+ include: ["**/*"]
63
+ exclude: []
64
+ content:
65
+ selector: null
66
+ exclude_selectors: [nav, footer, aside, script, style, template]
67
+ metadata:
68
+ selectors:
69
+ author: null
70
+ publisher: null
71
+ published: null
72
+ modified: null
73
+ graph:
74
+ roots: ["/"]
75
+ routes:
76
+ directory_index: index.html
77
+ external_paths: []
78
+ aliases: {}
79
+ rules: {}
80
+ suppressions: []
81
+ limits:
82
+ max_html_bytes: 5242880
83
+ max_jsonld_bytes: 1048576
84
+ max_documents: 50000
85
+ max_edges: 1000000
86
+ ```
87
+
88
+ Unknown options, rules, invalid CSS selectors, alias cycles, and malformed limits are rejected. Disable a rule with `rules: {structure.heading_jump: {enabled: false}}`. `--only` intersects enabled rules and cannot re-enable one.
89
+
90
+ Include/exclude patterns match source-relative paths using Ruby `File.fnmatch?` pathname/glob semantics; exclusion wins. Excluded pages still supply links and targets to the graph. Generated HTML is included with a stable generated identity and a null source path when no source mapping is known.
91
+
92
+ Graph roots are site-relative: `/` becomes `/project/` when `baseurl: /project`. Roots must exist. Route aliases and `external_paths` use full public paths, including baseurl. For example:
93
+
94
+ ```yaml
95
+ agent_audit:
96
+ routes:
97
+ external_paths: ["/project/api/**"]
98
+ aliases:
99
+ /project/old-guide/: /project/guide/
100
+ ```
101
+
102
+ These declarations describe hosting assumptions; they do not create or verify redirects. Assets are valid local targets. Directory-index aliases are proven by the emitted index file; `/guide` is not automatically equivalent to `/guide/`. Query strings stay in observations while target existence uses the path.
103
+
104
+ Content selection uses page `agent_audit.content.selector`, site selector, unique `main`, unique main-role landmark, then unique `article`. Body fallback supports whole-document checks and skips content-sensitive headings. Ambiguous selectors produce coverage diagnostics. Metadata date selectors read machine `datetime` attributes, never free-form prose.
105
+
106
+ ## Suppressions
107
+
108
+ Suppressions retain findings in JSON and require a reason. Site suppressions require source path scope and may specify a fingerprint. `until` is inclusive in the report's UTC reference date.
109
+
110
+ ```yaml
111
+ agent_audit:
112
+ suppressions:
113
+ - rule: architecture.orphan
114
+ paths: ["landing/private-preview.md"]
115
+ reason: "Linked only from a customer email."
116
+ until: "2026-12-31"
117
+ ```
118
+
119
+ Page front matter can use:
120
+
121
+ ```yaml
122
+ agent_audit:
123
+ suppress:
124
+ - rule: structure.h1_absent
125
+ reason: "The layout renders the title outside main."
126
+ ```
127
+
128
+ Expired suppressions do not hide findings. Unused suppressions generate notices. Collisions require a site suppression with primary-owner scope and a fingerprint. Disabling a rule appears as disabled coverage, never a clean result.
129
+
130
+ ## Reports and interpretation
131
+
132
+ Console and JSON share one report. The [JSON schema](schema/report-1.0.json) is versioned `1.0`; consumers should tolerate additive fields and use rule IDs instead of parsing message text. Findings preserve evidence level, observation, rendered location, related locations, remediation, fingerprint, and suppression. Source lines are null unless an actual source mapping exists; rendered HTML lines are not Markdown source lines.
133
+
134
+ The [example JSON report](docs/example-report.json) was generated by a fixture with a broken local link, no H1, and an explicit modification date preceding publication.
135
+
136
+ Fingerprints exclude line numbers, temporary paths, message wording, and timestamps. Findings and coverage are deterministically ordered; run clocks and timings are volatile. Reports contain bounded observations, not article bodies. They can still reveal unpublished paths, so choose artifact access and retention accordingly.
137
+
138
+ For every rule, `candidate = evaluated + not_applicable + skipped`. Evaluated includes clean and finding-producing applications. Suppressing a finding does not change coverage. Counts describe local observations; there is no quality percentage.
139
+
140
+ ## Development and release status
141
+
142
+ ```sh
143
+ bundle install
144
+ bundle exec rake test
145
+ bundle exec rake lint
146
+ gem build jekyll-agent-audit.gemspec
147
+ ruby script/benchmark.rb
148
+ ```
149
+
150
+
151
+ ### Generated documentation
152
+
153
+ Generate Markdown API documentation and the LLM index from the Ruby source:
154
+
155
+ ```sh
156
+ bundle exec rake docs
157
+ ```
158
+
159
+ This replaces `doc/` with fresh YARD Markdown, updates the documentation index in
160
+ `doc/Jekyll/AgentAudit.md`, and writes `llms.txt` with links relative to the gem
161
+ root. Both namespaces are indexed: the library under `Jekyll::AgentAudit` and the
162
+ Jekyll subcommand under `Jekyll::Commands::AgentAudit`. The generated files are
163
+ checked in and shipped with the gem; `yard` and `yard-markdown` stay development
164
+ dependencies. Authored guides belong in `docs/`, not the generated `doc/`.
165
+
166
+ For the individual steps, run `bundle exec rake yard`, then
167
+ `ruby bin/generate_llm.rb`.
168
+
169
+ To verify everything, regenerate documentation, and build the versioned gem and
170
+ SHA-256 checksum in `pkg/`, run:
171
+
172
+ ```sh
173
+ bin/prepare_release
174
+ ```
175
+
176
+ It stops at the first failure and never commits, tags, pushes, or publishes.
177
+
178
+ The implementation targets Jekyll 4.4.x. See [verification and compatibility](docs/verification.md) for combinations actually tested and benchmark measurements. Do not infer native GitHub Pages compatibility. The runtime HTML parser is explicitly declared as Nokogiri; no optional SEO, sitemap, or Markdown plugin is required.
179
+
180
+ See [limitations and evidence](docs/limitations.md) before interpreting findings. The design specification in the parent workspace is the normative MVP catalog; deferred editorial and duplication analyses are not enabled.
data/Rakefile ADDED
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "fileutils"
4
+ require "bundler/gem_tasks"
5
+ require "rake/testtask"
6
+ require "rbconfig"
7
+ require "open3"
8
+ require "yard"
9
+
10
+ ROOT = File.expand_path(__dir__)
11
+
12
+ Rake::TestTask.new do |task|
13
+ task.libs << "lib" << "test"
14
+ task.pattern = "test/**/*_test.rb"
15
+ task.warning = true
16
+ end
17
+
18
+ desc "Check Ruby syntax and compiler warnings in gem code, tests, and scripts"
19
+ task :lint do
20
+ files = Dir["{lib,test,script}/**/*.rb", "bin/*", "*.gemspec", "Gemfile", "Rakefile"].select { |file| File.file?(file) }.sort
21
+ problems = files.filter_map do |file|
22
+ stdout, stderr, status = Open3.capture3(RbConfig.ruby, "-cw", file)
23
+ "#{file}:\n#{stdout}#{stderr}" unless status.success? && stderr.empty?
24
+ end
25
+ abort problems.join("\n") unless problems.empty?
26
+ puts "Syntax and compiler warnings: #{files.length} Ruby files checked."
27
+ end
28
+
29
+ YARD::Rake::YardocTask.new do |task|
30
+ task.before = -> { FileUtils.rm_rf(File.join(ROOT, "doc")) }
31
+ end
32
+
33
+ desc "Generate Markdown API documentation and the LLM index"
34
+ task docs: :yard do
35
+ sh RbConfig.ruby, File.join(ROOT, "bin/generate_llm.rb")
36
+ end
37
+
38
+ task default: %i[test lint]
@@ -0,0 +1,29 @@
1
+ # Class Jekyll::AgentAudit::BuildInventory <a id="class-Jekyll-AgentAudit-BuildInventory"></a>
2
+
3
+ | | |
4
+ | --- | --- |
5
+ | **Inherits** | Object |
6
+ | **Defined in** | lib/jekyll/agent_audit/build_inventory.rb |
7
+
8
+ ## Attributes
9
+ ### `collisions` [R] <a id="attribute-i-collisions"></a> <a id="collisions-instance_method"></a>
10
+ Returns the value of attribute collisions.
11
+
12
+ ### `diagnostics` [R] <a id="attribute-i-diagnostics"></a> <a id="diagnostics-instance_method"></a>
13
+ Returns the value of attribute diagnostics.
14
+
15
+ ### `entries` [R] <a id="attribute-i-entries"></a> <a id="entries-instance_method"></a>
16
+ Returns the value of attribute entries.
17
+
18
+ ## Public Instance Methods
19
+ ### `capture!()` <a id="method-i-capture-21"></a> <a id="capture!-instance_method"></a>
20
+ Not documented.
21
+
22
+ ### `complete?()` <a id="method-i-complete-3F"></a> <a id="complete?-instance_method"></a>
23
+ - **@return** [Boolean]
24
+
25
+ ### `finalize!()` <a id="method-i-finalize-21"></a> <a id="finalize!-instance_method"></a>
26
+ Not documented.
27
+
28
+ ### `initialize(site, configuration)` <a id="method-i-initialize"></a> <a id="initialize-instance_method"></a>
29
+ - **@return** [BuildInventory] a new instance of BuildInventory
@@ -0,0 +1,42 @@
1
+ # Class Jekyll::AgentAudit::Configuration <a id="class-Jekyll-AgentAudit-Configuration"></a>
2
+
3
+ | | |
4
+ | --- | --- |
5
+ | **Inherits** | Object |
6
+ | **Defined in** | lib/jekyll/agent_audit/configuration.rb |
7
+
8
+ ## Constants
9
+ ### `DEFAULTS` <a id="constant-DEFAULTS"></a> <a id="DEFAULTS-constant"></a>
10
+ Not documented.
11
+
12
+ ### `LIMITS` <a id="constant-LIMITS"></a> <a id="LIMITS-constant"></a>
13
+ Not documented.
14
+
15
+ ### `TOP_KEYS` <a id="constant-TOP_KEYS"></a> <a id="TOP_KEYS-constant"></a>
16
+ Not documented.
17
+
18
+ ## Attributes
19
+ ### `raw` [R] <a id="attribute-i-raw"></a> <a id="raw-instance_method"></a>
20
+ Returns the value of attribute raw.
21
+
22
+ ## Public Instance Methods
23
+ ### `[] (key)` <a id="method-i--5B-5D"></a> <a id="[]-instance_method"></a>
24
+ Not documented.
25
+
26
+ ### `enabled_rules()` <a id="method-i-enabled_rules"></a> <a id="enabled_rules-instance_method"></a>
27
+ Not documented.
28
+
29
+ ### `expired_suppressions(now: = Date.today)` <a id="method-i-expired_suppressions"></a> <a id="expired_suppressions-instance_method"></a>
30
+ Not documented.
31
+
32
+ ### `initialize(raw_namespace = {}, overrides = {})` <a id="method-i-initialize"></a> <a id="initialize-instance_method"></a>
33
+ - **@return** [Configuration] a new instance of Configuration
34
+
35
+ ### `selected?(source_path)` <a id="method-i-selected-3F"></a> <a id="selected?-instance_method"></a>
36
+ - **@return** [Boolean]
37
+
38
+ ### `suppression_for(rule_id, source_path: = nil, fingerprint: = nil, now: = Date.today)` <a id="method-i-suppression_for"></a> <a id="suppression_for-instance_method"></a>
39
+ Not documented.
40
+
41
+ ### `to_h()` <a id="method-i-to_h"></a> <a id="to_h-instance_method"></a>
42
+ Not documented.
@@ -0,0 +1,6 @@
1
+ # Class Jekyll::AgentAudit::ConfigurationError <a id="class-Jekyll-AgentAudit-ConfigurationError"></a>
2
+
3
+ | | |
4
+ | --- | --- |
5
+ | **Inherits** | [Jekyll::AgentAudit::Error](Error.md) |
6
+ | **Defined in** | lib/jekyll/agent_audit/errors.rb |
@@ -0,0 +1,6 @@
1
+ # Class Jekyll::AgentAudit::Error <a id="class-Jekyll-AgentAudit-Error"></a>
2
+
3
+ | | |
4
+ | --- | --- |
5
+ | **Inherits** | StandardError |
6
+ | **Defined in** | lib/jekyll/agent_audit/errors.rb |
@@ -0,0 +1,20 @@
1
+ # Class Jekyll::AgentAudit::Extractor <a id="class-Jekyll-AgentAudit-Extractor"></a>
2
+
3
+ | | |
4
+ | --- | --- |
5
+ | **Inherits** | Object |
6
+ | **Defined in** | lib/jekyll/agent_audit/extractor.rb |
7
+
8
+ ## Constants
9
+ ### `MAX_EXCERPT_BYTES` <a id="constant-MAX_EXCERPT_BYTES"></a> <a id="MAX_EXCERPT_BYTES-constant"></a>
10
+ Not documented.
11
+
12
+ ### `MAX_NAME_BYTES` <a id="constant-MAX_NAME_BYTES"></a> <a id="MAX_NAME_BYTES-constant"></a>
13
+ Not documented.
14
+
15
+ ## Public Instance Methods
16
+ ### `extract(entry)` <a id="method-i-extract"></a> <a id="extract-instance_method"></a>
17
+ Not documented.
18
+
19
+ ### `initialize(configuration)` <a id="method-i-initialize"></a> <a id="initialize-instance_method"></a>
20
+ - **@return** [Extractor] a new instance of Extractor
@@ -0,0 +1,30 @@
1
+ # Class Jekyll::AgentAudit::Finding <a id="class-Jekyll-AgentAudit-Finding"></a>
2
+
3
+ | | |
4
+ | --- | --- |
5
+ | **Inherits** | Object |
6
+ | **Defined in** | lib/jekyll/agent_audit/finding.rb |
7
+
8
+ ## Constants
9
+ ### `SEVERITY_ORDER` <a id="constant-SEVERITY_ORDER"></a> <a id="SEVERITY_ORDER-constant"></a>
10
+ Not documented.
11
+
12
+ ## Attributes
13
+ ### `data` [R] <a id="attribute-i-data"></a> <a id="data-instance_method"></a>
14
+ Returns the value of attribute data.
15
+
16
+ ## Public Instance Methods
17
+ ### `[] (key)` <a id="method-i--5B-5D"></a> <a id="[]-instance_method"></a>
18
+ Not documented.
19
+
20
+ ### `initialize(draft = nil, registry: = Registry, **attributes)` <a id="method-i-initialize"></a> <a id="initialize-instance_method"></a>
21
+ - **@return** [Finding] a new instance of Finding
22
+
23
+ ### `severity_rank()` <a id="method-i-severity_rank"></a> <a id="severity_rank-instance_method"></a>
24
+ Not documented.
25
+
26
+ ### `suppressed?()` <a id="method-i-suppressed-3F"></a> <a id="suppressed?-instance_method"></a>
27
+ - **@return** [Boolean]
28
+
29
+ ### `to_h()` <a id="method-i-to_h"></a> <a id="to_h-instance_method"></a>
30
+ Not documented.
@@ -0,0 +1,6 @@
1
+ # Class Jekyll::AgentAudit::InputError <a id="class-Jekyll-AgentAudit-InputError"></a>
2
+
3
+ | | |
4
+ | --- | --- |
5
+ | **Inherits** | StandardError |
6
+ | **Defined in** | lib/jekyll/agent_audit/errors.rb, lib/jekyll/agent_audit/extractor.rb |
@@ -0,0 +1,26 @@
1
+ # Class Jekyll::AgentAudit::LinkGraph <a id="class-Jekyll-AgentAudit-LinkGraph"></a>
2
+
3
+ | | |
4
+ | --- | --- |
5
+ | **Inherits** | Object |
6
+ | **Defined in** | lib/jekyll/agent_audit/link_graph.rb |
7
+
8
+ ## Attributes
9
+ ### `diagnostics` [R] <a id="attribute-i-diagnostics"></a> <a id="diagnostics-instance_method"></a>
10
+ Returns the value of attribute diagnostics.
11
+
12
+ ## Public Instance Methods
13
+ ### `edges()` <a id="method-i-edges"></a> <a id="edges-instance_method"></a>
14
+ Not documented.
15
+
16
+ ### `edges_for(document)` <a id="method-i-edges_for"></a> <a id="edges_for-instance_method"></a>
17
+ Not documented.
18
+
19
+ ### `incoming(document)` <a id="method-i-incoming"></a> <a id="incoming-instance_method"></a>
20
+ Not documented.
21
+
22
+ ### `initialize(documents, resolver, configuration, site_config = {})` <a id="method-i-initialize"></a> <a id="initialize-instance_method"></a>
23
+ - **@return** [LinkGraph] a new instance of LinkGraph
24
+
25
+ ### `reachable()` <a id="method-i-reachable"></a> <a id="reachable-instance_method"></a>
26
+ Not documented.
@@ -0,0 +1,38 @@
1
+ # Module Jekyll::AgentAudit::Registry <a id="module-Jekyll-AgentAudit-Registry"></a>
2
+
3
+ | | |
4
+ | --- | --- |
5
+ | **Defined in** | lib/jekyll/agent_audit/registry.rb |
6
+
7
+ ## Constants
8
+ ### `DEFERRED_RULES` <a id="constant-DEFERRED_RULES"></a> <a id="DEFERRED_RULES-constant"></a>
9
+ Not documented.
10
+
11
+ ### `DETAILS` <a id="constant-DETAILS"></a> <a id="DETAILS-constant"></a>
12
+ category, evidence, severity, source keys, applicability, required inputs, limitations, remediation
13
+ :
14
+
15
+ ### `MVP_RULES` <a id="constant-MVP_RULES"></a> <a id="MVP_RULES-constant"></a>
16
+ Not documented.
17
+
18
+ ### `SEVERITIES` <a id="constant-SEVERITIES"></a> <a id="SEVERITIES-constant"></a>
19
+ Not documented.
20
+
21
+ ### `SOURCE_URLS` <a id="constant-SOURCE_URLS"></a> <a id="SOURCE_URLS-constant"></a>
22
+ Not documented.
23
+
24
+ ## Public Class Methods
25
+ ### `[] (id)` <a id="method-c--5B-5D"></a> <a id="[]-class_method"></a>
26
+ Not documented.
27
+
28
+ ### `all()` <a id="method-c-all"></a> <a id="all-class_method"></a>
29
+ Not documented.
30
+
31
+ ### `deferred?(id)` <a id="method-c-deferred-3F"></a> <a id="deferred?-class_method"></a>
32
+ - **@return** [Boolean]
33
+
34
+ ### `known?(id)` <a id="method-c-known-3F"></a> <a id="known?-class_method"></a>
35
+ - **@return** [Boolean]
36
+
37
+ ### `mvp_ids()` <a id="method-c-mvp_ids"></a> <a id="mvp_ids-class_method"></a>
38
+ Not documented.
@@ -0,0 +1,27 @@
1
+ # Class Jekyll::AgentAudit::Report <a id="class-Jekyll-AgentAudit-Report"></a>
2
+
3
+ | | |
4
+ | --- | --- |
5
+ | **Inherits** | Object |
6
+ | **Defined in** | lib/jekyll/agent_audit/report.rb |
7
+
8
+ ## Constants
9
+ ### `SCHEMA_VERSION` <a id="constant-SCHEMA_VERSION"></a> <a id="SCHEMA_VERSION-constant"></a>
10
+ Not documented.
11
+
12
+ ## Attributes
13
+ ### `data` [R] <a id="attribute-i-data"></a> <a id="data-instance_method"></a>
14
+ Returns the value of attribute data.
15
+
16
+ ## Public Instance Methods
17
+ ### `exit_code()` <a id="method-i-exit_code"></a> <a id="exit_code-instance_method"></a>
18
+ Not documented.
19
+
20
+ ### `findings()` <a id="method-i-findings"></a> <a id="findings-instance_method"></a>
21
+ Not documented.
22
+
23
+ ### `initialize(findings: = [], coverage: = {}, diagnostics: = [], documents_inspected: = 0, options: = {}, site_config: = {}, complete: = true, reference_time: = Time.now.utc, operational_error: = false, effective_configuration: = nil, build: = nil)` <a id="method-i-initialize"></a> <a id="initialize-instance_method"></a>
24
+ - **@return** [Report] a new instance of Report
25
+
26
+ ### `to_h()` <a id="method-i-to_h"></a> <a id="to_h-instance_method"></a>
27
+ Not documented.
@@ -0,0 +1,6 @@
1
+ # Class Jekyll::AgentAudit::ReportError <a id="class-Jekyll-AgentAudit-ReportError"></a>
2
+
3
+ | | |
4
+ | --- | --- |
5
+ | **Inherits** | [Jekyll::AgentAudit::Error](Error.md) |
6
+ | **Defined in** | lib/jekyll/agent_audit/errors.rb |
@@ -0,0 +1,19 @@
1
+ # Module Jekyll::AgentAudit::Reporters::Console <a id="module-Jekyll-AgentAudit-Reporters-Console"></a>
2
+
3
+ | | |
4
+ | --- | --- |
5
+ | **Defined in** | lib/jekyll/agent_audit/reporters/console.rb |
6
+
7
+ ## Constants
8
+ ### `MAX_VALUE_LENGTH` <a id="constant-MAX_VALUE_LENGTH"></a> <a id="MAX_VALUE_LENGTH-constant"></a>
9
+ Not documented.
10
+
11
+ ### `SEVERITIES` <a id="constant-SEVERITIES"></a> <a id="SEVERITIES-constant"></a>
12
+ Not documented.
13
+
14
+ ## Public Class Methods
15
+ ### `render(report, verbose: = false)` <a id="method-c-render"></a> <a id="render-class_method"></a>
16
+ Not documented.
17
+
18
+ ### `result_line(report, data)` <a id="method-c-result_line"></a> <a id="result_line-class_method"></a>
19
+ Not documented.
@@ -0,0 +1,9 @@
1
+ # Module Jekyll::AgentAudit::Reporters::JSON <a id="module-Jekyll-AgentAudit-Reporters-JSON"></a>
2
+
3
+ | | |
4
+ | --- | --- |
5
+ | **Defined in** | lib/jekyll/agent_audit/reporters/json.rb |
6
+
7
+ ## Public Class Methods
8
+ ### `render(report)` <a id="method-c-render"></a> <a id="render-class_method"></a>
9
+ Not documented.
@@ -0,0 +1,5 @@
1
+ # Module Jekyll::AgentAudit::Reporters <a id="module-Jekyll-AgentAudit-Reporters"></a>
2
+
3
+ | | |
4
+ | --- | --- |
5
+ | **Defined in** | lib/jekyll/agent_audit/reporters/json.rb, lib/jekyll/agent_audit/reporters/console.rb |