共享 Portal 不得持有适配器输出能力
- production-host marker = PRESENT
- 8100 listener = 1
- UID 991 = redis6 · GID 991 = nginx
- Controller unit / 8110 = ABSENT / 0
一次性签名许可把五个 ConfigRef 解析为不可导出的短期句柄,在隔离工厂事务中创建五个真实但未连接的输出;成功和失败都必须逆序销毁,终端回执不携带任何对象能力。
Portal 在线不等于具备 Controller 解析、工厂托管或连接授权。
18 个精确字段把签名、目标、bundle、generation、nonce、五端口和四项动作锁成一个不可扩权的许可。
一次事务一套不可复用身份。
p50-resolution-permit-024不能从隔离目标漂移到共享 Portal。
fixture-host://cut86/isolated-host-024只消费第 85 刀已资格化的配置束。
generation ≥ 86claim 后只能 settle 或 burn。
AVAILABLE → CLAIMED → TERMINALConfigRef、implementation 和 module digest 逐端口绑定。
5 exact ordered bindingsresolve、inspect、construct、dispose;没有 connect。
CONNECT_ADAPTER = absent真实 ECDSA P-256 验签;许可最长 300 秒,并绑定安全授权 owner。
effect-free152 real verifies≤ 300 seconds152 claimsproduction uses 0许可不能回到 AVAILABLE;所有失败都 burn,防止“失败后重放”。
no capabilitysingle transactionconnections 0all objectsterminal receipt每条 lane 只返回绑定 digest 的 opaque handle,不返回字符串、凭证或客户端对象。
| Port | Resolver scope | Handle | Exportable | Production |
|---|---|---|---|---|
| PACKAGE_VERIFIER | PACKAGING_TRUST_ROOT | opaque · expiring | NO | 0 |
| ATOMIC_NONCE_REGISTRY | LINEARIZABLE_NONCE_STORE | opaque · expiring | NO | 0 |
| RECOVERY_JOURNAL | IMMUTABLE_DIGEST_CHAIN | opaque · expiring | NO | 0 |
| ARGV_EXECUTOR | ROOT_CONSUMER_SOCKET | opaque · expiring | NO | 0 |
| INDEPENDENT_WITNESS | INDEPENDENT_READ_VIEW | opaque · expiring | NO | 0 |
11 个字段只描述身份、作用域、目标和过期时间;明文投影与导出必须显式为 false / 0。
handle {
handleId: "opaque-handle://cut86/…",
transactionId, targetHostId, portId, configRefDigest,
scope: "ISOLATED_FACTORY_CONSTRUCTION_ONLY",
opaque: true, exportable: false,
plaintextProjected: false, secretProjectionCount: 0,
expiresAt: permit.expiresAt
}descriptor 可以被检查和构造,但必须明确不可连接、无顶层副作用且方法集合精确。
对象只存在于本次事务范围。
retention after QA = 0允许创建未连接输出。
212 constructions本许可不包含连接能力。
adapterConnections = 0解析句柄和工厂输出不能穿越事务边界;终端仅投影纯数据 receipt。
5 minutesplaintext 0no importnot returnedobject retention 014 个精确字段绑定实现、模块、配置摘要、接口和方法集;连接计数、明文计数和能力导出全部为零。
output {
outputId, transactionId, targetHostId, portId,
implementationId, moduleDigest, configRefDigest,
interfaceVersion, methodSetDigest,
state: "CONSTRUCTED_UNCONNECTED",
connected: false, connectionCount: 0,
secretProjectionCount: 0, capabilityExported: false
}五条 lane 按固定顺序 resolve → inspect → construct → validate;任一失败都禁止部分晋级。
unconnectedunconnectedunconnectedunconnectedthen dispose allpermit actions 不含 connect;descriptor 不可连接;output 不导出;terminal receipt 不返回对象,四层同时阻断连接。
CONNECT_ADAPTER 不在签名动作集合。
4 exact actionsconnectable 必须为 false。
topLevelEffects = 0capabilityExported = false。
retained outputs = 0资格通过也不会保留对象;五个输出从 witness 到 package 逆序销毁,再消费许可。
0 writes0 connections0 secrets0 capabilitypermit consumed从首次解析前到 settlement 前均有显式终态;不存在悬挂对象或重放许可。
92 个失败路径输出被逆序销毁;总构造 212 与总销毁 212 精确相等。
无对象逃逸或遗留。
difference = 0只清理已成功创建的前缀。
LIFO cleanup失败 nonce 永不重用。
ABORTED_NONCE_BURNEDclaim、settlement 和 burn 作为独立计数展示,防止把“函数返回”误认成 durable production receipt。
| Counter | Fixture evidence | Required invariant | Production |
|---|---|---|---|
| oneTimePermitClaims | 152 | useOrdinal = 1 | 0 |
| permitSettlements | 148 | success or abort terminal | 0 |
| permitsBurnedOnAbort | 124 | never AVAILABLE again | 0 |
| retained outputs | 0 | all disposed | 0 |
只返回 digest、计数与五个 disposed descriptor;不返回 handle、module、factory 或 adapter object。
receipt {
status: "P50_ISOLATED_FACTORY_TRANSACTION_QUALIFIED_OUTPUTS_DISPOSED_NO_CONNECTION",
permitUses: 1, configRefsResolvedInFixture: 5,
opaqueHandlesQualified: 5, factoryDescriptorsQualified: 5,
unconnectedOutputsConstructed: 5, unconnectedOutputsDisposed: 5,
outputDescriptors: [ DISPOSED_AFTER_QUALIFICATION × 5 ],
plaintextConfigurationsProjected: 0,
capabilityExports: 0, adapterConnections: 0
}每个事务完成五次解析、五次 descriptor 检查、五次构造、五次销毁和一次许可终态。
六组负向套件各 32 条,覆盖签名、上游、handle、descriptor、output 和事务 cutpoint。
筛选、搜索并点击用例,检查其确定性终态和零生产副作用。
216 / 216 passed · plaintext=0 · capabilityExports=0 · adapterConnections=0 · productionWrites=0七个仓库子门全部闭环;live escrow 和 connection authorization 保持独立红门。
Cut 85 effect-free receipt
BOUNDsigned target-bound one-use
BOUNDopaque non-exportable expiring
BOUNDisolated and unconnectable
BOUNDreal object, zero connection
BOUNDreverse dispose and burn
BOUNDcapability-free projection
BOUNDP48 live root installation、P49 live adapter construction、P50 live escrow/connection 三个门仍未观测。
专用主机、许可、解析器、模块、托管、连接、SRE 和 release 八类责任明确列出。
PLATFORM · OPEN
SECURITY · OPEN
SECURITY · OPEN
RUNTIME · OPEN
RUNTIME · OPEN
SECURITY · OPEN
SRE · OPEN
RELEASE · OPEN
下一刀定义短期能力托管:五个未连接输出进入不可调用 escrow,独立 connection authority 必须验证 target、generation、health、nonce 和全组一致性后才能签发一次性连接意图。仍不执行真实网络连接。
人、AI 与 CI 读取同一接口、Schema、策略、候选实现和验证器,不依赖截图推断。
| Surface | Canonical path | Use |
|---|---|---|
| Machine API | /api/runner-controller/d05-g04-configref-resolution-isolated-factory-transaction-admission | runtime evidence |
| JSON Schema | /schemas/runner-controller-d05-g04-configref-resolution-isolated-factory-transaction-admission.v1.schema.json | consumer validation |
| Candidate | ops/runner-factory/controller-production-adapter-configref-resolution-isolated-factory-transaction-candidate.mjs | qualification logic |
| Verifier | scripts/verify-runner-controller-production-adapter-configref-resolution-isolated-factory-transaction-candidate.mjs | 216 cases |