Skip to content

update DO-178C messaging — witness ships v0.14 MC/DC chain tracking#52

Merged
avrabe merged 5 commits into
mainfrom
witness-mcdc-shipping-messaging
May 11, 2026
Merged

update DO-178C messaging — witness ships v0.14 MC/DC chain tracking#52
avrabe merged 5 commits into
mainfrom
witness-mcdc-shipping-messaging

Conversation

@avrabe
Copy link
Copy Markdown
Contributor

@avrabe avrabe commented May 11, 2026

Summary

Witness has shipped v0.14.1 with DWARF inline-chain tracking up to 8 levels deep on real Rust (httparse). Updates the site's messaging from "MC/DC is an open problem" to "MC/DC ships today at the wasm-evidence layer; source-level work remains additive."

Changes

  • templates/projects.html — Verify-face detail panel tightened: now leads with "three proof paths and the empirical evidence half" with the formal/empirical chain argument. Cites v0.14 chain depth 8.
  • content/blog/2026-03-15-formal-verification-ai-agents.md — Rewrites the "MC/DC and structural coverage" section to reflect that witness ships at the wasm layer; SCRC + DLR/Ferrous source-level work is now additive, not blocking.

Out of scope (defer)

  • content/blog/2026-04-25-witness-wasm-mcdc.md is still draft = true with v0.1-era roadmap. Either fold into 2026-05-05-witness-the-truth-table-not-the-percentage.md or rewrite for v0.14.
  • static/reports/index.json is {"projects": {}} — no MC/DC framing to revise.
  • Variant-pruning blog already shipped (content/blog/2026-04-24-variant-pruning-rust-mcdc.md).

🤖 Generated with Claude Code

avrabe and others added 5 commits May 2, 2026 09:18
Per the org-wide CI Concurrency Hardening brief. Adds top-level
`concurrency:` blocks to cancel superseded PR runs while preserving
main-branch / scheduled / release runs.

Classification per file:

- ci.yml         → default variant
                   Cancels superseded runs on PRs only; main-branch
                   runs (which this workflow doesn't currently have,
                   but the conditional `cancel-in-progress` is a
                   future-proofing default) are never cancelled.

- deploy.yml     → release variant
                   Never cancels a deploy. The deploy script does
                   `find . -delete && tar -xzf` on Netcup; cancelling
                   mid-flight could leave the site in a half-deleted
                   state. Group by ref so parallel pushes serialize
                   without race-deleting each other.

- blog-autopublish.yml → ALREADY HAS the correct concurrency block
                   (group: blog-autopublish, cancel-in-progress: false).
                   This is a fixed-group pattern that serializes ALL
                   autopublish runs (cron + workflow_dispatch). For
                   this workflow that's correct, NOT the brief's
                   "scheduled variant" with ${{ github.run_id }}: this
                   workflow mutates repo state (creates branches and
                   PRs), so concurrent runs would race. Per idempotency
                   rule, leaving unchanged.

No job-level concurrency. No `runs-on:` changes. No matrix
restructuring. Scope is strictly `.github/workflows/`.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The previous attempt (CSS attribute selectors on inline `style="..."`)
never worked — mermaid v11 doesn't emit inline styles. Each post's
`classDef` lines compile to CSS rules INSIDE the rendered SVG's
`<style>` tag, scoped by a dynamic `#mermaid-NNN` id and marked
`!important`. That combination (ID specificity + !important + later
source order than main.css) means outer CSS cannot override them.

Fix: after mermaid renders, walk every `.mermaid svg style` element
and rewrite the hardcoded dark hex values (the greyscale bg + text
tones) to their cream-mode equivalents. The semantic accent strokes
(blue/green/amber/red/purple) are left alone — they read on either
background and carry meaning (good=green, warn=amber, etc.).

Replacements only apply to mermaid-injected `<style>` content, never
the wider page CSS. The patch is idempotent — re-running on
already-patched CSS finds no dark hex strings to replace.

A MutationObserver catches mermaid's async render; two fallback
setTimeouts handle the case where the observer attaches after render.

Removed the stale CSS-based attempt from `_blog.scss`; left a
comment explaining why outer CSS can't solve this and pointing at the
JS fix.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…hanging the site)

The MutationObserver approach was watching every childList mutation in
document.body, then modifying the SVG's style tag textContent, which
itself triggered more mutations, which re-triggered the observer.
Infinite loop — site hung in the browser.

Bounded setTimeouts (300ms / 1000ms / 2500ms) cover the same timing
windows without the recursion risk. The patch function remains
idempotent so multiple firings are harmless.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The page that the multi-persona panel agreed on as the highest-leverage
addition for non-specialist readers. Variation B framing: hero +
artifact card (witness on gale: 805 properties · 39/39 modules · signed
attestations) + 3 claims / 3 ships / 2 unknowns + role-keyed routing
(Embedded / Formal-methods / Safety-compliance / AI-tooling) + community
engagement.

No commercial CTA — keeps the site within the German Impressum +
GDPR Datenschutzerklärung constraints (no email contact links, no
'design partners welcome' framing) until those documents exist.

Files: content/about.md (frontmatter + template directive),
templates/about.html (full page layout), templates/base.html (nav link
between Home and Blog).

Pages: 27 → 28 in the build output (the new /about/ page).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Two coordinated updates to reflect that witness has shipped:
- v0.14.1 ships v3 MC/DC envelopes with DWARF inline-chain
  tracking up to 8 levels deep on real Rust (httparse)
- MC/DC for Rust is no longer "open problem" — it ships today
  at the wasm-evidence layer
- Source-level MC/DC (DLR/Ferrous, SCRC 2026 Project Goal) is
  reframed as complementary, not a blocker

templates/projects.html:
- Verify-face detail panel tightens the framing to "three proof
  paths + the empirical evidence half" with the explicit
  formal/empirical chain argument. Cites v0.14 chain depth.

content/blog/2026-03-15-formal-verification-ai-agents.md:
- Rewrites the "MC/DC and structural coverage" section to lead
  with witness shipping at the wasm layer
- Links to the variant-pruning blog post for the structural
  argument
- Reframes SCRC + DLR/Ferrous work as additive evidence at the
  rustc-frontend layer, not as the missing piece

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@avrabe avrabe merged commit 86725c8 into main May 11, 2026
1 check passed
@avrabe avrabe deleted the witness-mcdc-shipping-messaging branch May 11, 2026 18:36
Sign up for free to 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