Skill Tracer
Skills › Scientific Agent Skills › hypothesis-generation › security_validation.md

security_validation.md

77 lines · skills/hypothesis-generation/references/security_validation.md at 5f2bc03

Open on GitHub

Most marks come from matching words in the file, so treat them as pointers.

1# Security Validation Record
2
3Historical security-scan date: **2026-07-23** (local project date). These scan results describe that run, not a fresh scan of later edits.
4

Security Validation Record

Historical security-scan date: 2026-07-23 (local project date). These scan results describe that run, not a fresh scan of later edits.

Raw lines 1 to 4
5## Maintenance validation 2026-10-01
6
7The isolated Python 3.13 suite passes **31 tests**, including strict calendar dates, rejection of nonstandard JSON numeric constants, a 64-level JSON nesting bound, and correct scaffold date provenance. Skill specification validation also passes. The original runtime scope remains local-only. Repository-wide security scanning is handled separately by the collection maintainer; the historical scanner findings below are not evidence of a new scan.
8

Maintenance validation 2026-10-01

The isolated Python 3.13 suite passes 31 tests, including strict calendar dates, rejection of nonstandard JSON numeric constants, a 64-level JSON nesting bound, and correct scaffold date provenance. Skill specification validation also passes. The original runtime scope remains local-only. Repository-wide security scanning is handled separately by the collection maintainer; the historical scanner findings below are not evidence of a new scan.

Raw lines 5 to 8
9## Baseline
11The repository `SECURITY.md` section recorded **10 findings** with maximum severity **CRITICAL**:
13- cross-file environment-variable/network exfiltration;
14- a multi-file collection/transmission chain;
15- environment harvesting in both schematic scripts;
16- credential transmission and local `.env` loading;
17- subprocess delegation and full-environment propagation;
18- fabricated or unverified model identifiers;
19- unpinned external dependencies.
21The affected files were:
23- deleted: scripts/generate_schematic.py;
24- deleted: scripts/generate_schematic_ai.py;
25- the former credential and mandatory-figure instructions in `SKILL.md`.

Baseline

The repository SECURITY.md section recorded 10 findings with maximum severity CRITICAL:

  • cross-file environment-variable/network exfiltration;
  • a multi-file collection/transmission chain;
  • environment harvesting in both schematic scripts;
  • credential transmission and local .env loading;
  • subprocess delegation and full-environment propagation;
  • fabricated or unverified model identifiers;
  • unpinned external dependencies.

The affected files were:

  • deleted: scripts/generate_schematic.py;
  • deleted: scripts/generate_schematic_ai.py;
  • the former credential and mandatory-figure instructions in SKILL.md.
Raw lines 9 to 26
Runs code scripts/generate_schematic.py :23
Runs code scripts/generate_schematic_ai.py :24
27## Remediation
29- Deleted both external schematic scripts and all former LaTeX/figure assets.
30- Removed credential declarations, environment access, `.env` loading, subprocesses, HTTP requests, external models, image generation, mandatory figures, and cross-skill behavior.
31- Replaced the workflow with bounded deterministic local JSON/CSV/Markdown validators and a preregistration scaffold generator.
32- Added strict duplicate-key/header detection, size/row/cell/list limits, symlink and URL-path rejection, private atomic outputs, and no implicit overwrite.
33- Added AST tests rejecting network libraries, subprocesses, executable serialization, dynamic code execution, and environment credential access.
34- Added local-first confidentiality, source verification, human accountability, ethics, biosafety, dual-use, data, clinical-scope, and regulatory gates.
35- Tools report declarations and cross-links only; they do not score or select hypotheses.

Remediation

  • Deleted both external schematic scripts and all former LaTeX/figure assets.
  • Removed credential declarations, environment access, .env loading, subprocesses, HTTP requests, external models, image generation, mandatory figures, and cross-skill behavior.
  • Replaced the workflow with bounded deterministic local JSON/CSV/Markdown validators and a preregistration scaffold generator.
  • Added strict duplicate-key/header detection, size/row/cell/list limits, symlink and URL-path rejection, private atomic outputs, and no implicit overwrite.
  • Added AST tests rejecting network libraries, subprocesses, executable serialization, dynamic code execution, and environment credential access.
  • Added local-first confidentiality, source verification, human accountability, ethics, biosafety, dual-use, data, clinical-scope, and regulatory gates.
  • Tools report declarations and cross-links only; they do not score or select hypotheses.
Raw lines 27 to 36
37## Validation results
39- Agent Skills reference validator: **PASS**
40- Dependency-free CLI help checks: **PASS** for all 7 public CLIs
41- Synthetic standard-library tests: **27 passed**
42- Explicit AST parse with bytecode disabled: **8 scripts parsed**
43- Bytecode artifacts: **0**
44- IDE lints: **0**
45- Documented local-path link test: **PASS**
46- Authoritative-source link extraction: **36/36 reachable, 0 errors**
47- Direct behavioral security scan: **SAFE, 0 findings**
48- Pull-request gate with `--fail-on HIGH`: **PASS**
49 - CRITICAL: 0
50 - HIGH: 0
51 - LOW: 2

Validation results

  • Agent Skills reference validator: PASS
  • Dependency-free CLI help checks: PASS for all 7 public CLIs
  • Synthetic standard-library tests: 27 passed
  • Explicit AST parse with bytecode disabled: 8 scripts parsed
  • Bytecode artifacts: 0
  • IDE lints: 0
  • Documented local-path link test: PASS
  • Authoritative-source link extraction: 36/36 reachable, 0 errors
  • Direct behavioral security scan: SAFE, 0 findings
  • Pull-request gate with --fail-on HIGH: PASS
  • CRITICAL: 0
  • HIGH: 0
  • LOW: 2
Raw lines 37 to 52
53## Residual LOW findings
55The LLM-assisted pull-request scan reported:
571. **Missing `allowed-tools` declaration** — informational. The Agent Skills specification does not require this optional field. The compatibility declaration and body constrain bundled tools to bounded local standard-library processing with no network, models, images, credentials, or environment access.
582. **Missing referenced files** — analyzer false positive. It invented paths under `templates/` and mismatched existing `assets/` and `references/` files. The deterministic local-path test resolved every documented bundled path and passed. No script implements network fallback or substitute retrieval.
60Neither LOW finding permits data transmission, credential access, scientific scoring, or automatic hypothesis selection. No CRITICAL or HIGH issue remains.

Residual LOW findings

The LLM-assisted pull-request scan reported:

  1. **Missing allowed-tools declaration** — informational. The Agent Skills specification does not require this optional field. The compatibility declaration and body constrain bundled tools to bounded local standard-library processing with no network, models, images, credentials, or environment access.
  2. Missing referenced files — analyzer false positive. It invented paths under templates/ and mismatched existing assets/ and references/ files. The deterministic local-path test resolved every documented bundled path and passed. No script implements network fallback or substitute retrieval.

Neither LOW finding permits data transmission, credential access, scientific scoring, or automatic hypothesis selection. No CRITICAL or HIGH issue remains.

Raw lines 53 to 61
62## Reproduction
64```bash
65PYTHONDONTWRITEBYTECODE=1 python tests/run_all.py --isolated hypothesis-generation
67uv run skills-ref validate skills/hypothesis-generation
69uv run skill-scanner scan skills/hypothesis-generation --use-behavioral
71uv run python scan_pr_skills.py \
72 --fail-on HIGH \
73 --output /tmp/hypothesis-generation-pr-scan.md \
74 skills/hypothesis-generation
75```
77The repository-level `SECURITY.md` is intentionally not edited in this scoped refresh; its generated snapshot updates through the repository’s normal scan process.

Reproduction

PYTHONDONTWRITEBYTECODE=1 python tests/run_all.py --isolated hypothesis-generation

uv run skills-ref validate skills/hypothesis-generation

uv run skill-scanner scan skills/hypothesis-generation --use-behavioral

uv run python scan_pr_skills.py \
  --fail-on HIGH \
  --output /tmp/hypothesis-generation-pr-scan.md \
  skills/hypothesis-generation

The repository-level SECURITY.md is intentionally not edited in this scoped refresh; its generated snapshot updates through the repository’s normal scan process.

Raw lines 62 to 77
Runs code python tests/run_all.py :65
Runs code python scan_pr_skills.py :71