Add local external strategy comparison v0.2.1
Browse files- README.md +5 -1
- app.js +4 -0
- index.html +2 -1
README.md
CHANGED
|
@@ -8,7 +8,7 @@ app_file: index.html
|
|
| 8 |
pinned: false
|
| 9 |
---
|
| 10 |
|
| 11 |
-
# Mnemosyne Memory Lab
|
| 12 |
|
| 13 |
Compare how memory architectures handle changing beliefs, stale procedures,
|
| 14 |
duplicated evidence, privacy boundaries, and historical reconstruction.
|
|
@@ -25,3 +25,7 @@ Dataset: https://huggingface.co/datasets/solsticestudioai/mnemosyne-memory-lifec
|
|
| 25 |
Collection: https://huggingface.co/collections/solsticestudioai/solstice-agent-reliability-lab
|
| 26 |
Methodology and validity: https://huggingface.co/datasets/solsticestudioai/mnemosyne-memory-lifecycle-benchmark/tree/main/docs
|
| 27 |
Validity summary: https://huggingface.co/datasets/solsticestudioai/mnemosyne-memory-lifecycle-benchmark/blob/main/reports/benchmark-validity-summary.md
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 8 |
pinned: false
|
| 9 |
---
|
| 10 |
|
| 11 |
+
# Mnemosyne Memory Lab v0.2.1
|
| 12 |
|
| 13 |
Compare how memory architectures handle changing beliefs, stale procedures,
|
| 14 |
duplicated evidence, privacy boundaries, and historical reconstruction.
|
|
|
|
| 25 |
Collection: https://huggingface.co/collections/solsticestudioai/solstice-agent-reliability-lab
|
| 26 |
Methodology and validity: https://huggingface.co/datasets/solsticestudioai/mnemosyne-memory-lifecycle-benchmark/tree/main/docs
|
| 27 |
Validity summary: https://huggingface.co/datasets/solsticestudioai/mnemosyne-memory-lifecycle-benchmark/blob/main/reports/benchmark-validity-summary.md
|
| 28 |
+
|
| 29 |
+
Tooling v0.2.1 adds a provider-neutral external strategy protocol. Load a local
|
| 30 |
+
result bundle with “Compare your memory system”; no hosted memory upload is
|
| 31 |
+
performed.
|
app.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
| 2 |
const scenarios=window.MNEMOSYNE_SCENARIOS;
|
| 3 |
const scenarioEl=document.querySelector('#scenario');
|
| 4 |
const strategyEl=document.querySelector('#strategy');
|
|
|
|
| 5 |
for(const s of scenarios){const o=document.createElement('option');o.value=s.scenario_id;o.textContent=s.title;scenarioEl.append(o)}
|
| 6 |
for(const s of MnemosyneCore.strategies){const o=document.createElement('option');o.value=s;o.textContent=s;strategyEl.append(o)}
|
| 7 |
scenarioEl.value='mnemo-belief_revision-01';
|
|
@@ -13,6 +14,8 @@
|
|
| 13 |
document.querySelector('#timeline').innerHTML=s.observations.map(o=>`<div class="event"><b>${o.observation_id}</b> · ${o.timestamp}<br>${o.content}<br><span class="muted">authority ${o.authority} · evidence family ${o.evidence_family_id}</span></div>`).join('');
|
| 14 |
document.querySelector('#output').innerHTML=`<p><b>${r.strategy}</b></p><p>Current answer: ${r.current||'none'}</p><p>Active records: ${r.records.filter(x=>x.status==='active').length} · Superseded: ${r.superseded.length}</p><p>Evidence families counted: ${r.evidence.join(', ')}</p>`;
|
| 15 |
document.querySelector('#comparison').innerHTML='<table><tr><th>Strategy</th><th>Current answer</th><th>Superseded</th></tr>'+MnemosyneCore.strategies.map(x=>{const q=MnemosyneCore.run(x,s);return `<tr><td>${x}</td><td>${q.current||'none'}</td><td>${q.superseded.length}</td></tr>`}).join('')+'</table>';
|
|
|
|
|
|
|
| 16 |
}
|
| 17 |
document.querySelector('#download').onclick=()=>{
|
| 18 |
const s=scenarios.find(x=>x.scenario_id===scenarioEl.value)||scenarios[0];
|
|
@@ -22,5 +25,6 @@
|
|
| 22 |
document.querySelector('#demo').onclick=()=>{scenarioEl.value='mnemo-belief_revision-01';strategyEl.value='typed_lifecycle_lineage';render()};
|
| 23 |
scenarioEl.onchange=render; strategyEl.onchange=render;
|
| 24 |
document.querySelector('#file').onchange=e=>{const f=e.target.files[0];if(!f)return;const reader=new FileReader();reader.onload=()=>{try{const data=JSON.parse(reader.result);if(data.scenario_id){scenarios.push(data);scenarioEl.value=data.scenario_id;render()}}catch{alert('Invalid local scenario')}};reader.readAsText(f)};
|
|
|
|
| 25 |
render();
|
| 26 |
})();
|
|
|
|
| 2 |
const scenarios=window.MNEMOSYNE_SCENARIOS;
|
| 3 |
const scenarioEl=document.querySelector('#scenario');
|
| 4 |
const strategyEl=document.querySelector('#strategy');
|
| 5 |
+
let externalResult=null;
|
| 6 |
for(const s of scenarios){const o=document.createElement('option');o.value=s.scenario_id;o.textContent=s.title;scenarioEl.append(o)}
|
| 7 |
for(const s of MnemosyneCore.strategies){const o=document.createElement('option');o.value=s;o.textContent=s;strategyEl.append(o)}
|
| 8 |
scenarioEl.value='mnemo-belief_revision-01';
|
|
|
|
| 14 |
document.querySelector('#timeline').innerHTML=s.observations.map(o=>`<div class="event"><b>${o.observation_id}</b> · ${o.timestamp}<br>${o.content}<br><span class="muted">authority ${o.authority} · evidence family ${o.evidence_family_id}</span></div>`).join('');
|
| 15 |
document.querySelector('#output').innerHTML=`<p><b>${r.strategy}</b></p><p>Current answer: ${r.current||'none'}</p><p>Active records: ${r.records.filter(x=>x.status==='active').length} · Superseded: ${r.superseded.length}</p><p>Evidence families counted: ${r.evidence.join(', ')}</p>`;
|
| 16 |
document.querySelector('#comparison').innerHTML='<table><tr><th>Strategy</th><th>Current answer</th><th>Superseded</th></tr>'+MnemosyneCore.strategies.map(x=>{const q=MnemosyneCore.run(x,s);return `<tr><td>${x}</td><td>${q.current||'none'}</td><td>${q.superseded.length}</td></tr>`}).join('')+'</table>';
|
| 17 |
+
document.querySelector('#external').innerHTML=externalResult ? `<b>External strategy: ${externalResult.strategy_manifest?.display_name||externalResult.strategy?.display_name||'manual_unverified'}</b><p class="muted">${externalResult.tooling_version?'Bundle validated locally.':'manual_unverified result.'} Benchmark: ${externalResult.benchmark_version||'unknown'} · Fixture: ${externalResult.fixture_hash||'unknown'}</p><p>Current metric: ${externalResult.aggregate_metrics?.current_belief_accuracy ?? 'not_applicable'} · Historical: ${externalResult.aggregate_metrics?.historical_reconstruction_accuracy ?? 'not_applicable'}</p><button id="remove-external">Remove external result</button>` : '<b>External strategy</b><p class="muted">No external result loaded. Bundles are validated and compared locally; nothing is uploaded or persisted.</p>';
|
| 18 |
+
const remove=document.querySelector('#remove-external'); if(remove) remove.onclick=()=>{externalResult=null; render()};
|
| 19 |
}
|
| 20 |
document.querySelector('#download').onclick=()=>{
|
| 21 |
const s=scenarios.find(x=>x.scenario_id===scenarioEl.value)||scenarios[0];
|
|
|
|
| 25 |
document.querySelector('#demo').onclick=()=>{scenarioEl.value='mnemo-belief_revision-01';strategyEl.value='typed_lifecycle_lineage';render()};
|
| 26 |
scenarioEl.onchange=render; strategyEl.onchange=render;
|
| 27 |
document.querySelector('#file').onchange=e=>{const f=e.target.files[0];if(!f)return;const reader=new FileReader();reader.onload=()=>{try{const data=JSON.parse(reader.result);if(data.scenario_id){scenarios.push(data);scenarioEl.value=data.scenario_id;render()}}catch{alert('Invalid local scenario')}};reader.readAsText(f)};
|
| 28 |
+
document.querySelector('#external-file').onchange=e=>{const f=e.target.files[0];if(!f)return;const reader=new FileReader();reader.onload=()=>{try{const data=JSON.parse(reader.result);const valid=(data.bundle_version==='mnemosyne-external-strategy-bundle/v1'&&data.benchmark_version==='v0.2.0'&&Array.isArray(data.scenario_level_outcomes))||(data.format_version==='mnemosyne-manual-result/v1'&&Array.isArray(data.results));if(!valid)throw new Error('invalid external result');externalResult=data;render()}catch{alert('Invalid external result bundle')}};reader.readAsText(f)};
|
| 29 |
render();
|
| 30 |
})();
|
index.html
CHANGED
|
@@ -1,8 +1,9 @@
|
|
| 1 |
<!doctype html>
|
| 2 |
<html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Mnemosyne Memory Lab</title><link rel="stylesheet" href="styles.css"></head>
|
| 3 |
<body><main><header><p class="kicker">SOLSTICE AGENT RELIABILITY LAB</p><h1>Mnemosyne Memory Lab</h1><p>Compare how memory architectures handle changing beliefs, stale procedures, duplicated evidence, privacy boundaries, and historical reconstruction.</p><p class="notice">40 deterministic synthetic scenarios · 5 strategies · browser-local processing</p></header>
|
| 4 |
-
<section class="controls"><button id="demo">Run the changed-preference demo</button><button id="download">Download result</button><label>Scenario <select id="scenario"></select></label><label>Strategy <select id="strategy"></select></label><input id="file" type="file" accept=".json,.jsonl"></section>
|
| 5 |
<section id="summary" class="panel"></section><section id="validity" class="panel"></section>
|
|
|
|
| 6 |
<section class="grid"><article class="panel"><h2>Observation timeline</h2><div id="timeline"></div></article><article class="panel"><h2>Strategy output</h2><div id="output"></div></article></section>
|
| 7 |
<section class="panel"><h2>Five-strategy comparison</h2><div id="comparison"></div></section><footer>All records are synthetic. This visualization does not claim real-world memory accuracy, complete erasure, or production privacy.</footer></main>
|
| 8 |
<script src="memory-core.js"></script><script src="benchmark-data.js"></script><script src="app.js"></script></body></html>
|
|
|
|
| 1 |
<!doctype html>
|
| 2 |
<html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Mnemosyne Memory Lab</title><link rel="stylesheet" href="styles.css"></head>
|
| 3 |
<body><main><header><p class="kicker">SOLSTICE AGENT RELIABILITY LAB</p><h1>Mnemosyne Memory Lab</h1><p>Compare how memory architectures handle changing beliefs, stale procedures, duplicated evidence, privacy boundaries, and historical reconstruction.</p><p class="notice">40 deterministic synthetic scenarios · 5 strategies · browser-local processing</p></header>
|
| 4 |
+
<section class="controls"><button id="demo">Run the changed-preference demo</button><button id="download">Download result</button><label>Scenario <select id="scenario"></select></label><label>Strategy <select id="strategy"></select></label><label>Local scenario <input id="file" type="file" accept=".json,.jsonl"></label><label>Compare your memory system <input id="external-file" type="file" accept=".json"></label></section>
|
| 5 |
<section id="summary" class="panel"></section><section id="validity" class="panel"></section>
|
| 6 |
+
<section id="external" class="panel"><b>External strategy</b><p class="muted">No external result loaded. Bundles are validated and compared locally; nothing is uploaded or persisted.</p></section>
|
| 7 |
<section class="grid"><article class="panel"><h2>Observation timeline</h2><div id="timeline"></div></article><article class="panel"><h2>Strategy output</h2><div id="output"></div></article></section>
|
| 8 |
<section class="panel"><h2>Five-strategy comparison</h2><div id="comparison"></div></section><footer>All records are synthetic. This visualization does not claim real-world memory accuracy, complete erasure, or production privacy.</footer></main>
|
| 9 |
<script src="memory-core.js"></script><script src="benchmark-data.js"></script><script src="app.js"></script></body></html>
|