docs← Back to article

Markdown for LLMs

Team workflow: conventions and check profiles

The source Markdown for this article. Copy it into your assistant or download it as a text file.

Download this articlePlain text ↗
# Team workflow: conventions and check profiles

Several authors share one tree. These conventions keep parallel work from
colliding: explicit imports repaired per package, the right check run for
the job, and shared state left untouched. Every rule on this page is a
**Team convention** (T): the team keeps it, the compiler does not enforce
it. Marks follow the [topic legend](/corpus/#how-this-topic-marks-confidence).

**Requires a source checkout:** the check script `verify/ci/run_all.sh` lives
in the repository, and the commands below run from its root.

## Explicit imports, repaired per package

New packages declare explicit intra-package imports, and the `use self`
blocks are generated, not hand-written: the import-repair command
regenerates them from the resolution journal. Run it per package, for
packages you own. The workspace-wide forms would rewrite the blocks of
every package in the tree — including other authors' uncommitted work —
so in the shared tree they run only in check mode, never as a rewrite.
**(T)**

## Which check run to use

The shared check script offers three scopes. The plan listings below are
verbatim excerpts of real `--plan` runs, which print the run plan without
executing it.

### The ordinary run: core scope

```text
$ sh verify/ci/run_all.sh --plan
{
  "format": "law.core-profile-plan/1",
  "profile": "core",
  "corpus": "not_checked",
  "corpus_regeneration": false,
  "selected": [
    "rust",
    "vectors",
    "differential",
    "ogpo"
  ],
  "partial": false,
```

The ordinary run checks the core: engine tests plus the fixed scenario
set. The plan names four suites and reports the corpus as not checked —
subject-matter packages are out of scope here by design, and a core
change never obliges anyone to regenerate them. This is the default
after an engine change. **(T)**

### Addressed runs: one suite, marked partial

```text
$ sh verify/ci/run_all.sh --suite rust --plan
{
  "format": "law.core-profile-plan/1",
  "profile": "core",
  "corpus": "not_checked",
  "corpus_regeneration": false,
  "selected": [
    "rust"
  ],
  "partial": true,
```

A suite selector narrows the run to the named suites, and the report
says `partial`. Use it for fast iteration on one area; the flag repeats
for several suites. **(T)**

### The subject scope: active packages

```text
$ sh verify/ci/run_all.sh --corpus --plan
{
  "format": "law.work-profile-plan/1",
  "profile": "kz-ogpo-vts",
  "active": [
    "kz.corpus.ogpovts",
    "w3c.wasm_core",
    "nr.electoral_act_2016",
    ...
```

The subject scope checks the active subject-matter packages from a
private snapshot: it never touches the shared compiled outputs,
lockfiles, or registries. Use it when the change is a subject-matter
package. The full-corpus form runs only on explicit request — never
unasked, and never as an automatic finish to unrelated work. **(T)**

## Leave shared state alone

- Never shelve, reset, or discard files you do not own; compare against
  the base without touching the tree.
- Never rewrite published history.
- Never regenerate shared compiled outputs, lockfiles, or registries as
  a side effect of a check run.
- Frozen packages report as not checked rather than passing; do not edit
  their sources or expectations to turn a report green.

## Where to go next

- [A package in the corpus](/tutorials/package/) — the per-package
  habits: manifest, scenarios, provenance, checks.
- [N. Package, context, snapshots, case, result, and
  test](/recipes/n-package/) — the case-work recipes these conventions
  protect.
- [**Packages, cases, and worlds**](/corpus/model/) — the architecture the
  check scopes are drawn around.