# linuteresa/hackerrank-orchestrate-october26 architecture

> Architecture diagram of the GitHub repository linuteresa/hackerrank-orchestrate-october26, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-11). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/linuteresa/hackerrank-orchestrate-october26
- Repository: https://github.com/linuteresa/hackerrank-orchestrate-october26

## Overview

This is a deterministic personal-data deletion auditor. A request is classified for deletion intent, then the audit resolves the subject and linked resources, ingests evidence, evaluates per-copy state and policy, and produces ordered findings, remediation, and verification steps. The main audit owns these stages; Claude is limited to intent classification and screenshot transcription, while code determines statuses. The graph follows README and source-index relationships; several parser and state internals were not excerpted, so their detailed runtime links are omitted.

Main entry points: [`code/audit.py`](https://github.com/linuteresa/hackerrank-orchestrate-october26/blob/main/code/audit.py) (Audit orchestrator), [`code/ingest/loader.py`](https://github.com/linuteresa/hackerrank-orchestrate-october26/blob/main/code/ingest/loader.py) (Evidence loader), [`code/core/model.py`](https://github.com/linuteresa/hackerrank-orchestrate-october26/blob/main/code/core/model.py) (Evidence records), [`code/main.py`](https://github.com/linuteresa/hackerrank-orchestrate-october26/blob/main/code/main.py) (Audit entry)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workflow["Audit workflow"]
  node_audit_cli["Audit entry<br/>[main.py]"]
  node_auditor["Audit orchestrator<br/>[audit.py]"]
end

subgraph group_evidence["Evidence ingestion"]
  node_requests["Requests and context<br/>[csv_inputs.py]"]
  node_loader["Evidence loader<br/>[loader.py]"]
  node_structured["Structured parsers<br/>[json_records.py]"]
  node_log_parser["Log evidence<br/>[logs.py]"]
  node_sql_parser["SQL snapshots<br/>[sql_snapshots.py]"]
  node_screenshot_parser["Screenshot facts<br/>[png_facts.py]"]
end

subgraph group_domain["Identity and state"]
  node_evidence_store[("Evidence store<br/>[store.py]")]
  node_typed_facts["Evidence records<br/>[model.py]"]
  node_identity["Identity resolution<br/>[identity.py]"]
  node_vocabulary["Domain vocabulary<br/>[vocab.py]"]
  node_categories["Category mapping<br/>[categories.py]"]
  node_copy_state["Per-copy state<br/>[resource_state.py]"]
end

subgraph group_decision["Decision and output"]
  node_policy["Deletion policy<br/>[policy.py]"]
  node_planner["Step ordering<br/>[planner.py]"]
  node_export["Validated output<br/>[main.py]"]
end

subgraph group_ai["Model assistance"]
  node_intent["Intent classifier<br/>[intent.py]"]
  node_vision["Screenshot transcription<br/>[vision.py]"]
  node_claude["Claude API and cache<br/>[llm.py]"]
end

node_requester(("Requester"))

node_requester -->|"submits request"| node_audit_cli
node_audit_cli -->|"runs audit"| node_auditor
node_audit_cli -->|"loads requests"| node_requests
node_auditor -->|"classifies intent"| node_intent
node_auditor -->|"loads evidence"| node_loader
node_auditor -->|"loads context"| node_requests
node_auditor -->|"resolves subject"| node_identity
node_auditor -->|"maps category"| node_categories
node_auditor -->|"evaluates copies"| node_copy_state
node_auditor -->|"applies rules"| node_policy
node_auditor -->|"orders steps"| node_planner
node_auditor -->|"returns audit result"| node_export
node_loader -->|"dispatches parsing"| node_structured
node_loader -->|"dispatches parsing"| node_log_parser
node_loader -->|"dispatches parsing"| node_sql_parser
node_loader -->|"dispatches parsing"| node_screenshot_parser
node_loader -->|"populates store"| node_evidence_store
node_structured -->|"creates facts"| node_typed_facts
node_log_parser -->|"creates facts"| node_typed_facts
node_sql_parser -->|"creates facts"| node_typed_facts
node_screenshot_parser -->|"creates facts"| node_typed_facts
node_identity -->|"uses identifiers"| node_vocabulary
node_categories -->|"uses mappings"| node_vocabulary
node_evidence_store -->|"stores records"| node_typed_facts
node_copy_state -->|"reads observations"| node_typed_facts
node_policy -->|"uses copy state"| node_copy_state
node_intent -->|"requests classification"| node_claude
node_screenshot_parser -.->|"requests transcription"| node_vision
node_vision -->|"uses model"| node_claude
node_audit_cli -->|"writes output"| node_export

click node_audit_cli "https://github.com/linuteresa/hackerrank-orchestrate-october26/blob/main/code/main.py"
click node_auditor "https://github.com/linuteresa/hackerrank-orchestrate-october26/blob/main/code/audit.py"
click node_requests "https://github.com/linuteresa/hackerrank-orchestrate-october26/blob/main/code/ingest/csv_inputs.py"
click node_loader "https://github.com/linuteresa/hackerrank-orchestrate-october26/blob/main/code/ingest/loader.py"
click node_structured "https://github.com/linuteresa/hackerrank-orchestrate-october26/blob/main/code/ingest/json_records.py"
click node_log_parser "https://github.com/linuteresa/hackerrank-orchestrate-october26/blob/main/code/ingest/logs.py"
click node_sql_parser "https://github.com/linuteresa/hackerrank-orchestrate-october26/blob/main/code/ingest/sql_snapshots.py"
click node_screenshot_parser "https://github.com/linuteresa/hackerrank-orchestrate-october26/blob/main/code/ingest/png_facts.py"
click node_evidence_store "https://github.com/linuteresa/hackerrank-orchestrate-october26/blob/main/code/core/store.py"
click node_typed_facts "https://github.com/linuteresa/hackerrank-orchestrate-october26/blob/main/code/core/model.py"
click node_identity "https://github.com/linuteresa/hackerrank-orchestrate-october26/blob/main/code/core/identity.py"
click node_vocabulary "https://github.com/linuteresa/hackerrank-orchestrate-october26/blob/main/code/core/vocab.py"
click node_categories "https://github.com/linuteresa/hackerrank-orchestrate-october26/blob/main/code/core/categories.py"
click node_copy_state "https://github.com/linuteresa/hackerrank-orchestrate-october26/blob/main/code/core/resource_state.py"
click node_policy "https://github.com/linuteresa/hackerrank-orchestrate-october26/blob/main/code/policy.py"
click node_planner "https://github.com/linuteresa/hackerrank-orchestrate-october26/blob/main/code/planner.py"
click node_export "https://github.com/linuteresa/hackerrank-orchestrate-october26/blob/main/code/main.py"
click node_intent "https://github.com/linuteresa/hackerrank-orchestrate-october26/blob/main/code/agent/intent.py"
click node_vision "https://github.com/linuteresa/hackerrank-orchestrate-october26/blob/main/code/agent/vision.py"
click node_claude "https://github.com/linuteresa/hackerrank-orchestrate-october26/blob/main/code/agent/llm.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_audit_cli,node_auditor toneBlue
class node_requests,node_loader,node_structured,node_log_parser,node_sql_parser,node_screenshot_parser toneAmber
class node_evidence_store,node_typed_facts,node_identity,node_vocabulary,node_categories,node_copy_state,node_requester toneMint
class node_policy,node_planner,node_export toneRose
class node_intent,node_vision,node_claude toneIndigo
```

## Components

### Audit workflow

- [Audit entry](https://github.com/linuteresa/hackerrank-orchestrate-october26/blob/main/code/main.py): `code/main.py`
- [Audit orchestrator](https://github.com/linuteresa/hackerrank-orchestrate-october26/blob/main/code/audit.py): `code/audit.py`

### Evidence ingestion

- [Requests and context](https://github.com/linuteresa/hackerrank-orchestrate-october26/blob/main/code/ingest/csv_inputs.py): `code/ingest/csv_inputs.py`
- [Evidence loader](https://github.com/linuteresa/hackerrank-orchestrate-october26/blob/main/code/ingest/loader.py): `code/ingest/loader.py`
- [Structured parsers](https://github.com/linuteresa/hackerrank-orchestrate-october26/blob/main/code/ingest/json_records.py): `code/ingest/json_records.py`
- [Log evidence](https://github.com/linuteresa/hackerrank-orchestrate-october26/blob/main/code/ingest/logs.py): `code/ingest/logs.py`
- [SQL snapshots](https://github.com/linuteresa/hackerrank-orchestrate-october26/blob/main/code/ingest/sql_snapshots.py): `code/ingest/sql_snapshots.py`
- [Screenshot facts](https://github.com/linuteresa/hackerrank-orchestrate-october26/blob/main/code/ingest/png_facts.py): `code/ingest/png_facts.py`

### Identity and state

- [Evidence store](https://github.com/linuteresa/hackerrank-orchestrate-october26/blob/main/code/core/store.py): `code/core/store.py`
- [Evidence records](https://github.com/linuteresa/hackerrank-orchestrate-october26/blob/main/code/core/model.py): `code/core/model.py`
- [Identity resolution](https://github.com/linuteresa/hackerrank-orchestrate-october26/blob/main/code/core/identity.py): `code/core/identity.py`
- [Domain vocabulary](https://github.com/linuteresa/hackerrank-orchestrate-october26/blob/main/code/core/vocab.py): `code/core/vocab.py`
- [Category mapping](https://github.com/linuteresa/hackerrank-orchestrate-october26/blob/main/code/core/categories.py): `code/core/categories.py`
- [Per-copy state](https://github.com/linuteresa/hackerrank-orchestrate-october26/blob/main/code/core/resource_state.py): `code/core/resource_state.py`

### Decision and output

- [Deletion policy](https://github.com/linuteresa/hackerrank-orchestrate-october26/blob/main/code/policy.py): `code/policy.py`
- [Step ordering](https://github.com/linuteresa/hackerrank-orchestrate-october26/blob/main/code/planner.py): `code/planner.py`
- [Validated output](https://github.com/linuteresa/hackerrank-orchestrate-october26/blob/main/code/main.py): `code/main.py`

### Model assistance

- [Intent classifier](https://github.com/linuteresa/hackerrank-orchestrate-october26/blob/main/code/agent/intent.py): `code/agent/intent.py`
- [Screenshot transcription](https://github.com/linuteresa/hackerrank-orchestrate-october26/blob/main/code/agent/vision.py): `code/agent/vision.py`
- [Claude API and cache](https://github.com/linuteresa/hackerrank-orchestrate-october26/blob/main/code/agent/llm.py): `code/agent/llm.py`

### Other components

- **Requester**

## Connections

- Requester → Audit entry: submits request (evidence: `README.md`)
- Audit entry → Audit orchestrator: runs audit (evidence: `code/main.py`)
- Audit entry → Requests and context: loads requests (evidence: `code/main.py`)
- Audit orchestrator → Intent classifier: classifies intent (evidence: `code/audit.py`)
- Audit orchestrator → Evidence loader: loads evidence (evidence: `code/audit.py`)
- Audit orchestrator → Requests and context: loads context (evidence: `code/audit.py`)
- Audit orchestrator → Identity resolution: resolves subject (evidence: `code/audit.py`)
- Audit orchestrator → Category mapping: maps category (evidence: `code/audit.py`)
- Audit orchestrator → Per-copy state: evaluates copies (evidence: `code/audit.py`)
- Audit orchestrator → Deletion policy: applies rules (evidence: `code/audit.py`)
- Audit orchestrator → Step ordering: orders steps (evidence: `README.md`)
- Audit orchestrator → Validated output: returns audit result (evidence: `code/main.py`)
- Evidence loader → Structured parsers: dispatches parsing (evidence: `code/ingest/loader.py`)
- Evidence loader → Log evidence: dispatches parsing (evidence: `code/ingest/loader.py`)
- Evidence loader → SQL snapshots: dispatches parsing (evidence: `code/ingest/loader.py`)
- Evidence loader → Screenshot facts: dispatches parsing (evidence: `code/ingest/loader.py`)
- Evidence loader → Evidence store: populates store (evidence: `code/ingest/loader.py`)
- Structured parsers → Evidence records: creates facts (evidence: `code/ingest/json_records.py`)
- Log evidence → Evidence records: creates facts (evidence: `code/ingest/logs.py`)
- SQL snapshots → Evidence records: creates facts (evidence: `code/ingest/sql_snapshots.py`)
- Screenshot facts → Evidence records: creates facts (evidence: `code/ingest/png_facts.py`)
- Identity resolution → Domain vocabulary: uses identifiers (evidence: `code/core/identity.py`)
- Category mapping → Domain vocabulary: uses mappings (evidence: `code/core/categories.py`)
- Evidence store → Evidence records: stores records (evidence: `code/core/store.py`)
- Per-copy state → Evidence records: reads observations (evidence: `code/core/resource_state.py`)
- Deletion policy → Per-copy state: uses copy state (evidence: `code/policy.py`)
- Intent classifier → Claude API and cache: requests classification (evidence: `code/agent/intent.py`)
- Screenshot facts → Screenshot transcription: requests transcription (evidence: `code/ingest/loader.py`)
- Screenshot transcription → Claude API and cache: uses model (evidence: `code/agent/vision.py`)
- Audit entry → Validated output: writes output (evidence: `README.md`)
