Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion content/capabilities/terraphim-editor.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ The editor runs as WebAssembly in your browser. Editing with the bundled graph d

## See actual saved outputs

[Watch the captioned editor and terraphim-grep walkthroughs](/how-tos/knowledge-work-editor/): Chrome, Safari, Firefox and the existing Zed extension, followed by search with the same shared KG, with and without synthesis. Each video identifies its recorded scope; the current browser build includes the later Unicode normalization repair.
[Watch the narrated and captioned editor and terraphim-grep walkthroughs](/how-tos/knowledge-work-editor/): Chrome, Safari, Firefox and the existing Zed extension, followed by search with the same shared KG, with and without synthesis. Each video identifies its recorded scope; the current browser build includes the later Unicode normalization repair.

This is a preview. Complete acceptance against all 41 source-video requirements remains open, including Safari dragging and some visual/native cases. The existing Zed extension demonstrates its supported capabilities; the separate Zed fork is outside this publication.

Expand Down
4 changes: 2 additions & 2 deletions content/how-tos/knowledge-work-editor.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ Keep alternatives attached to words, sentences and paragraphs. Ghost a passage w

## Grammarly for knowledge work

Follow a public project brief from editing to search using the same knowledge graph. The 77-second captioned overview shows the browser editor, explicitly hands off to the clean file exported from Safari, then compares real `terraphim-grep` executions with and without `--answer`.
Follow a public project brief from editing to search using the same knowledge graph. The 77-second narrated and captioned overview shows the browser editor, explicitly hands off to the clean file exported from Safari, then compares real `terraphim-grep` executions with and without `--answer`.

<video controls preload="metadata" playsinline style="width:100%;max-width:960px" aria-label="Editor and terraphim-grep overview"><source src="/demos/knowledge-work/grammarly-for-knowledge-work-preview.mp4" type="video/mp4">[Download the overview](/demos/knowledge-work/grammarly-for-knowledge-work-preview.mp4)</video>

Expand All @@ -24,7 +24,7 @@ Follow a public project brief from editing to search using the same knowledge gr

The browser recordings produced identical saved annotated files. A separately checked Safari clean-export file supplies the grep corpus; the Safari walkthrough does not show that export gesture. Newly authored Assessment registers as a document-scoped synonym; it does not update the shared KG used by the CLI. Zed demonstrates existing extension capabilities; the Zed fork is separate. The brief's Trim preview produced zero cuts, so this recording does not demonstrate text reduction. The generated synthesis overstates a review policy as observed practice; compare that statement with the returned evidence rather than treating it as verified fact.

All six videos now have explanatory on-screen captions. Idle intervals are cut, actions are accelerated by 1.5–3× where disclosed, and the long terminal end hold is removed. Captions sit outside the application image. Safari setup is cut and the Zed avatar remains masked. Chronological source ranges and speed changes are recorded in the manifest; original captures are retained. These are finite walkthroughs, not complete acceptance of all 41 requirements. [Build identities, media hashes and edit disclosures](/demos/knowledge-work/manifest.json) identify the recorded candidate. The current editor preview includes the Unicode normalization repair: canonically equivalent accents, Terraphim Unicode lowercase and Greek sigma equivalence protect exact original spellings during Trim. The videos retain their earlier recorded build identity; they do not demonstrate this later repair.
All six videos include British female **Emma** narration, generated locally with Kokoro, alongside the explanatory on-screen captions. Speech stays at its natural pace; the original video image streams are preserved. [Read the narration and timing record](/demos/knowledge-work/narration.json). Idle intervals are cut, actions are accelerated by 1.5–3× where disclosed, and the long terminal end hold is removed. Captions sit outside the application image. Safari setup is cut and the Zed avatar remains masked. Chronological source ranges and speed changes are recorded in the manifest; original captures are retained. These are finite walkthroughs, not complete acceptance of all 41 requirements. [Build identities, media hashes and edit disclosures](/demos/knowledge-work/manifest.json) identify the recorded candidate. The current editor preview includes the Unicode normalization repair: canonically equivalent accents, Terraphim Unicode lowercase and Greek sigma equivalence protect exact original spellings during Trim. The videos retain their earlier recorded build identity; they do not demonstrate this later repair.

This is a preview. The complete source-video requirements are still being qualified; Safari dragging and some visual/native cases remain unresolved. Keyboard pull from Overflow is available. The browser demo does not imply full custom visual parity in the stock Zed extension.

Expand Down
2 changes: 2 additions & 0 deletions docs/editor-publication.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,5 @@ The recorded browser candidate remains `e2ee3ff9f6133cd67cd15533109c8020c20a0cdf
Unicode repair verification:110 native library tests, six original protection tests, eight Unicode regressions, strict native/WASM Clippy, real Chrome Trim reduction, Done ghosts, exact annotated save/reopen and undo/redo. Existing Terraphim normalized term and matcher types are reused; NFC and original grapheme boundary mapping are added. Greek sigma variants are equivalent; general full case folding and Straße/STRASSE transliteration are not claimed. Exact original spelling is retained.

The paced-v2 media edition adds burned-in explanatory text outside the app image and replaces idle-heavy walkthroughs with disclosed chronological cuts and1.5–3× speed changes. Overview77s, Chrome44s, Firefox49s, Safari45s, Zed60s, grep21s. Original footage, source identity and qualification limits remain unchanged. The manifest records every retained source range and output caption interval.

The narrated-v3 edition adds locally generated British female Emma (`bf_emma`, Kokoro v1.0) speech to all six MP4s. The compressed video streams match paced-v2 exactly. Natural speech timing, fixed per-take gain, script ASR checks (mean0.9942, minimum0.9091) and full video/audio decoding pass. No audio tempo/pitch changes, substituted application output or changed recorded source identity. Public narration.json records words, scene timing, take hashes and quality bounds. This does not expand the finite walkthroughs into all41 acceptance.
34 changes: 33 additions & 1 deletion scripts/test_publication_media.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ class PublicationMediaTests(unittest.TestCase):
def test_published_bytes_match_reviewed_inventory(self):
manifest = json.loads((MEDIA / 'manifest.json').read_text())
self.assertEqual(len(manifest['media']), 6)
expected = {'manifest.json'}
expected = {'manifest.json', 'narration.json'}
for entry in manifest['media']:
self.assertTrue(entry['publicDelivery'])
expected.add(entry['file'])
Expand All @@ -21,6 +21,38 @@ def test_published_bytes_match_reviewed_inventory(self):
self.assertEqual(len(data), int(entry['probe']['format']['size']))
self.assertEqual({p.name for p in MEDIA.iterdir()}, expected)

def test_all_six_demos_have_synchronized_british_narration(self):
manifest = json.loads((MEDIA / 'manifest.json').read_text())
narration = manifest['narration']
self.assertEqual(narration['voiceId'], 'bf_emma')
self.assertEqual(narration['language'], 'en-gb')
self.assertTrue(narration['syntheticVoice'])
raw_script = (MEDIA / narration['script']).read_bytes()
self.assertEqual(hashlib.sha256(raw_script).hexdigest(), narration['scriptSha256'])
script = json.loads(raw_script)
self.assertEqual(script['quality']['status'], 'PASS')
self.assertGreaterEqual(script['quality']['normalizedMean'], 0.97)
self.assertGreaterEqual(script['quality']['normalizedMinimum'], 0.90)
videos = {e['file']: e for e in manifest['media']}
self.assertEqual({e['file'] for e in script['videos']}, set(videos))
for output in narration['outputs']:
self.assertTrue(output['videoBitstreamUnchanged'])
self.assertTrue(output['noTempoOrPitchChanges'])
self.assertLessEqual(output['peakDbfs'], -3)
for video in script['videos']:
entry = videos[video['file']]
audio = [s for s in entry['probe']['streams'] if s['codec_type'] == 'audio']
self.assertEqual(len(audio), 1)
self.assertEqual(audio[0]['codec_name'], 'aac')
duration = float(entry['probe']['format']['duration'])
previous_end = 0
for beat in video['beats']:
self.assertTrue(beat['fits'])
self.assertGreaterEqual(beat['audioStart'], previous_end)
self.assertLessEqual(beat['audioEnd'], min(beat['end'], duration))
self.assertAlmostEqual(beat['audioEnd'] - beat['audioStart'], beat['take']['duration'], delta=0.000002)
previous_end = beat['audioEnd']

def test_unavailable_windows_download_is_not_advertised(self):
for name in ['themes/WarpDrive/templates/index.html', 'themes/WarpDrive/static/js/site.js', 'content/docs/installation.md']:
self.assertNotIn('x86_64-pc-windows-msvc.zip', (ROOT / name).read_text())
Expand Down
Binary file modified static/demos/knowledge-work/chrome-online-editor.mp4
Binary file not shown.
Binary file modified static/demos/knowledge-work/firefox-online-editor.mp4
Binary file not shown.
Binary file not shown.
Binary file modified static/demos/knowledge-work/grep-live-execution-public.mp4
Binary file not shown.
136 changes: 122 additions & 14 deletions static/demos/knowledge-work/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"media": [
{
"file": "chrome-online-editor.mp4",
"sha256": "92a48e3bd2b79b46475bf1e318cad46335708bf2ed6654f1f928c4cb78f11de4",
"sha256": "acb5e852e642de4fdf44d8928d8039e70c2294810d4e54a4dbc10fbdfd9aae5c",
"probe": {
"programs": [],
"stream_groups": [],
Expand All @@ -17,19 +17,25 @@
"codec_type": "video",
"width": 1440,
"height": 1080
},
{
"codec_name": "aac",
"codec_type": "audio",
"sample_rate": "16000",
"channels": 1
}
],
"format": {
"duration": "44.433333",
"size": "579757"
"size": "794182"
}
},
"scope": "finite actual-output demo; full all41 acceptance remains unproved",
"publicDelivery": true
},
{
"file": "firefox-online-editor.mp4",
"sha256": "87a137e39bba5bd0bae681a3304a9406fcf8d17d25e56918c49fcb2413307aea",
"sha256": "d971e5ef2fc359c79c6144e29fe29067b1a41a4243a3dc130b763469e6cb4017",
"probe": {
"programs": [],
"stream_groups": [],
Expand All @@ -39,19 +45,25 @@
"codec_type": "video",
"width": 1440,
"height": 1080
},
{
"codec_name": "aac",
"codec_type": "audio",
"sample_rate": "16000",
"channels": 1
}
],
"format": {
"duration": "49.033333",
"size": "850757"
"size": "1042412"
}
},
"scope": "finite actual-output demo; full all41 acceptance remains unproved",
"publicDelivery": true
},
{
"file": "safari-online-editor-public.mp4",
"sha256": "57fc4c0104750e4b2aed9879caac92c5d7d54ec9c7f457fde3d34d32a7d8006f",
"sha256": "8f28aaa6fff183f6de04da0f4c0abd7bd499c86f5a8abf767771528b47970540",
"probe": {
"programs": [],
"stream_groups": [],
Expand All @@ -61,19 +73,25 @@
"codec_type": "video",
"width": 1440,
"height": 1080
},
{
"codec_name": "aac",
"codec_type": "audio",
"sample_rate": "16000",
"channels": 1
}
],
"format": {
"duration": "44.600000",
"size": "807106"
"size": "994385"
}
},
"scope": "finite actual-output demo; full all41 acceptance remains unproved",
"publicDelivery": true
},
{
"file": "zed-existing-extension-public.mp4",
"sha256": "96ced61ac72f4dca0de8f1377e7ff70d408ecfad134c4bafdfb636ae435e6512",
"sha256": "b1fa8efd1163bdbbac3df57e681bcaf0c7820af4f4dd46d3fb7d864f73ee1dd0",
"probe": {
"programs": [],
"stream_groups": [],
Expand All @@ -83,19 +101,25 @@
"codec_type": "video",
"width": 1440,
"height": 1080
},
{
"codec_name": "aac",
"codec_type": "audio",
"sample_rate": "16000",
"channels": 1
}
],
"format": {
"duration": "59.733333",
"size": "931049"
"size": "1194725"
}
},
"scope": "finite actual-output demo; full all41 acceptance remains unproved",
"publicDelivery": true
},
{
"file": "grep-live-execution-public.mp4",
"sha256": "4393d99c486a81951a669e6a509f8006e6b169717246ffc6c727b67b01f58549",
"sha256": "823b68d238393b8c7770b269314cd1450c171881c44830b1f09db244435d2985",
"probe": {
"programs": [],
"stream_groups": [],
Expand All @@ -105,19 +129,25 @@
"codec_type": "video",
"width": 1440,
"height": 1080
},
{
"codec_name": "aac",
"codec_type": "audio",
"sample_rate": "16000",
"channels": 1
}
],
"format": {
"duration": "21.000000",
"size": "595159"
"size": "721828"
}
},
"scope": "Actual captured terminal subprocesses on Safari clean export; same KG/chunks, only --answer changes. External synthesis is interpretive; policy is not proof of practice.",
"publicDelivery": true
},
{
"file": "grammarly-for-knowledge-work-preview.mp4",
"sha256": "d383d61011ea3895872b79745aa9bccbe0ef4023fb7d9e03412206d70c21802f",
"sha256": "62070e7f73319580ceac46001192483d308f94284f2cbf7a6631f4ddc69f6a1f",
"probe": {
"programs": [],
"stream_groups": [],
Expand All @@ -127,19 +157,25 @@
"codec_type": "video",
"width": 1440,
"height": 1080
},
{
"codec_name": "aac",
"codec_type": "audio",
"sample_rate": "16000",
"channels": 1
}
],
"format": {
"duration": "77.433333",
"size": "1260456"
"size": "1687908"
}
},
"scope": "Chrome online editor, explicit Safari clean-export handoff, actual grep comparison. Candidate preview; not full 41 acceptance or production deployment.",
"publicDelivery": true
}
],
"coverageDisclaimer": "These four refreshed captures do not replace the original all41 ledger; no acceptance row promoted.",
"edition": "paced-v2: burned-in explanatory text, original raw captures retained",
"edition": "paced-v2 / narrated-v3: British female Emma narration, original video bitstreams preserved",
"priorEdits": [
{
"input": "safari-online-editor.mp4",
Expand Down Expand Up @@ -421,5 +457,77 @@
"outro 4s"
]
}
]
],
"narration": {
"voice": "Emma",
"voiceId": "bf_emma",
"language": "en-gb",
"engine": "Kokoro v1.0 ONNX",
"syntheticVoice": true,
"processing": "fixed per-take gain and scheduled silence only; no tempo/pitch changes",
"script": "narration.json",
"outputs": [
{
"file": "chrome-online-editor.mp4",
"videoBitstreamSha256": "SHA256=a04a15c051bed06e0cbeb2904a6a6e1ae9edb80e07117e454306e36e0af773a3",
"videoBitstreamUnchanged": true,
"narrationWavSha256": "b851c256a62d66c3d876341e2c4f87fc252104a1808b49c048e3baa396800bce",
"audioDuration": 44.4333125,
"fixedGainOnly": true,
"noTempoOrPitchChanges": true,
"peakDbfs": -3.81337915925506
},
{
"file": "firefox-online-editor.mp4",
"videoBitstreamSha256": "SHA256=566fcc7bf31742286a849c35f79eb91c3ff2b0b3baa13c4a2f042481dcdf58e7",
"videoBitstreamUnchanged": true,
"narrationWavSha256": "01c633468d81ac427fb99a2ccede25aaae6d7d5dc7b69dd8ceef7432d86d1c65",
"audioDuration": 49.0333125,
"fixedGainOnly": true,
"noTempoOrPitchChanges": true,
"peakDbfs": -6.069365083187769
},
{
"file": "safari-online-editor-public.mp4",
"videoBitstreamSha256": "SHA256=f840cd8dbc6cca40b37abcb69d4249b874a5c3530a0da00d18b93d4e35495c7b",
"videoBitstreamUnchanged": true,
"narrationWavSha256": "84a24f20accdf96052863d111846f3834b6ab56159c42d6005c68d646b3e9d89",
"audioDuration": 44.6,
"fixedGainOnly": true,
"noTempoOrPitchChanges": true,
"peakDbfs": -4.123910538110745
},
{
"file": "zed-existing-extension-public.mp4",
"videoBitstreamSha256": "SHA256=3ae61c8a3d132656b793042698b93af2022acc92997485ca53a9d4528c6d17dd",
"videoBitstreamUnchanged": true,
"narrationWavSha256": "0ac8f0159d88e876e21141a7a34269a6034c69564ca61ef3d3a862e7619f1ad3",
"audioDuration": 59.7333125,
"fixedGainOnly": true,
"noTempoOrPitchChanges": true,
"peakDbfs": -3.9357742326822764
},
{
"file": "grep-live-execution-public.mp4",
"videoBitstreamSha256": "SHA256=64c6f830aa210be69d37f435d3e11a0ff3e61c858756d35af6d4052dc51ee53e",
"videoBitstreamUnchanged": true,
"narrationWavSha256": "4dd1967bf44e34fccaba979cb09ab004fb115b121c5ac1bebe80d617a3d0e9f9",
"audioDuration": 21.0,
"fixedGainOnly": true,
"noTempoOrPitchChanges": true,
"peakDbfs": -5.318855404652813
},
{
"file": "grammarly-for-knowledge-work-preview.mp4",
"videoBitstreamSha256": "SHA256=84d00af2d9f328ec793cf32034c45e4c6745b3017e20f7520acefde2604c359b",
"videoBitstreamUnchanged": true,
"narrationWavSha256": "be72dd52339b1de191c9db44f0cdeca0ad02c5238813dc9d4b5401d1441a9352",
"audioDuration": 77.4333125,
"fixedGainOnly": true,
"noTempoOrPitchChanges": true,
"peakDbfs": -3.81337915925506
}
],
"scriptSha256": "2d1aa86738df56ac8f730400dec3838368259f4a08bb3c06c8409e1bcc822133"
}
}
Loading
Loading