# Business rules — paymyfines-worker

Evidence date: 2026-10-07.

Source: `git@bitbucket.org:overdrive/paymyfines-worker.git`, `master` at `a8ba8cf` (2021-06-08).

No domain rule is documented in this repository, and no application enforces one. Rules below are either absent, or they are file-level facts that must not be promoted into product policy.

Pay My Fines rules that appear in `pmf-backend-ah` or `pmf-frontend-ah` are not rules of this repository. This tree does not cite those projects.

## Domain behaviour

None. There is no fine, payment, notice, identity number, fee, receipt, or settlement logic in the committed files.

**Unknown / Requires Confirmation:** whether this repository was supposed to own any Pay My Fines rule. The name is the only clue, and the name is not a rule.

## Validation

No input validation exists. There is no form, request parser, or schema.

## Permissions and access

No application role, login, or authorisation check exists.

Git history shows both commits authored by Jaco Brits (`jaco@overdrive.co.za`). That is authorship metadata, not an access-control rule.

Who may use a future worker, and who may administer it, is **Unknown**.

## Workflows

No business workflow is implemented. See `prd.md` OBS-004.

## Rules that are not business rules

### BR-OBS-001 — Git ignore patterns are a stock example list

**Inferred** that the file was not written for this product: the header says the patterns are examples to customize, the commit message is "Initial commit", and the second commit left the file unchanged.

Patterns present in `.gitignore`:

| Pattern | Header context in the same file |
|---|---|
| `node_modules/`, `dist/` | "Node artifact files" (`dist/` is repeated under "Maven") |
| `*.class` | "Compiled Java class files" |
| `*.py[cod]` | "Compiled Python bytecode" |
| `*.log` | "Log files" |
| `*.jar` | "Package files" |
| `target/`, `dist/` | "Maven" |
| `.idea/` | "JetBrains IDE" |
| `TEST*.xml` | "Unit test reports" |
| `.DS_Store` | "Generated by MacOS" |
| `Thumbs.db` | "Generated by Windows" |
| `*.app`, `*.exe`, `*.war` | "Applications" |
| `*.mp4`, `*.tiff`, `*.avi`, `*.flv`, `*.mov`, `*.wmv` | "Large media files" |

**Not a business rule.** Presence of a pattern does not mean the product is a Node, Java, Python, Maven, or desktop application. No source of those kinds is committed.

The file does not ignore `.vs/`. **Implemented** consequence: Visual Studio workspace files were committed in `a8ba8cf`.

### BR-OBS-002 — No project was selected in the committed workspace

**Implemented** values, not policies:

- `CurrentProjectSetting` is `null` (`.vs/ProjectSettings.json`).
- `CurrentStartupProject` is `null`, and the startup-project list is empty (sqlite setting `ProjectConfigurationService`).
- `PreviewInSolutionExplorer` is `false`, and the only expanded node is an empty string (`.vs/VSWorkspaceState.json`).

These record IDE state. They do not constrain a product.

## Edge cases

No application edge case is implemented. There is no invalid-input path, duplicate-action path, retry, timeout, empty state, or partial failure, because there is no action.

The repository-level edge case that is visible: files the ignore list does not name, including `.vs/`, are eligible to be committed. That happened once, on 2021-06-08.

## Conflicts

No conflict between a written business rule and the code, because there is no written rule and no application code.

The open discrepancy is documentary, not behavioural: a 2026-09-28 scan-host listing names `sonar-project.properties` and `sonarqube_scan.bat`, and git at `a8ba8cf` does not contain them. Until those files are read, they supply no rule. **Unknown / Requires Confirmation.**
