diff --git a/CHANGELOG.md b/CHANGELOG.md index 0fed60a..b691873 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,8 +6,8 @@ versioning; the compatibility rules are in SPEC.md §10.2. ## Unreleased -- **Repository identity** — renamed the repository to `asdecided-spec` and - updated reference-implementation links to `asdecided-core`. The stable RAC +- **Repository identity** — moved the repository to `asdecided/spec` and + updated reference-implementation links to `asdecided/core`. The stable RAC vocabulary, artifact IDs, schema keys, and conformance contracts are unchanged. - **conformance/output-parity.json**, **conformance/vectors/** — the @@ -29,7 +29,7 @@ versioning; the compatibility rules are in SPEC.md §10.2. ## v0.1.0 — 2026-07-05 Initial extraction of the specification from the reference implementation, -[`asdecided-core`](https://github.com/itsthelore/asdecided-core). +[`asdecided-core`](https://github.com/asdecided/core). - **SPEC.md** — the normative specification: artifact model (five types, frontmatter envelope, ID grammar and path-independent identity, per-type diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 94b626e..6451857 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -31,7 +31,7 @@ Normative changes follow this path, in order: patch: editorial). This mirrors the ADR discipline used in the reference implementation -([`asdecided-core`](https://github.com/itsthelore/asdecided-core), `rac/decisions/`): +([`asdecided-core`](https://github.com/asdecided/core), `rac/decisions/`): decisions are recorded, reviewed by someone other than the author, and never silently overridden. Where a spec change reflects a decision recorded there, cite the ADR in the PR. diff --git a/GOVERNANCE.md b/GOVERNANCE.md index 75d1058..f67a421 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -4,7 +4,7 @@ Merge rights to this repository are held by: -- **Tom Ballard** ([@itsthelore](https://github.com/itsthelore)) — author of +- **Tom Ballard** ([@tcballard](https://github.com/tcballard)) — author of the reference implementation, `asdecided-core`. The project is currently solo-maintained by choice. Additional maintainers diff --git a/README.md b/README.md index 3c5ac85..4858c2b 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# asdecided-spec — the AsDecided artifact specification +# AsDecided artifact specification *Typed, validated, versioned product knowledge for coding agents.* @@ -6,7 +6,7 @@ RAC (Requirements as Code) is a format for storing a team's requirements, decisions, roadmaps, prompts, and designs as Markdown artifacts in a Git tree — with a closed lifecycle, machine-readable relationship types, and a CI gate that rejects broken corpus states before they land. -[`asdecided-core`](https://github.com/itsthelore/asdecided-core) is the reference +[`asdecided-core`](https://github.com/asdecided/core) is the reference implementation; this repository is the contract a second implementation would build against. The normative text is [SPEC.md](SPEC.md); the machine-readable schemas, vocabularies, conformance definitions, and executable examples live diff --git a/SPEC.md b/SPEC.md index ab2c1b9..6b50f53 100644 --- a/SPEC.md +++ b/SPEC.md @@ -15,7 +15,7 @@ consumers (tools that read, validate, or serve them). ## 2. Status of this document This is **v0.1.0** of the RAC specification, extracted from the reference -implementation, [`asdecided-core`](https://github.com/itsthelore/asdecided-core). Every +implementation, [`asdecided-core`](https://github.com/asdecided/core). Every normative statement below is traceable to behavior the reference validator enforces today (the machine-checked trace lives in `extraction-inventory.json`; one deliberate exception is called out in §10). The specification is pre-1.0: @@ -822,6 +822,6 @@ advisory, never blocking.) --- *This specification is maintained at -[`itsthelore/asdecided-spec`](https://github.com/itsthelore/asdecided-spec) under the +[`asdecided/spec`](https://github.com/asdecided/spec) under the process in `CONTRIBUTING.md` and `GOVERNANCE.md`. The reference implementation -is [`itsthelore/asdecided-core`](https://github.com/itsthelore/asdecided-core).* +is [`asdecided/core`](https://github.com/asdecided/core).* diff --git a/extraction-inventory.json b/extraction-inventory.json index 22507fc..039c896 100644 --- a/extraction-inventory.json +++ b/extraction-inventory.json @@ -1,7 +1,7 @@ { "_meta": { "purpose": "Extraction inventory for the RAC (Requirements as Code) specification. Every normative claim in SPEC.md cites a key in this file via an HTML comment (). This is a working artifact of the spec extraction; it is not itself normative.", - "extracted_from": "itsthelore/asdecided-core @ 6f8de33 (branch main state at extraction)", + "extracted_from": "asdecided/core @ 6f8de33 (branch main state at extraction)", "source_of_truth": "src/rac/ validator code: core/validation.py, core/classification.py, core/artifacts.py, core/frontmatter.py, core/metadata.py, core/identity.py, core/idgen.py, core/relationship_types.py, core/markdown.py, core/corpus.py, core/fs.py, core/okf.py, core/overrides.py, core/limits.py, services/validate.py, services/relationships.py, services/review.py, services/gate.py, services/okf_conformance.py, services/init.py, output/sarif.py, cli.py", "verified_by_running": "rac validate rac/, rac relationships rac/ --validate, rac gate rac/ against the asdecided-core dogfood corpus (389 artifacts, all pass)" }, diff --git a/schema/README.md b/schema/README.md index 3681716..001fa73 100644 --- a/schema/README.md +++ b/schema/README.md @@ -8,7 +8,7 @@ design) with their section tiers, metadata enums, descriptions, guidance, synonyms, and starter bodies, plus the relationship-section descriptions. Unlike the JSON Schemas below, it is not derived documentation — it is a source of truth an engine reads directly. The native reference implementation -([`asdecided-core`](https://github.com/itsthelore/asdecided-core)) vendors it +([`asdecided-core`](https://github.com/asdecided/core)) vendors it for its Rust engine; a sync gate keeps that copy identical to this file (asdecided-core ADR-115, closing ADR-063 Guard 1). Changes to it are normative and follow the process in [CONTRIBUTING.md](../CONTRIBUTING.md). diff --git a/schema/artifact-specs.json b/schema/artifact-specs.json index 8e51f2f..00b239c 100644 --- a/schema/artifact-specs.json +++ b/schema/artifact-specs.json @@ -1,7 +1,7 @@ { "_meta": { "role": "Canonical machine-readable artifact-spec registry: the ordered ARTIFACT_SPECS (requirement, decision, roadmap, prompt, design) and relationship-section descriptions read by conforming implementations, including the native Rust engine (rac-engine::spec). ADR-063 Guard 1: one shared, language-neutral source of truth, so classification and validation cannot drift between implementations.", - "canonical": "This file, in itsthelore/asdecided-spec, is the upstream source of truth. Implementations vendor it (asdecided-core: rust/rac-engine/assets/spec/artifact-specs.json) and a sync gate keeps each vendored copy's artifact_specs and relationship_descriptions payloads identical to this file's. Edit here; downstream copies re-sync — never the reverse.", + "canonical": "This file, in asdecided/spec, is the upstream source of truth. Implementations vendor it (asdecided-core: rust/rac-engine/assets/spec/artifact-specs.json) and a sync gate keeps each vendored copy's artifact_specs and relationship_descriptions payloads identical to this file's. Edit here; downstream copies re-sync — never the reverse.", "consumers": [ "rac-engine::spec (Rust, include_str!)" ] diff --git a/schema/artifact.schema.json b/schema/artifact.schema.json index 5a28e5d..08909c3 100644 --- a/schema/artifact.schema.json +++ b/schema/artifact.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://raw.githubusercontent.com/itsthelore/asdecided-spec/main/schema/artifact.schema.json", + "$id": "https://raw.githubusercontent.com/asdecided/spec/main/schema/artifact.schema.json", "title": "RAC (Requirements as Code) parsed artifact — per-type structural contract", "description": "The canonical parsed representation of one RAC artifact, as a discriminated union over `type`. RAC's source form is Markdown, not JSON, so this schema validates the *parsed* artifact a conformant parser produces: the frontmatter envelope, the single H1 title, the map of normalized `##` section names to body text, and (for requirement artifacts) the parsed requirement lines. It mirrors the native asdecided-core reference validator: required sections per type, the closed status/category/horizon enums (first non-empty line of the section body, matched case-insensitively), and the [REQ-N] line grammar. Recommended and optional sections are never required here — their absence is advisory (SPEC.md section 9.2, tier 4). Sections outside a type's vocabulary are permitted free content (SPEC.md section 11).", "type": "object", diff --git a/schema/frontmatter.schema.json b/schema/frontmatter.schema.json index 70949d0..ecbd4ae 100644 --- a/schema/frontmatter.schema.json +++ b/schema/frontmatter.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://raw.githubusercontent.com/itsthelore/asdecided-spec/main/schema/frontmatter.schema.json", + "$id": "https://raw.githubusercontent.com/asdecided/spec/main/schema/frontmatter.schema.json", "title": "RAC (Requirements as Code) artifact frontmatter envelope", "description": "The YAML frontmatter envelope of one RAC artifact, per SPEC.md section 6.3. Mirrors the native asdecided-core reference validator exactly: the field set is closed (an unknown field is the blocking finding invalid-metadata-field), schema_version is required whenever a frontmatter block is present, and a document with no frontmatter block at all is legal (the legacy form; that case is outside this schema). Duplicate keys, YAML aliases, nesting deeper than 32 levels, and blocks over 64 KiB are rejected by the parser before schema validation applies.", "type": "object",