Scope and evidence
Digital DNA structural stress-test — next-brand pressure: Nike
Date: 3 October 2026. Scope: component responsibilities, metadata, validation and portability. No Nike personality weights, voice, branded visual mix or live demo were authored. Guinness’s compound values are inherited in disposable test fixtures only. This audit makes no paid API calls and performs no live model evaluation.
Verdict
The six-layer separation survives the second-brand thought experiment. The present metadata implementation does not yet support a defensible general brand-personality system. It is a typed prototype for one bounded specimen, not a complete ingestion, approval or knowledge-management contract.
The executable audit ran 25 checks: 6 pass and 19 expose gaps against proposed next-brand acceptance criteria. Those gaps are not 19 broken Guinness interactions: several are missing capabilities intentionally omitted from the prototype. This audit deliberately distinguishes working regression tests from readiness for a second brand.
What holds
- The constitution, knowledge, interests, commercial settings and attribution are distinct data sections.
- Campaign mutations do not change compiled constitution or current realtime-session instructions.
- Required compound values, missing evidence references and unsafe source protocols are checked.
- A shared registry, page, orb and transport interface give a reusable technical starting point.
Nike pressures that expose the missing structure
Knowledge is a claim graph, not a pile of source paragraphs
A regional return policy needs a market, purchase channel, conditions and effective period. A product-study claim needs a product/version, comparator, population, intervention, measurement definition and limitations. Today facts: string[] has none of these fields. A source-level checked date is not a claim-level effective date or freshness policy.
Nike’s Hong Kong return page specifies a local window and eligibility conditions; it must not become global policy. Nike’s running-product page qualifies an injury-reduction claim by a particular comparative study and study definition. These are structural pressures; this audit does not recommend shoes or reproduce the claim as universal advice.
Sources checked: - https://www.nike.com.hk/help/13.htm?locale=en-gb — local returns and conditions. - https://www.nike.com/running/run-fearless — study-qualified product claim. - https://www.nike.com/help/a/returns-policy — attempted general policy page, but this fetch exposed only a help shell. No policy fact was inferred from it. Failed extraction itself needs a source status in the schema.
Evidence-backed interpretation needs uncertainty and disagreement
A decision references an entire page; an encounter references another entire page. There is no link from an exact claim to its supporting passage or from a decision to counter-evidence. All decisions require a source even when the honest state is “not researched”. Confidence is only high/medium, with no unknown, disputed, rejected or superseded state. A source review must distinguish first-party positioning, independent evidence and editorial assumption.
Safety needs conditions and actions
Free-text boundaries can express intent but cannot encode eligibility, conditional refusal, escalation or tool restrictions. A coaching role raises a difference between general encouragement and personalised injury diagnosis. The framework needs to represent that boundary explicitly before live Nike coaching. This is a design requirement, not medical guidance.
Platform choices must not become personality chemistry
voice.preset accepts only Cedar/Marin in TypeScript while the validator accepts arbitrary runtime values. Provider identity and supported voice capability belong to an adapter contract; perceived age/accent belong to direction. Similarly cream/accent and a single floating sphere are the first renderer’s vocabulary, not universal brand-expression metadata. The current demo also hard-codes Guinness-specific lines and legal-age copy in a shared component. Those are portability leaks even though the underlying compound schema is shared.
Commercial and attribution settings need eligibility
A URL being HTTPS does not make it an approved outbound destination. Approval status, destination purpose, locale, validity, user eligibility and action permission are absent. Enabled attribution is a boolean without an event contract, consent basis, retention or data destination. These sections are inactive today; they should remain inactive until their contracts exist.
Executable findings
Run sh scripts/run-framework-audit.sh. The JSON report is framework-audit-results.json. “Reject” means the proposed structural contract should reject or quarantine the fixture; it does not mean the current validator can establish semantic truth. In particular, the unreviewed-source probe demonstrates missing review metadata rather than a magic ability to tell whether any HTTPS page is relevant.
| Check | Structural pressure | Current result | Assessment |
|---|---|---|---|
| identity-empty | A new brand has no role or purpose | accepted | GAP |
| identity-route | Brand ID is not a safe route identifier | accepted | GAP |
| version-unknown | Unknown schema revision cannot be interpreted safely | accepted | GAP |
| compound-unknown | A brand introduces an undeclared chemical compound | accepted | GAP |
| compound-missing | A required compound is omitted | rejected | PASS |
| compound-invalid | Compound value falls outside the finite scale | rejected | PASS |
| source-duplicate | Two source records have the same identifier | accepted | GAP |
| source-bad-date | Source verification date is impossible | accepted | GAP |
| source-empty-facts | A cited source contains no extracted evidence | accepted | GAP |
| source-unsafe-url | A source URI can execute code | rejected | PASS |
| source-unrelated | A syntactically valid source lacks provenance review | accepted | GAP |
| decision-missing | One structural dimension lacks evidence or an explicit unknown decision | accepted | GAP |
| decision-broken-reference | A decision refers to an unknown source | rejected | PASS |
| example-duplicate | Two examples share a UI identifier | accepted | GAP |
| example-empty-answer | An encounter has no response | accepted | GAP |
| example-unsourced | An example points to nonexistent evidence | rejected | PASS |
| boundaries-empty | A category enters the engine with no behavioural boundaries | accepted | GAP |
| voice-provider | An unsupported provider voice reaches the current fixed OpenAI adapter | accepted | GAP |
| voice-nan-duration | Non-finite session duration bypasses the preview limit | accepted | GAP |
| expression-invalid | Invalid colour tokens break brand rendering | accepted | GAP |
| expression-nan | Non-finite motion breaks the shared orb | accepted | GAP |
| interest-negative | Invalid interest weighting enters the ranking layer | accepted | GAP |
| interest-constitution-isolation | Campaign changes must not alter constitution or voice knowledge instructions | isolated | PASS |
| commercial-unapproved | Enabled commerce has no approved destinations | accepted | GAP |
| attribution-incomplete | Tracking is enabled with no event, consent or retention definition | accepted | GAP |
Proposed v2 metadata contract — design only
Keep the six responsibilities. Expand their records, without adding new trait combinations:
text
identity: brandId, schemaVersion, constitutionRevision, deploymentStatus,
independentConceptDisclosure, locales, audiences
constitution: role, purpose, compounds, styleRules,
conditionalBoundaries[trigger, action, escalation, evidenceIds]
sources: id, URL, publisher, sourceType, market, language, retrievedAt,
publishedAt?, extractionStatus, reviewStatus, rightsNote
claims: id, statement, kind, evidence[sourceId, locator],
scope[market, productId?, variant?, audience?, channel?],
validFrom?, validUntil?, reviewDue?, status,
limitations[], contradicts[], supersedes[]
decisions: id, compound, rationale, supportingClaimIds,
counterEvidenceIds, confidence[high, medium, low, unknown],
assumption, reviewStatus
interests: id, topic, weight, market, audience, startsAt, endsAt,
eligibleClaimIds; cannot patch constitution
conversation: capabilities[], prohibitedActions[], unknownPolicy,
clarificationRules[], escalationRules[]
commercial: destinations[id, URL, purpose, approved, market,
validUntil?, eligibilityRules], enabled
attribution: enabled, allowedEvents, consentPolicy, retention,
dataDestination; no raw conversation by default
expression: rendererId, semanticTokens, typographyRef,
motionProfile, reducedMotionProfile, accessibilityConstraints
voice: providerId, voiceId, deliveryDirection, language,
capabilityRequirements, sessionLimits, syntheticDisclosure
encounters: id, intent, question, expectedBehaviour,
claimIds[], boundaryIds[], context, counterexamples[]
This is a proposed contract, not an implemented v2 schema. Optional fields must mean unknown or inapplicable explicitly where those states affect eligibility. Do not silently default missing markets or freshness to global/current. Numeric trait mixing remains unchanged and is outside this review.
Recommended order
- Harden v1 record validation: identity/version, unique IDs, finite numbers, dates, supported presets and required sections.
- Introduce scoped atomic claims, provenance review and freshness eligibility; migrate Guinness evidence with its uncertainties retained.
- Move product UI copy, eligibility and voice-provider choices out of shared rendering logic.
- Add conditional behaviour and tool capability contracts; keep commerce/attribution disabled.
- Instantiate Nike only after the contract passes these same structural probes. Then evaluate its personality mix separately.
No current personality configuration or application behaviour was changed by this audit.