import { CrucibleChart } from "semiotic/physics"
CrucibleChart is the physics chart for peer components exposed to one shared, phased treatment. It is useful when that treatment creates products, exposes exceptions, and leaves a decision-worthy ledger of where every input went. Its durable reading is the authored composition, provenance, and outcome projection—not the trajectory of the bodies in the scene.
Its strongest claim is not “these things moved.” It is “this bounded ordeal changed what these things are together, while every product and exception can still name its sources.” Each preview starts at a deliberately slow pace. Changing Pace restarts phase one; Auto replay exposes the public rerunMS delay without changing the authored result.
Author the product lifecycle, then replay it
This compact example renders CrucibleChart directly. The caller declares the evidence, treatment phases, product mold, and disposition.buildCrucibleProductEvents writes the repetitivecombine → contribute → complete-product envelope, but it does not decide which evidence belongs together, when any step occurs, or where the result goes. The replay button calls the public handle's replay() method, so it restarts immediately even if a run is already underway.
4 source components; 1 product; 3 amount in products. Outcome: complete.
Forge golden records
Fifteen rows from CRM, billing, support, and event systems enter one reconciliation run. Authored match decisions bind related rows into several canonical customer records; ambiguous rows leave for manual review and malformed rows leave for quarantine. Switch complete authored resolution runs to see the same charge produce a different, fully accounted outcome.
Customer 360 identity crucibleFifteen equal-size circles are preserved source records from four systems. Authored evidence and the selected resolution run assign every destination; collisions only animate the shared treatment and never propose, approve, or reject a match.
Phase 1 of 4: Normalize.
Source rows
15 loaded4 source systems
Candidate assignments
PendingWaiting for proposal event
Golden records
PendingWaiting for resolution
Manual review
PendingWaiting for resolution decision
Quarantine
PendingWaiting for validation
Entity resolution crucible. Normalize. 15 source rows are entering normalization. Collisions do not propose or approve matches.
Circle size is deliberately constant: these are source rows, not weighted customers. Hulls and bonds show ledger membership, side trays remain part of the same world, and no row is removed or respawned when it reaches an outlet.
Authoritative source-record ledger| Source row | Observed identity | Match evidence | Ledger destination |
|---|
| CRM-1042CRM | Ada Rivera | email + phone | Normalization crucible |
|---|
| CRM-1108CRM | Devon Lee | email + loyalty id | Normalization crucible |
|---|
| CRM-1187CRM | Mina Patel | email + phone | Normalization crucible |
|---|
| CRM-1204CRM | Rowan Chen | email + postal address | Normalization crucible |
|---|
| BILL-882Billing | Ada M. Rivera | email + billing address | Normalization crucible |
|---|
| BILL-913Billing | Devon K Lee | phone + billing address | Normalization crucible |
|---|
| BILL-947Billing | Mina Patel | email + billing address | Normalization crucible |
|---|
| BILL-991Billing | Rowan Chen | email + billing address | Normalization crucible |
|---|
| SUP-291Support | A. Rivera | verified phone | Normalization crucible |
|---|
| SUP-336Support | Devon Lee | verified email | Normalization crucible |
|---|
| SUP-401Support | Mina P. | verified phone | Normalization crucible |
|---|
| SUP-404Support | (blank) | missing name and contact fields | Normalization crucible |
|---|
| EVT-051Events | Ada Rivera | email + event account | Normalization crucible |
|---|
| EVT-087Events | Devon Lee | email + event account | Normalization crucible |
|---|
| EVT-103Events | R. Chen | shared postal address; no email | Normalization crucible |
|---|
Authored event tape- Normalize fields; route invalid SUP-404 to Quarantine
Normalize · authored at 55% of phase
- Materialize authored candidate assignments
Propose matches · authored at 16% of phase
- Retain ambiguous EVT-103 for Manual review
Resolve conflicts · authored at 18% of phase
- Publish approved golden records
Publish · authored at 45% of phase
The resolution run changes one authored assignment, not a force parameter. Replaying a run always produces the same semantic destinations and equivalent targets.
Why this fits a crucible
The charge is a bounded source batch. Normalize, match, resolve, and publish are the shared ordeal. Supplied match evidence is the assay. Golden records are the products, review and quarantine are reason-labelled exceptions, and the publish decision is the mold. Multiple products nucleate in one chamber, so the durable reading is many-to-one lineage rather than workflow occupancy.
The resolution selector swaps complete authored event tapes; attraction and collision never resolve identity. That separation is deliberate: the physics makes binding, conflict, and settlement graspable, while the ledger remains sufficient for audit, reduced motion, and export.
Compare observed sister heats
Sixteen traced five-kilogram parcels make the same 80 kg remelt recipe. Heat 24A receives a skim-only treatment; Heat 24B is degassed and filtered. The R-17 acceptance mold is visible before either laboratory panel arrives. Switch observed heat records to compare how treatment, assay, and material disposition turn the same kind of charge into a different decision.
Closed-loop aluminum qualification crucibleSixteen equal circles are five-kilogram recipe parcels. Compare two recorded sister heats over the same traced charge: treatment changes the posted assay and therefore the governed release decision; collisions never calculate metallurgy.
Phase 1 of 5: Charge.
Charge
Enteringsource IDs retained
Main melt
Pendingforms after treatment
R-17 release
Await assaynot precomputed
Rework hold
Await assaynot precomputed
Co-product
Await routingfoundry return
Process residue
Await treatmentreasons post with events
Controlled remelt qualification. Heat 24A, Charge. The R-17 disposition remains pending until the authored assay event; physics does not calculate the assay.
One circle always means one traced five-kilogram recipe parcel. The hull is the 65 kg main melt’s lineage envelope, not a newly invented product body. Outlet position, contact, and velocity cannot alter an assay value, reason, mass, or disposition.
Posted laboratory assay| Criterion | R-17 mold | Observed | Evaluation |
|---|
| MagnesiumR-17 chemistry window | 0.80–1.10% | Pending | Not posted |
|---|
| SiliconR-17 chemistry window | 0.50–0.75% | Pending | Not posted |
|---|
| Ironplant remelt ceiling | ≤ 0.40% | Pending | Not posted |
|---|
| Dissolved hydrogenporosity control | ≤ 0.20 mL / 100 g | Pending | Not posted |
|---|
| Inclusion indexextrusion cleanliness | ≤ 2.0 mm² / kg | Pending | Not posted |
|---|
Disposition: withheld until the assay event
Authored event tape- Load 16 source-identified parcels (80 kg)
Charge · authored at 58% of phase
- Record the sister heat as homogenized
Melt · authored at 48% of phase
- Skim CHIP-03 and MIX-02 to dross
Treat · authored at 28% of phase
- Cover flux + hand skim; no degassing or inline filtration
Treat · authored at 76% of phase
- Post observed assay panel
Assay · authored at 58% of phase
- Apply the authored disposition after assay
Cast / route · authored at 34% of phase
Switching heats replaces the assay and route ledger, then remounts the same seeded scene. It does not tune a force until a preferred answer appears.
Authoritative 80 kg charge and disposition ledger| Trace parcel | Source lot | Charge role | Mass | Current destination | Authored reason |
|---|
| Heat 24A / EXT-01 | EX-4407 | Clean extrusion returnverified R-17 extrusion offcut | 5 kg | Charge queue | awaiting the observed assay panel |
|---|
| Heat 24A / EXT-02 | EX-4407 | Clean extrusion returnverified R-17 extrusion offcut | 5 kg | Charge queue | awaiting the observed assay panel |
|---|
| Heat 24A / EXT-03 | EX-4407 | Clean extrusion returnverified R-17 extrusion offcut | 5 kg | Charge queue | awaiting the observed assay panel |
|---|
| Heat 24A / EXT-04 | EX-4407 | Clean extrusion returnverified R-17 extrusion offcut | 5 kg | Charge queue | awaiting the observed assay panel |
|---|
| Heat 24A / EXT-05 | EX-4412 | Clean extrusion returnverified R-17 extrusion offcut | 5 kg | Charge queue | awaiting the observed assay panel |
|---|
| Heat 24A / EXT-06 | EX-4412 | Clean extrusion returnverified R-17 extrusion offcut | 5 kg | Charge queue | awaiting the observed assay panel |
|---|
| Heat 24A / EXT-07 | EX-4412 | Clean extrusion returnverified R-17 extrusion offcut | 5 kg | Charge queue | awaiting the observed assay panel |
|---|
| Heat 24A / EXT-08 | EX-4412 | Clean extrusion returnverified R-17 extrusion offcut | 5 kg | Charge queue | awaiting the observed assay panel |
|---|
| Heat 24A / CHIP-01 | BR-118 | Machining briquettewashed and briquetted turnings | 5 kg | Charge queue | awaiting the observed assay panel |
|---|
| Heat 24A / CHIP-02 | BR-118 | Machining briquettewashed and briquetted turnings | 5 kg | Charge queue | awaiting the observed assay panel |
|---|
| Heat 24A / CHIP-03 | BR-118 | Machining briquetteoily fines fraction | 5 kg | Charge queue | awaiting the recorded skim event |
|---|
| Heat 24A / MIX-01 | MR-882 | Mixed remelt returniron-bearing mixed return | 5 kg | Charge queue | awaiting post-assay segregation |
|---|
| Heat 24A / MIX-02 | MR-886 | Mixed remelt returnoxide-rich mixed return | 5 kg | Charge queue | awaiting the recorded skim event |
|---|
| Heat 24A / AL-01 | AL-229 | Clean make-up metalclean make-up ingot | 5 kg | Charge queue | awaiting the observed assay panel |
|---|
| Heat 24A / AL-02 | AL-229 | Clean make-up metalclean make-up ingot | 5 kg | Charge queue | awaiting the observed assay panel |
|---|
| Heat 24A / TRIM-01 | TR-064 | Mg-Si trim parcelrecorded chemistry trim | 5 kg | Charge queue | awaiting the observed assay panel |
|---|
| Ledger balance | 80 kg input | Open until the treatment program completes |
|---|
How to read the alloy fixture
The skim-only heat exceeds the hydrogen and inclusion limits, so its 65 kg main product goes to rework. The treated heat passes every posted observation and casts that lineage as R-17 billet. The other 15 kg remains accounted for as foundry return, dross, or filter cake. Physics stages the treatment and routing; it never invents chemistry or acceptance.
Forge a breaking-change compact
Twelve requirements from Architecture, Support, SDK, Product, Docs, SRE, and other peers enter one facilitated decision. A consensus synthesis and a ship-date floor apply different complete decision records to the same charge. Commitments bind into release-evidence, migration, and recovery products; unsupported, later, incompatible, and declined requirements leave through distinct reason-labelled outlets.
Breaking-change agreement crucibleTwelve concrete requirements from peer functions become a release standard, remain explicitly unresolved, move to owned later work, expose a conflict, or fail an acceptance criterion. Every source requirement survives as lineage.
Phase 1 of 4: Charge.
Requirements
12 charged0 assigned · balance 12
Commitments
0 in 0 productsForms late in Deliberate
Open / deferred
0 open · 0 deferredUnresolved is not rejected
Conflict / declined
0 conflict · 0 declinedDifferent reasons, separate outlets
Breaking-change workshop crucible. Charge. 0 requirements are commitments across 0 products; 0 are open, 0 deferred, 0 in conflict, and 0 declined. 12 of 12 requirements await an authored destination. Physics does not decide the result.
The memorable throw is a retained question moving to Open. It is not a rejection. Deferred means owned later work, Conflict means incompatible requirements need escalation, and Declined means the proposal was tested and failed a stated criterion.
Authoritative requirement ledger · Consensus synthesis| Requirement | Peer source | Current destination | Decision basis |
|---|
| A · One-page change recordRecord scope, owner, affected surface, and rollback before review. | Architecture | Workshop charge | Pending the authored decision event. |
|---|
| B · Affected-consumer mapName affected teams, integration paths, and contact channels. | Support | Workshop charge | Pending the authored decision event. |
|---|
| C · Consumer contract testsBlock merge when a supported client contract fails in CI. | SDK | Workshop charge | Pending the authored decision event. |
|---|
| D · Two-release compatibility windowKeep the old API working for at least two releases. | Product | Workshop charge | Pending the authored decision event. |
|---|
| E · Migration guide + JS codemodPublish the guide and first codemod when the beta opens. | Docs | Workshop charge | Pending the authored decision event. |
|---|
| F · Usage threshold before removalRetire the old API only after legacy traffic falls below five percent. | SRE | Workshop charge | Pending the authored decision event. |
|---|
| G · Named rollback ownerA named owner confirms the rollback path before launch. | On-call | Workshop charge | Pending the authored decision event. |
|---|
| H · 24-hour emergency reviewPermit an incident bypass, then audit it within 24 hours. | Incident command | Workshop charge | Pending the authored decision event. |
|---|
| I · Unanimous approvalRequire every reviewing function to approve a breaking change. | Security | Workshop charge | Pending the authored decision event. |
|---|
| J · One accountable approverConsult every reviewing function; one named approver makes the call. | Product | Workshop charge | Pending the authored decision event. |
|---|
| K · All-SDK migration parityDo not launch generally until every supported SDK has a migration path. | Mobile | Workshop charge | Pending the authored decision event. |
|---|
| L · Release notes as sole noticeUse the normal release notes as the only consumer notification. | Communications | Workshop charge | Pending the authored decision event. |
|---|
Authored event tape- Test every requirement against the publication mold
22% of Assay
- Name available evidence, owners, and incompatible pairs
70% of Assay
- Throw retained questions to Open—not to rejection
15% of Deliberate
- Route owned, later work to Deferred
36% of Deliberate
- Escalate incompatible rules to Conflict
56% of Deliberate
- Route criteria failures to Declined
73% of Deliberate
- Bind 7 commitments into three products
90% of Deliberate
- Ratify the package and publish every exception
48% of Ratify
Switching runs changes authored destinations and decision reasons, never force parameters. At completion, all 12 source requirements are accounted for and the balance is zero.
The memorable throw now carries a precise distinction: Open is retained because the package still needs evidence or policy; Deferred is owned later work; Conflict marks rules that cannot coexist; Declined has actually failed the publication mold. Ejection is therefore a semantic disposition, not merely spectacle.
For the public HOC applied to real transcript profiles, seeThe Rhetorical Crucible. It uses two synchronized chart instances, incremental product formation, a selectable slow replay, and the same complete ledger in motion-reduced and server-rendered states.
For a deliberately probabilistic boundary case, seeThe Latent Crucible. Word Trails carries the topic-word probability estimates at recorded Gibbs checkpoints while Crucible quenches one terminal chain state, preserving the distinction between an inference algorithm and its visual explanation.
A Crucible is compelling when motion marks a change in identity, not merely a change in position. Peer inputs become a product that did not exist before; exceptions cross a reason-labelled boundary; the product locks into an explicit mold; and another complete treatment can produce a different, auditable result from the same kind of charge. The irreversible beats—binding, breaking, skimming, recovery, and quenching—are where physics carries the analytical claim.
The three live instruments on this page provide six authored outcomes once their resolution or treatment selectors are used. The atlas below shows where the same grammar could earn its place next. In every case, an external system supplies the facts; the chart preserves and enacts them.
Synthesis under scrutiny
Incident evidence
Which account survives chronology, mechanism, and rollback evidence?
- Charge
- Logs, traces, deploys, metrics, and experiments
- Ordeal
- Align time → test mechanism → seek counterfactual
- Product
- One supported finding with exact evidence lineage
- Exceptions
- Contradicted signals and unresolved questions
- Decision
- Mitigate, monitor, and publish the postmortem
Killer beat:Corroborating evidence locks together while a vivid red herring is expelled.
Refinement / selection
Semiconductor qualification
Where did lot yield go, and which device family failed under which stress?
- Charge
- Serialized devices from one observed lot
- Ordeal
- Thermal ramp → voltage stress → hold → cool-down
- Product
- Qualified devices and a retained lot
- Exceptions
- Thermal, electrical, and latent failures
- Decision
- Release, rework, or quarantine the lot
Killer beat:A family-specific failure wave leaves during the exact authored stress phase.
Refinement + synthesis
Systematic review
Which studies support each finding after the same appraisal program?
- Charge
- Search results and candidate studies
- Ordeal
- Deduplicate → screen → appraise quality → synthesize
- Product
- Finding clusters with study provenance
- Exceptions
- Duplicates and exclusions separated by reason
- Decision
- Synthesize, narrow the claim, or gather more evidence
Killer beat:Several independent studies bind into findings while exclusions remain inspectable.
Synthesis
Software build forge
Which inputs formed each shipped bundle, and where did the bytes go?
- Charge
- Modules, assets, dependencies, and generated code
- Ordeal
- Resolve → tree-shake → split chunks → minify → compress
- Product
- Deployable bundles with module lineage
- Exceptions
- Unused code, duplicate modules, and build failures
- Decision
- Ship, split, deduplicate, or revisit an import
Killer beat:Modules nucleate into several chunks as dead code peels into a residue tray.
Split + refinement
Material recovery
What was recovered from a mixed batch, and what remained hazardous?
- Charge
- A weighed batch of electronics or mixed scrap
- Ordeal
- Shred → sort → separate → refine
- Product
- Copper, aluminum, precious-metal, and reusable fractions
- Exceptions
- Hazardous residue and unrecoverable loss
- Decision
- Accept the recovery run and audit its mass balance
Killer beat:One mixed charge visibly separates into several valuable products and residue.
Negotiated synthesis
Release-scope package
Which commitments form a coherent release under this evidence and capacity?
- Charge
- Requirements, safeguards, dependencies, and open risks
- Ordeal
- Validate need → test dependencies → reconcile capacity → commit
- Product
- A release package plus explicit operating safeguards
- Exceptions
- Deferred scope, unresolved risks, and rejected conflicts
- Decision
- Commit the release or reopen the package
Killer beat:Interdependent commitments bind while an attractive but incompatible item defers.
Stress testing
Portfolio scenario
Which holdings remain resilient, impaired, failed, or recovered under this scenario?
- Charge
- Holdings in one portfolio snapshot
- Ordeal
- Rate shock → liquidity shock → recession → recovery
- Product
- Retained and recovered value by source holding
- Exceptions
- Failed and illiquid positions
- Decision
- Accept exposure, hedge, rebalance, or investigate
Killer beat:Impaired components separate under the shock, then only some visibly recover.
Transformation + selection
Data-migration cutover
What became canonical, what needs manual mapping, and is cutover safe?
- Charge
- Legacy tables, fields, and source records
- Ordeal
- Normalize → map → validate → reconcile → publish
- Product
- Canonical records grouped by destination schema
- Exceptions
- Invalid rows, unmapped fields, and reconciliation gaps
- Decision
- Cut over, remediate exceptions, or roll back
Killer beat:Validated records lock into destination molds while unmapped rows remain outside.
Chart boundary
Use GauntletChart for a compound entity crossing sequential gates, ProcessFlowChart for independent work items moving through stages, andStreamPhysicsFramewhen you need to author a custom scene beyond the bounded CrucibleChart event grammar.
Public props
The chart is deliberately controlled: callers provide the complete charge, phases, product molds, and event tape. playbackRate changes presentation only;rerunMS repeats the same deterministic program after it settles, while the ref handle's replay() restarts it immediately. UsebuildCrucibleProductEvents when a product follows the standard forming, contribution, and completion lifecycle. Analysis, membership, event positions, and routing remain authored inputs.
| Prop | Type | Required | Default | Description |
|---|
data | array | Yes | — | The bounded, controlled source charge. CrucibleChart has no live push mode. |
phases | array | Yes | — | Ordered authored treatment phases with finite positive durations and optional motion, intensity, color, and display metrics. |
products | array | — | [] | Declared product molds referenced by combine, contribute, complete-product, and split effects. |
events | array | — | [] | Serializable authored semantic events: state, relation, combine, contribute, complete-product, split, eject, metric, or outcome changes. |
outlets | array | — | product, retained, residue, failed, recovered | Named product or component destinations. Supplying it replaces the default outlet list. |
idAccessor | string | function | — | datum.id, then component-{index} | Stable source-component id. |
labelAccessor | string | function | — | datum.label, datum.name, then id | Human-readable component label. |
categoryAccessor | string | function | — | "component" | Component category used by grouping and color. |
amountAccessor | string | function | — | 1 | Authored amount for projection and conservation; never inferred from body mass or area. |
initialStateAccessor | string | function | — | "active" | Initial ledger status for a component. |
metricsAccessor | string | function | — | — | Named, externally supplied numeric metrics for each source component. |
metrics | object | — | {} | Authored run-level numeric metrics; physics never calculates domain evidence. |
amountLabel | string | — | — | Display unit for amount values, such as kg. |
conservation | boolean | object | — | false | Optional authored amount or metric balance check with field, tolerance, and warn/error behavior. |
projection | object | — | by status | Projection grouping, measure, ordering, input baseline, and delta display. |
snapshotAt | number | { phaseId, progress? } | — | terminal boundary for snapshot playback | Logical time shown in a deterministic static snapshot. |
playback | "replay" | "snapshot" | — | "replay" | Replay the authored program or render a chosen settled snapshot. |
controls | boolean | object | — | false | Show selected play/pause, reset, step-phase, timeline, and speed controls. |
bodyRadius | number | — | 7 | Fallback visual radius for component bodies. |
radiusRange | [number, number] | — | [5, 18] | Visual radius range when amount is encoded by body size. |
colorBy | "category" | "status" | "outlet" | "product" | accessor | — | "category" | Semantic field used to color components and products. |
showBonds | boolean | — | true | Show lineage bonds between a derived product and its source members. |
showChrome | boolean | — | true | Show vessel, phase rail, and outlet chrome. |
showProjection | boolean | — | true | Show the settled composition and outcome projection. |
initialSpawnPacing | object | — | immediate | Optional visual pacing for the bounded initial source charge. |
seed | number | string | — | 1 | Deterministic visual placement seed; it cannot change semantic event results. |
paused | boolean | — | false | Pause replay without changing the authored ledger. |
playbackRate | number | — | 1 | Presentation-only replay multiplier. Values below 1 slow every authored phase without changing event order or outcomes. |
rerunMS | number | null | — | null | Replay from the deterministic initial state this many milliseconds after terminal materialization settles; 0 reruns on the next timer turn. |
responsiveWidth | boolean | — | false | Resize the chart to its container width. |
responsiveHeight | boolean | — | false | Resize the chart to its container height. |
size | [number, number] | — | [900, 420] | Full chart dimensions in pixels. |
onStateChange | function | — | — | Receive the authoritative run state after authored changes. |
onCrucibleObservation | function | — | — | Receive high-level phase, transformation, product, conservation, and completion observations. |
onDiagnostic | function | — | — | Receive compile or event diagnostics without consulting physical positions. |
onConservation | function | — | — | Receive the authored amount or metric conservation result. |
onClick | function | — | — | Receive a source datum or documented derived-product datum on click. |
tooltip | boolean | function | object | — | true | Enable the default semantic tooltip, provide a custom renderer, or disable it. |
frameProps | object | — | — | Advanced StreamPhysicsFrame props, excluding the curated body-forces implementation. |