# software.release.project

> Published by [release.software](https://lexicon.garden/identity/did:plc:zimrxnxvvkwixvtkazpx3zfx)

✓ This is the authoritative definition for this NSID.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:zimrxnxvvkwixvtkazpx3zfx/software.release.project)
- [Documentation](https://lexicon.garden/lexicon/did:plc:zimrxnxvvkwixvtkazpx3zfx/software.release.project/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:zimrxnxvvkwixvtkazpx3zfx/software.release.project/examples)

## Definitions

### `software.release.project`

**Type**: `record`

A software project. The record key is the project name itself, making duplicate names per repo impossible and enabling AppView-free resolution. Name grammar (normative prose): 1 to 64 lowercase ASCII alphanumerics and interior hyphens only, no dots or colons, no leading or trailing hyphen.

**Key**: `any`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `name` | `string` | Yes | Machine name of the project. MUST equal the record key. Serves as URL segment, uniqueness key, display fallback, and install token. |
| `parent` | `string` (at-uri) | No | An AT URI to a software.release.project that this project either derives or descends from. |
| `renamedTo` | `string` (at-uri) | No | When set, this project has been renamed: the record persists as a permanent alias to the successor software.release.project. Record keys are immutable, so rename is never an in-place edit and an old name is never reusable. |

## Raw Schema

```json
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "A software project. The record key is the project name itself, making duplicate names per repo impossible and enabling AppView-free resolution. Name grammar (normative prose): 1 to 64 lowercase ASCII alphanumerics and interior hyphens only, no dots or colons, no leading or trailing hyphen.",
      "key": "any",
      "record": {
        "properties": {
          "name": {
            "description": "Machine name of the project. MUST equal the record key. Serves as URL segment, uniqueness key, display fallback, and install token.",
            "maxLength": 64,
            "minLength": 1,
            "type": "string"
          },
          "parent": {
            "description": "An AT URI to a software.release.project that this project either derives or descends from.",
            "format": "at-uri",
            "type": "string"
          },
          "renamedTo": {
            "description": "When set, this project has been renamed: the record persists as a permanent alias to the successor software.release.project. Record keys are immutable, so rename is never an in-place edit and an old name is never reusable.",
            "format": "at-uri",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "type": "record"
    }
  },
  "id": "software.release.project",
  "lexicon": 1
}
```
