instar 1.3.1271 → 1.3.1272
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/dist/core/types.d.ts +7 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/data/standards-guard-index.json +1 -1
- package/dist/data/standards-guard-index.meta.json +2 -2
- package/dist/data/standards-registry.meta.json +1 -1
- package/dist/scheduler/AgentMdJobLoader.d.ts +2 -0
- package/dist/scheduler/AgentMdJobLoader.d.ts.map +1 -1
- package/dist/scheduler/AgentMdJobLoader.js +14 -7
- package/dist/scheduler/AgentMdJobLoader.js.map +1 -1
- package/dist/scheduler/InstallBuiltinJobs.d.ts.map +1 -1
- package/dist/scheduler/InstallBuiltinJobs.js +3 -0
- package/dist/scheduler/InstallBuiltinJobs.js.map +1 -1
- package/dist/scheduler/JevJobCompletionAudit.d.ts +18 -2
- package/dist/scheduler/JevJobCompletionAudit.d.ts.map +1 -1
- package/dist/scheduler/JevJobCompletionAudit.js +35 -5
- package/dist/scheduler/JevJobCompletionAudit.js.map +1 -1
- package/dist/scheduler/JobScheduler.js +3 -3
- package/dist/scheduler/JobScheduler.js.map +1 -1
- package/dist/scheduler/buildPerSlugManifest.d.ts +2 -0
- package/dist/scheduler/buildPerSlugManifest.d.ts.map +1 -1
- package/dist/scheduler/buildPerSlugManifest.js +2 -0
- package/dist/scheduler/buildPerSlugManifest.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +3 -3
- package/src/data/standards-guard-index.json +1 -1
- package/src/data/standards-guard-index.meta.json +2 -2
- package/src/data/standards-registry.meta.json +1 -1
- package/src/scaffold/templates/jobs/instar/commitment-detection.md +3 -1
- package/src/scaffold/templates/jobs/instar/reflection-trigger.md +3 -0
- package/upgrades/1.3.1272.md +58 -0
- package/upgrades/side-effects/jev-audit-claimed-effects.md +88 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# Side-Effects Review — Jev audit: claimed effects
|
|
2
|
+
|
|
3
|
+
**Version / slug:** `jev-audit-claimed-effects`
|
|
4
|
+
**Date:** `2026-09-23`
|
|
5
|
+
**Author:** `echo`
|
|
6
|
+
**Second-pass reviewer:** `not required (Tier 1; observe-only, adds no decision surface, fully reversible by removing frontmatter)`
|
|
7
|
+
|
|
8
|
+
## Summary of the change
|
|
9
|
+
|
|
10
|
+
The job-completion audit's deterministic column was inert on 363/363 rows
|
|
11
|
+
because no job declared an effect. Declaring unconditional `declaredEffects`
|
|
12
|
+
on this job population would manufacture false failures (the enabled jobs
|
|
13
|
+
write conditionally). This adds `conditionalEffects`: a jailed path the audit
|
|
14
|
+
verifies ONLY when the run claims it with an `EFFECT: <path>` stdout line.
|
|
15
|
+
Unclaimed → new `conditional-unclaimed` state (not suspicious). Claimed but
|
|
16
|
+
missing/stale → the existing `missing`/`stale` states (suspicious — the
|
|
17
|
+
false-success signal). Two built-in templates declare one effect each.
|
|
18
|
+
|
|
19
|
+
## Decision-point inventory
|
|
20
|
+
|
|
21
|
+
- *(none)* — the audit remains observe-only. The new state feeds the existing
|
|
22
|
+
evidence pack Jev reasons over; no block, retry, alert or gate is added.
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## 1. Over-block
|
|
27
|
+
|
|
28
|
+
Nothing is newly rejected. A run that prints no marker is `conditional-unclaimed`,
|
|
29
|
+
which is excluded from the suspicious stratum and gated on `false_success`
|
|
30
|
+
alone (same treatment as `no-effects-declared`). A claimed path that is
|
|
31
|
+
refused by the jail (absolute/`..`/symlink/escape) is recorded as `refused`,
|
|
32
|
+
as today, never as a failure of the job.
|
|
33
|
+
|
|
34
|
+
## 2. Under-block
|
|
35
|
+
|
|
36
|
+
A job that does work but forgets to print the marker reads as a quiet run —
|
|
37
|
+
the audit under-detects that run's success/failure exactly as it does today.
|
|
38
|
+
This is the safe direction: silence never accuses. A job that prints the marker
|
|
39
|
+
without writing the file is caught (`missing`/`stale`) — the target case.
|
|
40
|
+
|
|
41
|
+
## 3. Level-of-abstraction fit
|
|
42
|
+
|
|
43
|
+
The claim is parsed at the audit's capture chokepoint, the only place that
|
|
44
|
+
already holds the run output, the declared set and the jail root. No new
|
|
45
|
+
layer. The alternative — inferring "did work" from Jev — would put an LLM in
|
|
46
|
+
the deterministic column; the marker keeps the deterministic column
|
|
47
|
+
deterministic.
|
|
48
|
+
|
|
49
|
+
## 4. Signal vs authority compliance
|
|
50
|
+
|
|
51
|
+
Signal-producer. The marker parse is brittle-by-design (exact line shape) and
|
|
52
|
+
holds NO authority: its only output is a field in the evidence pack. Per
|
|
53
|
+
`docs/signal-vs-authority.md`, a brittle check may inform, never block. It
|
|
54
|
+
informs.
|
|
55
|
+
|
|
56
|
+
## 5. Interactions
|
|
57
|
+
|
|
58
|
+
- `declaredEffects` semantics unchanged; the two lists are unioned into the
|
|
59
|
+
verified set, each capped at 8 independently.
|
|
60
|
+
- The suspicious-stratum filter (`missing`/`stale`) is untouched, so
|
|
61
|
+
`conditional-unclaimed` never jumps the queue.
|
|
62
|
+
- Load-time validation is shared between both lists (one loop), so the jail
|
|
63
|
+
cannot drift between them.
|
|
64
|
+
- `installBuiltinJobs` overwrites built-in job bodies on update, so existing
|
|
65
|
+
agents receive the two template declarations on their next update
|
|
66
|
+
(Migration Parity — no separate migration needed; manifests regenerate).
|
|
67
|
+
|
|
68
|
+
## 6. External surfaces
|
|
69
|
+
|
|
70
|
+
Job stdout gains one line on the two declaring jobs. That line is the job's
|
|
71
|
+
own output, already captured, scrubbed and clamped by the audit; it reaches
|
|
72
|
+
Jev inside the evidence pack under the existing egress rules. No new
|
|
73
|
+
network surface, no new user-facing message.
|
|
74
|
+
|
|
75
|
+
## 7. Multi-machine posture (Cross-Machine Coherence)
|
|
76
|
+
|
|
77
|
+
Machine-local BY DESIGN, identical to `declaredEffects`: the effect is a file
|
|
78
|
+
on the disk where the job ran, verified on that disk. Evidence packs and
|
|
79
|
+
verdict rows are already machine-local (14-day retention, never replicated,
|
|
80
|
+
never HTTP-served raw). No user-facing notice is added, so one-voice gating
|
|
81
|
+
does not apply.
|
|
82
|
+
|
|
83
|
+
## 8. Rollback cost
|
|
84
|
+
|
|
85
|
+
Delete the `conditionalEffects` entries (and the marker instruction line)
|
|
86
|
+
from the two templates. The audit falls back to `no-effects-declared` —
|
|
87
|
+
today's behaviour. No migration, no state repair; existing packs with the
|
|
88
|
+
new state remain valid JSON and are read as non-suspicious.
|