@remnic/core 9.69.77 → 9.69.78
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/access-admin-ops-surface.js +11 -11
- package/dist/access-authorization-probe.js +12 -12
- package/dist/access-boundary.js +11 -11
- package/dist/access-cli.js +48 -48
- package/dist/access-extraction-force-flush.js +11 -11
- package/dist/access-http-briefing.js +12 -12
- package/dist/access-http-query.js +13 -13
- package/dist/access-http.js +27 -27
- package/dist/access-identity-continuity-surface.js +11 -11
- package/dist/access-lcm-surface.js +11 -11
- package/dist/access-mcp.js +20 -20
- package/dist/access-namespace-preflight.js +11 -11
- package/dist/access-observe-write-surface.js +11 -11
- package/dist/access-operations-batch.js +12 -12
- package/dist/access-operations.js +19 -19
- package/dist/access-recall-concurrency.js +11 -11
- package/dist/access-recall-response.js +11 -11
- package/dist/access-recall-surface.js +11 -11
- package/dist/access-service.js +11 -11
- package/dist/access-surface-catalog.js +13 -13
- package/dist/active-recall.js +2 -2
- package/dist/briefing.js +2 -2
- package/dist/causal-consolidation.js +3 -3
- package/dist/{chunk-NGFRFDSK.js → chunk-2IAAJS3R.js} +2 -2
- package/dist/{chunk-FMT52ROU.js → chunk-3NYCO5Q5.js} +8 -8
- package/dist/{chunk-RGX4DGOG.js → chunk-3XQYM4RE.js} +2 -2
- package/dist/{chunk-CYCE3L2I.js → chunk-54CG7SO6.js} +18 -18
- package/dist/{chunk-RRMIACBG.js → chunk-55FCXCXJ.js} +7 -3
- package/dist/{chunk-RRMIACBG.js.map → chunk-55FCXCXJ.js.map} +1 -1
- package/dist/{chunk-LEP46X5Y.js → chunk-7R4DKXKP.js} +2 -2
- package/dist/{chunk-OJ3TV57W.js → chunk-7UUKRS3J.js} +2 -2
- package/dist/{chunk-ALOMLIRC.js → chunk-AFZWKVEX.js} +25 -20
- package/dist/chunk-AFZWKVEX.js.map +1 -0
- package/dist/{chunk-DCPAAAIC.js → chunk-AXDOF4VI.js} +2 -2
- package/dist/{chunk-IILMR37Z.js → chunk-B5TUL5KO.js} +10 -10
- package/dist/{chunk-GARVFCV6.js → chunk-BIFFCC62.js} +2 -2
- package/dist/{chunk-NYZRJW5X.js → chunk-BJX3VQWZ.js} +2 -2
- package/dist/{chunk-MQQPONTM.js → chunk-CK5U7JGH.js} +2 -2
- package/dist/{chunk-RDUM6BKQ.js → chunk-CRKWSSS4.js} +2 -2
- package/dist/{chunk-XNYTMLPS.js → chunk-DGAWEJVI.js} +2 -2
- package/dist/{chunk-CDEI5S5W.js → chunk-DZQ734SM.js} +2 -2
- package/dist/{chunk-SUSMEKBE.js → chunk-EU3N5MK3.js} +3 -3
- package/dist/{chunk-QJAGDPY7.js → chunk-FYAU4S6E.js} +3 -3
- package/dist/{chunk-X3NZ2HAO.js → chunk-GZAGLCQH.js} +2 -2
- package/dist/{chunk-ZYBLNHUB.js → chunk-H4USONK4.js} +3 -3
- package/dist/{chunk-K2SXIWEV.js → chunk-IA3X2Y4K.js} +2 -2
- package/dist/{chunk-QIDMGBUY.js → chunk-IMAP236M.js} +2 -2
- package/dist/{chunk-3AGCSD42.js → chunk-JA64OVTE.js} +2 -2
- package/dist/{chunk-OHRIBMSS.js → chunk-JS3S2HVG.js} +2 -2
- package/dist/{chunk-FVK5NQ3V.js → chunk-JVY556FW.js} +2 -2
- package/dist/{chunk-LZLJK2IA.js → chunk-L2LBMKSI.js} +5 -5
- package/dist/{chunk-AVO2CBIL.js → chunk-MJQ3QF7Y.js} +2 -2
- package/dist/{chunk-NHV6WCM5.js → chunk-ML2MVAEZ.js} +1 -1
- package/dist/{chunk-GXQ5GDUH.js → chunk-N3MNDVJO.js} +2 -2
- package/dist/{chunk-WGXWZE3K.js → chunk-NAYBHNGN.js} +2 -2
- package/dist/{chunk-X33QB7LW.js → chunk-NKFLHW7J.js} +2 -2
- package/dist/{chunk-A2XDQ3JW.js → chunk-OM5BIPBR.js} +2 -2
- package/dist/{chunk-2CH6MMO2.js → chunk-OXE7KNFJ.js} +5 -5
- package/dist/{chunk-3K3PITOE.js → chunk-P6GTQGGB.js} +2 -2
- package/dist/{chunk-5X7ZTLFS.js → chunk-RIEX7NOZ.js} +2 -2
- package/dist/{chunk-ZWWF7PI5.js → chunk-S42HZILI.js} +2 -2
- package/dist/{chunk-YUAOU2B2.js → chunk-S55WTPFJ.js} +3 -5
- package/dist/chunk-S55WTPFJ.js.map +1 -0
- package/dist/{chunk-RMG22TH2.js → chunk-SQDKX4RW.js} +2 -2
- package/dist/{chunk-2GKLHU2D.js → chunk-SV72F4DS.js} +2 -2
- package/dist/{chunk-6MJGDUC7.js → chunk-T4BE5KJM.js} +3 -3
- package/dist/{chunk-7DZHRPCO.js → chunk-T4QGUXCV.js} +2 -2
- package/dist/{chunk-UKB7ZDKK.js → chunk-TIQZNDZ5.js} +2 -2
- package/dist/{chunk-GATQP7CE.js → chunk-TIVPGSGO.js} +2 -2
- package/dist/{chunk-7QXTCONH.js → chunk-TS6WB2CL.js} +2 -2
- package/dist/{chunk-7WO66MKJ.js → chunk-UNJOB4DY.js} +2 -2
- package/dist/{chunk-DSQWTXHP.js → chunk-W75BBBSY.js} +8 -8
- package/dist/{chunk-YL273SOF.js → chunk-WB2I2EQK.js} +2 -2
- package/dist/{chunk-RKTT72XV.js → chunk-WGXUEXSV.js} +3 -3
- package/dist/cli.js +39 -39
- package/dist/coding/export-okf-codegraph.js +1 -1
- package/dist/compounding/engine.js +2 -2
- package/dist/config.js +2 -2
- package/dist/connectors/codex-materialize-runner.js +2 -2
- package/dist/connectors/index.js +2 -2
- package/dist/convergence-refresh.js +4 -4
- package/dist/corpus-watermark.js +4 -4
- package/dist/entity-retrieval.js +2 -2
- package/dist/external-wiki-access.js +12 -12
- package/dist/extraction.js +2 -2
- package/dist/harmonic-retrieval.js +1 -1
- package/dist/index.js +48 -48
- package/dist/lifecycle/seed-graduation.d.ts.map +1 -1
- package/dist/location/index.js +4 -4
- package/dist/maintenance/memory-governance.js +2 -2
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +2 -2
- package/dist/maintenance/rebuild-memory-projection.js +3 -3
- package/dist/memory-browse-operations.js +12 -12
- package/dist/namespaces/migrate.js +3 -3
- package/dist/namespaces/storage.js +2 -2
- package/dist/operator-doctor-corpus.js +5 -5
- package/dist/operator-toolkit.js +11 -11
- package/dist/orchestration/lifecycle-policy-coordinator.d.ts.map +1 -1
- package/dist/orchestration/maintenance.js +10 -10
- package/dist/orchestrator.js +48 -48
- package/dist/recall-navigation-operations.js +12 -12
- package/dist/recall-navigation.js +11 -11
- package/dist/resume-bundles.js +3 -3
- package/dist/semantic-consolidation.js +3 -3
- package/dist/semantic-rule-promotion.js +2 -2
- package/dist/semantic-rule-verifier.js +2 -2
- package/dist/source-agent-qualifier.js +2 -2
- package/dist/standup/build.js +2 -2
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +1 -1
- package/dist/support-passport/index.js +14 -14
- package/dist/transfer/export-okf.js +2 -2
- package/dist/verified-recall.js +2 -2
- package/dist/who-knows-cli.js +3 -3
- package/dist/who-knows.js +2 -2
- package/package.json +2 -2
- package/src/lifecycle/seed-graduation.test.ts +124 -0
- package/src/lifecycle/seed-graduation.ts +7 -2
- package/src/orchestration/lifecycle-policy-coordinator.ts +6 -1
- package/src/storage.ts +2 -4
- package/dist/chunk-ALOMLIRC.js.map +0 -1
- package/dist/chunk-YUAOU2B2.js.map +0 -1
- /package/dist/{chunk-NGFRFDSK.js.map → chunk-2IAAJS3R.js.map} +0 -0
- /package/dist/{chunk-FMT52ROU.js.map → chunk-3NYCO5Q5.js.map} +0 -0
- /package/dist/{chunk-RGX4DGOG.js.map → chunk-3XQYM4RE.js.map} +0 -0
- /package/dist/{chunk-CYCE3L2I.js.map → chunk-54CG7SO6.js.map} +0 -0
- /package/dist/{chunk-LEP46X5Y.js.map → chunk-7R4DKXKP.js.map} +0 -0
- /package/dist/{chunk-OJ3TV57W.js.map → chunk-7UUKRS3J.js.map} +0 -0
- /package/dist/{chunk-DCPAAAIC.js.map → chunk-AXDOF4VI.js.map} +0 -0
- /package/dist/{chunk-IILMR37Z.js.map → chunk-B5TUL5KO.js.map} +0 -0
- /package/dist/{chunk-GARVFCV6.js.map → chunk-BIFFCC62.js.map} +0 -0
- /package/dist/{chunk-NYZRJW5X.js.map → chunk-BJX3VQWZ.js.map} +0 -0
- /package/dist/{chunk-MQQPONTM.js.map → chunk-CK5U7JGH.js.map} +0 -0
- /package/dist/{chunk-RDUM6BKQ.js.map → chunk-CRKWSSS4.js.map} +0 -0
- /package/dist/{chunk-XNYTMLPS.js.map → chunk-DGAWEJVI.js.map} +0 -0
- /package/dist/{chunk-CDEI5S5W.js.map → chunk-DZQ734SM.js.map} +0 -0
- /package/dist/{chunk-SUSMEKBE.js.map → chunk-EU3N5MK3.js.map} +0 -0
- /package/dist/{chunk-QJAGDPY7.js.map → chunk-FYAU4S6E.js.map} +0 -0
- /package/dist/{chunk-X3NZ2HAO.js.map → chunk-GZAGLCQH.js.map} +0 -0
- /package/dist/{chunk-ZYBLNHUB.js.map → chunk-H4USONK4.js.map} +0 -0
- /package/dist/{chunk-K2SXIWEV.js.map → chunk-IA3X2Y4K.js.map} +0 -0
- /package/dist/{chunk-QIDMGBUY.js.map → chunk-IMAP236M.js.map} +0 -0
- /package/dist/{chunk-3AGCSD42.js.map → chunk-JA64OVTE.js.map} +0 -0
- /package/dist/{chunk-OHRIBMSS.js.map → chunk-JS3S2HVG.js.map} +0 -0
- /package/dist/{chunk-FVK5NQ3V.js.map → chunk-JVY556FW.js.map} +0 -0
- /package/dist/{chunk-LZLJK2IA.js.map → chunk-L2LBMKSI.js.map} +0 -0
- /package/dist/{chunk-AVO2CBIL.js.map → chunk-MJQ3QF7Y.js.map} +0 -0
- /package/dist/{chunk-NHV6WCM5.js.map → chunk-ML2MVAEZ.js.map} +0 -0
- /package/dist/{chunk-GXQ5GDUH.js.map → chunk-N3MNDVJO.js.map} +0 -0
- /package/dist/{chunk-WGXWZE3K.js.map → chunk-NAYBHNGN.js.map} +0 -0
- /package/dist/{chunk-X33QB7LW.js.map → chunk-NKFLHW7J.js.map} +0 -0
- /package/dist/{chunk-A2XDQ3JW.js.map → chunk-OM5BIPBR.js.map} +0 -0
- /package/dist/{chunk-2CH6MMO2.js.map → chunk-OXE7KNFJ.js.map} +0 -0
- /package/dist/{chunk-3K3PITOE.js.map → chunk-P6GTQGGB.js.map} +0 -0
- /package/dist/{chunk-5X7ZTLFS.js.map → chunk-RIEX7NOZ.js.map} +0 -0
- /package/dist/{chunk-ZWWF7PI5.js.map → chunk-S42HZILI.js.map} +0 -0
- /package/dist/{chunk-RMG22TH2.js.map → chunk-SQDKX4RW.js.map} +0 -0
- /package/dist/{chunk-2GKLHU2D.js.map → chunk-SV72F4DS.js.map} +0 -0
- /package/dist/{chunk-6MJGDUC7.js.map → chunk-T4BE5KJM.js.map} +0 -0
- /package/dist/{chunk-7DZHRPCO.js.map → chunk-T4QGUXCV.js.map} +0 -0
- /package/dist/{chunk-UKB7ZDKK.js.map → chunk-TIQZNDZ5.js.map} +0 -0
- /package/dist/{chunk-GATQP7CE.js.map → chunk-TIVPGSGO.js.map} +0 -0
- /package/dist/{chunk-7QXTCONH.js.map → chunk-TS6WB2CL.js.map} +0 -0
- /package/dist/{chunk-7WO66MKJ.js.map → chunk-UNJOB4DY.js.map} +0 -0
- /package/dist/{chunk-DSQWTXHP.js.map → chunk-W75BBBSY.js.map} +0 -0
- /package/dist/{chunk-YL273SOF.js.map → chunk-WB2I2EQK.js.map} +0 -0
- /package/dist/{chunk-RKTT72XV.js.map → chunk-WGXUEXSV.js.map} +0 -0
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
SUPPORT_PASSPORT_MODEL_RESULT_PATH,
|
|
5
5
|
SupportPassportModelBridge,
|
|
6
6
|
parseSupportPassportModelJob
|
|
7
|
-
} from "../chunk-
|
|
7
|
+
} from "../chunk-P6GTQGGB.js";
|
|
8
8
|
import {
|
|
9
9
|
DEFAULT_SUPPORT_PASSPORT_CONFIG,
|
|
10
10
|
parseSupportPassportConfig
|
|
@@ -14,8 +14,8 @@ import {
|
|
|
14
14
|
buildSupportPassportPublicRequestHandler,
|
|
15
15
|
composeSupportPassportExternalRequestHandlers,
|
|
16
16
|
normalizeSupportPassportNetworkAddress
|
|
17
|
-
} from "../chunk-
|
|
18
|
-
import "../chunk-
|
|
17
|
+
} from "../chunk-TS6WB2CL.js";
|
|
18
|
+
import "../chunk-7R4DKXKP.js";
|
|
19
19
|
import {
|
|
20
20
|
SUPPORT_PASSPORT_DRAFT_MAX_CONTENT_CHARACTERS,
|
|
21
21
|
SUPPORT_PASSPORT_DRAFT_MAX_MEMORIES,
|
|
@@ -56,7 +56,7 @@ import {
|
|
|
56
56
|
notifySupportPassportCommitted,
|
|
57
57
|
resolveSupportPassportModelRoutePlan,
|
|
58
58
|
syncDirectoryForDurability
|
|
59
|
-
} from "../chunk-
|
|
59
|
+
} from "../chunk-3NYCO5Q5.js";
|
|
60
60
|
import "../chunk-W4F3C7N7.js";
|
|
61
61
|
import "../chunk-MPC7TYTZ.js";
|
|
62
62
|
import "../chunk-H36X4NRH.js";
|
|
@@ -65,7 +65,7 @@ import "../chunk-OGXXGHW6.js";
|
|
|
65
65
|
import "../chunk-C3QXITIP.js";
|
|
66
66
|
import "../chunk-VQ7B2Q6M.js";
|
|
67
67
|
import "../chunk-PJSK6OJM.js";
|
|
68
|
-
import "../chunk-
|
|
68
|
+
import "../chunk-IMAP236M.js";
|
|
69
69
|
import "../chunk-ROBHL3GL.js";
|
|
70
70
|
import "../chunk-GNVZQ5JN.js";
|
|
71
71
|
import "../chunk-YN2UN7N3.js";
|
|
@@ -87,7 +87,7 @@ import "../chunk-KN6CIN7I.js";
|
|
|
87
87
|
import "../chunk-SOBJ6NEY.js";
|
|
88
88
|
import "../chunk-SSUDD72S.js";
|
|
89
89
|
import "../chunk-VYDGHJIN.js";
|
|
90
|
-
import "../chunk-
|
|
90
|
+
import "../chunk-AXDOF4VI.js";
|
|
91
91
|
import "../chunk-E6UNM67F.js";
|
|
92
92
|
import "../chunk-6WHJ2EAB.js";
|
|
93
93
|
import "../chunk-AQEJKOKI.js";
|
|
@@ -97,7 +97,7 @@ import "../chunk-UD7UNYRD.js";
|
|
|
97
97
|
import "../chunk-5ELENZTA.js";
|
|
98
98
|
import "../chunk-7G6WUOLB.js";
|
|
99
99
|
import "../chunk-2YA5N2BY.js";
|
|
100
|
-
import "../chunk-
|
|
100
|
+
import "../chunk-ML2MVAEZ.js";
|
|
101
101
|
import "../chunk-CHDGJJV6.js";
|
|
102
102
|
import "../chunk-EI6V5UXY.js";
|
|
103
103
|
import "../chunk-KKNZ7PUZ.js";
|
|
@@ -121,12 +121,12 @@ import "../chunk-HRATODNO.js";
|
|
|
121
121
|
import "../chunk-BMWN7B3Y.js";
|
|
122
122
|
import "../chunk-NAFPHFDM.js";
|
|
123
123
|
import "../chunk-RF2SMMPP.js";
|
|
124
|
-
import "../chunk-
|
|
125
|
-
import "../chunk-
|
|
126
|
-
import "../chunk-
|
|
127
|
-
import "../chunk-
|
|
124
|
+
import "../chunk-JVY556FW.js";
|
|
125
|
+
import "../chunk-CRKWSSS4.js";
|
|
126
|
+
import "../chunk-DGAWEJVI.js";
|
|
127
|
+
import "../chunk-N3MNDVJO.js";
|
|
128
128
|
import "../chunk-UFGFMWAD.js";
|
|
129
|
-
import "../chunk-
|
|
129
|
+
import "../chunk-CK5U7JGH.js";
|
|
130
130
|
import "../chunk-3UXOZBHV.js";
|
|
131
131
|
import "../chunk-PIWFNPQT.js";
|
|
132
132
|
import "../chunk-2U3R3DDH.js";
|
|
@@ -135,7 +135,7 @@ import "../chunk-EUT2WCWS.js";
|
|
|
135
135
|
import "../chunk-GKCXTSFF.js";
|
|
136
136
|
import "../chunk-2LSZVONP.js";
|
|
137
137
|
import "../chunk-DEUNUKTD.js";
|
|
138
|
-
import "../chunk-
|
|
138
|
+
import "../chunk-7UUKRS3J.js";
|
|
139
139
|
import "../chunk-6DTJBTHL.js";
|
|
140
140
|
import "../chunk-I4G4UWQA.js";
|
|
141
141
|
import "../chunk-CSAKJVXW.js";
|
|
@@ -162,7 +162,7 @@ import "../chunk-236PXYG7.js";
|
|
|
162
162
|
import "../chunk-ZCUTSMR2.js";
|
|
163
163
|
import "../chunk-QDW3E4RD.js";
|
|
164
164
|
import "../chunk-VZBW6CDG.js";
|
|
165
|
-
import "../chunk-
|
|
165
|
+
import "../chunk-S55WTPFJ.js";
|
|
166
166
|
import "../chunk-UHVXE24Y.js";
|
|
167
167
|
import "../chunk-46WM6JX2.js";
|
|
168
168
|
import "../chunk-D5F7TKMH.js";
|
|
@@ -4,13 +4,13 @@ import {
|
|
|
4
4
|
exportOkfBundle,
|
|
5
5
|
firstHeading,
|
|
6
6
|
parseIncludeStatus
|
|
7
|
-
} from "../chunk-
|
|
7
|
+
} from "../chunk-S42HZILI.js";
|
|
8
8
|
import {
|
|
9
9
|
OKF_EXPORT_VERSION
|
|
10
10
|
} from "../chunk-CLSYE5OZ.js";
|
|
11
11
|
import "../chunk-D24OXEPB.js";
|
|
12
12
|
import "../chunk-3UXOZBHV.js";
|
|
13
|
-
import "../chunk-
|
|
13
|
+
import "../chunk-S55WTPFJ.js";
|
|
14
14
|
import "../chunk-UHVXE24Y.js";
|
|
15
15
|
import "../chunk-46WM6JX2.js";
|
|
16
16
|
import "../chunk-D5F7TKMH.js";
|
package/dist/verified-recall.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
compareVerifiedEpisodeResults,
|
|
3
3
|
searchVerifiedEpisodes
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-TIQZNDZ5.js";
|
|
5
5
|
import "./chunk-B7RWBZXW.js";
|
|
6
|
-
import "./chunk-
|
|
6
|
+
import "./chunk-S55WTPFJ.js";
|
|
7
7
|
import "./chunk-UHVXE24Y.js";
|
|
8
8
|
import "./chunk-46WM6JX2.js";
|
|
9
9
|
import "./chunk-D5F7TKMH.js";
|
package/dist/who-knows-cli.js
CHANGED
|
@@ -4,9 +4,9 @@ import {
|
|
|
4
4
|
renderWhoKnows,
|
|
5
5
|
renderWhoKnowsJson,
|
|
6
6
|
renderWhoKnowsText
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-RIEX7NOZ.js";
|
|
8
|
+
import "./chunk-IMAP236M.js";
|
|
9
|
+
import "./chunk-S55WTPFJ.js";
|
|
10
10
|
import "./chunk-UHVXE24Y.js";
|
|
11
11
|
import "./chunk-46WM6JX2.js";
|
|
12
12
|
import "./chunk-D5F7TKMH.js";
|
package/dist/who-knows.js
CHANGED
|
@@ -9,8 +9,8 @@ import {
|
|
|
9
9
|
loadWhoKnowsEntities,
|
|
10
10
|
tokenizeTopic,
|
|
11
11
|
validateWhoKnowsInput
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-IMAP236M.js";
|
|
13
|
+
import "./chunk-S55WTPFJ.js";
|
|
14
14
|
import "./chunk-UHVXE24Y.js";
|
|
15
15
|
import "./chunk-46WM6JX2.js";
|
|
16
16
|
import "./chunk-D5F7TKMH.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remnic/core",
|
|
3
|
-
"version": "9.69.
|
|
3
|
+
"version": "9.69.78",
|
|
4
4
|
"description": "Framework-agnostic Remnic memory engine — orchestrator, storage, extraction, search, trust zones",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -3317,7 +3317,7 @@
|
|
|
3317
3317
|
"core"
|
|
3318
3318
|
],
|
|
3319
3319
|
"peerDependencies": {
|
|
3320
|
-
"@remnic/coding-graph": "^9.69.
|
|
3320
|
+
"@remnic/coding-graph": "^9.69.78"
|
|
3321
3321
|
},
|
|
3322
3322
|
"peerDependenciesMeta": {
|
|
3323
3323
|
"@remnic/coding-graph": {
|
|
@@ -39,6 +39,7 @@ function fakeMemory(overrides: {
|
|
|
39
39
|
created: string;
|
|
40
40
|
source?: string;
|
|
41
41
|
status?: MemoryFrontmatter["status"];
|
|
42
|
+
verificationState?: MemoryFrontmatter["verificationState"];
|
|
42
43
|
structuredAttributes?: Record<string, string>;
|
|
43
44
|
lineage?: string[];
|
|
44
45
|
}): MemoryFile {
|
|
@@ -55,6 +56,7 @@ function fakeMemory(overrides: {
|
|
|
55
56
|
confidenceTier: "inferred",
|
|
56
57
|
tags: [],
|
|
57
58
|
status: overrides.status,
|
|
59
|
+
verificationState: overrides.verificationState,
|
|
58
60
|
structuredAttributes: overrides.structuredAttributes,
|
|
59
61
|
lineage: overrides.lineage,
|
|
60
62
|
},
|
|
@@ -369,6 +371,20 @@ test("an independent negated restatement holds the seed even with enough corrobo
|
|
|
369
371
|
assert.ok(decision.reasons.includes("contradiction-observed:1"));
|
|
370
372
|
});
|
|
371
373
|
|
|
374
|
+
test("#3118 disputed evidence cannot corroborate a seed", () => {
|
|
375
|
+
const seed = seedMemory({ id: "seed-1" });
|
|
376
|
+
const disputed = fakeMemory({
|
|
377
|
+
id: "ev-1",
|
|
378
|
+
content: RESTATE_TEXT,
|
|
379
|
+
created: "2026-08-02T10:00:00.000Z",
|
|
380
|
+
source: "wearable:limitless",
|
|
381
|
+
verificationState: "disputed",
|
|
382
|
+
});
|
|
383
|
+
const decision = evaluateSeedGraduation(seed, [disputed], { config: ENABLED });
|
|
384
|
+
assert.equal(decision.decision, "hold");
|
|
385
|
+
assert.equal(decision.corroborationCount, 0);
|
|
386
|
+
});
|
|
387
|
+
|
|
372
388
|
test("a negated seed restated positively is held (polarity symmetry)", () => {
|
|
373
389
|
const seed = seedMemory({ id: "seed-1", content: CONTRADICT_TEXT });
|
|
374
390
|
const positive = fakeMemory({
|
|
@@ -543,6 +559,34 @@ test("pass: independent corroboration promotes the seed in place with audit attr
|
|
|
543
559
|
}
|
|
544
560
|
});
|
|
545
561
|
|
|
562
|
+
test("#3118 disputed seed is skipped by the graduation pass", async () => {
|
|
563
|
+
const { storage, dir } = makeStorage();
|
|
564
|
+
try {
|
|
565
|
+
const seedWrite = await storage.writeMemory("fact", SEED_TEXT, {
|
|
566
|
+
source: "wearable:bee",
|
|
567
|
+
status: "pending_review",
|
|
568
|
+
});
|
|
569
|
+
await storage.writeMemory("fact", RESTATE_TEXT, {
|
|
570
|
+
source: "wearable:limitless",
|
|
571
|
+
});
|
|
572
|
+
const seed = (await storage.readAllMemories()).find((memory) => memory.frontmatter.id === seedWrite.id);
|
|
573
|
+
assert.ok(seed);
|
|
574
|
+
await storage.writeMemoryFrontmatter(seed, { verificationState: "disputed" });
|
|
575
|
+
const summary = await runSeedGraduationPass({
|
|
576
|
+
memories: await storage.readAllMemories(),
|
|
577
|
+
storage,
|
|
578
|
+
config: ENABLED,
|
|
579
|
+
});
|
|
580
|
+
assert.equal(summary.evaluated, 0);
|
|
581
|
+
assert.equal(summary.promoted, 0);
|
|
582
|
+
const held = (await storage.readAllMemories()).find((memory) => memory.frontmatter.id === seedWrite.id);
|
|
583
|
+
assert.equal(held?.frontmatter.status, "pending_review");
|
|
584
|
+
} finally {
|
|
585
|
+
rmSync(dir, { recursive: true, force: true });
|
|
586
|
+
}
|
|
587
|
+
});
|
|
588
|
+
|
|
589
|
+
|
|
546
590
|
test("pass: contradiction during the window holds the seed in place", async () => {
|
|
547
591
|
const { storage, dir } = makeStorage();
|
|
548
592
|
try {
|
|
@@ -728,6 +772,86 @@ test("lifecycle pass: enabled independent corroboration promotes through the pol
|
|
|
728
772
|
}
|
|
729
773
|
});
|
|
730
774
|
|
|
775
|
+
test("#3118 lifecycle pass reindexes after a graduation", async () => {
|
|
776
|
+
const { storage, dir } = makeStorage();
|
|
777
|
+
try {
|
|
778
|
+
await storage.writeMemory("fact", SEED_TEXT, {
|
|
779
|
+
source: "wearable:bee",
|
|
780
|
+
status: "pending_review",
|
|
781
|
+
});
|
|
782
|
+
await storage.writeMemory("fact", RESTATE_TEXT, {
|
|
783
|
+
source: "wearable:limitless",
|
|
784
|
+
});
|
|
785
|
+
const config = parseConfig({
|
|
786
|
+
memoryDir: dir,
|
|
787
|
+
seedGraduation: { enabled: true, minCorroborations: 1 },
|
|
788
|
+
});
|
|
789
|
+
const deps = coordinatorDeps(storage, config);
|
|
790
|
+
let saves = 0;
|
|
791
|
+
deps.saveContentHashIndexes = async () => {
|
|
792
|
+
saves += 1;
|
|
793
|
+
};
|
|
794
|
+
await new LifecyclePolicyCoordinator(deps).runLifecyclePolicyPass(
|
|
795
|
+
await storage.readAllMemories(),
|
|
796
|
+
storage,
|
|
797
|
+
);
|
|
798
|
+
assert.equal(saves, 1, "graduation must persist content-hash indexes");
|
|
799
|
+
} finally {
|
|
800
|
+
rmSync(dir, { recursive: true, force: true });
|
|
801
|
+
}
|
|
802
|
+
});
|
|
803
|
+
|
|
804
|
+
|
|
805
|
+
test("#3118 index-save failure does not unwind a completed graduation", async () => {
|
|
806
|
+
const { storage, dir } = makeStorage();
|
|
807
|
+
try {
|
|
808
|
+
await storage.writeMemory("fact", SEED_TEXT, {
|
|
809
|
+
source: "wearable:bee",
|
|
810
|
+
status: "pending_review",
|
|
811
|
+
});
|
|
812
|
+
await storage.writeMemory("fact", RESTATE_TEXT, {
|
|
813
|
+
source: "wearable:limitless",
|
|
814
|
+
});
|
|
815
|
+
const config = parseConfig({
|
|
816
|
+
memoryDir: dir,
|
|
817
|
+
seedGraduation: { enabled: true, minCorroborations: 1 },
|
|
818
|
+
});
|
|
819
|
+
const deps = coordinatorDeps(storage, config);
|
|
820
|
+
deps.saveContentHashIndexes = async () => {
|
|
821
|
+
throw new Error("index write failed");
|
|
822
|
+
};
|
|
823
|
+
await new LifecyclePolicyCoordinator(deps).runLifecyclePolicyPass(
|
|
824
|
+
await storage.readAllMemories(),
|
|
825
|
+
storage,
|
|
826
|
+
);
|
|
827
|
+
const seed = (await storage.readAllMemories()).find(
|
|
828
|
+
(memory) => memory.frontmatter.source === "wearable:bee",
|
|
829
|
+
);
|
|
830
|
+
assert.equal(seed?.frontmatter.status, "active", "graduation stays durable if reindex fails");
|
|
831
|
+
} finally {
|
|
832
|
+
rmSync(dir, { recursive: true, force: true });
|
|
833
|
+
}
|
|
834
|
+
});
|
|
835
|
+
|
|
836
|
+
test("#3118 promoteWearableMemory refuses a concurrently disputed seed", async () => {
|
|
837
|
+
const { storage, dir } = makeStorage();
|
|
838
|
+
try {
|
|
839
|
+
const seedWrite = await storage.writeMemory("fact", SEED_TEXT, {
|
|
840
|
+
source: "wearable:bee",
|
|
841
|
+
status: "pending_review",
|
|
842
|
+
});
|
|
843
|
+
const seed = (await storage.readAllMemories()).find((memory) => memory.frontmatter.id === seedWrite.id);
|
|
844
|
+
assert.ok(seed);
|
|
845
|
+
await storage.writeMemoryFrontmatter(seed, { verificationState: "disputed" });
|
|
846
|
+
assert.equal(await storage.promoteWearableMemory(seedWrite.id, { graduatedBy: "independent-corroboration" }), false);
|
|
847
|
+
const held = (await storage.readAllMemories()).find((memory) => memory.frontmatter.id === seedWrite.id);
|
|
848
|
+
assert.equal(held?.frontmatter.status, "pending_review");
|
|
849
|
+
} finally {
|
|
850
|
+
rmSync(dir, { recursive: true, force: true });
|
|
851
|
+
}
|
|
852
|
+
});
|
|
853
|
+
|
|
854
|
+
|
|
731
855
|
test("lifecycle pass: recall-handle history suppresses echo corroboration", async () => {
|
|
732
856
|
const { storage, dir } = makeStorage();
|
|
733
857
|
try {
|
|
@@ -132,6 +132,10 @@ function isEvidenceStatus(status: MemoryStatus | undefined): boolean {
|
|
|
132
132
|
return status === undefined || status === "active" || status === "pending_review";
|
|
133
133
|
}
|
|
134
134
|
|
|
135
|
+
function isGraduationEvidence(memory: MemoryFile): boolean {
|
|
136
|
+
return isEvidenceStatus(memory.frontmatter.status) && memory.frontmatter.verificationState !== "disputed";
|
|
137
|
+
}
|
|
138
|
+
|
|
135
139
|
function hasLineageLink(seed: MemoryFile, evidence: MemoryFile): boolean {
|
|
136
140
|
const seedLineage = seed.frontmatter.lineage;
|
|
137
141
|
if (seedLineage !== undefined && seedLineage.includes(evidence.frontmatter.id)) return true;
|
|
@@ -279,7 +283,7 @@ export function evaluateSeedGraduation(
|
|
|
279
283
|
const candidateCreated = createdMs(candidate);
|
|
280
284
|
if (!Number.isFinite(seedCreated) || !Number.isFinite(candidateCreated)) continue;
|
|
281
285
|
if (candidateCreated <= seedCreated) continue;
|
|
282
|
-
if (!
|
|
286
|
+
if (!isGraduationEvidence(candidate)) continue;
|
|
283
287
|
const candidateText = stripAttributesSuffix(candidate.content);
|
|
284
288
|
if (hasNegationWord(candidateText) !== seedNegated) {
|
|
285
289
|
// Polarity-flipped restatement of the seed's core content is a
|
|
@@ -417,7 +421,7 @@ export async function runSeedGraduationPass(
|
|
|
417
421
|
return { evaluated: 0, promoted: 0, held: 0, contradictionHeld: 0, echoSuppressed: 0, disabled: true };
|
|
418
422
|
}
|
|
419
423
|
const corpus = excludeSupportPassportPrivateMemories(input.memories);
|
|
420
|
-
const evidencePool = corpus.filter((memory) =>
|
|
424
|
+
const evidencePool = corpus.filter((memory) => isGraduationEvidence(memory));
|
|
421
425
|
|
|
422
426
|
let promoted = 0;
|
|
423
427
|
let held = 0;
|
|
@@ -427,6 +431,7 @@ export async function runSeedGraduationPass(
|
|
|
427
431
|
|
|
428
432
|
for (const seed of corpus) {
|
|
429
433
|
if (seed.frontmatter.status !== "pending_review") continue;
|
|
434
|
+
if (seed.frontmatter.verificationState === "disputed") continue;
|
|
430
435
|
// Tombstone-blocked rows need revokeTombstone first; the promotion
|
|
431
436
|
// method refuses them anyway, so skip before evaluating.
|
|
432
437
|
if (seed.frontmatter.blockedBy !== undefined) continue;
|
|
@@ -261,12 +261,17 @@ export class LifecyclePolicyCoordinator {
|
|
|
261
261
|
}
|
|
262
262
|
|
|
263
263
|
const history = this.deps.getHandleHistory?.();
|
|
264
|
-
await runSeedGraduationPass({
|
|
264
|
+
const graduation = await runSeedGraduationPass({
|
|
265
265
|
memories: allMemories,
|
|
266
266
|
storage,
|
|
267
267
|
config: this.config.seedGraduation,
|
|
268
268
|
recalledBySession: history ? (sessionKey) => history.recent(sessionKey) : undefined,
|
|
269
269
|
});
|
|
270
|
+
if (graduation.promoted > 0) {
|
|
271
|
+
await this.deps.saveContentHashIndexes().catch((err) =>
|
|
272
|
+
log.warn(`content-hash index save failed during seed graduation: ${err}`),
|
|
273
|
+
);
|
|
274
|
+
}
|
|
270
275
|
|
|
271
276
|
// Report how many memories had frontmatter rewritten so callers can record a
|
|
272
277
|
// catalog write touch for lifecycle-only passes (codex NR-tS).
|
package/src/storage.ts
CHANGED
|
@@ -2598,13 +2598,11 @@ export class StorageManager extends TombstoneBlockedCaptureIndexHost {
|
|
|
2598
2598
|
const memory = memories.find((entry) => entry.frontmatter.id === id);
|
|
2599
2599
|
if (!memory) return false;
|
|
2600
2600
|
if (memory.frontmatter.status !== "pending_review") return false;
|
|
2601
|
+
if (memory.frontmatter.verificationState === "disputed") return false;
|
|
2601
2602
|
// Tombstone-blocked rows need revokeTombstone first (issue #1579 OcuDx/Ocu1l).
|
|
2602
2603
|
if (memory.frontmatter.blockedBy) return false;
|
|
2603
|
-
return this.
|
|
2604
|
+
return this.writeMemoryFrontmatterIfUnchanged(memory, {
|
|
2604
2605
|
status: "active",
|
|
2605
|
-
// Keep frontmatter confidence in step with the re-scored trust —
|
|
2606
|
-
// new smart writes persist trust as confidence, and a promoted
|
|
2607
|
-
// row must not keep its stale borderline value.
|
|
2608
2606
|
...(typeof confidence === "number" && Number.isFinite(confidence)
|
|
2609
2607
|
? { confidence: Math.min(1, Math.max(0, confidence)) }
|
|
2610
2608
|
: {}),
|