feat(subjektiv): share domain and add explicit standalone Subject hosts
This commit is contained in:
@@ -59,6 +59,26 @@ pub const BUILTIN_PROFILE_RESOURCES: &[BuiltinProfileResource] = &[
|
||||
description: "Standalone Yoi coding profile.",
|
||||
imports: DEFAULT_IMPORT,
|
||||
},
|
||||
BuiltinProfileResource {
|
||||
selector: Some("builtin:standalone-subjektiv"),
|
||||
path: "profiles/standalone-subjektiv.dcdl",
|
||||
source: include_str!("../../../resources/profiles/standalone-subjektiv.dcdl"),
|
||||
description: "Standalone with an explicitly connected local Subject.",
|
||||
imports: &[BuiltinProfileImport {
|
||||
specifier: "./standalone.dcdl",
|
||||
resolved_path: "profiles/standalone.dcdl",
|
||||
}],
|
||||
},
|
||||
BuiltinProfileResource {
|
||||
selector: Some("builtin:standalone-subjektiv-consolidation"),
|
||||
path: "profiles/standalone-subjektiv-consolidation.dcdl",
|
||||
source: include_str!("../../../resources/profiles/standalone-subjektiv-consolidation.dcdl"),
|
||||
description: "Delegated local Subject Job policy.",
|
||||
imports: &[BuiltinProfileImport {
|
||||
specifier: "./job.dcdl",
|
||||
resolved_path: "profiles/job.dcdl",
|
||||
}],
|
||||
},
|
||||
BuiltinProfileResource {
|
||||
selector: Some("builtin:coder"),
|
||||
path: "profiles/coder.dcdl",
|
||||
|
||||
@@ -189,7 +189,9 @@ pub fn validate_profile_execution_target(
|
||||
if feature.memory.profile.enabled || feature.memory.profile.staging_tools {
|
||||
requirements.insert(WorkspaceAuthorityRequirement::Memory);
|
||||
}
|
||||
if feature.subjektiv.profile.enabled {
|
||||
// Subject policy is Host-neutral. Only an already bound Backend snapshot
|
||||
// requires Workspace authority; a local Host supplies its own live capability.
|
||||
if feature.subjektiv.workspace_settings.is_some() {
|
||||
requirements.insert(WorkspaceAuthorityRequirement::Subjektiv);
|
||||
}
|
||||
if feature.merge_request.show
|
||||
@@ -1257,11 +1259,21 @@ mod tests {
|
||||
)
|
||||
.unwrap();
|
||||
assert_eq!(resolved.manifest.worker.name, "role-worker");
|
||||
if entry.name == "job" {
|
||||
if matches!(
|
||||
entry.name.as_str(),
|
||||
"job" | "standalone-subjektiv-consolidation"
|
||||
) {
|
||||
assert!(resolved.manifest.compaction.is_none());
|
||||
assert!(resolved.manifest.scope.allow.is_empty());
|
||||
assert!(resolved.manifest.delegation_scope.allow.is_empty());
|
||||
assert_eq!(resolved.manifest.engine.instruction, "internal.job_system");
|
||||
assert_eq!(
|
||||
resolved.manifest.engine.instruction,
|
||||
if entry.name == "job" {
|
||||
"internal.job_system"
|
||||
} else {
|
||||
"internal.subjektiv_memory_consolidation_system"
|
||||
}
|
||||
);
|
||||
continue;
|
||||
}
|
||||
let compaction = resolved.manifest.compaction.as_ref().unwrap();
|
||||
@@ -1669,7 +1681,10 @@ mod tests {
|
||||
panic!("unexpected error: {error}");
|
||||
};
|
||||
assert_eq!(target, ProfileExecutionTarget::Standalone);
|
||||
assert!(requirements.contains(&WorkspaceAuthorityRequirement::Subjektiv));
|
||||
assert!(
|
||||
!requirements.contains(&WorkspaceAuthorityRequirement::Subjektiv),
|
||||
"subject policy alone is no longer Backend authority"
|
||||
);
|
||||
assert!(!requirements.contains(&WorkspaceAuthorityRequirement::Memory));
|
||||
assert!(requirements.contains(&WorkspaceAuthorityRequirement::MergeRequest));
|
||||
assert!(requirements.contains(&WorkspaceAuthorityRequirement::Ticket));
|
||||
|
||||
Reference in New Issue
Block a user