# starlinetor/cybersecurity_class_2026 architecture

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

- Interactive diagram: https://gitdiagram.com/starlinetor/cybersecurity_class_2026
- Repository: https://github.com/starlinetor/cybersecurity_class_2026

## Overview

1. This repository is really two separate workspaces:
   - a LaTeX-based research/reporting workspace under `ResearchReport` and `Research_essay_template_EasyChair`
   - a Python authorization project under `topic-a-authorization/topic-a-authorization`

2. The LaTeX side is a document-production pipeline, not an application runtime.  
   The important source files are `ResearchReport/main.tex` and `Research_essay_template_EasyChair/EasyChair3.5/easychair.tex`, with bibliographies in `.bib` files and the compiled PDFs/logs as build outputs. These folders are oriented around writing, compiling, and packaging a research paper on “Network Encryption and Traffic Analysis.”

3. The LaTeX subsystem has a clear source-to-artifact flow:
   manuscript `.tex` + bibliography `.bib` + template class/files → compiled `.pdf` and intermediate build products (`.aux`, `.bbl`, `.log`, `.synctex.gz`, etc.).  
   Those generated files are present in the repo, so an architecture diagram should show them as outputs of a documentation build step, not as inputs to the software system.

4. The `topic-a-authorization` project is the actual executable software in the repo.  
   It is a standalone Python 3 authorization engine that consumes JSON datasets describing subjects, resources, policies, and requests, then produces an authorization decision output in JSON.

5. The runtime entrypoint is `topic-a-authorization/main.py`.  
   This is the top-level orchestrator: it likely wires together input loading, policy evaluation, and output writing. The architecture should treat it as the single command-line entrypoint rather than a service with multiple deployable components.

6. Input data is partitioned into four domain files in `input/`:
   - `subjects.json`
   - `resources.json`
   - `policies.json`
   - `requests.json`  
   This separation suggests a rule-evaluation model where identities, protected assets, and access requests are loaded independently and then matched by the engine.

7. The core logic is in `src/engine.py`.  
   That module is the authorization decision boundary: it should be depicted as the subsystem that evaluates requests against policies using the loaded subject/resource data. The repo structure implies that this is the only part containing domain logic, while the other modules are support utilities.

8. `src/loader.py` is the input boundary.  
   Its role is to read and normalize the JSON files from the `input/` directory so the engine can work with in-memory Python objects. In the diagram, this sits between filesystem data and the decision engine.

9. `src/verify_json.py` is a validation/checking utility.  
   It likely ensures the generated or test JSON conforms to expected structure before use or before comparison. This makes it part of the quality/control boundary rather than the authorization logic itself.

10. `output/output.json` is the produced artifact of the authorization run.  
    The repo also contains `test_input/` and `test_output/`, which indicate a file-based test harness: known inputs are run through the engine and compared with an expected JSON result. That makes the system easy to diagram as a deterministic batch processor.

11. `src/tests.py` is the test layer for the Python project.  
    It appears to exercise the engine against the bundled test fixtures, so tests are local and offline; there is no evidence of external APIs, databases, or network dependencies in the architecture.

12. At a high level, the important architectural boundary is file-based data processing:
    JSON inputs → loader/validation → authorization engine → JSON output, with tests using parallel fixture directories to verify behavior.  
    The LaTeX materials are independent of that runtime and should be shown as a separate documentation/reporting subsystem.

Main entry points: [`topic-a-authorization/topic-a-authorization/src/engine.py`](https://github.com/starlinetor/cybersecurity_class_2026/blob/main/topic-a-authorization/topic-a-authorization/src/engine.py) (Engine), [`topic-a-authorization/topic-a-authorization/src/tests.py`](https://github.com/starlinetor/cybersecurity_class_2026/blob/main/topic-a-authorization/topic-a-authorization/src/tests.py) (Tests), [`ResearchReport/main.tex`](https://github.com/starlinetor/cybersecurity_class_2026/blob/main/ResearchReport/main.tex) (Main paper), [`Research_essay_template_EasyChair/EasyChair3.5/easychair.tex`](https://github.com/starlinetor/cybersecurity_class_2026/blob/main/Research_essay_template_EasyChair/EasyChair3.5/easychair.tex) (Essay draft)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_docs["LaTeX workspace"]
  node_research_main_tex["Main paper<br/>LaTeX source<br/>[main.tex]"]
  node_research_bib1["Report refs<br/>bibliography"]
  node_research_bib2["Paper refs<br/>bibliography"]
  node_research_pdf["Report PDF<br/>compiled artifact<br/>[main.pdf]"]
  node_easychair_tex["Essay draft<br/>LaTeX source<br/>[easychair.tex]"]
  node_easychair_cls["Template class<br/>LaTeX class<br/>[easychair.cls]"]
  node_easychair_bib["Essay refs<br/>bibliography<br/>[easychair.bib]"]
  node_easychair_pdf["Essay PDF<br/>compiled artifact<br/>[easychair.pdf]"]
end

subgraph group_auth["Authorization engine"]
  node_auth_main["Entry point<br/>Python CLI<br/>[main.py]"]
  node_auth_input[("Input data<br/>JSON bundle")]
  node_auth_loader["Loader<br/>ingest layer<br/>[loader.py]"]
  node_auth_engine{{"Engine<br/>decision core<br/>[engine.py]"}}
  node_auth_verify["Verifier<br/>validation utility<br/>[verify_json.py]"]
  node_auth_output["Result JSON<br/>output artifact<br/>[output.json]"]
  node_auth_tests["Tests<br/>test harness<br/>[tests.py]"]
  node_auth_test_input[("Test inputs<br/>fixture bundle")]
  node_auth_test_output["Expected JSON<br/>fixture artifact<br/>[test_output.json]"]
end

node_research_main_tex -->|"cites"| node_research_bib1
node_research_main_tex -->|"cites"| node_research_bib2
node_research_main_tex -->|"compiles to"| node_research_pdf
node_easychair_tex -->|"uses"| node_easychair_cls
node_easychair_tex -->|"cites"| node_easychair_bib
node_easychair_tex -->|"compiles to"| node_easychair_pdf
node_auth_main -->|"loads via"| node_auth_loader
node_auth_main -->|"evaluates via"| node_auth_engine
node_auth_main -->|"validates via"| node_auth_verify
node_auth_loader -->|"reads"| node_auth_input
node_auth_loader -->|"prepares data for"| node_auth_engine
node_auth_engine -->|"writes"| node_auth_output
node_auth_engine -.->|"checked by"| node_auth_verify
node_auth_tests -->|"exercises"| node_auth_engine
node_auth_tests -->|"loads"| node_auth_test_input
node_auth_tests -->|"compares against"| node_auth_test_output
node_auth_tests -.->|"uses"| node_auth_verify

click node_research_main_tex "https://github.com/starlinetor/cybersecurity_class_2026/blob/main/ResearchReport/main.tex"
click node_research_bib1 "https://github.com/starlinetor/cybersecurity_class_2026/blob/main/ResearchReport/applsci-v12-i01_20260511.bib"
click node_research_bib2 "https://github.com/starlinetor/cybersecurity_class_2026/blob/main/ResearchReport/pericles_1099119025.bib"
click node_research_pdf "https://github.com/starlinetor/cybersecurity_class_2026/blob/main/ResearchReport/main.pdf"
click node_easychair_tex "https://github.com/starlinetor/cybersecurity_class_2026/blob/main/Research_essay_template_EasyChair/EasyChair3.5/easychair.tex"
click node_easychair_cls "https://github.com/starlinetor/cybersecurity_class_2026/blob/main/Research_essay_template_EasyChair/EasyChair3.5/easychair.cls"
click node_easychair_bib "https://github.com/starlinetor/cybersecurity_class_2026/blob/main/Research_essay_template_EasyChair/EasyChair3.5/easychair.bib"
click node_easychair_pdf "https://github.com/starlinetor/cybersecurity_class_2026/blob/main/Research_essay_template_EasyChair/EasyChair3.5/easychair.pdf"
click node_auth_main "https://github.com/starlinetor/cybersecurity_class_2026/blob/main/topic-a-authorization/topic-a-authorization/main.py"
click node_auth_input "https://github.com/starlinetor/cybersecurity_class_2026/tree/main/topic-a-authorization/topic-a-authorization/input"
click node_auth_loader "https://github.com/starlinetor/cybersecurity_class_2026/blob/main/topic-a-authorization/topic-a-authorization/src/loader.py"
click node_auth_engine "https://github.com/starlinetor/cybersecurity_class_2026/blob/main/topic-a-authorization/topic-a-authorization/src/engine.py"
click node_auth_verify "https://github.com/starlinetor/cybersecurity_class_2026/blob/main/topic-a-authorization/topic-a-authorization/src/verify_json.py"
click node_auth_output "https://github.com/starlinetor/cybersecurity_class_2026/blob/main/topic-a-authorization/topic-a-authorization/output/output.json"
click node_auth_tests "https://github.com/starlinetor/cybersecurity_class_2026/blob/main/topic-a-authorization/topic-a-authorization/src/tests.py"
click node_auth_test_input "https://github.com/starlinetor/cybersecurity_class_2026/tree/main/topic-a-authorization/topic-a-authorization/test_input"
click node_auth_test_output "https://github.com/starlinetor/cybersecurity_class_2026/blob/main/topic-a-authorization/topic-a-authorization/test_output/test_output.json"

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_research_main_tex,node_research_bib1,node_research_bib2,node_research_pdf,node_easychair_tex,node_easychair_cls,node_easychair_bib,node_easychair_pdf toneBlue
class node_auth_main,node_auth_input,node_auth_loader,node_auth_engine,node_auth_verify,node_auth_output,node_auth_tests,node_auth_test_input,node_auth_test_output toneAmber
```

## Components

### LaTeX workspace

Document-production pipeline for research/report writing and PDF compilation.

- [Main paper](https://github.com/starlinetor/cybersecurity_class_2026/blob/main/ResearchReport/main.tex): LaTeX source · Primary manuscript for the research report. · `ResearchReport/main.tex`
- [Report refs](https://github.com/starlinetor/cybersecurity_class_2026/blob/main/ResearchReport/applsci-v12-i01_20260511.bib): bibliography · Bibliography file used by the main report build. · `ResearchReport/applsci-v12-i01_20260511.bib`
- [Paper refs](https://github.com/starlinetor/cybersecurity_class_2026/blob/main/ResearchReport/pericles_1099119025.bib): bibliography · Additional bibliography file used by the report. · `ResearchReport/pericles_1099119025.bib`
- [Report PDF](https://github.com/starlinetor/cybersecurity_class_2026/blob/main/ResearchReport/main.pdf): compiled artifact · Compiled output of the LaTeX report build. · `ResearchReport/main.pdf`
- [Essay draft](https://github.com/starlinetor/cybersecurity_class_2026/blob/main/Research_essay_template_EasyChair/EasyChair3.5/easychair.tex): LaTeX source · EasyChair-based essay manuscript. · `Research_essay_template_EasyChair/EasyChair3.5/easychair.tex`
- [Template class](https://github.com/starlinetor/cybersecurity_class_2026/blob/main/Research_essay_template_EasyChair/EasyChair3.5/easychair.cls): LaTeX class · Template class file defining the essay formatting. · `Research_essay_template_EasyChair/EasyChair3.5/easychair.cls`
- [Essay refs](https://github.com/starlinetor/cybersecurity_class_2026/blob/main/Research_essay_template_EasyChair/EasyChair3.5/easychair.bib): bibliography · Bibliography for the EasyChair essay build. · `Research_essay_template_EasyChair/EasyChair3.5/easychair.bib`
- [Essay PDF](https://github.com/starlinetor/cybersecurity_class_2026/blob/main/Research_essay_template_EasyChair/EasyChair3.5/easychair.pdf): compiled artifact · Compiled output of the EasyChair document build. · `Research_essay_template_EasyChair/EasyChair3.5/easychair.pdf`

### Authorization engine

Python batch processor that loads JSON inputs, evaluates policies, and writes authorization results.

- [Entry point](https://github.com/starlinetor/cybersecurity_class_2026/blob/main/topic-a-authorization/topic-a-authorization/main.py): Python CLI · Top-level orchestrator for authorization runs. · `topic-a-authorization/topic-a-authorization/main.py`
- [Input data](https://github.com/starlinetor/cybersecurity_class_2026/tree/main/topic-a-authorization/topic-a-authorization/input): JSON bundle · Domain inputs for subjects, resources, policies, and requests. · `topic-a-authorization/topic-a-authorization/input`
- [Loader](https://github.com/starlinetor/cybersecurity_class_2026/blob/main/topic-a-authorization/topic-a-authorization/src/loader.py): ingest layer · Reads and normalizes JSON input files for the engine. · `topic-a-authorization/topic-a-authorization/src/loader.py`
- [Engine](https://github.com/starlinetor/cybersecurity_class_2026/blob/main/topic-a-authorization/topic-a-authorization/src/engine.py): decision core · Evaluates requests against policies to produce authorization decisions. · `topic-a-authorization/topic-a-authorization/src/engine.py`
- [Verifier](https://github.com/starlinetor/cybersecurity_class_2026/blob/main/topic-a-authorization/topic-a-authorization/src/verify_json.py): validation utility · Checks JSON structure or generated artifacts for correctness. · `topic-a-authorization/topic-a-authorization/src/verify_json.py`
- [Result JSON](https://github.com/starlinetor/cybersecurity_class_2026/blob/main/topic-a-authorization/topic-a-authorization/output/output.json): output artifact · Produced authorization decision output. · `topic-a-authorization/topic-a-authorization/output/output.json`
- [Tests](https://github.com/starlinetor/cybersecurity_class_2026/blob/main/topic-a-authorization/topic-a-authorization/src/tests.py): test harness · Local tests for the authorization workflow. · `topic-a-authorization/topic-a-authorization/src/tests.py`
- [Test inputs](https://github.com/starlinetor/cybersecurity_class_2026/tree/main/topic-a-authorization/topic-a-authorization/test_input): fixture bundle · Fixture inputs used by the test harness. · `topic-a-authorization/topic-a-authorization/test_input`
- [Expected JSON](https://github.com/starlinetor/cybersecurity_class_2026/blob/main/topic-a-authorization/topic-a-authorization/test_output/test_output.json): fixture artifact · Expected output used for comparison in tests. · `topic-a-authorization/topic-a-authorization/test_output/test_output.json`

## Connections

- Main paper → Report refs: cites · Main report uses bibliography data.
- Main paper → Paper refs: cites · Main report uses bibliography data.
- Main paper → Report PDF: compiles to · LaTeX source is compiled into the report PDF.
- Essay draft → Template class: uses · Essay manuscript depends on the template class.
- Essay draft → Essay refs: cites · Essay manuscript uses bibliography data.
- Essay draft → Essay PDF: compiles to · Template manuscript is compiled into a PDF artifact.
- Entry point → Loader: loads via · Entry point delegates input ingestion to the loader.
- Entry point → Engine: evaluates via · Entry point invokes the authorization decision core.
- Entry point → Verifier: validates via · Entry point can call validation helpers.
- Loader → Input data: reads · Loader reads the domain JSON input bundle.
- Loader → Engine: prepares data for · Normalized inputs are passed to the engine.
- Engine → Result JSON: writes · Engine produces the authorization result artifact.
- Engine → Verifier: checked by · Generated or intermediate JSON can be verified.
- Tests → Engine: exercises · Tests target the decision core.
- Tests → Test inputs: loads · Tests consume fixture inputs.
- Tests → Expected JSON: compares against · Tests compare results to expected JSON.
- Tests → Verifier: uses · Tests can use validation helpers.
