> ## Documentation Index
> Fetch the complete documentation index at: https://aspect.build/llms.txt
> Use this file to discover all available pages before exploring further.

# A repository with a build in it

> Fast-forward to a Go monorepo with real dependency depth, and start the build warming while you read.

```shell theme={null}
git checkout step-1
```

**Start the build now, before you read any further.** This is the biggest download in the course, and almost none of it is your code: Bazelisk downloads Bazel 9.3.0 first (about 70 MB, pinned in `.bazelversion`), then Bazel fetches `rules_go`, `gazelle` and the Go SDK 1.25.1 (about 58 MB), one after another.

```shell theme={null}
bazel test //...
```

`aspect test //...` works too.

Expect roughly **70 seconds** the first time on a machine that has never built this — most of it fetching `rules_go` and the Go SDK, not compiling your code. Once those are cached it is about **25 seconds** from clean, and **under a second** when nothing has changed. The bulk of the cold compile is `rules_go` building the Go standard library: one large action that never runs again, and you'll see it by name later when you ask the build what it spent its time on.

If it is still running when you reach the next section, that is fine — nothing before `aspect changed` needs the build finished.

## What arrived

A Go monorepo with 55 libraries, 55 tests and 3 binaries:

```text theme={null}
lib/              clock codec schema validate log metrics retry
                  config auth store ratelimit queue api
internal/domain/  39 packages
cmd/              server worker cron
```

The layering is the part that matters, and it is deliberate. `lib/clock`, `lib/codec`, `lib/schema` and `lib/validate` are stdlib-only and sit at the bottom. `lib/log` is above them and nearly everything is above *it*. Of the 39 domain packages, 18 are pure models that never touch logging, and 21 are wired into `lib/log`, `lib/metrics` and `lib/store`.

That shape exists so that the questions you ask in the next few sections have non-obvious answers. A repository where everything depends on everything teaches nothing about dependency queries.

<Note>
  There is a deliberately flaky test in `internal/domain/forecast`. It fails about one run in three, it is marked as intentional in the source, and it is there for a later section about catching flakes. If `bazel test //...` goes red on `forecast_test`, that is the course working as designed — run it again.
</Note>

Next: the first command.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.