Understanding the Evidence → Finding → Path Chain in reverse-skill
The Evidence → Finding → Path chain is the mandatory three-stage data model in the reverse-skill repository that structures every security and reverse-engineering workflow into immutable observations, validated conclusions, and actionable sequences.
This architectural pattern enforces reproducibility and auditability across forensic investigations, penetration tests, and CTF challenges. According to the zhaoxuya520/reverse-skill source code, the chain lives in skills/ops/evidence-finding-path.md and requires analysts to progress through three distinct layers before generating final reports.
The Three-Stage Data Model
The reverse-skill framework divides every investigation into three immutable asset types stored as markdown files in work/<case>/.
Evidence: Immutable Observations
Evidence represents raw, tamper-evident records of what was observed. Stored as E-{nnn}.md files under work/<case>/evidence/, each evidence asset must include mandatory fields that guarantee immutability and reproducibility.
Key fields include:
content_hash– Cryptographic hash ensuring integrityobserved_at– ISO 8601 timestampsource_ref– Pointer to original log or artifactrepro_command– Exact command to regenerate the observation
As specified in skills/ops/evidence-finding-path.md, evidence files are append-only. The supersedes field allows chaining corrections without invalidating previous hashes.
Finding: Analyst Conclusions
Finding assets (F-{nnn}.md) represent analyst-level interpretations derived from one or more evidence files. Each finding must reference at least one evidence ID via the evidence_ids array.
Critical validation rules enforced by the framework:
status=validatedrequiresconfidence≠lowunlessresidual_risksis explicitly documented- Must specify
severity(low/medium/high/critical) andcategory(vuln/malware/config) locationandimpactfields provide spatial and business context
The finding layer acts as the interpretation boundary between raw data and human analysis.
Path: Actionable Sequences
Path assets (P-{nnn}.md) connect findings into ordered sequences that achieve higher-level goals. The path_type field adapts to domain requirements (attack, callflow, or solve).
Each step in the steps array must reference:
evidence– The supporting observationfinding– The derived conclusionaction– The narrative or operational instruction
Paths enable attack chain reconstruction, call-flow documentation, and CTF solve walkthroughs while maintaining full traceability back to original evidence.
Architectural Flow
The reverse-skill implementation enforces a five-phase workflow:
-
Evidence Creation – Analysts or automated scripts write
E-{nnn}.mdfiles using CLI helpers likeskills/scripts/append-evidence.ps1. This guarantees immutability through hashes and timestamps. -
Finding Composition – Validation logic in
skills/case-review/scripts/review_case.pyensures every finding references sufficient evidence beforestatuscan transition tovalidated. -
Path Assembly –
P-{nnn}.mdfiles string together steps, with thedocs-generatormodule consuming these assets to produce final reports. -
Verification & Reporting – The generator mandates inclusion of Scope summaries, Evidence tables, Findings lists, and at least one Path, as defined in
skills/docs-generator/references/security-report-templates.md. -
Auditability – The read-only case-review script verifies hash integrity and cross-references work items, enforcing that no finding exists without supporting evidence.
Implementation Details and File Structure
The reverse-skill repository organizes validation logic and templates across four key locations:
| File | Purpose |
|---|---|
skills/ops/evidence-finding-path.md |
Authoritative schema specification for all three stages |
skills/docs-generator/references/security-report-templates.md |
Report templates enforcing chain inclusion |
skills/case-review/scripts/review_case.py |
Python validation engine for hash verification and sufficiency checks |
skills/scripts/append-evidence.ps1 |
PowerShell CLI for creating Evidence markdown files |
The naming convention (E-, F-, P- prefixes with zero-padded numeric identifiers) ensures lexical sorting and unambiguous referencing across the evidence chain.
Practical Code Examples
The following markdown snippets demonstrate the exact schema required for each stage. These can be generated automatically using the CLI helpers or written manually.
Evidence File Example (E-001.md)
### E-001
- title: Suspicious PowerShell command execution
- observed_at: 2026-08-24T14:32:00Z
- source_type: command
- source_ref: work/sample/commands.log
- content_hash: 3a7bd3e5f9c2c0e8b9d9a6c4a1b1e2f3d4c5e6f7a8b9c0d1e2f3a4b5c6d7e8f9
- artifact_path: work/sample/powershell-output.txt
- repro_command: |
powershell -NoProfile -ExecutionPolicy Bypass -File script.ps1
- raw_excerpt: |
Get-Process | Where-Object {$_.CPU -gt 1000}
- linked_workitem: WI-001
- supersedes: none
Finding File Example (F-001.md)
### F-001
- title: High‑CPU PowerShell process indicates possible crypto‑miner
- severity: high
- category: vuln
- status: validated
- evidence_ids: [E-001]
- location: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
- impact: Unauthorized CPU consumption and potential data exfiltration
- confidence: high
- repro_steps:
1. Run the command recorded in E-001
2. Observe CPU usage spike
- remediation: Investigate scheduled tasks and disable the suspicious script
- optional_attack: T1496
Path File Example (P-001.md)
### P-001
- title: Crypto‑miner deployment chain
- path_type: attack
- start: Initial user login
- goal: Persistent cryptomining on the host
- steps:
1. action: Execute PowerShell → evidence: E-001 → finding: F-001
2. action: Deploy miner binary → evidence: E-005 → finding: F-003
3. action: Establish persistence → evidence: E-009 → finding: F-007
- residual_risks: None
Create these assets programmatically using:
powershell -File skills/scripts/append-evidence.ps1 `
-CaseRoot work/<case> `
-Id E-001 `
-Title "Suspicious PowerShell command execution" `
-ReproCommand "powershell -NoProfile..." `
-Severity high `
-Status observed
Validation and Auditability
The skills/case-review/scripts/review_case.py script implements read-only audit logic that enforces the Evidence → Finding → Path contract. It performs three critical checks:
- Hash Integrity – Verifies
content_hashvalues against current file contents - Reference Validation – Ensures every
evidence_idsentry points to an existingE-file - Sufficiency Rules – Confirms high-severity findings do not rely solely on low-confidence evidence without documented residual risks
This validation layer prevents "silent" validation states where findings appear authoritative without proper evidentiary backing.
Summary
- The Evidence → Finding → Path chain structures all reverse-skill investigations into three immutable, linked asset types.
- Evidence (
E-*.md) provides tamper-evident raw observations with mandatory hashes and reproduction commands. - Findings (
F-*.md) require at least one evidence reference and enforce confidence thresholds viareview_case.py. - Paths (
P-*.md) sequence findings into attack chains, call flows, or CTF solutions while maintaining full traceability. - The
docs-generatormodule mandates inclusion of all three stages in final security reports. - CLI helpers in
skills/scripts/and validation logic inskills/case-review/automate creation and verification of the chain.
Frequently Asked Questions
What happens if a Finding references Evidence that has been superseded?
The supersedes field in Evidence files creates a forward chain without invalidating historical hashes. When review_case.py audits a case, it checks the supersedes lineage to ensure analysts review the correct evidence version. Findings should reference the most current non-superseded evidence ID unless documenting historical context.
How does reverse-skill enforce the Evidence → Finding → Path relationship?
Validation occurs at two levels. First, the markdown schema in skills/ops/evidence-finding-path.md defines mandatory fields. Second, skills/case-review/scripts/review_case.py performs runtime verification, checking that every evidence_ids array contains valid references and that high-severity findings possess sufficient evidentiary support before status can be set to validated.
Can Path files reference multiple Findings from the same Evidence?
Yes. The steps array in Path files supports many-to-many relationships. A single piece of evidence can support multiple findings (e.g., one log entry revealing both vulnerability and misconfiguration), and a single path can weave together findings derived from overlapping evidence sets. Each step explicitly links one evidence ID to one finding ID.
What is the difference between path_type attack and callflow?
The path_type field adapts the chain to domain-specific narratives. attack chains map adversary TTPs (Tactics, Techniques, and Procedures) for penetration testing reports. callflow documents reverse-engineered function call sequences. solve paths structure CTF write-ups. The docs-generator module applies different templates based on this type while maintaining the underlying Evidence → Finding → Path structure.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →