instar 1.3.218 → 1.3.219
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/monitoring/QuotaTracker.d.ts +1 -0
- package/dist/monitoring/QuotaTracker.d.ts.map +1 -1
- package/dist/monitoring/QuotaTracker.js +10 -1
- package/dist/monitoring/QuotaTracker.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +2 -2
- package/upgrades/1.3.219.md +37 -0
- package/upgrades/quota-no-file-warn-once.eli16.md +19 -0
- package/upgrades/side-effects/quota-no-file-warn-once.md +44 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QuotaTracker.d.ts","sourceRoot":"","sources":["../../src/monitoring/QuotaTracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAGpF,MAAM,WAAW,kBAAkB;IACjC,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,UAAU,EAAE,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;IAClD,4EAA4E;IAC5E,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,cAAc,CAAQ;
|
|
1
|
+
{"version":3,"file":"QuotaTracker.d.ts","sourceRoot":"","sources":["../../src/monitoring/QuotaTracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAGpF,MAAM,WAAW,kBAAkB;IACjC,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,UAAU,EAAE,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;IAClD,4EAA4E;IAC5E,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,cAAc,CAAQ;IAM9B,OAAO,CAAC,YAAY,CAAS;gBAEjB,MAAM,EAAE,kBAAkB;IAItC;;;OAGG;IACH,QAAQ,IAAI,UAAU,GAAG,IAAI;IAwC7B;;;;;;;;;;;;;OAaG;IACH,SAAS,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO;IAKzC;;;;;OAKG;IACH,kBAAkB,CAAC,QAAQ,CAAC,EAAE,WAAW,GAAG;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAmDhF;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAsBpC;;OAEG;IACH,iBAAiB,IAAI,UAAU,CAAC,gBAAgB,CAAC;IAkBjD;;;;;;;;;;;OAWG;IACG,gBAAgB,CACpB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,SAAS,GAAE,MAAa,GACvB,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;CAiDrC;AAED,+DAA+D;AAC/D,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB"}
|
|
@@ -20,6 +20,12 @@ export class QuotaTracker {
|
|
|
20
20
|
cachedState = null;
|
|
21
21
|
lastRead = 0;
|
|
22
22
|
readCooldownMs = 5000; // Don't re-read more than every 5s
|
|
23
|
+
// Warn ONCE per no-file episode, not on every getState() call. The
|
|
24
|
+
// `!this.cachedState` guard below was ineffective: when the file is absent,
|
|
25
|
+
// cachedState is never populated, so the warn fired on every call (observed
|
|
26
|
+
// 902×/day on the gemini-cli agent — pure log spam that drowns real signal).
|
|
27
|
+
// Re-armed when the file reappears so a later disappearance warns once more.
|
|
28
|
+
warnedNoFile = false;
|
|
23
29
|
constructor(config) {
|
|
24
30
|
this.config = config;
|
|
25
31
|
}
|
|
@@ -35,11 +41,14 @@ export class QuotaTracker {
|
|
|
35
41
|
}
|
|
36
42
|
try {
|
|
37
43
|
if (!fs.existsSync(this.config.quotaFile)) {
|
|
38
|
-
if (!this.
|
|
44
|
+
if (!this.warnedNoFile) {
|
|
39
45
|
console.warn('[quota] No quota state file found — all jobs will run (fail-open)');
|
|
46
|
+
this.warnedNoFile = true;
|
|
40
47
|
}
|
|
41
48
|
return null;
|
|
42
49
|
}
|
|
50
|
+
// File present again → re-arm the one-shot warning for a future absence.
|
|
51
|
+
this.warnedNoFile = false;
|
|
43
52
|
const raw = fs.readFileSync(this.config.quotaFile, 'utf-8');
|
|
44
53
|
const state = JSON.parse(raw);
|
|
45
54
|
// Check staleness — stale data should fail open (allow all jobs)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QuotaTracker.js","sourceRoot":"","sources":["../../src/monitoring/QuotaTracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAW3D,MAAM,OAAO,YAAY;IACf,MAAM,CAAqB;IAC3B,WAAW,GAAsB,IAAI,CAAC;IACtC,QAAQ,GAAW,CAAC,CAAC;IACrB,cAAc,GAAG,IAAI,CAAC,CAAC,mCAAmC;
|
|
1
|
+
{"version":3,"file":"QuotaTracker.js","sourceRoot":"","sources":["../../src/monitoring/QuotaTracker.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "./builtin-manifest.schema.json",
|
|
3
3
|
"schemaVersion": 1,
|
|
4
|
-
"generatedAt": "2026-06-03T10:
|
|
5
|
-
"instarVersion": "1.3.
|
|
4
|
+
"generatedAt": "2026-06-03T10:45:46.826Z",
|
|
5
|
+
"instarVersion": "1.3.219",
|
|
6
6
|
"entryCount": 195,
|
|
7
7
|
"entries": {
|
|
8
8
|
"hook:session-start": {
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Upgrade Guide — vNEXT
|
|
2
|
+
|
|
3
|
+
<!-- assembled-by: assemble-next-md -->
|
|
4
|
+
<!-- bump: patch -->
|
|
5
|
+
|
|
6
|
+
## What Changed
|
|
7
|
+
|
|
8
|
+
`QuotaTracker.getState()` now logs the "No quota state file found — all jobs will run (fail-open)"
|
|
9
|
+
warning **once per missing-file episode** instead of on every call.
|
|
10
|
+
|
|
11
|
+
The previous `if (!this.cachedState)` guard was ineffective for the missing-file case: when the quota
|
|
12
|
+
file is absent, `cachedState` is never populated and `lastRead` is never set, so the read-cooldown
|
|
13
|
+
never engaged and the warning fired on **every** `getState()` — observed at **902 identical lines/day**
|
|
14
|
+
on the gemini-cli agent, drowning real signal in the logs. A one-shot `warnedNoFile` flag now gates the
|
|
15
|
+
warning and re-arms when the file reappears, so a later disappearance still surfaces exactly one warning.
|
|
16
|
+
|
|
17
|
+
No behavior change: quota is still fail-open when the file is absent. Only the log spam is removed.
|
|
18
|
+
|
|
19
|
+
## What to Tell Your User
|
|
20
|
+
|
|
21
|
+
- **Quieter logs**: "An agent with no quota-state file was logging the same 'fail-open' warning hundreds
|
|
22
|
+
of times a day. It now says it once, so real log signals aren't buried."
|
|
23
|
+
|
|
24
|
+
## Summary of New Capabilities
|
|
25
|
+
|
|
26
|
+
| Capability | How to Use |
|
|
27
|
+
|-----------|-----------|
|
|
28
|
+
| One-shot missing-quota-file warning | Automatic — the warning logs once per absence episode instead of per call. |
|
|
29
|
+
|
|
30
|
+
## Evidence
|
|
31
|
+
|
|
32
|
+
Verification:
|
|
33
|
+
|
|
34
|
+
- Unit: warns exactly once across 10 repeated `getState()` calls while the file stays missing;
|
|
35
|
+
re-arms after the file reappears then disappears (warns twice total across the episode boundary);
|
|
36
|
+
existing missing/stale/fresh-data warning tests unchanged.
|
|
37
|
+
- 88 quota-tracker tests green; `tsc --noEmit` clean.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Quota Warning Spam Fix — ELI16
|
|
2
|
+
|
|
3
|
+
Viewable private artifact:
|
|
4
|
+
https://echo.dawn-tunnel.dev/view/3549e97d-8bcc-4320-9fd0-c70b364dbe5a?sig=c4f780ce95e056f912a8aa959a982ad0baaeef692cfe993dbbf86a27efb168b7
|
|
5
|
+
|
|
6
|
+
When an agent has no "quota state" file (a small file that tracks how much of its usage budget is
|
|
7
|
+
left), Instar safely lets all scheduled jobs run anyway — and logs a one-line note: "No quota state
|
|
8
|
+
file found — all jobs will run."
|
|
9
|
+
|
|
10
|
+
The problem: that note was being written on **every single check** — hundreds of times a day (902× on
|
|
11
|
+
one agent). A log full of the same harmless line over and over buries the messages that actually
|
|
12
|
+
matter, like a smoke alarm that beeps every second so you stop hearing it.
|
|
13
|
+
|
|
14
|
+
The fix makes Instar say it **once** when the file goes missing, then stay quiet until the situation
|
|
15
|
+
changes. If the file later comes back and then disappears again, it'll say it once more. Nothing about
|
|
16
|
+
how jobs run changes — the agent still safely runs everything when there's no budget file. Only the
|
|
17
|
+
noise is gone.
|
|
18
|
+
|
|
19
|
+
_Tier-1 fix · branch `echo/quota-no-file-warn-once` · 2 new unit tests + 88 quota-tracker tests green._
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Side-Effects Review — QuotaTracker one-shot missing-file warning
|
|
2
|
+
|
|
3
|
+
**Version / slug:** `quota-no-file-warn-once`
|
|
4
|
+
**Date:** `2026-06-03`
|
|
5
|
+
**Author:** `echo`
|
|
6
|
+
**Second-pass reviewer:** `not required`
|
|
7
|
+
|
|
8
|
+
## Summary of the change
|
|
9
|
+
|
|
10
|
+
A `warnedNoFile` boolean is added to `QuotaTracker`. The missing-file branch warns only when the flag
|
|
11
|
+
is unset (then sets it); the file-present branch clears it. Net effect: one warning per absence episode
|
|
12
|
+
instead of one per `getState()` call. No change to the value `getState()` returns.
|
|
13
|
+
|
|
14
|
+
## Decision-point inventory
|
|
15
|
+
|
|
16
|
+
None. `getState()` still returns `null` when the file is absent or stale (fail-open). The flag only
|
|
17
|
+
gates a `console.warn` side-effect — it never affects the return value or any gating decision.
|
|
18
|
+
|
|
19
|
+
## 1. Could a real warning be SUPPRESSED?
|
|
20
|
+
|
|
21
|
+
Only repeats of the *same* condition are suppressed; the first occurrence of each absence episode still
|
|
22
|
+
logs. The flag re-arms when the file reappears, so a file that later disappears warns again — the
|
|
23
|
+
operator never loses the *signal*, only the *spam*. The stale-data and remote-API warnings are
|
|
24
|
+
untouched.
|
|
25
|
+
|
|
26
|
+
## 2. Could the flag get STUCK (never warn again when it should)?
|
|
27
|
+
|
|
28
|
+
No. The clear happens on the file-present path (right after `existsSync` passes, before the read), so
|
|
29
|
+
any successful observation of the file re-arms the one-shot. A persistently-missing file warns exactly
|
|
30
|
+
once — which is the intent.
|
|
31
|
+
|
|
32
|
+
## 3. Concurrency / state
|
|
33
|
+
|
|
34
|
+
`QuotaTracker` is a per-process singleton with synchronous `getState()`; the flag is plain instance
|
|
35
|
+
state mutated only inside that method. No async interleaving, no shared-file contention introduced.
|
|
36
|
+
|
|
37
|
+
## 4. Reversibility
|
|
38
|
+
|
|
39
|
+
Pure in-memory flag, no migration, no persisted state, no config. Revert = revert the two edits.
|
|
40
|
+
|
|
41
|
+
## Verdict
|
|
42
|
+
|
|
43
|
+
Bounded, additive, no decision-surface change. Removes a high-volume log-spam (902×/day observed)
|
|
44
|
+
without altering quota behavior.
|