Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
8bc9fc7
Add temporary draft3 authoring cutover patcher
GauravAlbal Aug 25, 2026
3272b42
Add temporary draft3 authoring cutover gate
GauravAlbal Aug 25, 2026
e8809a6
Make ATS-1 draft.3 the new-authoring default
github-actions[bot] Aug 25, 2026
c65890b
Remove temporary draft3 authoring cutover workflow
GauravAlbal Aug 25, 2026
f343211
Remove temporary draft3 authoring cutover patcher
GauravAlbal Aug 25, 2026
86f8cdb
Add temporary 0.1.4 skill-pack generation gate
GauravAlbal Aug 25, 2026
3203fb9
Trigger draft3 skill-pack generation
GauravAlbal Aug 25, 2026
dce8f06
Remove failed temporary skill-pack generator
GauravAlbal Aug 25, 2026
fdc1027
Remove temporary pack trigger
GauravAlbal Aug 25, 2026
1d03b5c
Add temporary draft3 pack contract fixer
GauravAlbal Aug 25, 2026
bc9cf98
Add temporary draft3 pack-contract gate
GauravAlbal Aug 25, 2026
1d05478
Simplify draft1 default heuristic to line semantics
GauravAlbal Aug 25, 2026
8dc565c
Rerun draft3 pack-contract gate
GauravAlbal Aug 25, 2026
8520329
Apply draft3 pack-contract patch before environment sync
GauravAlbal Aug 25, 2026
82aab3f
Isolate draft3 pack-contract gate failures
GauravAlbal Aug 25, 2026
4ea0a72
Update skill-pack version-law regressions for draft3
GauravAlbal Aug 25, 2026
95c8f97
Update stale default mutation fixture for draft3
GauravAlbal Aug 25, 2026
3e10d44
Commit draft3 skill-pack regression updates
GauravAlbal Aug 25, 2026
dae97dc
Remove temporary draft3 pack-contract workflow
GauravAlbal Aug 25, 2026
ca49d3d
Remove temporary draft3 pack-contract fixer
GauravAlbal Aug 25, 2026
543502d
Add temporary durable draft3 pack verifier gate
GauravAlbal Aug 25, 2026
828178d
Split draft3 source gate from generated pack gate
GauravAlbal Aug 25, 2026
93c513f
Make skill-pack version law follow draft3
github-actions[bot] Aug 25, 2026
43c7b19
Remove temporary draft3 source gate
GauravAlbal Aug 25, 2026
599d32e
Align skill-pack version comment with draft3
GauravAlbal Aug 25, 2026
02f9c8f
Add temporary 0.1.4 generation gate
GauravAlbal Aug 25, 2026
b181d9e
Trigger 0.1.4 generation gate
GauravAlbal Aug 25, 2026
e5ce96f
Preserve ATS mini-constitution law in draft3 front door
GauravAlbal Aug 25, 2026
dddeb64
Remove stale P0 generation gate
GauravAlbal Aug 25, 2026
b6bef03
Add corrected 0.1.4 generation gate
GauravAlbal Aug 25, 2026
56a1577
Align OSS capstone with draft3 authoring default
GauravAlbal Aug 25, 2026
becb351
Generate skill pack 0.1.4 from draft3 default
github-actions[bot] Aug 25, 2026
1efbce8
Remove stale draft3 generation gate
GauravAlbal Aug 25, 2026
4991e81
Generate skill pack 0.1.4 from final draft3 source
GauravAlbal Aug 25, 2026
fa02911
Generate skill pack 0.1.4 from draft3 default
github-actions[bot] Aug 25, 2026
f0d3863
Remove temporary 0.1.4 generation gate
GauravAlbal Aug 25, 2026
39d0b26
Add temporary draft3 default-guard hardening gate
GauravAlbal Aug 25, 2026
72fb354
Harden draft3 new-authoring default guard
github-actions[bot] Aug 25, 2026
0c7d242
Remove temporary draft3 guard hardening gate
GauravAlbal Aug 25, 2026
48a0cd4
Add final draft3 pack provenance gate
GauravAlbal Aug 25, 2026
888c33c
Rebind skill pack 0.1.4 to hardened draft3 source
github-actions[bot] Aug 25, 2026
fa587ce
Remove temporary final draft3 provenance gate
GauravAlbal Aug 25, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,12 @@ the imported normative package is a separate, receipted import, never an edit in

## [Unreleased]

### Changed — draft.3 authoring cutover candidate

- New durable authoring and the checked-in fleet policy now resolve ATS-1 `1.0.0-draft.3`; legacy unlabeled interpretation remains draft.1 and explicit version pins still win.
- Public authoring/review skills carry the draft.3 version law and D-G behavioral acceptance-criterion boundary.
- Canonical public skill bytes changed, so the generated skill-pack candidate advances to `0.1.4`; the published release remains `0.1.3` until separately tagged/released.

### Proposed — draft.3 acceptance-criterion hardening

- Added `docs/ATS_1_DRAFT_3_AC_HARDENING.md`, a prospective normative delta that
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ Use ATS to write the implementation specification for this change.
```

The `ats` front door chooses the right public skill. New durable authoring uses
ATS-1 `1.0.0-draft.2`, the result stays readable as prose, and the local runtime
ATS-1 `1.0.0-draft.3`, the result stays readable as prose, and the local runtime
Comment on lines 38 to +39

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Cut over the linked user guidance to draft.3

This new top-level statement is contradicted by the same README's current-version table at line 424 and by the linked current guidance, including docs/QUICKSTART.md:41-46, docs/STABILITY.md:13-56, docs/EVIDENCE.md:19-21, and all current examples under docs/examples/, which still identify draft.2 as the new-authoring edition. A reader following the README into the documented workflow is consequently instructed to select draft.2 despite the policy now selecting draft.3, so the non-historical user documentation needs to be updated as part of the cutover.

Useful? React with 👍 / 👎.

performs deterministic checks. [Install ATS](#install) or
[jump straight to the four skills](#the-four-skills).

Expand Down Expand Up @@ -277,8 +277,8 @@ export PATH="$HOME/.local/bin:$PATH"
ats spec status
```

`ats spec status` should list both `1.0.0-draft.1` and
`1.0.0-draft.2`. Restart an already-running agent once so it discovers the new
`ats spec status` should list `1.0.0-draft.1`, `1.0.0-draft.2`, and
`1.0.0-draft.3`. Restart an already-running agent once so it discovers the new
skills.

### 3. Ask for the artifact
Expand Down
4 changes: 2 additions & 2 deletions config/policies/fleet_policy.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
{
"schema_version": "ats.fleet_policy.v1",
"policy_id": "39a2e495346135ba9b03fe5b593a424ee73a73d282af214205f8a4097920a1f2",
"policy_id": "65ec7b601ab37111970dd720101beec1870830ac28b832095ff2fd5d810dadeb",
"created_at": "2026-08-07T00:00:00Z",
"text_policy": {
"standard": "ATS-1",
"version": "1.0.0-draft.2",
"version": "1.0.0-draft.3",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Update the regression suite for the new fleet default

When contributors run the repository's configured default pytest suite, this policy change makes existing regressions fail: tests/unit/test_fleet_policy.py:70,120,230 still require the shipped policy and CLI resolution to return draft.2, while tests/unit/test_public_skills.py:152-184 still requires every public skill to advertise draft.2. These tests are not included in the narrowed list in public-ci.yml, so the focused publication gate can pass while the full suite remains red; update the cutover assertions while retaining explicit draft.2 compatibility coverage.

Useful? React with 👍 / 👎.

"required_for": [
"architecture",
"technical_proposal",
Expand Down
2 changes: 1 addition & 1 deletion dist/skill-pack/agent-plugins/plugin.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,5 @@
],
"license": "Apache-2.0 AND CC-BY-4.0",
"name": "ats-skill-pack",
"version": "0.1.3"
"version": "0.1.4"
}
6 changes: 3 additions & 3 deletions dist/skill-pack/agent-plugins/skills/ats-assess/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,13 +57,13 @@ the CLI, schemas, and checks named below are the complete execution surface.

## Version behavior

- New durable authoring resolves ATS-1 `1.0.0-draft.2` under the binding
- New durable authoring resolves ATS-1 `1.0.0-draft.3` under the binding
policy (which pins the edition; no `--spec-version` override unless the user
passes one).
- Legacy/historical material (corpus, annotation bench, unlabeled older
artifacts) is interpreted under `1.0.0-draft.1` unless migration is explicit.
- A draft.2 artifact under a draft.1 policy is a **refusal**, never a silent
downgrade; a draft.1 artifact must not silently acquire draft.2 semantics.
- A draft.3 artifact under a draft.1 policy is a **refusal**, never a silent
downgrade; a draft.1 artifact must not silently acquire draft.3 semantics.

## Authoring vs transformation

Expand Down
4 changes: 2 additions & 2 deletions dist/skill-pack/agent-plugins/skills/ats-review/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ Regression fixtures demonstrating all three live at `fixtures/skills/review/` (m
## Version behavior

- Reviewing arbitrary prose claims nothing about ATS conformance and resolves no standard version.
- If the user requests an ATS conformance review, resolve the standard version by the two-default law: new durable authoring under the binding policy resolves to `1.0.0-draft.2`; legacy/historical material resolves to `1.0.0-draft.1` unless migration is explicit; an explicit version wins; a draft.2 artifact under a draft.1 policy is a refusal, never a silent downgrade.
- If the user requests an ATS conformance review, resolve the standard version by the two-default law: new durable authoring under the binding policy resolves to `1.0.0-draft.3`; legacy/historical material resolves to `1.0.0-draft.1` unless migration is explicit; an explicit version wins; a draft.3 artifact under a draft.1 policy is a refusal, never a silent downgrade.
- If the user's environment has a policy, `ats policy resolve` decides applicability and version; the review follows it.

## Deterministic machinery
Expand Down Expand Up @@ -177,7 +177,7 @@ An ATS artifact under a resolved policy can produce a deterministic BLOCK:

```text
BLOCK — deterministic conformance failure
Artifact: spec.md (ATS-1 1.0.0-draft.2, policy resolved)
Artifact: spec.md (ATS-1 1.0.0-draft.3, policy resolved)
Check: ats ir lint — IR-STRUCT-014 (requirement block missing actor)
Span: REQ-004 "Jobs are retried on failure."

Expand Down
20 changes: 13 additions & 7 deletions dist/skill-pack/agent-plugins/skills/ats-spec/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ do not pad every unit with every slot, and do not drop a slot that is material.
- non-goals — what this artifact explicitly does not address;
- failure behavior — what happens when the behavior fails;
- proof obligations — what must be demonstrated, and by whom;
- acceptance criteria — falsifiable evidence obligations;
- acceptance criteria — canonical falsifiable behavioral propositions; tests, probes, proofs, and receipts are evidence used to adjudicate them, not the criteria themselves;
- update/reversal conditions — when the artifact or its decisions may change;
- unresolved state — typed as such, never guessed.

Expand Down Expand Up @@ -140,8 +140,14 @@ Acceptance:
after restart, accepted-but-unconsumed mail remains recoverable.
```

The requirement declares the desired invariant; the acceptance converts it into a
falsifiable evidence obligation. Do not "fix" the overlap by deleting either side.
The requirement declares the desired invariant; the acceptance states the canonical
falsifiable behavioral proposition. Tests, probes, proofs, or receipts are subordinate
evidence used to adjudicate that proposition. Do not "fix" the overlap by deleting either side.

For each normative REQ/AC pair, ask one adversarial question: **could a materially broken
implementation satisfy this AC as written?** If yes, strengthen the AC or decompose the REQ.
The AC must not compensate by adding an independent obligation, widening scope, or strengthening
deontic force; normative behavior belongs in the REQ.

## Local semantic closure

Expand Down Expand Up @@ -187,11 +193,11 @@ Basis vocabulary at a glance (mechanics live in the internal authoring skill, no

## Version behavior

- New durable authoring resolves ATS-1 `1.0.0-draft.2` under the binding policy. The
- New durable authoring resolves ATS-1 `1.0.0-draft.3` under the binding policy. The
policy pins the edition — no `--spec-version` override is needed.
- Legacy / historical material stays `1.0.0-draft.1` unless migration is explicit.
- A draft.2 artifact under a draft.1 policy is a refusal, never a silent downgrade.
- A draft.1 artifact must not silently acquire draft.2 semantics.
- A draft.3 artifact under a draft.1 policy is a refusal, never a silent downgrade.
- A draft.1 artifact must not silently acquire draft.3 semantics.
- An explicit `--spec-version` always wins.

## Procedure (standalone)
Expand Down Expand Up @@ -273,7 +279,7 @@ Dependency: clock synchronization within 100 ms.

```text
AC-1 On a clean install, `ats spec status` prints the imported edition and exits 0.
AC-2 A draft.2 IR linted under a draft.1 policy exits non-zero with a refusal —
AC-2 A draft.3 IR linted under a draft.1 policy exits non-zero with a refusal —
never a silent downgrade.
```

Expand Down
27 changes: 16 additions & 11 deletions dist/skill-pack/agent-plugins/skills/ats/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,11 @@ execution surface.
9. Acceptance evidence is not the same discourse role as the requirement it verifies.
10. Ask only when unresolved meaning blocks the requested action.

Draft.3 `SPECIFY` refinement: an acceptance criterion is the canonical falsifiable
behavioral proposition for its REQ. Tests, probes, proofs, and receipts are evidence
used to adjudicate that proposition, not substitutes for it; if a materially broken
implementation can satisfy the AC, strengthen the AC or decompose the REQ.

## How to route

### Step 1 — Determine the mode
Expand Down Expand Up @@ -126,13 +131,13 @@ which enforcement gates apply.

Two defaults, never collapsed into one:

- **New durable authoring** resolves ATS-1 `1.0.0-draft.2` under the binding
- **New durable authoring** resolves ATS-1 `1.0.0-draft.3` under the binding
policy. The policy pins the edition; no `--spec-version` override is needed.
- **Legacy / historical material** stays `1.0.0-draft.1` unless migration is
explicit.
- An explicit `--spec-version` always wins.
- A draft.2 artifact under a draft.1 policy is a **refusal**, never a silent
downgrade. A draft.1 artifact must not silently acquire draft.2 semantics.
- A draft.3 artifact under a draft.1 policy is a **refusal**, never a silent
downgrade. A draft.1 artifact must not silently acquire draft.3 semantics.

### Step 6 — Route to the right skill

Expand All @@ -159,22 +164,22 @@ identifies the installed layout.
```text
"Use ATS to write an architecture proposal for this change."
→ new authoring · ASSESS + SPECIFY composition · ats-spec + ats-assess,
architecture recipe · 1.0.0-draft.2
architecture recipe · 1.0.0-draft.3

"Use ATS to turn these design notes into an implementation specification."
→ transformation · SPECIFY · ats-spec, implementation program recipe · draft.2,
→ transformation · SPECIFY · ats-spec, implementation program recipe · draft.3,
source semantics never strengthened

"Review this existing RFC with ATS."
→ review mode · ats-review (BLOCK / REVIEW_REQUIRED / ADVISORY) · no conformance
claim unless the user requested ATS conformance

"Convert this incident analysis into an ATS postmortem."
→ transformation · ASSESS · ats-assess, postmortem recipe · draft.2,
→ transformation · ASSESS · ats-assess, postmortem recipe · draft.3,
what-happened stays separate from why-we-believe-it

"Use ATS for this technical assessment."
→ new authoring · ASSESS · ats-assess · draft.2, uncertainty preserved
→ new authoring · ASSESS · ats-assess · draft.3, uncertainty preserved
(UNAVAILABLE is valid output)
```

Expand All @@ -187,7 +192,7 @@ identifies the installed layout.
decides applicability when one is present).
4. Select `ASSESS`, `SPECIFY`, or a declared composition.
5. Resolve the standard version correctly — the two-default law above.
6. Use draft.2 for new durable authoring.
6. Use draft.3 for new durable authoring.
7. Preserve draft.1 interpretation for historical material unless migration is
explicit.
8. Route to the selected public skill (`ats-spec`, `ats-assess`, or
Expand Down Expand Up @@ -244,7 +249,7 @@ merely because none exists — record `authority_precedence = UNAVAILABLE`.
```text
User: "Use ATS to write an architecture proposal for this change."
Route: new authoring · ASSESS + SPECIFY · ats-spec + ats-assess ·
architecture recipe · 1.0.0-draft.2
architecture recipe · 1.0.0-draft.3
Outcome:
- ASSESS half: current state (observation), constraints, alternatives,
judgment, unresolved points — each role preserved.
Expand All @@ -265,7 +270,7 @@ Outcome:
- The source's causal claims remain causal *claims* — no observation is
upgraded, no recommendation becomes a requirement.
- A causal factor the source does not establish: UNAVAILABLE, not a guess.
- Edition reported as draft.1; never silently re-interpreted under draft.2.
- Edition reported as draft.1; never silently re-interpreted under draft.3.
```

### 3. Review stays review
Expand All @@ -286,7 +291,7 @@ Outcome:

- Never force ATS onto casual prose, scratch notes, marketing, or exploratory chat.
- Never collapse the two defaults into one global standard version.
- Never let a draft.2 artifact silently downgrade to draft.1.
- Never let a draft.3 artifact silently downgrade to draft.1.
- Never dump TextIR, basis records, rule-registry, or receipt-schema internals into ordinary user output.
- Never claim conformance the deterministic checks did not establish.
- Never ask a human for a non-blocking unknown — type it `UNAVAILABLE` and continue.
Expand Down
6 changes: 3 additions & 3 deletions dist/skill-pack/claude/ats-assess/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,13 +57,13 @@ the CLI, schemas, and checks named below are the complete execution surface.

## Version behavior

- New durable authoring resolves ATS-1 `1.0.0-draft.2` under the binding
- New durable authoring resolves ATS-1 `1.0.0-draft.3` under the binding
policy (which pins the edition; no `--spec-version` override unless the user
passes one).
- Legacy/historical material (corpus, annotation bench, unlabeled older
artifacts) is interpreted under `1.0.0-draft.1` unless migration is explicit.
- A draft.2 artifact under a draft.1 policy is a **refusal**, never a silent
downgrade; a draft.1 artifact must not silently acquire draft.2 semantics.
- A draft.3 artifact under a draft.1 policy is a **refusal**, never a silent
downgrade; a draft.1 artifact must not silently acquire draft.3 semantics.

## Authoring vs transformation

Expand Down
4 changes: 2 additions & 2 deletions dist/skill-pack/claude/ats-review/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ Regression fixtures demonstrating all three live at `fixtures/skills/review/` (m
## Version behavior

- Reviewing arbitrary prose claims nothing about ATS conformance and resolves no standard version.
- If the user requests an ATS conformance review, resolve the standard version by the two-default law: new durable authoring under the binding policy resolves to `1.0.0-draft.2`; legacy/historical material resolves to `1.0.0-draft.1` unless migration is explicit; an explicit version wins; a draft.2 artifact under a draft.1 policy is a refusal, never a silent downgrade.
- If the user requests an ATS conformance review, resolve the standard version by the two-default law: new durable authoring under the binding policy resolves to `1.0.0-draft.3`; legacy/historical material resolves to `1.0.0-draft.1` unless migration is explicit; an explicit version wins; a draft.3 artifact under a draft.1 policy is a refusal, never a silent downgrade.
- If the user's environment has a policy, `ats policy resolve` decides applicability and version; the review follows it.

## Deterministic machinery
Expand Down Expand Up @@ -177,7 +177,7 @@ An ATS artifact under a resolved policy can produce a deterministic BLOCK:

```text
BLOCK — deterministic conformance failure
Artifact: spec.md (ATS-1 1.0.0-draft.2, policy resolved)
Artifact: spec.md (ATS-1 1.0.0-draft.3, policy resolved)
Check: ats ir lint — IR-STRUCT-014 (requirement block missing actor)
Span: REQ-004 "Jobs are retried on failure."

Expand Down
20 changes: 13 additions & 7 deletions dist/skill-pack/claude/ats-spec/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ do not pad every unit with every slot, and do not drop a slot that is material.
- non-goals — what this artifact explicitly does not address;
- failure behavior — what happens when the behavior fails;
- proof obligations — what must be demonstrated, and by whom;
- acceptance criteria — falsifiable evidence obligations;
- acceptance criteria — canonical falsifiable behavioral propositions; tests, probes, proofs, and receipts are evidence used to adjudicate them, not the criteria themselves;
- update/reversal conditions — when the artifact or its decisions may change;
- unresolved state — typed as such, never guessed.

Expand Down Expand Up @@ -140,8 +140,14 @@ Acceptance:
after restart, accepted-but-unconsumed mail remains recoverable.
```

The requirement declares the desired invariant; the acceptance converts it into a
falsifiable evidence obligation. Do not "fix" the overlap by deleting either side.
The requirement declares the desired invariant; the acceptance states the canonical
falsifiable behavioral proposition. Tests, probes, proofs, or receipts are subordinate
evidence used to adjudicate that proposition. Do not "fix" the overlap by deleting either side.

For each normative REQ/AC pair, ask one adversarial question: **could a materially broken
implementation satisfy this AC as written?** If yes, strengthen the AC or decompose the REQ.
The AC must not compensate by adding an independent obligation, widening scope, or strengthening
deontic force; normative behavior belongs in the REQ.

## Local semantic closure

Expand Down Expand Up @@ -187,11 +193,11 @@ Basis vocabulary at a glance (mechanics live in the internal authoring skill, no

## Version behavior

- New durable authoring resolves ATS-1 `1.0.0-draft.2` under the binding policy. The
- New durable authoring resolves ATS-1 `1.0.0-draft.3` under the binding policy. The
policy pins the edition — no `--spec-version` override is needed.
- Legacy / historical material stays `1.0.0-draft.1` unless migration is explicit.
- A draft.2 artifact under a draft.1 policy is a refusal, never a silent downgrade.
- A draft.1 artifact must not silently acquire draft.2 semantics.
- A draft.3 artifact under a draft.1 policy is a refusal, never a silent downgrade.
- A draft.1 artifact must not silently acquire draft.3 semantics.
- An explicit `--spec-version` always wins.

## Procedure (standalone)
Expand Down Expand Up @@ -273,7 +279,7 @@ Dependency: clock synchronization within 100 ms.

```text
AC-1 On a clean install, `ats spec status` prints the imported edition and exits 0.
AC-2 A draft.2 IR linted under a draft.1 policy exits non-zero with a refusal —
AC-2 A draft.3 IR linted under a draft.1 policy exits non-zero with a refusal —
never a silent downgrade.
```

Expand Down
Loading