# HALOS Spec Conformance
When editing files under `spec/`, you are co-creating the HALOS specification. Follow the pre-established spec so that agents and tooling can rely on a consistent structure.
## Canonical Structure
- **manifest.json** — Entry point. Version, specUrl, core.requirements, extensions, changelogUrl. Optional: relatedSpecs, proposals.
- **core.json** — Core requirements. Each has id (HALOS-CORE-N), title, description, optional source.
- **extensions/** — Optional extensions. Each extension is a JSON file conforming to extension.schema.json.
- **schema/** — JSON Schema for manifest, core, extension, changelog. Do not violate these schemas.
- **changelog.json** — Version history. Append entries when publishing new versions.
## Before Making Spec Edits
1. Read the relevant schema(s) in `spec/schema/` so changes validate.
2. For substantive changes to requirements or structure, use the proposal process (`proposals/`).
3. Core requirement IDs must follow `HALOS-CORE-N`; extension IDs `HALOS-EXT-`.
## After Editing core.json, manifest.json, or changelog.json
Run the generate script so human-readable outputs stay in sync:
```bash
node scripts/generate-spec.js
```
This produces `spec/spec.md` and `spec/CHANGELOG.md`. Commit these with your JSON changes.
## Publication and Validation
- See `spec/PUBLISHING.md` for the publication checklist.
- CI validates schemas and runs conformance checks. Spec changes must pass CI before merge.
- Do not merge spec edits that break schema validation or leave generated files out of sync.
## Related Specs
See `spec/RELATED_SPECS.md` for how HALOS fits in the agent-spec ecosystem and future mapping possibilities.