# Company and Missions — engine coverage audit

Internal design proposal · 10 October 2026 · revision 4. Read-only source review of application `origin/main` at `079147a5f3a02b8d495ccfc8116fcc2d092f6ef5`; no staging requests or backend edits. The source application is in `projects/kidstock-app/repositories/kidstock-app` in the main estate checkout. Demo authoring sources are under `projects/kidstock-app/world-design/`.

**The previous design did not cover the engine adequately.** It displayed chapter titles without reading, omitted chapter quizzes and missions, stopped at investment eligibility, and used a long page with anchor selectors. This revision demonstrates the missing company interactions and a Mission Club. It does **not** complete or validate the entire application engine. Coverage below distinguishes working local interactions, designed states and integration work.

## What to review

- [Company](pages/company.html): business summary → quick quiz; visible chapter covers and quiz/mission destinations, collection dialogs, and secondary News/facts and Investment sheets. All four chapters and their quizzes are reachable. No section-selector strip or repeated long story. The cinematic arrival is restored; actual content previews remain visible before opening a collection.
- [Mission Club](pages/missions.html): resume first; Explore, Companies, Challenges and Done. Company activities group into Apply, Recognise and Understand, so an eight-kind catalogue does not become eight full-height cards on arrival. Netflix is the implemented company fixture; the complete 80-company-mission library is not loaded into this prototype.
- [Case Study](pages/mission.html?kind=case): situation, reward, prerequisite, tap answers, explanations, resumable session and result. Company missions open after the first investment, and stay open after selling. All eight Netflix kinds have working question flows, using adapted source content.
- Local review path: Home → Netflix → quick quiz at **any score** → Your investment → ₹500 → review → confirm → Case Study → complete → Missions → Done. Alternatively read chapter 1, close midway, resume, finish and take its quiz.

## Company contract coverage

| Engine/content element | Presentation and working behaviour | Remaining production work |
|---|---|---|
| `POST /v1/companies/:id/open`, category, name, tagline, brand/art | Compact coral Netflix arrival, original product art; glossary and earning diagram before optional depth. | Bind actual response and server category lock. A company inside an open category is not locked merely because it is unseen. |
| Profile blocks, products, ID, founders, CEO, interesting numbers | Core business summary plus News/facts sheet. Legal name, location, founders, dated CEO/content snapshot, streaming date and dated subscriber figure retained. | Render optional/missing fields gracefully. Attach source dates to changing facts; “300M+” is a January 2025 demo story, not a live metric. Avoid historical assertions that were authored as illustrative narrative. |
| `learnUnitIds`, chapter order/start/complete/lock | Four working chapter readers; card progress survives dismissal and reload in this tab. Completion opens the next chapter; completed chapters can be reread. | Use LearnSheet’s unit start / cards-seen / complete endpoints; server-pinned version and progress. Empty chapter grid means more content is coming, not a level gate. |
| Quick quiz and chapter quiz roles | Separate quick entry and quiz disclosure; 3 quick questions, 5 chapter-1 questions, 3 per later chapter. Hints, explicit correct answers after wrong choices, results, retakes and resume. | Preserve randomized question/option IDs, feedback mode and server scoring. Static sample intentionally uses fixed options for review. Never ship its embedded correct-answer keys to production. |
| Eligibility and passport/journey | Any completed quick attempt opens investing. Header shows discovered → invested → mastered; chapter/quiz counts are independent. Selling does not erase history or mastery. | Use `passport.canInvest` and `toInvest` / authoritative journey. Source schema has more states than the simplified header; map all, reconcile eventually updated journey after a trade. |
| Watchlist | Both save controls synchronise; persistent across this visit. Saving Netflix completes the active two-company-watch mission because Apple is already saved in the fixture. | Shared passport mutation and invalidation. Mission step-count is one, but its internal target is two companies; need count facts to show “1 of 2”. Do not invent substep progress from `progressPct`. |
| Company missions | All 8 Netflix kinds, reward labels, actual prerequisite explanation, completion count, mastery and links to full detail. | Company endpoint already provides mission rows. Mastery denominator must come from **published kinds for that company**, not globally hard-coded eight. Three-kind demo companies must show three. |
| Price, holdings and investment history | Reviewed ₹500/₹1,000 buy, receipt, holding, reviewed sell-all, transaction history and shared wallet totals. No fabricated gain on purchase. | This fixture holds price unchanged and models rupee value only. Actual current/previous price, micro-units, cost basis, P&L, partial sale, rounding, price changes, market closure/retirement, pending/retry/idempotency need Money API binding and separate verification. |
| News `headline/childSummary/why/lesson/move` | Demo streaming event correctly describes a **rise**, with a short “watch this” idea. Separate from holding gain/loss. | Source event is +8% over a three-day window; do not label +8% as today’s holding return. Timeline/date/reach and event read/outcome read are distinct. News needs actual read acknowledgement and pagination. |

## Mission engine coverage

The source authoring README describes 118 mission rows, including 80 company activities across 20 companies. The UI must organise data, not assume one flat mission list or that every company has every kind.

| Engine capability | Design contract | Prototype / integration status |
|---|---|---|
| Mission type, theme/category, company kind, difficulty | Type chooses renderer. Category is theme; company is a filter. “Recognise / Understand / Apply” explains difficulty without age labels. | Netflix mission catalogue and three groups built. Discover now has the full 20-record company authoring directory and search, but the all-company mission library/selector remains. |
| AVAILABLE | Clear Start action, objective, steps and separately labelled XP / virtual cash. | Company activity after investing; daily reading fixture. |
| ACTIVE | Resume first; show actual step or question position. Close keeps this visit’s place. | Watchlist mission and saved company quiz rounds built. Multi-step engine needs target/action metadata below. |
| LOCKED | Explain exact prerequisite with relevant next route. No disabled mystery padlock. | Before-investment company activity and day-22 Food category preview built. Server gates and real unlocking not simulated. |
| COMPLETED, repeat count | Done library, receipt, optional revisit; no repeat payment for one-time activity. | Company and watchlist completion built. UI repeat counts and historical periods require server records. |
| ONCE / DAILY / WEEKLY / UNLIMITED | One-time activities are marked done. Periodic ones show next availability; unlimited still obeys reward policy. No countdown urging a return. | Daily done/rest state and weekly no-content state built. No live world clock or actual cooldown expiry. |
| Ordered event-driven steps | Show the current action only; route to the required company/unit/quiz/news/trade. Completion follows the engine event, not a self-awarded checkmark. | Watchlist + company quiz event concepts demonstrated locally. Full event-driven multi-step orchestration is integration work. |
| Start/resume and content versions | Start mission before its quiz. Reopening must return active attempt; replay is separate from start. | Local saved round works. API has start/detail and pins mission version; needs explicit nested action IDs and readiness. |
| XP, cash, speed bonus and mastery | One reward receipt. Distinguish learning points from wallet cash and investment return. Mission’s internal quiz must not pay base rewards again. | Company mission 20 XP + ₹25, speed +5 XP/correct first round, all-eight Netflix mastery +200 XP/no cash. Duplicate reward checks pass locally. Backend transactions/event delivery not tested. |
| Timed Speed Challenge | Explicit 60-second start; timer does not start on page arrival. Expiry accepts answers already given. Offer clearly separate untimed practice. | Timer, saved deadline, expiry and practice built. Practice gives no mission reward/mastery. This is an accessibility proposal requiring a production practice-mode contract. |
| Case Study / Business Builder | Persistent scenario, hints, tap-only choices, explanations. Builder retains source maths, with crore/lakh used consistently. | Both working; simplified case and hypothetical business values. No free-text gameplay input. |
| Founder / CEO / Product / Brand / Logo | Tap choices; teach meaning rather than test a list of dates or current executives from memory. | All five working. Logo Quest currently uses accessible text descriptions; real image options still require media in quiz option contract, loading fallback and alt text. |
| Category unlock | Intro mission opens the category’s companies together. | Discover now demonstrates Gaming intro → category open → company list refresh, with a one-time local reward. Food uses its authored day-22 arrival gate. Real server category gating remains. Do not build separate company unlock missions. |
| Level keys, listing window, retirement, zero-cash availability | Specific reason, relevant next action, world-day context; avoid encouraging spending to qualify. | Specified below, not working in this narrow sample. Low cash/zero cash is not a route to target deliberately. |
| Loading, error, empty and stale state | Inline “Loading your missions”; error + Retry; empty explanation + return; never turn an error into “no missions”. Pending action is single-submit; re-read after changed eligibility. | Empty Done, locked and no-new-content states built. Network states specified only: this static prototype has no backend/network. |
| Notifications, badges, progression and economy | Completed event may affect all these; update shared reads, show earned badge once, avoid duplicate reward toasts. | Local wallet/XP/mastery only. Level recalculation, badge awards, notifications and economy ledgers need integration. |

### Every condition family in `mission/engine.ts`

This is the source’s executable `STEP_RULES` map, not its older comment saying “eight” types. Each renderer needs a source target and supported parameters; unknown parameters intentionally do not complete a step.

| Condition | Useful action / state | Demonstrated here? |
|---|---|---|
| `COMPANY_DISCOVERED` | Open specified company | Company arrival; no general mission event bus |
| `LEARN_UNIT_COMPLETED` | Read specified unit/chapter/category; respect new-this-week filter | Four chapter readers; weekly unavailable preview |
| `QUIZ_COMPLETED` | Start target quick/chapter/mission quiz | Working local question flows |
| `INVESTMENT_CREATED` | Review a buy; company, size/listing predicates are authoritative | Local buy; size/listing gates not simulated |
| `INVESTMENT_HELD_DAYS` | Explain elapsed world days; do not fabricate “complete” action | Specification only |
| `MARKET_EVENT_READ` | Read matching company/category/market event; check today/held-only | Daily event fixture; filters require actual event facts |
| `PORTFOLIO_VALUE_REACHED` | Explain total-value target without promising a gain | Specification only; do not call arbitrary portfolio-only value “net worth” |
| `STREAK_REACHED` | Existing consecutive-day condition | Intentionally omitted from child UI; cumulative-learning replacement is an explicit proposed rule change |
| `OUTCOME_EXPLAINED` | Tap a reason from authored options | Contract exists; outcome flow not built in this revision |
| `WATCHLIST_ADDED` | Save required number; current count | Working two-company fixture |
| `SALE_CREATED` | Review sale of requested company | Local sell-all; general mission tracking remains |
| `MISSION_COMPLETED` | Open named mission or a mission of required kind | Eight company types; chained game missions not simulated |
| `HOLDINGS_ACROSS_CATEGORIES` | Explain spreading investments; count qualifying holdings/categories | Specification only; do not promise diversification prevents loss |
| `HOLDING_SOLD_BEFORE_DAY` | Retirement notice + explicit world-day deadline + sale | Specification only; no urgency/reward bait |

## Application and contract gaps found

1. **Mission detail is currently a placeholder.** `apps/web/src/app/routes.ts` declares S21b `/missions/:id`; `App.tsx` registers S21 but not S21b, so its fallback is `Placeholder`. This proposal supplies a concrete detail/runner/result design, not an assertion that the app route is fixed.
2. **Cooldown is missing from list readiness.** `listMissions` marks a repeated completed daily/weekly mission AVAILABLE if its other gates pass. `startMission` rejects it until 1/7 elapsed days after last completion. Add authoritative `nextAvailableAt` and a resting state to list/detail; use the same calculation for start. Confirm whether the product intends elapsed windows or calendar/world-day resets. Do not guess “midnight”.
3. **Detail status is not eligibility.** `missionDetail` returns latest attempt status, default AVAILABLE; it does not reproduce list prerequisites/availability. Detail must include the same lock reason and start permission. Handle start rejection by refreshing and explaining, not leaving a spinning button.
4. **Steps lack executable targets in detail.** Response includes index/title/conditionType/status, but omits the condition’s quiz/unit/company/event IDs. A generic mission runner cannot safely infer a quiz ID from a title. Add typed `action` metadata with target ID, mode and gate reason, or a resolved action endpoint; retain server-side checking. Also return repeat/availability metadata in list so the UI can group and explain readiness without fetching every item.
5. **Mission response types lose data.** List backend returns cashReward, availability and keyLevel; `Missions.tsx`’s `MissionRow` and list presentation omit them. Company mission backend similarly returns cashReward beyond its front-end interface. Use a shared typed contract; show XP and cash separately, including zero rewards. Front-end difficulty is typed as string though authored difficulty is numeric.
6. **Counts inside a step are not step completion percentages.** The watchlist mission has one engine step, `count=2`. Our “1 of 2” uses the synthetic Apple watchlist fact. Return supported target/current counts or join the correct state read. Do not display 50% from a guessed half-complete engine step.
7. **Prior actions and ordered steps need a defined policy.** The engine advances only active missions’ current step from matching events. Some state predicates are checked on MISSION_STARTED; many past quiz/read/discovery events are not. Verify onboarding and later-start missions cannot ask a child to repeat a previously completed, non-emitting action. Either reconcile durable evidence on start or clearly request a new repeatable action. This is a source-derived risk requiring tests, not a verified staging failure.
8. **Post-investment company access needs server proof.** The UI here preserves the agreed “after first investment” gate. Generic `startMission` checks configured availability/prerequisites/zero-cash, without an obvious company-investment check in that function. Verify published unlock definitions or add a server check; a client-only disabled control is insufficient. Retain access after selling if the rule uses ever-invested history.
9. **Renderer contracts need completion.** Quiz engine has scenarios, time limits and correct-option feedback. Current QuizSheet does not supply the full specialised Case/Builder/Speed experience; Logo Quest needs option media. Untimed practice needs explicit no-reward mode. Use mission start → quiz attempt → mission event → one receipt, with pending completion handling if event delivery lags.
10. **Content still carries outdated or misleading instructions.** `missions.py` contains “write one line”, while actual `OUTCOME_EXPLAINED` is tap-to-answer; source copy also says speed proves knowledge, promises diversification protects everything, and treats future price outcomes too certainly. Replace these instructions in the authoring workflow. In this prototype, case/chapter explanations now state uncertainty, CEO questions teach the role, and builder wording no longer guarantees the idea pays off.
11. **The previous prototype inverted the Netflix news outcome.** Source `MARKET_EVENT_NETFLIX_NEW_BET_001` is a positive +8% event. Old checkpoint prose only talked about less money/cost, implying a negative outcome. The revised news explicitly describes investors’ mixed expectations and the scripted rise; it makes no claim about the player’s return.
12. **Rewards have multiple competing proposals.** The generator’s actual company mission columns are 20 XP / ₹25, while `v5:perKindXp` proposes different amounts; daily/weekly source values are 300 XP / ₹150 while pacing notes propose smaller rewards. This prototype displays current authored reward columns. Those amounts are not approved here as a sound economy. Rebalance explicitly, test money creation, and do not accidentally ship proposal metadata as settled reward rules.

## Proposed changes to existing rules or content

Aastha authorised fixing weaknesses even when a prior rule constrains them, with a note in the proposal. These changes are local design proposals, not edits to the decision log:

- Replace warm paper, muted plum and forest green with white, blue `#3E28E0`, mint `#23F8B5`, yellow `#FFE447`, coral `#FF6555` and dark ink `#191735`. Keep dark text on bright fills; company colour never carries status alone.
- Replace the long company sequence and anchor selectors with visible chapter/activity previews. Use sheets for collections and short contextual actions, a dropdown for reader chapter selection, and pages for substantial mission activities. Short business explanation and quick quiz remain visible.
- Replace trivia-heavy quick/recognition questions with useful business concepts. Actual question edits must go through versioned content publishing. Fixed local review answers are not the randomized server question pool.
- Offer untimed Speed practice without reward/mastery; keep the optional timed version and existing timer reward separately. Do not claim response speed measures understanding.
- Remove attendance-pressure language. Proposed replacement for streak-conditioned rewards remains cumulative learning; the engine’s streak condition is still unchanged.
- Insert explicit trade review and receipt; show later market events separately. The local sale preview is sell-all at an unchanged fixture price, not the complete Money engine.
- Correct unsupported historical/causal certainties and inconsistent company references. Scenario text is explicitly hypothetical where simplified; retain actual chronology only where source verification supports it.

## Whole-product boundary

The company and mission surfaces now cover substantially more than the earlier checkpoint. The rest of the product remains incomplete: onboarding/adult/privacy, live Discover publication/scheduling and complete learning/trading for all companies, live market and outcomes, partial sell/transaction precision, notifications, badges, weekly recap, profile/settings/reset, break timer and actual progression/economy. The F01–F31 register in [rationale](rationale.md) tracks these. No claim of full engine coverage, production accessibility, real-child usability validation or application defect fixes is made from a static prototype.

## Verification and reproduction

`python3 adapt-content.py` then `python3 render-pages.py` regenerate local data and pages. HTML runs directly from disk. `node verify.mjs` uses the existing installed Playwright and local Chrome; paths are recorded in the runner. `verify-static.py` checks links and selected palette pairs. Captures and JSON evidence are in `captures/`.

Checks cover 360/393 widths and desktop review frames; no horizontal overflow, broken images, undersized enabled controls, body text below the 12px metadata floor, uncaught JS errors or external requests on initial pages. Interaction checks cover the zero-score gate, repeat-reward protection, chapter resume/order, mission lock/resume, all eight company kinds, practice/timer expiry, mastery, buy/sell review and wallet reconciliation. These are local integration checks, not backend event/idempotency or screen-reader certification.


## Revision 4 — world navigation and Discover

- All Home district signs are real links: Tech → `discover.html?district=Tech`, Entertainment → its filter, Food → its preview/gate. The companion bubble is guidance, without button styling. The resume ticket is a distinct mission action and changes after that mission completes.
- Bottom navigation’s Discover link always opens `discover.html`, including from Netflix and mission pages. Netflix’s back link restores its Entertainment context. Other company previews return to their own district.
- Search and district filtering operate over 20 authoring records from `demo-content/companies.py`. Netflix links into the complete interactive sample. Other cards open individual field notes, with actual product/business content; they do not silently redirect to Netflix or pretend to implement all companies’ quizzes/trades.
- This is an explicitly constructed historical world-day-9 fixture. `lists_on` gives company arrival; the first authored company arrival is used as the **prototype district preview date**, not claimed as an authoritative category-unlock contract. Tech and Entertainment are initially open; Gaming is introduced locally. Production must use published content, actual category unlocks and server calendar reads. The source roster includes Electronic Arts and Warner Bros Discovery; later engagement notes say they are no longer listed. They remain historical authoring examples here, not a statement of the current staging catalogue. Production must not replace current publication state with this static roster.
- The previous level-2 Food fixture lacked support from this authoring schedule. Replaced it with the day-22 arrival and noted this correction rather than preserving an invented level gate.
- Category intro completion adds 100 XP / ₹100 once locally and opens listed companies together. Future individual listings remain future; reading Gaming’s intro does not open Electronic Arts before its authored day 29. Rereading gives no second reward. There is no real market clock here.
- Company libraries use native dialogs. Visible book covers and icon cards identify content and progress before opening. Chapter titles also appear in a reader dropdown; future chapters are disabled until their predecessor is read. Company facts use a small in-sheet disclosure. Large mission scenarios retain their own pages.
- Additional checks cover all three district links, standalone Discover navigation, product search, no results/recovery, company-specific previews, Food’s arrival notice, Gaming intro unlock, duplicate intro rewards and chapter-library focus return. Sixteen page/width combinations now cover eight pages at 360 and 393 px.

## Test C checkpoint one · 11 October 2026 (current coverage)

| New surface | Working local behaviour | Existing source evidence and production boundary |
|---|---|---|
| S15 Breaking News | Gain / loss / unchanged Netflix stories; one next link to the matching Learning Moment; both bands | Uses C5 sample text. Existing market/outcome reads were observed in the earlier audit; no fresh app read or API verification this session. No claim of acknowledged event reads or delivery timing. |
| S16/S17 Learning Moment | Exact paise, three ordered values, sign-matching headline, reason/watch; working folded/open by band; no update without an explicit later-day fixture | `/v1/money/outcomes`, embedded event and `holdingNow` are the earlier observed inputs. Snapshot basis/time and total-cost vs event-move reconciliation must be confirmed. Company/holding return is derived only for the one-purchase fixture. Market/category decomposition is omitted pending Engineering. No money or XP reward for opening it. |
| S18 Portfolio | Empty, single holding for each sign, multiple holdings, dated update, contextual return to the same moment; normal route reconciles inherited Apple and working Netflix balances | Existing `/v1/money/portfolio` is reusable. Server prices, cost basis, units, as-of timestamps and event reasons need binding. Read-only examples are separate from the working buy/sell store; no fixture values are submitted. Sale controls arrive with the next checkpoint. |
| S29 Profile, dependency slice | Existing wolf, fictional nickname, persistent tab-local band select; identical layout for both bands | Full Profile is not complete: no level computation, hero picker, parent authorisation, settings or reset. Production needs a parent-owned preference and age-derived default. Query overrides are internal review links only. |
| S7 Home density | One wallet headline, no holdings/net-worth tiles; existing district/resume actions retained | Same local money store; no reward/economy changes. First-run/learning-moment-waiting states and complete paired copy remain due. |

C5 Netflix arrived during the session and was merged from `main` at `a710869`. The adapter records source SHA-256 in `c5-reflection-data.js`; it does not mutate authoring data. Only outcome/sample/reason/watch fields are integrated in this checkpoint. Passport, chapters, quizzes and missions continue with revision 4 until the corresponding band/content pass. C5's three-option quiz versus the brief's four is reported; do not silently change the brief or invent another authoring option. Portfolio Apple copy remains a generic purchase snapshot; request Apple next from content.

**No broad-market number is available here.** Do not use the derived sample percentage as a promise that Engineering exposes separate market/category/company contributions. C5's +8% three-day event is not a one-day engine guarantee. Whole-rupee presentation remains an unratified content recommendation; exact integer paise underpin this sample.

Reproduce from this directory, in this order (the static check must precede the checkpoint check, which adds rendered contrast results):

```zsh
python3 adapt-c5.py
python3 render-pages.py
node verify.mjs
python3 verify-static.py
node verify-reflection.mjs
node verify-copy.mjs
```

The existing baseline remains 16 width/page checks. New evidence adds 48 (24 states across both bands × two widths), 57 interaction assertions, and ten rendered text-colour pairs. Full reading captures make the nav static only for capture; viewport captures show its actual sticky position. JSON reports fail closed for an interaction exception. Full §7, all legacy copy bands, complete keyboard/assistive/device testing and engine integration remain open.

### Version control

| Version | Date | Author | Changes |
|---|---|---|---|
| 0.5 | 2026-10-11 | Alfred, Test C product designer / front-end prototyper | Record first brief-led checkpoint, C5 integration and explicit API/fixture boundaries; earlier revision 4 audit retained. |


## Company journey revision — 11 October 2026

Operator-directed focus: company page only and its connected reading/quiz/mission/decision surfaces. Full brief §7 remains incomplete.

| Surface / behaviour | Current prototype | Engine/content implication |
|---|---|---|
| Brand/activity palettes; real upright logo; watchlist selected state | Implemented; same saved boolean, two synchronized controls | UI tokens and asset mapping; no new game rule |
| Share price → holding value status | Authored ₹1,100 price; working holding unchanged; supplied gain/loss/no-change component examples | Quote time/basis, holding current worth, purchase cost and precise units must come from one coherent read. No new market simulator added |
| Next-learning CTA | Derived from quick quiz, chapter completion, chapter quiz, eligible mission; optional deferral | Existing progress can support most logic; persisted suggestion deferral is new presentation metadata, not a gate |
| Basics chapter | Six cards composed from C5 passport + existing first chapter; existing reward and quiz retained | Content reshaping/migration; preserve completion IDs and validate old reading positions |
| Concept unlock/review queue | Six local concept definitions; chapter completion unlocks; review/revisit persists in session state | **New content and progress contract**: concept IDs, definitions, unlock links, review completion. No rewards or mastery added |
| Quiz row | Next eligible quiz + unique questions explored + repeatable library | Existing attempts/rounds; question counts derived once per completed quiz, no new scoring |
| Picture Logo Quest | Two supplied logo choices and equivalent text descriptions | Media fields/alt-equivalent question authoring; Content must accept distractors and age difficulty |
| Missions | One suggestion/resume point; grouped library; first-investment gate retained after sale | UI reorganization; no change to rewards, eligibility or eight-kind mastery |
| Company news | One supplied event featured, one dated company story in archive; fallback and empty state | Active relevant company/global feed, priority/expiry, source dates and pagination are pending contracts, not fabricated engine support |
| Company facts/products | Visible own section; C5 mini-question is unscored | Existing company data/content; no XP for tapping a preference |
| Investment education | Provisional reasons/risks/self-check + existing preview and purchase/sale flows | Final child-voice/content acceptance with orchestrator; no financial risk-rating calculation or investment recommendation |
| Reading/pages/sheets | Full route for chapter, concept, story; native sheets for libraries/choices; focused quiz dialog | Front-end routing/resume work; no app repository edits made |

C5 company copy is loaded on Netflix company/reader/mission-detail surfaces in both bands, leaving unrelated directory/Home/global-mission layouts in their prior checkpoint. New draft concepts were simplified using C5’s grade checker. Other companies’ concepts, global events, risk profiles and retirement flows are not invented. No real API is called; state is session-local, fictional and not production persistence.

Evidence: `captures/company-checks.json` (68 views / 63 assertions), `captures/company-grade.txt`, `captures/company-copy.json`; consolidated checks/contrast and static references updated. Original 16-view and 48-view checkpoint regressions pass. Build cost is moderate UI/routing work plus new concept/content/progress design and a coherent quote/feed read contract; no money/date commitment made.

## Palette and icon revision — 12 October 2026

Aastha supplied Karan's profile reference and the KidStock palette, then requested the palette throughout the prototype and a three-column company status strip. Merged `main` at `3d83bb2` first and read the central-company-list handoff. The published `child-voice/COMPANY-LIST.md` now supplies all 20 directory names and their order; the adapter records its path and SHA-256. Netflix, Apple and Starbucks remain the three companies to model in full. No company request was sent to Content; tentative replacement candidates are not substituted for the published roster.

`palette.css` is the shared final token/style layer on every delivered page. Learn uses Bright Mint, quizzes Sunny Yellow, missions Quest Purple and invest Cinema Coral. KidStock Blue serves general brand/navigation; Netflix retains red company identity. The supplied status and neutral colours are also recorded exactly. Light shades and gradients carry dark text; saturated colour supplies icon/edge accents. Neutral grey denotes unavailable actions. Text contrast is checked across gradient stops and intermediate blends, including the company and outcome suites.

`icon-language.js` supplies rounded native SVG illustrations with one light source, shaded edges, restrained highlights and soft shadows. Books, concepts, quizzes, missions and investment use a consistent family; five status designs distinguish discovery, watchlist, investment, previous investment and mastery. Navigation retains simple outlines and every decorative icon has an adjacent readable label. The actual company logo stays upright. This adapts the reference's dimensional language without adding a raster dependency.

The hero strip now shows **status icon + label | holding value | share price**. Holding and price movement have independent arrows, words and comparison periods. With no holding the middle says “Not invested yet”; after sale it says “No holding”. The working practice quote remains ₹1,100 with no invented market tick. The read-only gallery demonstrates seven states. Aastha's explicit request for two values overrides the earlier single-number density rule only in this company strip; outcome/Portfolio headlines retain their existing hierarchy.

Verification: palette suite **24 views / 30 assertions**, company suite **68 views / 63 assertions**, outcome/Portfolio suite **48 views / 57 assertions**, original regression **16 views**, all passing. Checks cover 360/393 widths, both bands in the journey suites, independent holding/price movements, central roster identity/order, overflow, images, enabled target size, text size and contrast. The final shared-palette change only alters a Home eyebrow's text colour after the wider regression. Browser and formula checks are not child-comprehension, screen-reader or physical-device certification. `verify-palette.mjs` adds its results to consolidated checks/contrast; `render-palette-review.py` preserves style/contact-sheet review sections.

### Integration boundary and next content pass

This is presentation work; no engine, rewards, eligibility or money-storage rules changed. Production must provide status, holding value/purchase basis, share price/previous quote and separately named comparison periods. Palette/icon adoption is shared UI work; the quote contract remains the substantive integration dependency.

The latest merge includes C5's expanded six-chapter Netflix source and twelve mission formats. The currently delivered interactive content remains the previously pinned four-chapter/eight-kind snapshot. Adopting the latest content requires explicit adapter/progress-ID migration and format interactions; it is **not claimed complete** by this visual revision. Apple and Starbucks still need their full journey implementation. All three remain in the agreed full-model scope. Prior instructions in this audit to request company choices from Content are superseded: use the central published list, without asking Content for companies. Remaining brief §7 states and final investment content remain open; company-page review continues first.

Reproduce visual checks after the existing suites: `node verify-palette.mjs`. Run `python3 verify-static.py` before rendered suites when rebuilding consolidated evidence. Do not regenerate `company-content.js` against the new chapter source until the progress migration is implemented.

| Version | Date | Author | Changes |
|---|---|---|---|
| 0.7 | 2026-10-12 | Alfred, Test C | Palette/status implementation, central list adoption and explicit current-content migration boundary. |

### Solid activity colours — 12 October follow-up

Aastha rejected the activity gradients and requested bright solid shades. Activity cards, CTAs, headers, reader/dialog fills and review swatches now use solid mint #23F8B5, yellow #FFE447, purple #A78BFA and coral #FF6555. Related surfaces use solid tints; unavailable actions stay grey. The purple shade preserves readable dark text. Company/brand identity and dimensional illustration shading are unaffected. No interaction, content or engine changes. This supersedes the activity-gradient styling described earlier today.

| Version | Date | Author | Changes |
|---|---|---|---|
| 0.17 | 2026-10-12 | Alfred, Test C | Replace activity gradients with bright solid fills at operator request. |

### Selected clay family — 12 October

Operator-selected B is applied using one transparent atlas and a shared ten-icon renderer. Exact supplied solid activity/status fills replace modified shades; readable foregrounds are paired with them. No engine/content/progress changes. Atlas and prompt are local assets, with no external requests or runtime image generation. Palette and company checks pass; full journey/content gaps recorded above remain open.

| Version | Date | Author | Changes |
|---|---|---|---|
| 0.20 | 2026-10-12 | Alfred, Test C | Selected clay asset boundary and exact palette implementation. |


## Clay navigation and Netflix banner — 12 October 2026

Aastha supplied a raised-clay navigation reference and asked for KidStock blue behind five tabs. Navigation now uses #3E28E0 with small grayscale clay icons for inactive tabs; the current tab returns to colour, grows, rises and tilts across the blue bar's upper edge. A 430 ms tap transition lets the object settle before following the existing link. Ordinary anchors remain the fallback; modified clicks retain browser behavior; keyboard activation works; reduced-motion mode skips animation and delay. Labels stay readable (minimum measured contrast 5.87:1) and the selected tab also has an underline and `aria-current`. A reserved white strip gives the raised art space clear of the page copy.

Home and Profile extend the selected gradient-clay family with a two-cell transparent atlas. Discover, Missions and Portfolio reuse the existing compass, flag and wallet. The original ten-icon atlas and explicit crop boundaries remain intact. New artwork and its exact built-in image-generation prompt are committed locally. No remote asset dependency.

Netflix's logo is now left of the complete heading block (Company Journal, Inside Netflix, tagline), with its original red/white brand colours retained. The wording “color model” was queried as potentially “column”; the reversible column interpretation is implemented, with colour feedback still pending. No product copy, rewards, content snapshot or progress IDs changed.

Evidence: navigation 12 views / 43 assertions at 360 and 393 px; all five routes, raised-state geometry, keyboard, reduced motion, back navigation and watchlist persistence pass, no JS errors. Company regression 68 views / 63 assertions, palette 24 views / 30 assertions and original clay alpha/crop 30 checks pass. The final nav spacing adjustment was then covered by the navigation rerun; those larger suites preceded that isolated spacing change. Review: `navigation-review.html`, `pages/company.html`, `captures/navigation-checks.json`. These remain browser checks, not child testing or physical-device certification.

Tooling: refreshed installed `browser-use@openai-bundled` 0.1.0-alpha2 through `codex plugin add`; confirmed its existing enabled state. The required browser execution tool remains absent from this running session, so verification used the installed Playwright package and local Chrome. No substitute cloud connector or credential access.

| Version | Date | Author | Changes |
|---|---|---|---|
| 0.25 | 2026-10-12 | Alfred, Test C | Clay nav, matching Home/Profile assets, Netflix column swap, interaction evidence and tooling result. |


## Pop palette and clearer value cards — 12 October 2026 (current)

Aastha’s latest image **supersedes the earlier 18-colour board and the blue nav specification**. Canonical UI palette now lives in `palette-spec.json`: Purple #8400FF, Pink #FF00A1, Lime #90FE00, Cyan #00F5FF, Yellow #FFE600, Orange #FF7300, Growth Green #22E274, Fall Red #FF4B4B; White #FFFFFF, Navy #0B1220, Light Gray #F3F4F6, Soft Cream #FFF9EE. The Style Tile shows all 12 exactly once. Roles: purple primary/nav/missions, pink quizzes, lime learning, cyan exploration/price, orange investment, yellow highlights. Netflix’s own red identity is retained. Gradient-clay artwork stays selected; solid UI fills use the new board.

Text uses the readable combinations supplied on the board: lime/white/yellow on purple, purple on lime/yellow/cream, navy on pink/cyan/orange/green/red. The illustrated yellow-on-pink (2.87:1) and white-on-orange (2.73:1) examples do not meet the brief’s normal-text contrast rule; navy alternatives from the same board are applied. Latest selected solid pairs: 20, minimum 4.53:1; nav labels minimum 4.78:1. Hover now preserves each activity’s fill/foreground pairing.

**Netflix status:** one compact clay status badge above two aligned cards. The holding sits on cream; share price sits on cyan. The price remains ₹1,100 in the working snapshot. Arrow and percentage are on the next line, in a compact chip; the redundant “No change at this snapshot” sentence is removed. Nonzero sample moves use arrows, signed values and green/red chips. Holding change is in ₹ against purchase basis; share-price change is % against the previous quote, each with a separate period when meaningful. The operator’s request authorizes percentage in this status component only; the Learning Moment’s density/working rules are unchanged. Missing/zero previous-price basis hides the percentage rather than inventing one. No new market ticks or engine claims.

**Fresh verification of this final palette/status revision:** static 20 contrast pairs and all local links pass; company 68 views / 63 assertions; palette/status 24 views / 36 assertions; existing reflection states 48 width/band views / 57 interactions; nav 12 views / 43 assertions. No JS errors, broken images, overflow, target-size or rendered contrast failures in these runs. Checks include signed percentage maths, movement below price, independent holding/share directions, no snapshot sentence, keyboard, reduced motion, back navigation and preserved watchlist. Original atlas 30 crop checks passed after adding the Home/Profile companion atlas; original sprite logic is unchanged by the palette update. Baseline 16-view captures are historical, not a fresh full-brief certification.

Visually inspected the final 12-colour gallery, Netflix header/status, the opposite-movement sample and the nav transition. Review `navigation-review.html`, `style-tile.html#text-colour`, `pages/company.html` and `company-status.html`. All artifact paths are listed in `deliverables.txt`; this continuation’s changed files are listed in `revision-2026-10-12-nav-palette-files.txt`.

Browser plugin setup: supported installer refreshed `browser-use@openai-bundled` 0.1.0-alpha2. It is installed/enabled, but this running session still has no browser execution tool. Checks used existing local Playwright/Chrome. No unsupported runtime/config workaround was installed.

**Continue with operator review.** This implements the nav, banner, new status layout and supplied palette; it is not whole-Test-C acceptance. C5 six-chapter/twelve-kind migration, full Apple/Starbucks, final investment teaching and remaining brief §7 states are still open. No content-lane or application edits, no merge back/push/publication.

| Version | Date | Author | Changes |
|---|---|---|---|
| 0.26 | 2026-10-12 | Alfred, Test C | Apply latest pop palette, twelve examples, redesigned value cards and separate price movement; final evidence and scope. |


## Company correction · 12 October 2026 (session §20)

Aastha rejected the §19 status-card redesign and clarified that the Netflix instruction meant flipping columns, not changing colours or text order. This section supersedes §19's company layout and cyan/price role; the supplied general pop palette remains current.

Restored a compact, three-column status strip in Netflix's pale red (`--company-light`, #FFD8DE), with dark red text throughout. Discovered no longer has a cyan badge, and holding/share price no longer have separate cream/cyan cards. Arrow and percentage remain below the share price; the redundant snapshot sentence remains removed. Header: Netflix logo in column one, the original Company Journal → Inside / Netflix → tagline stack in column two. Restored the original tagline's natural wrapping, title scale and smaller logo; no company colours or wording changed. Removed added CSS icon drop shadows and the logo's offset shadow; retained the selected clay artwork and nav motion.

Fresh checks: navigation 12 views / 43 assertions; palette/status 24 views / 36 assertions; 656 links and 20 selected contrast pairs pass (minimum 4.53:1). Visually inspected both 360 and 393 px company captures and refreshed status/transition evidence. No overflow, broken images, rendered contrast failures or JavaScript errors in those runs. Existing company/content/reflection regression reports predate this isolated presentation correction; no content/state logic changed and no full-brief completion is claimed.

Review http://localhost:8765/pages/company.html and `navigation-review.html`. Changed-path inventory: `revision-2026-10-12-company-correction-files.txt`. Continue with Aastha's review; no acceptance inferred. C5 migration, full Apple/Starbucks, investment teaching and remaining §7 scope remain open. Same Test C ceiling, local commit only; no merge back, push or publication.

| Version | Date | Author | Changes |
|---|---|---|---|
| 0.27 | 2026-10-12 | Alfred, Test C | Correct Netflix column/brand interpretation, compact status strip and remove added icon shadows; resume §20. |


## Three Style Tile text corrections · 12 October 2026

Aastha explicitly corrected three Style Tile text/background pairs: **yellow #FFE600 on pink #FF00A1; white #FFFFFF on orange #FF7300; white #FFFFFF on fall red #FF4B4B**. Applied in canonical `palette-spec.json` v3 and the generated Style Tile, including the tile headings, samples and pairing labels. This overrides §19's navy substitutions for these three review tiles. Other page text roles and §20's company identity correction are unchanged.

Local Chrome verified all three computed text/background pairs; gallery visually inspected and gallery/360/393 captures refreshed. Evidence: `captures/tile-pair-corrections.json`. These exact operator-directed pairings are below 4.5:1 normal-text contrast, so the earlier statement that every Style Tile pairing meets that threshold was removed. Earlier all-pass palette evidence predates these three corrections; this checkpoint confirms exact requested colour rendering, not a fresh contrast pass.

Continue Style Tile/company review with Aastha. Full C5/Apple/Starbucks/remaining §7 work remains open. Same Test C authority ceiling; local branch checkpoint only.


## Text pairings across pages · 12 October 2026

Aastha asked whether the three corrected pairings had reached the rest of the pages. They had previously been applied only to the Style Tile. Now propagated through shared page styles: yellow #FFE600 on pink quiz surfaces/buttons; white #FFFFFF on orange wallet, investment and news surfaces; white on fall-red incorrect-answer and down-status fills. Foreground tokens and specific component overrides agree. Netflix company identity and text on cream/white panels remain unchanged.

Fresh local Chrome audit: **80 rendered page/state/width views, 226 text instances on the three target fills, zero mismatched foregrounds, overflow or JavaScript errors**. Covered all eleven page routes, checkpoint gain/loss/flat and age-band samples at 360/393, quiz question/answer feedback, quiz/investment libraries and a fall-status sample. Visually inspected quiz feedback and the Home wallet captures. Evidence: `captures/page-pair-corrections.json` and `captures/pairs-*.png`. This checks faithful application of the operator's pairings; the below-4.5:1 contrast limitation recorded in §21 still applies. Earlier blanket contrast-pass reports are historical.

Continue operator review. C5 migration, full Apple/Starbucks journeys and remaining §7 work remain open. Test C scope and ceiling unchanged; local commit only, no merge back or push.


## Individual nav icons and Discover options · 12 October 2026

Aastha finalized the **Home house, Missions flag, Portfolio wallet and Profile bust designs** and requested more stock/exchange-oriented Discover options, five distinct icon colours, no shadows, and individual usable assets. Preserve those four approved forms; Discover selection remains open.

Built-in image generation produced eight individual **1254 × 1254 RGBA PNGs**, saved unchanged under `assets/nav-clay-v2/`: `home-cyan.png`, `missions-purple.png`, `portfolio-orange.png`, `profile-pink.png`, and four green Discover options: **A market screen, B share stack, C exchange hall, D trading loop**. Original approved forms guided extraction/recolour; Portfolio is orange, Profile pink, Home cyan and Missions purple. Each asset has real alpha, unclipped visible silhouette and no visible ground/cast shadow; only internal clay form shading remains. Exact prompts: `nav-icon-generation-prompts.json`; metadata and all-eight-PNG ZIP beside the assets. Original atlases are retained for activity/status icons.

Review at **http://localhost:8765/nav-icon-options.html**: five-colour lineup, all four Discover alternatives, live nav preview, individual PNG downloads and the ZIP. Recommend A for the small-size stock-chart silhouette. **A is provisionally previewed in the prototype, not operator-selected as final.** The review buttons let Aastha compare alternatives without claiming approval. All prototype navs now consume individual PNGs. Inactive icons remain small and muted but retain their own hues (the previous grayscale filter made different source colours look identical). Pop/tilt, keyboard, reduced motion and route behavior retained; no CSS shadows added.

Fresh evidence: nav regression **12 views / 43 assertions**, minimum nav label contrast 4.78:1; Discover review **33 assertions** across 1400, 393 and 360 px; eight RGBA/margin inspections. No missing assets, horizontal overflow or JS errors in those browser runs. All **690 local links pass**. The combined static script still exits nonzero solely for the three operator-requested text/background pairs from §§21–22 (minimum 2.73:1); current contrast report records this honestly. Visually inspected all generated assets, corrected desktop comparison layout and the company/nav screenshot. Other content/company suites are earlier evidence, not a fresh full-brief pass.

**Next:** Aastha chooses Discover A/B/C/D; then pin that asset across navs. Four other icon forms are final. Broader C5 migration, full Apple/Starbucks and remaining §7 work remain open. Same Test C ceiling; local commit only, no merge back, push or publication. Browser execution tool still unavailable; existing local Chrome/Playwright used for checks.


## Final Discover and nav states · 12 October 2026

Aastha selected **Discover C, the exchange building**, and directed **Discover pink / Profile lime**. This resolves §23's open icon choice. Home cyan, Missions purple and Portfolio orange remain the other three final designs/colours. Built-in image editing recoloured only C and the profile bust, using their individual v2 PNGs as edit targets; exact prompts in `nav-icon-final-prompts.json`. Final five individual RGBA assets and ZIP: `assets/nav-clay-v3/`. The other three PNGs were copied unchanged. v2 alternatives remain historical.

User explicitly reversed the last inactive-colour treatment: **all inactive icons are now grayscale; only the selected icon carries colour**. Active label and underline share its colour family: cyan Home, pale pink Discover, lavender Missions, apricot Portfolio, lime Profile. Highlight tints keep nav labels readable on purple (minimum measured 4.53:1). With no selection, all icons and labels are neutral and no underline appears. No cast/CSS shadows added. Nav uses equal-width tab columns and consistent icon/label rows; minimum inactive icon-box-to-label gap is 7.81 px at tested sizes. Raised tilt/pop motion retained.

`nav-icon-options.html` now reviews the **final set**, with selectable nav tabs and a “Show none selected” control; earlier green alternatives sit in a collapsed history section. Mobile preview spans the actual viewport width to avoid squeezing its labels. The prototype uses the pink exchange and lime profile on every nav.

Fresh checks: nav **12 views / 43 assertions**, final-state review **72 assertions / 15 selected states plus three all-grey states** at 1400, 393 and 360 px. Verified correct PNGs, active colour/underline match, grayscale inactivity, spacing, keyboard and reduced motion; no broken images, overflow or JS errors. Inspected all five selected captures and the all-grey capture. **690 links pass**. Combined static script still exits nonzero solely for the three previously operator-directed text contrast pairs (minimum 2.73:1); this is recorded, not hidden. Other application/content suites are earlier evidence.

**Continue company/style review with Aastha. No icon choice remains pending.** C5 migration, full Apple/Starbucks and remaining §7 work remain open. Same Test C ceiling; local commit only, no merge back or push. Browser execution tool remains unavailable; local Chrome/Playwright used for evidence.


## Floating navigation and Aaira’s Netflix journal · 12 October 2026

Aastha requested a **floating nav**, a transparent area above its painted dock, similar inactive grey tones, a paired background for each active icon, and an all-grey no-selection state. She also supplied Aaira’s Netflix/Starbucks reference images and PF Reminder font files under `raw/client-kidstock/aaira-test-c`, and asked for the company page to follow that illustration direction.

**Nav shared across all prototype routes:** 12 px side insets and 14 px bottom clearance (safe-area aware); all four corners rounded. The outer nav is transparent, so content remains visible around the raised icon. Desktop docks stay within the phone frame; mobile docks float within the viewport. Extra scroll space keeps bottom actions reachable. Approved v3 PNG forms/colours remain unchanged: Home cyan, Discover exchange C pink, Missions purple, Portfolio orange, Profile lime. Active icon rises/tilts; label and underline share its colour family. Background pairs: Home navy `#0B1220`, Discover pale yellow `#FFF3AE`, Missions pale lime `#DBFFAF`, Portfolio cream `#FFF0DD`, Profile purple `#8400FF`. No-selection fill is grey `#E3E4E7`, with all-grey icons/text. A grayscale + compressed-contrast display filter normalizes the five source colours: measured mean grey spread **13.07/255**, no RGB channel difference. No icon shadows added. Review all five pairs and none at `http://localhost:8765/nav-icon-options.html`.

**Netflix journal:** Aaira’s newer illustrated reference supersedes the earlier logo-left/heading-right composition. PF Reminder headings (three supplied OTF weights copied unchanged into `assets/fonts/`); white “Inside” / yellow “Netflix.” on the red hero; organic purple/cyan background shapes; a cinema chair/popcorn/remote illustration on the right. Rounded pale pink status retains movement below the share price and omits the redundant no-change snapshot line. Status icon is tinted toward Netflix’s red family. Cyan business idea card with clapperboard artwork and an operable highlighted glossary term; four pastel “What They Do” cards; illustrated story CTA. Existing learning, quiz, mission, watchlist and investment controls/progress are retained. This company adaptation is **Netflix only**; Starbucks was reviewed as a visual reference, not implemented as a full journey.

Six individual **1254 × 1254 RGBA PNGs** generated using built-in `image_gen`, saved unchanged in `assets/company-clay-v1/`: cinema chair, clapperboard, TV/shows, members, globe, film reel/content. The reel is reused in the story CTA. Exact prompts and source references: `company-illustration-prompts.json`; asset metadata and ZIP beside the PNGs. Raw source images/fonts remain untouched. Native SVG/CSS supplies only background shapes and layout, not substitute raster illustrations.

**Fresh evidence:** nav routes **12 views / 43 assertions**; preview **90 assertions / 15 selected states plus three none states** at 1400/393/360; journal/floating checks **23 assertions** at 360/393/1440, including loaded PF Reminder, status layout, reachable bottom action and grey measurements. Minimum nav label contrast **4.78:1**; minimum inactive icon-box/label gap **7.81 px**. Existing company suite: **68 views / 63 interaction assertions**, no overflow, broken images, small targets, JavaScript errors or network requests. It remains a contrast failure solely for the three operator-directed pairs: yellow/pink 2.87, white/orange 2.73, white/fall-red 3.30. The audit also caught and fixed old yellow number text on cream/disabled quiz-library cards; those now use navy. **709 local links pass**; combined static script still exits nonzero for the same three known contrast pairs. This is not an all-contrast or full-brief pass. Final journal screenshots also verify the refined glossary highlight after the company suite. Browser execution tool remains unavailable; local Chrome/Playwright supplied the checks.

**Resume:** continue the company/style review with Aastha at `http://localhost:8765/pages/company.html`. No icon choice is pending. Full C5/six-chapter/twelve-kind migration, Apple/Starbucks journeys and remaining brief §7 work stay open; do not run `adapt-company.py`. Same Test C authority ceiling: prototype/notes only, local checkpoint commit, no merge back, push, application edits or publication.


## Compact navigation and four finish options · 12 October 2026

Aastha asked for floating-nav styling alternatives: glass, a complete clay treatment, fixed light grey and fixed dark grey. She also asked for a shorter bar, a larger selected icon closer to its text, brighter colour pairings and sharper inactive grey icons.

**Review four finishes at `http://localhost:8765/nav-style-options.html`.** The page has independent working navs, controls to compare the same tab across all four, a no-selection state, and “Try on Netflix” links. Glass uses translucent neutral frosting with backdrop blur, so page colours show through. Clay uses a sculpted gradient/bevel on the bar only; Discover uses vivid `#FFE600` instead of pale yellow, Missions uses brighter lime, and the lime Profile gets deeper purple for contrast. Light grey stays `#E7E8EB`; dark grey stays `#292B30`, regardless of the active tab. Active labels/underlines use readable shades from the icon family. All icons remain grey when inactive, with no icon shadows. The glass no-selection backdrop is desaturated too. A finish can be previewed on real routes via `?navFinish=glass|clay|light|dark`; nav links preserve this preview parameter. **No finish has been operator-selected.** Recommendation: light grey for consistency; clay for the most playful treatment.

**Shared compact geometry is applied across the prototype:** painted face **94 → 72 px** (23% shorter), outer nav **120 → 88 px**, selected icon **70 px** at rest (previously 56 px scaled to 62.72), inactive icon **42 px** at rest (previously scaled to 36.96). Selected icon-box/label gap is **3.00 px**, inactive gap **4 px**; actual artwork includes its transparent margins. The selected icon pulses upward, tilts and settles close to the label. Inactive icons render at direct integer dimensions without a resting scale transform. Restoring contrast from `.1` to `.85` preserves their clay shading; per-icon brightness calibration holds the measured mean greys within **8.50/255**, with zero RGB channel differences. Existing high-resolution transparent PNGs are unchanged; no new raster generation or image editing was needed. Transparent upper region, floating insets, keyboard links and reduced motion remain.

**Fresh checks:** material review **72 views / 214 assertions** (four finishes × six states × 1200/393/360 widths, including independent/keyboard selection, pulse/reduced motion, real-route preview and route persistence); computed material contrast **120 label cases**, minimum **4.536:1**, including gradient interpolation and glass composited over black/white backdrop bounds (bevel-border highlights excluded). Shared routes **12 views / 43 assertions**, original icon review **90 assertions**, journal/floating check **23 assertions**. No overflow, broken images or JS errors in those checks; bottom company actions remain reachable. **748 local links pass**. Combined static script still exits nonzero for the three previously selected application text pairs (yellow/pink, white/orange, white/fall-red), minimum 2.73; the new nav material labels pass. The full company interaction suite is §25 evidence, not rerun for this nav-only pass. Browser execution tool remains unavailable; local Chrome/Playwright supplied verification. Screenshots: `captures/nav-finishes-{1200,393,360}.png` plus each finish/state at 393. Reproducible checks: `verify-nav-finishes.mjs`, `verify-nav-finish-contrast.mjs`.

**Next:** Aastha reviews and chooses a finish; apply the chosen finish as default only after that choice. Continue company/style review. Broader C5/six-chapter/twelve-kind migration, full Apple/Starbucks and remaining brief §7 work remain open; do not run `adapt-company.py`. Same Test C ceiling: prototype and notes only, local commit, no merge back/push/publication/application/raw edits.


## Company card and glass capsule checkpoint · 12 October 2026

Presentation-only continuation at session §27: sticky-note big idea retains the original illustration and operable glossary; duplicate Learn CTA removed, existing learning entry points retained. Chapter spine and shared card alignment/assets updated; Glass selected as default nav. Company regression covers 68 views / 63 interactions with no functional/layout issue; only the three known operator-directed contrast exceptions remain. Focused layout audit covers all 11 routes at 360/393 px and company at desktop. No content, eligibility, progress, quote, reward or backend rule changed. C5 migration, complete Apple/Starbucks and remaining §7 states remain outstanding. This checkpoint is not an engine-wide validation.


## Status alternatives checkpoint · 12 October 2026

Session §30 is a presentation change. Status exposes district and three preview treatments, with independent holding and price comparisons preserved. The comparison fixtures leave wallet storage untouched; 160 focused assertions pass. No change to quote, eligibility, reward, investment or content/progress rules. Big-idea glossary remains operable in the shorter 1:2 layout. Full earlier company suite is historical evidence; C5/Apple/Starbucks/§7 remain open. Status A is a provisional preview, not an operator-selected final treatment.


## Selected B and status wording checkpoint · 12 October 2026

Session §31 changes presentation only: B is selected, its bottom rule removed, and Status/Investment/Price headings applied. Status contains the existing stage and district—two values. Existing stage precedence is preserved; no separate mastery field remains. The three invested comparison fixtures do not mutate wallet storage. 269 focused assertions pass, including independent holding/price movements and real-page stage behavior. No quote, reward, eligibility or progress rule changed. Internal content choice remains open; broader C5/Apple/Starbucks/§7 work remains outstanding.


## Selected status row behaviour · 12 October 2026

Session §32 adds presentation-only movement-colour memory. `resolveCompanyStatusMovement` keeps holding and price directions independent and retains each during a flat snapshot; initial prices are green by operator instruction, while the flat arrow/change remains truthful. Only display directions are stored in a separate sessionStorage key. The authored quote and holding math, wallet, progression and rewards are unchanged; no real price-tick feed is implemented. 508 focused assertions cover up/down/flat sequences and persistence, with three row treatments; 12/43 navigation checks cover Exchange, whose route filename remains compatible. B/content 1 are selected; icon/square/capsule treatment remains open. Broader C5/Apple/Starbucks/§7 work remains outstanding.


## Quiz-aware status and clay CTA checkpoint · 12 October 2026

Session §33 passes the existing quick-quiz completion flag to status display copy: prerequisite hint before completion, Not invested yet afterward. The eligibility gate itself is unchanged. The clay renderer preserves existing data-quiz controls and link destinations; live tests complete the quiz with wrong answers, confirm any-score completion and advance to the chapter CTA for all three materials. Status alignment and exact bright text are presentation changes; movement-memory behavior remains §32. Keyboard key is a provisional material; squarish pills are selected. 83 focused assertions pass; broader C5/Apple/Starbucks/§7 work stays open.


## Latest Netflix news/history adapter · 12 October 2026

Session §37 adapts canonical Netflix v3 (`b752e44c45d04f5b0dd7c183ba739a0a3e38627c4f5dcbe7ab3828497b00a405`) via read-only `adapt-news.py`. `company-news-data.js` provides events/news/history to the company and reader, separate from the pinned v1 chapter/mission adapter. One day-9 practice event, one dated news story and seven unscheduled history-based practice stories have real reader routes in both bands; available reading-completion copy is shown. No price adjustment, holding, eligibility, reward or progression change is applied on reading. Return/close links retain band. 139 news assertions plus 89 existing CTA assertions pass. Six-chapter/twelve-mission C5 migration and Apple/Starbucks remain open; this closes only the news/history gap.


## Single news and illustrated Exchange behaviour · 12 October 2026

Session §38 selects one latest active company event or latest dated news item for the pin-up; full provenance/history library remains. Priority fixtures pass. Right-side glossary uses native dialog semantics and restores focus; no progress/reward write. Exchange card art is presentation-only: all 20 canonical companies remain in order, with real open/owned/district-gated/future routes and labels. No illustrative percent figures from the reference are used as live data. News 143, drawer 69, cards 49 and CTA 89 assertions pass. Broader C5 migration and full Apple/Starbucks remain open; illustrative covers do not constitute their full journey implementation.


## Netflix scene quote and drawer placement · 12 October 2026

Session §39 adds one Netflix scene cover. Its default quote is the existing static ₹1,100 / 0% company snapshot; percentage comes from separate current/previous prices, and flat colour retains the existing price-colour memory. Up/down/flat preview fixtures are clearly illustrative and do not change Exchange or wallet. 49 scene assertions cover movement maths, quote parity and untouched wallet. Drawer has a CSS width cap plus trigger-relative placement within the visible phone, explicit fallback/resize/wide-window checks (115 assertions). No price feed, reward, holding, eligibility or progression change. Other 19 covers stay as §38; broader C5 migration remains open.


## Netflix card sizing invariant · 13 October 2026

Session §40 fixes layout only. A forced minimum height/aspect-ratio combination let Netflix exceed its grid track and overlap Apple; explicit track width and 2:3 proportions now have direct tests. Price is grouped under the name on a readable red plate. No quote, wallet, price-direction memory or percentage math change. 136 checks cover both sizes/four movements/three widths; 49 directory regression checks pass. Remaining covers retain prior heights during the one-card study. Broader C5 migration remains open.
