sortie-dogs 0.13.5 → 0.13.6
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
CHANGED
|
@@ -35,10 +35,10 @@ implementation, validation, review, and model routing.
|
|
|
35
35
|
Guides: [日本語](docs/guide-ja.md) · [简体中文](docs/guide-zh-CN.md) ·
|
|
36
36
|
[Testing](docs/testing.md) · [CLI testing](docs/cli-testing.md)
|
|
37
37
|
|
|
38
|
-
**Current release: [v0.13.
|
|
39
|
-
([release notes](docs/release-v0.13.
|
|
38
|
+
**Current release: [v0.13.6](https://github.com/zufall-upon/Sortie-dogs/releases/tag/v0.13.6)**
|
|
39
|
+
([release notes](docs/release-v0.13.6.md)). The default Mission runtime retains the `v010`
|
|
40
40
|
profile, command and configuration names for compatibility; these names do not mean v0.10 is installed.
|
|
41
|
-
The current asset marker is `0.13.
|
|
41
|
+
The current asset marker is `0.13.6-acceptance-reuse-v1`.
|
|
42
42
|
|
|
43
43
|
## SWE-bench Lite: 170/300 (56.67%)
|
|
44
44
|
|
|
@@ -48,7 +48,7 @@ The fixed **Sortie-dogs v0.12.24** harness resolved **170 of 300 SWE-bench Lite
|
|
|
48
48
|
|
|
49
49
|
The single official 300-instance report and frozen predictions are hash-bound in the report. Confirmed inference expense was **$162.99**; a separate **$34.60** of usage has unknown pricing and is held against the campaign cap, **not** counted as known expense. Leaderboard registration and maintainer acceptance are separate from this official local evaluation.
|
|
50
50
|
|
|
51
|
-
Historical scores below belong to their fixed candidates, not v0.13.
|
|
51
|
+
Historical scores below belong to their fixed candidates, not v0.13.6. SWE-bench is a separate,
|
|
52
52
|
optional measurement rather than a mandatory release gate.
|
|
53
53
|
|
|
54
54
|
> **Beta:** v0.13.x is still stabilizing. Runtime behavior,
|
|
@@ -93,7 +93,18 @@ existing local bridge loads enforcement and model routing. OpenCode can reload w
|
|
|
93
93
|
but replacing an installed dependency may require a full restart. A new chat session alone does not
|
|
94
94
|
prove the newly installed plugin is loaded.
|
|
95
95
|
|
|
96
|
-
## v0.13.
|
|
96
|
+
## v0.13.6 runtime updates
|
|
97
|
+
|
|
98
|
+
PR #156 references recorded formal PASS evidence in acceptance summaries instead of fetching
|
|
99
|
+
the same successful unit's native history again for display. Missing/failed proof retains history
|
|
100
|
+
diagnostics; historical evidence is not current freshness or acceptance. Identical external artifact
|
|
101
|
+
inventories are shared only inside one snapshot refresh, never across later calls. Operator guidance
|
|
102
|
+
proceeds to acceptance when current evidence covers the request and no concrete gap remains.
|
|
103
|
+
Existing freshness/review guards, provider/model selection and cache-prefix machinery remain unchanged.
|
|
104
|
+
No end-to-end speedup or live token/cache-hit improvement was measured. Release receipts:
|
|
105
|
+
`_testenv/releases/0.13.6/`; see [release notes](docs/release-v0.13.6.md).
|
|
106
|
+
|
|
107
|
+
## v0.13.5 runtime updates (retained)
|
|
97
108
|
|
|
98
109
|
PR #154 preserves stable model instructions and appends changed host state at native history
|
|
99
110
|
boundaries, with complete current-state reconstruction after compaction. Genuine Reviewer tools
|
|
@@ -413,7 +424,7 @@ register stable and `v010` from the same package installation path in one host.
|
|
|
413
424
|
Project-local installation is recommended. To expose the current Mission assets globally:
|
|
414
425
|
|
|
415
426
|
```sh
|
|
416
|
-
npm install --global sortie-dogs@0.13.
|
|
427
|
+
npm install --global sortie-dogs@0.13.6
|
|
417
428
|
sortie-dogs init --global --profile v010
|
|
418
429
|
```
|
|
419
430
|
|
|
@@ -425,7 +436,7 @@ can resolve a **separate dependency** under that config root. Updating npm-globa
|
|
|
425
436
|
it. For that layout, also install the same release at the actual config root, then rerun global init:
|
|
426
437
|
|
|
427
438
|
```sh
|
|
428
|
-
npm install --prefix "$HOME/.config/opencode" sortie-dogs@0.13.
|
|
439
|
+
npm install --prefix "$HOME/.config/opencode" sortie-dogs@0.13.6
|
|
429
440
|
sortie-dogs init --global --profile v010
|
|
430
441
|
```
|
|
431
442
|
|
|
@@ -448,7 +459,7 @@ version, preserves user configuration, and stops safely on unknown ownership or
|
|
|
448
459
|
conflicting files.
|
|
449
460
|
|
|
450
461
|
Align any exact version pin or separate bridge dependency with the intended release too. An installed
|
|
451
|
-
marker of `0.13.
|
|
462
|
+
marker of `0.13.6-acceptance-reuse-v1` identifies the assets; it does not prove an already-running
|
|
452
463
|
OpenCode process has reloaded the plugin.
|
|
453
464
|
|
|
454
465
|
There is no supported uninstall command. Remove the npm dependency separately,
|
package/dist/asset-version.d.ts
CHANGED
|
@@ -3,5 +3,5 @@
|
|
|
3
3
|
* installed project marker without importing every asset body.
|
|
4
4
|
*/
|
|
5
5
|
export declare const RUNTIME_ASSET_VERSION = "0.3.89-completion-proof-v1";
|
|
6
|
-
export declare const V010_RUNTIME_ASSET_VERSION = "0.13.
|
|
6
|
+
export declare const V010_RUNTIME_ASSET_VERSION = "0.13.6-acceptance-reuse-v1";
|
|
7
7
|
export type RuntimeAssetVersion = typeof RUNTIME_ASSET_VERSION | typeof V010_RUNTIME_ASSET_VERSION;
|
package/dist/asset-version.js
CHANGED
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
* installed project marker without importing every asset body.
|
|
4
4
|
*/
|
|
5
5
|
export const RUNTIME_ASSET_VERSION = "0.3.89-completion-proof-v1";
|
|
6
|
-
export const V010_RUNTIME_ASSET_VERSION = "0.13.
|
|
6
|
+
export const V010_RUNTIME_ASSET_VERSION = "0.13.6-acceptance-reuse-v1";
|
|
@@ -534,6 +534,15 @@ export async function missionAcceptanceSummary(mission, run, operators, observe)
|
|
|
534
534
|
const provenance = { run_id: item.state.runID, unit_id: unit.unit.id, worker_session_id: unit.childSessionID,
|
|
535
535
|
state_archive_path: item.path, handoff_path: unit.handoffPath, historical: item.historical,
|
|
536
536
|
authority: "native declared-command observations; not additional formal evidence or current freshness" };
|
|
537
|
+
// Settled proof already records these commands. Do not fetch the same native
|
|
538
|
+
// history again merely to render acceptance; freshness is checked separately.
|
|
539
|
+
const proofs = unit.evidence ?? [];
|
|
540
|
+
if (unit.status === "succeeded" && unit.unit.validation.every(command => proofs.some(proof => proof.execution.exit_code === 0 && proof.execution.outcome === "pass" &&
|
|
541
|
+
proof.execution.command.includes(command)))) {
|
|
542
|
+
return { ...provenance, status: "recorded-formal-evidence",
|
|
543
|
+
evidence_ids: proofs.map(proof => proof.evidence_id),
|
|
544
|
+
details_ref: { field: "formal_validation", run_id: item.state.runID, unit_id: unit.unit.id } };
|
|
545
|
+
}
|
|
537
546
|
try {
|
|
538
547
|
if (!observe || !unit.childSessionID)
|
|
539
548
|
throw new Error("native-worker-history-unavailable");
|
|
@@ -164,13 +164,19 @@ function outside(projectRoot, path) {
|
|
|
164
164
|
const scoped = relative(projectRoot, path).replaceAll("\\", "/");
|
|
165
165
|
return scoped === ".." || scoped.startsWith("../") || isAbsolute(scoped);
|
|
166
166
|
}
|
|
167
|
-
async function declaredScopeDigest(projectRoot, paths, manifestHash, source, excluded = [], binding, candidatePolicy) {
|
|
167
|
+
async function declaredScopeDigest(projectRoot, paths, manifestHash, source, excluded = [], binding, candidatePolicy, artifactsMemo) {
|
|
168
168
|
const local = paths.filter(path => !outside(projectRoot, path));
|
|
169
169
|
const external = paths.filter(path => outside(projectRoot, path));
|
|
170
170
|
const project = await protectedScopeDigest(projectRoot, local, manifestHash, source ? "project-files-v1" : undefined, excluded, binding, candidatePolicy);
|
|
171
171
|
if (project === undefined)
|
|
172
172
|
return undefined;
|
|
173
|
-
const
|
|
173
|
+
const key = JSON.stringify(external);
|
|
174
|
+
let pending = artifactsMemo?.get(key);
|
|
175
|
+
if (!pending) {
|
|
176
|
+
pending = declaredArtifacts(external);
|
|
177
|
+
artifactsMemo?.set(key, pending);
|
|
178
|
+
}
|
|
179
|
+
const artifacts = await pending.catch(() => undefined);
|
|
174
180
|
return artifacts && goalFingerprint({ project, external: artifacts.entries.filter(([path]) => !excluded.some(root => !outside(root, path))) });
|
|
175
181
|
}
|
|
176
182
|
/** An existing operation may create its declared outputs. Compare its other inputs during execution;
|
|
@@ -274,8 +280,11 @@ export async function refreshProtectedSnapshot(projectRoot, binding) {
|
|
|
274
280
|
}
|
|
275
281
|
}
|
|
276
282
|
if (binding.source_policy === "declared-paths-v1") {
|
|
277
|
-
|
|
278
|
-
|
|
283
|
+
// Reuse identical external inventories only inside this read-only refresh.
|
|
284
|
+
// A later status/completion call always observes filesystem changes anew.
|
|
285
|
+
const artifactsMemo = new Map();
|
|
286
|
+
const source = await declaredScopeDigest(projectRoot, sourcePaths, manifestHash, true, [], binding, undefined, artifactsMemo);
|
|
287
|
+
const candidate = await declaredScopeDigest(projectRoot, candidatePaths, manifestHash, false, [], binding, binding.candidate_policy, artifactsMemo);
|
|
279
288
|
return source === undefined || candidate === undefined ? undefined : { source, candidate };
|
|
280
289
|
}
|
|
281
290
|
// Legacy evidence retains its original recipe; a new policy cannot relabel stale proof as fresh.
|
|
@@ -162,8 +162,8 @@ quality threshold and explicit model/budget choice. Follow AGENTS.md and use the
|
|
|
162
162
|
For a Coordinator ready candidate, use operator_status's acceptance_summary: verbatim original
|
|
163
163
|
requests, anchored cumulative formal validation, current review disposition (author self-recheck
|
|
164
164
|
is not independent approval) and recorded delivery state.
|
|
165
|
-
|
|
166
|
-
|
|
165
|
+
If current evidence covers the request and no concrete gap remains, proceed to acceptance.
|
|
166
|
+
Historical results are not current freshness PASS; read source or artifacts only to resolve a gap.
|
|
167
167
|
Existing validation freshness and Review guards still apply; this summary does not accept the mission.
|
|
168
168
|
One compact status check can lead directly to review_mission and its returned Reviewer Task; original
|
|
169
169
|
requests, diff and checks are supplied automatically. Add traces only for concrete extra information.
|