chore: merge develop into hare/develop
This commit is contained in:
@@ -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; };
|
||||
|
||||
@@ -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; };
|
||||
|
||||
@@ -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; };
|
||||
|
||||
@@ -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; };
|
||||
|
||||
@@ -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; };
|
||||
|
||||
@@ -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; };
|
||||
|
||||
@@ -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; };
|
||||
|
||||
@@ -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; };
|
||||
|
||||
@@ -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; };
|
||||
};
|
||||
}
|
||||
@@ -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.
|
||||
Reference in New Issue
Block a user