# PRD — paymyfines-worker

Evidence date: 2026-10-07.

Source: `git@bitbucket.org:overdrive/paymyfines-worker.git`, `master` at `a8ba8cf` (2021-06-08, "first commit"). `origin/HEAD` points at that commit. The only branch is `master`.

There is no prior PRD in the source repository or in Silicon Ark. Nothing in the tree is a requirements document. Provenance is labelled on each statement.

The scan-host checkout named on the onboarding issue was not available. Findings are from the git revision above, which is the commit the issue names.

## Product purpose

**Unknown.** The committed tree does not say what this repository is for.

The name `paymyfines-worker` is the only hint. **Inferred from the name only:** a worker associated with Pay My Fines. No file states that.

Silicon Ark documents `pmf-backend-ah` and `pmf-frontend-ah` as Pay My Fines systems. This repository does not refer to them, and those documents do not refer to this repository. A shared product is **Unknown / Requires Confirmation**.

## Users and interactions

No user, role, screen, API client, or operator is defined.

| Actor | Evidence | Status |
|---|---|---|
| Repository author | Both commits are Jaco Brits, `jaco@overdrive.co.za` | **Implemented** as git metadata. Not an application role |
| Visual Studio user on 2021-06-08 | `.vs/` workspace index, empty project configuration | **Inferred** from the committed IDE cache. No application user |
| End user, staff, payer, or operator | No source, route, or copy | **Absent** |

## Product behaviour

There is no runnable system in this repository.

Verified absences at `a8ba8cf`:

- No source file in any application language.
- No solution or project file (`.sln`, `.csproj`, or otherwise).
- No test.
- No HTTP route, CLI command, queue consumer, or scheduled job.
- No README describing behaviour.

The Visual Studio index agrees. On 2021-06-08 it had indexed only `.gitignore`, `.vs`, `.vs\ProjectSettings.json`, and `.vs\VSWorkspaceState.json`. `SymbolDefinition` has 0 rows. `StartupProjectFiles` is empty and `CurrentStartupProject` is `null`.

## Requirements recovered from the tree

No functional requirement is written down, and none is implemented as application behaviour. The observations below are what a later reader can check. They are not proposed product rules.

### OBS-001 — Repository contains no application

**Implemented.** `git ls-tree -r a8ba8cf` returns four paths: `.gitignore`, `.vs/ProjectSettings.json`, `.vs/VSWorkspaceState.json`, `.vs/slnx.sqlite`.

There is nothing to build, start, or call.

Confidence: High.

### OBS-002 — Workspace was opened with no project loaded

**Implemented** in `.vs/ProjectSettings.json`: `CurrentProjectSetting` is `null`.

**Implemented** in the `ProjectConfigurationService` setting inside `.vs/slnx.sqlite`:

- `ProjectBuildConfigurations` is `[]`
- `StartupProjectFiles` is `[]`
- `CurrentStartupProject` is `null`

**Inferred:** Visual Studio was pointed at the folder and no project was selected.

Confidence: High for the stored values. The inference that a person opened the folder is High.

### OBS-003 — Ignore list is an unmodified example template

**Implemented.** `.gitignore` begins "These are some examples of commonly ignored file patterns" and "You should customize this list as applicable to your project", and links to `https://www.atlassian.com/git/tutorials/saving-changes/gitignore`.

The patterns cover Node artefacts, Java class files, Python bytecode, logs, jars, Maven `target/`, JetBrains `.idea/`, JUnit-style `TEST*.xml`, `.DS_Store`, `Thumbs.db`, `*.app`, `*.exe`, `*.war`, and several video and TIFF extensions. `dist/` is listed twice.

**Inferred:** this is the ignore file Bitbucket added on repository creation. The commit subject is "Initial commit" and the file was the only file in `44de6f7`. The header tells the reader to customize it. It was not customized: the second commit did not change it.

It does not ignore `.vs/`. That is why the Visual Studio folder could be committed.

These patterns are not evidence of a Node, Java, Python, or Maven application. No matching source exists.

Confidence: High.

### OBS-004 — No product workflow exists

**Implemented** as an absence. There is no controller, handler, job, script, or documented procedure that accepts an input and produces an output.

Confidence: High.

## Workflows

None.

A reader who needs Pay My Fines payment, lookup, or settlement behaviour will not find it here. Those behaviours are outside this repository. Whether they belong in another repository is **Unknown / Requires Confirmation**.

## Integrations

None in this repository.

No HTTP client, SDK, webhook, database driver, queue, mailer, or cloud template is committed.

## Data

The repository manages no product data.

`.vs/slnx.sqlite` is an IDE index (schema `1.3.5`, setting `CreatedOrUpdated` = `06/08/2021 07:50:49`). It stores file observations and empty symbol, provider, scanner-cache, and reference tables. It is not an application database. File names inside it are `.gitignore`, `.vs`, `ProjectSettings.json`, and `VSWorkspaceState.json`.

No personal data and no credential were found in the text files. The sqlite file was not treated as a secret store; its settings are IDE state and are empty of connection strings.

## Constraints

No product constraint, validation rule, permission model, or environment rule is implemented.

The ignore list constrains what Git would skip if those files were created later. See OBS-003. It is repository hygiene from a template, not a business constraint.

## Error conditions

No application error handling exists, because there is no application.

## Discrepancy — files named at discovery, absent from git

The 2026-09-28 discovery listing names `sonar-project.properties` and `sonarqube_scan.bat` at the top of the scan-host tree. They are not in `a8ba8cf`, and the 2021 Visual Studio index does not list them.

**Unknown / Requires Confirmation.** Their contents were not read. They must not be treated as implemented behaviour until someone opens the scan-host tree or commits the files.

## What would count as a requirement later

If a worker is added, this PRD does not yet say what it should do. A product owner needs to confirm purpose, trigger, inputs, and the system it talks to before requirements can be written. Inventing those from the repository name would be a product decision, and this document does not make one.
