instar 1.3.1230 → 1.3.1231
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/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/messaging/telegram-origin/OriginPresentation.d.ts.map +1 -1
- package/dist/messaging/telegram-origin/OriginPresentation.js +13 -7
- package/dist/messaging/telegram-origin/OriginPresentation.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +2 -2
- 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/upgrades/1.3.1231.md +20 -0
- package/upgrades/side-effects/automation-origin-footer.md +40 -0
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"generatedFrom": "source-tree",
|
|
4
4
|
"registrySha256": "3b12afd2e8d1cf7e26246e69c0af49bf7012a18d3a8bd128fe2aafa332f625c3",
|
|
5
|
-
"packageVersion": "1.3.
|
|
5
|
+
"packageVersion": "1.3.1231",
|
|
6
6
|
"guards": [
|
|
7
7
|
{
|
|
8
8
|
"ref": "docs/audits/phase-b/f10-triage.md",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"sha256": "
|
|
2
|
+
"sha256": "d1db8b38a51cfb861980f2efd38ce614ae50b53974b5abc6a54b24228793b9cb",
|
|
3
3
|
"registrySha256": "3b12afd2e8d1cf7e26246e69c0af49bf7012a18d3a8bd128fe2aafa332f625c3",
|
|
4
|
-
"packageVersion": "1.3.
|
|
4
|
+
"packageVersion": "1.3.1231"
|
|
5
5
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OriginPresentation.d.ts","sourceRoot":"","sources":["../../../src/messaging/telegram-origin/OriginPresentation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,sBAAsB,EAAkB,MAAM,YAAY,CAAC;AAEvH,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAAC,qBAAqB,CAEjE,CAAC;AACH,wBAAgB,oBAAoB,CAAC,KAAK,GAAE,OAAO,CAAC,qBAAqB,CAAM,EAC7E,YAAY,GAAE,OAAO,CAAC,qBAAqB,CAAM,GAAG,qBAAqB,CAQ1E;AACD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAMpF;AAOD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,sBAAsB,EAAE,OAAO,EAAE,qBAAqB,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"OriginPresentation.d.ts","sourceRoot":"","sources":["../../../src/messaging/telegram-origin/OriginPresentation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,sBAAsB,EAAkB,MAAM,YAAY,CAAC;AAEvH,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAAC,qBAAqB,CAEjE,CAAC;AACH,wBAAgB,oBAAoB,CAAC,KAAK,GAAE,OAAO,CAAC,qBAAqB,CAAM,EAC7E,YAAY,GAAE,OAAO,CAAC,qBAAqB,CAAM,GAAG,qBAAqB,CAQ1E;AACD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAMpF;AAOD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,sBAAsB,EAAE,OAAO,EAAE,qBAAqB,GAAG,MAAM,CAyBrG;AACD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAK3E;AACD,0FAA0F;AAC1F,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,qBAAqB,GAAG,MAAM,CAE3E"}
|
|
@@ -21,11 +21,11 @@ export function validateOriginDisplay(value) {
|
|
|
21
21
|
}
|
|
22
22
|
return value;
|
|
23
23
|
}
|
|
24
|
-
function label(evidence, preferred) {
|
|
24
|
+
function label(evidence, preferred, omitUnknown = false) {
|
|
25
25
|
if (evidence.status === 'not-applicable')
|
|
26
26
|
return null;
|
|
27
27
|
if (!evidence.value || evidence.status === 'unknown')
|
|
28
|
-
return 'unknown';
|
|
28
|
+
return omitUnknown ? null : 'unknown';
|
|
29
29
|
const value = preferred ?? evidence.value;
|
|
30
30
|
return evidence.status === 'configured' ? `${value} (configured)` : value;
|
|
31
31
|
}
|
|
@@ -33,17 +33,23 @@ export function originFooter(producer, display) {
|
|
|
33
33
|
if (!display.enabled || (!display.machine && !display.harness && !display.model))
|
|
34
34
|
return '';
|
|
35
35
|
const values = [producer.agentName];
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
const automation = producer.producerKind === 'server-automation';
|
|
37
|
+
if (display.machine) {
|
|
38
|
+
const machine = label(producer.machine, producer.originMachineName, automation);
|
|
39
|
+
if (machine)
|
|
40
|
+
values.push(machine);
|
|
41
|
+
else if (!automation)
|
|
42
|
+
values.push('unknown machine');
|
|
43
|
+
}
|
|
44
|
+
if (automation) {
|
|
39
45
|
if (display.harness) {
|
|
40
46
|
values.push('automation');
|
|
41
|
-
const harness = label(producer.harness, producer.harnessName);
|
|
47
|
+
const harness = label(producer.harness, producer.harnessName, true);
|
|
42
48
|
if (harness)
|
|
43
49
|
values.push(harness);
|
|
44
50
|
}
|
|
45
51
|
if (display.model) {
|
|
46
|
-
const model = label(producer.model);
|
|
52
|
+
const model = label(producer.model, undefined, true);
|
|
47
53
|
if (model)
|
|
48
54
|
values.push(model);
|
|
49
55
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OriginPresentation.js","sourceRoot":"","sources":["../../../src/messaging/telegram-origin/OriginPresentation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGpD,MAAM,CAAC,MAAM,sBAAsB,GAAoC,MAAM,CAAC,MAAM,CAAC;IACnF,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI;CACzD,CAAC,CAAC;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAwC,EAAE,EAC7E,eAA+C,EAAE;IACjD,MAAM,IAAI,GAAG,EAAE,GAAG,sBAAsB,EAAE,CAAC;IAC3C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAoC,EAAE,CAAC;QACvE,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;QACtD,IAAI,OAAO,KAAK,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,kBAAkB,CAAC,CAAC;QAC1F,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACpB,CAAC;IACD,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;AAClD,CAAC;AACD,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACpH,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/C,IAAI,CAAC,CAAC,GAAG,IAAI,sBAAsB,CAAC,IAAI,OAAO,GAAG,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IACpI,CAAC;IACD,OAAO,KAAuC,CAAC;AACjD,CAAC;AACD,SAAS,KAAK,CAAC,QAAwB,EAAE,SAAyB;
|
|
1
|
+
{"version":3,"file":"OriginPresentation.js","sourceRoot":"","sources":["../../../src/messaging/telegram-origin/OriginPresentation.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-09-
|
|
5
|
-
"instarVersion": "1.3.
|
|
4
|
+
"generatedAt": "2026-09-09T00:35:10.460Z",
|
|
5
|
+
"instarVersion": "1.3.1231",
|
|
6
6
|
"entryCount": 203,
|
|
7
7
|
"entries": {
|
|
8
8
|
"hook:session-start": {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"generatedFrom": "source-tree",
|
|
4
4
|
"registrySha256": "3b12afd2e8d1cf7e26246e69c0af49bf7012a18d3a8bd128fe2aafa332f625c3",
|
|
5
|
-
"packageVersion": "1.3.
|
|
5
|
+
"packageVersion": "1.3.1231",
|
|
6
6
|
"guards": [
|
|
7
7
|
{
|
|
8
8
|
"ref": "docs/audits/phase-b/f10-triage.md",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"sha256": "
|
|
2
|
+
"sha256": "d1db8b38a51cfb861980f2efd38ce614ae50b53974b5abc6a54b24228793b9cb",
|
|
3
3
|
"registrySha256": "3b12afd2e8d1cf7e26246e69c0af49bf7012a18d3a8bd128fe2aafa332f625c3",
|
|
4
|
-
"packageVersion": "1.3.
|
|
4
|
+
"packageVersion": "1.3.1231"
|
|
5
5
|
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Upgrade Guide — vNEXT
|
|
2
|
+
|
|
3
|
+
<!-- assembled-by: assemble-next-md -->
|
|
4
|
+
<!-- bump: patch -->
|
|
5
|
+
|
|
6
|
+
## What Changed
|
|
7
|
+
|
|
8
|
+
Automation message footers omit unavailable machine, harness and model labels. Known fields and configured-model qualifiers still appear. Unknown evidence remains in the durable audit record.
|
|
9
|
+
|
|
10
|
+
## What to Tell Your User
|
|
11
|
+
|
|
12
|
+
Routine notices now show a shorter footer, such as “echo · Mac Studio · automation”, instead of trailing “unknown” labels.
|
|
13
|
+
|
|
14
|
+
## Summary of New Capabilities
|
|
15
|
+
|
|
16
|
+
- Cleaner automation footers with available information only.
|
|
17
|
+
|
|
18
|
+
## Evidence
|
|
19
|
+
|
|
20
|
+
Formatter regression tests and the Telegram origin runtime lifecycle exercise visible output and retained unknown audit evidence. Validation results are recorded in upgrades/side-effects/automation-origin-footer.md.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Automation footer presentation — side-effects review
|
|
2
|
+
|
|
3
|
+
## Scope and principle
|
|
4
|
+
User request in Telegram topic69507 on 2026-09-08: omit unknown fields for automation. Tier1 presentation correction in OriginPresentation.ts. Fresh isolated worktree from origin/main0a71ebb88, package1.3.1230, remote JKHeadley/instar. This changes no block/allow authority; signal-vs-authority does not apply to this display projection. Rollback is a patch reverting the formatter.
|
|
5
|
+
|
|
6
|
+
## 1. Over-block
|
|
7
|
+
No delivery permission or admission changes. The notice-policy test wait matches the existing refresh/read bounds; it still requires revoked authority, suppressed notification and zero wire calls. Session unknown labels and existing label validation remain.
|
|
8
|
+
|
|
9
|
+
## 2. Under-block
|
|
10
|
+
No new bypass. Missing evidence stays unknown in the durable record; omission is display-only and does not claim an observation.
|
|
11
|
+
|
|
12
|
+
## 3. Level-of-abstraction fit
|
|
13
|
+
The shared formatter prepares bot, caption, browser and reserved notice footer bytes. No per-caller text replacement.
|
|
14
|
+
|
|
15
|
+
## 4. Signal vs authority compliance
|
|
16
|
+
No judgment gate added. Typed evidence status determines only whether an automation label is rendered.
|
|
17
|
+
|
|
18
|
+
## 5. Interactions
|
|
19
|
+
Known and configured evidence stays visible. Display overrides are unchanged. Already sealed operations and retries retain their exact bytes. No schema or state mutation.
|
|
20
|
+
|
|
21
|
+
## 6. External surfaces
|
|
22
|
+
New automation footer text becomes shorter. No new operator action or configuration. The screenshot example becomes Echo · Mac Studio · automation.
|
|
23
|
+
|
|
24
|
+
## 6b. Operator-surface quality
|
|
25
|
+
No dashboard/form change. The shorter footer improves phone readability and has no tap targets.
|
|
26
|
+
|
|
27
|
+
## 7. Multi-machine posture
|
|
28
|
+
Replicated behavior through the normal installed package update on each machine; formatting uses the recorded origin machine, not the current delivery machine. No new mutable state, notices, one-voice mechanism or URLs. Existing custody and topic transfer remain intact.
|
|
29
|
+
|
|
30
|
+
## 8. Rollback cost
|
|
31
|
+
Revert formatter in a patch release. No data migration or agent state repair; old records are not rewritten.
|
|
32
|
+
|
|
33
|
+
## Validation
|
|
34
|
+
Two regression cases failed against the old formatter (unknown harness/model placeholders). Build passes. Focused formatter and runtime lifecycle suite: 33 tests passed. The aggregate run exposed two vault-rotation test failures: the default one-second wait ended before the production five-second refresh. Both reproduced alone. The test now allows the five-second refresh plus the bounded two-second source read (7.5-second deadline); both pass in about5.6seconds with unchanged runtime checks. Full repository validation continues; release remains gated on resolving every failure.
|
|
35
|
+
|
|
36
|
+
## Second-pass review
|
|
37
|
+
Not required: this presentation-only change touches no block/allow decisions, session lifecycle, recovery, trust or guard.
|
|
38
|
+
|
|
39
|
+
## Class-Closure Declaration
|
|
40
|
+
No agent-authored-artifact defect — not applicable. Runtime presentation preference only.
|