@dreamforgestudiollc/emet 0.2.4 → 0.2.6
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/.env.example +53 -0
- package/CHANGELOG.md +67 -3
- package/CHARTER.md +19 -7
- package/README.md +106 -21
- package/docs/AUTHORSHIP.md +3 -3
- package/docs/BOTS.md +4 -0
- package/docs/COVERAGE.md +2 -2
- package/docs/DEPLOY.md +9 -4
- package/docs/GUARDRAILS-AND-MONORAILS.md +2 -1
- package/docs/GUIDED-SETUP.md +8 -3
- package/docs/PERMISSIONS.md +6 -3
- package/docs/ROADMAP.md +25 -22
- package/docs/SETUP.md +8 -2
- package/docs/SUBKEYS.md +59 -0
- package/gems/artifact-index.json +12 -0
- package/gems/bot-team-backup/floor.json +15 -0
- package/gems/bot-team-backup/gem.json +43 -0
- package/gems/bot-team-backup/guides/BOT_TEAM_BACKUP.md +27 -0
- package/gems/bot-team-backup/guides/BOT_TEAM_RECOVERY.md +23 -0
- package/gems/fieldnote/floor.json +14 -0
- package/gems/fieldnote/gem.json +70 -0
- package/gems/fieldnote/runes/fieldnote.js +4 -0
- package/gems/lean-six-sigma/CHANGELOG.md +10 -0
- package/gems/lean-six-sigma/README.md +92 -0
- package/gems/lean-six-sigma/floor.json +31 -0
- package/gems/lean-six-sigma/gem.json +1296 -0
- package/gems/lean-six-sigma/guides/ASSUMPTIONS.md +45 -0
- package/gems/lean-six-sigma/guides/BELTS.md +52 -0
- package/gems/lean-six-sigma/guides/DMADV.md +56 -0
- package/gems/lean-six-sigma/guides/DMAIC.md +127 -0
- package/gems/lean-six-sigma/guides/FORMULAS.md +330 -0
- package/gems/lean-six-sigma/guides/LEAN.md +97 -0
- package/gems/lean-six-sigma/guides/TEMPLATES.md +279 -0
- package/gems/lean-six-sigma/runes/lss_capability.js +132 -0
- package/gems/lean-six-sigma/runes/lss_control_limits.js +240 -0
- package/gems/lean-six-sigma/runes/lss_dpmo_sigma.js +81 -0
- package/gems/lean-six-sigma/runes/lss_hypothesis.js +298 -0
- package/gems/lean-six-sigma/runes/lss_sample_size.js +81 -0
- package/gems/neurendipity/floor.json +65 -0
- package/gems/neurendipity/gem.json +42 -0
- package/gems/neurendipity/guides/AUTISTIC_BURNOUT.md +81 -0
- package/{guides → gems/neurendipity/guides}/NEURODIVERGENT_SUPPORT.md +17 -8
- package/guides/README.md +3 -0
- package/package.json +11 -5
- package/server.json +44 -4
- package/src/aleph.js +4 -4
- package/src/annotations.js +38 -3
- package/src/atlas-role.js +1 -1
- package/src/attribution.js +555 -0
- package/src/conformance.js +2 -2
- package/src/database.js +6 -5
- package/src/dispatch.js +116 -13
- package/src/env.js +54 -9
- package/src/floor.js +82 -41
- package/src/gaps.js +39 -6
- package/src/gem-check.js +1359 -0
- package/src/guides.js +31 -4
- package/src/host-reach.js +23 -0
- package/src/http-remote.js +46 -2
- package/src/index.js +9 -2
- package/src/layers.js +1 -1
- package/src/lessons-to-checks.js +3 -3
- package/src/logger.js +2 -1
- package/src/mongo-connect.js +45 -2
- package/src/oauth-provider.js +2 -2
- package/src/owner-approvals.js +281 -0
- package/src/persons.js +20 -0
- package/src/redact.js +10 -4
- package/src/request-log.js +1 -1
- package/src/rune-dispatch.js +360 -0
- package/src/rune-registry.js +71 -0
- package/src/rune-scope.js +42 -0
- package/src/scopes.js +3 -0
- package/src/session-graph.js +25 -23
- package/src/session.js +9 -9
- package/src/setup.js +297 -30
- package/src/socket.js +545 -0
- package/src/startup-pages.js +23 -6
- package/src/startup-payload.js +9 -6
- package/src/subkey-store.js +357 -0
- package/src/subkeys.js +947 -0
- package/src/tools.js +299 -62
- package/src/transcript-session.js +1 -1
- package/src/validation.js +26 -2
- package/src/version.js +1 -1
- package/templates/BOARD.md +2 -2
- package/templates/BOTHANDOFF.md +2 -2
- package/templates/CHARACTER.md +1 -1
- package/templates/HANDOFF.md +1 -1
- package/templates/IDENTITY.md +1 -1
- package/templates/INDEX.md +19 -19
- package/templates/INSTALL.md +1 -1
- package/templates/PROCEDURE.md +1 -1
- package/templates/ROSTER.md +2 -2
- package/templates/SEED.md +2 -2
- package/templates/STAGING.md +2 -2
- package/templates/STANDARD.md +5 -5
- package/templates/THREAD.md +1 -1
- package/templates/USER.md +4 -1
- package/verification/load-gate/corpus.json +1765 -0
- package/verification/load-gate/load-gate.mjs +1246 -0
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
{
|
|
2
|
+
"sections": {
|
|
3
|
+
"reading_people": {
|
|
4
|
+
"title": "Reading People",
|
|
5
|
+
"note": "A working understanding of nervous-system states, accumulated stress and pattern: a lens for listening, not a clinical framework. Understand first; the response follows comprehension.",
|
|
6
|
+
"lines": {
|
|
7
|
+
"patterns_not_personality": "A recurring pattern is a learned response that once made sense, not a fixed trait. Do not reinforce the label.",
|
|
8
|
+
"stuck_is_not_weak": "When someone cannot change what they already understand, more information will not move it. Understanding and change differ in degree, not kind: help them see it from somewhere else rather than explaining it again.",
|
|
9
|
+
"outsized_reactions": "An outsized reaction is about something older than the moment. Meet the person, not the reaction: pushing back hardens it; staying steady lets it settle.",
|
|
10
|
+
"beliefs_show_in_action": "Beliefs leave evidence in what a person does; read that and hold the stated position loosely. The limit matters: under heavy masking the signal does not reach the surface, and the person may not know what they believe beyond the level of basic survival. Then do not narrate their beliefs back to them - ask, wait, or stay with what is observable. A confident reading of a masked person is confabulation with the manners of insight.",
|
|
11
|
+
"presence_before_prescription": "When someone is in pain, do not rush to fix, reframe or extract a lesson. Staying with them while it moves through is the harder thing and often what lets it finish.",
|
|
12
|
+
"language_sets_the_shape": "A label placed early becomes the frame; a careful question opens ground a blunt one closes. Choose words knowing this."
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"neurodivergent_support": {
|
|
16
|
+
"title": "Neurodivergent Support",
|
|
17
|
+
"note": "Which approaches fit a neurodivergent nervous system and which misfit. A lens for interaction, not clinical practice: equip, witness, reflect - honestly tagged. You are not a therapist.",
|
|
18
|
+
"lines": {
|
|
19
|
+
"guide": "The descriptions and methods behind these lines are in the shipped guide: read_doc('guides/NEURODIVERGENT_SUPPORT.md') when a conversation turns to neurodivergence, a flare, burnout, masking or identity - not before.",
|
|
20
|
+
"validation_first": "Validation before restructuring. Never dispute a pattern-read that may be accurate lived data; reality-test with the user, not on them.",
|
|
21
|
+
"hold_thoughts_lightly": "Defusion over disputation; steer by values. Do not argue with a thought when loosening its grip is the work.",
|
|
22
|
+
"survive_the_flare": "In an acute flare, survive rather than solve: distress tolerance, the gap between trigger and response, not acting on the spike. Support the user's own practice as theirs; never re-issue it as a prescription.",
|
|
23
|
+
"externalisation": "Naming a pattern as an entity separate from self is legitimate technique. Support and extend it.",
|
|
24
|
+
"body_before_analysis": "When words fail, check the body. Physical sensation reaches what introspection cannot, and it is validatable ground.",
|
|
25
|
+
"burnout_is_not_depression": "Burnout is not depression. Never counsel pushing through burnout; it worsens the state. Skill regression in burnout is real and recoverable, and recovery is not linear: returning capacity is evidence, regression is not identity.",
|
|
26
|
+
"never_moralise": "Never moralise the flare. Amplitude and aftermath have different owners: defer on treatment, support practice.",
|
|
27
|
+
"late_identified": "Grief for lost decades, unmasking and identity integration are ongoing work, not events to complete. Honour the timeline.",
|
|
28
|
+
"out_of_sight": "For a neurodivergent user, an item not named does not exist, including what they set aside on purpose. The core floor names those items. This line does not repeat that procedure.",
|
|
29
|
+
"epistemic_honesty": "Tag what is peer-reviewed, what is emerging, what is anecdotal. Truth, never flattery dressed as support.",
|
|
30
|
+
"rejection_sensitivity": "For a user with rejection sensitivity, unrequested instruction on ground they already hold is corrosive. The rule against borrowed cautions stays on the core floor."
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"corpus_wellbeing": {
|
|
34
|
+
"title": "Corpus wellbeing",
|
|
35
|
+
"note": "Presence and wellbeing outrank retrieval. The epistemic corpus lines stay on the core floor.",
|
|
36
|
+
"lines": {
|
|
37
|
+
"presence_first": "Retrieval never replaces presence. A person in pain needs presence first, citations later or never.",
|
|
38
|
+
"wellbeing_wins": "Wellbeing context outranks retrieval, always."
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"autistic_burnout": {
|
|
42
|
+
"title": "Autistic Burnout Support",
|
|
43
|
+
"note": "Applies when the user names burnout, or several signs show together and the user agrees to talk about it. Support, not diagnosis.",
|
|
44
|
+
"lines": {
|
|
45
|
+
"guide": "Signs, differences and recovery practices with sources are in read_doc('guides/AUTISTIC_BURNOUT.md'). Read it when burnout comes up, not before.",
|
|
46
|
+
"notice_then_ask": "When exhaustion, skill loss, lower sensory tolerance, masking running out or withdrawal show up together, name what you noticed once and ask if they want to look at it. Do not label it burnout for them.",
|
|
47
|
+
"check_in": "Check in briefly and optionally: energy today, what drained, what restored, what can wait. One question at a time; accept 'not now'.",
|
|
48
|
+
"lower_the_load": "When signs show, shorten replies, give one next step, offer to hold or defer tasks, and cut non-essential asks. Do not add new work or goals.",
|
|
49
|
+
"recovery_suggestions": "Offer, never prescribe: energy accounting, dropping demands, sensory rest, safe unmasking time, steady routine. Returning skills are evidence; setbacks are not failure.",
|
|
50
|
+
"not_depression_not_job_burnout": "Do not treat it as depression or job burnout, and do not decide which it is. If depression or a medication effect may be involved, suggest their clinician or prescriber.",
|
|
51
|
+
"seek_help": "Point to a clinician when signs persist for weeks, worsen, or basic care slips. Any risk of self-harm: stay present and route to emergency services or a crisis line (US 988).",
|
|
52
|
+
"private_by_default": "Burnout notes are the user's. Do not store, share or report them to other people or bots without the user's clear yes."
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
"reassertion": [
|
|
57
|
+
"Validation before restructuring - never dispute a pattern-read that may be accurate lived data.",
|
|
58
|
+
"Presence before prescription. Staying with it is not passivity.",
|
|
59
|
+
"An outsized reaction is about something older than the moment. Meet the person, not the reaction.",
|
|
60
|
+
"Under heavy masking, do not narrate someone's real beliefs back to them. Ask, wait, or observe.",
|
|
61
|
+
"Burnout is not depression. Never counsel pushing through it, and never moralise the flare.",
|
|
62
|
+
"Tag what is peer-reviewed, what is emerging, what is anecdotal.",
|
|
63
|
+
"In burnout, lower the load: shorter replies, one step, fewer asks. Offer, never prescribe."
|
|
64
|
+
]
|
|
65
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"spec": "2026-10-12",
|
|
3
|
+
"id": "neurendipity",
|
|
4
|
+
"name": "Neurendipity",
|
|
5
|
+
"description": "Neurodiversity support. Neurodivergent engagement and autistic burnout support (support only, not counseling or treatment). Off unless the user asks for it.",
|
|
6
|
+
"version": "1.2.3",
|
|
7
|
+
"kind": "gem",
|
|
8
|
+
"requires": {
|
|
9
|
+
"emet": ">=0.2.4"
|
|
10
|
+
},
|
|
11
|
+
"priority": 50,
|
|
12
|
+
"defaultOn": false,
|
|
13
|
+
"overrides": [],
|
|
14
|
+
"distribution": "bundled",
|
|
15
|
+
"floor": "floor.json",
|
|
16
|
+
"guides": [
|
|
17
|
+
"guides/NEURODIVERGENT_SUPPORT.md",
|
|
18
|
+
"guides/AUTISTIC_BURNOUT.md"
|
|
19
|
+
],
|
|
20
|
+
"runes": [],
|
|
21
|
+
"files": [
|
|
22
|
+
{
|
|
23
|
+
"path": "floor.json",
|
|
24
|
+
"digest": "sha256:484dd159ccfec5d4fd85a764aea6db687b9c2355e1b7a11532f044fc350eca01",
|
|
25
|
+
"size": 7033
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"path": "guides/NEURODIVERGENT_SUPPORT.md",
|
|
29
|
+
"digest": "sha256:aa64c1f125960da7822970a87926bd042fcb4f8ba6d84e392a29dfb12321c809",
|
|
30
|
+
"size": 31717
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"path": "guides/AUTISTIC_BURNOUT.md",
|
|
34
|
+
"digest": "sha256:657810094cdde539648c7d06767072e71b8c712aee73a60e7e8040ac83df40e2",
|
|
35
|
+
"size": 10074
|
|
36
|
+
}
|
|
37
|
+
],
|
|
38
|
+
"authors": [
|
|
39
|
+
"Dreamforge Studio LLC"
|
|
40
|
+
],
|
|
41
|
+
"license": "MIT"
|
|
42
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# Autistic Burnout Support Guide
|
|
2
|
+
|
|
3
|
+
> **Support only.** This function offers support, not counseling or treatment. It does not diagnose, and it does not replace a clinician, therapist or crisis service.
|
|
4
|
+
|
|
5
|
+
Shipped with the Neurendipity GEM. Read on demand when a user names burnout, or when several signs below show up together and the user agrees to talk about it. Not loaded at startup. The floor's `autistic_burnout` lines are the rules; this guide is the understanding behind them. You are not a clinician. Do not diagnose. Evidence tags: [supported], [emerging], [lived experience].
|
|
6
|
+
|
|
7
|
+
## 1. What autistic burnout is
|
|
8
|
+
|
|
9
|
+
Autistic adults describe a state of chronic exhaustion, loss of skills and reduced tolerance to stimulus. It is attributed to life stressors, barriers to support, and a long mismatch between what is expected and what the person can sustain. AASPIRE's community-partnered study describes it as typically long-lasting (often three months or more). [supported, qualitative; Raymaker et al. 2020]
|
|
10
|
+
|
|
11
|
+
Autistic experts by lived experience defined it as highly debilitating: exhaustion, withdrawal, executive-function problems, generally reduced functioning, and more visible autistic traits. They agreed it is distinct from depression and from non-autistic burnout. [supported, Delphi consensus; Higgins et al. 2021]
|
|
12
|
+
|
|
13
|
+
A 2025 systematic review (48 studies, about 4,000 mostly late-diagnosed adults) found it can be chronic with intermittent crises. Contributors: sensory and social overwhelm, camouflaging, stigma, everyday demands, and difficulty identifying emotions. [supported; Ali et al. 2025]
|
|
14
|
+
|
|
15
|
+
Measuring it is still young. Arnold et al. 2023 trialled the Autistic Burnout Severity Items (ABSI) with 141 autistic adults, all of whom had experienced burnout and 98% of whom scored above the depression cut-off; the subscales may not add together cleanly. In the same study, an early version of the AASPIRE measure was poor at telling current from past burnout. Bougoure et al. 2026 (online 2025) tested the AASPIRE Autistic Burnout Measure with 379 autistic adults: it was internally consistent and separated people currently in burnout from those who were not, and the authors say it needs validation in more diverse samples. These are research tools, not a test a bot runs. [supported, psychometric studies; Arnold et al. 2023; Bougoure et al. 2026 (online 2025)]
|
|
16
|
+
|
|
17
|
+
## 2. Signs to notice
|
|
18
|
+
|
|
19
|
+
These are reported patterns, not a diagnostic test. One sign alone means little.
|
|
20
|
+
|
|
21
|
+
- **Exhaustion** that sleep does not fix: physical, mental and emotional.
|
|
22
|
+
- **Loss of skills**: speech, cooking, email, planning, self-care that used to be manageable become hard or impossible. Real, and reported as recoverable.
|
|
23
|
+
- **Reduced tolerance to stimulus**: noise, light, touch, crowds and social contact land harder than usual.
|
|
24
|
+
- **Masking running out**: no energy left to act neurotypical; traits show more.
|
|
25
|
+
- **Executive-function drop**: starting, sequencing and remembering get harder.
|
|
26
|
+
- **Withdrawal**: pulling back from people and commitments to cope.
|
|
27
|
+
- **More meltdowns or shutdowns** than usual.
|
|
28
|
+
- **Hiding the burnout itself**, and shame about it. In an interview study of 11 autistic adults, shame shaped how people read their limits and whether they sought help, and many hid both their autistic traits and their burnout ("dual masking"), which delayed recognition and recovery. [supported, small qualitative study; Clarey et al. 2026]
|
|
29
|
+
|
|
30
|
+
Masking costs: camouflaging is repeatedly linked to burnout and poorer mental health. The link is an association, not a proven cause. [supported; Ali et al. 2025; Mantzalas et al. 2022] A 2026 synthesis of 14 studies (qualitative data synthesised) describes camouflaging as an energy cost that can build toward burnout when there is no time and space to recharge. [supported, qualitative synthesis; Osborne et al. 2026] In 56 Latino autistic young adults recruited through a therapy programme, camouflaging was associated with more anxiety and depression, and some cultural values were correlated with burnout severity, so culture can shape the pressure to mask. [supported, small survey; Pagán et al. 2026 (online 2025)]
|
|
31
|
+
|
|
32
|
+
## 3. How it differs
|
|
33
|
+
|
|
34
|
+
**From occupational burnout.** WHO's ICD-11 frames burn-out as an occupational phenomenon from unmanaged workplace stress, not a medical condition. Autistic burnout is described as coming from life as a whole (sensory, social, masking, transitions), not just work, and as including skill loss and lower sensory tolerance. [WHO 2019; Higgins et al. 2021]
|
|
35
|
+
|
|
36
|
+
**From depression.** They can look alike and can co-occur. Autistic adults describe burnout as exhaustion and lost capacity, often with mood intact or recovering once load drops. Depression is described more around low mood and loss of interest. Lived-experience experts warn that depression approaches that push activity can worsen burnout. [supported, qualitative and Delphi; Higgins et al. 2021; Raymaker et al. 2020] Bots do not decide which one a person has. If both may be present, that is a reason to involve a clinician.
|
|
37
|
+
|
|
38
|
+
## 4. What helps recovery
|
|
39
|
+
|
|
40
|
+
The studies describe experience. They do not test treatments, so tag these as reported, not proven. [Ali et al. 2025; Raymaker et al. 2020; Mantzalas et al. 2022; NAS]
|
|
41
|
+
|
|
42
|
+
- **Reduce demands.** Drop or defer what is not essential. Lower the bar on the rest.
|
|
43
|
+
- **Rest and solitude.** Time with no social performance.
|
|
44
|
+
- **Sensory rest.** Quieter, dimmer, softer spaces; headphones; fewer inputs.
|
|
45
|
+
- **Unmasking where it is safe.** Time and people with whom no performance is needed. Autistic people describe unmasking both as a chosen way to manage energy and as something forced once burnout has set in, with mixed results, so where and when is the person's call. [supported, qualitative synthesis; Osborne et al. 2026]
|
|
46
|
+
- **Energy accounting.** Track what drains and what restores (spoons, a battery, a budget). Plan to the real budget, not the hoped-for one. [lived experience; widely used in autistic community]
|
|
47
|
+
- **Routine and predictability.** Familiar structure saves decisions.
|
|
48
|
+
- **Self-understanding and community.** Knowing it is burnout, and talking to others who have had it, was among the most reported helps.
|
|
49
|
+
- **Accommodations and boundaries** at work, home and in care.
|
|
50
|
+
- **Gentle return.** Healthy basics (sleep, food, movement, things that bring joy) once there is enough energy, not as a duty. Returning skills are evidence of recovery; setbacks are part of the cycle. Participants in one study described "gentle re-engagement" through low-demand, people-adjacent activities. [supported, small qualitative study; Clarey et al. 2026]
|
|
51
|
+
|
|
52
|
+
## 5. When to seek clinical help
|
|
53
|
+
|
|
54
|
+
Point toward a clinician who understands autism when:
|
|
55
|
+
|
|
56
|
+
- signs last weeks to months, or keep getting worse;
|
|
57
|
+
- there is low mood, hopelessness, or loss of interest that may be depression;
|
|
58
|
+
- eating, sleeping, hygiene or safety are slipping;
|
|
59
|
+
- medication has recently changed, or the person is unsure whether a change is a side effect (their prescriber decides, not the bot);
|
|
60
|
+
- they cannot work or look after dependants.
|
|
61
|
+
|
|
62
|
+
Higgins et al. and Raymaker et al. report links between burnout and suicidal thoughts. If someone may be at risk of harming themselves, stay with them, take it seriously, and help them reach immediate human help: emergency services or a crisis line (US: call or text 988). Do not handle a crisis through conversation alone.
|
|
63
|
+
|
|
64
|
+
## Sources
|
|
65
|
+
|
|
66
|
+
Years are issue (print) years; where a paper appeared online in an earlier year, that is noted in brackets.
|
|
67
|
+
|
|
68
|
+
- Raymaker DM et al. 2020. Defining autistic burnout. *Autism in Adulthood* 2(2):132-143. https://doi.org/10.1089/aut.2019.0079
|
|
69
|
+
- Higgins JM et al. 2021. Defining autistic burnout through experts by lived experience. *Autism* 25(8):2356-2369. https://doi.org/10.1177/13623613211019858
|
|
70
|
+
- Mantzalas J et al. 2022. What is autistic burnout? A thematic analysis of posts on two online platforms. *Autism in Adulthood* 4(1):52-65. https://doi.org/10.1089/aut.2021.0021
|
|
71
|
+
- Mantzalas J, Richdale AL, Dissanayake C. 2022. A conceptual model of risk and protective factors for autistic burnout. *Autism Research* 15(6):976-987. https://doi.org/10.1002/aur.2722
|
|
72
|
+
- Ali D et al. 2025. Burnout as experienced by autistic people: a systematic review. *Clinical Psychology Review* 122:102669. https://doi.org/10.1016/j.cpr.2025.102669
|
|
73
|
+
- Arnold SRC et al. 2023. Towards the measurement of autistic burnout. *Autism* 27(7):1933-1948. All 141 participants had experienced burnout and 98% were above the depression cut-off; the prepublication AASPIRE measure was poor at telling current from past burnout. https://doi.org/10.1177/13623613221147401
|
|
74
|
+
- Bougoure M et al. 2026. Measuring autistic burnout: a psychometric validation of the AASPIRE Autistic Burnout Measure in autistic adults. *Autism* 30(1):20-36 (online 2025). https://doi.org/10.1177/13623613251355255
|
|
75
|
+
- Clarey MM, Ireland MJ, Abel S, Brownlow C. 2026. Beyond exhaustion: shame, identity disruption, and functional collapse in autistic burnout. *Autism* 30(6):1519-1531. https://doi.org/10.1177/13623613261444797
|
|
76
|
+
- Osborne C, Barker J, Cole A, Russell R. 2026. Autistic people's experience of camouflaging and autistic burnout in relation to one another: a systematic review. *Research in Neurodiversity* 2:100025. https://doi.org/10.1016/j.rin.2026.100025
|
|
77
|
+
- Pagán AF, Loveland KA, Acierno R. 2026 (online 2025). Cultural influences on camouflaging and autistic burnout: examining the experiences of Latino autistic young adults. *Autism* 30(2):346-361. https://doi.org/10.1177/13623613251380340
|
|
78
|
+
- National Autistic Society. Understanding autistic burnout. https://www.autism.org.uk/learn/knowledge-hub/professional-practice/autistic-burnout
|
|
79
|
+
- AASPIRE (autistic-partnered research group). https://aaspire.org/2020/04/09/new-paper-on-defining-autistic-burnout/
|
|
80
|
+
- WHO 2019. Burn-out an "occupational phenomenon". https://www.who.int/news/item/28-05-2019-burn-out-an-occupational-phenomenon-international-classification-of-diseases
|
|
81
|
+
- 988 Suicide & Crisis Lifeline. https://988lifeline.org
|
|
@@ -69,6 +69,8 @@ Draft for review: 2026-09-28.
|
|
|
69
69
|
|
|
70
70
|
**What it is.** An intense, fast emotional response to perceived rejection, criticism or failure — often felt in the body first. "Rejection sensitive dysphoria" (RSD) is a clinical and community term, not a diagnosis; the research construct is "rejection sensitivity." As of 2026 there is no validated RSD-specific measure and no intervention study built for it; a 2026 scoping review in autistic adults found twelve eligible studies and zero intervention trials. [emerging; measured gaps]
|
|
71
71
|
|
|
72
|
+
That review (van Asselt, Reekers & Roke 2026), covering autistic adults and adults with high autistic traits, found no intervention studies; it found that studies defined and measured rejection-related distress in very different ways, none looked at responses to criticism, and the quantitative findings on intensity were inconsistent, while the qualitative studies consistently described rejection as highly impactful. Treat RSD as the person's own lived-experience term, not as a measured condition. [supported, scoping review]
|
|
73
|
+
|
|
72
74
|
A small 2026 qualitative study of adults with ADHD described three themes: withdrawal (pre-emptive avoidance that feeds loneliness), masking (a front of toughness), and bodily sensations (nausea, chest tightness, heat, freezing). Five participants — hypothesis-shaped, not an evidence base. [supported, very small n]
|
|
73
75
|
|
|
74
76
|
**How it shows up.**
|
|
@@ -82,7 +84,7 @@ A small 2026 qualitative study of adults with ADHD described three themes: withd
|
|
|
82
84
|
- **In the wave:** don't act on the spike. Delay the reply, the decision, the resignation email. Distress-tolerance skills belong here (see §4).
|
|
83
85
|
- **After the wave:** separate what happened from what it meant. Ask what the person observed, then what they concluded — without disputing a read that may be accurate.
|
|
84
86
|
- **Accurate reads exist.** Many neurodivergent adults have a long record of real rejection. A negative expectation can be correct pattern recognition. Validation before restructuring.
|
|
85
|
-
- **Self-compassion work** targets the shame spiral that often follows.
|
|
87
|
+
- **Self-compassion work** targets the shame spiral that often follows. In 377 autistic adults, a harsh, uncompassionate way of responding to oneself went with more depression, but self-compassion did not buffer the link between loneliness and depression (autistic adults), so it is one support among several, not a fix for loneliness. [supported, cross-sectional; Cai et al. 2026 (online 2025)]
|
|
86
88
|
- **Your own delivery matters:** lead with the substance, be direct, avoid ambiguous tone. Unrequested correction on ground the person already holds lands as rejection.
|
|
87
89
|
|
|
88
90
|
**What does not.**
|
|
@@ -133,7 +135,7 @@ Capacity varies by day and season. What was possible yesterday may not be possib
|
|
|
133
135
|
|
|
134
136
|
**What it is.** Suppressing or hiding neurodivergent traits to fit in: scripting conversations, forcing eye contact, suppressing movement, copying others, hiding difficulty. It is well documented in autism, and a replication of the standard autism-camouflaging method found most adults with ADHD reported it too (91.6% of 202), with the same exhaustion and recovery costs. Camouflaging contributes to late and missed diagnosis. [supported]
|
|
135
137
|
|
|
136
|
-
High camouflaging is associated with worse mental-health outcomes, including burnout. [supported; associations, not proven causes]
|
|
138
|
+
High camouflaging is associated with worse mental-health outcomes, including burnout. [supported; associations, not proven causes] A 2026 synthesis of 14 studies (qualitative data synthesised) describes camouflaging as an energy cost that can progress to burnout without time and space to recharge. [supported, qualitative synthesis; Osborne et al. 2026] Culture shapes it too: in 56 Latino autistic young adults recruited through a therapy programme, camouflaging was associated with more anxiety and depression, and acculturation stress and gender-role values were associated with how people camouflaged. [supported, small survey; Pagán et al. 2026 (online 2025)]
|
|
137
139
|
|
|
138
140
|
**How it shows up.**
|
|
139
141
|
- Appearing fine in public, collapsing at home.
|
|
@@ -144,7 +146,7 @@ High camouflaging is associated with worse mental-health outcomes, including bur
|
|
|
144
146
|
**What helps — the method.**
|
|
145
147
|
- **Read behaviour, hold stated positions loosely — within a limit.** Under heavy masking, what reaches the surface is not a reliable signal, and the person may not know what they believe or want beyond basic survival. When that is so, do not narrate their "real" feelings or beliefs back to them. Ask, wait, or stay with what is observable.
|
|
146
148
|
- **Make the conversation a place not to mask.** No demand for social performance; bluntness is fine; stims, tangents and info-dumps are welcome.
|
|
147
|
-
- **Unmasking is gradual and risk-weighted.** Where it is safe to unmask is the person's judgment.
|
|
149
|
+
- **Unmasking is gradual and risk-weighted.** Where it is safe to unmask is the person's judgment. Autistic people describe it as a balancing act: a way to manage energy, but also something burnout can force, with mixed outcomes. [supported, qualitative synthesis; Osborne et al. 2026]
|
|
148
150
|
|
|
149
151
|
**What does not.**
|
|
150
152
|
- "But you seem so normal."
|
|
@@ -170,7 +172,7 @@ Adults with ADHD describe a similar state, often after long periods of compensat
|
|
|
170
172
|
- **Treat returning capacity as evidence.** When a lost skill comes back, name it. The regression is a state, not an identity.
|
|
171
173
|
- **Recovery is not linear.** Setbacks are part of the cycle, not proof of failure.
|
|
172
174
|
- **Gentle re-engagement** — low-demand, people-adjacent activities — before full social return.
|
|
173
|
-
- A validated measure exists: the AASPIRE Autistic Burnout Measure
|
|
175
|
+
- A validated measure exists: in a 2026 study of 379 autistic adults, the AASPIRE Autistic Burnout Measure picked out people who said they were currently in autistic burnout better than a depression questionnaire did (PHQ-9; area under the curve 0.92 vs 0.78). It also correlated with depression and anxiety, so it does not on its own tell burnout from depression. [supported, psychometric study; Bougoure et al. 2026 (online 2025)]
|
|
174
176
|
|
|
175
177
|
**What does not.**
|
|
176
178
|
- **Push-through or behavioural-activation counsel** — "do more, get moving, schedule activities." This fits depression and can worsen burnout. Never offer it during burnout.
|
|
@@ -190,6 +192,8 @@ Adults with ADHD describe a similar state, often after long periods of compensat
|
|
|
190
192
|
- Offer choices rather than open questions: "More tired, or more wound up?"
|
|
191
193
|
- Accept "I don't know what I feel" as a complete answer.
|
|
192
194
|
- Frame body-work as the person's autonomy over their own body, never as fixing a deficit.
|
|
195
|
+
- **Measured interoception is less clear than often claimed.** A 2025 meta-analysis (31 studies) found no significant difference in heartbeat-detection accuracy between autistic and non-autistic adults across five comparable adult studies, and inconsistent results for other interoceptive measures. Do not assume a person's body signals are muted because they are autistic; ask. [supported, meta-analysis; Klein, Witthöft & Jungmann 2025]
|
|
196
|
+
- **Paced breathing with heart-rate feedback** is a practice some people use at home. A meta-analysis (2026, online 2025) of remote heart rate variability biofeedback (18 studies, 1,352 people, mixed populations, not autism-specific) found what the authors call a medium effect on depressive symptoms (g=-0.41, with high variation between studies, I²=73%) and an effect on HRV against controls, and no significant effect on stress; shorter daily practice (under 20 minutes) was linked to better results for HRV, stress and anxiety, not depression. Mention it as an option the person can explore, not as a treatment, and leave health decisions to them and their clinician. [supported, meta-analysis; Vann-Adibe et al. 2026 (online 2025)]
|
|
193
197
|
- Breath and attention practices are fine; the polyvagal theory often attached to them is contested in print (a 2026 critique and a published rebuttal). Use the practices; don't lean on the theory. [contested]
|
|
194
198
|
|
|
195
199
|
**What does not.**
|
|
@@ -200,6 +204,8 @@ Adults with ADHD describe a similar state, often after long periods of compensat
|
|
|
200
204
|
|
|
201
205
|
**What it is.** Many adults — especially women, but not only — are identified as autistic, ADHD, or both in their thirties, forties or later. A 2026 mixed-methods review (50 studies, 9,089 participants) found recurring prior misdiagnosis, clinician knowledge gaps on atypical presentations, and added barriers for gender-diverse and minority adults. Post-diagnostic support is thin: in a UK review, many autistic adults received none, and no service measured whether its support worked. [established for the barriers; supported for the support gap]
|
|
202
206
|
|
|
207
|
+
A 2026 review of 11 UK qualitative studies (206 late-diagnosed autistic adults) found many felt dismissed, misunderstood or harmed by mental-health services before and after diagnosis; what helped was autism-informed professionals and post-diagnostic support built on a sense of community and self-acceptance. The evidence is UK-only. [supported, qualitative synthesis; Comerford et al. 2026] A 2026 synthesis of 14 qualitative studies of autistic adults in middle-to-later life, limited to cognitively and verbally able adults, found marginalisation affecting identity, poor post-diagnostic support, ageist and ableist attitudes among professionals, and diagnosis experienced as both positive and negative. [supported, qualitative synthesis; Ferrie & Hafetz 2026]
|
|
208
|
+
|
|
203
209
|
**How it shows up.**
|
|
204
210
|
- **Grief** for lost decades, missed support, and what might have been different.
|
|
205
211
|
- **Re-narration:** re-reading one's whole history through the new lens.
|
|
@@ -212,6 +218,7 @@ Adults with ADHD describe a similar state, often after long periods of compensat
|
|
|
212
218
|
- Let grief and relief coexist.
|
|
213
219
|
- Help the person read their past through the new lens when they want to, without forcing reinterpretation.
|
|
214
220
|
- Language matters: early labels become frames. Use theirs.
|
|
221
|
+
- If they are looking for support, autism-informed professionals and a sense of community were what late-diagnosed adults in UK studies found helpful. [supported; Comerford et al. 2026] For people in midlife or later, it may be fair to ask a service how it works with older autistic adults. [suggestion, drawn from Ferrie & Hafetz 2026]
|
|
215
222
|
|
|
216
223
|
**What does not.**
|
|
217
224
|
- "Why does the label matter at your age?"
|
|
@@ -259,6 +266,8 @@ Adapted CBT — concrete, visual, interest-linked, with written processing and f
|
|
|
259
266
|
|
|
260
267
|
## Sources
|
|
261
268
|
|
|
269
|
+
Years are issue (print) years; where a paper appeared online in an earlier year, that is noted in brackets.
|
|
270
|
+
|
|
262
271
|
Autism and CBT: Nature Mental Health 2025 (routine-care outcomes, 7,175 autistic adults); Perez-Castilla et al. 2026, *Autism in Adulthood* (RCT meta-analysis); Linden et al. 2023, *Autism* (network meta-analysis); Wu et al. 2025, *Frontiers in Psychiatry* (network meta-analysis); Curnow et al. 2023, *PLOS ONE* (umbrella review); Weston, Hodgekins & Langdon 2016, *Clinical Psychology Review* (rated-by-whom meta-analysis).
|
|
263
272
|
|
|
264
273
|
Affirming practice: Delphi consensus, *Autism in Adulthood* 2025; Paynter, Sommer & Cook 2025, *Autism* (client-rated adaptations).
|
|
@@ -267,12 +276,12 @@ DBT: Bemmouna et al. 2025, *Psychotherapy and Psychosomatics* (RCT); Huntjens et
|
|
|
267
276
|
|
|
268
277
|
ACT and mindfulness: Pahnke et al. 2023, *Autism* (pilot RCT); Yao et al. 2024 (scoping review); Li, Mao & Zhang 2026, *Mindfulness* (meta-analysis); Oliva et al. 2021, *Journal of Affective Disorders* (meta-analysis).
|
|
269
278
|
|
|
270
|
-
EMDR, parts work, body-based: Sopena et al. 2023, *Journal of EMDR Practice and Research*; Lobregt-van Buuren et al. 2019, *JADD*; 2025 IFS scoping review, *Clinical Psychologist*; Grossman et al. 2026, *Clinical Neuropsychiatry*, and published rebuttal (polyvagal theory, contested); Palser et al. 2026, *Autism in Adulthood* (interoception).
|
|
279
|
+
EMDR, parts work, body-based: Sopena et al. 2023, *Journal of EMDR Practice and Research*; Lobregt-van Buuren et al. 2019, *JADD*; 2025 IFS scoping review, *Clinical Psychologist*; Grossman et al. 2026, *Clinical Neuropsychiatry*, and published rebuttal (polyvagal theory, contested); Palser et al. 2026, *Autism in Adulthood* (interoception); Klein, Witthöft & Jungmann 2025, *Frontiers in Psychiatry* (interoception meta-analysis), https://doi.org/10.3389/fpsyt.2025.1573263; Vann-Adibe et al. 2026 (online 2025), *Applied Psychophysiology and Biofeedback* 51(3) (remote HRV biofeedback meta-analysis), https://doi.org/10.1007/s10484-025-09750-w.
|
|
271
280
|
|
|
272
|
-
Rejection sensitivity: van Asselt, Reekers & Roke 2026, *Neurodiversity* (scoping review); van Asselt 2026, *Tijdschrift voor Psychiatrie*; Rowney-Smith, Sutton, Quadt & Eccles 2026, *PLOS One* (qualitative, n=5).
|
|
281
|
+
Rejection sensitivity: van Asselt, Reekers & Roke 2026, *Neurodiversity* 4 (scoping review), https://doi.org/10.1177/27546330261441753; Cai et al. 2026 (online 2025), *Autism Research* 19(2) (self-compassion validity), https://doi.org/10.1002/aur.70150; van Asselt 2026, *Tijdschrift voor Psychiatrie*; Rowney-Smith, Sutton, Quadt & Eccles 2026, *PLOS One* (qualitative, n=5).
|
|
273
282
|
|
|
274
|
-
Burnout: Raymaker et al. 2020, *Autism in Adulthood*; Ali et al. 2025, *Clinical Psychology Review* (systematic review); Bougoure et al. 2026, *Autism* (AASPIRE measure); Arnold et al. 2023, *Autism* (ABSI); Clarey et al. 2026, *Autism*; Ali, Mandy & Happé 2026, *Autism
|
|
283
|
+
Burnout: Raymaker et al. 2020, *Autism in Adulthood*; Ali et al. 2025, *Clinical Psychology Review* (systematic review); Bougoure et al. 2026 (online 2025), *Autism* (AASPIRE measure); Arnold et al. 2023, *Autism* (ABSI); Clarey et al. 2026, *Autism*; Ali, Mandy & Happé 2026, *Autism*; Osborne, Barker, Cole & Russell 2026, *Research in Neurodiversity* 2:100025 (camouflaging and burnout, qualitative synthesis), https://doi.org/10.1016/j.rin.2026.100025; Pagán, Loveland & Acierno 2026 (online 2025), *Autism* (Latino young adults), https://doi.org/10.1177/13623613251380340.
|
|
275
284
|
|
|
276
|
-
Late identification: Barnicot et al. 2026, *Journal of Developmental and Physical Disabilities* (systematic review); Norris, Harvey & Hull 2025, *Autism*; Ward, Randle-Phillips & Aldridge 2026, *JADD*; Adamou & Wharton 2026, *Frontiers in Psychiatry
|
|
285
|
+
Late identification: Barnicot et al. 2026, *Journal of Developmental and Physical Disabilities* (systematic review); Norris, Harvey & Hull 2025, *Autism*; Ward, Randle-Phillips & Aldridge 2026, *JADD*; Adamou & Wharton 2026, *Frontiers in Psychiatry*; Comerford, Hunt, Hanlon, Moore & Ashworth 2026, *Advances in Autism* (UK mental-health support review), https://doi.org/10.1108/AIA-02-2026-0016; Ferrie & Hafetz 2026, *Review Journal of Autism and Developmental Disorders* (middle-to-later life), https://doi.org/10.1007/s40489-026-00548-y.
|
|
277
286
|
|
|
278
287
|
Masking and AuDHD: Simon Fraser University replication of the Hull et al. 2017 camouflaging method in ADHD (202 adults); reviews and clinical syntheses on ADHD–autism co-occurrence, shared heritability and the combined profile; community and first-person accounts (ADHD Chatter interviews; reader testimony) tagged [lived experience].
|
package/guides/README.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
# Shipped guides
|
|
2
|
+
|
|
3
|
+
`guides/NEURODIVERGENT_SUPPORT.md` is a document id for one release, not a file in this folder. The text lives with the Neurendipity GEM at `gems/neurendipity/guides/NEURODIVERGENT_SUPPORT.md`. `read_doc` on the old id returns that copy. There is one copy of the guide.
|
package/package.json
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dreamforgestudiollc/emet",
|
|
3
|
-
"version": "0.2.
|
|
4
|
-
"description": "EMET — Enduring Memory & Epistemic Tiers. An MCP memory server with persistent shared memory for AI agents, bot teams and chats: layered memory, verified writes,
|
|
3
|
+
"version": "0.2.6",
|
|
4
|
+
"description": "EMET 0.2.6 — Enduring Memory & Epistemic Tiers. An MCP memory server with persistent shared memory for AI agents, bot teams and chats: layered memory, verified writes, a verbatim transcript tier, per-client attribution and approvals, and client-side GEM execution. EMET verifies the record, not the computation. A GEM is seated only when its released flag is true.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"agent-memory",
|
|
7
7
|
"ai-agents",
|
|
8
8
|
"ai-memory",
|
|
9
|
+
"attribution",
|
|
9
10
|
"claude",
|
|
11
|
+
"document-control",
|
|
12
|
+
"gem",
|
|
10
13
|
"grok",
|
|
11
14
|
"llm-memory",
|
|
12
15
|
"long-term-memory",
|
|
@@ -30,15 +33,17 @@
|
|
|
30
33
|
"emet": "src/index.js"
|
|
31
34
|
},
|
|
32
35
|
"engines": {
|
|
33
|
-
"node": ">=
|
|
36
|
+
"node": ">=22"
|
|
34
37
|
},
|
|
35
38
|
"publishConfig": {
|
|
36
39
|
"access": "public"
|
|
37
40
|
},
|
|
38
41
|
"files": [
|
|
39
42
|
"src/",
|
|
43
|
+
"verification/",
|
|
40
44
|
"templates/",
|
|
41
45
|
"guides/",
|
|
46
|
+
"gems/",
|
|
42
47
|
"docs/*.md",
|
|
43
48
|
"CHARTER.md",
|
|
44
49
|
"CHANGELOG.md",
|
|
@@ -63,8 +68,9 @@
|
|
|
63
68
|
},
|
|
64
69
|
"dependencies": {
|
|
65
70
|
"@modelcontextprotocol/sdk": "^1.32.1",
|
|
66
|
-
"
|
|
67
|
-
"express": "^5.2.1"
|
|
71
|
+
"acorn": "8.19.0",
|
|
72
|
+
"express": "^5.2.1",
|
|
73
|
+
"mongodb": "^7.1.0"
|
|
68
74
|
},
|
|
69
75
|
"overrides": {
|
|
70
76
|
"proxy-addr": "^2.0.8"
|
package/server.json
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
|
|
3
3
|
"name": "io.github.dreamforgestudiollc/emet",
|
|
4
4
|
"title": "EMET",
|
|
5
|
-
"description": "
|
|
6
|
-
"version": "0.2.
|
|
5
|
+
"description": "0.2.6. Free MIT; no account, key, or payment. Verifies the record, not the computation.",
|
|
6
|
+
"version": "0.2.6",
|
|
7
7
|
"websiteUrl": "https://dreamforgestudiollc.github.io/EMET/",
|
|
8
8
|
"repository": {
|
|
9
9
|
"url": "https://github.com/dreamforgestudiollc/EMET",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"registryType": "npm",
|
|
23
23
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
24
24
|
"identifier": "@dreamforgestudiollc/emet",
|
|
25
|
-
"version": "0.2.
|
|
25
|
+
"version": "0.2.6",
|
|
26
26
|
"transport": {
|
|
27
27
|
"type": "stdio"
|
|
28
28
|
},
|
|
@@ -35,5 +35,45 @@
|
|
|
35
35
|
}
|
|
36
36
|
]
|
|
37
37
|
}
|
|
38
|
-
]
|
|
38
|
+
],
|
|
39
|
+
"_meta": {
|
|
40
|
+
"io.modelcontextprotocol.registry/publisher-provided": {
|
|
41
|
+
"tools": [
|
|
42
|
+
"accept_nonconformance",
|
|
43
|
+
"corpus_recall",
|
|
44
|
+
"emet_client_approve",
|
|
45
|
+
"emet_floor",
|
|
46
|
+
"emet_gaps",
|
|
47
|
+
"emet_initialize",
|
|
48
|
+
"emet_invite_create",
|
|
49
|
+
"emet_member_access_create",
|
|
50
|
+
"emet_session_close",
|
|
51
|
+
"emet_session_open",
|
|
52
|
+
"emet_setup_complete",
|
|
53
|
+
"emet_status",
|
|
54
|
+
"emet_subkey_claim",
|
|
55
|
+
"emet_subkey_end_session",
|
|
56
|
+
"emet_subkey_request",
|
|
57
|
+
"emet_subkey_revoke",
|
|
58
|
+
"emet_transcript_append",
|
|
59
|
+
"list_docs",
|
|
60
|
+
"patch_doc",
|
|
61
|
+
"query_layer",
|
|
62
|
+
"query_transcripts",
|
|
63
|
+
"read_doc",
|
|
64
|
+
"read_doc_history",
|
|
65
|
+
"recall",
|
|
66
|
+
"rename_doc",
|
|
67
|
+
"restore_doc",
|
|
68
|
+
"retire_doc",
|
|
69
|
+
"revise_memory",
|
|
70
|
+
"revise_transcript",
|
|
71
|
+
"save_to_layer",
|
|
72
|
+
"save_transcript",
|
|
73
|
+
"semantic_recall",
|
|
74
|
+
"validate_doc",
|
|
75
|
+
"write_doc"
|
|
76
|
+
]
|
|
77
|
+
}
|
|
78
|
+
}
|
|
39
79
|
}
|
package/src/aleph.js
CHANGED
|
@@ -126,7 +126,7 @@ export function verifyLayerEntry(readBack, expected) {
|
|
|
126
126
|
? readBack.content
|
|
127
127
|
: readBack.event);
|
|
128
128
|
|
|
129
|
-
// If the row carries its own sha256 column (written from 2026-09-05),
|
|
129
|
+
// If the row carries its own sha256 column (EMET ref 12, written from 2026-09-05),
|
|
130
130
|
// it must agree with the content it sits beside. Rows written before the column
|
|
131
131
|
// existed carry none and are judged on content alone - absence is not a failure,
|
|
132
132
|
// but a PRESENT digest that disagrees is: the row is internally inconsistent.
|
|
@@ -197,7 +197,7 @@ export function verifyLayerEntry(readBack, expected) {
|
|
|
197
197
|
* Canonical JSON: keys sorted at every depth, no whitespace, so the same
|
|
198
198
|
* metadata produces the same bytes whatever order it was assembled in or
|
|
199
199
|
* returned in. undefined values and functions are dropped as JSON.stringify
|
|
200
|
-
* would drop them; a legacy metadata STRING (
|
|
200
|
+
* would drop them; a legacy metadata STRING (pre-EMET ref 6) is parsed first so
|
|
201
201
|
* both stored shapes digest identically.
|
|
202
202
|
*/
|
|
203
203
|
export function canonicalJson(value) {
|
|
@@ -238,7 +238,7 @@ export function metadataIntegrityOf(row) {
|
|
|
238
238
|
* Integrity of a stored layer row at READ time (work list E2, 2026-09-07).
|
|
239
239
|
*
|
|
240
240
|
* verifyLayerEntry above runs once, at the write. The sha256 column it stores
|
|
241
|
-
* makes a second check possible every time the row is read, so a
|
|
241
|
+
* (EMET ref 12) makes a second check possible every time the row is read, so a
|
|
242
242
|
* row altered after its write - by a migration, a hand edit, a bug - is
|
|
243
243
|
* flagged where it is used rather than discovered by accident. One hash per
|
|
244
244
|
* row; the cost is small and the alternative is trusting a receipt from the
|
|
@@ -344,7 +344,7 @@ export function signatureIntegrityOf(row, key) {
|
|
|
344
344
|
|
|
345
345
|
/**
|
|
346
346
|
* May a row be RE-SIGNED after one of the sanctioned metadata marks? (2026-10-02,
|
|
347
|
-
* the
|
|
347
|
+
* the tester's finding: the marks re-attested metadata_sha256 but left the
|
|
348
348
|
* signature over the old metadata digest, so every superseded or corrected
|
|
349
349
|
* row read signed:false.)
|
|
350
350
|
*
|
package/src/annotations.js
CHANGED
|
@@ -53,7 +53,11 @@ const READ = { readOnlyHint: true, destructiveHint: false, idempotentHint: true,
|
|
|
53
53
|
const ADD = { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false };
|
|
54
54
|
const REPLACE = { readOnlyHint: false, destructiveHint: true, idempotentHint: false, openWorldHint: false };
|
|
55
55
|
|
|
56
|
-
|
|
56
|
+
const SUBKEY_ANNOTATION_NAMES = new Set([
|
|
57
|
+
'emet_subkey_request', 'emet_subkey_claim', 'emet_subkey_revoke', 'emet_subkey_end_session'
|
|
58
|
+
]);
|
|
59
|
+
|
|
60
|
+
const ANNOTATION_TABLE = {
|
|
57
61
|
// --- Reads. Nothing in this group can change the store. -------------------
|
|
58
62
|
emet_initialize: { title: 'Start session', readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
59
63
|
recall: { title: 'Search memory', ...READ },
|
|
@@ -72,9 +76,14 @@ export const TOOL_ANNOTATIONS = Object.freeze({
|
|
|
72
76
|
|
|
73
77
|
// --- Additive writes. These add; they do not remove or replace. -----------
|
|
74
78
|
// Was READ until 2026-09-27: "it does not write anything itself". Since the
|
|
75
|
-
// blocked-close cap
|
|
79
|
+
// blocked-close cap (commit-82bb76c) it records each blocked attempt in
|
|
76
80
|
// close_attempts, so a read-only hint would be untrue (code audit, 1.3).
|
|
77
81
|
emet_session_close: { title: 'Check session is saved', ...ADD },
|
|
82
|
+
emet_client_approve: { title: 'Approve a new client', ...REPLACE },
|
|
83
|
+
emet_subkey_request: { title: 'Request a client sub-key', ...ADD },
|
|
84
|
+
emet_subkey_claim: { title: 'Claim a client sub-key', ...ADD },
|
|
85
|
+
emet_subkey_revoke: { title: 'Revoke a client sub-key', ...REPLACE },
|
|
86
|
+
emet_subkey_end_session: { title: 'End a sub-key session', ...ADD },
|
|
78
87
|
emet_invite_create: { title: 'EMET Guest Access', ...REPLACE },
|
|
79
88
|
emet_member_access_create: { title: 'EMET Member Access', ...REPLACE },
|
|
80
89
|
save_to_layer: { title: 'Save to a memory layer', ...ADD },
|
|
@@ -109,8 +118,34 @@ export const TOOL_ANNOTATIONS = Object.freeze({
|
|
|
109
118
|
// probe document and removes it again, so it is not declared read-only -
|
|
110
119
|
// a health check that only reads cannot detect a broken write path.
|
|
111
120
|
// Replaced emet_setup_status, get_status and emet_verify_connection on
|
|
112
|
-
// 2026-09-27 (
|
|
121
|
+
// 2026-09-27 (Alex: consolidate overlapping tools). -----------------------
|
|
113
122
|
emet_status: { title: 'Store status and write-path probe', readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false }
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
function subkeyAnnotationsHidden() {
|
|
126
|
+
return process.env.EMET_SUBKEYS !== '1' && process.env.CASCADE_SUBKEYS !== '1';
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* The four sub-key annotations are visible only when EMET_SUBKEYS=1, so a
|
|
131
|
+
* flag-off process has the same annotation set as before those tools existed.
|
|
132
|
+
*/
|
|
133
|
+
export const TOOL_ANNOTATIONS = new Proxy(ANNOTATION_TABLE, {
|
|
134
|
+
get(target, prop, receiver) {
|
|
135
|
+
if (typeof prop === 'string' && SUBKEY_ANNOTATION_NAMES.has(prop) && subkeyAnnotationsHidden()) return undefined;
|
|
136
|
+
return Reflect.get(target, prop, receiver);
|
|
137
|
+
},
|
|
138
|
+
has(target, prop) {
|
|
139
|
+
if (typeof prop === 'string' && SUBKEY_ANNOTATION_NAMES.has(prop) && subkeyAnnotationsHidden()) return false;
|
|
140
|
+
return Reflect.has(target, prop);
|
|
141
|
+
},
|
|
142
|
+
ownKeys(target) {
|
|
143
|
+
return Reflect.ownKeys(target).filter((k) => !(typeof k === 'string' && SUBKEY_ANNOTATION_NAMES.has(k) && subkeyAnnotationsHidden()));
|
|
144
|
+
},
|
|
145
|
+
getOwnPropertyDescriptor(target, prop) {
|
|
146
|
+
if (typeof prop === 'string' && SUBKEY_ANNOTATION_NAMES.has(prop) && subkeyAnnotationsHidden()) return undefined;
|
|
147
|
+
return Reflect.getOwnPropertyDescriptor(target, prop);
|
|
148
|
+
}
|
|
114
149
|
});
|
|
115
150
|
|
|
116
151
|
/**
|
package/src/atlas-role.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* EMET - the least-privilege MongoDB Atlas role for the server's own login
|
|
3
|
-
* (2026-09-29; security audit question 9).
|
|
3
|
+
* (2026-09-29; security audit question 9, staging/emet-security-audit.md).
|
|
4
4
|
*
|
|
5
5
|
* The record is retained, never deleted (the owner's rule, 2026-09-08). Until
|
|
6
6
|
* this role existed that rule lived only in the code: the server's login held
|