# Getting Started

## What This Project Does

This project manages code annotation markers that tag specific lines of source code with change tracking metadata. These markers (e.g. `ANK-4494-00-00`, `AC-03a`) serve as reversible modification anchors — marking where code was added, modified, or where an expected end marker is missing. This enables auditable, traceable code changes without permanent structural coupling.

## Recommended Reading Order

1. **[Overview](overview.md)** — High-level architecture and design goals
2. **[Getting Started](getting-started.md)** — (You are here) Quick project orientation
3. **[Markers.java](src/main/java/Markers.java)** — The single entry point class; study this to understand the marker schema
4. **[Project Structure](project-structure.md)** — How the codebase is organized

## Key Entry Points

This is a compact codebase with a single entry point:

- **[Markers.java](src/main/java/Markers.java)** — The only class in the project. It demonstrates the marker annotation pattern with `ADD START` / `ADD END` and `MOD START` / `MOD END` blocks. Start here to understand the marker format and how orphan markers (START without matching END) are handled.

## Project Structure

The codebase is intentionally minimal — a single module with one source file:

```
.
└── src/main/java/
    └── Markers.java    # Single class; marker annotation demo
```

A flowchart of the structure:

```
flowchart TD
    ROOT[""]
    SRC["src/main"]
    JAVA["java/"]
    MARKERS["Markers.java"]
    ROOT --> SRC
    SRC --> JAVA
    JAVA --> MARKERS
```

## Configuration

This project does not use external build or configuration files (no `pom.xml`, `build.gradle`, or `.env`). The marker schema itself — the prefix patterns like `ANK-4494-00-00` and `AC-03a` — are the primary configuration artifact. Key marker conventions:

| Marker | Purpose |
|--------|---------|
| `ANK-NNNN-00-00 ADD START` | Marks the beginning of an added code block with a change ticket ID |
| `ANK-NNNN-00-00 ADD END` | Marks the end of an added block (must pair with a START) |
| `ANK-NNNN-00-00 MOD START` | Marks the beginning of a modified section |
| `ANK-NNNN-00-00 MOD END` | Marks the end of a modified section |
| `AC-NNNNn` | Reference for orphan marker handling (START without matching END) |

## Common Patterns

### Marker Annotation Blocks

Every code change should be wrapped in a START/END pair with a unique ticket identifier:

```java
// ANK-4494-00-00 ADD START
private String flag = "";
// ANK-4494-00-00 ADD END
```

### Orphan Handling

When a START marker has no matching END marker, it is flagged for review. This pattern catches incomplete changes:

```java
// ANK-9999-00-00 ADD START
private String orphan = "";
// (no matching END — unpaired START marker for AC-03a orphan handling)
```

### Coding Conventions

- **Prefix consistency**: Use `ANK-<ticket>-00-00` format for all markers to maintain auditability.
- **Always close blocks**: Every `ADD START` or `MOD START` must have a corresponding `ADD END` / `MOD END`.
- **No structural coupling**: Marker comments are removable; they don't affect the compiled output.
- **One class, one purpose**: The project follows a single-responsibility model — everything lives in `Markers.java`.
