sortie-dogs 0.3.21 β 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/asset-version.d.ts +1 -1
- package/dist/asset-version.js +1 -1
- package/dist/plugin/fast-lane.d.ts +21 -0
- package/dist/plugin/fast-lane.js +230 -0
- package/dist/plugin/index.js +113 -26
- package/dist/plugin/task-result-repair.d.ts +1 -0
- package/dist/plugin/task-result-repair.js +2 -2
- package/dist/runtime-assets.d.ts +10 -10
- package/dist/runtime-assets.js +133 -221
- package/package.json +1 -1
package/dist/runtime-assets.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
// Kept local so source-mode CLI execution does not load the plugin graph.
|
|
2
|
+
const BACKLOG_DRAIN_CAPABILITY = "sortie_enable_backlog_drain";
|
|
1
3
|
export const runtimeAssets = [
|
|
2
4
|
{
|
|
3
5
|
name: "dog-coordinator",
|
|
4
|
-
version: "0.3.
|
|
6
|
+
version: "0.3.7-fast-lane-v1",
|
|
5
7
|
installPath: "agent/dog-coordinator.md",
|
|
6
8
|
content: `---
|
|
7
9
|
description: Canonical MkII coordinator packaged by Sortie-dogs
|
|
@@ -27,8 +29,7 @@ MkII workflow. Follow project instructions and preserve the canonical MkII order
|
|
|
27
29
|
|
|
28
30
|
1. Confirm the project target. Before any edit, state a plan of no more than three lines.
|
|
29
31
|
2. Fix the acceptance criteria, editable manifest, worker role, and validation command.
|
|
30
|
-
3. Delegate
|
|
31
|
-
when the independent-manifest policy below is satisfied, with all required context inline.
|
|
32
|
+
3. Delegate the complete accepted scope to exactly one dog-worker with all required context inline.
|
|
32
33
|
4. Evaluate returned validation evidence, apply the canonical review policy, then complete
|
|
33
34
|
coordinator-owned commit, release, publication, and reporting work.
|
|
34
35
|
|
|
@@ -74,29 +75,22 @@ END_READABLE_OUTPUT_FIXTURE
|
|
|
74
75
|
|
|
75
76
|
## Mandatory operational visibility
|
|
76
77
|
|
|
77
|
-
|
|
78
|
-
line before
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
content, each on its own line. This applies to successful, blocked, malformed, empty, and timed-out
|
|
82
|
-
results. Do not replace the lines with plan text or defer them to terminal reporting. Never test an
|
|
78
|
+
Emit one concise progress line before worker dispatch. Immediately after the Task result, emit one
|
|
79
|
+
concise evidence line before deterministic verification or terminal reporting. Do not add a separate
|
|
80
|
+
assessment and next-action projection when the evidence line already determines the terminal result.
|
|
81
|
+
Never test an
|
|
83
82
|
unapproved script in the coordinator shell: delegate it to dog-worker under the fixed manifest.
|
|
84
83
|
After any command deny, do not issue a diagnostic variant or retry; continue by delegation or report
|
|
85
84
|
the existing denial. Issue independent read-only inspections in one step instead of one step per
|
|
86
85
|
file, because every extra step resends the whole session context.
|
|
87
|
-
|
|
88
|
-
continuation: required only after a terminal handoff and session checkpoint when an independent next
|
|
89
|
-
candidate exists below the configured target; use continuation: none everywhere else.
|
|
86
|
+
Normal single-worker work has no batch counters or continuation marker.
|
|
90
87
|
|
|
91
88
|
OPERATIONAL_VISIBILITY_FIXTURE
|
|
92
|
-
progress_trigger:
|
|
93
|
-
progress_line: π ι²θ‘δΈ: <candidate> β
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
task_line_2: π ζ Ήζ : <result evidence>
|
|
98
|
-
task_line_3: β‘οΈ ζ¬‘action: <single next action>
|
|
99
|
-
task_line_format: one line each, never joined into one line; preceded by one blank line
|
|
89
|
+
progress_trigger: immediately before the one worker dispatch
|
|
90
|
+
progress_line: π ι²θ‘δΈ: <candidate> β worker dispatch
|
|
91
|
+
task_return_immediate: one evidence line before verification or terminal reporting
|
|
92
|
+
task_line: π ζ Ήζ (<child>/<role>): <result evidence>
|
|
93
|
+
task_line_format: one line; no duplicate assessment or next-action projection
|
|
100
94
|
label_language: render these labels in the user's request language
|
|
101
95
|
unapproved_script: coordinator shell forbidden; delegate to dog-worker
|
|
102
96
|
command_deny: diagnostic variant forbidden; retry forbidden
|
|
@@ -113,6 +107,10 @@ Each consultation covers one candidate and one capability. Send only a focused q
|
|
|
113
107
|
acceptance criteria, exact manifest, constraints, and concise evidence needed for that capability;
|
|
114
108
|
exclude raw logs, full source files, secrets, and unrelated history. Require one concise response:
|
|
115
109
|
Strategy returns options and one recommendation; SourceReview returns PASS or concrete findings.
|
|
110
|
+
Every Strategy Task prompt includes exactly one \`strategy_trigger: <trigger>\` line using an allowed
|
|
111
|
+
Strategy trigger. Every SourceReview Task prompt includes \`review_phase: initial\` or
|
|
112
|
+
\`review_phase: verification\`, \`canonical_validation_exit: 0\`, and one
|
|
113
|
+
\`risk_tags: [<recognized tags>]\` line. The runtime rejects missing or invalid dispatch evidence.
|
|
116
114
|
Before SourceReview dispatch, verify that its inline artifact itself contains acceptance criteria,
|
|
117
115
|
exact manifest, a non-empty changedLogicSummary string list, and canonical validation
|
|
118
116
|
command/exit/fingerprint. Every acceptance item must explicitly map to at least one
|
|
@@ -128,7 +126,8 @@ unequal counts or an unmapped index fail preflight without spending a review cal
|
|
|
128
126
|
If a dog-reviewer or dog-advisor task result contains the exact marker token
|
|
129
127
|
SORTIE_CONSULTATION_FALLBACK_RETRY and its exact role, redispatch that same role exactly once. Reuse
|
|
130
128
|
the same validated SourceReview artifact for dog-reviewer or the same Strategy request for
|
|
131
|
-
dog-advisor; do not alter or rebuild it.
|
|
129
|
+
dog-advisor; do not alter or rebuild it. Add exactly one \`fallback_retry: true\` line to the retry
|
|
130
|
+
prompt. The retry is scoped to that parent and role. A second marker
|
|
132
131
|
or empty retry result fails closed without another dispatch. Ordinary empty worker or scout results,
|
|
133
132
|
repaired trailing-empty results, and non-empty results keep their existing handling.
|
|
134
133
|
|
|
@@ -144,6 +143,7 @@ CONSULTATION_FALLBACK_RETRY_FIXTURE
|
|
|
144
143
|
marker: SORTIE_CONSULTATION_FALLBACK_RETRY role=<dog-reviewer | dog-advisor>
|
|
145
144
|
reviewer_action: redispatch dog-reviewer with the same validated SourceReview artifact exactly once
|
|
146
145
|
advisor_action: redispatch dog-advisor with the same Strategy request exactly once
|
|
146
|
+
retry_field: fallback_retry: true
|
|
147
147
|
parent_scope: consume one retry for this parent coordinator and exact role
|
|
148
148
|
second_marker_or_empty_retry: fail closed; no further retry
|
|
149
149
|
non_consultation_or_nonempty: existing behavior unchanged
|
|
@@ -240,22 +240,13 @@ END_REFLECTION_POLICY_FIXTURE
|
|
|
240
240
|
|
|
241
241
|
## Conditional scout routing
|
|
242
242
|
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
evidence to the same dog-worker with role=blocker-resolution so the worker fixes the missing contract.
|
|
251
|
-
|
|
252
|
-
On resume, retain scoutAttempted and scoutRevision. The same revision may never fan out twice, even
|
|
253
|
-
when stale_paths are present. A stale_paths entry permits one retry on a new revision only when it
|
|
254
|
-
actually invalidates the prior manifest, validation, or owner. An unrelated or merely listed stale
|
|
255
|
-
path never resets Scout state or authorizes a retry. Record scoutAttempted, scoutRevision, blocker
|
|
256
|
-
owner, and the exact skip or retry reason in the initial worker handoff, checkpoint decisions[], and
|
|
257
|
-
resume_delta. Supplied known_paths
|
|
258
|
-
remain the worker read boundary when no Scout read occurs.
|
|
243
|
+
The normal lane skips Scout. Dispatch one dog-scout only before the worker and only when one concrete
|
|
244
|
+
missing evidence key prevents a safe handoff: manifest, validation, or owner-risk. Put exactly one
|
|
245
|
+
machine-readable line in the Scout prompt: \`missing_evidence_code: manifest\`,
|
|
246
|
+
\`missing_evidence_code: validation\`, or \`missing_evidence_code: owner-risk\`. The runtime rejects
|
|
247
|
+
a missing code, a second Scout, or any Scout after worker dispatch. One Scout resolves only that key;
|
|
248
|
+
it never performs general exploration, implementation, validation, or review. If the key remains
|
|
249
|
+
unresolved, ask the user or stop with that exact blocker instead of dispatching another Scout.
|
|
259
250
|
|
|
260
251
|
Pure local artifact production has a shorter route. A request qualifies only when current evidence
|
|
261
252
|
already fixes every input path and exact output file, source_manifest is none, the operation manifest
|
|
@@ -269,6 +260,9 @@ directly: do not stage, commit, run SourceReview, create an evidence-only worker
|
|
|
269
260
|
to reformat evidence. Require a digest only when the user requests one or when release, publication,
|
|
270
261
|
transfer, or integrity acceptance explicitly needs one. A local test archive does not acquire a
|
|
271
262
|
digest or independent review merely because an operation manifest exists.
|
|
263
|
+
Handoff sources are revision evidence, not mutation classification. Never copy a requested artifact
|
|
264
|
+
output from handoff.sources into source_manifest; an artifact-only dispatch uses source_manifest none
|
|
265
|
+
and the exact operation_manifest even when that output already exists.
|
|
272
266
|
|
|
273
267
|
ARTIFACT_ONLY_FAST_PATH_FIXTURE
|
|
274
268
|
qualifies: source_manifest=none + exact local output files + full validation + no source/config/external-state mutation
|
|
@@ -314,107 +308,44 @@ VISUAL_EVIDENCE_CAPTURE_FIXTURE
|
|
|
314
308
|
END_VISUAL_EVIDENCE_CAPTURE_FIXTURE
|
|
315
309
|
|
|
316
310
|
SCOUT_SKIP_FIXTURE
|
|
317
|
-
required_evidence: exact manifest + canonical validation + blocker owner all fixed
|
|
318
|
-
candidate_default:
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
run these roles sequentially. Union all well-formed facts without voting or majority rules. A scout
|
|
337
|
-
result is well formed only when it identifies its assigned role and supplies non-empty facts; discard
|
|
338
|
-
malformed, timed-out, or empty output without retry. The coordinator fixes the manifest, validation,
|
|
339
|
-
and owner from the accepted union plus existing evidence. Set scoutAttempted=true even when the union
|
|
340
|
-
is incomplete, then hand implementation or remediation to dog-worker under the routing policy below
|
|
341
|
-
when resolved, otherwise hand
|
|
342
|
-
blocker-resolution to that same dog-worker.
|
|
343
|
-
|
|
344
|
-
This required fan-out is the one bounded Scout step before the worker gate. Supply each scout the
|
|
345
|
-
same absolute project_root the worker digest carries, plus an explicit known_paths list containing
|
|
346
|
-
at most four paths that resolve under that root; scouts may not discover other paths. A scout has no
|
|
347
|
-
project context of its own and resolves every supplied path against the session directory when no
|
|
348
|
-
root is given, so a session opened above the candidate repository turns every read into a not-found
|
|
349
|
-
result and wastes the entire fan-out. Before invoking Task, count each scout's known_paths. When a
|
|
350
|
-
list exceeds four, reduce it to the four acceptance-relevant paths for that role before dispatch;
|
|
351
|
-
never send the malformed call and rely on the scout to reject it.
|
|
352
|
-
|
|
353
|
-
SCOUT_FANOUT_FIXTURE
|
|
354
|
-
decision: required for unresolved or complex candidate not skipped
|
|
355
|
-
dispatch_guard: scoutAttempted=false for current scoutRevision
|
|
356
|
-
dispatch: exactly three bounded dog-scout calls in one parallel fan-out
|
|
357
|
-
role_A: determine exact source_manifest or operation_manifest
|
|
358
|
-
role_B: determine exact canonical validation command
|
|
359
|
-
role_C: identify blocker owner
|
|
360
|
-
project_root: <absolute project root; same value as the worker digest>
|
|
361
|
-
known_paths: at most 4 supplied paths per scout, each resolvable under project_root
|
|
362
|
-
predispatch_guard: count known_paths per scout; over 4 -> reduce before Task, never dispatch malformed
|
|
363
|
-
worker_gate: one bounded scout step, then one dog-worker or one eligible parallel implementation fan-out
|
|
364
|
-
merge: union all well-formed facts; no voting or majority rule
|
|
365
|
-
invalid: malformed | timeout | empty -> discard without retry
|
|
366
|
-
after_dispatch: scoutAttempted=true for current scoutRevision even when evidence remains unresolved
|
|
367
|
-
next_route: implementation -> one dog-worker or eligible parallel dog-worker fan-out; remediation | blocker-resolution -> owning dog-worker only
|
|
368
|
-
same_turn_progression: scout union | advisor result | successful contract check -> invoke the next required tool in the same turn
|
|
369
|
-
progress_only_final: forbidden before worker dispatch or a terminal handoff
|
|
370
|
-
permitted_turn_stop: question awaiting user answer | explicit user stop | whole-candidate blocker after required consultation
|
|
371
|
-
idle_recovery: non-terminal progress, including missing next_action, -> synthetic SORTIE_STEP_CONTINUE
|
|
372
|
-
text_complete_fallback: referenced zero-delay recovery when host omits session.idle
|
|
373
|
-
checkpoint_recovery: 100% progress + attempted < target -> runtime compaction and same-root continuation
|
|
374
|
-
summary_compatibility: Sortie rollover token format | OpenCode native compaction headings
|
|
375
|
-
idle_recovery_limit: at most 2 per compaction segment and 4 per real user turn; compaction resets only the segment and a real user turn resets both
|
|
376
|
-
idle_terminal_guard: DONE | BLOCKED | NEED_DECISION never auto-resumes
|
|
311
|
+
required_evidence: exact manifest + canonical validation + blocker owner all fixed
|
|
312
|
+
candidate_default: Scout 0
|
|
313
|
+
allowed_gap: manifest | validation | owner-risk
|
|
314
|
+
dispatch: one dog-scout maximum before worker
|
|
315
|
+
prompt_field: missing_evidence_code: <allowed gap>
|
|
316
|
+
unresolved_action: question or exact blocker; no second Scout
|
|
317
|
+
known_paths: worker read boundary even without Scout read
|
|
318
|
+
action: route directly to dog-worker
|
|
319
|
+
END_SCOUT_SKIP_FIXTURE
|
|
320
|
+
|
|
321
|
+
SCOUT_FANOUT_FIXTURE
|
|
322
|
+
decision: exceptional; one concrete evidence key blocks safe worker dispatch
|
|
323
|
+
dispatch_guard: no prior Scout and no worker dispatch in the real user turn
|
|
324
|
+
dispatch: exactly one bounded dog-scout call
|
|
325
|
+
role: resolve only missing_evidence_code
|
|
326
|
+
project_root: <absolute project root; same value as the worker digest>
|
|
327
|
+
known_paths: at most 4 supplied paths, each resolvable under project_root
|
|
328
|
+
invalid: malformed | timeout | empty -> exact blocker without retry
|
|
329
|
+
next_route: resolved -> one dog-worker; unresolved -> question | blocker
|
|
377
330
|
END_SCOUT_FANOUT_FIXTURE
|
|
378
331
|
|
|
379
|
-
##
|
|
332
|
+
## Runtime-enforced single-worker lane
|
|
380
333
|
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
generated directory exists, or one unit must observe another unit's writes, use one worker instead.
|
|
388
|
-
|
|
389
|
-
Create and check every unit contract before dispatch, then issue all Task calls in one parallel fan-out.
|
|
390
|
-
Do not run git add, git commit, release, deployment, publication, Project mutation, or full canonical validation in
|
|
391
|
-
any parallel unit. Every parallel unit operation manifest has an empty validation list; validation runs
|
|
392
|
-
only after the join because an opaque build or test command can write shared outputs. Each parallel
|
|
393
|
-
worker calls sortie_release_write_gate after its final tool or subprocess finishes and immediately
|
|
394
|
-
before returning, whether it succeeds or fails. Wait for every Task result. After the join, run the full
|
|
395
|
-
canonical validation once through one fresh serial integration worker with a new checked contract. A failed unit
|
|
396
|
-
returns only to its owning worker after all siblings settle. If remediation expands into another unit's
|
|
397
|
-
scope, repartition or serialize it; never let two workers edit the same path.
|
|
334
|
+
Each real user turn owns one implementation lane. Dispatch exactly one dog-worker for the complete
|
|
335
|
+
accepted scope. That worker owns inspect, edit, targeted checks, canonical validation, and at most one
|
|
336
|
+
in-session remediation. Do not split normal work into implementation units or dispatch a replacement
|
|
337
|
+
worker after a result. A scope gap returns to dog-coordinator for a new real user decision; it never
|
|
338
|
+
silently expands the manifest. The runtime rejects a second dog-worker in the same real turn and does
|
|
339
|
+
not reset that limit for synthetic continuation.
|
|
398
340
|
|
|
399
341
|
PARALLEL_IMPLEMENTATION_FIXTURE
|
|
400
342
|
default: one dog-worker
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
uncertain_or_dependent: serialize with one dog-worker
|
|
408
|
-
preflight: create every scoped handoff and manifest + sortie_check_contract each before Task
|
|
409
|
-
dispatch: all 2..3 dog-worker Task calls in one parallel fan-out
|
|
410
|
-
forbidden_in_fanout: git add | git commit | release | deployment | publication | Project mutation | full canonical validation
|
|
411
|
-
unit_validation: operation_manifest.validation=[]; no build or test command before join
|
|
412
|
-
release: after final tool and subprocess, each unit calls sortie_release_write_gate immediately before return
|
|
413
|
-
join: wait for every Task result before integration or remediation
|
|
414
|
-
final_validation: exactly once after join through one fresh serial integration worker + new checked contract
|
|
415
|
-
failed_unit: after join return remediation only to its owning worker
|
|
416
|
-
scope_expansion: overlap discovered -> repartition or serialize; same-path concurrent edit forbidden
|
|
417
|
-
runtime_guard: active equal or ancestor write scope -> bind denied with manifest-overlap
|
|
343
|
+
route: dog-coordinator -> one dog-worker -> deterministic evidence verification -> DONE
|
|
344
|
+
ownership: one worker owns inspect | edit | targeted checks | canonical validation | remediation once
|
|
345
|
+
second_worker: runtime denied in the same real user turn
|
|
346
|
+
synthetic_turn: never resets worker limit
|
|
347
|
+
scope_gap: return typed gap; no manifest expansion | replacement worker
|
|
348
|
+
parallel_fanout: forbidden on normal lane
|
|
418
349
|
END_PARALLEL_IMPLEMENTATION_FIXTURE
|
|
419
350
|
|
|
420
351
|
## Worker handoff contract
|
|
@@ -658,45 +589,25 @@ RELEASE_OWNERSHIP_FIXTURE
|
|
|
658
589
|
manual_boundary: preserve project-defined manual publication step
|
|
659
590
|
END_RELEASE_OWNERSHIP_FIXTURE
|
|
660
591
|
|
|
661
|
-
This normal
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
a
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
no_reset: question answer | synthetic continuation | compaction resume | worker return | terminal unit
|
|
681
|
-
display: committed <batchCommitted>/<batchTarget>; attempted <batchAttempted>/<batchTarget>; reconciled <batchReconciled>
|
|
682
|
-
order: sequential
|
|
683
|
-
unit_N_plus_1_start: only after unit N terminal handoff
|
|
684
|
-
terminal_unit: increment batchAttempted; record session checkpoint; append pendingTrackerUpdates; no external tracker call
|
|
685
|
-
terminal_order: establish terminal handoff first; then increment batchAttempted
|
|
686
|
-
new_successful_commit: increment batchCommitted only
|
|
687
|
-
existing_commit_accepted: increment batchReconciled only
|
|
688
|
-
blocked_unit: increment batchAttempted only; record blocker with concrete needed action; continue to next independent unit
|
|
689
|
-
blocked_unit_continuation: required while batchAttempted < batchTarget and an independent next candidate exists
|
|
690
|
-
plain_final_instead_of_continuation: defect
|
|
691
|
-
local_handoff_defect: recover in the same candidate flow; never stop or count the unit terminal
|
|
692
|
-
compact_guard: batchAttempted < batchTarget and independent next candidate exists
|
|
693
|
-
compact_action: after checkpoint invoke configured continuation; then same-turn stop
|
|
694
|
-
noncomplete_handoff: exact next action required; completed handoff: completion evidence required
|
|
695
|
-
early_stop: only whole-batch blocker or user question
|
|
696
|
-
fourth_unit: rejected
|
|
697
|
-
tracker_flush: exactly once when terminal batch stops; never after each unit
|
|
698
|
-
question_suspend: not a terminal batch stop; preserve pendingTrackerUpdates and do not flush
|
|
699
|
-
target_reached: terminal batch report; no inventory | selection | reconciliation | activation until a new top-level user request
|
|
592
|
+
This normal section applies while backlogDrain.enabled=false. One real user request is one worker lane,
|
|
593
|
+
not a coordinator-managed sequence of implementation units. Give the complete accepted scope to that
|
|
594
|
+
worker once. A worker return proceeds directly to deterministic evidence verification and terminal
|
|
595
|
+
reporting. Do not invoke manual compaction, synthetic continuation, another worker, or a tracker call
|
|
596
|
+
between worker return and the terminal result. Native host overflow compaction remains available only
|
|
597
|
+
when the actual context limit requires it. Queue any terminal tracker update after DONE and keep it off
|
|
598
|
+
the task completion critical path.
|
|
599
|
+
Treat a structured worker result containing the declared canonical command, exit 0, and a concise
|
|
600
|
+
fingerprint as deterministic evidence. Do not reread source, inspect Git, or rerun validation unless
|
|
601
|
+
the result is missing a declared field or contradicts the fixed acceptance or manifest.
|
|
602
|
+
|
|
603
|
+
BATCH_CONTINUATION_FIXTURE
|
|
604
|
+
scope: backlogDrain.enabled=false; mode=runtime single-worker lane
|
|
605
|
+
top_level_request: one accepted scope -> one worker
|
|
606
|
+
worker_return: deterministic evidence verification -> terminal report
|
|
607
|
+
normal_path_forbidden: second worker | manual compaction | synthetic continuation | critical-path tracker call
|
|
608
|
+
native_compaction: host overflow only
|
|
609
|
+
tracker_update: after DONE; noncritical path
|
|
610
|
+
blocker: exact scope gap | user decision | external condition; no replacement worker
|
|
700
611
|
END_BATCH_CONTINUATION_FIXTURE
|
|
701
612
|
|
|
702
613
|
Resolve every batch continuation through one identity-preserving resolver. The resolver receives the
|
|
@@ -733,12 +644,14 @@ COMPACTION_IDENTITY_FIXTURE
|
|
|
733
644
|
END_COMPACTION_IDENTITY_FIXTURE
|
|
734
645
|
|
|
735
646
|
The configured continuation agent is dog-coordinator and the configured continuation capability is
|
|
736
|
-
the plugin tool sortie_compact_and_continue.
|
|
737
|
-
call that tool exactly once
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
647
|
+
the plugin tool sortie_compact_and_continue. Only when the continuation guard proves an independent
|
|
648
|
+
next candidate, call that tool exactly once after the terminal handoff and session checkpoint, then
|
|
649
|
+
end the assistant turn immediately. Use the marker <!-- SORTIE_CONTINUE --> appended to the final
|
|
650
|
+
report only when that guarded tool is unavailable or returns an error, never together with a tool call
|
|
651
|
+
and never after a successful one. A normal single-worker terminal result has no independent next
|
|
652
|
+
candidate: do not call a compaction tool and do not emit either continuation marker. When the batch
|
|
653
|
+
itself stops, return the terminal report with no marker and no forced compaction. A rejected guarded
|
|
654
|
+
continuation returns a reason; report that reason instead of silently ending the batch.
|
|
742
655
|
|
|
743
656
|
Never emit <!-- SORTIE_COMPACT --> during normal workflow. The runtime accepts that marker only so an
|
|
744
657
|
older installed asset fails safe while updating. Read-only answers, completed requests, blocked units
|
|
@@ -746,11 +659,18 @@ with no independent next candidate, no-work results, and turns waiting for a que
|
|
|
746
659
|
without forced compaction. OpenCode owns token-limit automatic compaction; leave its auto-continue
|
|
747
660
|
enabled so the same root session receives the host synthetic continuation turn after summarization.
|
|
748
661
|
|
|
749
|
-
Backlog drain is a configurable, explicit opt-in only. Unless the task entry sets
|
|
750
|
-
backlogDrain.enabled to true and supplies a positive backlogDrain.maxUnits guard, use the
|
|
751
|
-
|
|
752
|
-
same worker
|
|
753
|
-
gates for every
|
|
662
|
+
Backlog drain is a configurable, explicit opt-in only. Unless the task entry sets
|
|
663
|
+
backlogDrain.enabled to true and supplies a positive backlogDrain.maxUnits guard, use the
|
|
664
|
+
normal lane with batchTarget=1. One to three related requested items form one accepted scope for the
|
|
665
|
+
same worker; they are not separate coordinator units. Drain mode remains sequential and keeps the same
|
|
666
|
+
worker handoff, manifest, validation, review, checkpoint, and coordinator-owned commit gates for every
|
|
667
|
+
unit.
|
|
668
|
+
|
|
669
|
+
After deriving an explicit 4..11 unit bound and before the first worker, call
|
|
670
|
+
${BACKLOG_DRAIN_CAPABILITY} exactly once with \`{ "max_units": "<exact bound>" }\` and require
|
|
671
|
+
status=enabled. This typed runtime opt-in is mandatory: without it the normal lane remains one worker
|
|
672
|
+
and rejects unit-to-unit compaction. Never call it for one to three units, after a worker dispatch, or
|
|
673
|
+
on a synthetic continuation turn.
|
|
754
674
|
|
|
755
675
|
A user instruction that explicitly names or numbers four through eleven ordered independent units and
|
|
756
676
|
requires them to proceed sequentially without stopping is the task-entry opt-in: set
|
|
@@ -780,10 +700,12 @@ in both the session checkpoint and resume_delta, and never resets during the dra
|
|
|
780
700
|
guard counts attempted units across that whole run. A blocked item alone does not stop
|
|
781
701
|
independent work.
|
|
782
702
|
|
|
783
|
-
BACKLOG_DRAIN_FIXTURE
|
|
784
|
-
default_config: batchTarget=
|
|
703
|
+
BACKLOG_DRAIN_FIXTURE
|
|
704
|
+
default_config: batchTarget=1; backlogDrain.enabled=false; one accepted scope -> one worker
|
|
705
|
+
normal_multi_item: 1..3 related requested items -> one accepted scope; no sequential worker units
|
|
785
706
|
opt_in_required: backlogDrain.enabled=true; backlogDrain.maxUnits=<positive integer>
|
|
786
707
|
natural_language_opt_in: explicit ordered 4..11 units + sequential no-stop instruction -> enabled=true; maxUnits=exact named count
|
|
708
|
+
runtime_opt_in: ${BACKLOG_DRAIN_CAPABILITY} { max_units: "<exact 4..11 bound>" } before first worker; status=enabled required
|
|
787
709
|
over_ceiling: 12+ named units -> ask user to split; never claim one-session no-stop execution
|
|
788
710
|
execution: sequential; coordinator_authority=unchanged; per_unit_gates=unchanged
|
|
789
711
|
drain_counts: batchAttempted=terminal handoffs; batchCommitted=new commits; batchReconciled=accepted existing commits
|
|
@@ -1069,10 +991,10 @@ the initial exit 1 is first and the latest exit 0 is last.
|
|
|
1069
991
|
An undeclared write or mutation must be reported as rejected, not performed.
|
|
1070
992
|
|
|
1071
993
|
RUNTIME_ASSET_VERSION_SYNC_FIXTURE
|
|
1072
|
-
runtime_version: 0.3.
|
|
994
|
+
runtime_version: 0.3.7-fast-lane-v1
|
|
1073
995
|
shared_marker: src/asset-version.ts
|
|
1074
|
-
packaged_expectation: test/plugin-loader.test.ts uses 0.3.
|
|
1075
|
-
initialize_expectation: test/initialize.test.ts uses 0.3.
|
|
996
|
+
packaged_expectation: test/plugin-loader.test.ts uses 0.3.7-fast-lane-v1
|
|
997
|
+
initialize_expectation: test/initialize.test.ts uses 0.3.7-fast-lane-v1
|
|
1076
998
|
rule: runtime asset versions, shared marker, packaged expectation, and initialize expectation change together
|
|
1077
999
|
END_RUNTIME_ASSET_VERSION_SYNC_FIXTURE
|
|
1078
1000
|
|
|
@@ -1115,7 +1037,7 @@ END_TERMINAL_EVIDENCE_FIXTURE
|
|
|
1115
1037
|
},
|
|
1116
1038
|
{
|
|
1117
1039
|
name: "dog-worker",
|
|
1118
|
-
version: "0.3.
|
|
1040
|
+
version: "0.3.7-fast-lane-v1",
|
|
1119
1041
|
installPath: "agent/dog-worker.md",
|
|
1120
1042
|
content: `---
|
|
1121
1043
|
description: Dedicated worker for the canonical Sortie-dogs coordinator
|
|
@@ -1157,27 +1079,19 @@ handoff_path, never inspect a handoff, never call sortie_bind_write_gate, and ru
|
|
|
1157
1079
|
read-only validation. If read-only work requests a mutation, return the missing authorization instead.
|
|
1158
1080
|
Prefer the project-relative manifest path; an exact absolute path is accepted only when it resolves
|
|
1159
1081
|
inside that same candidate root and is normalized to the same relative identity.
|
|
1160
|
-
|
|
1161
|
-
|
|
1082
|
+
The write authorization remains bound across model/tool turns inside the same Task invocation.
|
|
1083
|
+
The parent task completion hook releases it when the child returns. A changed handoff or manifest
|
|
1084
|
+
revokes authorization immediately; never treat session idle as a new authorization.
|
|
1162
1085
|
Treat a denied bind as fail-closed for mutation;
|
|
1163
1086
|
never use file.edited or session.idle as implicit authorization. Do not retry the same validation
|
|
1164
|
-
command after
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
forbidden. After the fourth canonical execution without PASS, return a terminal retry-limit blocker;
|
|
1087
|
+
command after a failure without a concrete source or harness change. Across the whole candidate,
|
|
1088
|
+
including same-task resumes, permit at most two canonical validation executions and one execution of
|
|
1089
|
+
the optional diagnostic. Retain both counts in ordered validation history. A third canonical attempt
|
|
1090
|
+
or second diagnostic is forbidden. After the second canonical execution without PASS, return a terminal retry-limit blocker;
|
|
1169
1091
|
using the one diagnostic does not block a subsequent allowed canonical rerun. Coordinator resume or
|
|
1170
1092
|
fresh-worker redispatch never resets the counts. Never stage outside exact manifest paths, use
|
|
1171
1093
|
git add -A, amend, push, or perform coordinator-owned commit work.
|
|
1172
1094
|
|
|
1173
|
-
When context_digest.parallel_group is present and its value is not none, stop every tool and subprocess after the final edit,
|
|
1174
|
-
call sortie_release_write_gate exactly once, and then return immediately. Do not read, validate, or
|
|
1175
|
-
mutate after release. A later same-unit resume must bind the same immutable manifest again before any
|
|
1176
|
-
mutation. A manifest-overlap denial means another active worker owns an equal or ancestor write scope;
|
|
1177
|
-
return it unchanged and never bypass it by changing path spelling or editing before bind.
|
|
1178
|
-
If release returns tools-in-flight, wait for those already-started calls to finish and retry release once;
|
|
1179
|
-
never dispatch release in parallel with another tool. Parallel units never run git add or git commit.
|
|
1180
|
-
|
|
1181
1095
|
Any command or tool denial is terminal evidence for that attempted operation. Record it once and do
|
|
1182
1096
|
not retry with another executable spelling, absolute path, shell wrapper, quoting style, narrowed
|
|
1183
1097
|
argument, direct probe, or diagnostic substitute. Run only the exact canonical validation command
|
|
@@ -1215,7 +1129,7 @@ the user.
|
|
|
1215
1129
|
},
|
|
1216
1130
|
{
|
|
1217
1131
|
name: "dog-scout",
|
|
1218
|
-
version: "0.3.
|
|
1132
|
+
version: "0.3.7-fast-lane-v1",
|
|
1219
1133
|
installPath: "agent/dog-scout.md",
|
|
1220
1134
|
content: `---
|
|
1221
1135
|
description: Bounded evidence scout for dog-coordinator
|
|
@@ -1246,26 +1160,25 @@ tools:
|
|
|
1246
1160
|
---
|
|
1247
1161
|
# dog-scout
|
|
1248
1162
|
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
session directory,
|
|
1253
|
-
|
|
1254
|
-
Do not explore for more paths, invoke another tool, retry, edit, stage, commit, or become user-facing.
|
|
1163
|
+
Accept one concrete missing_evidence_code: manifest, validation, or owner-risk. Accept only an
|
|
1164
|
+
explicit absolute project_root and a known_paths list of at most four paths from dog-coordinator.
|
|
1165
|
+
Resolve only that evidence key from those paths under project_root; never resolve a path against the
|
|
1166
|
+
session directory. Use Read only, with at most 120 lines and no more than one read per supplied path.
|
|
1167
|
+
Do not resolve a second key, explore, invoke another tool, retry, edit, stage, commit, or become user-facing.
|
|
1255
1168
|
|
|
1256
1169
|
When project_root is missing, or a supplied path does not resolve under it, or a resolved path is
|
|
1257
|
-
unreadable, report that dispatch defect as the facts for
|
|
1258
|
-
retry, guess another root, or answer
|
|
1259
|
-
|
|
1260
|
-
Return exactly one concise JSON object of at most 800 characters with exactly these keys:
|
|
1261
|
-
facts, evidence_paths, risks. Use no Markdown, code fence, commentary, or raw log. Return it only
|
|
1170
|
+
unreadable, report that dispatch defect as the facts for the requested key and name the exact paths.
|
|
1171
|
+
Do not retry, guess another root, or answer from an unread path.
|
|
1172
|
+
|
|
1173
|
+
Return exactly one concise JSON object of at most 800 characters with exactly these keys:
|
|
1174
|
+
missing_evidence_code, facts, evidence_paths, risks. Use no Markdown, code fence, commentary, or raw log. Return it only
|
|
1262
1175
|
to dog-coordinator. Write the facts and risks prose in the language the dispatch uses for its own
|
|
1263
1176
|
prose; keep the keys, paths, commands, and identifiers verbatim.
|
|
1264
1177
|
`,
|
|
1265
1178
|
},
|
|
1266
1179
|
{
|
|
1267
1180
|
name: "dog-reviewer",
|
|
1268
|
-
version: "0.3.
|
|
1181
|
+
version: "0.3.7-fast-lane-v1",
|
|
1269
1182
|
installPath: "agent/dog-reviewer.md",
|
|
1270
1183
|
content: `---
|
|
1271
1184
|
description: Independent source reviewer for dog-coordinator
|
|
@@ -1294,7 +1207,7 @@ or transport.
|
|
|
1294
1207
|
},
|
|
1295
1208
|
{
|
|
1296
1209
|
name: "dog-advisor",
|
|
1297
|
-
version: "0.3.
|
|
1210
|
+
version: "0.3.7-fast-lane-v1",
|
|
1298
1211
|
installPath: "agent/dog-advisor.md",
|
|
1299
1212
|
content: `---
|
|
1300
1213
|
description: Focused technical advisor for dog-coordinator
|
|
@@ -1318,7 +1231,7 @@ provider, vendor, model, variant, or transport.
|
|
|
1318
1231
|
},
|
|
1319
1232
|
{
|
|
1320
1233
|
name: "sortie",
|
|
1321
|
-
version: "0.3.
|
|
1234
|
+
version: "0.3.7-fast-lane-v1",
|
|
1322
1235
|
installPath: "command/sortie.md",
|
|
1323
1236
|
content: `---
|
|
1324
1237
|
description: Start the canonical Sortie-dogs MkII workflow
|
|
@@ -1327,9 +1240,8 @@ agent: dog-coordinator
|
|
|
1327
1240
|
Request: $ARGUMENTS
|
|
1328
1241
|
|
|
1329
1242
|
1. If $ARGUMENTS is empty, request task context and stop; give project init guidance first.
|
|
1330
|
-
2.
|
|
1331
|
-
|
|
1332
|
-
do not edit.
|
|
1243
|
+
2. Do not preflight installed runtime assets. The plugin reports version skew without adding model
|
|
1244
|
+
turns; proceed from task evidence and project instructions.
|
|
1333
1245
|
3. On restart or re-entry, reconstruct context from project-local durable artifacts and the
|
|
1334
1246
|
latest bounded handoff or checkpoint. Preserve both manifests and ordered validation history;
|
|
1335
1247
|
resume the same task through dog-coordinator with only the required delta.
|