# Project plan — email_campaigner

Evidence date: 2026-10-15.

Source repository: `git@bitbucket.org:overdrive/email_campaigner.git`.

Inspected revision: `main` at `1f31d32` (2026-04-15, Jaco Brits, "Initial commit"). Full hash `1f31d32e0fc70fd1326e40f220a6202b008ad8c3`. That commit is `origin/HEAD`. The remote has no other branches and no tags.

The scan-host path `~/projects/sonar_scan/repos/email_campaigner` was not on this machine. The tree below was read from that git revision. A shallow clone was then unshallowed; the commit count stayed at 1, and the commit object has no parent.

This plan describes what the repository contains. It does not decide what the product should become.

No `silicon_ark/email_campaigner/` directory existed before this file. A search of Silicon Ark Markdown for `email_campaigner` found no earlier mention of this slug.

## Product

There is no application, README, or product statement in git. The only tracked file is `.gitignore`.

History has one commit:

| Commit | Date | Author | What it did |
|---|---|---|---|
| `1f31d32` | 2026-04-15 06:28:33 +0000 | Jaco Brits `<jaco@overdrive.co.za>` | Initial commit. Added a 50-line `.gitignore`. The header says the patterns are examples to customize and links to Atlassian's gitignore tutorial |

The committer is the same person, at the same timestamp. The file does not mention campaigns, lists, templates, SMTP, or mail. It is not a description of an email campaign product.

The names in evidence are the Bitbucket slug `email_campaigner` and the scan-host directory of the same name. A slug is not a requirements statement.

What the product is, who it is for, and whether any code was meant to be pushed later are **Unknown / Requires Confirmation**.

## Branch reality

| Line | Tip | Date | What it is |
|---|---|---|---|
| `main` (default; `origin/HEAD`) | `1f31d32` | 2026-04-15 | Only branch. One commit |

`git rev-list --all --count` is 1. `git tag -l` printed nothing. `git ls-tree -r HEAD` lists `.gitignore` only. `git cat-file -p HEAD` has no parent line.

The onboarding issue (OVER-108, captured 2026-09-28) recorded the same tip: `1f31d32`, 2026-04-15 06:28:33 +0000, "Initial commit", branch `main`. This clone agrees on that commit. It does not agree on the file listing. See [Discrepancy with the onboarding scan](#discrepancy-with-the-onboarding-scan).

## Objectives

No project plan, issue list, or README exists in the repository. No objective can be inferred from application code, because there is no application code.

The commit creates a repository and adds an example ignore list. That is repository setup. It is not a written objective.

**Unknown / Requires Confirmation** whether this repository was created as a placeholder for a future email campaign tool, or as a repository that was never filled in.

## Scope

### In scope of `main`

1. A Git repository on Bitbucket whose only tracked file is `.gitignore`.
2. The ignore patterns in that file at `1f31d32`. They are the example groups in the file's own comments: Node artifacts, Java class files, Python bytecode, logs, jar files, Maven output, JetBrains IDE files, unit-test reports, macOS and Windows junk, application binaries, and large media files. Those paths are not present in the tree. See `technical-documentation.md`.

### Out of scope / not in this repository

- An email campaign, mailing list, template, subscriber, or delivery application.
- Any file other than `.gitignore`.
- A language or framework project. The ignore list names Node, Java, Python, and Maven paths together because the example template lists them together. None of those projects are in git.
- The contents of `sonar-project.properties`. That name was reported by the 2026-09-28 scan. It is not in git, `.gitignore` does not match that name, and the scan-host path could not be opened here.

## System shape

No system is implemented.

```text
bitbucket.org/overdrive/email_campaigner
└── .gitignore    (50 lines at 1f31d32)
```

There is no frontend, backend, database, API, worker, mail transport, or deployment manifest in the remote.

## Major components

None. **Implemented** application-component count is zero.

The tracked `.gitignore` is repository metadata, not a product component.

## Milestones visible in git

| When | Commit | What landed |
|---|---|---|
| 2026-04-15 | `1f31d32` | Initial commit: example `.gitignore` only |

No later milestone exists in git. The tip is unchanged from the date OVER-108 recorded.

## Implementation plan

There is no forward plan in the repository. Current status: **one commit, ignore file only, no application**.

Whether anyone intends to push code here is **Unknown / Requires Confirmation**.

## Known dependencies

None declared. There is no `composer.json`, `package.json`, `requirements.txt`, `pom.xml`, `Dockerfile`, `bitbucket-pipelines.yml`, or lockfile.

`.gitignore` names `node_modules/`, `target/`, and `*.jar`. Those paths are not in the tree. Listing them in an ignore file is not a dependency declaration. Node, Java, Python, and Maven are **not installed** by this repository.

## Discrepancy with the onboarding scan

OVER-108 lists this top-level structure for the scan-host path:

```text
sonar-project.properties
```

That path is not in the Bitbucket repository at `1f31d32`, and it is not in the commit diff. `.gitignore` does not ignore that filename, so Git would have shown it if it had been tracked. The same filename appears in the onboarding notes for other repositories whose git trees do not contain it (for example `storefront`, `wiki`, `website`, and `tournaments.footprintapp.net`). Whether it is an untracked SonarQube wrapper file added on the scan host, rather than project source, is **Inferred** from that repeated pattern. It is **Unknown / Requires Confirmation** until someone opens the scan-host directory and reads the file.

The scan also did not list `.gitignore`, which is the only file in git.

## Human confirmation

- Is this repository supposed to hold a product, or should it stay as the April 2026 ignore-file commit?
- If a product was intended, what is its purpose, and where does the code live if not here?
- Whether the Sonar filename on the scan host is a project file, and what it contains.
- Who is allowed to push to the Bitbucket repository. The Bitbucket API client returned HTTP 401 on 2026-10-15, so project settings were not read.
