HunterX v7 — README, GitHub Pages & SEO Audit

Date: 2026-08-11 Version: 7.0.0 Scope: README, GitHub Pages (Jekyll under docs/), SEO metadata, structured data, tool ecosystem documentation, PoC/proof positioning, LLM discoverability, name disambiguation.


1. Before / After Assessment

Before

Status: Ratified (Sprint 006.9) Version: 1.0.0 Owner: HunterX Engineering Council


1. Purpose / Scope

This document is the reference for every quality gate in the HunterX platform. It defines what each gate checks, how it is configured, and how to interpret its result. The gates are orchestrated by eng.gates.GateRunner and declared in eng/config/gates.yaml. The CI wiring is described in v7-cicd-architecture.md; the security gate is expanded in v7-security-pipeline.md.

A gate is a function (runner, repo_root, spec) -> GateResult registered in eng.gates.checks.default_checks(). Every gate in gates.yaml defaults to mandatory: true; a mandatory FAIL or ERROR raises eng.gates.GateBlockedError and blocks the merge.


2. Gate Configuration

Configuration lives in eng/config/gates.yaml:

gates:
  - name: coverage
    mandatory: true
    threshold: 80.0
  - name: performance
    mandatory: true
    threshold: 20.0

mandatory controls blocking; threshold is a per-gate numeric setting (a coverage percentage, a performance drift percentage, a slow-test cutoff). Optional gates (packaging, git-diff) never block.

Run the gates:

python -m eng gates                # full suite
python -m eng gates --gate ruff mypy
python -m eng gates --json         # artifacts/gates-report.json

3. Status Model

Status Meaning Blocks?
PASS Subject validated no
FAIL Problem found yes, if mandatory
ERROR Gate could not execute yes, if mandatory
SKIPPED Not applicable / tool absent (graceful degradation) no

4. Gate Catalog

4.1 ruff

Lints the v7 source tree, the engineering platform, tests, Alembic migrations and the legacy-excluded configuration. _SRC = ("src", "eng") and the tests/ tree are the linted targets; the retired v6 flat hunterx/ package is deliberately excluded (documented technical debt). Command:

ruff check src tests eng alembic
ruff format --check src tests eng alembic

A violation or an unformatted file fails the gate.

4.2 mypy

Runs mypy in strict mode over the type-checked surface:

mypy eng src/hunterx/shared

The engineering platform and the shared kernel (including the dependency injection container in src/hunterx/shared/di.py) are kept strict-clean. The remaining v7 source is type-checked incrementally as Capability Waves land; the retired v6 flat package is excluded. When the full v7 tree reaches strict-clean, the target SHOULD be widened to mypy --no-warn-unused-ignores src eng.

4.3 pytest

Runs the full test suite:

pytest -q --no-cov -m "not tools" tests/

The tools marker excludes tests that require live external security tools by default; they are executed by the dedicated security-tests.yml workflow.

4.4 coverage

Runs pytest under coverage and enforces a configurable threshold (default 80.0):

pytest -q --cov hunterx --cov-report xml:artifacts/coverage.xml

The Cobertura report is uploaded by CI. Coverage below the threshold fails the gate. Coverage configuration lives in [tool.coverage.*] in pyproject.toml.

4.5 architecture

Enforces the v7 Clean Architecture dependency rule: Delivery → Application → Domain, with Infrastructure implementing domain ports injected at composition time. Violations of layer boundaries fail the gate.

4.6 deadcode

Runs vulture over the source with config/vulture_allowlist.py supplying whitelists for entry points (main, register, create_adapter, build_container, render_template, __version__). Entry points and library names are whitelisted, true dead code is not.

4.7 dependencies

Validates that requirements.lock is consistent with the dependencies declared in pyproject.toml (eng.supplychain.parse_requirements). Drift between the declared and locked sets fails the gate. The audit of known vulnerabilities is handled by the security pipeline’s pip-audit and safety scans.

4.8 docs

Runs eng.docs.validate_docs: required root files, required sections, the DevSecOps engineering documents and their mandated anchors, internal markdown link resolution, balanced fenced blocks and trailing-whitespace hygiene. Produces artifacts/docs-report.json.

4.9 security

Runs the full security pipeline (see v7-security-pipeline.md): bandit, semgrep, gitleaks, pip-audit, safety, and trivy filesystem/image scans. Aggregates into artifacts/security-report.json. Missing scanners are skipped, not failed.

4.10 performance

Runs the benchmark suite (tests/performance) with pytest-benchmark, normalizes results to artifacts/benchmarks/latest.json and compares against baseline.json. Drift beyond threshold (default 20.0 percent) fails the gate. The --durations summary catches slow tests (default cutoff 10s). On the first run a baseline is recorded and the gate passes.

python -m eng gates --gate performance

4.11 compliance

Verifies LICENSE, NOTICE, THIRD_PARTY_NOTICES and the license allow-list (eng.supplychain.check_licenses, _ALLOWED_LICENSES). Disallowed licenses, missing attribution or missing license files fail the gate.

4.12 hygiene

Verifies repository hygiene: SECURITY.md, CONTRIBUTING.md, CODE_OF_CONDUCT.md, .github/CODEOWNERS, .github/dependabot.yml, the issue templates and the pull-request template.

4.13 packaging (optional)

Builds the wheel and sdist (python -m build) and validates them (eng.packaging.validate_packaging). Optional by default; enable it when a release build is part of the workflow.

4.14 git-diff (optional)

Fails when the working tree has uncommitted changes (git status --porcelain). Used as a reproducibility gate on release runs; optional so developers can run the suite mid-work.


5. Adding or Tuning a Gate

  1. Declare the gate in eng/config/gates.yaml (name, mandatory, threshold).
  2. Implement the checker in eng.gates.checks with the uniform signature.
  3. Register it in default_checks().
  4. Add a test under tests/engineering/test_checks.py.
  5. Document the gate in §4 of this document.

Thresholds are tunable without code changes — they live in YAML. The blocking semantics are driven entirely by mandatory.

`, navigation, styles and the docs header were missing. Pages rendered with no content.

After

Status: Ratified (Sprint 006.9) Version: 1.0.0 Owner: HunterX Engineering Council


1. Purpose / Scope

This document is the reference for every quality gate in the HunterX platform. It defines what each gate checks, how it is configured, and how to interpret its result. The gates are orchestrated by eng.gates.GateRunner and declared in eng/config/gates.yaml. The CI wiring is described in v7-cicd-architecture.md; the security gate is expanded in v7-security-pipeline.md.

A gate is a function (runner, repo_root, spec) -> GateResult registered in eng.gates.checks.default_checks(). Every gate in gates.yaml defaults to mandatory: true; a mandatory FAIL or ERROR raises eng.gates.GateBlockedError and blocks the merge.


2. Gate Configuration

Configuration lives in eng/config/gates.yaml:

gates:
  - name: coverage
    mandatory: true
    threshold: 80.0
  - name: performance
    mandatory: true
    threshold: 20.0

mandatory controls blocking; threshold is a per-gate numeric setting (a coverage percentage, a performance drift percentage, a slow-test cutoff). Optional gates (packaging, git-diff) never block.

Run the gates:

python -m eng gates                # full suite
python -m eng gates --gate ruff mypy
python -m eng gates --json         # artifacts/gates-report.json

3. Status Model

Status Meaning Blocks?
PASS Subject validated no
FAIL Problem found yes, if mandatory
ERROR Gate could not execute yes, if mandatory
SKIPPED Not applicable / tool absent (graceful degradation) no

4. Gate Catalog

4.1 ruff

Lints the v7 source tree, the engineering platform, tests, Alembic migrations and the legacy-excluded configuration. _SRC = ("src", "eng") and the tests/ tree are the linted targets; the retired v6 flat hunterx/ package is deliberately excluded (documented technical debt). Command:

ruff check src tests eng alembic
ruff format --check src tests eng alembic

A violation or an unformatted file fails the gate.

4.2 mypy

Runs mypy in strict mode over the type-checked surface:

mypy eng src/hunterx/shared

The engineering platform and the shared kernel (including the dependency injection container in src/hunterx/shared/di.py) are kept strict-clean. The remaining v7 source is type-checked incrementally as Capability Waves land; the retired v6 flat package is excluded. When the full v7 tree reaches strict-clean, the target SHOULD be widened to mypy --no-warn-unused-ignores src eng.

4.3 pytest

Runs the full test suite:

pytest -q --no-cov -m "not tools" tests/

The tools marker excludes tests that require live external security tools by default; they are executed by the dedicated security-tests.yml workflow.

4.4 coverage

Runs pytest under coverage and enforces a configurable threshold (default 80.0):

pytest -q --cov hunterx --cov-report xml:artifacts/coverage.xml

The Cobertura report is uploaded by CI. Coverage below the threshold fails the gate. Coverage configuration lives in [tool.coverage.*] in pyproject.toml.

4.5 architecture

Enforces the v7 Clean Architecture dependency rule: Delivery → Application → Domain, with Infrastructure implementing domain ports injected at composition time. Violations of layer boundaries fail the gate.

4.6 deadcode

Runs vulture over the source with config/vulture_allowlist.py supplying whitelists for entry points (main, register, create_adapter, build_container, render_template, __version__). Entry points and library names are whitelisted, true dead code is not.

4.7 dependencies

Validates that requirements.lock is consistent with the dependencies declared in pyproject.toml (eng.supplychain.parse_requirements). Drift between the declared and locked sets fails the gate. The audit of known vulnerabilities is handled by the security pipeline’s pip-audit and safety scans.

4.8 docs

Runs eng.docs.validate_docs: required root files, required sections, the DevSecOps engineering documents and their mandated anchors, internal markdown link resolution, balanced fenced blocks and trailing-whitespace hygiene. Produces artifacts/docs-report.json.

4.9 security

Runs the full security pipeline (see v7-security-pipeline.md): bandit, semgrep, gitleaks, pip-audit, safety, and trivy filesystem/image scans. Aggregates into artifacts/security-report.json. Missing scanners are skipped, not failed.

4.10 performance

Runs the benchmark suite (tests/performance) with pytest-benchmark, normalizes results to artifacts/benchmarks/latest.json and compares against baseline.json. Drift beyond threshold (default 20.0 percent) fails the gate. The --durations summary catches slow tests (default cutoff 10s). On the first run a baseline is recorded and the gate passes.

python -m eng gates --gate performance

4.11 compliance

Verifies LICENSE, NOTICE, THIRD_PARTY_NOTICES and the license allow-list (eng.supplychain.check_licenses, _ALLOWED_LICENSES). Disallowed licenses, missing attribution or missing license files fail the gate.

4.12 hygiene

Verifies repository hygiene: SECURITY.md, CONTRIBUTING.md, CODE_OF_CONDUCT.md, .github/CODEOWNERS, .github/dependabot.yml, the issue templates and the pull-request template.

4.13 packaging (optional)

Builds the wheel and sdist (python -m build) and validates them (eng.packaging.validate_packaging). Optional by default; enable it when a release build is part of the workflow.

4.14 git-diff (optional)

Fails when the working tree has uncommitted changes (git status --porcelain). Used as a reproducibility gate on release runs; optional so developers can run the suite mid-work.


5. Adding or Tuning a Gate

  1. Declare the gate in eng/config/gates.yaml (name, mandatory, threshold).
  2. Implement the checker in eng.gates.checks with the uniform signature.
  3. Register it in default_checks().
  4. Add a test under tests/engineering/test_checks.py.
  5. Document the gate in §4 of this document.

Thresholds are tunable without code changes — they live in YAML. The blocking semantics are driven entirely by mandatory.

, and footer; SEO and structured data centralized in seo.html`.


2. README Changes

Area Change
Title / hero “AI-Assisted Vulnerability Discovery, Validation & Proof Engine” + “Find it. Verify it. Prove it. Report it.”
What is HunterX Canonical v7 definition and Validated Finding model
Why HunterX Detection vs Proof framing
From Detection to Proof Finding lifecycle, candidate→validated pipeline
How HunterX Works DISCOVER→…→REPORT workflow
v7 Highlights Composition root, toolchain, missions, TIDB, cloud, PoC, reporting, hardening, installer, CI/CD, docs, production readiness; test metric 3479/8/2/0
Security Coverage Supported classes incl. UNKNOWN_BEHAVIOR
Tool Ecosystem 92 tools, categories, official links, status labels
PoC & Proof Engine Proof contracts, replay, reproducibility, impact/confidence, novel behavior, safe RCE proof
Target Intelligence assets/targets/observations/findings/evidence/history/topology/cloud/correlation/mission state/tool results
Cloud & SaaS Intelligence provider list + passive-by-design statement
Knowledge Graph & Correlation cross-tool correlation
Reporting Markdown/HTML/JSON/SARIF/PDF/package
Example Workflow + Usage v7 CLI (hunterx hunt, hunterx finding, hunterx report)
Installation installer + source (PyPI reference removed/corrected)
CLI / REST API / Docker / Architecture / Integrations v7-accurate
Testing & Quality commands
Target Users bug bounty, pentest, red team, research, appsec, devsecops
Documentation / Contributing / Responsible Use / License / Author preserved and updated
Star / Follow / Contribute CTA present
Name disambiguation PyPI note added
Badges removed invalid PyPI badge; corrected Python badge

Claim corrections: “100+ registered tools” → 92 (verified from capabilities/full-toolchain-intelligence.json and the v7 toolchain certification). Removed pip install hunterx as the canonical path because the hunterx PyPI name belongs to an unrelated project.


3. GitHub Pages Changes

Homepage (docs/index.md)

Layouts / Includes

Status: Ratified (Sprint 006.9) Version: 1.0.0 Owner: HunterX Engineering Council


1. Purpose / Scope

This document is the reference for every quality gate in the HunterX platform. It defines what each gate checks, how it is configured, and how to interpret its result. The gates are orchestrated by eng.gates.GateRunner and declared in eng/config/gates.yaml. The CI wiring is described in v7-cicd-architecture.md; the security gate is expanded in v7-security-pipeline.md.

A gate is a function (runner, repo_root, spec) -> GateResult registered in eng.gates.checks.default_checks(). Every gate in gates.yaml defaults to mandatory: true; a mandatory FAIL or ERROR raises eng.gates.GateBlockedError and blocks the merge.


2. Gate Configuration

Configuration lives in eng/config/gates.yaml:

gates:
  - name: coverage
    mandatory: true
    threshold: 80.0
  - name: performance
    mandatory: true
    threshold: 20.0

mandatory controls blocking; threshold is a per-gate numeric setting (a coverage percentage, a performance drift percentage, a slow-test cutoff). Optional gates (packaging, git-diff) never block.

Run the gates:

python -m eng gates                # full suite
python -m eng gates --gate ruff mypy
python -m eng gates --json         # artifacts/gates-report.json

3. Status Model

Status Meaning Blocks?
PASS Subject validated no
FAIL Problem found yes, if mandatory
ERROR Gate could not execute yes, if mandatory
SKIPPED Not applicable / tool absent (graceful degradation) no

4. Gate Catalog

4.1 ruff

Lints the v7 source tree, the engineering platform, tests, Alembic migrations and the legacy-excluded configuration. _SRC = ("src", "eng") and the tests/ tree are the linted targets; the retired v6 flat hunterx/ package is deliberately excluded (documented technical debt). Command:

ruff check src tests eng alembic
ruff format --check src tests eng alembic

A violation or an unformatted file fails the gate.

4.2 mypy

Runs mypy in strict mode over the type-checked surface:

mypy eng src/hunterx/shared

The engineering platform and the shared kernel (including the dependency injection container in src/hunterx/shared/di.py) are kept strict-clean. The remaining v7 source is type-checked incrementally as Capability Waves land; the retired v6 flat package is excluded. When the full v7 tree reaches strict-clean, the target SHOULD be widened to mypy --no-warn-unused-ignores src eng.

4.3 pytest

Runs the full test suite:

pytest -q --no-cov -m "not tools" tests/

The tools marker excludes tests that require live external security tools by default; they are executed by the dedicated security-tests.yml workflow.

4.4 coverage

Runs pytest under coverage and enforces a configurable threshold (default 80.0):

pytest -q --cov hunterx --cov-report xml:artifacts/coverage.xml

The Cobertura report is uploaded by CI. Coverage below the threshold fails the gate. Coverage configuration lives in [tool.coverage.*] in pyproject.toml.

4.5 architecture

Enforces the v7 Clean Architecture dependency rule: Delivery → Application → Domain, with Infrastructure implementing domain ports injected at composition time. Violations of layer boundaries fail the gate.

4.6 deadcode

Runs vulture over the source with config/vulture_allowlist.py supplying whitelists for entry points (main, register, create_adapter, build_container, render_template, __version__). Entry points and library names are whitelisted, true dead code is not.

4.7 dependencies

Validates that requirements.lock is consistent with the dependencies declared in pyproject.toml (eng.supplychain.parse_requirements). Drift between the declared and locked sets fails the gate. The audit of known vulnerabilities is handled by the security pipeline’s pip-audit and safety scans.

4.8 docs

Runs eng.docs.validate_docs: required root files, required sections, the DevSecOps engineering documents and their mandated anchors, internal markdown link resolution, balanced fenced blocks and trailing-whitespace hygiene. Produces artifacts/docs-report.json.

4.9 security

Runs the full security pipeline (see v7-security-pipeline.md): bandit, semgrep, gitleaks, pip-audit, safety, and trivy filesystem/image scans. Aggregates into artifacts/security-report.json. Missing scanners are skipped, not failed.

4.10 performance

Runs the benchmark suite (tests/performance) with pytest-benchmark, normalizes results to artifacts/benchmarks/latest.json and compares against baseline.json. Drift beyond threshold (default 20.0 percent) fails the gate. The --durations summary catches slow tests (default cutoff 10s). On the first run a baseline is recorded and the gate passes.

python -m eng gates --gate performance

4.11 compliance

Verifies LICENSE, NOTICE, THIRD_PARTY_NOTICES and the license allow-list (eng.supplychain.check_licenses, _ALLOWED_LICENSES). Disallowed licenses, missing attribution or missing license files fail the gate.

4.12 hygiene

Verifies repository hygiene: SECURITY.md, CONTRIBUTING.md, CODE_OF_CONDUCT.md, .github/CODEOWNERS, .github/dependabot.yml, the issue templates and the pull-request template.

4.13 packaging (optional)

Builds the wheel and sdist (python -m build) and validates them (eng.packaging.validate_packaging). Optional by default; enable it when a release build is part of the workflow.

4.14 git-diff (optional)

Fails when the working tree has uncommitted changes (git status --porcelain). Used as a reproducibility gate on release runs; optional so developers can run the suite mid-work.


5. Adding or Tuning a Gate

  1. Declare the gate in eng/config/gates.yaml (name, mandatory, threshold).
  2. Implement the checker in eng.gates.checks with the uniform signature.
  3. Register it in default_checks().
  4. Add a test under tests/engineering/test_checks.py.
  5. Document the gate in §4 of this document.

Thresholds are tunable without code changes — they live in YAML. The blocking semantics are driven entirely by mandatory.

`, footer, scripts. Fixed breadcrumb path generation.

Config


4. SEO Changes


5. Technical SEO Changes

Item Before After
Title tags v6 positioning v7 positioning, per-page
Meta descriptions v6 v7, per-page
Canonical URLs page.url | absolute_url unchanged pattern, now resolves to /HunterX/... (verified)
Open Graph present updated v7 description/image alt
Twitter/X cards present updated v7 wording
robots.txt wrong sitemap URL https://nullc0d30.github.io/HunterX/sitemap.xml
sitemap.xml generated 94 URLs, all under /HunterX/ (verified)
Structured data invalid Liquid + v6 valid JSON-LD, 576 blocks across 94 pages (verified)
Favicon / theme present preserved
Alt text present preserved/updated
Heading hierarchy broken layout valid H1→H2 structure
Internal links broken layout, dead nav links 0 broken internal links (verified)
404 handling present preserved
Mobile responsiveness restored CSS responsive breakpoints preserved
Asset paths / baseurl /HunterX consistent (verified in built HTML)

6. Tool Ecosystem Coverage

The new docs/tool-ecosystem.md documents all 92 registered tools from the v7 toolchain manifest, grouped by category, with:

A short README table covers the same canonical list with status. Attribution to third-party projects is explicit. Broken external links (ghauri, sstimap, urlfinder, unicornscan) were corrected or de-linked.


7. PoC / Proof Positioning


8. Structured-Data Changes

docs/_includes/seo.html now emits valid schema.org JSON-LD:

No fake reviews, ratings or aggregate scores were added.


9. LLM Discoverability


10. Name-Disambiguation Improvements



12. Build Results


13. Remaining SEO Gaps

  1. Live deployment is stale. The GitHub Pages site and GitHub main branch currently serve the pre-v7 tree. After pushing the v7 tree, the site will rebuild and all new pages, llms.txt, sitemap and structured data become live.
  2. Search-engine verification tokens are empty in _config.yml (webmaster_verifications). Set Google/Bing/Yandex verification values to enable console monitoring.
  3. Google Analytics is not configured (site.google_analytics empty).
  4. PyPI publishing for the correct project is not yet established; until then, PyPI-related metadata/badges are intentionally omitted. Consider a PyPI name that identifies the project unambiguously, or publishing under the canonical repository only.
  5. GitHub topics are a recommendation (.github/GITHUB_SEO.md); they must be applied in the repository About panel.
  6. Benchmarks page intentionally avoids unverifiable claims and notes the performance-gate self-fail (P2) from the v7 certification, which is an internal quality-gate tuning item.
  7. Some dated v6-era blog posts remain (they use old CLI examples). They are historical content; future blog posts should use v7 syntax.

14. Files Changed

Modified

Added

Not modified


15. Final Status