Bind Modeling tools and output authority
This commit is contained in:
parent
f33bd2422e
commit
ecfff489fe
6 changed files with 87 additions and 4 deletions
|
|
@ -681,6 +681,45 @@ pub fn epiphany_role_launch_output_schema(role_id: EpiphanyRoleResultRoleId) ->
|
|||
},
|
||||
"required": ["evidenceIds", "repoModelPatch"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": {
|
||||
"not": {
|
||||
"anyOf": [
|
||||
{"required": ["repoFrontierModelingRequestId"]},
|
||||
{"required": ["proposalModelingRequestId"]},
|
||||
{"required": ["claimRepairRequestId"]}
|
||||
]
|
||||
}
|
||||
},
|
||||
"then": {
|
||||
"properties": {
|
||||
"repoModelPatch": {
|
||||
"properties": {
|
||||
"purpose": {
|
||||
"type": "object",
|
||||
"required": ["kind"],
|
||||
"properties": {"kind": {"const": "evolution"}},
|
||||
"additionalProperties": false
|
||||
},
|
||||
"operations": {
|
||||
"items": {
|
||||
"anyOf": [
|
||||
{"type": "object", "required": ["operation", "node"], "properties": {"operation": {"const": "upsert_node"}, "node": repo_model_node_output_schema()}},
|
||||
{"type": "object", "required": ["operation", "node"], "properties": {"operation": {"const": "revise_node"}, "node": repo_model_node_output_schema()}},
|
||||
{"type": "object", "required": ["operation", "node_id"], "properties": {"operation": {"const": "retire_node"}, "node_id": {"type": "string", "minLength": 1}}},
|
||||
{"type": "object", "required": ["operation", "edge"], "properties": {"operation": {"const": "upsert_edge"}, "edge": repo_model_edge_output_schema()}},
|
||||
{"type": "object", "required": ["operation", "edge"], "properties": {"operation": {"const": "revise_edge"}, "edge": repo_model_edge_output_schema()}},
|
||||
{"type": "object", "required": ["operation", "edge_id"], "properties": {"operation": {"const": "retire_edge"}, "edge_id": {"type": "string", "minLength": 1}}}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": ["purpose", "operations"]
|
||||
}
|
||||
},
|
||||
"required": ["repoModelPatch"]
|
||||
}
|
||||
}
|
||||
]);
|
||||
}
|
||||
|
|
@ -1609,6 +1648,16 @@ mod tests {
|
|||
["maxContains"],
|
||||
1
|
||||
);
|
||||
let ordinary_operations = schema["allOf"][3]["then"]["properties"]["repoModelPatch"]
|
||||
["properties"]["operations"]["items"]["anyOf"]
|
||||
.as_array()
|
||||
.expect("ordinary Modeling operations");
|
||||
assert_eq!(ordinary_operations.len(), 6);
|
||||
assert!(ordinary_operations.iter().all(|operation| {
|
||||
!operation["properties"]["operation"]["const"]
|
||||
.as_str()
|
||||
.is_some_and(|kind| kind.contains("frontier"))
|
||||
}));
|
||||
let operations =
|
||||
schema["properties"]["repoModelPatch"]["properties"]["operations"]["items"]["anyOf"]
|
||||
.as_array()
|
||||
|
|
|
|||
|
|
@ -535,7 +535,6 @@ pub fn coordinator_argv(
|
|||
policy.max_steps.to_string(),
|
||||
"--max-runtime-seconds".into(),
|
||||
policy.turn_timeout_seconds.to_string(),
|
||||
"--no-auto-tools".into(),
|
||||
];
|
||||
let ResidentSelfWake::Explicit { objective } = wake;
|
||||
argv.extend(["--objective".into(), objective.clone()]);
|
||||
|
|
@ -1987,6 +1986,10 @@ mod tests {
|
|||
let prepared = prepare_resident_self_launch(&store, &policy, 4)?.expect("prepared launch");
|
||||
assert_eq!(prepared.grant.grant_id, grant.grant_id);
|
||||
assert!(!prepared.argv.iter().any(|arg| arg == "--objective"));
|
||||
assert!(
|
||||
!prepared.argv.iter().any(|arg| arg == "--no-auto-tools"),
|
||||
"role-scoped tool policy, not resident argv, owns Modeling inspection authority"
|
||||
);
|
||||
assert!(prepared.argv.windows(2).any(|pair| pair
|
||||
== [
|
||||
"--admitted-model-direction-consideration-request-id",
|
||||
|
|
|
|||
|
|
@ -1302,6 +1302,21 @@ intentionally stops before that loop actuates. Its startup handler creates the
|
|||
exact `RepoFrontierProposalModelingLaunchBinding` that resident fulfillment
|
||||
then verifies.
|
||||
|
||||
Role tool authority belongs to the role-scoped adapter, not to resident Self.
|
||||
Resident preparation therefore does not append a blanket `--no-auto-tools`:
|
||||
Modeling and Eyes must be able to inspect their Body through the adapter's
|
||||
read-only grants, while the adapter still refuses tools outside the launched
|
||||
organ contract. Live v41 proved the distinction: tool-starved Modeling twice
|
||||
returned an empty non-typed payload; the same bounded recovery with native
|
||||
tools produced a grounded typed result.
|
||||
|
||||
Output shape must also match launch authority. Ordinary Modeling with no typed
|
||||
proposal, claim-repair, or verdict request exposes only node/edge evolution in
|
||||
its output schema. Frontier operations remain available only behind the typed
|
||||
authority fields whose exact identities Mind validates. This moves the first
|
||||
line of defense from a prose warning plus downstream rejection into the model's
|
||||
declared output contract; Mind remains the final admission owner.
|
||||
|
||||
## Exact release build cache ownership
|
||||
|
||||
Release construction has two serialized cache authorities. The graph cache is
|
||||
|
|
|
|||
|
|
@ -1,5 +1,21 @@
|
|||
# Fresh Workspace Handoff
|
||||
|
||||
Fresh v41 exhausted the selected proposal queue, then exercised failure and
|
||||
recovery. Two Modeling runs launched with resident `--no-auto-tools` failed
|
||||
immediately because the assistant payload was empty/non-typed JSON. Supervised
|
||||
failure review wrote exact supersession receipts and relaunched through the
|
||||
packaged coordinator. A tool-enabled retry completed with source-grounded
|
||||
findings, proving the missing input. Mind nevertheless rejected two successive
|
||||
completed patches because ordinary `evolution` attempted to mutate the current
|
||||
verdict-owned frontier: `Evolution cannot bypass a current route or own
|
||||
verdict-driven frontier lifecycle`. The runtime stayed unchanged.
|
||||
|
||||
The current worktree removes resident's blanket tool disable and makes ordinary
|
||||
Modeling's JSON schema expose only node/edge operations unless a typed proposal,
|
||||
claim-repair, or verdict authority field is present. Focused schema and
|
||||
resident-launch tests pass. v41 is sealed as the missing-tools and overbroad
|
||||
output-contract boundary.
|
||||
|
||||
Exact pushed `5f09d35a` packages as
|
||||
`sha256-39a81a35d847fd6b459379d5bf3ef4fa57a3142745a10f13f4b033eea85ca45a`
|
||||
with witness
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -34,9 +34,9 @@ invariants:
|
|||
- Evidence and git retain history; this map retains only state that changes future decisions.
|
||||
|
||||
current_status:
|
||||
summary: Epiphany is a supervised engineering alpha on Starfire, not deployment-ready. Exact 5f09d35a packages as sha256-39a81a35d847fd6b459379d5bf3ef4fa57a3142745a10f13f4b033eea85ca45a with witness sha256-9cf82d9c1bdf018c36d199838598f5476acbc43818beb9fdb68840dc00be7f9b. v40 proved proposal Modeling creates its exact launch binding before resident success: resident stayed running through worker life, completed afterward, and typed queue ownership advanced from request 4b9414 to e75b60 only after that binding. The worker result failed and remains unaccepted, so proposal result review/recovery is the next live boundary. Persona consequence, retention, endurance, and Linux/Yggdrasil cognition remain open.
|
||||
summary: Epiphany is a supervised engineering alpha on Starfire, not deployment-ready. Exact 5f09d35a packages as sha256-39a81a35d847fd6b459379d5bf3ef4fa57a3142745a10f13f4b033eea85ca45a with witness sha256-9cf82d9c1bdf018c36d199838598f5476acbc43818beb9fdb68840dc00be7f9b. v40 proved proposal binding-before-success and ordered queue consumption. v41 proved failed Modeling results can be supervised, superseded, and relaunched, but resident's blanket no-tools flag starved Modeling and the generic output schema offered frontier mutations ordinary evolution could never admit. Tool-enabled retries produced grounded results; Mind correctly rejected both forbidden frontier patches. The current worktree restores role-scoped tools and structurally restricts ordinary Modeling to node/edge evolution. Persona consequence, retention, endurance, and Linux/Yggdrasil cognition remain open.
|
||||
operational_state:
|
||||
local_worktree: clean_after_live_v40_binding_proof
|
||||
local_worktree: modeling_tool_and_output_authority_repair_verified_pending_commit
|
||||
operator_wireguard: restored
|
||||
yggdrasil: canonical_small_public_crossing_body
|
||||
starfire: temporary_epiphany_cognition_body
|
||||
|
|
@ -53,7 +53,7 @@ current_status:
|
|||
yggdrasil_epiphany_services: absent
|
||||
resident_physiology: heartbeat_and_self_running
|
||||
unresolved_authority: v31's generic user proposal produced a lawful direct Hands gate, but the active objective requires the autonomous Imagination-origin path and dedicated Mind adoption, so that gate remains inert. v37 proved single-owner pressure ordering but exposed that generic coordinator completion could consume a typed pressure without its requested launch consequence. The fulfillment repair is locally verified but not packaged/live. Canonical proposal Modeling, dedicated Mind adoption, exact Hands binding, bounded-worker failure/restart/closure, Persona consequence, retention, endurance, and Linux/Yggdrasil cognition remain open.
|
||||
next_action: Record and push the v40 binding-before-success proof, then drive the failed proposal Modeling result through typed failure review/recovery without accepting it. Continue the remaining proposal queue into canonical Imagination planning, dedicated Mind, Hands, and bounded-worker failure/restart/Soul closure.
|
||||
next_action: Commit, package, and authenticate the Modeling tool/output-authority repair; replay the sealed v41 recovery and prove ordinary Modeling emits an admissible node/edge-only patch, then follow CRRC into Reorientation acceptance and Continuity recovery receipt before Soul closure. Continue canonical Imagination planning, dedicated Mind, Hands, Persona, endurance, and Linux/Yggdrasil.
|
||||
|
||||
active_subgoals:
|
||||
- Prove Persona, Self, Eyes, Modeling, Imagination, Hands, Soul, Mind, Continuity, and nervous-system behavior individually.
|
||||
|
|
|
|||
Reference in a new issue