chore: merge develop into hare/develop

This commit is contained in:
2026-10-07 18:03:33 +09:00
117 changed files with 27801 additions and 10459 deletions
@@ -0,0 +1,116 @@
[
{
"name": "canonical_compaction_tokens",
"profile": {
"compaction": {
"kind": "tokens",
"prune_enabled": false,
"prune_protected_tokens": 3000,
"prune_min_savings": 1000,
"threshold": 80000,
"request_threshold": 90000,
"retained_tokens": 12000,
"overview_target_tokens": 1000,
"overview_warning_tokens": 2000,
"overview_deadline_tokens": 3000,
"worker_context_max_tokens": 20000,
"finish_warning_remaining_tokens": 1000,
"final_reserve_tokens": 2000,
"worker_max_turns": 5,
"summary_target_tokens": 1000,
"summary_max_tokens": 2000,
"auto_read_budget_tokens": 500,
"result_context_max_tokens": 4000,
"model": { "ref": "codex-oauth/gpt-5.6-sol" }
}
},
"manifest_expect": {
"/compaction/prune_enabled": false,
"/compaction/prune_protected_tokens": 3000,
"/compaction/prune_min_savings": 1000,
"/compaction/threshold": 80000,
"/compaction/request_threshold": 90000,
"/compaction/retained_tokens": 12000,
"/compaction/overview_target_tokens": 1000,
"/compaction/overview_warning_tokens": 2000,
"/compaction/overview_deadline_tokens": 3000,
"/compaction/worker_context_max_tokens": 20000,
"/compaction/finish_warning_remaining_tokens": 1000,
"/compaction/final_reserve_tokens": 2000,
"/compaction/worker_max_turns": 5,
"/compaction/summary_target_tokens": 1000,
"/compaction/summary_max_tokens": 2000,
"/compaction/auto_read_budget_tokens": 500,
"/compaction/result_context_max_tokens": 4000,
"/compaction/model/ref": "codex-oauth/gpt-5.6-sol"
}
},
{
"name": "compaction_token_aliases_without_kind",
"profile": {
"compaction": {
"compact_threshold": 80000,
"compact_request_threshold": 90000,
"compact_retained_tokens": 12000,
"compact_worker_max_input_tokens": 20000,
"compact_worker_max_turns": 5,
"compact_auto_read_budget": 500
}
},
"manifest_expect": {
"/compaction/threshold": 80000,
"/compaction/request_threshold": 90000,
"/compaction/retained_tokens": 12000,
"/compaction/worker_context_max_tokens": 20000,
"/compaction/worker_max_turns": 5,
"/compaction/auto_read_budget_tokens": 500
}
},
{
"name": "compaction_ratio_aliases",
"profile": {
"model": { "context_window": 100000 },
"compaction": {
"kind": "ratio",
"threshold": 0.9,
"request": 0.8,
"worker": 0.2
}
},
"manifest_expect": {
"/compaction/threshold": 90000,
"/compaction/request_threshold": 80000,
"/compaction/worker_context_max_tokens": 20000
}
},
{
"name": "numeric_extraction_reasoning",
"profile": {
"engine": { "reasoning": -1 },
"feature": {
"memory": { "extraction": { "enabled": true, "reasoning": 4096 } },
"subjektiv": { "extraction": { "enabled": true, "reasoning": 4096 } }
}
},
"manifest_expect": {
"/engine/reasoning": -1,
"/feature/memory/profile/extraction/reasoning": 4096,
"/feature/subjektiv/profile/extraction/reasoning": 4096
}
},
{
"name": "string_extraction_reasoning",
"profile": {
"feature": {
"memory": { "extraction": { "enabled": true, "reasoning": "high" } },
"subjektiv": {
"extraction": { "enabled": true, "reasoning": "medium" }
}
}
},
"manifest_expect": {
"/feature/memory/profile/extraction/reasoning": "high",
"/feature/subjektiv/profile/extraction/reasoning": "medium"
}
}
]
@@ -0,0 +1,88 @@
# Editor-only shape of partial Profile values, used for completion and constraint
# analysis without materialization. Never used as defaults: omitted fields remain
# omitted until Manifest resolution.
let
Flag = { enabled = Bool; };
Model = {
ref = String; scheme = String; base_url = String; model_id = String;
auth = { kind = String; ref = String; file = String; };
capability = Unknown; context_window = Int; max_context_window = Int;
};
Extraction = {
# ReasoningControl accepts string effort or signed integer budget.
enabled = Bool; model = Model; reasoning = Unknown;
threshold = Int; worker_max_turns = Int;
};
# Profile scope accepts either a string intent or a table. Decodal 0.4 has
# no union range; keep this field opaque to constraint analysis and expose
# the table only as a completion hint. This shape is never materialized;
# actual scope forms, intent values and table fields are checked on save.
Scope = Unknown default { intent = String; deny_write = [...String]; symlink_policy = String; };
Profile = {
slug = String;
description = String;
worker = { mode = String; };
model = Model;
engine = {
instruction = String; language = String; reasoning = Unknown;
max_tokens = Int; max_turns = Int; temperature = Unknown; top_p = Unknown;
top_k = Int; stop_sequences = [...String]; tool_call_dispatch = String;
tool_output = { default_max_bytes = Int; per_tool = { ...Int }; };
file_upload = { max_bytes = Int; };
};
scope = Scope;
delegation_scope = Scope;
session = {
record_event_trace = Bool;
};
permissions = { default_action = String; rule = [...{ tool = String; pattern = String; action = String; }]; };
feature = {
task = Flag; web = Flag; image = Flag; sub_worker = Flag; flow = Flag;
worker = { enabled = Bool; direct_spawn = Bool; };
workspace_worker_discovery = Flag; objective = Flag; manage_workdir = Flag;
workdir_catalog = Flag; workspace_config = Flag; orchestration = Flag;
ticket = { enabled = Bool; authoring = Bool; thread = Bool; intake = Bool; workflow = Bool; };
merge_request = { show = Bool; open = Bool; review = Bool; readiness_check = Bool; complete = Bool; };
memory = {
enabled = Bool; staging_tools = Bool;
resident = { inject_summary = Bool; };
extraction = Extraction;
consolidation = { request_enabled = Bool; };
};
subjektiv = { enabled = Bool; consolidation_tools = Bool; extraction = Extraction; };
};
mcp = { stdio_server = [...{
name = String; command = String; args = [...String];
cwd = { kind = String; path = String; };
env = { inherit = [...String]; set = { ...Unknown }; };
}]; };
compaction = {
# Token settings (CompactionConfigPartial) and ratio helper fields.
# Threshold/context values accept integer tokens or numeric ratios.
kind = String; threshold = Unknown; request_threshold = Unknown;
worker_context_max_tokens = Unknown; request = Unknown; worker = Unknown;
prune_enabled = Bool; prune_protected_tokens = Int; prune_min_savings = Int;
retained_tokens = Int;
overview_target_tokens = Int; overview_warning_tokens = Int; overview_deadline_tokens = Int;
finish_warning_remaining_tokens = Int; final_reserve_tokens = Int;
worker_max_turns = Int; summary_target_tokens = Int; summary_max_tokens = Int;
auto_read_budget_tokens = Int; result_context_max_tokens = Int; model = Model;
# Supported token aliases remain authorable without rewriting recipes.
compact_threshold = Int; compact_request_threshold = Int; compact_retained_tokens = Int;
compact_worker_max_input_tokens = Int; compact_worker_max_turns = Int; compact_auto_read_budget = Int;
};
web = {
enabled = Bool; allow_private_addresses = Bool;
search = { enabled = Bool; provider = String; api_key_secret = String; timeout_secs = Int; base_url = String; country = String; search_lang = String; ui_lang = String; safesearch = String; };
fetch = { enabled = Bool; timeout_secs = Int; redirect_limit = Int; max_response_bytes = Int; max_output_bytes = Int; allow_private_addresses = Bool; };
};
skills = { directories = [...String]; };
};
in {
profile = {
default_profile = String;
entries = [...{
selector = String; profile = Profile; label = String; description = String;
}];
};
}
+11
View File
@@ -0,0 +1,11 @@
{
profile = {
default_profile = String default "builtin:companion";
entries = [...{
selector = String;
profile = { ...Unknown };
label = String default "";
description = String default "";
}] default [];
};
}
+27
View File
@@ -0,0 +1,27 @@
slug = "job";
description = "Result-only Job policy; the Host grants attempt/result authority independently.";
model = { ref = "codex-oauth/gpt-5.6-luna"; };
engine = {
instruction = "internal.job_system";
reasoning = "medium";
max_tokens = 8192;
max_turns = 32;
};
session = { record_event_trace = false; };
feature = {
task = { enabled = false; };
memory = { enabled = false; staging_tools = false; };
subjektiv = { enabled = false; consolidation_tools = false; extraction = { enabled = false; }; };
web = { enabled = false; };
image = { enabled = false; };
sub_worker = { enabled = false; };
flow = { enabled = false; };
worker = { enabled = false; direct_spawn = false; };
workspace_worker_discovery = { enabled = false; };
objective = { enabled = false; };
manage_workdir = { enabled = false; };
workspace_config = { enabled = false; };
ticket = { enabled = false; authoring = false; thread = false; intake = false; workflow = false; };
merge_request = { show = false; open = false; review = false; readiness_check = false; complete = false; };
orchestration = { enabled = false; };
};
@@ -0,0 +1,8 @@
import "./job.dcdl" // {
slug = "standalone-subjektiv-consolidation";
description = "Subject consolidation policy; local Host grants a bounded batch, not body authority.";
engine = { instruction = "internal.subjektiv_memory_consolidation_system"; };
feature = {
subjektiv = { enabled = true; consolidation_tools = true; extraction = { enabled = false; }; };
};
}
@@ -0,0 +1,7 @@
import "./standalone.dcdl" // {
slug = "standalone-subjektiv";
description = "Standalone coding with an explicitly selected local Subject.";
feature = {
subjektiv = { enabled = true; extraction = { enabled = true; }; };
};
}
+2
View File
@@ -21,6 +21,7 @@ roleReviewer = import "./role/reviewer.md";
internalCompactSystem = import "./internal/compact_system.md";
internalFlowVerifierSystem = import "./internal/flow_verifier_system.md";
internalBackendJobSystem = import "./internal/backend_job_system.md";
internalJobSystem = import "./internal/job_system.md";
internalTicketItemChecker = import "./internal/ticket_item_checker.md";
internalMemoryConsolidationSystem = import "./internal/memory_consolidation_system.md";
internalSubjektivMemoryConsolidationSystem = import "./internal/subjektiv_memory_consolidation_system.md";
@@ -62,6 +63,7 @@ in
compact_system = internalCompactSystem.content;
flow_verifier_system = internalFlowVerifierSystem.content;
backend_job_system = internalBackendJobSystem.content;
job_system = internalJobSystem.content;
ticket_item_checker = internalTicketItemChecker.content;
memory_consolidation_system = internalMemoryConsolidationSystem.content;
subjektiv_memory_consolidation_system = internalSubjektivMemoryConsolidationSystem.content;
+7
View File
@@ -0,0 +1,7 @@
You execute one bounded Host-owned Job against its immutable input envelope.
The caller selects the Profile. The Host, not the Profile name or task prose, binds Job/attempt/input identity and grants tools. Use only the capabilities provided for this execution. Do not infer Workspace, filesystem, parent Worker, or domain permissions from the input.
Submit a structured result through the Host-provided Job result tool. Complete any required postprocessing before submitting, unless its durable ownership is explicitly established independently of this Worker. Final prose, Idle, and Worker termination are not success authority. Do not claim a submission succeeded if the tool rejects it.
On a definitive validation rejection, correct the result. If acceptance is uncertain, retry only the exact submitted result; never change a result already accepted. Never ask to run another attempt or access another Job's capabilities.