instar 1.3.990 → 1.3.991
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/commands/intent.d.ts.map +1 -1
- package/dist/commands/intent.js +11 -0
- package/dist/commands/intent.js.map +1 -1
- package/dist/core/IntentDriftDetector.d.ts +18 -2
- package/dist/core/IntentDriftDetector.d.ts.map +1 -1
- package/dist/core/IntentDriftDetector.js +4 -1
- package/dist/core/IntentDriftDetector.js.map +1 -1
- package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
- package/dist/core/PostUpdateMigrator.js +6 -0
- package/dist/core/PostUpdateMigrator.js.map +1 -1
- package/dist/scaffold/templates.d.ts.map +1 -1
- package/dist/scaffold/templates.js +2 -0
- package/dist/scaffold/templates.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +19 -19
- package/src/scaffold/templates.ts +2 -0
- package/upgrades/1.3.991.md +57 -0
- package/upgrades/side-effects/alignment-score-not-assessed.md +178 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/scaffold/templates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AASH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,CAgG/D;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CA2E/F;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAiBvD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CA2B1D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,OAAO,EACpB,WAAW,GAAE,OAAe,EAC5B,WAAW,GAAE,OAAe,GAC3B,MAAM,
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/scaffold/templates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AASH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,CAgG/D;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CA2E/F;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAiBvD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CA2B1D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,OAAO,EACpB,WAAW,GAAE,OAAe,EAC5B,WAAW,GAAE,OAAe,GAC3B,MAAM,CA4pDR;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,OAAO,EACpB,WAAW,GAAE,OAAe,GAC3B,MAAM,CA2TR"}
|
|
@@ -1573,6 +1573,8 @@ curl -X POST -H "Authorization: Bearer $AUTH" http://localhost:${port}/intent/jo
|
|
|
1573
1573
|
|
|
1574
1574
|
**Reading the stats honestly:** \`principledCount\` / \`unprincipledCount\` sit beside \`count\`. \`topPrinciples: []\` alone cannot tell you whether nobody has decided anything yet or whether many decisions were recorded and not one said why — these two counters are what separates those cases. The machine-generated dispatch path is deliberately exempt; an auto-applied dispatch has no principle to cite and is never blocked.
|
|
1575
1575
|
|
|
1576
|
+
**Alignment score — N/A means not assessed:** \`GET /intent/alignment\` returns \`grade: 'N/A'\` and \`assessable: false\` when the analysis window held no decisions. Do NOT read that as a failing grade — \`score: 0\` is a placeholder, not a measurement. Branch on \`assessable\` (or \`sampleSize > 0\`) before treating the score as a verdict, and never report an unassessed period to the user as poor alignment.
|
|
1577
|
+
|
|
1576
1578
|
### Playbook — Adaptive Context Engineering
|
|
1577
1579
|
|
|
1578
1580
|
The Playbook system gives you a living knowledge base that makes every session smarter than the last. Instead of loading the same static context every time, Playbook curates a manifest of context items — facts, lessons, patterns, safety rules — and selects exactly what's relevant for each session based on triggers, token budgets, and usefulness scores.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/scaffold/templates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,oFAAoF;AACpF,qFAAqF;AACrF,oFAAoF;AACpF,mFAAmF;AACnF,4BAA4B;AAC5B,OAAO,EAAE,0CAA0C,EAAE,wCAAwC,EAAE,4CAA4C,EAAE,wCAAwC,EAAE,4CAA4C,EAAE,sCAAsC,EAAE,4BAA4B,EAAE,gCAAgC,EAAE,iCAAiC,EAAE,gCAAgC,EAAE,kCAAkC,EAAE,gCAAgC,EAAE,iCAAiC,EAAE,6BAA6B,EAAE,8BAA8B,EAAE,iCAAiC,EAAE,qCAAqC,EAAE,qCAAqC,EAAE,kCAAkC,EAAE,wCAAwC,EAAE,MAAM,+BAA+B,CAAC;AAS/xB;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,QAAuB;IACrD,OAAO,KAAK,QAAQ,CAAC,IAAI;;;;OAIpB,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI;;;;EAIpC,QAAQ,CAAC,WAAW;;;;;;;;;;;;;;;;;;;;;;6BAsBO,QAAQ,CAAC,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+D7C,CAAC;AAEF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,SAAiB,EAAE,WAAmB,EAAE,QAAgB;IACrF,OAAO;;;;;;;;;;;;;;;;;;EAkBP,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAkDH,QAAQ;;;;;CAKjB,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,OAAO,KAAK,QAAQ;;;;;;;;;;;;;;4CAcsB,QAAQ;CACnD,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAChD,OAAO,KAAK,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;CAyBtB,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,WAAmB,EACnB,SAAiB,EACjB,IAAY,EACZ,WAAoB,EACpB,cAAuB,KAAK,EAC5B,cAAuB,KAAK;IAE5B,IAAI,OAAO,GAAG,iBAAiB,WAAW;;;;OAIrC,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoCT,SAAS;;gCAEgB,IAAI,kFAAkF,IAAI;;;;;;;;;;;;;8EAa5C,IAAI;;;yFAGO,IAAI;;;;;;;uGAOU,IAAI;;;;;;;;;;;;;;;;;;;;;;;0CAuBjE,IAAI;oCACV,IAAI;;;;;;;;;;;;;yDAaiB,IAAI;;;;;;;;;;;;gCAY7B,IAAI;;;;;;;;;sFASkD,IAAI;4FACE,IAAI;;;;;;;mEAO7B,IAAI;+GACwC,IAAI;8EACrC,IAAI;;;;;mEAKf,IAAI;4EACK,IAAI;;;;;;;sHAOsC,IAAI;+WACqP,IAAI;;;;;uEAK5S,IAAI;;;;;;;;;;;;;;;;;;yEAkBF,IAAI;;;;;;;;;;2EAUF,IAAI;mJACoE,IAAI;;;;s3BAI+tB,IAAI;;;;;6GAK7wB,IAAI;;;;uEAI1C,IAAI;;;;;;uFAMY,IAAI;;;;wEAInB,IAAI;;;;;;+IAMmE,IAAI;wKACqB,IAAI;;;;;iKAKX,IAAI;;;;;sEAK/F,IAAI;;;;;;;;;;;6EAWG,IAAI;;2FAEU,IAAI;qFACV,IAAI;;;;uHAI8B,IAAI;;;;;EAKzH,gCAAgC,CAAC,IAAI,CAAC;;;;mGAI2D,IAAI;;;;;;;;;;;4FAWX,IAAI;4FACJ,IAAI;;;;;;;;;;;gFAWhB,IAAI;;;;qJAIiE,IAAI;;;;;;;yHAOhC,IAAI;8MACiF,IAAI;;;;0JAIxD,IAAI;qGACzD,IAAI;mHACU,IAAI;;umBAEgf,IAAI;;;;;8EAK7hB,IAAI;;;;;;oGAMkB,IAAI;yGACC,IAAI;;;;;iFAK5B,IAAI;yIACoD,IAAI;6hBACgZ,IAAI;;;;;;;;;;;;;;;;mEAgB9d,IAAI;;;8EAGO,IAAI;6EACL,IAAI;0EACP,IAAI;;;;;6EAKD,IAAI;yCACxC,IAAI;mEACsB,IAAI;4EACK,IAAI;+EACD,IAAI;;;;;2EAKR,IAAI;;;;;;;uFAOQ,IAAI;;;;;;2EAMhB,IAAI;+EACA,IAAI;;;;;;;6KAO0F,IAAI;qMACoB,IAAI,gMAAgM,IAAI;;;;;;uFAMtT,IAAI;mIACwC,IAAI;;;;;2GAK5B,IAAI;6EAClC,IAAI;+FACc,IAAI;;;;uFAIZ,IAAI;yFACF,IAAI;;;;;;;;;;;;;;;;;;;;;;uFAsBN,IAAI;yFACF,IAAI;kIACqC,IAAI;;;;;;;;gIAQN,IAAI;sFAC9C,IAAI;0HACgC,IAAI;;;;oGAI1B,IAAI;oIAC4B,IAAI;;;;;;;;qEAQnE,IAAI;;;;;;;;;4EASG,IAAI;yEACP,IAAI;0GAC6B,IAAI;+EAC/B,IAAI;2XACwS,IAAI;;;;6EAIlT,IAAI;mJACkE,IAAI;6JACM,IAAI;sGAC3D,IAAI;;;;;;;;;;;wbAW8U,IAAI;;;;qEAIvX,IAAI;wFACe,IAAI;2IAC+C,IAAI;;;0EAGrE,IAAI;6EACD,IAAI;oFACG,IAAI;;;;;;;;;8EASV,IAAI;sEACZ,IAAI;8EACI,IAAI;4EACN,IAAI;mFACG,IAAI;;;;oEAInB,IAAI;0EACE,IAAI;4EACF,IAAI;+EACD,IAAI;iFACF,IAAI;;;oEAGjB,IAAI;;;;+EAIO,IAAI;6EACN,IAAI;0EACP,IAAI;uFACS,IAAI;;wEAEnB,IAAI;;;;;2EAKD,IAAI;;;;;;oEAMX,IAAI;;;qEAGH,IAAI;sEACH,IAAI;mKACyF,IAAI;;;sEAGjG,IAAI;;;qEAGL,IAAI;;;8BAG3C,IAAI;;;;;4OAK0M,IAAI;;;;;;;;mFAQ7J,IAAI;;;;;uBAKhE,IAAI;;;wFAG6D,IAAI;;;;;;;;;;;;;;kFAcV,IAAI;;;;;6EAKT,IAAI;sFACK,IAAI;8EACZ,IAAI;;;;;sEAKZ,IAAI;oEACN,IAAI;8EACM,IAAI;yFACO,IAAI;;;;;uFAKN,IAAI;;;;;oEAKvB,IAAI;;;;;uGAK+B,IAAI;;;;;;;;;;;;;;yIAc8B,IAAI;kHAC3B,IAAI;;;;EAIpH,4CAA4C,CAAC,IAAI,CAAC;EAClD,wCAAwC,EAAE;EAC1C,4CAA4C,CAAC,IAAI,CAAC;EAClD,sCAAsC,CAAC,IAAI,CAAC;EAC5C,iCAAiC,EAAE;EACnC,4BAA4B,CAAC,IAAI,CAAC;EAClC,gCAAgC,CAAC,IAAI,CAAC;EACtC,6BAA6B,CAAC,IAAI,CAAC;EACnC,kCAAkC,CAAC,IAAI,CAAC;EACxC,gCAAgC,CAAC,IAAI,CAAC;EACtC,iCAAiC,CAAC,IAAI,CAAC;EACvC,8BAA8B,CAAC,IAAI,CAAC;EACpC,iCAAiC,CAAC,IAAI,CAAC;EACvC,qCAAqC,CAAC,IAAI,CAAC;EAC3C,wCAAwC,CAAC,IAAI,CAAC;EAC9C,kCAAkC,CAAC,IAAI,CAAC;EACxC,qCAAqC,CAAC,IAAI,CAAC;EAC3C,0CAA0C,CAAC,IAAI,CAAC;;qEAEmB,IAAI;;;;;;;iRAOwM,IAAI;8NACvD,IAAI;icAC+N,IAAI;;;;qEAIhY,IAAI;;;;;qEAKJ,IAAI;;;;;;qEAMJ,IAAI;;qFAEY,IAAI;;;;;sEAKnB,IAAI;;;;;qEAKL,IAAI;;;;mFAIU,IAAI;;;;;;;2FAOI,IAAI;;;;;;;wFAOP,IAAI;uFACL,IAAI;;;;4JAIiE,IAAI;;;;;;;8EAOlF,IAAI;;;;;;6EAML,IAAI;;;;;;oEAMb,IAAI;+GACuC,IAAI;gIACa,IAAI;;;;0FAI1C,IAAI;;;;uGAIS,IAAI;sGACL,IAAI;;;;qEAIrC,IAAI;;;;;;;;;qEASJ,IAAI;6EACI,IAAI;2EACN,IAAI;2EACJ,IAAI;kEACb,IAAI;;;;;0EAKI,IAAI;4FACc,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yDA4EvC,IAAI;;;;;;;;;;;;;;;;;;;;;;;8EAuBiB,IAAI;;2JAEyE,IAAI;4HACnC,IAAI;kKACkC,IAAI;uJACf,IAAI;;;6GAG9C,IAAI;2FACtB,IAAI;4HAC6B,IAAI;;;2FAGrC,IAAI;;kFAEb,IAAI;wFACE,IAAI;6FACC,IAAI;iJACgD,IAAI;wHAC7B,IAAI;uIACW,IAAI;;;;;;;;;;;;;;;;;;;;uFAoBpD,IAAI;wFACH,IAAI;;;wFAGJ,IAAI;;0FAEF,IAAI;+FACC,IAAI;sGACG,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAwG5F,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0CA6HmB,IAAI;;;;;;;;;;;mCAWX,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mCA8CJ,IAAI;;;;;;;;;;;;;;;;;;;;;;;;mEAwB4B,IAAI;;;;;mEAKJ,IAAI;;;;;mEAKJ,IAAI;;;;mEAIJ,IAAI;;;;;;yDAMd,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2EAiFc,IAAI;yEACN,IAAI;;;;;;;iEAOZ,IAAI
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/scaffold/templates.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-07-26T22:
|
|
5
|
-
"instarVersion": "1.3.
|
|
4
|
+
"generatedAt": "2026-07-26T22:54:32.025Z",
|
|
5
|
+
"instarVersion": "1.3.991",
|
|
6
6
|
"entryCount": 202,
|
|
7
7
|
"entries": {
|
|
8
8
|
"hook:session-start": {
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"domain": "identity",
|
|
12
12
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
13
13
|
"installedPath": ".instar/hooks/instar/session-start.sh",
|
|
14
|
-
"contentHash": "
|
|
14
|
+
"contentHash": "3f824e7d0a659043dfc23895748d4588eeaf072fd4aa214b987a85a7372308b1",
|
|
15
15
|
"since": "2025-01-01"
|
|
16
16
|
},
|
|
17
17
|
"hook:dangerous-command-guard": {
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"domain": "safety",
|
|
21
21
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
22
22
|
"installedPath": ".instar/hooks/instar/dangerous-command-guard.sh",
|
|
23
|
-
"contentHash": "
|
|
23
|
+
"contentHash": "3f824e7d0a659043dfc23895748d4588eeaf072fd4aa214b987a85a7372308b1",
|
|
24
24
|
"since": "2025-01-01"
|
|
25
25
|
},
|
|
26
26
|
"hook:grounding-before-messaging": {
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"domain": "safety",
|
|
30
30
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
31
31
|
"installedPath": ".instar/hooks/instar/grounding-before-messaging.sh",
|
|
32
|
-
"contentHash": "
|
|
32
|
+
"contentHash": "3f824e7d0a659043dfc23895748d4588eeaf072fd4aa214b987a85a7372308b1",
|
|
33
33
|
"since": "2025-01-01"
|
|
34
34
|
},
|
|
35
35
|
"hook:compaction-recovery": {
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"domain": "identity",
|
|
39
39
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
40
40
|
"installedPath": ".instar/hooks/instar/compaction-recovery.sh",
|
|
41
|
-
"contentHash": "
|
|
41
|
+
"contentHash": "3f824e7d0a659043dfc23895748d4588eeaf072fd4aa214b987a85a7372308b1",
|
|
42
42
|
"since": "2025-01-01"
|
|
43
43
|
},
|
|
44
44
|
"hook:external-operation-gate": {
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"domain": "safety",
|
|
48
48
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
49
49
|
"installedPath": ".instar/hooks/instar/external-operation-gate.js",
|
|
50
|
-
"contentHash": "
|
|
50
|
+
"contentHash": "3f824e7d0a659043dfc23895748d4588eeaf072fd4aa214b987a85a7372308b1",
|
|
51
51
|
"since": "2025-01-01"
|
|
52
52
|
},
|
|
53
53
|
"hook:deferral-detector": {
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"domain": "safety",
|
|
57
57
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
58
58
|
"installedPath": ".instar/hooks/instar/deferral-detector.js",
|
|
59
|
-
"contentHash": "
|
|
59
|
+
"contentHash": "3f824e7d0a659043dfc23895748d4588eeaf072fd4aa214b987a85a7372308b1",
|
|
60
60
|
"since": "2025-01-01"
|
|
61
61
|
},
|
|
62
62
|
"hook:self-stop-guard": {
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
"domain": "coherence",
|
|
66
66
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
67
67
|
"installedPath": ".instar/hooks/instar/self-stop-guard.js",
|
|
68
|
-
"contentHash": "
|
|
68
|
+
"contentHash": "3f824e7d0a659043dfc23895748d4588eeaf072fd4aa214b987a85a7372308b1",
|
|
69
69
|
"since": "2025-01-01"
|
|
70
70
|
},
|
|
71
71
|
"hook:post-action-reflection": {
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
"domain": "evolution",
|
|
75
75
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
76
76
|
"installedPath": ".instar/hooks/instar/post-action-reflection.js",
|
|
77
|
-
"contentHash": "
|
|
77
|
+
"contentHash": "3f824e7d0a659043dfc23895748d4588eeaf072fd4aa214b987a85a7372308b1",
|
|
78
78
|
"since": "2025-01-01"
|
|
79
79
|
},
|
|
80
80
|
"hook:external-communication-guard": {
|
|
@@ -83,7 +83,7 @@
|
|
|
83
83
|
"domain": "safety",
|
|
84
84
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
85
85
|
"installedPath": ".instar/hooks/instar/external-communication-guard.js",
|
|
86
|
-
"contentHash": "
|
|
86
|
+
"contentHash": "3f824e7d0a659043dfc23895748d4588eeaf072fd4aa214b987a85a7372308b1",
|
|
87
87
|
"since": "2025-01-01"
|
|
88
88
|
},
|
|
89
89
|
"hook:scope-coherence-collector": {
|
|
@@ -92,7 +92,7 @@
|
|
|
92
92
|
"domain": "coherence",
|
|
93
93
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
94
94
|
"installedPath": ".instar/hooks/instar/scope-coherence-collector.js",
|
|
95
|
-
"contentHash": "
|
|
95
|
+
"contentHash": "3f824e7d0a659043dfc23895748d4588eeaf072fd4aa214b987a85a7372308b1",
|
|
96
96
|
"since": "2025-01-01"
|
|
97
97
|
},
|
|
98
98
|
"hook:scope-coherence-checkpoint": {
|
|
@@ -101,7 +101,7 @@
|
|
|
101
101
|
"domain": "coherence",
|
|
102
102
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
103
103
|
"installedPath": ".instar/hooks/instar/scope-coherence-checkpoint.js",
|
|
104
|
-
"contentHash": "
|
|
104
|
+
"contentHash": "3f824e7d0a659043dfc23895748d4588eeaf072fd4aa214b987a85a7372308b1",
|
|
105
105
|
"since": "2025-01-01"
|
|
106
106
|
},
|
|
107
107
|
"hook:free-text-guard": {
|
|
@@ -110,7 +110,7 @@
|
|
|
110
110
|
"domain": "safety",
|
|
111
111
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
112
112
|
"installedPath": ".instar/hooks/instar/free-text-guard.sh",
|
|
113
|
-
"contentHash": "
|
|
113
|
+
"contentHash": "3f824e7d0a659043dfc23895748d4588eeaf072fd4aa214b987a85a7372308b1",
|
|
114
114
|
"since": "2025-01-01"
|
|
115
115
|
},
|
|
116
116
|
"hook:claim-intercept": {
|
|
@@ -119,7 +119,7 @@
|
|
|
119
119
|
"domain": "coherence",
|
|
120
120
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
121
121
|
"installedPath": ".instar/hooks/instar/claim-intercept.js",
|
|
122
|
-
"contentHash": "
|
|
122
|
+
"contentHash": "3f824e7d0a659043dfc23895748d4588eeaf072fd4aa214b987a85a7372308b1",
|
|
123
123
|
"since": "2025-01-01"
|
|
124
124
|
},
|
|
125
125
|
"hook:claim-intercept-response": {
|
|
@@ -128,7 +128,7 @@
|
|
|
128
128
|
"domain": "coherence",
|
|
129
129
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
130
130
|
"installedPath": ".instar/hooks/instar/claim-intercept-response.js",
|
|
131
|
-
"contentHash": "
|
|
131
|
+
"contentHash": "3f824e7d0a659043dfc23895748d4588eeaf072fd4aa214b987a85a7372308b1",
|
|
132
132
|
"since": "2025-01-01"
|
|
133
133
|
},
|
|
134
134
|
"hook:stop-gate-router": {
|
|
@@ -137,7 +137,7 @@
|
|
|
137
137
|
"domain": "safety",
|
|
138
138
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
139
139
|
"installedPath": ".instar/hooks/instar/stop-gate-router.js",
|
|
140
|
-
"contentHash": "
|
|
140
|
+
"contentHash": "3f824e7d0a659043dfc23895748d4588eeaf072fd4aa214b987a85a7372308b1",
|
|
141
141
|
"since": "2025-01-01"
|
|
142
142
|
},
|
|
143
143
|
"hook:auto-approve-permissions": {
|
|
@@ -146,7 +146,7 @@
|
|
|
146
146
|
"domain": "safety",
|
|
147
147
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
148
148
|
"installedPath": ".instar/hooks/instar/auto-approve-permissions.js",
|
|
149
|
-
"contentHash": "
|
|
149
|
+
"contentHash": "3f824e7d0a659043dfc23895748d4588eeaf072fd4aa214b987a85a7372308b1",
|
|
150
150
|
"since": "2025-01-01"
|
|
151
151
|
},
|
|
152
152
|
"job:health-check": {
|
|
@@ -1562,7 +1562,7 @@
|
|
|
1562
1562
|
"type": "subsystem",
|
|
1563
1563
|
"domain": "updates",
|
|
1564
1564
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
1565
|
-
"contentHash": "
|
|
1565
|
+
"contentHash": "3f824e7d0a659043dfc23895748d4588eeaf072fd4aa214b987a85a7372308b1",
|
|
1566
1566
|
"since": "2025-01-01"
|
|
1567
1567
|
},
|
|
1568
1568
|
"subsystem:scheduler": {
|
|
@@ -1594,6 +1594,8 @@ curl -X POST -H "Authorization: Bearer $AUTH" http://localhost:${port}/intent/jo
|
|
|
1594
1594
|
|
|
1595
1595
|
**Reading the stats honestly:** \`principledCount\` / \`unprincipledCount\` sit beside \`count\`. \`topPrinciples: []\` alone cannot tell you whether nobody has decided anything yet or whether many decisions were recorded and not one said why — these two counters are what separates those cases. The machine-generated dispatch path is deliberately exempt; an auto-applied dispatch has no principle to cite and is never blocked.
|
|
1596
1596
|
|
|
1597
|
+
**Alignment score — N/A means not assessed:** \`GET /intent/alignment\` returns \`grade: 'N/A'\` and \`assessable: false\` when the analysis window held no decisions. Do NOT read that as a failing grade — \`score: 0\` is a placeholder, not a measurement. Branch on \`assessable\` (or \`sampleSize > 0\`) before treating the score as a verdict, and never report an unassessed period to the user as poor alignment.
|
|
1598
|
+
|
|
1597
1599
|
### Playbook — Adaptive Context Engineering
|
|
1598
1600
|
|
|
1599
1601
|
The Playbook system gives you a living knowledge base that makes every session smarter than the last. Instead of loading the same static context every time, Playbook curates a manifest of context items — facts, lessons, patterns, safety rules — and selects exactly what's relevant for each session based on triggers, token budgets, and usefulness scores.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Upgrade Guide — vNEXT
|
|
2
|
+
|
|
3
|
+
<!-- assembled-by: assemble-next-md -->
|
|
4
|
+
<!-- bump: patch -->
|
|
5
|
+
|
|
6
|
+
## What Changed
|
|
7
|
+
|
|
8
|
+
`IntentDriftDetector.alignmentScore()` reported `score: 0, grade: 'F'` when its analysis window held
|
|
9
|
+
no decisions. The `summary` field said "alignment cannot be assessed", but `score` and `grade` are
|
|
10
|
+
what consumers read — so "no data" and "assessed, catastrophically bad" were identical on every field
|
|
11
|
+
in use.
|
|
12
|
+
|
|
13
|
+
The grade union is now `'A'|'B'|'C'|'D'|'F'|'N/A'`, and the result carries `assessable: boolean`.
|
|
14
|
+
`GET /intent/alignment` returns both. `instar intent drift` prints the reason instead of a fabricated
|
|
15
|
+
grade when nothing was assessed.
|
|
16
|
+
|
|
17
|
+
Root cause was vocabulary: with no grade meaning *no verdict*, absence had to borrow the worst real
|
|
18
|
+
grade — the same shape as a status set with no way to say "undetermined".
|
|
19
|
+
|
|
20
|
+
## What to Tell Your User
|
|
21
|
+
|
|
22
|
+
If you look at the alignment score, a flat zero with an F used to mean one of two very different
|
|
23
|
+
things: that your decisions genuinely scored badly, or that there was nothing to score. You could not
|
|
24
|
+
tell which from the number.
|
|
25
|
+
|
|
26
|
+
Now an unassessed period says so plainly, and the score carries a flag saying whether anything was
|
|
27
|
+
actually measured.
|
|
28
|
+
|
|
29
|
+
The honest scope: this changes what you are told, not how aligned anything is. It also does not
|
|
30
|
+
change the default command view, where the unassessable case was already handled well — that path
|
|
31
|
+
stops early with a helpful message and never reached the bad grade. The fabricated F is visible to
|
|
32
|
+
anything reading the score programmatically, and on the command line only if you widen the window
|
|
33
|
+
past thirty days by hand.
|
|
34
|
+
|
|
35
|
+
## Summary of New Capabilities
|
|
36
|
+
|
|
37
|
+
No new endpoint or command. An existing score gained an honest "not assessed" state and a flag
|
|
38
|
+
distinguishing a placeholder from a measurement.
|
|
39
|
+
|
|
40
|
+
## Evidence
|
|
41
|
+
|
|
42
|
+
- Restoring the fabricated `'F'`: 3 failed | 25 passed. Making `assessable` constant: 5 failed.
|
|
43
|
+
- Disabling the renderer's honest branch left all 28 module and route tests green — the wiring was
|
|
44
|
+
unguarded until a test was added that drives the real command and reads its output. With it, that
|
|
45
|
+
same change fails immediately.
|
|
46
|
+
- Restored: 42 passed across the five affected files; `tsc --noEmit` exit 0.
|
|
47
|
+
- Two existing tests asserted `grade === 'F'` on the empty case — they encoded the defect rather than
|
|
48
|
+
merely lagging it. Both updated, with the reason recorded in place.
|
|
49
|
+
|
|
50
|
+
## Known limits
|
|
51
|
+
|
|
52
|
+
The early-return window and the scoring window differ (the command's `--window`, default 14, versus a
|
|
53
|
+
fixed 30), which is what makes the command-line case reachable at all; reconciling them changes what
|
|
54
|
+
every user sees and is deliberately not bundled. `score` stays `0` on the unassessable case rather
|
|
55
|
+
than becoming `null`, to avoid a breaking type change — `assessable` is the additive signal. Nothing
|
|
56
|
+
here improves alignment or judges whether a cited principle was genuinely consulted.
|
|
57
|
+
<!-- tracked: CMT-1044 -->
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
# Side-Effects Review — an alignment score that can say "not assessed"
|
|
2
|
+
|
|
3
|
+
**Version / slug:** `alignment-score-not-assessed`
|
|
4
|
+
**Date:** `2026-07-26`
|
|
5
|
+
**Author:** `Echo (instar-dev agent)`
|
|
6
|
+
**Second-pass reviewer:** `see Phase 5`
|
|
7
|
+
|
|
8
|
+
## Summary of the change
|
|
9
|
+
|
|
10
|
+
`IntentDriftDetector.alignmentScore()` returned `score: 0, grade: 'F'` when the analysis window
|
|
11
|
+
contained no decisions. The `summary` field was honest ("No decisions logged — alignment cannot be
|
|
12
|
+
assessed") but no consumer read it; `score` and `grade` are what get rendered and compared. So
|
|
13
|
+
"nothing to assess" and "assessed, catastrophically bad" were identical on every field in use — on
|
|
14
|
+
the instrument whose purpose is honest alignment measurement.
|
|
15
|
+
|
|
16
|
+
Root cause is vocabulary, the same shape as the channel registry one increment earlier: the grade
|
|
17
|
+
union was `'A'|'B'|'C'|'D'|'F'` with no member meaning *no verdict*, so absence had to borrow the
|
|
18
|
+
worst real grade.
|
|
19
|
+
|
|
20
|
+
Adds `'N/A'` to the grade union, adds `assessable: boolean`, and makes `instar intent drift` print
|
|
21
|
+
the reason instead of a fabricated grade.
|
|
22
|
+
|
|
23
|
+
## Refusal evidence (constraint 2)
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
REFUSAL 1 — restore the fabricated 'F' on the unassessable case
|
|
27
|
+
× handles empty journal — not assessable, grade N/A → expected 'F' to be 'N/A'
|
|
28
|
+
× GET /intent/alignment reports NOT ASSESSED → expected 'F' to be 'N/A'
|
|
29
|
+
× an empty journal grades 'N/A', never 'F' → expected 'F' to be 'N/A'
|
|
30
|
+
Tests 3 failed | 25 passed (28)
|
|
31
|
+
|
|
32
|
+
REFUSAL 2 — always report assessable:true
|
|
33
|
+
× an empty journal is flagged unassessable → expected true to be false
|
|
34
|
+
× a real assessment is DISTINGUISHABLE from an empty one → expected true not to be true
|
|
35
|
+
× assessable tracks sampleSize exactly → expected true to be false
|
|
36
|
+
(+2) Tests 5 failed
|
|
37
|
+
|
|
38
|
+
REFUSAL 3 — disable the CLI's honest branch (`if (false && !alignment.assessable)`)
|
|
39
|
+
BEFORE the CLI test existed: Tests 28 passed (28) <-- the blindness, again
|
|
40
|
+
AFTER: × a STALE journal prints "not assessed", never a red F
|
|
41
|
+
Tests 1 failed | 4 passed (5)
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Restored: **42 passed** across the five affected files, `tsc --noEmit` exit 0.
|
|
45
|
+
|
|
46
|
+
**REFUSAL 3 is the finding, and it is the THIRD occurrence of this class tonight** (#1658 route
|
|
47
|
+
registry, #1659 route validator, now a CLI renderer). Each time the logic was thoroughly guarded and
|
|
48
|
+
the wiring to the surface a human or API client actually reads was not. This one is the sharpest:
|
|
49
|
+
the module returning `'N/A'` is worth precisely nothing if the renderer ignores it, and 28 green
|
|
50
|
+
tests said everything was fine while the renderer was disabled.
|
|
51
|
+
|
|
52
|
+
## Two of my own claims were falsified during this work
|
|
53
|
+
|
|
54
|
+
Recorded because the corrections are the useful part, and because an artifact that hides them is the
|
|
55
|
+
failure mode this tier exists to remove.
|
|
56
|
+
|
|
57
|
+
1. **"`instar intent drift` has been showing a red F for the journal's whole life."** FALSE. The
|
|
58
|
+
command returns early with a genuinely helpful message when the window holds no decisions; it
|
|
59
|
+
never reaches the scoring block. The empty case was already handled honestly there.
|
|
60
|
+
2. **"Then it is reachable whenever the journal is merely stale."** ALSO FALSE. The early return
|
|
61
|
+
checks `windowDays` (default 14) and `alignmentScore()` is fixed at 30 — and 14 ⊂ 30, so anything
|
|
62
|
+
clearing the early return is inside the alignment window by construction.
|
|
63
|
+
|
|
64
|
+
**The actual reachable CLI case is narrow:** the operator must widen the window past 30
|
|
65
|
+
(`--window 60`), so a 40-day-old decision clears the early return and falls outside the fixed 30-day
|
|
66
|
+
alignment window. That is what the regression test constructs. I asserted twice before checking; the
|
|
67
|
+
test is what settled it.
|
|
68
|
+
|
|
69
|
+
## Decision-point inventory
|
|
70
|
+
|
|
71
|
+
| point | classification | note |
|
|
72
|
+
|---|---|---|
|
|
73
|
+
| `sampleSize === 0` → `grade: 'N/A'`, `assessable: false` | `invariant` | Deterministic count check. No model. |
|
|
74
|
+
| `assessable` mirrors `sampleSize > 0` | `invariant` | Asserted by test; the two can never disagree. |
|
|
75
|
+
| CLI branches on `assessable` | `invariant` | Renders `summary` instead of a grade. |
|
|
76
|
+
|
|
77
|
+
No judgment points, no LLM, nothing gated or blocked.
|
|
78
|
+
|
|
79
|
+
## 1. Over-block
|
|
80
|
+
|
|
81
|
+
Nothing is blocked — this is a read surface. The available harm is **misinforming a reader**, and
|
|
82
|
+
this change strictly reduces it in the direction that mattered (absence no longer reads as failure).
|
|
83
|
+
|
|
84
|
+
The mirror over-block is real and guarded: a genuinely-assessed period must never report `'N/A'` or
|
|
85
|
+
`assessable: false`, or a real alignment problem would be hidden as "no data" — strictly worse than
|
|
86
|
+
the original bug. Asserted by two tests (`a genuinely assessed period still reports a real letter
|
|
87
|
+
grade`, and the CLI's `a populated journal still prints a real graded score`).
|
|
88
|
+
|
|
89
|
+
**Caller sweep, run BEFORE writing this section** (the correction from #1659, where I wrote a
|
|
90
|
+
confident risk claim from the wrong measurement and CI falsified it): `alignmentScore()` has exactly
|
|
91
|
+
two production callers — `routes.ts:24305` (passes through verbatim) and `commands/intent.ts:431`
|
|
92
|
+
(now branches). Every `.grade` hit elsewhere in `src/` belongs to `DecisionQualityRecorder`'s
|
|
93
|
+
unrelated `right|wrong|unknown` grade, checked rather than assumed. Two tests asserted the old shape;
|
|
94
|
+
both updated.
|
|
95
|
+
|
|
96
|
+
## 2. Under-block
|
|
97
|
+
|
|
98
|
+
**The mismatched windows are NOT fixed.** The early return uses `windowDays` while `alignmentScore()`
|
|
99
|
+
is hardcoded to 30. That divergence is what makes the CLI case reachable at all, and reconciling them
|
|
100
|
+
changes what the command reports for every user. Deliberately not folded in. <!-- tracked: CMT-1044 -->
|
|
101
|
+
|
|
102
|
+
**`score: 0` is retained on the unassessable case.** Changing it to `null` would be a breaking type
|
|
103
|
+
change for a field two consumers read; `assessable` is the additive signal instead. A consumer that
|
|
104
|
+
reads `.score` and ignores both `assessable` and `sampleSize` still sees a 0 — it can no longer see
|
|
105
|
+
an F, which is the part that read as a verdict.
|
|
106
|
+
|
|
107
|
+
**It does not improve alignment,** and it does not judge whether a cited principle was genuinely
|
|
108
|
+
consulted. Same honest limit as the increment before it.
|
|
109
|
+
|
|
110
|
+
## 3. Level-of-abstraction fit
|
|
111
|
+
|
|
112
|
+
The honest state lives in the returned value, not in the renderer, so every consumer inherits it —
|
|
113
|
+
the route needed no change at all. The renderer's job is narrowed to *presenting* a state it no
|
|
114
|
+
longer has to infer. Had I fixed only the CLI, the API consumer (the one that is actually reachable
|
|
115
|
+
by default) would still have been lied to.
|
|
116
|
+
|
|
117
|
+
## 4. Signal vs authority compliance
|
|
118
|
+
|
|
119
|
+
Pure signal. `docs/signal-vs-authority.md` is satisfied trivially: it produces a read-only score that
|
|
120
|
+
gates nothing, blocks nothing, and is consumed by one route and one command.
|
|
121
|
+
|
|
122
|
+
## 4b. Judgment-point check (Judgment Within Floors standard)
|
|
123
|
+
|
|
124
|
+
None introduced. Two deterministic branches on a count.
|
|
125
|
+
|
|
126
|
+
## 5. Interactions
|
|
127
|
+
|
|
128
|
+
- **`GET /intent/alignment`** — response gains `assessable`; `grade` may now be `'N/A'`. Additive plus
|
|
129
|
+
one widened union member.
|
|
130
|
+
- **`IntentDriftDetector.analyze()`** — untouched; drift scoring is a separate path.
|
|
131
|
+
- **`tests/unit/IntentDriftDetector.test.ts`** and **`tests/integration/drift-routes.test.ts`** — each
|
|
132
|
+
had a test asserting `grade === 'F'` on the empty case. **Both were encoding the defect**, not
|
|
133
|
+
merely stale. Updated with comments recording that, since a test that locks in a wrong answer is
|
|
134
|
+
the same instrument-honesty class as the defect itself.
|
|
135
|
+
- **`CapabilityIndex`** — unchanged; `intent` is already `INTERNAL_PREFIXES`.
|
|
136
|
+
|
|
137
|
+
## 6. External surfaces
|
|
138
|
+
|
|
139
|
+
One API response shape change (additive field + widened union), one CLI rendering change. No config
|
|
140
|
+
key, no persisted state, no migration, no message to any user.
|
|
141
|
+
|
|
142
|
+
## 6b. Operator-surface quality
|
|
143
|
+
|
|
144
|
+
The unassessable CLI output prints the reason (`No decisions logged — alignment cannot be assessed`)
|
|
145
|
+
in dim rather than a red grade, so it reads as an absence of data rather than an alarm. The component
|
|
146
|
+
breakdown is suppressed in that branch: four zeroed rows invite exactly the misreading being fixed.
|
|
147
|
+
|
|
148
|
+
## 7. Multi-machine posture (Cross-Machine Coherence)
|
|
149
|
+
|
|
150
|
+
**Machine-local BY DESIGN.** The journal is a per-machine JSONL under `stateDir` and the score is
|
|
151
|
+
computed from it, so `assessable` answers "on this machine". An agent running on two machines has two
|
|
152
|
+
journals and two scores. That predates this change and is unaddressed here. <!-- tracked: CMT-1044 -->
|
|
153
|
+
|
|
154
|
+
## 8. Rollback cost
|
|
155
|
+
|
|
156
|
+
Low. One union member, one boolean, one CLI branch, three test updates. No persisted state, no
|
|
157
|
+
migration; existing journal rows are read unchanged. Reverting restores the fabricated F.
|
|
158
|
+
|
|
159
|
+
## Phase 5 — Second-pass review
|
|
160
|
+
|
|
161
|
+
Not a gate, sentinel, guard or watchdog; holds no block/allow authority; touches no session lifecycle
|
|
162
|
+
or trust level. The high-risk trigger list is not engaged. Author lenses, disclosed:
|
|
163
|
+
|
|
164
|
+
**Adversarial — "how would I make this useless?"** Three ways, all closed and asserted: report `'F'`
|
|
165
|
+
again (refusal 1), make `assessable` constant (refusal 2), or let the renderer ignore it entirely
|
|
166
|
+
(refusal 3 — the one that was genuinely open until I wrote the CLI test).
|
|
167
|
+
|
|
168
|
+
**"Would it have caught the incident?"** The incident here is my own: I read `topPrinciples: []` and
|
|
169
|
+
`score: 0 (F)` on a journal I already knew was empty, and had to reason my way to "that F is
|
|
170
|
+
meaningless" instead of being told. With this, the surface says it.
|
|
171
|
+
|
|
172
|
+
**"Symptom or cause?"** Cause, for the reporting defect — absence can no longer render as a verdict
|
|
173
|
+
because the type now has somewhere honest to put it. Symptom-level for the window mismatch, which is
|
|
174
|
+
named and left.
|
|
175
|
+
|
|
176
|
+
**Weakest point:** the CLI case is genuinely narrow (`--window > 30`), and I over-claimed its reach
|
|
177
|
+
twice before testing settled it. The API consumer is the one that matters by default. An artifact
|
|
178
|
+
claiming broad user impact here would be overstating it, so this one does not.
|