feat(web): add IwoooS handoff review outcomes
This commit is contained in:
@@ -2390,6 +2390,59 @@
|
||||
"guard": "active runtime gates=0; action buttons=false"
|
||||
}
|
||||
}
|
||||
},
|
||||
"hostOwnerDecisionRecordHumanHandoffReadinessReviewOutcomes": {
|
||||
"title": "Host Owner Decision Record Human Handoff Readiness Review Outcome Lanes",
|
||||
"subtitle": "Human handoff readiness review outcome lanes only show next-step routing after checklist review. They do not mark review passed, start handoff, mark handoff ready, create decision records, accept owner decisions, create approval records, or open runtime gates.",
|
||||
"laneLabel": "Handoff review outcome",
|
||||
"nextLabel": "Next step",
|
||||
"items": {
|
||||
"readyForHumanRecordOwnerReviewCandidate": {
|
||||
"title": "Ready for human record owner review candidate",
|
||||
"body": "When all readiness review conditions are readable, this can only display a future candidate state for human record owner review.",
|
||||
"next": "display review candidate; review passed=0, handoff started=0"
|
||||
},
|
||||
"identityTraceNeedsRefresh": {
|
||||
"title": "Identity trace needs refresh",
|
||||
"body": "When candidate record id, version, source outcome lane, source queue review, or trace pointer is unclear, route back to the identity packet.",
|
||||
"next": "refresh identity trace; handoff ready=0"
|
||||
},
|
||||
"ownerBoundaryNeedsClarification": {
|
||||
"title": "Owner boundary needs clarification",
|
||||
"body": "When record owner, backup owner, contact point, or responsibility boundary is unreadable, route back to the owner boundary packet.",
|
||||
"next": "clarify owner boundary; decision received=0"
|
||||
},
|
||||
"decisionSummaryNeedsClarification": {
|
||||
"title": "Decision summary needs clarification",
|
||||
"body": "When decision summary, candidate conclusion, or no-execution statement is unreadable, route back to the decision summary packet.",
|
||||
"next": "clarify decision summary; record created=false"
|
||||
},
|
||||
"scopeExpiryNeedsRefresh": {
|
||||
"title": "Scope and expiry need refresh",
|
||||
"body": "When host, network, service, exclusion, observation intent, or expiry is stale or out of scope, route back to the scope packet.",
|
||||
"next": "refresh scope / expiry; review passed=0"
|
||||
},
|
||||
"scanLimitsRemainAmbiguous": {
|
||||
"title": "Scan limits remain ambiguous",
|
||||
"body": "If observe-only, future active scan, or credentialed scan limits can still be mistaken for authorization, route back to the scan limits packet.",
|
||||
"next": "clarify scan limits; scan authorized=false"
|
||||
},
|
||||
"credentialBoundaryFailed": {
|
||||
"title": "Credential boundary failed",
|
||||
"body": "If credential boundary is not metadata-only or plaintext, token value, and raw secret boundaries are unclear, quarantine and request evidence refresh.",
|
||||
"next": "refresh credential boundary; secret collection=false"
|
||||
},
|
||||
"maintenanceRollbackIncomplete": {
|
||||
"title": "Maintenance and rollback incomplete",
|
||||
"body": "If maintenance window, constraints, rollback owner, recovery path, or human contact is missing, it cannot enter human record owner review semantics.",
|
||||
"next": "refresh maintenance / rollback; host change=false"
|
||||
},
|
||||
"runtimeGateStillRequired": {
|
||||
"title": "Runtime gate still required",
|
||||
"body": "Validation evidence or follow-up runtime gate pointer still requires a separate gate and cannot open from readiness review outcome.",
|
||||
"next": "active runtime gates=0; action buttons=false"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"tickets": {
|
||||
|
||||
@@ -2391,6 +2391,59 @@
|
||||
"guard": "active runtime gates=0;action buttons=false"
|
||||
}
|
||||
}
|
||||
},
|
||||
"hostOwnerDecisionRecordHumanHandoffReadinessReviewOutcomes": {
|
||||
"title": "主機 Owner Decision Record Human Handoff Readiness Review Outcome Lanes",
|
||||
"subtitle": "Human handoff readiness review outcome lanes 只顯示 checklist 後的下一步分流。不代表 review passed、不開始 handoff、不標記 handoff ready、不建立 decision record、不接受 owner decision、不建立 approval record、不開 runtime gate。",
|
||||
"laneLabel": "Handoff review outcome",
|
||||
"nextLabel": "下一步",
|
||||
"items": {
|
||||
"readyForHumanRecordOwnerReviewCandidate": {
|
||||
"title": "Ready for human record owner review candidate",
|
||||
"body": "所有 readiness review 條件都可讀時,只能顯示未來交給人工 record owner 看看的候選狀態。",
|
||||
"next": "顯示 review candidate;review passed=0、handoff started=0"
|
||||
},
|
||||
"identityTraceNeedsRefresh": {
|
||||
"title": "Identity trace needs refresh",
|
||||
"body": "candidate record id、版本、來源 outcome lane、source queue review 或 trace pointer 不清楚時,回到 identity packet 補證。",
|
||||
"next": "補 identity trace;handoff ready=0"
|
||||
},
|
||||
"ownerBoundaryNeedsClarification": {
|
||||
"title": "Owner boundary needs clarification",
|
||||
"body": "record owner、backup owner、聯絡窗口或責任邊界不可讀時,回到 owner boundary packet 補文字。",
|
||||
"next": "補 owner boundary;decision received=0"
|
||||
},
|
||||
"decisionSummaryNeedsClarification": {
|
||||
"title": "Decision summary needs clarification",
|
||||
"body": "decision summary、候選結論或 no-execution statement 不可讀時,回到 decision summary packet。",
|
||||
"next": "補 decision summary;record created=false"
|
||||
},
|
||||
"scopeExpiryNeedsRefresh": {
|
||||
"title": "Scope and expiry need refresh",
|
||||
"body": "host、network、service、exclusion、觀察目的或 expiry 過期或越界時,回到 scope packet。",
|
||||
"next": "補 scope / expiry;review passed=0"
|
||||
},
|
||||
"scanLimitsRemainAmbiguous": {
|
||||
"title": "Scan limits remain ambiguous",
|
||||
"body": "observe-only、future active scan 或 credentialed scan limits 仍可能被誤讀成授權時,回到 scan limits packet。",
|
||||
"next": "補 scan limits;scan authorized=false"
|
||||
},
|
||||
"credentialBoundaryFailed": {
|
||||
"title": "Credential boundary failed",
|
||||
"body": "credential boundary 若不是 metadata-only,或 plaintext、token value、raw secret 邊界不清楚,必須隔離補證。",
|
||||
"next": "補 credential boundary;secret collection=false"
|
||||
},
|
||||
"maintenanceRollbackIncomplete": {
|
||||
"title": "Maintenance and rollback incomplete",
|
||||
"body": "維護窗口、限制條件、rollback owner、復原路徑或人工聯絡點缺漏時,不能進入人工 record owner review 語義。",
|
||||
"next": "補 maintenance / rollback;host change=false"
|
||||
},
|
||||
"runtimeGateStillRequired": {
|
||||
"title": "Runtime gate still required",
|
||||
"body": "validation evidence 或 follow-up runtime gate pointer 仍需要獨立 gate,不能由 readiness review outcome 開 gate。",
|
||||
"next": "active runtime gates=0;action buttons=false"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"tickets": {
|
||||
|
||||
@@ -257,6 +257,13 @@ type HostOwnerDecisionRecordHumanHandoffReadinessReviewItem = {
|
||||
tone: 'steady' | 'warn' | 'locked'
|
||||
}
|
||||
|
||||
type HostOwnerDecisionRecordHumanHandoffReadinessReviewOutcomeLane = {
|
||||
key: string
|
||||
lane: string
|
||||
icon: typeof ShieldCheck
|
||||
tone: 'steady' | 'warn' | 'locked'
|
||||
}
|
||||
|
||||
const postureMetrics: PostureMetric[] = [
|
||||
{ key: 'overall', value: '58%', tone: 'warn' },
|
||||
{ key: 'framework', value: '80-85%', tone: 'steady' },
|
||||
@@ -614,6 +621,18 @@ const hostOwnerDecisionRecordHumanHandoffReadinessReviewItems: HostOwnerDecision
|
||||
{ key: 'runtimeGateSeparate', check: 'FHC8', icon: ShieldCheck, tone: 'locked' },
|
||||
]
|
||||
|
||||
const hostOwnerDecisionRecordHumanHandoffReadinessReviewOutcomeLanes: HostOwnerDecisionRecordHumanHandoffReadinessReviewOutcomeLane[] = [
|
||||
{ key: 'readyForHumanRecordOwnerReviewCandidate', lane: 'FHV1', icon: CheckCircle2, tone: 'steady' },
|
||||
{ key: 'identityTraceNeedsRefresh', lane: 'FHV2', icon: FileText, tone: 'warn' },
|
||||
{ key: 'ownerBoundaryNeedsClarification', lane: 'FHV3', icon: Bell, tone: 'warn' },
|
||||
{ key: 'decisionSummaryNeedsClarification', lane: 'FHV4', icon: ClipboardCheck, tone: 'warn' },
|
||||
{ key: 'scopeExpiryNeedsRefresh', lane: 'FHV5', icon: Radar, tone: 'warn' },
|
||||
{ key: 'scanLimitsRemainAmbiguous', lane: 'FHV6', icon: Activity, tone: 'locked' },
|
||||
{ key: 'credentialBoundaryFailed', lane: 'FHV7', icon: Lock, tone: 'locked' },
|
||||
{ key: 'maintenanceRollbackIncomplete', lane: 'FHV8', icon: Clock3, tone: 'warn' },
|
||||
{ key: 'runtimeGateStillRequired', lane: 'FHV9', icon: ShieldCheck, tone: 'locked' },
|
||||
]
|
||||
|
||||
const evidenceItems = [
|
||||
'iwooos-posture-projection.snapshot.json',
|
||||
'security-rollout-policy.snapshot.json',
|
||||
@@ -1628,6 +1647,38 @@ function HostOwnerDecisionRecordHumanHandoffReadinessReviewCard({
|
||||
)
|
||||
}
|
||||
|
||||
function HostOwnerDecisionRecordHumanHandoffReadinessReviewOutcomeCard({
|
||||
item,
|
||||
}: {
|
||||
item: HostOwnerDecisionRecordHumanHandoffReadinessReviewOutcomeLane
|
||||
}) {
|
||||
const t = useTranslations('iwooos.hostOwnerDecisionRecordHumanHandoffReadinessReviewOutcomes')
|
||||
const Icon = item.icon
|
||||
return (
|
||||
<div style={{ ...band, minHeight: 190, padding: 16 }}>
|
||||
<div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', gap: 12 }}>
|
||||
<div style={{ display: 'flex', alignItems: 'center', gap: 9 }}>
|
||||
<Icon size={18} color={toneColors[item.tone]} />
|
||||
<span style={{ fontSize: 11, color: '#87867f' }}>{t('laneLabel')}</span>
|
||||
</div>
|
||||
<span style={{ fontSize: 11, color: '#9b978b' }}>{item.lane}</span>
|
||||
</div>
|
||||
<h2 style={{ fontSize: 14, margin: '12px 0 6px', color: '#141413' }}>
|
||||
{t(`items.${item.key}.title` as never)}
|
||||
</h2>
|
||||
<p style={{ fontSize: 12, lineHeight: 1.55, color: '#6f6d66', margin: 0 }}>
|
||||
{t(`items.${item.key}.body` as never)}
|
||||
</p>
|
||||
<div style={{ marginTop: 10, display: 'grid', gap: 5 }}>
|
||||
<div style={{ fontSize: 11, color: '#87867f' }}>{t('nextLabel')}</div>
|
||||
<div style={{ fontSize: 11, color: toneColors[item.tone], lineHeight: 1.45 }}>
|
||||
{t(`items.${item.key}.next` as never)}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
export default function IwoooSPage({ params }: { params: { locale: string } }) {
|
||||
const t = useTranslations('iwooos')
|
||||
|
||||
@@ -2220,6 +2271,28 @@ export default function IwoooSPage({ params }: { params: { locale: string } }) {
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section style={{ marginBottom: 14 }}>
|
||||
<div style={{ marginBottom: 14 }}>
|
||||
<h2 style={{ fontSize: 16, margin: 0 }}>
|
||||
{t('hostOwnerDecisionRecordHumanHandoffReadinessReviewOutcomes.title')}
|
||||
</h2>
|
||||
<p style={{ fontSize: 12, color: '#6f6d66', margin: '6px 0 0', lineHeight: 1.55 }}>
|
||||
{t('hostOwnerDecisionRecordHumanHandoffReadinessReviewOutcomes.subtitle')}
|
||||
</p>
|
||||
</div>
|
||||
<div
|
||||
style={{
|
||||
display: 'grid',
|
||||
gridTemplateColumns: 'repeat(auto-fit, minmax(210px, 1fr))',
|
||||
gap: 12,
|
||||
}}
|
||||
>
|
||||
{hostOwnerDecisionRecordHumanHandoffReadinessReviewOutcomeLanes.map(item => (
|
||||
<HostOwnerDecisionRecordHumanHandoffReadinessReviewOutcomeCard key={item.key} item={item} />
|
||||
))}
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section
|
||||
style={{
|
||||
display: 'grid',
|
||||
|
||||
@@ -1,3 +1,17 @@
|
||||
## 2026-05-20 | 資安供應鏈 S2.40:IwoooS Host Owner Decision Record Human Handoff Readiness Review Outcome Lanes
|
||||
|
||||
**背景**:S2.39 已把 handoff readiness packets 進人工 record owner 前的只讀 review checklist 顯示出來;本輪補上 checklist 後的只讀 outcome lanes,避免使用者把 review outcome 誤讀成 review passed、handoff started、handoff ready、已 enqueue、正式 decision record 已建立或已批准。
|
||||
|
||||
**完成**:
|
||||
- `/iwooos` 新增「主機 Owner Decision Record Human Handoff Readiness Review Outcome Lanes」,顯示 ready for human record owner review candidate、identity trace needs refresh、owner boundary needs clarification、decision summary needs clarification、scope and expiry need refresh、scan limits remain ambiguous、credential boundary failed、maintenance and rollback incomplete、runtime gate still required 九個只讀結果分流。
|
||||
- `iwooos_posture_projection_v1` schema / snapshot 新增 `host_owner_decision_record_human_handoff_readiness_review_outcome_lanes` 與 `host_owner_decision_record_human_handoff_readiness_review_outcome_lane_count=9`,每個 lane 固定 `display_mode=owner_decision_record_human_handoff_readiness_review_outcome_only`、`human_record_owner_handoff_review_passed_count=0`、`human_record_owner_handoff_started_count=0`、`human_record_owner_handoff_ready_count=0`、`formal_record_queue_review_passed_count=0`、`formal_record_queue_enqueued_count=0`、`decision_record_created=false`、`owner_decision_received_count=0`、`owner_decision_accepted_count=0`、`owner_approval_record_created=false`、`runtime_gate_opened=false`、`raw_payload_allowed=false`、`secret_value_collection_allowed=false`、`runtime_execution_authorized=false`、`action_buttons_allowed=false`、`not_authorization=true`。
|
||||
- `security-mirror-progress-guard.py` 開始驗證九個 host owner decision record human handoff readiness review outcome lanes、順序、outcome states,以及 review passed、handoff started / ready、queue enqueued、decision record、owner decision、approval record、runtime gate、raw payload、secret value、runtime / action button 仍全部鎖住。
|
||||
- `security_mirror_status_rollup_v1` micro progress ledger 新增 `s2_40_iwooos_host_owner_decision_record_human_handoff_readiness_review_outcome_lanes`,headline progress 仍維持 58%。
|
||||
|
||||
**仍禁止**:
|
||||
- host owner decision record human handoff readiness review outcome lanes 不代表 review passed、handoff started、handoff ready、queue enqueued、decision record created、owner decision received / accepted、approved、approval record created、runtime gate opened、raw payload ingestion、secret value collection、active scan、credentialed scan、Kali `/execute`、SSH 登入、主機變更、Kali 更新或 blocking control。
|
||||
- 真正人工 owner decision、正式決策紀錄、批准與後續 runtime gate 仍需脫敏 evidence、人工簽核與獨立 runtime gate。
|
||||
|
||||
## 2026-05-20 | 資安供應鏈 S2.39:IwoooS Host Owner Decision Record Human Handoff Readiness Review Checklist
|
||||
|
||||
**背景**:S2.38 已把 ready for human record owner handoff 後的只讀 readiness packets 顯示出來;本輪補上 readiness packets 後的只讀 review checklist,避免使用者把 handoff readiness 誤讀成 review passed、handoff started、handoff ready、已 enqueue、正式 decision record 已建立或已批准。
|
||||
|
||||
@@ -46,6 +46,7 @@
|
||||
"host_owner_decision_record_formal_record_queue_review_outcome_lanes",
|
||||
"host_owner_decision_record_human_handoff_readiness_packets",
|
||||
"host_owner_decision_record_human_handoff_readiness_review_checklist_items",
|
||||
"host_owner_decision_record_human_handoff_readiness_review_outcome_lanes",
|
||||
"frontend_surface_coverage_groups",
|
||||
"evidence_refs",
|
||||
"allowed_frontend_outputs",
|
||||
@@ -131,6 +132,7 @@
|
||||
"host_owner_decision_record_formal_record_queue_review_outcome_lane_count",
|
||||
"host_owner_decision_record_human_handoff_readiness_packet_count",
|
||||
"host_owner_decision_record_human_handoff_readiness_review_checklist_item_count",
|
||||
"host_owner_decision_record_human_handoff_readiness_review_outcome_lane_count",
|
||||
"action_buttons_allowed"
|
||||
],
|
||||
"properties": {
|
||||
@@ -304,6 +306,10 @@
|
||||
"host_owner_decision_record_human_handoff_readiness_review_checklist_item_count": {
|
||||
"type": "integer",
|
||||
"const": 8
|
||||
},
|
||||
"host_owner_decision_record_human_handoff_readiness_review_outcome_lane_count": {
|
||||
"type": "integer",
|
||||
"const": 9
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
@@ -3022,6 +3028,118 @@
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
||||
},
|
||||
"host_owner_decision_record_human_handoff_readiness_review_outcome_lanes": {
|
||||
"type": "array",
|
||||
"minItems": 9,
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"lane_id",
|
||||
"display_order",
|
||||
"source_check_id",
|
||||
"outcome_state",
|
||||
"next_step",
|
||||
"display_mode",
|
||||
"human_record_owner_handoff_review_passed_count",
|
||||
"human_record_owner_handoff_started_count",
|
||||
"human_record_owner_handoff_ready_count",
|
||||
"formal_record_queue_review_passed_count",
|
||||
"formal_record_queue_enqueued_count",
|
||||
"decision_record_created",
|
||||
"owner_decision_received_count",
|
||||
"owner_decision_accepted_count",
|
||||
"owner_approval_record_created",
|
||||
"runtime_gate_opened",
|
||||
"raw_payload_allowed",
|
||||
"secret_value_collection_allowed",
|
||||
"runtime_execution_authorized",
|
||||
"action_buttons_allowed",
|
||||
"not_authorization"
|
||||
],
|
||||
"properties": {
|
||||
"lane_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"display_order": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
"source_check_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"outcome_state": {
|
||||
"type": "string"
|
||||
},
|
||||
"next_step": {
|
||||
"type": "string"
|
||||
},
|
||||
"display_mode": {
|
||||
"const": "owner_decision_record_human_handoff_readiness_review_outcome_only"
|
||||
},
|
||||
"human_record_owner_handoff_review_passed_count": {
|
||||
"type": "integer",
|
||||
"const": 0
|
||||
},
|
||||
"human_record_owner_handoff_started_count": {
|
||||
"type": "integer",
|
||||
"const": 0
|
||||
},
|
||||
"human_record_owner_handoff_ready_count": {
|
||||
"type": "integer",
|
||||
"const": 0
|
||||
},
|
||||
"formal_record_queue_review_passed_count": {
|
||||
"type": "integer",
|
||||
"const": 0
|
||||
},
|
||||
"formal_record_queue_enqueued_count": {
|
||||
"type": "integer",
|
||||
"const": 0
|
||||
},
|
||||
"decision_record_created": {
|
||||
"type": "boolean",
|
||||
"const": false
|
||||
},
|
||||
"owner_decision_received_count": {
|
||||
"type": "integer",
|
||||
"const": 0
|
||||
},
|
||||
"owner_decision_accepted_count": {
|
||||
"type": "integer",
|
||||
"const": 0
|
||||
},
|
||||
"owner_approval_record_created": {
|
||||
"type": "boolean",
|
||||
"const": false
|
||||
},
|
||||
"runtime_gate_opened": {
|
||||
"type": "boolean",
|
||||
"const": false
|
||||
},
|
||||
"raw_payload_allowed": {
|
||||
"type": "boolean",
|
||||
"const": false
|
||||
},
|
||||
"secret_value_collection_allowed": {
|
||||
"type": "boolean",
|
||||
"const": false
|
||||
},
|
||||
"runtime_execution_authorized": {
|
||||
"type": "boolean",
|
||||
"const": false
|
||||
},
|
||||
"action_buttons_allowed": {
|
||||
"type": "boolean",
|
||||
"const": false
|
||||
},
|
||||
"not_authorization": {
|
||||
"type": "boolean",
|
||||
"const": true
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
|
||||
@@ -67,6 +67,7 @@ IwoooS 首版只讀取或對齊以下已提交 evidence:
|
||||
35. 8 個 host owner decision record formal record queue review outcome lanes,顯示 queue review 後的只讀結果分流與下一步。
|
||||
36. 8 個 host owner decision record human handoff readiness packets,顯示未來交給人工 record owner 前要準備的 metadata,但不開始 handoff、不標記 ready、不建立 decision record、不開 runtime gate。
|
||||
37. 8 個 host owner decision record human handoff readiness review checklist items,顯示 readiness packets 進人工 record owner 前仍需只讀核對的條件,但不標記 review passed、不開始 handoff、不建立 decision record、不開 runtime gate。
|
||||
38. 9 個 host owner decision record human handoff readiness review outcome lanes,顯示 readiness review 後的只讀結果分流與下一步,但不標記 review passed、不開始 handoff、不標記 handoff ready、不 enqueue、不建立 decision record、不開 runtime gate。
|
||||
|
||||
## 3.1 既有前端資安頁面整合
|
||||
|
||||
@@ -600,6 +601,26 @@ S2.39 將 handoff readiness packets 後的核對條件拆成八個只讀 checkli
|
||||
|
||||
這個 handoff readiness review checklist 不代表 handoff readiness review 已通過、handoff 已開始、handoff 已 ready、formal record queue review 已通過、正式紀錄已 enqueue、decision record 已建立、owner decision 已接受、資安批准已完成或 runtime gate 已開啟。它只讓 IwoooS 把 readiness packets 進人工 record owner 前的核對條件顯示清楚。
|
||||
|
||||
## 3.31 Host Owner Decision Record Human Handoff Readiness Review Outcome Lanes
|
||||
|
||||
S2.40 將 handoff readiness review checklist 後的結果拆成九個只讀 outcome lanes。這一層只回答「readiness review 後下一步要補哪一段或是否可顯示 human record owner review candidate」,不標記 review passed、不開始 handoff、不標記 handoff ready、不 enqueue、不建立 decision record、不接受 owner decision、不建立 approval record、不開 runtime gate。
|
||||
|
||||
| 順序 | Handoff readiness review outcome | 來源 check | 下一步 |
|
||||
|------|----------------------------------|------------|--------|
|
||||
| 1 | Ready for human record owner review candidate | identity trace readable | 顯示 review candidate;handoff started=0、ready=0 |
|
||||
| 2 | Identity trace needs refresh | identity trace readable | 補 identity trace;review passed=0 |
|
||||
| 3 | Owner boundary needs clarification | owner boundary readable | 補 owner boundary;owner decision received=0 |
|
||||
| 4 | Decision summary needs clarification | decision summary readable | 補 decision summary;decision record created=false |
|
||||
| 5 | Scope and expiry need refresh | scope and expiry current | 補 scope / expiry;queue review passed=0 |
|
||||
| 6 | Scan limits remain ambiguous | scan limits not authorization | 補 scan limits;scan authorized=false |
|
||||
| 7 | Credential boundary failed | credential boundary metadata-only | 補 metadata-only boundary;secret collection=false |
|
||||
| 8 | Maintenance and rollback incomplete | maintenance and rollback traceable | 補 maintenance / rollback;host change=false |
|
||||
| 9 | Runtime gate still required | runtime gate separate | active runtime gates=0;action buttons=false |
|
||||
|
||||
每個 handoff readiness review outcome lane 都固定 `display_mode=owner_decision_record_human_handoff_readiness_review_outcome_only`、`human_record_owner_handoff_review_passed_count=0`、`human_record_owner_handoff_started_count=0`、`human_record_owner_handoff_ready_count=0`、`formal_record_queue_review_passed_count=0`、`formal_record_queue_enqueued_count=0`、`decision_record_created=false`、`owner_decision_received_count=0`、`owner_decision_accepted_count=0`、`owner_approval_record_created=false`、`runtime_gate_opened=false`、`raw_payload_allowed=false`、`secret_value_collection_allowed=false`、`runtime_execution_authorized=false`、`action_buttons_allowed=false`、`not_authorization=true`。
|
||||
|
||||
這個 outcome board 不代表 handoff readiness review 已通過、handoff 已開始、handoff 已 ready、formal record queue review 已通過、正式紀錄已 enqueue、decision record 已建立、owner decision 已接受、資安批准已完成或 runtime gate 已開啟。它只讓 IwoooS 把 readiness review 後的補件、review candidate 與 runtime gate 分離狀態顯示清楚。
|
||||
|
||||
## 4. 仍禁止
|
||||
|
||||
IwoooS 不得提供下列輸出:
|
||||
@@ -636,7 +657,8 @@ IwoooS 不得提供下列輸出:
|
||||
30. 把 owner decision record formal record queue review outcome 當成 approval、標記 queue review outcome passed、由 queue review outcome enqueue 或建立 decision record,或從 queue review outcome 開 runtime gate。
|
||||
31. 把 owner decision record handoff readiness 當成 approval、開始 human record owner handoff、標記 handoff ready、由 readiness packet 建立 decision record,或從 handoff readiness 開 runtime gate。
|
||||
32. 把 owner decision record handoff readiness review 當成 approval、標記 handoff readiness review passed、開始 human record owner handoff、標記 handoff ready、由 readiness review 建立 decision record,或從 readiness review 開 runtime gate。
|
||||
33. 把 58% progress、contract count、mirror readiness 或前端可見狀態當成授權。
|
||||
33. 把 owner decision record handoff readiness review outcome 當成 approval、標記 handoff readiness review outcome passed、開始 human record owner handoff、標記 handoff ready、由 readiness review outcome 建立 decision record,或從 readiness review outcome 開 runtime gate。
|
||||
34. 把 58% progress、contract count、mirror readiness 或前端可見狀態當成授權。
|
||||
|
||||
## 5. 驗證
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
| Owner response validation | S4.13 已建立;四包 owner response 目前 received/accepted 皆為 0;4 條 missing response lanes、4 步 collection order、next collection candidate、6 條 evidence routing rules、8 個 display sections、7 條 state transition rules、9 個 reviewer checklist items、7 條 reviewer outcome lanes、4 個 reviewer audit event templates、5 個 reviewer audit display sections、6 個 reviewer audit collection checks、5 個 reviewer audit redaction examples、5 條 reviewer audit retention rules、6 個 reviewer audit retention checks、6 個 reviewer audit handoff packets、6 個 reviewer audit handoff checks、6 個 parallel session sync checks、6 條 parallel session conflict lanes、6 個 parallel session recovery checks 與 7 條 parallel session recovery outcome lanes 可供 AwoooP 直接顯示;下一個建議收件為 S4.9 Gitea owner attestation;latest local validation 為 `SOURCE_CONTROL_OWNER_RESPONSE_GUARD_OK`,reviewer audit emitted 仍為 0,不代表 owner response 已收到或任何執行授權 |
|
||||
| Low-friction rollout policy | S1.3 已補 7 條 non-blocking escalation lanes;LOW / MEDIUM、缺 owner response、partial mirror、source-control drift、Kali observe finding、workflow / secret name gap 與 headline holding 初期只能 observe / warn;`owner_review_required_before_blocking=true`、`runtime_blocking_allowed=false` |
|
||||
| IwoooS frontend posture | S2.8 已新增 `/iwooos` read-only Information Security 入口;顯示 Security Posture / Exposure、source-control supply chain、Kali 112 Mesh、approval boundary、non-blocking lanes 與 evidence refs;不新增執行按鈕 |
|
||||
| IwoooS posture projection | S2.9 已新增 `iwooos_posture_projection_v1`;S2.10 已把 10 個既有前端資安相關頁面納入 projection;S2.11 已補 4 個 coverage groups 與 5 個 conflict controls;S2.12 已補 6 個只讀 operator journey steps;S2.13 已補 7 個 owner evidence readiness items;S2.14 已補 3 個 host coverage items:Kali 112、開發主機 168、開發主機 111;S2.15 已補 6 個 host action gate items;S2.16 已補 7 個 host evidence readiness items;S2.17 已補 7 個 host evidence collection order steps;S2.18 已補 7 個 host evidence intake preflight checks;S2.19 已補 7 個 host evidence review outcome lanes;S2.20 已補 7 個 host evidence review handoff packets;S2.21 已補 7 個 host evidence reviewer checklist items;S2.22 已補 7 個 host evidence reviewer outcome lanes;S2.23 已補 7 個 host owner decision candidate packets;S2.24 已補 7 個 host owner decision review checklist items;S2.25 已補 7 個 host owner decision review outcome lanes;S2.26 已補 7 個 host owner decision record draft packets;S2.27 已補 7 個 host owner decision record draft review checklist items;S2.28 已補 7 個 host owner decision record draft review outcome lanes;S2.29 已補 7 個 host owner decision record write-up packets;S2.30 已補 7 個 host owner decision record write-up review checklist items;S2.31 已補 7 個 host owner decision record write-up review outcome lanes;S2.32 已補 7 個 host owner decision record formal candidate packets;S2.33 已補 7 個 host owner decision record formal candidate review checklist items;S2.34 已補 8 個 host owner decision record formal candidate review outcome lanes;S2.35 已補 8 個 host owner decision record formal record queue packets;S2.36 已補 8 個 host owner decision record formal record queue review checklist items;S2.37 已補 8 個 host owner decision record formal record queue review outcome lanes;S2.38 已補 8 個 host owner decision record human handoff readiness packets;S2.39 已補 8 個 host owner decision record human handoff readiness review checklist items;仍不新增 action button |
|
||||
| IwoooS posture projection | S2.9 已新增 `iwooos_posture_projection_v1`;S2.10 已把 10 個既有前端資安相關頁面納入 projection;S2.11 已補 4 個 coverage groups 與 5 個 conflict controls;S2.12 已補 6 個只讀 operator journey steps;S2.13 已補 7 個 owner evidence readiness items;S2.14 已補 3 個 host coverage items:Kali 112、開發主機 168、開發主機 111;S2.15 已補 6 個 host action gate items;S2.16 已補 7 個 host evidence readiness items;S2.17 已補 7 個 host evidence collection order steps;S2.18 已補 7 個 host evidence intake preflight checks;S2.19 已補 7 個 host evidence review outcome lanes;S2.20 已補 7 個 host evidence review handoff packets;S2.21 已補 7 個 host evidence reviewer checklist items;S2.22 已補 7 個 host evidence reviewer outcome lanes;S2.23 已補 7 個 host owner decision candidate packets;S2.24 已補 7 個 host owner decision review checklist items;S2.25 已補 7 個 host owner decision review outcome lanes;S2.26 已補 7 個 host owner decision record draft packets;S2.27 已補 7 個 host owner decision record draft review checklist items;S2.28 已補 7 個 host owner decision record draft review outcome lanes;S2.29 已補 7 個 host owner decision record write-up packets;S2.30 已補 7 個 host owner decision record write-up review checklist items;S2.31 已補 7 個 host owner decision record write-up review outcome lanes;S2.32 已補 7 個 host owner decision record formal candidate packets;S2.33 已補 7 個 host owner decision record formal candidate review checklist items;S2.34 已補 8 個 host owner decision record formal candidate review outcome lanes;S2.35 已補 8 個 host owner decision record formal record queue packets;S2.36 已補 8 個 host owner decision record formal record queue review checklist items;S2.37 已補 8 個 host owner decision record formal record queue review outcome lanes;S2.38 已補 8 個 host owner decision record human handoff readiness packets;S2.39 已補 8 個 host owner decision record human handoff readiness review checklist items;S2.40 已補 9 個 host owner decision record human handoff readiness review outcome lanes;仍不新增 action button |
|
||||
| Dry-run | `contract_defined_not_executed`;已納入 `CHECK_PROGRESS_GUARD` 與 `CHECK_OWNER_RESPONSE_GUARD`,latest local validation 為 `repo_snapshot_guard_pass`,仍不代表 production ingestion |
|
||||
| Runtime actions | `false` |
|
||||
| Payload ingestion | `false` |
|
||||
@@ -123,6 +123,7 @@
|
||||
| S2.37 IwoooS host owner decision record formal record queue review outcome lanes | framework detail | 0 | 只顯示 formal record queue review 後的八個只讀結果分流;review passed、queue enqueued、decision record created、accepted count、approval record、runtime gate、raw payload、secret value、runtime execution 與 action button 仍全部鎖住 |
|
||||
| S2.38 IwoooS host owner decision record human handoff readiness packets | framework detail | 0 | 只顯示未來 human record owner handoff 前的八個 metadata readiness packets;handoff started、handoff ready、review passed、queue enqueued、decision record created、accepted count、approval record、runtime gate、raw payload、secret value、runtime execution 與 action button 仍全部鎖住 |
|
||||
| S2.39 IwoooS host owner decision record human handoff readiness review checklist | framework detail | 0 | 只顯示 handoff readiness packets 進人工 record owner 前的八個只讀核對項;review passed、handoff started、handoff ready、queue enqueued、decision record created、accepted count、approval record、runtime gate、raw payload、secret value、runtime execution 與 action button 仍全部鎖住 |
|
||||
| S2.40 IwoooS host owner decision record human handoff readiness review outcome lanes | framework detail | 0 | 只顯示 handoff readiness review 後的九個只讀結果分流;review passed、handoff started、handoff ready、queue enqueued、decision record created、accepted count、approval record、runtime gate、raw payload、secret value、runtime execution 與 action button 仍全部鎖住 |
|
||||
|
||||
headline 進度要再往上,至少需要下列任一高層 gate 有實質 evidence:
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|------|------|
|
||||
| 日期 | 2026-05-17 |
|
||||
| 狀態 | S0/S1 read-only evidence 建置中 |
|
||||
| 本階段完成 | 資安供應鏈 contract manifest + Source Control Approval Board + Draft Reconcile Plan + Ref Detail Diff + Ref Truth Classification + Source Control Ref Truth Owner Response 收件包 + GitHub Primary Readiness Gate + GitHub Primary Rollback ADR + GitHub Target Owner Decision Response 收件包 + Gitea 認證清冊匯出請求 + Gitea 認證清冊匯入驗收契約 + Gitea 清冊覆蓋 Owner Attestation + Gitea Owner Attestation Approval Lane 對齊 + Gitea Owner Attestation Response 收件包 + Workflow / Secret Name Inventory + Workflow / Secret Name Local Evidence + Workflow / Secret Name Redacted Export Request + Workflow / Secret Name Owner Response 收件包 + Source Control Owner Response Validation Rollup + Kali 112 live integration status + Security Finding contract + Kali scan scope approval package + Security Approval Queue + S3 人工批准 Gate + S3 人工決策紀錄 + S3 人工審查封包 + S3 人工決策狀態轉移 + S3 後續 runtime gate 準備契約 + 鏡像 readiness index + 鏡像接收計畫 + 鏡像事件信封 + 鏡像路由矩陣 + 鏡像驗收契約 + 鏡像隔離契約 + 鏡像 dry-run 報告契約 + 鏡像狀態彙整契約 + IwoooS 前端態勢入口 + IwoooS posture projection contract + IwoooS 既有前端資安頁面整合 + IwoooS 覆蓋與邊界矩陣 + IwoooS 只讀資安處理旅程 + IwoooS owner evidence readiness board + IwoooS host coverage view + IwoooS host action gate matrix + IwoooS host evidence readiness board + IwoooS host evidence collection order + IwoooS host evidence intake preflight + IwoooS host evidence review outcome lanes + IwoooS host evidence review handoff packets + IwoooS host evidence reviewer checklist + IwoooS host evidence reviewer outcome lanes + IwoooS host owner decision candidate packets + IwoooS host owner decision review checklist + IwoooS host owner decision review outcome lanes + IwoooS host owner decision record draft packets + IwoooS host owner decision record draft review checklist + IwoooS host owner decision record draft review outcome lanes + IwoooS host owner decision record write-up packets + IwoooS host owner decision record write-up review checklist + IwoooS host owner decision record write-up review outcome lanes + IwoooS host owner decision record formal candidate packets + IwoooS host owner decision record formal candidate review checklist + IwoooS host owner decision record formal candidate review outcome lanes + IwoooS host owner decision record formal record queue packets + IwoooS host owner decision record formal record queue review checklist + IwoooS host owner decision record formal record queue review outcome lanes + IwoooS host owner decision record human handoff readiness packets + IwoooS host owner decision record human handoff readiness review checklist |
|
||||
| 本階段完成 | 資安供應鏈 contract manifest + Source Control Approval Board + Draft Reconcile Plan + Ref Detail Diff + Ref Truth Classification + Source Control Ref Truth Owner Response 收件包 + GitHub Primary Readiness Gate + GitHub Primary Rollback ADR + GitHub Target Owner Decision Response 收件包 + Gitea 認證清冊匯出請求 + Gitea 認證清冊匯入驗收契約 + Gitea 清冊覆蓋 Owner Attestation + Gitea Owner Attestation Approval Lane 對齊 + Gitea Owner Attestation Response 收件包 + Workflow / Secret Name Inventory + Workflow / Secret Name Local Evidence + Workflow / Secret Name Redacted Export Request + Workflow / Secret Name Owner Response 收件包 + Source Control Owner Response Validation Rollup + Kali 112 live integration status + Security Finding contract + Kali scan scope approval package + Security Approval Queue + S3 人工批准 Gate + S3 人工決策紀錄 + S3 人工審查封包 + S3 人工決策狀態轉移 + S3 後續 runtime gate 準備契約 + 鏡像 readiness index + 鏡像接收計畫 + 鏡像事件信封 + 鏡像路由矩陣 + 鏡像驗收契約 + 鏡像隔離契約 + 鏡像 dry-run 報告契約 + 鏡像狀態彙整契約 + IwoooS 前端態勢入口 + IwoooS posture projection contract + IwoooS 既有前端資安頁面整合 + IwoooS 覆蓋與邊界矩陣 + IwoooS 只讀資安處理旅程 + IwoooS owner evidence readiness board + IwoooS host coverage view + IwoooS host action gate matrix + IwoooS host evidence readiness board + IwoooS host evidence collection order + IwoooS host evidence intake preflight + IwoooS host evidence review outcome lanes + IwoooS host evidence review handoff packets + IwoooS host evidence reviewer checklist + IwoooS host evidence reviewer outcome lanes + IwoooS host owner decision candidate packets + IwoooS host owner decision review checklist + IwoooS host owner decision review outcome lanes + IwoooS host owner decision record draft packets + IwoooS host owner decision record draft review checklist + IwoooS host owner decision record draft review outcome lanes + IwoooS host owner decision record write-up packets + IwoooS host owner decision record write-up review checklist + IwoooS host owner decision record write-up review outcome lanes + IwoooS host owner decision record formal candidate packets + IwoooS host owner decision record formal candidate review checklist + IwoooS host owner decision record formal candidate review outcome lanes + IwoooS host owner decision record formal record queue packets + IwoooS host owner decision record formal record queue review checklist + IwoooS host owner decision record formal record queue review outcome lanes + IwoooS host owner decision record human handoff readiness packets + IwoooS host owner decision record human handoff readiness review checklist + IwoooS host owner decision record human handoff readiness review outcome lanes |
|
||||
| 原則 | 低摩擦分階段;文件、schema、read-only evidence 優先;不做 runtime enforcement、不切 primary |
|
||||
|
||||
## 0. 本階段完成後整體進度
|
||||
@@ -27,7 +27,7 @@ python3 scripts/security/security-mirror-progress-guard.py
|
||||
|
||||
### 0.2 Headline 58% 不代表停滯
|
||||
|
||||
近期 S4.10 request packet、template status ledger、audit event templates、redaction examples、collection checks、intake preflight checks、S4.11 request packet / template status ledger / audit event templates / redaction examples / collection checks / intake preflight checks、S4.12 request packet / template status ledger / audit event templates / redaction examples / collection checks / intake preflight checks、S4.13 evidence routing rules / display sections / state transition rules / reviewer checklist / reviewer outcome lanes / reviewer audit event templates / reviewer audit display sections / reviewer audit collection checks / reviewer audit redaction examples / reviewer audit retention rules / reviewer audit retention checks / reviewer audit handoff packets / reviewer audit handoff checks / parallel session sync checks / parallel session conflict lanes / parallel session recovery checks / recovery outcome lanes、S1.3 non-blocking escalation lanes、S2.8 IwoooS frontend posture entry,以及 S2.9-S2.39 IwoooS posture projection contract 都是有效進展,但它們是 framework detail,不是 owner response、runtime gate、production ingestion 或 GitHub primary readiness。因此 headline 仍維持 58%,避免把只讀框架誤算成已落地執行。
|
||||
近期 S4.10 request packet、template status ledger、audit event templates、redaction examples、collection checks、intake preflight checks、S4.11 request packet / template status ledger / audit event templates / redaction examples / collection checks / intake preflight checks、S4.12 request packet / template status ledger / audit event templates / redaction examples / collection checks / intake preflight checks、S4.13 evidence routing rules / display sections / state transition rules / reviewer checklist / reviewer outcome lanes / reviewer audit event templates / reviewer audit display sections / reviewer audit collection checks / reviewer audit redaction examples / reviewer audit retention rules / reviewer audit retention checks / reviewer audit handoff packets / reviewer audit handoff checks / parallel session sync checks / parallel session conflict lanes / parallel session recovery checks / recovery outcome lanes、S1.3 non-blocking escalation lanes、S2.8 IwoooS frontend posture entry,以及 S2.9-S2.40 IwoooS posture projection contract 都是有效進展,但它們是 framework detail,不是 owner response、runtime gate、production ingestion 或 GitHub primary readiness。因此 headline 仍維持 58%,避免把只讀框架誤算成已落地執行。
|
||||
|
||||
| 最近完成 | 目前狀態 | headline delta |
|
||||
|----------|----------|----------------|
|
||||
@@ -99,6 +99,7 @@ python3 scripts/security/security-mirror-progress-guard.py
|
||||
| S2.37 IwoooS host owner decision record formal record queue review outcome lanes | 已完成草案,將 ready for human record owner handoff、identity trace refresh、summary clarification、scope / expiry refresh、scan limits ambiguous、credential boundary failed、maintenance / rollback incomplete、runtime gate required 顯示成八個只讀結果分流 | 0 |
|
||||
| S2.38 IwoooS host owner decision record human handoff readiness packets | 已完成草案,將 handoff identity、owner boundary、decision summary、scope / expiry、scan limits、credential boundary、maintenance / rollback、runtime gate separation 顯示成八個只讀 readiness packets | 0 |
|
||||
| S2.39 IwoooS host owner decision record human handoff readiness review checklist | 已完成草案,將 identity trace、owner boundary、decision summary、scope / expiry、scan limits、credential boundary、maintenance / rollback、runtime gate separation 顯示成八個只讀 checklist items | 0 |
|
||||
| S2.40 IwoooS host owner decision record human handoff readiness review outcome lanes | 已完成草案,將 ready candidate、identity trace refresh、owner boundary clarification、decision summary clarification、scope / expiry refresh、scan limits ambiguous、credential boundary failed、maintenance / rollback incomplete、runtime gate required 顯示成九個只讀 outcome lanes | 0 |
|
||||
|
||||
headline 要再往上,需要 S4.9 / S4.10 / S4.11 / S4.12 任一 owner response 收到並通過脫敏驗收,或人工批准後出現 active runtime gate、redacted payload ingestion、GitHub primary readiness 這類落地 evidence。
|
||||
|
||||
@@ -157,6 +158,7 @@ headline 要再往上,需要 S4.9 / S4.10 / S4.11 / S4.12 任一 owner respons
|
||||
| S2.37 IwoooS Host Owner Decision Record Formal Record Queue Review Outcome Lanes | 完成草案 | `/iwooos` 新增主機 owner decision record formal record queue review outcome lanes,顯示 ready for human record owner handoff、identity trace refresh、decision summary clarification、scope / expiry refresh、scan limits ambiguous、credential boundary failed、maintenance / rollback incomplete、runtime gate required 八個分流 | 使用者能理解 formal record queue review outcome 仍不是 review passed、enqueue 或正式紀錄;仍不建立 decision record、不標記 accepted、不開 runtime gate、不執行主機動作 |
|
||||
| S2.38 IwoooS Host Owner Decision Record Human Handoff Readiness Packets | 完成草案 | `/iwooos` 新增主機 owner decision record human handoff readiness packets,顯示 handoff identity、owner boundary、decision summary、scope / expiry、scan limits、credential boundary、maintenance / rollback、runtime gate separation 八個準備包 | 使用者能理解 handoff readiness 仍不是 handoff started、handoff ready、review passed、enqueue 或正式紀錄;仍不建立 decision record、不標記 accepted、不開 runtime gate、不執行主機動作 |
|
||||
| S2.39 IwoooS Host Owner Decision Record Human Handoff Readiness Review Checklist | 完成草案 | `/iwooos` 新增主機 owner decision record human handoff readiness review checklist,顯示 identity trace readable、owner boundary readable、decision summary readable、scope / expiry current、scan limits not authorization、credential metadata-only、maintenance / rollback traceable、runtime gate separate 八個核對項 | 使用者能理解 handoff readiness review 仍不是 review passed、handoff started、handoff ready、enqueue 或正式紀錄;仍不建立 decision record、不標記 accepted、不開 runtime gate、不執行主機動作 |
|
||||
| S2.40 IwoooS Host Owner Decision Record Human Handoff Readiness Review Outcome Lanes | 完成草案 | `/iwooos` 新增主機 owner decision record human handoff readiness review outcome lanes,顯示 ready for human record owner review candidate、identity trace needs refresh、owner boundary needs clarification、decision summary needs clarification、scope / expiry need refresh、scan limits ambiguous、credential boundary failed、maintenance / rollback incomplete、runtime gate still required 九個分流 | 使用者能理解 handoff readiness review outcome 仍不是 review passed、handoff started、handoff ready、enqueue 或正式紀錄;仍不建立 decision record、不標記 accepted、不開 runtime gate、不執行主機動作 |
|
||||
| S3 approval gate | 進行中 | `security_approval_gate_v1` 已建立 8 個人工 gate items:7 pending、1 block candidate、0 approved | 不得繞過人工批准;批准後仍需 follow-up runtime gate |
|
||||
| S3.0 人工批准 Gate 契約 | 完成草案 | 定義批准範圍、決策選項、required reviewers、still forbidden 與 follow-up runtime gate | AwoooP 可記錄決策,不可執行 gate item |
|
||||
| S3.1 人工決策紀錄契約 | 完成草案 | `security_approval_decision_record_v1` 已建立;目前 0 筆 decision records、0 個 runtime action 授權 | AwoooP 可稽核決策,不可把決策當執行 |
|
||||
|
||||
@@ -65,7 +65,8 @@
|
||||
"host_owner_decision_record_formal_record_queue_review_checklist_item_count": 8,
|
||||
"host_owner_decision_record_formal_record_queue_review_outcome_lane_count": 8,
|
||||
"host_owner_decision_record_human_handoff_readiness_packet_count": 8,
|
||||
"host_owner_decision_record_human_handoff_readiness_review_checklist_item_count": 8
|
||||
"host_owner_decision_record_human_handoff_readiness_review_checklist_item_count": 8,
|
||||
"host_owner_decision_record_human_handoff_readiness_review_outcome_lane_count": 9
|
||||
},
|
||||
"progress": {
|
||||
"overall_percent": 58,
|
||||
@@ -167,7 +168,8 @@
|
||||
"display_host_owner_decision_record_formal_record_queue_review_checklist",
|
||||
"display_host_owner_decision_record_formal_record_queue_review_outcome_lanes",
|
||||
"display_host_owner_decision_record_human_handoff_readiness_packets",
|
||||
"display_host_owner_decision_record_human_handoff_readiness_review_checklist"
|
||||
"display_host_owner_decision_record_human_handoff_readiness_review_checklist",
|
||||
"display_host_owner_decision_record_human_handoff_readiness_review_outcome_lanes"
|
||||
],
|
||||
"forbidden_frontend_outputs": [
|
||||
"add_scan_button",
|
||||
@@ -284,7 +286,12 @@
|
||||
"mark_human_record_owner_handoff_readiness_review_passed",
|
||||
"start_human_record_owner_handoff_from_readiness_review",
|
||||
"create_host_owner_decision_record_from_handoff_readiness_review",
|
||||
"open_runtime_gate_from_handoff_readiness_review"
|
||||
"open_runtime_gate_from_handoff_readiness_review",
|
||||
"treat_host_owner_decision_record_handoff_readiness_review_outcome_as_approval",
|
||||
"mark_human_record_owner_handoff_readiness_review_outcome_passed",
|
||||
"start_human_record_owner_handoff_from_readiness_review_outcome",
|
||||
"create_host_owner_decision_record_from_handoff_readiness_review_outcome",
|
||||
"open_runtime_gate_from_handoff_readiness_review_outcome"
|
||||
],
|
||||
"runtime_execution_authorized": false,
|
||||
"action_buttons_allowed": false,
|
||||
@@ -4381,5 +4388,214 @@
|
||||
"action_buttons_allowed": false,
|
||||
"not_authorization": true
|
||||
}
|
||||
],
|
||||
"host_owner_decision_record_human_handoff_readiness_review_outcome_lanes": [
|
||||
{
|
||||
"lane_id": "host_decision_record_handoff_readiness_review_ready_for_human_record_owner_review_candidate_outcome_lane",
|
||||
"display_order": 1,
|
||||
"source_check_id": "host_decision_record_handoff_readiness_review_identity_trace_readable_check",
|
||||
"outcome_state": "ready_for_human_record_owner_review_candidate",
|
||||
"next_step": "display_review_candidate_without_handoff_start",
|
||||
"display_mode": "owner_decision_record_human_handoff_readiness_review_outcome_only",
|
||||
"human_record_owner_handoff_review_passed_count": 0,
|
||||
"human_record_owner_handoff_started_count": 0,
|
||||
"human_record_owner_handoff_ready_count": 0,
|
||||
"formal_record_queue_review_passed_count": 0,
|
||||
"formal_record_queue_enqueued_count": 0,
|
||||
"decision_record_created": false,
|
||||
"owner_decision_received_count": 0,
|
||||
"owner_decision_accepted_count": 0,
|
||||
"owner_approval_record_created": false,
|
||||
"runtime_gate_opened": false,
|
||||
"raw_payload_allowed": false,
|
||||
"secret_value_collection_allowed": false,
|
||||
"runtime_execution_authorized": false,
|
||||
"action_buttons_allowed": false,
|
||||
"not_authorization": true
|
||||
},
|
||||
{
|
||||
"lane_id": "host_decision_record_handoff_readiness_review_identity_trace_needs_refresh_outcome_lane",
|
||||
"display_order": 2,
|
||||
"source_check_id": "host_decision_record_handoff_readiness_review_identity_trace_readable_check",
|
||||
"outcome_state": "identity_trace_needs_refresh",
|
||||
"next_step": "refresh_identity_trace_without_handoff_ready",
|
||||
"display_mode": "owner_decision_record_human_handoff_readiness_review_outcome_only",
|
||||
"human_record_owner_handoff_review_passed_count": 0,
|
||||
"human_record_owner_handoff_started_count": 0,
|
||||
"human_record_owner_handoff_ready_count": 0,
|
||||
"formal_record_queue_review_passed_count": 0,
|
||||
"formal_record_queue_enqueued_count": 0,
|
||||
"decision_record_created": false,
|
||||
"owner_decision_received_count": 0,
|
||||
"owner_decision_accepted_count": 0,
|
||||
"owner_approval_record_created": false,
|
||||
"runtime_gate_opened": false,
|
||||
"raw_payload_allowed": false,
|
||||
"secret_value_collection_allowed": false,
|
||||
"runtime_execution_authorized": false,
|
||||
"action_buttons_allowed": false,
|
||||
"not_authorization": true
|
||||
},
|
||||
{
|
||||
"lane_id": "host_decision_record_handoff_readiness_review_owner_boundary_needs_clarification_outcome_lane",
|
||||
"display_order": 3,
|
||||
"source_check_id": "host_decision_record_handoff_readiness_review_owner_boundary_readable_check",
|
||||
"outcome_state": "owner_boundary_needs_clarification",
|
||||
"next_step": "clarify_owner_boundary_without_decision_collection",
|
||||
"display_mode": "owner_decision_record_human_handoff_readiness_review_outcome_only",
|
||||
"human_record_owner_handoff_review_passed_count": 0,
|
||||
"human_record_owner_handoff_started_count": 0,
|
||||
"human_record_owner_handoff_ready_count": 0,
|
||||
"formal_record_queue_review_passed_count": 0,
|
||||
"formal_record_queue_enqueued_count": 0,
|
||||
"decision_record_created": false,
|
||||
"owner_decision_received_count": 0,
|
||||
"owner_decision_accepted_count": 0,
|
||||
"owner_approval_record_created": false,
|
||||
"runtime_gate_opened": false,
|
||||
"raw_payload_allowed": false,
|
||||
"secret_value_collection_allowed": false,
|
||||
"runtime_execution_authorized": false,
|
||||
"action_buttons_allowed": false,
|
||||
"not_authorization": true
|
||||
},
|
||||
{
|
||||
"lane_id": "host_decision_record_handoff_readiness_review_decision_summary_needs_clarification_outcome_lane",
|
||||
"display_order": 4,
|
||||
"source_check_id": "host_decision_record_handoff_readiness_review_decision_summary_readable_check",
|
||||
"outcome_state": "decision_summary_needs_clarification",
|
||||
"next_step": "clarify_decision_summary_without_record_creation",
|
||||
"display_mode": "owner_decision_record_human_handoff_readiness_review_outcome_only",
|
||||
"human_record_owner_handoff_review_passed_count": 0,
|
||||
"human_record_owner_handoff_started_count": 0,
|
||||
"human_record_owner_handoff_ready_count": 0,
|
||||
"formal_record_queue_review_passed_count": 0,
|
||||
"formal_record_queue_enqueued_count": 0,
|
||||
"decision_record_created": false,
|
||||
"owner_decision_received_count": 0,
|
||||
"owner_decision_accepted_count": 0,
|
||||
"owner_approval_record_created": false,
|
||||
"runtime_gate_opened": false,
|
||||
"raw_payload_allowed": false,
|
||||
"secret_value_collection_allowed": false,
|
||||
"runtime_execution_authorized": false,
|
||||
"action_buttons_allowed": false,
|
||||
"not_authorization": true
|
||||
},
|
||||
{
|
||||
"lane_id": "host_decision_record_handoff_readiness_review_scope_expiry_needs_refresh_outcome_lane",
|
||||
"display_order": 5,
|
||||
"source_check_id": "host_decision_record_handoff_readiness_review_scope_expiry_current_check",
|
||||
"outcome_state": "scope_expiry_needs_refresh",
|
||||
"next_step": "refresh_scope_expiry_without_review_pass",
|
||||
"display_mode": "owner_decision_record_human_handoff_readiness_review_outcome_only",
|
||||
"human_record_owner_handoff_review_passed_count": 0,
|
||||
"human_record_owner_handoff_started_count": 0,
|
||||
"human_record_owner_handoff_ready_count": 0,
|
||||
"formal_record_queue_review_passed_count": 0,
|
||||
"formal_record_queue_enqueued_count": 0,
|
||||
"decision_record_created": false,
|
||||
"owner_decision_received_count": 0,
|
||||
"owner_decision_accepted_count": 0,
|
||||
"owner_approval_record_created": false,
|
||||
"runtime_gate_opened": false,
|
||||
"raw_payload_allowed": false,
|
||||
"secret_value_collection_allowed": false,
|
||||
"runtime_execution_authorized": false,
|
||||
"action_buttons_allowed": false,
|
||||
"not_authorization": true
|
||||
},
|
||||
{
|
||||
"lane_id": "host_decision_record_handoff_readiness_review_scan_limits_ambiguous_outcome_lane",
|
||||
"display_order": 6,
|
||||
"source_check_id": "host_decision_record_handoff_readiness_review_scan_limits_not_authorization_check",
|
||||
"outcome_state": "scan_limits_remain_ambiguous",
|
||||
"next_step": "clarify_scan_limits_without_authorization",
|
||||
"display_mode": "owner_decision_record_human_handoff_readiness_review_outcome_only",
|
||||
"human_record_owner_handoff_review_passed_count": 0,
|
||||
"human_record_owner_handoff_started_count": 0,
|
||||
"human_record_owner_handoff_ready_count": 0,
|
||||
"formal_record_queue_review_passed_count": 0,
|
||||
"formal_record_queue_enqueued_count": 0,
|
||||
"decision_record_created": false,
|
||||
"owner_decision_received_count": 0,
|
||||
"owner_decision_accepted_count": 0,
|
||||
"owner_approval_record_created": false,
|
||||
"runtime_gate_opened": false,
|
||||
"raw_payload_allowed": false,
|
||||
"secret_value_collection_allowed": false,
|
||||
"runtime_execution_authorized": false,
|
||||
"action_buttons_allowed": false,
|
||||
"not_authorization": true
|
||||
},
|
||||
{
|
||||
"lane_id": "host_decision_record_handoff_readiness_review_credential_boundary_failed_outcome_lane",
|
||||
"display_order": 7,
|
||||
"source_check_id": "host_decision_record_handoff_readiness_review_credential_boundary_metadata_only_check",
|
||||
"outcome_state": "credential_boundary_failed",
|
||||
"next_step": "refresh_credential_boundary_without_secret_collection",
|
||||
"display_mode": "owner_decision_record_human_handoff_readiness_review_outcome_only",
|
||||
"human_record_owner_handoff_review_passed_count": 0,
|
||||
"human_record_owner_handoff_started_count": 0,
|
||||
"human_record_owner_handoff_ready_count": 0,
|
||||
"formal_record_queue_review_passed_count": 0,
|
||||
"formal_record_queue_enqueued_count": 0,
|
||||
"decision_record_created": false,
|
||||
"owner_decision_received_count": 0,
|
||||
"owner_decision_accepted_count": 0,
|
||||
"owner_approval_record_created": false,
|
||||
"runtime_gate_opened": false,
|
||||
"raw_payload_allowed": false,
|
||||
"secret_value_collection_allowed": false,
|
||||
"runtime_execution_authorized": false,
|
||||
"action_buttons_allowed": false,
|
||||
"not_authorization": true
|
||||
},
|
||||
{
|
||||
"lane_id": "host_decision_record_handoff_readiness_review_maintenance_rollback_incomplete_outcome_lane",
|
||||
"display_order": 8,
|
||||
"source_check_id": "host_decision_record_handoff_readiness_review_maintenance_rollback_traceable_check",
|
||||
"outcome_state": "maintenance_rollback_incomplete",
|
||||
"next_step": "refresh_maintenance_rollback_without_host_change",
|
||||
"display_mode": "owner_decision_record_human_handoff_readiness_review_outcome_only",
|
||||
"human_record_owner_handoff_review_passed_count": 0,
|
||||
"human_record_owner_handoff_started_count": 0,
|
||||
"human_record_owner_handoff_ready_count": 0,
|
||||
"formal_record_queue_review_passed_count": 0,
|
||||
"formal_record_queue_enqueued_count": 0,
|
||||
"decision_record_created": false,
|
||||
"owner_decision_received_count": 0,
|
||||
"owner_decision_accepted_count": 0,
|
||||
"owner_approval_record_created": false,
|
||||
"runtime_gate_opened": false,
|
||||
"raw_payload_allowed": false,
|
||||
"secret_value_collection_allowed": false,
|
||||
"runtime_execution_authorized": false,
|
||||
"action_buttons_allowed": false,
|
||||
"not_authorization": true
|
||||
},
|
||||
{
|
||||
"lane_id": "host_decision_record_handoff_readiness_review_runtime_gate_required_outcome_lane",
|
||||
"display_order": 9,
|
||||
"source_check_id": "host_decision_record_handoff_readiness_review_runtime_gate_separate_check",
|
||||
"outcome_state": "runtime_gate_still_required",
|
||||
"next_step": "wait_for_independent_runtime_gate_without_action_button",
|
||||
"display_mode": "owner_decision_record_human_handoff_readiness_review_outcome_only",
|
||||
"human_record_owner_handoff_review_passed_count": 0,
|
||||
"human_record_owner_handoff_started_count": 0,
|
||||
"human_record_owner_handoff_ready_count": 0,
|
||||
"formal_record_queue_review_passed_count": 0,
|
||||
"formal_record_queue_enqueued_count": 0,
|
||||
"decision_record_created": false,
|
||||
"owner_decision_received_count": 0,
|
||||
"owner_decision_accepted_count": 0,
|
||||
"owner_approval_record_created": false,
|
||||
"runtime_gate_opened": false,
|
||||
"raw_payload_allowed": false,
|
||||
"secret_value_collection_allowed": false,
|
||||
"runtime_execution_authorized": false,
|
||||
"action_buttons_allowed": false,
|
||||
"not_authorization": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -950,6 +950,16 @@
|
||||
"runtime_delta": false,
|
||||
"execution_authorized": false,
|
||||
"not_authorization": true
|
||||
},
|
||||
{
|
||||
"delta_id": "s2_40_iwooos_host_owner_decision_record_human_handoff_readiness_review_outcome_lanes",
|
||||
"display_order": 69,
|
||||
"progress_axis": "framework_detail",
|
||||
"headline_percent_delta": 0,
|
||||
"framework_delta_visible": true,
|
||||
"runtime_delta": false,
|
||||
"execution_authorized": false,
|
||||
"not_authorization": true
|
||||
}
|
||||
],
|
||||
"next_safe_actions": [
|
||||
@@ -1306,7 +1316,8 @@
|
||||
]
|
||||
},
|
||||
"S2.38 只新增 IwoooS host owner decision record human handoff readiness packets;host_owner_decision_record_human_handoff_readiness_packet_count=8、human_record_owner_handoff_started_count=0、human_record_owner_handoff_ready_count=0、formal_record_queue_review_passed_count=0、formal_record_queue_enqueued_count=0、decision_record_created=false、owner_decision_received_count=0、owner_decision_accepted_count=0、owner_approval_record_created=false、runtime_gate_opened=false,不把 handoff readiness 當 handoff started、handoff ready、review passed、enqueue、正式決策紀錄、接受、批准或 runtime gate。",
|
||||
"S2.39 只新增 IwoooS host owner decision record human handoff readiness review checklist;host_owner_decision_record_human_handoff_readiness_review_checklist_item_count=8、human_record_owner_handoff_review_passed_count=0、human_record_owner_handoff_started_count=0、human_record_owner_handoff_ready_count=0、formal_record_queue_review_passed_count=0、formal_record_queue_enqueued_count=0、decision_record_created=false、owner_decision_received_count=0、owner_decision_accepted_count=0、owner_approval_record_created=false、runtime_gate_opened=false,不把 handoff readiness review 當 review passed、handoff started、handoff ready、enqueue、正式決策紀錄、接受、批准或 runtime gate。"
|
||||
"S2.39 只新增 IwoooS host owner decision record human handoff readiness review checklist;host_owner_decision_record_human_handoff_readiness_review_checklist_item_count=8、human_record_owner_handoff_review_passed_count=0、human_record_owner_handoff_started_count=0、human_record_owner_handoff_ready_count=0、formal_record_queue_review_passed_count=0、formal_record_queue_enqueued_count=0、decision_record_created=false、owner_decision_received_count=0、owner_decision_accepted_count=0、owner_approval_record_created=false、runtime_gate_opened=false,不把 handoff readiness review 當 review passed、handoff started、handoff ready、enqueue、正式決策紀錄、接受、批准或 runtime gate。",
|
||||
"S2.40 只新增 IwoooS host owner decision record human handoff readiness review outcome lanes;host_owner_decision_record_human_handoff_readiness_review_outcome_lane_count=9、human_record_owner_handoff_review_passed_count=0、human_record_owner_handoff_started_count=0、human_record_owner_handoff_ready_count=0、formal_record_queue_review_passed_count=0、formal_record_queue_enqueued_count=0、decision_record_created=false、owner_decision_received_count=0、owner_decision_accepted_count=0、owner_approval_record_created=false、runtime_gate_opened=false,不把 handoff readiness review outcome 當 review passed、handoff started、handoff ready、enqueue、正式決策紀錄、接受、批准或 runtime gate。"
|
||||
],
|
||||
"session_sync_notes": [
|
||||
"本 rollup 是跨 Session 的共同讀取入口,避免 AwoooP 主線與 Security Supply Chain Session 對進度與 gate 判讀不一致。",
|
||||
|
||||
@@ -191,6 +191,7 @@ def validate(root: Path) -> None:
|
||||
"s2_37_iwooos_host_owner_decision_record_formal_record_queue_review_outcome_lanes",
|
||||
"s2_38_iwooos_host_owner_decision_record_human_handoff_readiness_packets",
|
||||
"s2_39_iwooos_host_owner_decision_record_human_handoff_readiness_review_checklist",
|
||||
"s2_40_iwooos_host_owner_decision_record_human_handoff_readiness_review_outcome_lanes",
|
||||
]
|
||||
assert_equal(
|
||||
"progress_delta_ledger.delta_ids",
|
||||
@@ -594,6 +595,17 @@ def validate(root: Path) -> None:
|
||||
"host_decision_record_handoff_readiness_review_maintenance_rollback_traceable_check",
|
||||
"host_decision_record_handoff_readiness_review_runtime_gate_separate_check",
|
||||
]
|
||||
expected_iwooos_host_owner_decision_record_human_handoff_readiness_review_outcome_lane_ids = [
|
||||
"host_decision_record_handoff_readiness_review_ready_for_human_record_owner_review_candidate_outcome_lane",
|
||||
"host_decision_record_handoff_readiness_review_identity_trace_needs_refresh_outcome_lane",
|
||||
"host_decision_record_handoff_readiness_review_owner_boundary_needs_clarification_outcome_lane",
|
||||
"host_decision_record_handoff_readiness_review_decision_summary_needs_clarification_outcome_lane",
|
||||
"host_decision_record_handoff_readiness_review_scope_expiry_needs_refresh_outcome_lane",
|
||||
"host_decision_record_handoff_readiness_review_scan_limits_ambiguous_outcome_lane",
|
||||
"host_decision_record_handoff_readiness_review_credential_boundary_failed_outcome_lane",
|
||||
"host_decision_record_handoff_readiness_review_maintenance_rollback_incomplete_outcome_lane",
|
||||
"host_decision_record_handoff_readiness_review_runtime_gate_required_outcome_lane",
|
||||
]
|
||||
assert_equal(
|
||||
"iwooos_projection.summary.frontend_surface_coverage_group_count",
|
||||
iwooos_projection["summary"]["frontend_surface_coverage_group_count"],
|
||||
@@ -744,6 +756,11 @@ def validate(root: Path) -> None:
|
||||
iwooos_projection["summary"]["host_owner_decision_record_human_handoff_readiness_review_checklist_item_count"],
|
||||
len(expected_iwooos_host_owner_decision_record_human_handoff_readiness_review_checklist_item_ids),
|
||||
)
|
||||
assert_equal(
|
||||
"iwooos_projection.summary.host_owner_decision_record_human_handoff_readiness_review_outcome_lane_count",
|
||||
iwooos_projection["summary"]["host_owner_decision_record_human_handoff_readiness_review_outcome_lane_count"],
|
||||
len(expected_iwooos_host_owner_decision_record_human_handoff_readiness_review_outcome_lane_ids),
|
||||
)
|
||||
iwooos_progress = iwooos_projection["progress"]
|
||||
assert_equal("iwooos_projection.progress.overall_percent", iwooos_progress["overall_percent"], progress["overall_percent"])
|
||||
assert_equal(
|
||||
@@ -2905,6 +2922,113 @@ def validate(root: Path) -> None:
|
||||
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_checklist_items.{item['item_id']}.not_authorization",
|
||||
item["not_authorization"],
|
||||
)
|
||||
iwooos_host_owner_decision_record_human_handoff_readiness_review_outcome_lanes = iwooos_projection[
|
||||
"host_owner_decision_record_human_handoff_readiness_review_outcome_lanes"
|
||||
]
|
||||
assert_equal(
|
||||
"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_outcome_lanes.ids",
|
||||
[item["lane_id"] for item in iwooos_host_owner_decision_record_human_handoff_readiness_review_outcome_lanes],
|
||||
expected_iwooos_host_owner_decision_record_human_handoff_readiness_review_outcome_lane_ids,
|
||||
)
|
||||
assert_equal(
|
||||
"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_outcome_lanes.display_order",
|
||||
[item["display_order"] for item in iwooos_host_owner_decision_record_human_handoff_readiness_review_outcome_lanes],
|
||||
list(
|
||||
range(
|
||||
1,
|
||||
len(expected_iwooos_host_owner_decision_record_human_handoff_readiness_review_outcome_lane_ids) + 1,
|
||||
)
|
||||
),
|
||||
)
|
||||
expected_iwooos_host_owner_decision_record_human_handoff_readiness_review_outcome_states = [
|
||||
"ready_for_human_record_owner_review_candidate",
|
||||
"identity_trace_needs_refresh",
|
||||
"owner_boundary_needs_clarification",
|
||||
"decision_summary_needs_clarification",
|
||||
"scope_expiry_needs_refresh",
|
||||
"scan_limits_remain_ambiguous",
|
||||
"credential_boundary_failed",
|
||||
"maintenance_rollback_incomplete",
|
||||
"runtime_gate_still_required",
|
||||
]
|
||||
assert_equal(
|
||||
"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_outcome_lanes.outcome_states",
|
||||
[item["outcome_state"] for item in iwooos_host_owner_decision_record_human_handoff_readiness_review_outcome_lanes],
|
||||
expected_iwooos_host_owner_decision_record_human_handoff_readiness_review_outcome_states,
|
||||
)
|
||||
for item in iwooos_host_owner_decision_record_human_handoff_readiness_review_outcome_lanes:
|
||||
assert_equal(
|
||||
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_outcome_lanes.{item['lane_id']}.display_mode",
|
||||
item["display_mode"],
|
||||
"owner_decision_record_human_handoff_readiness_review_outcome_only",
|
||||
)
|
||||
assert_equal(
|
||||
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_outcome_lanes.{item['lane_id']}.human_record_owner_handoff_review_passed_count",
|
||||
item["human_record_owner_handoff_review_passed_count"],
|
||||
0,
|
||||
)
|
||||
assert_equal(
|
||||
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_outcome_lanes.{item['lane_id']}.human_record_owner_handoff_started_count",
|
||||
item["human_record_owner_handoff_started_count"],
|
||||
0,
|
||||
)
|
||||
assert_equal(
|
||||
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_outcome_lanes.{item['lane_id']}.human_record_owner_handoff_ready_count",
|
||||
item["human_record_owner_handoff_ready_count"],
|
||||
0,
|
||||
)
|
||||
assert_equal(
|
||||
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_outcome_lanes.{item['lane_id']}.formal_record_queue_review_passed_count",
|
||||
item["formal_record_queue_review_passed_count"],
|
||||
0,
|
||||
)
|
||||
assert_equal(
|
||||
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_outcome_lanes.{item['lane_id']}.formal_record_queue_enqueued_count",
|
||||
item["formal_record_queue_enqueued_count"],
|
||||
0,
|
||||
)
|
||||
assert_false(
|
||||
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_outcome_lanes.{item['lane_id']}.decision_record_created",
|
||||
item["decision_record_created"],
|
||||
)
|
||||
assert_equal(
|
||||
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_outcome_lanes.{item['lane_id']}.owner_decision_received_count",
|
||||
item["owner_decision_received_count"],
|
||||
0,
|
||||
)
|
||||
assert_equal(
|
||||
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_outcome_lanes.{item['lane_id']}.owner_decision_accepted_count",
|
||||
item["owner_decision_accepted_count"],
|
||||
0,
|
||||
)
|
||||
assert_false(
|
||||
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_outcome_lanes.{item['lane_id']}.owner_approval_record_created",
|
||||
item["owner_approval_record_created"],
|
||||
)
|
||||
assert_false(
|
||||
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_outcome_lanes.{item['lane_id']}.runtime_gate_opened",
|
||||
item["runtime_gate_opened"],
|
||||
)
|
||||
assert_false(
|
||||
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_outcome_lanes.{item['lane_id']}.raw_payload_allowed",
|
||||
item["raw_payload_allowed"],
|
||||
)
|
||||
assert_false(
|
||||
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_outcome_lanes.{item['lane_id']}.secret_value_collection_allowed",
|
||||
item["secret_value_collection_allowed"],
|
||||
)
|
||||
assert_false(
|
||||
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_outcome_lanes.{item['lane_id']}.runtime_execution_authorized",
|
||||
item["runtime_execution_authorized"],
|
||||
)
|
||||
assert_false(
|
||||
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_outcome_lanes.{item['lane_id']}.action_buttons_allowed",
|
||||
item["action_buttons_allowed"],
|
||||
)
|
||||
assert_true(
|
||||
f"iwooos_projection.host_owner_decision_record_human_handoff_readiness_review_outcome_lanes.{item['lane_id']}.not_authorization",
|
||||
item["not_authorization"],
|
||||
)
|
||||
assert_equal(
|
||||
"iwooos_projection.non_blocking_lane_ids",
|
||||
iwooos_projection["non_blocking_lane_ids"],
|
||||
@@ -2953,6 +3077,7 @@ def validate(root: Path) -> None:
|
||||
"display_host_owner_decision_record_formal_record_queue_review_outcome_lanes",
|
||||
"display_host_owner_decision_record_human_handoff_readiness_packets",
|
||||
"display_host_owner_decision_record_human_handoff_readiness_review_checklist",
|
||||
"display_host_owner_decision_record_human_handoff_readiness_review_outcome_lanes",
|
||||
"display_evidence_refs",
|
||||
"display_forbidden_actions",
|
||||
]:
|
||||
@@ -3068,6 +3193,11 @@ def validate(root: Path) -> None:
|
||||
"start_human_record_owner_handoff_from_readiness_review",
|
||||
"create_host_owner_decision_record_from_handoff_readiness_review",
|
||||
"open_runtime_gate_from_handoff_readiness_review",
|
||||
"treat_host_owner_decision_record_handoff_readiness_review_outcome_as_approval",
|
||||
"mark_human_record_owner_handoff_readiness_review_outcome_passed",
|
||||
"start_human_record_owner_handoff_from_readiness_review_outcome",
|
||||
"create_host_owner_decision_record_from_handoff_readiness_review_outcome",
|
||||
"open_runtime_gate_from_handoff_readiness_review_outcome",
|
||||
"apply_runtime_blocking_control",
|
||||
"switch_github_primary",
|
||||
"production_deploy",
|
||||
|
||||
Reference in New Issue
Block a user