chore: merge develop into hare/develop

This commit is contained in:
2026-10-03 19:14:17 +09:00
147 changed files with 33175 additions and 2270 deletions
+1
View File
@@ -12,6 +12,7 @@ import "./base.dcdl" // {
feature = {
task = { enabled = false; };
memory = { enabled = false; };
subjektiv = { enabled = false; extraction = { enabled = false; }; };
web = { enabled = false; };
image = { enabled = false; };
sub_worker = { enabled = false; };
+2 -3
View File
@@ -26,16 +26,15 @@ compaction = {
feature = {
task = { enabled = true; };
memory = {
memory = { enabled = false; staging_tools = false; };
subjektiv = {
enabled = true;
resident = { inject_summary = true; };
extraction = {
enabled = true;
model = { ref = "codex-oauth/gpt-5.6-luna"; };
reasoning = "medium";
threshold = 50000;
};
consolidation = { request_enabled = true; };
};
web = { enabled = true; };
image = { enabled = true; };
+2 -1
View File
@@ -10,7 +10,8 @@ import "./base.dcdl" // {
feature = {
task = { enabled = true; };
memory = { enabled = true; };
memory = { enabled = false; };
subjektiv = { enabled = true; };
web = { enabled = true; };
sub_worker = { enabled = true; };
flow = { enabled = true; };
+2 -1
View File
@@ -6,7 +6,8 @@ import "./base.dcdl" // {
feature = {
task = { enabled = true; };
memory = { enabled = true; };
memory = { enabled = false; };
subjektiv = { enabled = true; };
web = { enabled = true; };
sub_worker = { enabled = true; };
worker = { enabled = true; direct_spawn = false; };
+1
View File
@@ -7,6 +7,7 @@ import "./base.dcdl" // {
feature = {
task = { enabled = true; };
memory = { enabled = false; staging_tools = false; };
subjektiv = { enabled = false; extraction = { enabled = false; }; };
web = { enabled = true; };
image = { enabled = true; };
sub_worker = { enabled = true; };
+2 -1
View File
@@ -6,7 +6,8 @@ import "./base.dcdl" // {
feature = {
task = { enabled = true; };
memory = { enabled = true; };
memory = { enabled = false; };
subjektiv = { enabled = true; };
web = { enabled = true; };
sub_worker = { enabled = false; };
worker = { enabled = false; };
+13 -1
View File
@@ -7,7 +7,19 @@ import "./base.dcdl" // {
feature = {
task = { enabled = false; };
memory = { enabled = true; staging_tools = true; };
memory = {
enabled = true;
staging_tools = true;
resident = { inject_summary = true; };
extraction = {
enabled = true;
model = { ref = "codex-oauth/gpt-5.6-luna"; };
reasoning = "medium";
threshold = 50000;
};
consolidation = { request_enabled = true; };
};
subjektiv = { enabled = false; extraction = { enabled = false; }; };
web = { enabled = false; };
sub_worker = { enabled = false; };
worker = { enabled = false; };
+2 -1
View File
@@ -6,7 +6,8 @@ import "./base.dcdl" // {
feature = {
task = { enabled = true; };
memory = { enabled = true; };
memory = { enabled = false; };
subjektiv = { enabled = true; };
web = { enabled = true; };
sub_worker = { enabled = false; };
worker = { enabled = true; direct_spawn = false; };
+2 -1
View File
@@ -10,7 +10,8 @@ import "./base.dcdl" // {
feature = {
task = { enabled = true; };
memory = { enabled = true; };
memory = { enabled = false; };
subjektiv = { enabled = true; };
web = { enabled = true; };
sub_worker = { enabled = false; };
worker = { enabled = false; };
@@ -0,0 +1,37 @@
import "./base.dcdl" // {
slug = "subjektiv-memory-consolidation";
description = "Delegated subject Memory staging consolidation profile.";
scope = "workspace_read";
model = { ref = "codex-oauth/gpt-5.6-luna"; };
engine = { reasoning = "medium"; };
web = { enabled = false; };
feature = {
task = { enabled = false; };
memory = { enabled = false; staging_tools = false; };
subjektiv = { enabled = true; 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; };
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; };
};
}
+6
View File
@@ -23,6 +23,8 @@ internalFlowVerifierSystem = import "./internal/flow_verifier_system.md";
internalBackendJobSystem = import "./internal/backend_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";
internalSubjektivMemorySurfaceSystem = import "./internal/subjektiv_memory_surface_system.md";
internalMemoryExtractSystem = import "./internal/memory_extract_system.md";
internalWorkspaceOrchestratorQueueAttention = import "./internal/workspace_orchestrator_queue_attention.md";
internalNotifyWrapper = import "./internal/notify_wrapper.md";
@@ -31,6 +33,7 @@ internalInterruptSystemNote = import "./internal/interrupt_system_note.md";
internalWorkingBoundariesSection = import "./internal/working_boundaries_section.md";
internalAgentsMdSection = import "./internal/agents_md_section.md";
internalResidentMemorySummarySection = import "./internal/resident_memory_summary_section.md";
internalResidentMemoryRestoreSection = import "./internal/resident_memory_restore_section.md";
internalSubWorkerSpawnToolDescription = import "./internal/sub_worker_spawn_tool_description.md";
panelOrchestratorIdleQueueNotice = import "./panel/orchestrator_idle_queue_notice.md";
in
@@ -60,6 +63,8 @@ in
backend_job_system = internalBackendJobSystem.content;
ticket_item_checker = internalTicketItemChecker.content;
memory_consolidation_system = internalMemoryConsolidationSystem.content;
subjektiv_memory_consolidation_system = internalSubjektivMemoryConsolidationSystem.content;
subjektiv_memory_surface_system = internalSubjektivMemorySurfaceSystem.content;
memory_extract_system = internalMemoryExtractSystem.content;
workspace_orchestrator_queue_attention = internalWorkspaceOrchestratorQueueAttention.content;
notify_wrapper = internalNotifyWrapper.content;
@@ -68,6 +73,7 @@ in
working_boundaries_section = internalWorkingBoundariesSection.content;
agents_md_section = internalAgentsMdSection.content;
resident_memory_summary_section = internalResidentMemorySummarySection.content;
resident_memory_restore_section = internalResidentMemoryRestoreSection.content;
worker_orchestration_guidance_section = commonWorkerOrchestration.content;
sub_worker_spawn_tool_description = internalSubWorkerSpawnToolDescription.content;
};
@@ -0,0 +1,17 @@
---
## Resident memory refresh
This restore-boundary record supersedes every resident memory summary embedded earlier in the system prompt or session history. Treat only the current state below as resident context; it is background context, not a user request.
{% if surface_ready %}
### Current ready surface
{% if summary %}
{{ summary }}
{% else %}
The current ready resident memory surface is intentionally empty.
{% endif %}
{% else %}
No current ready resident memory surface is available. Ignore earlier resident memory summaries; confirmed Memory remains available through explicit recall tools.
{% endif %}
@@ -0,0 +1,41 @@
# Memory staging consolidater
You are the delegated internal Memory staging consolidater for one subject.
Your job is to consume that subject's pending Memory candidates through tools. The host binds every tool call to the subject; never infer or provide a subject identifier yourself.
Use this loop:
1. Call `MemoryStagingList` to inspect pending candidates.
2. Pick one candidate and call `MemoryStagingRead` for the full immutable record, including any typed `revision_proposal`.
3. Use `SubjektivMemoryQuery`, `SubjektivMemoryRead`, and when useful `SubjektivMemoryListRevisions` to compare it with confirmed Memory.
4. Decide whether to create a Memory, revise/refine one exact current revision, resolve/retract/reopen according to typed proposal metadata, or reject the candidate.
5. Call `MemoryApplyCandidate` exactly once for every decision. Supply a stable `request_id`; retry the exact same request after an ambiguous transport failure.
`MemoryApplyCandidate` atomically writes any new Memory revision, records concrete affected revision references, preserves the original candidate and provenance, and closes the pending candidate. A successful applied response is the only evidence that confirmed Memory changed.
Rules:
- A candidate is evidence, not authority. Do not promote derived/model claims to observations without warranted provenance.
- For a candidate with `revision_proposal`, use its `memory_id`, `expected_revision`, `intent`, and `change_reason`; do not infer a different target from claim prose.
- Proposal application must preserve `change_reason` exactly and use the state implied by `intent`: `resolve` -> `resolved`, `retract` -> `retracted`, `reopen` -> `active`, and `revise` keeps the current state.
- Never rebase a stale proposal. On `revision_conflict` or another typed conflict, leave it pending for later reread/reconciliation.
- Never revive a `retracted` Memory. New experience after retraction becomes a new Memory with an exact `derived_from` revision when justified.
- `resolved` -> `active` is allowed only for a valid `reopen` proposal.
- New or revised prose must remain concise and useful. Preserve exact identifiers, paths, commands, Ticket IDs, branch names, and quoted user text when relevant.
- `source_candidate_ids` are host-derived from the applied candidate. Do not attempt to author them.
- `derived_from` must contain only exact existing Memory revision refs returned by reads.
- Applied responses return affected refs with `{memory_id, revision, operation}`. `duplicate` and `already_covered` may reference exact existing revisions; `discarded` and `invalid` require a concrete reason.
- Surface generation is a separate clean-context Host lifecycle that runs once after this consolidation turn commits. `surface_dirty: true` means confirmed Memory changed; never treat later surface generation failure as failure of an already returned committed decision.
- An empty model response or transport failure is not a candidate disposition. Only a successful `MemoryApplyCandidate` response closes a candidate.
Valid non-applied close actions are `discarded`, `invalid`, `duplicate`, and `already_covered`. Always provide a specific reason.
## Language
- `language`: `{{language}}`
- Write confirmed Memory prose in this language.
- Preserve literal identifiers, paths, commands, branch names, issue IDs, tool names, model names, and quoted user/system text as-is.
- If the configured language is unclear, use English.
Do not create Knowledge, Skill, Ticket, documentation, child Worker, or filesystem records. Use only the supplied Memory tools.
@@ -0,0 +1,32 @@
# Subject Memory surface editor
You are a clean-context editor for one subject's confirmed Memory surface. The Host has already selected a deterministic, bounded set of active current Memory revisions. Those materials are the only facts and references you may use.
Answer this fixed question:
> この主体が次の作業を始める際、毎回思い出しておくべきことは何か。継続的な制約、判断の前提、未解決事項、再発を避けたい教訓を、指定予算内でまとめる。
Call `SubmitMemorySurface` exactly once with `{ "points": [...] }`. Each point has:
- `body_md`: concise Markdown worth carrying into every next task.
- `memory_refs`: one or more exact `{memory_id, revision}` values from the supplied materials that ground that point.
Rules:
- Do not add a fact, decision, identifier, or reference absent from the materials.
- Preserve conditions, negation, reservations, and stated staleness/expiry conditions.
- Similar material may be combined only when the combined wording preserves each source's meaning.
- Do not resolve contradictions. State conflicting constraints or assumptions as unresolved when both matter.
- This is not a complete index. Keep only continuously useful constraints/preferences, active decisions/working assumptions, open questions, and recurrence-preventing lessons.
- Every point needs at least one supplied exact reference. Never invent a citation.
- Reference existence and subject scope are mechanically checked. That check is not semantic verification; you remain responsible for faithful wording.
- Stay within the supplied body token budget. The Host uses the documented provider-independent UTF-8 byte estimate.
- If the materials array is empty, submit an empty points array without inventing content.
- A rejected tool call may be corrected, but this Worker is bounded to three model turns total (initial attempt plus at most two correction turns).
## Language
- `language`: `{{language}}`
- Write the surface in this language.
- Preserve literal identifiers, paths, commands, branch names, issue IDs, tool names, model names, and quoted user/system text as-is.
- If the configured language is unclear, use English.