Repository navigation
Description
Current state: #371 step 3 has an Apps fixed-evidence projection in #433 and a locally validated Apps offline assembly. #430 tracks the production Benchmark prepare port and the first frozen CPU task.
Decision needed: Confirm the S3 Benchmark implementer and first supported task/assessor in #362. Reuse the task chosen for #430 so the same frozen protocol drives preparation and assessment.
Goal and acceptance
Deliver Benchmark assess(prepared, evidence, *, artifacts) and its public assessment encoding and validation functions. For the first implementation, the sole V34 key source is the Apps read-only projection of frozen ProtocolV1 claim_definitions. It checks the key before calling the production Benchmark ports assess, encode and validate_assessment. Follow #387, V15–V23 and D023-4.
- Consume the complete committed payload from one fixed RecordRef and its matching PreparedEvaluation. A top-level identity mismatch returns
IdentityMismatchat the Appsassessment_bindingstage, with no EvaluationResult. The assessor reads retained bytes only through the injected ArtifactReader and handlesUnsafeArtifactPath,ArtifactUnavailableandArtifactIntegrityErrorfrom eachopenas missing or invalid evidence for the affected claim. - Resolve the frozen task, grader and rule revisions. Return a canonical EvaluationResult with independently keyed claims, metrics and eligibility, including evidence and missing-evidence details. Exercise V21 conflict aggregation in Benchmark and V22 refusal of an unsupported frozen grader or rule revision. The assessor reads offline without launching a worker or accessing a network or device.
- Use the same production CPU task as task: Benchmark production prepare and frozen resource closure #430. Exercise T35 through Apps with distinct PASS, FAIL and INCONCLUSIVE claims from one retained record and Apps exit codes 0, 8 and 9. For the first CPU fixture, use no independent-error exception for terminal-dependent claims. Assess a committed running snapshot and require INCONCLUSIVE with a missing-evidence reason for each claim lacking its required terminal evidence. Leave phase and process outcome unchanged.
- Verify T39 in order. An absent or unknown primary key returns
InvalidRequest/2 before invoking the assessor. A known key omitted from the result returnsAssessorError/2 without an AssessmentRef. Exercise the Apps archive failure case with exit 6, the in-memory assessment preserved, andassessment_ref = null. - Repeat assessment of the same fixed record with the same frozen rules and retained evidence in a new process. Compare the semantic
assessment_idand its canonical projection per V23. With the assessment clock fixed, also require byte-identical canonical results. With a real clock,assessed_atmay differ and affects byte hashes while remaining outside the semantic ID. - Keep the first implementation limited to the agreed task and frozen rule revisions. task: B01 — 旧 run/evaluate 整链迁入最终归属 #414 owns the legacy evaluation path.
@Dong1017 please confirm the public port boundary with the three-module interface design. The S3 production implementer is still unassigned in #362.
Activity
amy-why-3459 commentedon Nov 13, 2026
Thanks for splitting this out. Reusing the #430 task for both prepare and assess is a good call. Some notes on the acceptance, read against V15–V23/V34 in
docs/contracts/schema-and-semantics.mdand the Apps pieces in #432/#433:(primary_claim_id, primary_scope)is not in the frozen protocol, the result isInvalidRequest/2 and the assessor is never called. (b) If the key is legal but B's result omits it, the result is anAssessorError-class error/2, and Apps must not fill in the claim. Branch (a) needs B's public read-only claim-key capability (or an explicit business-free projection). That belongs on the port boundary you're asking @Dong1017 to confirm, so please list it next toassessand the encode/validate functions.ArtifactReader.openraisesUnsafeArtifactPath/ArtifactUnavailable/ArtifactIntegrityErrorwithstage="open". Please state thatassesscatches these per artifact and turns them into missing/invalid evidence inside the result, not into an exception fromassess. Also name the error code and stage for a top-level mismatch, which yields no EvaluationResult. This is already in the first bullet in prose; a concrete code makes it testable.phase=runningrecord into offline assessment. Please add an acceptance case for whatassessreturns there. My reading of V18/V21 is that every claim that needs terminal evidence becomes INCONCLUSIVE with a missing-evidence reason, never FAIL or PASS. The owner should confirm.assessment_id(recomputed per V23) and identical canonical EvaluationResult bytes for the same record revision. Without that, "re-assessment works" can't be checked mechanically.amy-why-3459 commentedon Nov 13, 2026
Thanks for the update. The revised acceptance now covers all five earlier points: the V34/T39 order,
IdentityMismatchatassessment_bindingplus per-artifactopenerrors as evidence gaps (V17), the running snapshot, V21 aggregation and V22 refusal, and the semanticassessment_idplus byte-identical results under a fixed clock (V23). A few small things are left on the new text:claim_definitions, and that a Benchmarkclaim_keysport "can" do the same check. For the first implementation, please pick one as authoritative, or require that both agree and add a test for it. That way T39(a) doesn't depend on which path is wired. Whichever you pick should go in the port list you're asking @Dong1017 to confirm.assessment_ref = null. The bullet already says the AssessmentRef is absent. Adding "exit 6" makes the row checkable on its own.zengchuang-hw commentedon Nov 13, 2026
@amy-why-3459 已补齐 V34 两种退出 2 的分支、单项证据读取错误、非终态快照、V21 聚合和 V22 版本拒绝。固定协议的
claim_definitions字段投影是当前 Apps 用的只读能力。跨进程核对 V23 语义 ID 和规范投影,固定时钟时再比较完整字节。契约排除assessed_at参与语义 ID,真实重判的时间可变化。运行中快照缺必需终态证据时按冻结规则判为 INCONCLUSIVE,契约认可的独立证据仍由 Benchmark 解释。请复核更新后的验收。zengchuang-hw commentedon Nov 13, 2026
@amy-why-3459 已按第二轮意见把首期规则定清楚。V34 只读冻结 ProtocolV1 的
claim_definitions。归档失败固定验收退出 6 和assessment_ref = null。首个 CPU 夹具的终态依赖 claim 不设独立错误证明例外,运行中缺终态证据时应为 INCONCLUSIVE。amy-why-3459 commentedon Nov 13, 2026
Thanks, I checked the second update and all three points are resolved:
claim_definitions. The check runs beforeassess,encodeandvalidate_assessmentare called. With the optionalclaim_keysport gone, T39(a) has one deterministic path.assessment_ref = null, which matches T39.I have no further notes on the acceptance text. The open items are the ones the issue already lists: @Dong1017 confirming the port boundary, and the S3 implementer and first task/assessor in #362.
Dong1017 commentedon Nov 14, 2026
Decision — public port boundary (Dong-bot as @Dong1017 delegate)
Recorded 2026-11-15 (Asia/Shanghai). Authority: store
preferences.mdDong-bot decision authority for@Dong1017accept/decide asks. Thread basis: Amy cleared acceptance text (6858974039); author locked first-CPU fixture rules (6858929411).Accepted — public port boundary
Confirm the three-module / Apps public port boundary for this offline-assess slice as written after Amy’s rounds:
claim_definitions. Apps runs that membership check before calling production Benchmark ports. No optional Benchmarkclaim_keysport in this first cut.assess(prepared, evidence, *, artifacts), plus the pureencodeandvalidate_assessmentfunctions. Apps injects the ArtifactReader-scoped artifacts; per-openUnsafeArtifactPath/ArtifactUnavailable/ArtifactIntegrityErrorbecome evidence gaps inside the EvaluationResult, not an exception escapingassess.IdentityMismatchatassessment_bindingwith no EvaluationResult. Archive failure → exit 6, in-memory assessment kept,assessment_ref = null(T39).This aligns with #362 four-port design (
prepare/execute/assess) and with the Apps assembly already validated under fixture ports in #444.Accepted — first task alignment
Reuse the same first production CPU task/worker chosen for #430: D023 golden /
t108-v4fixture line. First CPU fixture has no independent-error exception for terminal-dependent claims (running snapshot → INCONCLUSIVE + missing-evidence where terminal evidence is absent).Still open — S3 delivery assignee
#362 still lists S3 Benchmark production-slice owner as unassigned. This comment does not invent that owner. Delivery coding for production
assesswaits on the implementer decision recorded on #430 (and any follow-up ownership note on #362). Acceptance text itself is otherwise clear.Label: leaving
status:proposeduntil #430 names the Benchmark delivery implementer; port + first-task decisions above are binding once recorded.Dong1017 commentedon Nov 15, 2026
Decision — Benchmark delivery assignee (cross-link from #430)
Recorded 2026-11-15 (Asia/Shanghai). Authority: Dong-bot as @Dong1017 delegate. Primary record: #430 comment answering @zengchuang-hw.
Accepted — same scoped delivery assignee as #430
Delivery assignee for this offline
assessslice: @Dong1017 (one assignee for the #430 / #434 pair).Already binding from the prior steward comment (6885787031):
claim_definitionskey source;assess+ encode/validate; Apps binding/archive semantics).t108-v4(same as task: Benchmark production prepare and frozen resource closure #430); no independent-error exception for terminal-dependent claims.This delivery assignment is scoped implementation only — it does not assign full S3 Benchmark module ownership on #362.
Status
Flipping
status:proposed→status:acceptedfor this bounded assess delivery. Coding may start; Apps T35/T39 wiring waits on the production ports.