test(core): pin the shared validation corpus to every envelope value domain - #2315

Merged
Astro-Han merged 3 commits into
mainfrom
test/core-envelope-value-domains
Aug 6, 2026
Merged

test(core): pin the shared validation corpus to every envelope value domain#2315
Astro-Han merged 3 commits into
mainfrom
test/core-envelope-value-domains

Conversation

@Astro-Han

Copy link
Copy Markdown
Contributor

Summary

#2314 fixed a drift that made every one of an 89-cell benchmark run's Maka trajectories export as a one-line summary: the Harbor exporter re-implements the RuntimeEvent envelope check in Python and had never learned origin or modelVisibility. It closed that class of drift at the key level — the shared validation corpus is now held to runtimeEventEnvelopeKeys(), so a key added to the interface cannot ship without a corpus case, and a corpus case the Python side rejects turns the exporter's silence into a red test.

The same drift is still open one level down. Python spells the closed value domains out again ({"provider", "code_mode"}, {"visible", "hidden"}, the status set), so a member added on the TypeScript side that no corpus case carries leaves the two disagreeing about what is valid with nothing red — and every event carrying that member degrades to a summary exactly as an unknown key did.

Two changes, and the first is what makes the second possible:

  • status already derived its type from RUNTIME_EVENT_STATUSES. origin and modelVisibility were inline unions that the decoder compared against by hand, which left their domains unenumerable: a chain of !== is invisible to anything asking what a field may hold. They now have the same shape as status, and the decoder reads the constants through a shared isOptionalMember in record-schema.ts rather than repeating their members.
  • runtimeEventEnvelopeValueDomains() exports those three domains, and a new test requires an accepted corpus case for every member. branch is free text and has nothing to enumerate, so it does not appear.

The corpus gains the four status members it never carried (streaming, failed, aborted, cancelled) — only completed was ever exercised.

Refs #2314.

Verification

Both halves of the chain proved by reverting, not by reading:

  • Red, TypeScript side: added 'harness' to RUNTIME_EVENT_ORIGINS without touching the corpus → no corpus case carries origin: harness.
  • Red, Python side: narrowed the exporter's modelVisibility set to {"hidden"} → the headless corpus round-trip fails on valid-visible-model-visibility with runtime_event_schema_invalid — the exact degradation fix(headless): teach the trajectory exporter the two envelope fields it never learned #2314 was about, now caught by a test instead of by a benchmark run.
  • Green: @maka/core 799 pass / 0 fail, @maka/headless 1431 pass / 0 fail (includes the Python corpus round-trip), @maka/runtime 3293 pass / 0 fail. npm run lint and npm run format clean.

Not run: desktop E2E and Storybook — this touches no renderer surface.

Review focus

The value-domain test is only as strong as the corpus round-trip it feeds: it guarantees a case exists, and the Python side is what turns that case into a cross-language assertion. It does not reach nested shapes (content, actions, refs), whose domains are still pinned only by the cases someone thought to write.

…domain
Pinning the corpus to the envelope key list closed one half of the drift
that made an 89-cell benchmark run export a one-line summary per cell: a
key nobody wrote a case for. The other half was still open — a value
nobody wrote a case for. The Harbor exporter spells `origin`,
`modelVisibility` and `status` out again in Python, so a member added on
this side that no corpus case carries leaves the two disagreeing about
what is valid with nothing red.
`status` already derived its type from a runtime constant; `origin` and
`modelVisibility` were inline unions the decoder compared against by
hand, which made their domains unenumerable — a chain of `!==` is
invisible to anything asking what a field may hold. Give them the same
shape as `status`, have the decoder read the constant through a shared
`isOptionalMember`, and hold the corpus to what those constants contain.
The corpus gains the four `status` members it never carried.
`role` and `author` are closed envelope domains that the Python exporter
spells out too, so leaving them out of the map made the invariant false
where it was stated: three of five domains were pinned.
The holes were real, not hypothetical. The corpus never carried `role`
or `author` as `tool` or `system`, and events with `role: tool` are among
the most common a run emits — narrowing the exporter's role set to drop
it degrades a real event stream to a summary, and nothing was red.
@Astro-Han
Astro-Han marked this pull request as ready for review August 6, 2026 07:11
@Astro-Han
Astro-Han merged commit 3391a00 into mainAug 6, 2026
12 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@Astro-Han
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

test(core): pin the shared validation corpus to every envelope value domain - #2315

Merged
Astro-Han merged 3 commits into
mainfrom
test/core-envelope-value-domains
Aug 6, 2026
Merged

test(core): pin the shared validation corpus to every envelope value domain#2315
Astro-Han merged 3 commits into
mainfrom
test/core-envelope-value-domains

Conversation

@Astro-Han

Copy link
Copy Markdown
Contributor

Summary

#2314 fixed a drift that made every one of an 89-cell benchmark run's Maka trajectories export as a one-line summary: the Harbor exporter re-implements the RuntimeEvent envelope check in Python and had never learned origin or modelVisibility. It closed that class of drift at the key level — the shared validation corpus is now held to runtimeEventEnvelopeKeys(), so a key added to the interface cannot ship without a corpus case, and a corpus case the Python side rejects turns the exporter's silence into a red test.

The same drift is still open one level down. Python spells the closed value domains out again ({"provider", "code_mode"}, {"visible", "hidden"}, the status set), so a member added on the TypeScript side that no corpus case carries leaves the two disagreeing about what is valid with nothing red — and every event carrying that member degrades to a summary exactly as an unknown key did.

Two changes, and the first is what makes the second possible:

  • status already derived its type from RUNTIME_EVENT_STATUSES. origin and modelVisibility were inline unions that the decoder compared against by hand, which left their domains unenumerable: a chain of !== is invisible to anything asking what a field may hold. They now have the same shape as status, and the decoder reads the constants through a shared isOptionalMember in record-schema.ts rather than repeating their members.
  • runtimeEventEnvelopeValueDomains() exports those three domains, and a new test requires an accepted corpus case for every member. branch is free text and has nothing to enumerate, so it does not appear.

The corpus gains the four status members it never carried (streaming, failed, aborted, cancelled) — only completed was ever exercised.

Refs #2314.

Verification

Both halves of the chain proved by reverting, not by reading:

  • Red, TypeScript side: added 'harness' to RUNTIME_EVENT_ORIGINS without touching the corpus → no corpus case carries origin: harness.
  • Red, Python side: narrowed the exporter's modelVisibility set to {"hidden"} → the headless corpus round-trip fails on valid-visible-model-visibility with runtime_event_schema_invalid — the exact degradation fix(headless): teach the trajectory exporter the two envelope fields it never learned #2314 was about, now caught by a test instead of by a benchmark run.
  • Green: @maka/core 799 pass / 0 fail, @maka/headless 1431 pass / 0 fail (includes the Python corpus round-trip), @maka/runtime 3293 pass / 0 fail. npm run lint and npm run format clean.

Not run: desktop E2E and Storybook — this touches no renderer surface.

Review focus

The value-domain test is only as strong as the corpus round-trip it feeds: it guarantees a case exists, and the Python side is what turns that case into a cross-language assertion. It does not reach nested shapes (content, actions, refs), whose domains are still pinned only by the cases someone thought to write.

…domain
Pinning the corpus to the envelope key list closed one half of the drift
that made an 89-cell benchmark run export a one-line summary per cell: a
key nobody wrote a case for. The other half was still open — a value
nobody wrote a case for. The Harbor exporter spells `origin`,
`modelVisibility` and `status` out again in Python, so a member added on
this side that no corpus case carries leaves the two disagreeing about
what is valid with nothing red.
`status` already derived its type from a runtime constant; `origin` and
`modelVisibility` were inline unions the decoder compared against by
hand, which made their domains unenumerable — a chain of `!==` is
invisible to anything asking what a field may hold. Give them the same
shape as `status`, have the decoder read the constant through a shared
`isOptionalMember`, and hold the corpus to what those constants contain.
The corpus gains the four `status` members it never carried.
`role` and `author` are closed envelope domains that the Python exporter
spells out too, so leaving them out of the map made the invariant false
where it was stated: three of five domains were pinned.
The holes were real, not hypothetical. The corpus never carried `role`
or `author` as `tool` or `system`, and events with `role: tool` are among
the most common a run emits — narrowing the exporter's role set to drop
it degrades a real event stream to a summary, and nothing was red.
@Astro-Han
Astro-Han marked this pull request as ready for review August 6, 2026 07:11
@Astro-Han
Astro-Han merged commit 3391a00 into mainAug 6, 2026
12 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@Astro-Han
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

test(core): pin the shared validation corpus to every envelope value domain - #2315

Merged
Astro-Han merged 3 commits into
mainfrom
test/core-envelope-value-domains
Aug 6, 2026
Merged

test(core): pin the shared validation corpus to every envelope value domain#2315
Astro-Han merged 3 commits into
mainfrom
test/core-envelope-value-domains

Conversation

@Astro-Han

Copy link
Copy Markdown
Contributor

Summary

#2314 fixed a drift that made every one of an 89-cell benchmark run's Maka trajectories export as a one-line summary: the Harbor exporter re-implements the RuntimeEvent envelope check in Python and had never learned origin or modelVisibility. It closed that class of drift at the key level — the shared validation corpus is now held to runtimeEventEnvelopeKeys(), so a key added to the interface cannot ship without a corpus case, and a corpus case the Python side rejects turns the exporter's silence into a red test.

The same drift is still open one level down. Python spells the closed value domains out again ({"provider", "code_mode"}, {"visible", "hidden"}, the status set), so a member added on the TypeScript side that no corpus case carries leaves the two disagreeing about what is valid with nothing red — and every event carrying that member degrades to a summary exactly as an unknown key did.

Two changes, and the first is what makes the second possible:

  • status already derived its type from RUNTIME_EVENT_STATUSES. origin and modelVisibility were inline unions that the decoder compared against by hand, which left their domains unenumerable: a chain of !== is invisible to anything asking what a field may hold. They now have the same shape as status, and the decoder reads the constants through a shared isOptionalMember in record-schema.ts rather than repeating their members.
  • runtimeEventEnvelopeValueDomains() exports those three domains, and a new test requires an accepted corpus case for every member. branch is free text and has nothing to enumerate, so it does not appear.

The corpus gains the four status members it never carried (streaming, failed, aborted, cancelled) — only completed was ever exercised.

Refs #2314.

Verification

Both halves of the chain proved by reverting, not by reading:

  • Red, TypeScript side: added 'harness' to RUNTIME_EVENT_ORIGINS without touching the corpus → no corpus case carries origin: harness.
  • Red, Python side: narrowed the exporter's modelVisibility set to {"hidden"} → the headless corpus round-trip fails on valid-visible-model-visibility with runtime_event_schema_invalid — the exact degradation fix(headless): teach the trajectory exporter the two envelope fields it never learned #2314 was about, now caught by a test instead of by a benchmark run.
  • Green: @maka/core 799 pass / 0 fail, @maka/headless 1431 pass / 0 fail (includes the Python corpus round-trip), @maka/runtime 3293 pass / 0 fail. npm run lint and npm run format clean.

Not run: desktop E2E and Storybook — this touches no renderer surface.

Review focus

The value-domain test is only as strong as the corpus round-trip it feeds: it guarantees a case exists, and the Python side is what turns that case into a cross-language assertion. It does not reach nested shapes (content, actions, refs), whose domains are still pinned only by the cases someone thought to write.

…domain
Pinning the corpus to the envelope key list closed one half of the drift
that made an 89-cell benchmark run export a one-line summary per cell: a
key nobody wrote a case for. The other half was still open — a value
nobody wrote a case for. The Harbor exporter spells `origin`,
`modelVisibility` and `status` out again in Python, so a member added on
this side that no corpus case carries leaves the two disagreeing about
what is valid with nothing red.
`status` already derived its type from a runtime constant; `origin` and
`modelVisibility` were inline unions the decoder compared against by
hand, which made their domains unenumerable — a chain of `!==` is
invisible to anything asking what a field may hold. Give them the same
shape as `status`, have the decoder read the constant through a shared
`isOptionalMember`, and hold the corpus to what those constants contain.
The corpus gains the four `status` members it never carried.
`role` and `author` are closed envelope domains that the Python exporter
spells out too, so leaving them out of the map made the invariant false
where it was stated: three of five domains were pinned.
The holes were real, not hypothetical. The corpus never carried `role`
or `author` as `tool` or `system`, and events with `role: tool` are among
the most common a run emits — narrowing the exporter's role set to drop
it degrades a real event stream to a summary, and nothing was red.
@Astro-Han
Astro-Han marked this pull request as ready for review August 6, 2026 07:11
@Astro-Han
Astro-Han merged commit 3391a00 into mainAug 6, 2026
12 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@Astro-Han
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

test(core): pin the shared validation corpus to every envelope value domain - #2315

Merged
Astro-Han merged 3 commits into
mainfrom
test/core-envelope-value-domains
Aug 6, 2026
Merged

test(core): pin the shared validation corpus to every envelope value domain#2315
Astro-Han merged 3 commits into
mainfrom
test/core-envelope-value-domains

Conversation

@Astro-Han

Copy link
Copy Markdown
Contributor

Summary

#2314 fixed a drift that made every one of an 89-cell benchmark run's Maka trajectories export as a one-line summary: the Harbor exporter re-implements the RuntimeEvent envelope check in Python and had never learned origin or modelVisibility. It closed that class of drift at the key level — the shared validation corpus is now held to runtimeEventEnvelopeKeys(), so a key added to the interface cannot ship without a corpus case, and a corpus case the Python side rejects turns the exporter's silence into a red test.

The same drift is still open one level down. Python spells the closed value domains out again ({"provider", "code_mode"}, {"visible", "hidden"}, the status set), so a member added on the TypeScript side that no corpus case carries leaves the two disagreeing about what is valid with nothing red — and every event carrying that member degrades to a summary exactly as an unknown key did.

Two changes, and the first is what makes the second possible:

  • status already derived its type from RUNTIME_EVENT_STATUSES. origin and modelVisibility were inline unions that the decoder compared against by hand, which left their domains unenumerable: a chain of !== is invisible to anything asking what a field may hold. They now have the same shape as status, and the decoder reads the constants through a shared isOptionalMember in record-schema.ts rather than repeating their members.
  • runtimeEventEnvelopeValueDomains() exports those three domains, and a new test requires an accepted corpus case for every member. branch is free text and has nothing to enumerate, so it does not appear.

The corpus gains the four status members it never carried (streaming, failed, aborted, cancelled) — only completed was ever exercised.

Refs #2314.

Verification

Both halves of the chain proved by reverting, not by reading:

  • Red, TypeScript side: added 'harness' to RUNTIME_EVENT_ORIGINS without touching the corpus → no corpus case carries origin: harness.
  • Red, Python side: narrowed the exporter's modelVisibility set to {"hidden"} → the headless corpus round-trip fails on valid-visible-model-visibility with runtime_event_schema_invalid — the exact degradation fix(headless): teach the trajectory exporter the two envelope fields it never learned #2314 was about, now caught by a test instead of by a benchmark run.
  • Green: @maka/core 799 pass / 0 fail, @maka/headless 1431 pass / 0 fail (includes the Python corpus round-trip), @maka/runtime 3293 pass / 0 fail. npm run lint and npm run format clean.

Not run: desktop E2E and Storybook — this touches no renderer surface.

Review focus

The value-domain test is only as strong as the corpus round-trip it feeds: it guarantees a case exists, and the Python side is what turns that case into a cross-language assertion. It does not reach nested shapes (content, actions, refs), whose domains are still pinned only by the cases someone thought to write.

…domain
Pinning the corpus to the envelope key list closed one half of the drift
that made an 89-cell benchmark run export a one-line summary per cell: a
key nobody wrote a case for. The other half was still open — a value
nobody wrote a case for. The Harbor exporter spells `origin`,
`modelVisibility` and `status` out again in Python, so a member added on
this side that no corpus case carries leaves the two disagreeing about
what is valid with nothing red.
`status` already derived its type from a runtime constant; `origin` and
`modelVisibility` were inline unions the decoder compared against by
hand, which made their domains unenumerable — a chain of `!==` is
invisible to anything asking what a field may hold. Give them the same
shape as `status`, have the decoder read the constant through a shared
`isOptionalMember`, and hold the corpus to what those constants contain.
The corpus gains the four `status` members it never carried.
`role` and `author` are closed envelope domains that the Python exporter
spells out too, so leaving them out of the map made the invariant false
where it was stated: three of five domains were pinned.
The holes were real, not hypothetical. The corpus never carried `role`
or `author` as `tool` or `system`, and events with `role: tool` are among
the most common a run emits — narrowing the exporter's role set to drop
it degrades a real event stream to a summary, and nothing was red.
@Astro-Han
Astro-Han marked this pull request as ready for review August 6, 2026 07:11
@Astro-Han
Astro-Han merged commit 3391a00 into mainAug 6, 2026
12 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@Astro-Han
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

test(core): pin the shared validation corpus to every envelope value domain - #2315

Merged
Astro-Han merged 3 commits into
mainfrom
test/core-envelope-value-domains
Aug 6, 2026
Merged

test(core): pin the shared validation corpus to every envelope value domain#2315
Astro-Han merged 3 commits into
mainfrom
test/core-envelope-value-domains

Conversation

@Astro-Han

Copy link
Copy Markdown
Contributor

Summary

#2314 fixed a drift that made every one of an 89-cell benchmark run's Maka trajectories export as a one-line summary: the Harbor exporter re-implements the RuntimeEvent envelope check in Python and had never learned origin or modelVisibility. It closed that class of drift at the key level — the shared validation corpus is now held to runtimeEventEnvelopeKeys(), so a key added to the interface cannot ship without a corpus case, and a corpus case the Python side rejects turns the exporter's silence into a red test.

The same drift is still open one level down. Python spells the closed value domains out again ({"provider", "code_mode"}, {"visible", "hidden"}, the status set), so a member added on the TypeScript side that no corpus case carries leaves the two disagreeing about what is valid with nothing red — and every event carrying that member degrades to a summary exactly as an unknown key did.

Two changes, and the first is what makes the second possible:

  • status already derived its type from RUNTIME_EVENT_STATUSES. origin and modelVisibility were inline unions that the decoder compared against by hand, which left their domains unenumerable: a chain of !== is invisible to anything asking what a field may hold. They now have the same shape as status, and the decoder reads the constants through a shared isOptionalMember in record-schema.ts rather than repeating their members.
  • runtimeEventEnvelopeValueDomains() exports those three domains, and a new test requires an accepted corpus case for every member. branch is free text and has nothing to enumerate, so it does not appear.

The corpus gains the four status members it never carried (streaming, failed, aborted, cancelled) — only completed was ever exercised.

Refs #2314.

Verification

Both halves of the chain proved by reverting, not by reading:

  • Red, TypeScript side: added 'harness' to RUNTIME_EVENT_ORIGINS without touching the corpus → no corpus case carries origin: harness.
  • Red, Python side: narrowed the exporter's modelVisibility set to {"hidden"} → the headless corpus round-trip fails on valid-visible-model-visibility with runtime_event_schema_invalid — the exact degradation fix(headless): teach the trajectory exporter the two envelope fields it never learned #2314 was about, now caught by a test instead of by a benchmark run.
  • Green: @maka/core 799 pass / 0 fail, @maka/headless 1431 pass / 0 fail (includes the Python corpus round-trip), @maka/runtime 3293 pass / 0 fail. npm run lint and npm run format clean.

Not run: desktop E2E and Storybook — this touches no renderer surface.

Review focus

The value-domain test is only as strong as the corpus round-trip it feeds: it guarantees a case exists, and the Python side is what turns that case into a cross-language assertion. It does not reach nested shapes (content, actions, refs), whose domains are still pinned only by the cases someone thought to write.

…domain
Pinning the corpus to the envelope key list closed one half of the drift
that made an 89-cell benchmark run export a one-line summary per cell: a
key nobody wrote a case for. The other half was still open — a value
nobody wrote a case for. The Harbor exporter spells `origin`,
`modelVisibility` and `status` out again in Python, so a member added on
this side that no corpus case carries leaves the two disagreeing about
what is valid with nothing red.
`status` already derived its type from a runtime constant; `origin` and
`modelVisibility` were inline unions the decoder compared against by
hand, which made their domains unenumerable — a chain of `!==` is
invisible to anything asking what a field may hold. Give them the same
shape as `status`, have the decoder read the constant through a shared
`isOptionalMember`, and hold the corpus to what those constants contain.
The corpus gains the four `status` members it never carried.
`role` and `author` are closed envelope domains that the Python exporter
spells out too, so leaving them out of the map made the invariant false
where it was stated: three of five domains were pinned.
The holes were real, not hypothetical. The corpus never carried `role`
or `author` as `tool` or `system`, and events with `role: tool` are among
the most common a run emits — narrowing the exporter's role set to drop
it degrades a real event stream to a summary, and nothing was red.
@Astro-Han
Astro-Han marked this pull request as ready for review August 6, 2026 07:11
@Astro-Han
Astro-Han merged commit 3391a00 into mainAug 6, 2026
12 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@Astro-Han
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

test(core): pin the shared validation corpus to every envelope value domain - #2315

Merged
Astro-Han merged 3 commits into
mainfrom
test/core-envelope-value-domains
Aug 6, 2026
Merged

test(core): pin the shared validation corpus to every envelope value domain#2315
Astro-Han merged 3 commits into
mainfrom
test/core-envelope-value-domains

Conversation

@Astro-Han

Copy link
Copy Markdown
Contributor

Summary

#2314 fixed a drift that made every one of an 89-cell benchmark run's Maka trajectories export as a one-line summary: the Harbor exporter re-implements the RuntimeEvent envelope check in Python and had never learned origin or modelVisibility. It closed that class of drift at the key level — the shared validation corpus is now held to runtimeEventEnvelopeKeys(), so a key added to the interface cannot ship without a corpus case, and a corpus case the Python side rejects turns the exporter's silence into a red test.

The same drift is still open one level down. Python spells the closed value domains out again ({"provider", "code_mode"}, {"visible", "hidden"}, the status set), so a member added on the TypeScript side that no corpus case carries leaves the two disagreeing about what is valid with nothing red — and every event carrying that member degrades to a summary exactly as an unknown key did.

Two changes, and the first is what makes the second possible:

  • status already derived its type from RUNTIME_EVENT_STATUSES. origin and modelVisibility were inline unions that the decoder compared against by hand, which left their domains unenumerable: a chain of !== is invisible to anything asking what a field may hold. They now have the same shape as status, and the decoder reads the constants through a shared isOptionalMember in record-schema.ts rather than repeating their members.
  • runtimeEventEnvelopeValueDomains() exports those three domains, and a new test requires an accepted corpus case for every member. branch is free text and has nothing to enumerate, so it does not appear.

The corpus gains the four status members it never carried (streaming, failed, aborted, cancelled) — only completed was ever exercised.

Refs #2314.

Verification

Both halves of the chain proved by reverting, not by reading:

  • Red, TypeScript side: added 'harness' to RUNTIME_EVENT_ORIGINS without touching the corpus → no corpus case carries origin: harness.
  • Red, Python side: narrowed the exporter's modelVisibility set to {"hidden"} → the headless corpus round-trip fails on valid-visible-model-visibility with runtime_event_schema_invalid — the exact degradation fix(headless): teach the trajectory exporter the two envelope fields it never learned #2314 was about, now caught by a test instead of by a benchmark run.
  • Green: @maka/core 799 pass / 0 fail, @maka/headless 1431 pass / 0 fail (includes the Python corpus round-trip), @maka/runtime 3293 pass / 0 fail. npm run lint and npm run format clean.

Not run: desktop E2E and Storybook — this touches no renderer surface.

Review focus

The value-domain test is only as strong as the corpus round-trip it feeds: it guarantees a case exists, and the Python side is what turns that case into a cross-language assertion. It does not reach nested shapes (content, actions, refs), whose domains are still pinned only by the cases someone thought to write.

…domain
Pinning the corpus to the envelope key list closed one half of the drift
that made an 89-cell benchmark run export a one-line summary per cell: a
key nobody wrote a case for. The other half was still open — a value
nobody wrote a case for. The Harbor exporter spells `origin`,
`modelVisibility` and `status` out again in Python, so a member added on
this side that no corpus case carries leaves the two disagreeing about
what is valid with nothing red.
`status` already derived its type from a runtime constant; `origin` and
`modelVisibility` were inline unions the decoder compared against by
hand, which made their domains unenumerable — a chain of `!==` is
invisible to anything asking what a field may hold. Give them the same
shape as `status`, have the decoder read the constant through a shared
`isOptionalMember`, and hold the corpus to what those constants contain.
The corpus gains the four `status` members it never carried.
`role` and `author` are closed envelope domains that the Python exporter
spells out too, so leaving them out of the map made the invariant false
where it was stated: three of five domains were pinned.
The holes were real, not hypothetical. The corpus never carried `role`
or `author` as `tool` or `system`, and events with `role: tool` are among
the most common a run emits — narrowing the exporter's role set to drop
it degrades a real event stream to a summary, and nothing was red.
@Astro-Han
Astro-Han marked this pull request as ready for review August 6, 2026 07:11
@Astro-Han
Astro-Han merged commit 3391a00 into mainAug 6, 2026
12 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@Astro-Han
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

test(core): pin the shared validation corpus to every envelope value domain - #2315

Merged
Astro-Han merged 3 commits into
mainfrom
test/core-envelope-value-domains
Aug 6, 2026
Merged

test(core): pin the shared validation corpus to every envelope value domain#2315
Astro-Han merged 3 commits into
mainfrom
test/core-envelope-value-domains

Conversation

@Astro-Han

Copy link
Copy Markdown
Contributor

Summary

#2314 fixed a drift that made every one of an 89-cell benchmark run's Maka trajectories export as a one-line summary: the Harbor exporter re-implements the RuntimeEvent envelope check in Python and had never learned origin or modelVisibility. It closed that class of drift at the key level — the shared validation corpus is now held to runtimeEventEnvelopeKeys(), so a key added to the interface cannot ship without a corpus case, and a corpus case the Python side rejects turns the exporter's silence into a red test.

The same drift is still open one level down. Python spells the closed value domains out again ({"provider", "code_mode"}, {"visible", "hidden"}, the status set), so a member added on the TypeScript side that no corpus case carries leaves the two disagreeing about what is valid with nothing red — and every event carrying that member degrades to a summary exactly as an unknown key did.

Two changes, and the first is what makes the second possible:

  • status already derived its type from RUNTIME_EVENT_STATUSES. origin and modelVisibility were inline unions that the decoder compared against by hand, which left their domains unenumerable: a chain of !== is invisible to anything asking what a field may hold. They now have the same shape as status, and the decoder reads the constants through a shared isOptionalMember in record-schema.ts rather than repeating their members.
  • runtimeEventEnvelopeValueDomains() exports those three domains, and a new test requires an accepted corpus case for every member. branch is free text and has nothing to enumerate, so it does not appear.

The corpus gains the four status members it never carried (streaming, failed, aborted, cancelled) — only completed was ever exercised.

Refs #2314.

Verification

Both halves of the chain proved by reverting, not by reading:

  • Red, TypeScript side: added 'harness' to RUNTIME_EVENT_ORIGINS without touching the corpus → no corpus case carries origin: harness.
  • Red, Python side: narrowed the exporter's modelVisibility set to {"hidden"} → the headless corpus round-trip fails on valid-visible-model-visibility with runtime_event_schema_invalid — the exact degradation fix(headless): teach the trajectory exporter the two envelope fields it never learned #2314 was about, now caught by a test instead of by a benchmark run.
  • Green: @maka/core 799 pass / 0 fail, @maka/headless 1431 pass / 0 fail (includes the Python corpus round-trip), @maka/runtime 3293 pass / 0 fail. npm run lint and npm run format clean.

Not run: desktop E2E and Storybook — this touches no renderer surface.

Review focus

The value-domain test is only as strong as the corpus round-trip it feeds: it guarantees a case exists, and the Python side is what turns that case into a cross-language assertion. It does not reach nested shapes (content, actions, refs), whose domains are still pinned only by the cases someone thought to write.

…domain
Pinning the corpus to the envelope key list closed one half of the drift
that made an 89-cell benchmark run export a one-line summary per cell: a
key nobody wrote a case for. The other half was still open — a value
nobody wrote a case for. The Harbor exporter spells `origin`,
`modelVisibility` and `status` out again in Python, so a member added on
this side that no corpus case carries leaves the two disagreeing about
what is valid with nothing red.
`status` already derived its type from a runtime constant; `origin` and
`modelVisibility` were inline unions the decoder compared against by
hand, which made their domains unenumerable — a chain of `!==` is
invisible to anything asking what a field may hold. Give them the same
shape as `status`, have the decoder read the constant through a shared
`isOptionalMember`, and hold the corpus to what those constants contain.
The corpus gains the four `status` members it never carried.
`role` and `author` are closed envelope domains that the Python exporter
spells out too, so leaving them out of the map made the invariant false
where it was stated: three of five domains were pinned.
The holes were real, not hypothetical. The corpus never carried `role`
or `author` as `tool` or `system`, and events with `role: tool` are among
the most common a run emits — narrowing the exporter's role set to drop
it degrades a real event stream to a summary, and nothing was red.
@Astro-Han
Astro-Han marked this pull request as ready for review August 6, 2026 07:11
@Astro-Han
Astro-Han merged commit 3391a00 into mainAug 6, 2026
12 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@Astro-Han
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

test(core): pin the shared validation corpus to every envelope value domain - #2315

Merged
Astro-Han merged 3 commits into
mainfrom
test/core-envelope-value-domains
Aug 6, 2026
Merged

test(core): pin the shared validation corpus to every envelope value domain#2315
Astro-Han merged 3 commits into
mainfrom
test/core-envelope-value-domains

Conversation

@Astro-Han

Copy link
Copy Markdown
Contributor

Summary

#2314 fixed a drift that made every one of an 89-cell benchmark run's Maka trajectories export as a one-line summary: the Harbor exporter re-implements the RuntimeEvent envelope check in Python and had never learned origin or modelVisibility. It closed that class of drift at the key level — the shared validation corpus is now held to runtimeEventEnvelopeKeys(), so a key added to the interface cannot ship without a corpus case, and a corpus case the Python side rejects turns the exporter's silence into a red test.

The same drift is still open one level down. Python spells the closed value domains out again ({"provider", "code_mode"}, {"visible", "hidden"}, the status set), so a member added on the TypeScript side that no corpus case carries leaves the two disagreeing about what is valid with nothing red — and every event carrying that member degrades to a summary exactly as an unknown key did.

Two changes, and the first is what makes the second possible:

  • status already derived its type from RUNTIME_EVENT_STATUSES. origin and modelVisibility were inline unions that the decoder compared against by hand, which left their domains unenumerable: a chain of !== is invisible to anything asking what a field may hold. They now have the same shape as status, and the decoder reads the constants through a shared isOptionalMember in record-schema.ts rather than repeating their members.
  • runtimeEventEnvelopeValueDomains() exports those three domains, and a new test requires an accepted corpus case for every member. branch is free text and has nothing to enumerate, so it does not appear.

The corpus gains the four status members it never carried (streaming, failed, aborted, cancelled) — only completed was ever exercised.

Refs #2314.

Verification

Both halves of the chain proved by reverting, not by reading:

  • Red, TypeScript side: added 'harness' to RUNTIME_EVENT_ORIGINS without touching the corpus → no corpus case carries origin: harness.
  • Red, Python side: narrowed the exporter's modelVisibility set to {"hidden"} → the headless corpus round-trip fails on valid-visible-model-visibility with runtime_event_schema_invalid — the exact degradation fix(headless): teach the trajectory exporter the two envelope fields it never learned #2314 was about, now caught by a test instead of by a benchmark run.
  • Green: @maka/core 799 pass / 0 fail, @maka/headless 1431 pass / 0 fail (includes the Python corpus round-trip), @maka/runtime 3293 pass / 0 fail. npm run lint and npm run format clean.

Not run: desktop E2E and Storybook — this touches no renderer surface.

Review focus

The value-domain test is only as strong as the corpus round-trip it feeds: it guarantees a case exists, and the Python side is what turns that case into a cross-language assertion. It does not reach nested shapes (content, actions, refs), whose domains are still pinned only by the cases someone thought to write.

…domain
Pinning the corpus to the envelope key list closed one half of the drift
that made an 89-cell benchmark run export a one-line summary per cell: a
key nobody wrote a case for. The other half was still open — a value
nobody wrote a case for. The Harbor exporter spells `origin`,
`modelVisibility` and `status` out again in Python, so a member added on
this side that no corpus case carries leaves the two disagreeing about
what is valid with nothing red.
`status` already derived its type from a runtime constant; `origin` and
`modelVisibility` were inline unions the decoder compared against by
hand, which made their domains unenumerable — a chain of `!==` is
invisible to anything asking what a field may hold. Give them the same
shape as `status`, have the decoder read the constant through a shared
`isOptionalMember`, and hold the corpus to what those constants contain.
The corpus gains the four `status` members it never carried.
`role` and `author` are closed envelope domains that the Python exporter
spells out too, so leaving them out of the map made the invariant false
where it was stated: three of five domains were pinned.
The holes were real, not hypothetical. The corpus never carried `role`
or `author` as `tool` or `system`, and events with `role: tool` are among
the most common a run emits — narrowing the exporter's role set to drop
it degrades a real event stream to a summary, and nothing was red.
@Astro-Han
Astro-Han marked this pull request as ready for review August 6, 2026 07:11
@Astro-Han
Astro-Han merged commit 3391a00 into mainAug 6, 2026
12 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@Astro-Han