<!-- Sema documentation — agent-software
     Sema is a new AI-native, neurosymbolic programming language most models
     have not been trained on. Full corpus: https://sema.49.12.246.95.sslip.io/llms-full.txt
     Install language support: https://sema.49.12.246.95.sslip.io/install-skill/ -->

# agent-software

> The agent-software worked example.

> The agent-software worked example.

Run it from `sema/`:

```bash
sema check examples/agent-software
SEMA_STRICT=1 sema run examples/agent-software
sema assure examples/agent-software --grade silver
```

## Source

### `src/main.sema`

```sema
"""Explorer→engineer→hardener delivery circuit with owned task handoff."""

assure silver

struct ChangeRequest:
    goal: str

struct PatchArtifact:
    summary: str
    verified: bool

def inspect(query: str) -> str !{}:
    return "project evidence for " + query

agent explorer(request: ChangeRequest) -> str by explorer_model:
    sem "Inspect read-only context and return a bounded evidence packet"
    use tools [inspect]
    budget model_calls=2, tokens=512

agent engineer(evidence: str) -> PatchArtifact by engineer_model:
    sem "Produce one isolated patch artifact; do not change unassigned files"
    budget model_calls=2, tokens=1024
    ensure result.verified == true

agent hardener(patch: PatchArtifact) -> PatchArtifact by reviewer_model:
    sem "Review correctness, security, recovery, and acceptance evidence"
    budget model_calls=2, tokens=768
    ensure result.verified == true

circuit deliver(request: ChangeRequest) -> PatchArtifact !{agent.spawn, model.invoke}:
    budget agents=4, spawn_depth=1, model_calls=8, tokens=6000
    evidence = explorer(request)
    implementation = spawn engineer(evidence)
    patch = implementation.join()?
    return hardener(patch)

def main() -> PatchArtifact !{agent.spawn, model.invoke}:
    result = deliver(ChangeRequest(goal="add bounded retry handling"))
    print(result.summary)
    return result
```

## Reflected API

# `main`

Explorer→engineer→hardener delivery circuit with owned task handoff.

# `struct ChangeRequest`

**Fields**

| field | type | descriptor |
|---|---|---|
| `goal` | `str` |  |

# `struct PatchArtifact`

**Fields**

| field | type | descriptor |
|---|---|---|
| `summary` | `str` |  |
| `verified` | `bool` |  |

# `def inspect`

```sema
def inspect(query: str) -> str !{}
```

**Parameters**

| name | type |
|---|---|
| `query` | `str` |

**Returns** `str`

**Effects** `!{}`

# `agent explorer`

```sema
agent explorer(request: ChangeRequest) -> str
```

**Parameters**

| name | type |
|---|---|
| `request` | `ChangeRequest` |

**Returns** `str`

# `agent engineer`

```sema
agent engineer(evidence: str) -> PatchArtifact
```

**Parameters**

| name | type |
|---|---|
| `evidence` | `str` |

**Returns** `PatchArtifact`

# `agent hardener`

```sema
agent hardener(patch: PatchArtifact) -> PatchArtifact
```

**Parameters**

| name | type |
|---|---|
| `patch` | `PatchArtifact` |

**Returns** `PatchArtifact`

# `circuit deliver`

```sema
circuit deliver(request: ChangeRequest) -> PatchArtifact !{agent.spawn, model.invoke}
```

**Parameters**

| name | type |
|---|---|
| `request` | `ChangeRequest` |

**Returns** `PatchArtifact`

**Effects** `!{agent.spawn, model.invoke}`

# `def main`

```sema
def main() -> PatchArtifact !{agent.spawn, model.invoke}
```

**Returns** `PatchArtifact`

**Effects** `!{agent.spawn, model.invoke}`
