Topic · acceptance witness quality

Acceptance witness quality

Gist

Acceptance witness quality is whether a credited :acceptance tag sits on an acceptance test of the assembled system, not on a unit or integration test of a derived SYS, SW, or INT requirement. Proof runs proof audit --check acceptance_witness_quality. Jama still authors.

proof audit --check acceptance_witness_quality

Keep Jira if it already owns the story Done list. Keep Jama if it already authors the shall. Neither one asks whether the acceptance tag is sitting on a child unit test.

01 · The V-model cheat

A tag on a derived test is not an acceptance witness.

Presence of STK-REQ-…:AC-…:acceptance is not truth. The same hole as a present-but-false poc_quality block.

The check is acceptance_witness_quality. Stage verify. Default-on. Severity warning. It walks every :acceptance annotation. The carrier is the test function. If the annotation has no symbol, the carrier is the file. Two different functions in the same file do not mix.

acceptance_criteria_witnessed only asks whether a tag exists. This hop asks whether that tag is an acceptance witness. A test that already carries # SYS-REQ-…:nominal, # SW-REQ-…:nominal, or # INT-REQ-…:integration is a system, unit, or integration test of a derived requirement. Tagging it :acceptance is the V-model cheat: tested every part, never the whole. Those tags fail this check. The witness hop does not credit them.

proof audit --check acceptance_witness_quality
# tests/test_parse.go
# // STK-REQ-001:AC-001:acceptance
# // SYS-REQ-999100:nominal:nominal
# func TestValidJSON(t *testing.T) {}
# warn: the :acceptance tag shares a carrier with a derived SYS witness

Put the acceptance tag on its own end-to-end test. Do not add it to a function that already verifies a child. The hop does not write the comment. It does not run the acceptance test.

// tests/test_e2e.go
// STK-REQ-001:AC-001:acceptance
func TestDemoCompletes(t *testing.T) {}

// tests/test_parse.go
// SYS-REQ-999100:nominal:nominal
func TestValidJSON(t *testing.T) {}

Re-run both hops. A mixed tag fails quality, and the witness hop will not count it as covered.

proof audit --check acceptance_witness_quality
proof audit --check acceptance_criteria_witnessed

02 · The exhibit

Same STK-REQ-001 / AC-001. Silent mixed tag, or this hop.

One function. An acceptance tag. A derived SYS witness on the same carrier. Click the tabs.

The row

  • Ask does STK-REQ-001 / AC-001 carry an :acceptance tag
  • Stamp the tag is on TestValidJSON, which already verifies SYS-REQ-999100
  • Why a Done list on the story never asks whether the tag is sitting on a child unit test
Tag present

This hop

Nobody asked whether the carrier is an acceptance test. Decomposition is not acceptance. The finding kind is this hop.

Quality unread

The row

Keep the Jira story. Keep the Jama AC field. That is not this hop.

Keep the record

Proof

  • Ask does any :acceptance tag share a test carrier with a derived SYS, SW, or INT witness
  • Out STK-REQ-001 / AC-001 sits on TestValidJSON with SYS-REQ-999100. A tag is not PoC-quality acceptance evidence
Mixed tag counted

Same STK-REQ-001 / AC-001. Silent mixed tag, or this hop. Click the tabs.

Surface What they do What Proof does What we lose
Jira Done list Acceptance criteria as story copy. A quality floor on the :acceptance tag that claims to witness that copy. Not the story template.
acceptance_criteria_witnessed Whether a testable AC has its own acceptance tag. Whether that tag is an acceptance witness, not a child unit test wearing the label. Not the presence hop. See acceptance criteria.
acceptance_review_current Whether the AC list was stamped reviewed, deferred, or not applicable. Whether a credited tag is sitting on a derived test. Not the review stamp. See acceptance review current.
poc_quality_checked Whether a KnownIssue carries a poc_quality block. The same present-but-false hole, for acceptance tags instead of PoC checklists. Not the KnownIssue hop. See PoC quality checked.
Jama field The authoring programme. An AC if you put it there. A warning the audit can name next to the mixed tag. Not Jama's V&V. Jama still authors. We have not run a frozen Jama pack.

The teaching graph is still one mixed tag on one function. Move the acceptance tag onto its own test, or drop it. Do not treat a Jira Done field as this cell. Do not treat a child unit test as the assembled system.

proof audit --check acceptance_witness_quality --verbose
proof audit --check acceptance_criteria_witnessed

The presence hop stays on acceptance criteria. The stamp hop stays on acceptance review current. Jama still authors. Proof vs Jama.

03 · The honest loss

Proof names a mixed tag. It does not write the test, and it does not prove the Go.

A quiet proof audit --check acceptance_witness_quality can still mean there were no :acceptance tags. Jama still authors.

The hop does not write the comment. It does not execute an acceptance test. Severity is warning; findings do not fail the first install. Zero matching tags is a silent pass. A nil project is a pass. A scan error is a fail, not a quality finding. Two functions in the same file do not mix; a derived tag on TestParseJSON does not taint :acceptance on TestDemoCompletes. Opt-out is project.checks.acceptance_witness_quality.enabled: false; that is skip, never pass. The hop does not prove the Go. We have not scored this floor against a frozen Jama pack. The loss is named, not scored.

The presence hop stays on acceptance criteria. The engagement stays on software correctness audit. Jama still authors.

04 · Nearby questions

What people type next.

What is acceptance witness quality? Same question. Same URL.

Is this acceptance criteria? No. That hop is whether a testable AC has its own acceptance tag. This hop is whether that tag is sitting on a derived unit or integration test. See acceptance criteria.

Is this acceptance review current? No. That hop stamps that someone reviewed the AC list. This hop grades the tag that claims to witness it. See acceptance review current.

Do two tests in the same file mix? No. The carrier is the function. A derived witness on another function in that file does not taint a pure acceptance test.

Does a mixed tag fail the merge? No. The hop warns. A green VERIFY can still carry mixed tags unless you raise the fail level. The witness hop will still refuse to credit them.

Does a green hop prove the Go? No. The hop does not execute the function. It does not prove the shall.

Is Proof a Jama alternative for the shall? No. Jama still authors. Proof vs Jama.