Skip to content

Subject Boundaries

Screeps Lab tests subject codebases without taking ownership of them.

External Repositories

The primary Screeps colony repository should remain outside Screeps Lab. A common local layout is:

~/projects/
├── screeps/
└── screeps-lab/

A lab configuration may refer to ../screeps, but that target is not committed inside this repository.

Local Paths

Local path subjects are useful for day-to-day development. They are simple, fast, and transparent, but require the developer to manage the checkout.

Ignored Local Workspaces

subjects/local/ is ignored so a developer can place temporary subject workspaces inside the lab checkout without accidentally committing them.

Temporary Clones

Overlord may eventually create temporary subject clones for reproducible runs. Those clones should be ignored and cleaned up or archived deliberately.

Mounts

Container or VM-based workflows may mount a subject repository into the lab runtime. The mounted source remains externally owned.

Future Git Adapters

Git-based subject adapters may eventually resolve branches, tags, or commits. They should capture the exact revision used for each run.

Reproducibility

Reports should eventually record subject path, source type, commit hash when available, dirty-state information when practical, adapter version, and scenario configuration.

Assertion Manifests

Subject-owned assertion manifests live in the external subject checkout and are referenced by subject-relative paths. Screeps Lab records which manifest was used and evaluates only the declarative, generic contract; colony-specific meaning remains owned by the subject repository.

Why Nested Repositories and Submodules Are Deferred

Nested repositories and submodules add workflow complexity and increase the risk of confusing lab code with subject code. They can be reconsidered later through a documented architectural decision if reproducibility or distribution needs justify them.