generated from coulomb/repo-seed
Document characteristic acceptance boundary
This commit is contained in:
105
docs/acceptance-policy.md
Normal file
105
docs/acceptance-policy.md
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
# Characteristic Acceptance Policy Boundary
|
||||||
|
|
||||||
|
Policy version: `acceptance-policy/v1`
|
||||||
|
|
||||||
|
repo-scoping separates fact generation, quality gating, and acceptance
|
||||||
|
judgement. This boundary exists so deterministic automation can stay useful and
|
||||||
|
fast without silently promoting weak or non-native claims into registry truth.
|
||||||
|
|
||||||
|
## Boundary
|
||||||
|
|
||||||
|
Deterministic scanners and extractors may create observed facts, source refs,
|
||||||
|
content chunks, candidate abilities, candidate capabilities, candidate features,
|
||||||
|
and candidate evidence. They may also run transparent quality gates.
|
||||||
|
|
||||||
|
Deterministic quality gates may reject, invalidate, downgrade, merge, flag, or
|
||||||
|
require review when a criterion is formally expressible. They must record the
|
||||||
|
criterion identifier, outcome, rationale, and affected candidate element.
|
||||||
|
|
||||||
|
Deterministic quality gates must not approve candidate characteristics. No
|
||||||
|
deterministic rule, scanner result, fixture match, vocabulary match, confidence
|
||||||
|
threshold, source-role score, or duplicate check may mark a candidate as
|
||||||
|
approved registry truth.
|
||||||
|
|
||||||
|
Human reviewers may approve candidate characteristics.
|
||||||
|
|
||||||
|
Trusted agentic reviewers may approve candidate characteristics only after
|
||||||
|
inspecting the evidence, applying the active quality criteria, and recording a
|
||||||
|
rationale tied to those criteria and source refs.
|
||||||
|
|
||||||
|
All automated review outcomes must be inspectable, reversible, and auditable.
|
||||||
|
|
||||||
|
## Allowed Deterministic Outcomes
|
||||||
|
|
||||||
|
- `pass`: no formal criterion blocked the candidate; judgement is still pending.
|
||||||
|
- `requires_review`: a criterion found ambiguity that needs reviewer judgement.
|
||||||
|
- `downgraded`: the candidate remains visible but loses trust or native-utility
|
||||||
|
strength until a reviewer overrides or edits it.
|
||||||
|
- `rejected`: the candidate should not be accepted as stated, but remains
|
||||||
|
auditable with reason codes.
|
||||||
|
- `invalidated`: the candidate is structurally or evidentially unusable.
|
||||||
|
- `merged`: the candidate was folded into a better-supported equivalent.
|
||||||
|
- `flagged`: the candidate remains pending with a warning attached.
|
||||||
|
|
||||||
|
These outcomes may prepare a candidate for review. They do not approve it.
|
||||||
|
|
||||||
|
## Allowed Human Outcomes
|
||||||
|
|
||||||
|
- `approve`: accept the candidate as registry truth.
|
||||||
|
- `approve_with_edits`: accept after reviewer edits, relinks, or merges.
|
||||||
|
- `reject`: reject the candidate as a matter of judgement.
|
||||||
|
- `downgrade`: preserve the candidate but reduce its standing or native claim.
|
||||||
|
- `request_changes`: ask for edited wording, source refs, hierarchy placement,
|
||||||
|
or evidence.
|
||||||
|
- `request_human_review`: defer to another curator or domain owner.
|
||||||
|
|
||||||
|
## Allowed Agentic Outcomes
|
||||||
|
|
||||||
|
- `approve`: accept only with evidence-linked rationale and criteria version.
|
||||||
|
- `approve_with_edits`: accept after proposed edits, relinks, or merges are
|
||||||
|
recorded.
|
||||||
|
- `reject`: reject with cited criteria and evidence.
|
||||||
|
- `downgrade`: keep visible but lower trust or native-utility standing.
|
||||||
|
- `request_human_review`: stop automation when evidence or intent is ambiguous.
|
||||||
|
- `propose_edit`: suggest wording, hierarchy, source-ref, or merge changes
|
||||||
|
without approving.
|
||||||
|
|
||||||
|
Agentic approval requires:
|
||||||
|
|
||||||
|
- reviewer identity or configuration
|
||||||
|
- criteria version
|
||||||
|
- prompt or policy version when applicable
|
||||||
|
- evidence inspected
|
||||||
|
- rationale
|
||||||
|
- exact candidate elements affected
|
||||||
|
|
||||||
|
## Legacy Auto-Approval Terminology
|
||||||
|
|
||||||
|
`trusted_auto_approve_candidate_graph` and UI labels such as "Trusted
|
||||||
|
auto-populate" are legacy terminology. They describe an existing migration-era
|
||||||
|
behavior, not an accepted policy direction. Future implementation must replace
|
||||||
|
that path with agentic review or leave candidates pending human review.
|
||||||
|
|
||||||
|
Until the migration in `RREG-WP-0014` is complete, any artifacts produced by the
|
||||||
|
legacy path must be identifiable in review decisions and self-scoping
|
||||||
|
assessment artifacts. They should be treated as review debt, not as evidence
|
||||||
|
that deterministic approval is allowed.
|
||||||
|
|
||||||
|
## Quality Criteria Relationship
|
||||||
|
|
||||||
|
The quality criteria registry defines the formal checks deterministic gates may
|
||||||
|
apply. Criteria should be versioned, reviewable, and specific enough to explain
|
||||||
|
why a candidate was rejected, downgraded, invalidated, merged, flagged, or sent
|
||||||
|
to review.
|
||||||
|
|
||||||
|
Examples of criteria families:
|
||||||
|
|
||||||
|
- source-role quality
|
||||||
|
- native utility versus dependency, tooling, fixture, or mention-only context
|
||||||
|
- hierarchy fit between capability and feature
|
||||||
|
- evidence sufficiency
|
||||||
|
- circularity from generated `SCOPE.md`
|
||||||
|
- fixture and schema-example contamination
|
||||||
|
|
||||||
|
Criteria can block bad output before judgement. They cannot stand in for
|
||||||
|
judgement.
|
||||||
17
tests/test_acceptance_policy_docs.py
Normal file
17
tests/test_acceptance_policy_docs.py
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
|
||||||
|
ROOT = Path(__file__).resolve().parents[1]
|
||||||
|
POLICY = ROOT / "docs" / "acceptance-policy.md"
|
||||||
|
|
||||||
|
|
||||||
|
def test_acceptance_policy_defines_deterministic_boundary():
|
||||||
|
text = POLICY.read_text(encoding="utf-8")
|
||||||
|
|
||||||
|
assert "Policy version: `acceptance-policy/v1`" in text
|
||||||
|
assert "Deterministic quality gates must not approve" in text
|
||||||
|
assert "`requires_review`" in text
|
||||||
|
assert "`invalidated`" in text
|
||||||
|
assert "`approve_with_edits`" in text
|
||||||
|
assert "`trusted_auto_approve_candidate_graph`" in text
|
||||||
|
assert "legacy terminology" in text
|
||||||
@@ -30,7 +30,7 @@ candidate into approved registry truth.
|
|||||||
|
|
||||||
```task
|
```task
|
||||||
id: RREG-WP-0014-T01
|
id: RREG-WP-0014-T01
|
||||||
status: todo
|
status: done
|
||||||
priority: high
|
priority: high
|
||||||
state_hub_task_id: "4bc2e749-ec9e-45d4-8095-63181efb752b"
|
state_hub_task_id: "4bc2e749-ec9e-45d4-8095-63181efb752b"
|
||||||
```
|
```
|
||||||
@@ -56,6 +56,13 @@ Acceptance criteria:
|
|||||||
- The allowed deterministic outcomes are explicitly listed.
|
- The allowed deterministic outcomes are explicitly listed.
|
||||||
- The allowed agentic outcomes are explicitly listed.
|
- The allowed agentic outcomes are explicitly listed.
|
||||||
|
|
||||||
|
Implementation note 2026-05-15: added `docs/acceptance-policy.md` with policy
|
||||||
|
version `acceptance-policy/v1`, the deterministic gate versus acceptance
|
||||||
|
judgement boundary, allowed deterministic/human/agentic outcomes, audit
|
||||||
|
requirements, and migration language for legacy
|
||||||
|
`trusted_auto_approve_candidate_graph` terminology. Added a documentation test
|
||||||
|
that locks in the boundary language.
|
||||||
|
|
||||||
## T02: Create Transparent Quality Criteria Registry
|
## T02: Create Transparent Quality Criteria Registry
|
||||||
|
|
||||||
```task
|
```task
|
||||||
|
|||||||
Reference in New Issue
Block a user