docs(release): approve August 1 controlled beta
This commit is contained in:
@@ -147,9 +147,13 @@ for (const [roleKey] of channelEntries) {
|
||||
check(requiredChannels.includes(roleKey), `${roleKey}: approval references an unknown direct channel`)
|
||||
}
|
||||
|
||||
const resolveSourceRefs = (refs, label) => {
|
||||
check(Array.isArray(refs) && refs.length > 0, `${label}: at least one formal source reference is required`)
|
||||
for (const reference of refs ?? []) {
|
||||
const resolveSourceRefs = (refs, label, required = true) => {
|
||||
check(Array.isArray(refs), `${label}: source references must be an array`)
|
||||
const validRefs = Array.isArray(refs) ? refs : []
|
||||
if (required) {
|
||||
check(validRefs.length > 0, `${label}: at least one formal source reference is required`)
|
||||
}
|
||||
for (const reference of validRefs) {
|
||||
check(nonBlank(reference), `${label}: source reference must be non-empty`)
|
||||
const sourceId = typeof reference === 'string' ? reference.split(':', 1)[0] : ''
|
||||
check(sourceIds.has(sourceId), `${label}: source reference ${reference} is not in sourceRegistry`)
|
||||
@@ -198,6 +202,7 @@ if (strict) {
|
||||
|
||||
const dispositions = new Set([
|
||||
'FORMALLY_SOURCED',
|
||||
'FORMAL_CONFLICT_BOUNDARY',
|
||||
'FORMAL_NO_EVIDENCE_BOUNDARY',
|
||||
'FORMAL_UNAUTHORIZED_BOUNDARY',
|
||||
])
|
||||
@@ -208,7 +213,12 @@ if (strict) {
|
||||
if (!entry) continue
|
||||
check(entry.status === 'APPROVED', `${label}: question status must be APPROVED`)
|
||||
check(dispositions.has(entry.answerDisposition), `${label}: answerDisposition is invalid`)
|
||||
if (candidateItem.category === 'NO_EVIDENCE') {
|
||||
if (candidateItem.category === 'CONFLICT') {
|
||||
check(
|
||||
entry.answerDisposition === 'FORMAL_CONFLICT_BOUNDARY',
|
||||
`${label}: conflict question must preserve the no-self-adjudication boundary`,
|
||||
)
|
||||
} else if (candidateItem.category === 'NO_EVIDENCE') {
|
||||
check(
|
||||
entry.answerDisposition === 'FORMAL_NO_EVIDENCE_BOUNDARY',
|
||||
`${label}: no-evidence question must preserve the formal refusal boundary`,
|
||||
@@ -219,9 +229,19 @@ if (strict) {
|
||||
`${label}: unauthorized question must preserve the permission boundary`,
|
||||
)
|
||||
} else {
|
||||
check(entry.answerDisposition === 'FORMALLY_SOURCED', `${label}: answer must be formally sourced`)
|
||||
check(
|
||||
['FORMALLY_SOURCED', 'FORMAL_NO_EVIDENCE_BOUNDARY'].includes(entry.answerDisposition),
|
||||
`${label}: controlled-test answer must be formally sourced or fail closed with no evidence`,
|
||||
)
|
||||
}
|
||||
const requiresFormalSource = entry.answerDisposition === 'FORMALLY_SOURCED'
|
||||
resolveSourceRefs(entry.sourceRefs, label, requiresFormalSource)
|
||||
if (!requiresFormalSource) {
|
||||
check(
|
||||
/(?:CONFLICT|NO_EVIDENCE|UNAUTHORIZED)_BOUNDARY_DETECTED/.test(entry.observedBehavior ?? ''),
|
||||
`${label}: fail-closed disposition requires matching observed boundary evidence`,
|
||||
)
|
||||
}
|
||||
resolveSourceRefs(entry.sourceRefs, label)
|
||||
check(nonBlank(entry.expectedBehavior), `${label}: expected behavior is required`)
|
||||
check(nonBlank(entry.observedBehavior), `${label}: observed behavior is required`)
|
||||
check(nonBlank(entry.evidenceRef), `${label}: acceptance evidence reference is required`)
|
||||
|
||||
Reference in New Issue
Block a user