From e5213248a82fc87f474de7ade20530d810ad7571 Mon Sep 17 00:00:00 2001 From: JB Date: Sun, 23 Aug 2026 14:45:26 -0400 Subject: [PATCH] prototype: explore public model status layouts --- src/routes/database/+page.svelte | 14 +++ .../ModelStatusPrototype.prototype.svelte | 21 +++++ ...elStatusPrototypeSwitcher.prototype.svelte | 45 +++++++++ .../ModelStatusVariantA.prototype.svelte | 78 ++++++++++++++++ .../ModelStatusVariantB.prototype.svelte | 64 +++++++++++++ .../ModelStatusVariantC.prototype.svelte | 66 +++++++++++++ src/routes/database/model-status.prototype.ts | 93 +++++++++++++++++++ 7 files changed, 381 insertions(+) create mode 100644 src/routes/database/ModelStatusPrototype.prototype.svelte create mode 100644 src/routes/database/ModelStatusPrototypeSwitcher.prototype.svelte create mode 100644 src/routes/database/ModelStatusVariantA.prototype.svelte create mode 100644 src/routes/database/ModelStatusVariantB.prototype.svelte create mode 100644 src/routes/database/ModelStatusVariantC.prototype.svelte create mode 100644 src/routes/database/model-status.prototype.ts diff --git a/src/routes/database/+page.svelte b/src/routes/database/+page.svelte index f0f16f9..0a88b61 100644 --- a/src/routes/database/+page.svelte +++ b/src/routes/database/+page.svelte @@ -1,6 +1,16 @@ @@ -8,6 +18,9 @@ +{#if prototypeVariant} + +{:else}

ISAC PUBLIC ARCHIVE

RESURGENCE DATABASE.

Explore equipment, talents, modifications, and gameplay effects from The Division Resurgence.

@@ -54,3 +67,4 @@ {/each}
+{/if} diff --git a/src/routes/database/ModelStatusPrototype.prototype.svelte b/src/routes/database/ModelStatusPrototype.prototype.svelte new file mode 100644 index 0000000..a142302 --- /dev/null +++ b/src/routes/database/ModelStatusPrototype.prototype.svelte @@ -0,0 +1,21 @@ + + + +
+ {#if variant === 'A'} + + {:else if variant === 'B'} + + {:else} + + {/if} +
+ diff --git a/src/routes/database/ModelStatusPrototypeSwitcher.prototype.svelte b/src/routes/database/ModelStatusPrototypeSwitcher.prototype.svelte new file mode 100644 index 0000000..a379e5b --- /dev/null +++ b/src/routes/database/ModelStatusPrototypeSwitcher.prototype.svelte @@ -0,0 +1,45 @@ + + + + + + diff --git a/src/routes/database/ModelStatusVariantA.prototype.svelte b/src/routes/database/ModelStatusVariantA.prototype.svelte new file mode 100644 index 0000000..b684ae0 --- /dev/null +++ b/src/routes/database/ModelStatusVariantA.prototype.svelte @@ -0,0 +1,78 @@ + + + +
+
+
+

DEVELOPMENT PROTOTYPE · ISSUE #5 · VARIANT A

+

MODELING STATUS.

+
+

Integrated card hierarchy keeps the public state in the identity header and gives behavior one primary reading block.

+
+ +
+
+
01 / CARD PRESENTATION

DATABASE CARDS

+ ALL MECHANIC OWNERS · PUBLIC STATE ONLY +
+
+ {#each modelStatusFixtures as fixture} +
+
+
{fixture.owner}

{fixture.name}

{fixture.context}
+ {publicStatus(fixture)} +
+
+ {publicStatus(fixture) === 'MODELED' ? 'MODELED BEHAVIOR' : 'AUTHORED DESCRIPTION'} +

{publicBehavior(fixture)}

+
+
READ-ONLY FIXTUREVIEW DETAILS →
+
+ {/each} +
+
+ +
+
+
02 / DETAIL PRESENTATION

QUICK VIEW

+ MODELED TEXT FIRST · AUTHORED FALLBACK WHEN NOT MODELED +
+
+ {#each quickViewFixtures as fixture} +
+
{fixture.owner}

{fixture.name}

{publicStatus(fixture)}
+
BEHAVIOR

{publicBehavior(fixture)}

+
RECORD
{fixture.context}
DISPLAY SOURCE
{publicStatus(fixture) === 'MODELED' ? 'Modeled behavior' : 'Authored description'}
+
+ {/each} +
+
+ +
+
+
03 / GLOBAL SEARCH PRESENTATION

SEARCH RESULTS

+ {modelStatusFixtures.length} FIXTURE MATCHES +
+
+ {#each modelStatusFixtures as fixture} +
+ {fixture.owner}{fixture.name}{publicBehavior(fixture)}{publicStatus(fixture)} +
+ {/each} +
+
+
+ + diff --git a/src/routes/database/ModelStatusVariantB.prototype.svelte b/src/routes/database/ModelStatusVariantB.prototype.svelte new file mode 100644 index 0000000..ab793e0 --- /dev/null +++ b/src/routes/database/ModelStatusVariantB.prototype.svelte @@ -0,0 +1,64 @@ + + + +
+
+
DEVELOPMENT PROTOTYPE / ISSUE #5 / VARIANT B

EVIDENCE RAIL

+

A persistent left rail carries the binary public state. Compact provenance fields explain what the reader is seeing without revealing mechanic lifecycle.

+
+ +
+
01
CARD PRESENTATION

BEHAVIOR EVIDENCE CARDS

{modelStatusFixtures.length} FIXTURES
+
+ {#each modelStatusFixtures as fixture} +
+
{publicStatus(fixture)}
+
{fixture.owner}

{fixture.name}

{fixture.context}
+
PUBLIC BEHAVIOR

{publicBehavior(fixture)}

+
DISPLAY BASIS
{publicStatus(fixture) === 'MODELED' ? 'Modeled behavior' : 'Authored description'}
SURFACE
Public database
+
+ {/each} +
+
+ +
+
02
DETAIL PRESENTATION

QUICK-VIEW DOSSIER

READ ONLY
+
+ {#each quickViewFixtures as fixture} +
+ +
+
{fixture.owner}

{fixture.name}

{fixture.context}
+
{publicStatus(fixture) === 'MODELED' ? 'MODELED BEHAVIOR' : 'AUTHORED DESCRIPTION'}

{publicBehavior(fixture)}

+
DISPLAY BASIS{publicStatus(fixture) === 'MODELED' ? 'MODELED BEHAVIOR' : 'EXACT AUTHORED PROSE'}
+
+
+ {/each} +
+
+ +
+
03
GLOBAL SEARCH PRESENTATION

RESULT EVIDENCE

QUERY: TALENT
+
+ {#each modelStatusFixtures as fixture} +
+ {fixture.owner}{fixture.name}{publicBehavior(fixture)}{publicStatus(fixture)} +
+ {/each} +
+
+
+ + diff --git a/src/routes/database/ModelStatusVariantC.prototype.svelte b/src/routes/database/ModelStatusVariantC.prototype.svelte new file mode 100644 index 0000000..94047dc --- /dev/null +++ b/src/routes/database/ModelStatusVariantC.prototype.svelte @@ -0,0 +1,66 @@ + + + +
+
+
THROWAWAY / DEV ONLY / ISSUE #5

MECHANIC MODEL REGISTRY

+
VARIANT
C / REGISTRY ROWS
FIXTURES
{modelStatusFixtures.length} READ-ONLY
PUBLIC STATES
2
+
+ +
+
01 / CARD PRESENTATION

DENSE REGISTRY ROWS

Cards collapse into scan-first records. The public status remains a dedicated column.

+
+ + {#each modelStatusFixtures as fixture, index} +
+ {String(index + 1).padStart(2, '0')} +
{fixture.owner}{fixture.name}
+ {fixture.context} +

{publicBehavior(fixture)}

+ {publicStatus(fixture)} +
+ {/each} +
+
+ +
+
02 / DETAIL PRESENTATION

EXPANDABLE DETAIL READER

Disclosure state is local to the browser. Fixture records remain read-only.

+
+ {#each detailFixtures as fixture} +
+ +
{fixture.owner}{fixture.name}
{fixture.context}{publicStatus(fixture)} +
+
+
{publicStatus(fixture) === 'MODELED' ? 'MODELED BEHAVIOR' : 'AUTHORED DESCRIPTION'}

{publicBehavior(fixture)}

+
MECHANIC OWNER
{fixture.owner}
PUBLIC STATUS
{publicStatus(fixture)}
TEXT PRESENTED
{publicStatus(fixture) === 'MODELED' ? 'Modeled behavior' : 'Exact authored fallback'}
+
+
+ {/each} +
+
+ +
+
03 / GLOBAL SEARCH PRESENTATION

SEARCH INDEX ROWS

Compact results preserve the same status and text-selection rule.

+
+ {#each modelStatusFixtures as fixture, index} +
{String(index + 1).padStart(2, '0')}{fixture.owner}{fixture.name}

{publicBehavior(fixture)}

{publicStatus(fixture)}
+ {/each} +
+
+
+ + diff --git a/src/routes/database/model-status.prototype.ts b/src/routes/database/model-status.prototype.ts new file mode 100644 index 0000000..2c728d1 --- /dev/null +++ b/src/routes/database/model-status.prototype.ts @@ -0,0 +1,93 @@ +// THROWAWAY PROTOTYPE for issue #5. Fixture lifecycle data must never become a public API. +export type PrototypeVariant = 'A' | 'B' | 'C'; +export type PublicModelStatus = 'MODELED' | 'NOT MODELED'; + +type MechanicLifecycle = + 'ready' | 'requires_assumptions' | 'captured_only' | 'absent'; + +export type ModelStatusFixture = { + id: string; + owner: + | 'Talent' + | 'OS Protocol Talent' + | 'Skill Chip Talent' + | 'Specialization tree-rank effect'; + name: string; + context: string; + internal: { + lifecycle: MechanicLifecycle; + current: boolean; + }; + modeledText?: string; + authoredText: string; +}; + +export const modelStatusFixtures: ModelStatusFixture[] = [ + { + id: 'talent-ready', + owner: 'Talent', + name: 'Predatory Advance', + context: 'Weapon Talent · Tier I', + internal: { lifecycle: 'ready', current: true }, + modeledText: + 'On enemy kill: gain +15% Weapon Damage for 10 s. Refreshes and stacks up to 3 times.', + authoredText: + 'Killing an enemy grants 15% weapon damage for 10s. Stacks up to 3 times.', + }, + { + id: 'protocol-assumptions', + owner: 'OS Protocol Talent', + name: 'Emergency Weave', + context: 'Superior OS Protocol · Talent', + internal: { lifecycle: 'requires_assumptions', current: true }, + modeledText: + 'When armor breaks: restore 20% Armor over 5 s. Cooldown: 20 s.', + authoredText: + 'When armor is broken, restore 20% armor over 5s. Cooldown: 20s.', + }, + { + id: 'chip-captured', + owner: 'Skill Chip Talent', + name: 'Rapid Instruction', + context: 'Tactical Skill Chip Set · 3-piece talent', + internal: { lifecycle: 'captured_only', current: true }, + modeledText: 'After skill use: gain +8% Skill Haste for 12 s.', + authoredText: 'Using a skill grants 8% Skill Haste for 12s.', + }, + { + id: 'specialization-absent', + owner: 'Specialization tree-rank effect', + name: 'Perfect Cadence · Rank 3', + context: 'Sharpshooter · Precision branch', + internal: { lifecycle: 'absent', current: true }, + authoredText: + 'After reaching 5 hits without missing, your next shot deals 25% increased damage.', + }, + { + id: 'talent-stale', + owner: 'Talent', + name: 'Measured Focus', + context: 'Gear Talent · Tier II', + internal: { lifecycle: 'ready', current: false }, + modeledText: + 'After a headshot: gain +8% Critical Hit Damage for 8 s, stacking up to 3 times.', + authoredText: + 'Headshots grant 10% Critical Hit Damage for 8s. Stacks up to 4 times.', + }, +]; + +export const publicStatus = (fixture: ModelStatusFixture): PublicModelStatus => + fixture.internal.current && fixture.internal.lifecycle !== 'absent' + ? 'MODELED' + : 'NOT MODELED'; + +export const publicBehavior = (fixture: ModelStatusFixture): string => + publicStatus(fixture) === 'MODELED' && fixture.modeledText + ? fixture.modeledText + : fixture.authoredText; + +export const prototypeVariantNames = { + A: 'Integrated card hierarchy', + B: 'Evidence rail', + C: 'Registry rows', +} satisfies Record;