# Technical documentation — eit

Evidence date: 2026-10-15. Revision: `master` `91549dc` (2019-09-26).

No secrets are committed. Pipeline scripts reference variable names only. Those values are not copied here because they are not in the file.

## Architecture

The repository is a Bitbucket Pipelines definition plus a README. There is no running service, framework, or database client in git.

```text
README.md
bitbucket-pipelines.yml
  image: python:3.5.7
  pipelines.branches.master
  pipelines.branches.development
```

Provenance: **Implemented**.

## Languages and frameworks

| Layer | What is in the repo | Evidence |
|---|---|---|
| Documentation | Markdown heading and one setup sentence | `README.md` |
| CI | Bitbucket Pipelines YAML | `bitbucket-pipelines.yml` |
| Pipeline image | `python:3.5.7` | `image:` key. No `.py` file is committed |
| Deploy tool | `git-ftp`, installed with `apt-get` during the step | script lines |
| Application language | None committed | `git ls-tree -r HEAD` |

PHP, JavaScript, SQL, and a configure file are not in the tree. The README's "configure file" and "db details" do not name a language or an engine.

## Repository layout

| Path | Bytes of content | Role |
|---|---|---|
| `README.md` | Current file is the heading "Silicon Overdrive : EIT", a rule line, a "Setup" heading, and the configure-file sentence | Only human documentation |
| `bitbucket-pipelines.yml` | Image plus two branch steps | Deploy |

History of `README.md`:

- `000256f` (Jaco Brits, 2019-09-26 11:55 UTC): the file was `# eit`.
- `91549dc` (author name siliconoverdrive, same email domain, 2019-09-26 14:02 +0200): current text, and the pipeline file added in the same commit.

Both commits use `jaco@overdrive.co.za`. There are no tags and no other branches.

## Pipeline

Full behaviour of `bitbucket-pipelines.yml`:

| Item | `master` | `development` |
|---|---|---|
| Branch exists on origin | Yes. It is `origin/HEAD` | No |
| YAML comment | "master branch" | "ftp example" |
| Image | `python:3.5.7` | same image, file-level |
| Install | `apt-get update`, then `apt-get -qq install zip git git-ftp` | same |
| Init | Commented: `git ftp init` to `ftp://$FTP_HOST_LIVE` | Commented: `git ftp init` to the QA URL below |
| Push | `git ftp push` to `ftp://$FTP_HOST_LIVE` | `git ftp push` to `ftp://$FTP_HOST_QA/public_html/americanshutters.overdriveqa.co.za` |
| Credentials | `FTP_USERNAME_LIVE`, `FTP_PASSWORD_LIVE` | `FTP_USERNAME_QA`, `FTP_PASSWORD_QA` |

`zip` is installed on both steps and never executed. The comment on the install line says it is required for packaging. There is no `caches`, `artifacts`, `services`, `definitions`, or test script.

Python 3.5.7 is the image tag written in the file. This document does not claim that tag is still available on Docker Hub.

## Deployment

Deploy mechanism: `git-ftp` push of the git tree. There is no Dockerfile, compose file, Serverless template, or host inventory.

Live destination host is the value of `FTP_HOST_LIVE` at pipeline runtime. QA destination path is fixed in the YAML as `public_html/americanshutters.overdriveqa.co.za` on `FTP_HOST_QA`.

The American Shutters host name is not explained by `README.md`. Combined with the comment "ftp example", the QA step may be a copy from another pipeline. That is an inference. Confirm before treating American Shutters as an EIT environment.

`git ftp init` is commented on both steps. git-ftp requires an initialised remote before push can update it. Whether someone ran init by hand is **Unknown / Requires Confirmation**.

## Environment configuration

| Name | Used by | In git |
|---|---|---|
| `FTP_USERNAME_LIVE` | `master` push and the commented init | Name only |
| `FTP_PASSWORD_LIVE` | `master` push and the commented init | Name only |
| `FTP_HOST_LIVE` | `master` push and the commented init | Name only |
| `FTP_USERNAME_QA` | `development` push and the commented init | Name only |
| `FTP_PASSWORD_QA` | `development` push and the commented init | Name only |
| `FTP_HOST_QA` | `development` push and the commented init | Name only |

No `.env`, no `bitbucket-pipelines.yml` `deployment` environment, and no secured-variable documentation is in the repo. Where the variables are set in Bitbucket is **Unknown / Requires Confirmation**.

## Data

No schema, migration, seed, or sample database is committed. The README says to update database details. Engine, host, database name, and credentials are **Unknown / Requires Confirmation**.

## Auth, jobs, queues, storage, monitoring

| Area | Finding |
|---|---|
| Application auth | None |
| Background workers | None |
| Queues | None |
| Object storage | None. FTP is the only outbound store named |
| Monitoring | None |
| SonarQube | Not in git. The onboarding scan listed `sonar-project.properties` and `sonarqube_scan.bat`. They are not in history |

## Security notes from the tree

These are observations about the YAML, not a review of a running host.

- Passwords are pipeline variables, not literals.
- The QA site path is a literal. It identifies a host name.
- The script passes the password on the `git ftp` command line (`-p`). Whether that exposes it in the pipeline log is **Unknown / Requires Confirmation**.
- There is no application input to validate.

## Development and testing

- No test runner, linter, or local run instructions beyond the README sentence.
- No dependency manifest (`package.json`, `composer.json`, `requirements.txt`, `Gemfile`).
- Clone of record: `https://bitbucket.org/overdrive/eit.git` and `git@bitbucket.org:overdrive/eit.git`. Default branch `master`.

## Related documentation

Silicon Ark `eitaws/` describes `git@bitbucket.org:overdrive/eitaws.git`. That repository's pipeline also uses image `python:3.5.7` and `git-ftp`, and its `master` file deploys branch `development` to `$FTP_HOST_LIVE`. This repository's file is not the same: it deploys `master` to `$FTP_HOST_LIVE` and `development` to the American Shutters path. Do not merge the two descriptions.

## Human confirmation

The open questions are listed in `project-plan.md`. The technical ones are the FTP hosts, whether init was done outside this file, whether the variables exist in Bitbucket, and whether the QA path was copied from another project.
