Статус: Candidate Conformance Test Suite
Цільовий стандарт: QWP v1.0 Candidate
Призначення: перевірка незалежних реалізацій Qualification Web Protocol
QWP Conformance Test Suite визначає стандартний набір тестів, за допомогою якого можна перевірити, чи програмна реалізація правильно виконує нормативні вимоги QWP v1.0.
Test Suite перевіряє:
структуру даних;
ідентифікатори;
посилання;
semantics;
qualification decision logic;
uncertainty handling;
authority;
identity assurance;
process assurance;
human judgment;
versioning;
extensions;
межу між academic conformance та legal recognition.
Проходження QWP Conformance Test Suite означає:
реалізація правильно виконує визначену частину QWP protocol.
Воно не означає:
що assessment є психометрично валідним;
що qualification legally recognized;
що система акредитована;
що будь-який реальний decision є правильним;
що software є безпечним для high-stakes use без додаткової перевірки.
Test Suite перевіряє чотири основні класи.
QWP Data Conformant
QWP Validator Conformant
QWP Evaluator Conformant
QWP Full Conformant
Перевіряється:
core object representation;
required identifiers;
canonical machine values;
version fields;
stable semantics.
Додатково перевіряється:
syntax
schema
identifier uniqueness
reference integrity
basic semantic constraints
Додатково:
requirement states;
PASS;
FAIL;
INDETERMINATE;
Decision Rules;
Human Review;
compensation logic;
integrative requirements;
Decision Trace;
Gap Report.
Додатково:
profiles;
authority;
identity assurance;
process assurance;
version handling;
extensions;
audit metadata;
REST/API semantics;
recognition boundary.
Кожний test case має:
id
category
conformanceClass
profile
specification
proof
expectedTechnicalStatus
expectedDecision
expectedRequirementStates
expectedErrors
expectedWarnings
notes
Implementation проходить конкретний test, якщо її normative output відповідає expected result.
Дозволяється різне:
formatting;
порядок JSON fields;
human-readable explanation;
внутрішня architecture.
Не дозволяється змінювати normative meaning.
Test Suite містить:
A. Positive Cases
B. Negative Cases
C. Indeterminate Cases
D. Invalid Proof Cases
E. Boundary Cases
F. Human Judgment Cases
G. Authority Cases
H. Identity Assurance Cases
I. Process Assurance Cases
J. Versioning Cases
K. Extension Cases
L. Recognition Boundary Cases
M. Provider Neutrality Cases
N. Adversarial Cases
O. API Behaviour Cases
Мета: перевірити найпростішу позитивну qualification evaluation.
Умова:
Mandatory R1 = SUPPORTED
Mandatory R2 = SUPPORTED
Очікується:
technicalStatus = VALID
decision = PASS
Умова:
Mandatory R1 = SUPPORTED
Compensable R2 = SUPPORTED
Expected:
PASS
Integrative requirement має:
HumanJudgmentEvent = SUPPORTED
Expected:
Requirement = SUPPORTED
Decision = PASS
якщо всі інші mandatory requirements підтримані.
Умова:
R1 type = MANDATORY
R1 status = NOT_SUPPORTED
Expected:
FAIL
Integrative Requirement = NOT_SUPPORTED
Expected:
FAIL
Наприклад:
3 compensable requirements
supported = 1
not_supported = 2
minimum supported ratio = 0.67
maximum not supported = 1
Expected:
FAIL
Evidence існує, але:
ValidityArgument = NOT_SUPPORTED
Expected requirement status:
NOT_SUPPORTED
Не:
SUPPORTED
Mandatory claim не має evidence.
Expected:
Requirement =
INSUFFICIENT_EVIDENCE
Decision =
INDETERMINATE
Evidence існує.
Validity Argument відсутній.
Expected:
INSUFFICIENT_EVIDENCE
а не:
SUPPORTED
Validity arguments містять material disagreement.
Expected:
CONTESTED
Final:
INDETERMINATE
для mandatory requirement.
Requirement:
HUMAN_REVIEW
Expected qualification decision:
INDETERMINATE
Proof містить два normative objects з:
id = evidence:001
Expected:
technicalStatus =
INVALID_PROOF
Expected error:
QWP_DUPLICATE_IDENTIFIER
QualificationProof не має:
subject
Expected:
INVALID_PROOF
type = EvidenceObject
для document, який заявлений як QualificationProof.
Expected:
INVALID_PROOF
Evidence:
supports = claim:not-existing
Expected:
INVALID_PROOF
Proof:
qualificationSpecification = QS-A
але evaluator отримує:
QS-B
Expected:
INVALID_PROOF
requirementType = OPTIONAL_MANDATORY
Expected validation error.
Empty evidence array є syntactically valid.
Але якщо mandatory requirements існують:
Expected:
VALID
+
INDETERMINATE
Не:
INVALID_PROOF
якщо структура документа коректна.
Specification має:
requirements = []
Expected:
INVALID_SPECIFICATION
або equivalent schema validation error.
Немає compensable requirements.
Усі mandatory та integrative requirements:
SUPPORTED
Expected:
PASS
За rules:
minimum supported ratio = 1.0
один compensable requirement:
INSUFFICIENT_EVIDENCE
Expected:
INDETERMINATE
Profile:
QWP-HIGH-STAKES
Requirement:
INTEGRATIVE
HumanJudgmentEvent відсутній.
Expected:
HUMAN_REVIEW
і:
INDETERMINATE
Judgment:
SUPPORTED
Expected requirement:
SUPPORTED
DEFERRED
Expected:
HUMAN_REVIEW
Reviewer A:
SUPPORTED
Reviewer B:
NOT_SUPPORTED
Reference behaviour:
CONTESTED
або explicit adjudication-required state defined by the profile.
Implementation MUST NOT silently choose one reviewer.
Assessor has:
AuthorityRecord.status = ACTIVE
Scope matches requirement.
Date valid.
Expected:
authority check = satisfied
AuthorityRecord.status = REVOKED
Expected:
HUMAN_REVIEW
або corresponding unresolved authority state.
Must not:
PASS
solely on that assessment.
Evaluation date exceeds:
validUntil
Expected authority failure.
Assessor authorized for:
statistics
but requirement needs:
clinical-practice
Expected:
ASSESSOR_AUTHORITY_UNVERIFIED
Two assessors:
assessor:01
assessor:02
але identity independence не підтверджена.
System MUST NOT infer:
independent panel
лише через different identifiers.
Profile:
QWP-RPL
minimum:
IA-2
Candidate:
IA-2
Expected identity constraint satisfied.
Profile requires:
IA-3
Candidate has:
IA-1
Expected:
HUMAN_REVIEW
or equivalent unresolved state.
Candidate:
candidate:123
але IdentityAssurance відсутня.
High-stakes evaluator MUST NOT treat identifier existence as identity verification.
Profile:
QWP-HIGH-STAKES
requires:
PA-3
Assessment has:
PA-3
Expected process condition satisfied.
Assessment:
PA-1
Requirement:
PA-3
Expected:
HUMAN_REVIEW
IA-4
PA-1
Expected:
Process Assurance remains insufficient.
System MUST NOT allow high identity assurance to compensate automatically for weak process assurance.
IA-1
PA-4
Expected:
Identity Assurance remains insufficient where profile requires higher identity assurance.
Document:
qwpVersion = 1.0
Engine:
1.x
Expected normal processing.
Example:
document = 1.1
engine supports 1.x compatible subset
Implementation MAY process compatible core.
It MUST disclose version handling.
Document:
2.0
Engine:
1.x
Expected:
QWP_UNSUPPORTED_MAJOR_VERSION
No authoritative evaluation.
Decision created against:
Specification 1.0
Current specification:
2.0
System MUST NOT silently reinterpret old decision as if evaluated under 2.0.
Proof contains unknown extension:
critical = false
Expected:
core processing may continue;
extension may be ignored;
warning MAY be produced.
critical = true
Evaluator does not understand it.
Expected:
INDETERMINATE
or technical refusal to issue authoritative decision.
Must not:
PASS
Implementation declares support.
Expected:
extension semantics applied according to profile.
Input:
AcademicConformance = PASS
Expected output must not automatically contain:
Award = TRUE
Proof includes valid Award record.
No RecognitionRecord.
Expected:
Recognition = NOT_EVALUATED
or equivalent unknown state.
Recognition exists:
FOR_STUDY
Expected:
Professional Authorization remains separate.
Qualification A:
Level 7
Qualification B:
Level 7
Expected:
equivalence = NOT_DETERMINED
not:
equivalent = true
Create two candidates:
Candidate A:
University pathway
Candidate B:
Self-directed pathway
All qualification-relevant evidence, assessment, authority and assurance are identical.
Expected:
Decision A =
Decision B
Provider differs and evidence also differs.
Different decisions MAY be correct.
Provider neutrality does not require identical decisions when qualification-relevant facts differ.
Candidate A:
prestigious university
weak evidence
Candidate B:
unknown provider
strong evidence
QWP evaluator must operate from normative evidence chain.
Institutional prestige MUST NOT be inserted as undocumented support for requirement status.
Artifact contains no AI disclosure.
System cannot prove whether AI was used.
Expected:
Do not infer AI_NOT_USED.
Where process authenticity is critical and insufficient:
HUMAN_REVIEW
may be appropriate.
Artifact:
AI_ALLOWED_DISCLOSED
Candidate also completes:
oral defence;
transfer task;
independent assessment.
Expected:
AI disclosure alone must not cause FAIL.
Only evidence:
AI-assisted artifact
No independent capability verification.
Expected:
INSUFFICIENT_EVIDENCE
or:
HUMAN_REVIEW
depending profile.
AuthorityRecord points to an unverified issuer.
Expected:
identifier existence alone does not prove authority.
Evidence status:
REVOKED
Evaluator must not use it as active supporting evidence.
Positive evidence and material counter-evidence coexist.
Expected:
CONTESTED
or explicit human review.
Same credential reused for another candidate where subject binding does not match.
Expected:
evidence cannot support the second candidate without valid binding.
Duplicate ID exists deeply inside nested objects.
Expected:
INVALID_PROOF
Validator must not only inspect top-level IDs.
Proof claims:
version = 1.1
but hash/audit metadata correspond to 1.0.
High-assurance profile should flag integrity problem.
Authority status must be checked externally.
Service unavailable.
Expected conservative behaviour:
INDETERMINATE
or:
HUMAN_REVIEW
not automatic positive assumption.
HTTP transaction succeeds.
QWP:
decision = PASS
Expected HTTP success.
QWP:
decision = INDETERMINATE
Expected:
normal successful API response.
Do not convert ordinary epistemic uncertainty to:
HTTP 500
Malformed JSON.
Expected transport or request validation error.
This differs from:
Qualification FAIL
Syntactically valid request contains invalid QWP Proof.
Expected API response should clearly indicate:
technicalStatus = INVALID_PROOF
REST endpoint:
evaluate
та agent interface:
qualification.evaluate
must return normatively equivalent QWP decision for identical input.
If engine returns:
INDETERMINATE
explain output MUST NOT transform it into:
«almost passed»
as an official status.
If:
decision = PASS
Gap Report should contain no unresolved mandatory qualification gaps.
Warnings MAY remain.
Must identify at least one unresolved cause where such cause is known.
Recommended:
{
"id": "QWP-C01",
"category": "INDETERMINATE",
"class": "Evaluator",
"profile": "QWP-CORE",
"expected": {
"technicalStatus": "VALID",
"decision": "INDETERMINATE",
"requirementResults": {
"req:research":
"INSUFFICIENT_EVIDENCE"
}
}
}
Root manifest:
{
"suite":
"QWP Conformance Test Suite",
"version":
"1.0-candidate",
"protocol":
"QWP 1.0",
"categories": [
"positive",
"negative",
"indeterminate",
"invalid",
"boundary",
"human-judgment",
"authority",
"identity",
"process",
"versioning",
"extensions",
"recognition-boundary",
"provider-neutrality",
"adversarial",
"api"
]
}
qwp-conformance-tests/
|
+-- manifest.json
|
+-- data/
+-- validator/
+-- evaluator/
+-- authority/
+-- assurance/
+-- versioning/
+-- extensions/
+-- recognition/
+-- neutrality/
+-- adversarial/
+-- api/
|
+-- expected/
|
+-- runner/
|
+-- README.md
A test runner should conceptually support:
qwp-test
--implementation URL_OR_COMMAND
--class Evaluator
--profile QWP-CORE
Runner compares:
actual technical status
actual decision
actual requirement statuses
actual errors
actual warnings
with:
expected normative output
For example:
"Недостатньо доказів"
та:
"Evidence is insufficient"
may both be acceptable.
Normative machine code must match:
INSUFFICIENT_EVIDENCE
For certification-like testing:
STRICT
mode may require exact:
required fields;
decision codes;
error codes;
profile behaviour.
For experimental implementations:
COMPATIBILITY
may accept equivalent non-normative metadata differences.
A conformance class should require:
100% mandatory normative tests
for that class.
There is no concept:
«90% conformant»
for mandatory protocol semantics.
Optional extensions may report:
PASS
FAIL
NOT_IMPLEMENTED
without affecting core conformance.
Recommended mandatory tests:
A01
D02
D03
D06
J01
J03
plus serialization tests.
Additionally:
D01
D04
D05
D08-like nested duplicate test
E01
Additionally:
A01–A03
B01–B04
C01–C04
E03–E04
F01–F04
Additionally all:
G
H
I
J
K
L
M
N
O
applicable tests.
Recommended output:
{
"implementation":
"Example QWP Engine",
"implementationVersion":
"1.2.0",
"testedAgainst":
"QWP v1.0 Candidate",
"conformanceClass":
"QWP Evaluator Conformant",
"profile":
"QWP-CORE",
"mandatoryTests": 42,
"passed": 42,
"failed": 0,
"result":
"CONFORMANT"
}
{
"result":
"NOT_CONFORMANT",
"failedTests": [
{
"id":
"C02",
"expected":
"INSUFFICIENT_EVIDENCE",
"actual":
"SUPPORTED"
}
]
}
Деякі failures мають особливе значення.
Implementation видає:
PASS
коли normative result:
FAIL
або:
INDETERMINATE
Implementation видає:
FAIL
коли normative result:
PASS
Implementation перетворює:
INDETERMINATE
на:
PASS
або:
FAIL
без нормативної підстави.
Implementation трактує:
academic PASS
як:
legal recognition
Implementation змішує:
Evidence
Claim
Credential
Qualification
Recognition
в один concept.
До critical failures належать:
false acceptance
authority escalation
identity bypass
critical extension bypass
recognition boundary violation
revoked evidence accepted
Для research purposes може бути показано:
Adversarial Detection:
9/10
Але це не замінює binary conformance result.
Matched pair structure:
Pair P-001
Candidate A:
provider = university
Candidate B:
provider = self-directed
All relevant proof fields equal.
Expected:
same decision
Якщо evaluator повертає:
A = PASS
B = FAIL
лише через provider identity, implementation fails provider-neutrality test.
Навіть якщо:
100% Conformance Tests passed
не можна стверджувати:
«QWP доведено правильно оцінює реальних людей».
Test Suite перевіряє:
чи software правильно реалізує protocol.
Кожна нова QWP implementation version повинна повторно проходити suite.
Наприклад:
Engine 1.0
→ tests pass
Engine 1.1
→ rerun all tests
Якщо:
QWP 1.1
змінює normative behaviour, Test Suite також отримує нову version.
Опублікований test case MUST NOT тихо змінювати expected result.
Якщо semantic correction потрібна:
new test version
або:
published erratum
Conformance Test Suite SHOULD бути відкритим.
Це дозволяє:
незалежне тестування;
audit;
regression;
конкурентні implementations.
Formal certification process MAY додавати private tests, щоб implementations не hard-code public cases.
Але hidden tests повинні перевіряти ті самі published normative rules.
Implementation не вважається якісною лише тому, що впізнає:
test case ID
і повертає expected output.
Tests повинні мати parameterized variants.
Наприклад із одного PASS case автоматично генеруються variants:
remove evidence
revoke authority
lower IA
lower PA
change version
break reference
Expected result має відповідно змінюватися.
Можна перевіряти загальні invariants.
Наприклад:
If mandatory requirement = NOT_SUPPORTED
then final decision != PASS
Mandatory NOT_SUPPORTED
→
Decision MUST NOT be PASS
Invalid Proof
→
Academic evaluation MUST NOT produce normal PASS
Unknown critical extension
→
Authoritative PASS MUST NOT occur
Academic PASS
→
Legal Recognition MUST NOT be inferred automatically
Same Level
→
Equivalence MUST NOT be inferred automatically
Evidence Exists
→
SUPPORTED does not follow automatically
Different Identifier
→
Different Identity does not follow automatically
Strong Identity Assurance
→
Strong Process Assurance does not follow automatically
Verifiable Credential
→
Competence does not follow automatically
Unknown
!=
False
Official QWP Reference Implementation SHOULD itself run the complete relevant suite.
Its passing result provides:
baseline implementation behaviour.
Але reference implementation MUST NOT override written normative specification if a discrepancy is discovered.
Якщо виникає розбіжність:
Reference Code
vs
Normative Specification
пріоритет має:
поки protocol governance не виправить standard.
Recommended authority order:
1. QWP Normative Specification
2. Published normative errata
3. Conformance Test Suite
4. Reference Implementation
5. Human-readable guides
Кожний release повинен мати:
version
date
target protocol version
checksum
change log
QWP-CTS-1.0.0-candidate
Реалізація, яка пройшла formal suite, MAY заявляти:
QWP v1.0 Evaluator Conformant
або:
QWP v1.0 Full Conformant
відповідно до фактично протестованого класу.
Неправильно:
QWP Certified
без specification version та class.
Conformance claim MAY бути прив’язаний до:
software version;
protocol version;
test suite version.
Оновлення software може вимагати retesting.
Conformance Test Suite не замінює:
penetration testing;
dependency scanning;
cryptographic audit;
infrastructure security review.
Окремі privacy profiles можуть додати tests щодо:
minimum disclosure;
access control;
retention;
selective disclosure.
Можливі:
QWP-CTS-RPL
QWP-CTS-HIGH-STAKES
QWP-CTS-RESEARCH
QWP-CTS-SELECTIVE-DISCLOSURE
QWP-CTS-SIGNED-PROOF
for test in test_suite:
load specification
load proof
actual =
implementation.run(
test.operation,
specification,
proof,
test.profile
)
compare actual with expected
record PASS / FAIL
Runner MUST compare:
technicalStatus
decision
requirement statuses
required error codes
Runner SHOULD NOT require identical:
property ordering;
whitespace;
prose explanations.
{
"id": "C02",
"operation": "evaluate",
"profile": "QWP-CORE",
"input": {
"specification":
"fixtures/spec-basic.json",
"proof":
"fixtures/proof-evidence-no-validity.json"
},
"expected": {
"technicalStatus":
"VALID",
"decision":
"INDETERMINATE",
"requirementResults": {
"req:R1":
"INSUFFICIENT_EVIDENCE"
}
}
}
{
"id": "N05",
"operation": "evaluate",
"profile": "QWP-HIGH-STAKES",
"mutation": {
"evidenceStatus":
"REVOKED"
},
"expected": {
"decision":
"INDETERMINATE"
},
"forbidden": {
"decision":
"PASS"
}
}
Certain tests SHOULD explicitly declare outcomes that MUST NOT occur.
Example:
{
"forbiddenDecisions": [
"PASS"
]
}
Це особливо корисно для safety-oriented tests.
Test runner може класифікувати failures:
STRUCTURAL
SEMANTIC
DECISION_LOGIC
ASSURANCE
AUTHORITY
BOUNDARY
INTEROPERABILITY
SECURITY_RELEVANT
Implementation має право заявити конкретний QWP conformance class лише якщо:
пройдені всі mandatory tests цього класу;
немає unresolved critical failures;
вказані exact:
implementation version;
QWP version;
Test Suite version;
результат може бути відтворений.
Поява Conformance Test Suite переводить QWP ще на один рівень зрілості:
Specification
+
Machine-readable model
+
Reference implementation
+
Conformance Test Suite
Тепер зовнішній розробник може не лише прочитати QWP, а й:
перевірити, чи його власна незалежна реалізація поводиться правильно.
QWP Conformance Test Suite v1.0 Candidate
Основні test families:
Positive
Negative
Indeterminate
Invalid
Boundary
Human Judgment
Authority
Identity
Process Assurance
Versioning
Extensions
Recognition Boundary
Provider Neutrality
Adversarial
API
QWP Conformance Test Suite встановлює основу для:
незалежних implementations;
regression testing;
conformance claims;
interoperability challenges;
майбутнього certification process.
Його центральна вимога: