Weed Pleez web expression system, rounds one and two

Built from Jude's contract, 02-Brands/weed-pleez/BRAND.md, DESIGN.md and DO-NOT-WRITE.md (2026-10-17). Products are STAND-IN, from the Weed Pleez PRACTICE shop (OCS dried flower). Photos and copy are BORROWED. Nothing here is the store.

0. Step 1: what is missing or unusable in the vocabulary pack

  1. No lines for most states. The pack gives three problem lines (payment error, empty basket, sold out). It has none for the age door, under age, loading, add-to-basket error, sign-up done or sign-up error. I wrote them in the voice and marked them NEW. They need a yes from the owners or Jude.
  2. Age door wording and method. The ages are given (18 Alberta, 21 Quebec, 19 elsewhere). The wording and how age is checked belong to the owners' lawyer. The proof shows a placeholder line.
  3. Motion has a feel but no timings. "Opens like a heavy brass door, settles into warm light, only a drop going live is fast." I set the timings myself (NEW): door 900 ms, settle 600 ms, warm 400 ms, live 120 ms, one slow ease.
  4. The pouch pictures were not on this Mac. brand-assets/pack-renders/ is empty here. I found them on jarvis and used K1-R1 as a guide picture only. Jude should sync the folder.
  5. Owner facts are open. Membership price and perks, the length of the members' window, drop numbers and cure days. The proof uses stand-ins, marked STAND-IN in the data.
  6. "Grower if named" does not fit the stand-in feed. OCS lists brands (licensed producers), not growers. The proof shows "Grown by" with the brand name. This is a stand-in and must be checked when the real catalogue lands.
  7. The oxblood logo files are the old shade. The proof uses the brass files only, as the contract says.

Not drawn yet, so they become asset briefs to Jude (shown as labelled placeholders in the proof): the band as flat artwork, the locker wall, the held plate, the framed sell-out card, the brass fan, the stepped deco frame, the members' card, the manila name card.

1. The world

The back-room humidor of a 1920s private lounge. Oxblood leather, worn brass, dark wood, one lamp from the side. A guest is let in through a door. A member has a locker. The rare strain is held by name. When a drop is gone, its card goes on the wall.

Why it is Weed Pleez and not generic cannabis. Six of ten rivals are bright and leaf green and shout deals. The quiet ones sit on cream with a gold serif. The one dark rival is cool navy. Ours is a warm dark room under one lamp. It speaks as one budtender saying "I", never "we". Every drop carries a number on a brass band. Stock is never pretended to be endless: what is gone says how fast it went.

2. The translation (rules for this round)

RuleWhat it doesBrand reasonSource
R1 One lampDark grounds are lit from one top-left corner: oxblood falling off to near-black brown. No other light, no glow, no shine.Photo style One Lamp. The room is lit by one lamp, so the screen is too.CONTRACT
R2 Room and shelfFeeling happens in the room (oxblood/near-black). Choosing and paying happen on the shelf (manila, near-black text). The ladder decides which ground a part sits on.Tone ladder: "the shelf speaks here more than the humidor" when choosing. Web dev: manila reading pages, dark grounds.CONTRACT ladder, NEW as a ground rule
R3 Brass is rare and never on creamOne brass call-out per screen. A drop's band sits on oxblood, like on the pouch, even on the manila shelf."Our brass lives on oxblood and green, never on cream." Manila with brass fails contrast (2.15).CONTRACT
R4 Waiting is an index card not typed yetLoading shows the printed rules of a blank card and "One moment." Never a spinner or shimmer. A button that waits drops to near-black with a thin brass rule under it.The ledger and the card holder. Nothing hurries.NEW
R5 The doorThe age door is a full near-black room. Once passed, it swings open on a left hinge, slowly, then the light settles.Motion: "opens like a heavy brass door". Age door at entry is a contract rule.CONTRACT motion, NEW form
R6 Numbers in the ledgerEvery grade, weight, price, cure and date is in Courier Prime. Product facts sit in a ruled ledger, numbers first. Focus rings are brass in the room and near-black on the shelf.The Ledger habit on product pages. Courier Prime for numbers.CONTRACT

Owed to Jude (JUDE): the band flat artwork, the locker wall and the framed sell-out card. The proof holds labelled spaces for them.

3. Joining the components

PartGroundHow the rules join it
Product cardRoomPhoto in a manila frame (the plain straight-on shot for lists). Strain name in Fraunces. Type, THC, sizes and "From" price in Courier (R6). A live drop gets its brass band (R3) and "Members until Friday. Then it goes out front." A gone drop dims and shows its sell-out line.
Size and quantityShelfSizes are ledger tiles, each with its own price. Chosen fills near-black. The button names the total: "Add to basket · $X". Plain sums, no upsell (ladder: choosing).
Sign-up / memberRoom"Leave your name. Members hear first." First name and email. The pouch picture beside it. Price and perks are an owner placeholder. The locker wall space waits for Jude. This is the one brass button on that screen (R3).
Age doorRoom, full screenProvince and year. The age comes from the province (18/19/21). Under age: "You need to be 21 in Quebec. The door's here when you are." Opens per R5.
Basket drawer, fullShelf, with a near-black headSlides in slowly from the right. Lines with photo, size, unit price, quantity. Subtotal in the ledger. "Shipping and tax at checkout." No upsell, no badge. This is a real practice basket.
Basket drawer, emptyShelf"Nothing on your table yet. The humidor's open when you are." For a signed-in member, the first name goes in front.

4. States

Taken from the motion line ("nothing hurries ... only a drop going live is fast") and the ladder. None are browser defaults. Every one is frozen side by side at the bottom of the proof.

StateDesignWhy
HoverThe light comes up slowly (400 ms): the frame turns oxblood and a short rule under the name draws out to full width. Sizes warm a little.A lamp turned up, not a jump. Only on devices that can hover.
FocusA 3 px ring: brass in the room, near-black on the shelf.Always visible. Brass never touches manila (R3).
ChosenThe size tile fills near-black and says "Chosen".The budtender's quiet word: plain and certain.
LoadingA blank ruled card and "One moment." (R4).Nothing hurries, nothing spins.
Drop liveThe band snaps in fast (120 ms, two steps).The one fast thing the contract allows.
Sold outPhoto dims. "Gone in six days. Its card's on the wall. Members hear about the next one first." Sizes are struck through. The button becomes "Leave your name". The framed card space waits for Jude.News told with pride, never an apology. Between product and problem on the ladder.
EmptyThe empty basket line, on manila.Contract line.
ErrorA thin outlined box, plain words, no brass, no joke. Payment error uses the contract line. Basket, sign-up and age errors use NEW lines.Problem is the quietest step on the ladder.

Anyone who asks for less motion gets none: every move is switched off.

5. Founder leads, each tested

LeadVerdictReason
Paid membership with perksAdjustedThe module asks for a name only and shows "price and perks: the owners set these". Nothing shows a price off, because membership never means a price.
Members get the drop a couple of days earlyKeptThe live drop card says "Members until Friday. Then it goes out front." The day is a stand-in.
The word, a members' passwordAdjustedShown as "Members get the word with each drop." It is not put on the age door. The age door is the law's door for every guest. A password there would lock guests out and mix two jobs.
A members' appReplacedAs the contract says: start with a members' page saved to the phone. App store acceptance is unchecked. Not in this proof.
Sell-out noteKeptThe sold-out card and line say how fast it went.

6. Reference lessons

Honest note: these come from the rival study inside Jude's contract. I did not run a fresh reference sweep this round.

PrincipleTheir wayOur way
Show what is new"New this week" badges, a "drop" shelfDrop No. 07 on a brass band, members first, a card on the wall when gone
Make scarcity felt"Only 3 left", countdown timersThe members' window as a day, said once. Sold out told with the speed it went.
Feel premiumCream page, gold serif, a crest, "Est."A dark warm room, brass only on oxblood, no crest
Help people choosePrice tiles and deal stickersLedger tiles: size and price in Courier, nothing else

Rejected, because the world does not produce them: deal badges, points, countdowns, free-gift lines, "we" copy, a spinner, a glowing button.

7. Commerce constraints

Products, prices, sizes and photos come from the practice shop. The page code holds no product, price or contract value. Colours, fonts, lines and ages are read from rules.json, which quotes the contract. Checkout is off: that belongs to the build.

8. The proof

wp-proof.preview.veroprotocols.com. Desktop and phone. A real practice basket. All products STAND-IN.

9. Fail test (two questions, each part, honest)

Q1: cover the logo. Could this be any cannabis shop? Q2: the contract's test. Would the budtender hold this for a member, by name?

PartQ1Q2Note
Product card, dropPASSPASSThe band and members' line are ours.
Product card, plainWEAKPASSThe borrowed OCS photos are retail shots on white. With our own pouch and One Lamp photos it should pass.
Size and quantityWEAKPASSPlain on purpose (the ladder says the shelf speaks). Only the ledger type makes it ours.
Sign-up / memberPASSPASSStronger once the locker wall is drawn.
Age doorPASSPASSThe door swing and the room. Wording waits on the lawyer.
Basket, fullWEAKPASSHushed and plain. It lacks the held line for a member (needs sign-in).
Basket, emptyPASSPASSThe line carries it.
Sold outPASSPASSNeeds the framed card drawn.

10. Round two: the shelf as a page (Simon's word, 2026-10-17)

Simon said yes to the system (rules, ladder, states, copy, door) and not yet to the look. Round two changes the look only. Every rule above still holds.

The photos (derived asset, BORROWED)

The 50 OCS shop photos had white backgrounds. I cut the white out and gave each bud one soft shadow falling down and to the right, from the lamp top-left (R1). Each one now sits straight on manila or oxblood. They live in the practice shop as metadata.cutout, marked cutout_status: "BORROWED photo, white removed and lamp shadow added (derived asset, swap before launch)". The page reads them from the shop. Nothing is typed in.

Fresh reference sweep

SourcePrincipleTheir wayOur way
Teenage Engineering storeLet the object be big, and leave air around itHuge product cut-outs, wide empty space, tiny plain labelsOne large bud leads the shelf, the rest step down in size. Labels are Courier data, small.
AesopA room, not a catalogueWarm muted grounds, photos of places, slow paceThe oxblood room under one lamp on top. The manila shelf below lit by the same lamp.
MSCHFA drop is a numbered eventEvery drop has a number and a date, old ones stay listedNo. 07 on the brass band. The wall lists every number, the next one shown as "Not yet."
Rare Birds, HouseplantMix photo scale with text pausesA big line of copy breaks the product runAn oxblood strip mid-shelf carries the positioning line beside two buds.

Rejected: TE's bright white and sans type (not our room), Aesop's lifestyle people (no faces in the contract), MSCHF's jokes and timers (no countdowns, R2), Houseplant's colour pops (brass only).

The art direction

QuestionAnswer on the page
How a drop announces itselfIt takes the whole first screen, under the lamp. Brass band "No. 07" snaps in first (live 120ms), then the name in big Fraunces, the members' line, the facts in Courier, one button.
Where the pouch sits against the budsThe pouch stands in the lamp light, on the left. The drop's bud is set down in front of it, to the right, overlapping, as if the budtender just put it on the counter. The pouch photo fades into the room, so there is still one lamp.
How the room meets the shelfA thin oxblood table edge. The drop's bud sits on that edge, and its shadow falls onto the manila shelf below.
Scale and rhythmOne large bud, two small ones stacked beside it, then three set at different heights. An oxblood strip with the positioning line. Two more. Then the rest as a ledger (numbers first). Then the wall of drops.
PhoneThe same order. Items go in a zigzag, left then right, so it never becomes a list of equal boxes.

Fail test, whole page (honest)

Q1: cover the logo, could this be any cannabis shop? Q2: would the budtender hold this for a member, by name?

PartQ1Q2Note
Whole page, scrolled top to bottomPASSPASSThe room, the lamp, the numbered drop and the wall carry it without the logo.
First screen (the drop)PASSPASSThe pouch render is a guide only. The real pouch photo is one of Jude's briefs.
Composed shelfPASSWEAKBuds now sit in the room. Still borrowed retail photos: angles and light differ bud to bud. Our own One Lamp photos fix that.
The rest (ledger)WEAKPASSPlain on purpose. Only the type makes it ours.
The wallPASSPASSNeeds the framed sell-out card drawn.

Asset briefs

The eight asset briefs went to Jude on 2026-10-17, in the Weed Pleez brand folder Jude reads (02-Brands/weed-pleez/), copy kept next to this proof as ASSET-BRIEFS-2026-10-17.md.

11. Composition (required, like states) and round three (Simon's word, 2026-10-17)

Simon: round two swapped a grid for scatter with no rules, so it read as broken. Composition is now a rules section, as fixed as the states. The page reads every number below from rules.json → composition, so the code cannot drift from it.

RuleWhat it saysOn the page
C1 Column gridEvery object sits on the grid: 12 columns on desktop, 6 on phone (below 860px). Nothing is placed by hand or nudged off it.Pouch, drop bud, shelf modules, ledger rows, wall frames and locker wall all start and end on a column line.
C2 Scale ladderThree bud sizes, no others: hero 6 columns (phone 5 of 6), featured 3 columns (phone 3 of 6), list 1 column thumbnail in the ledger.The check script measures every bud on the page and fails on any fourth size.
C3 Ground ruleThe room (oxblood) is only for brand moments: door, drop, wall, member. The shelf (manila) is where choosing happens. The page may switch ground twice: room → shelf → room.Room: header + drop. Shelf: modules, ledger, chooser. Room: wall + member. Checked: 2 switches. The age door is an overlay on the room, not a switch.
C4 Page orderDrop → featured modules (one hero, two featured, repeating, each next one mirrored) → the rest as the ledger list → the wall → member. No room section inside the shelf.Two modules, then the ledger (10 rows, "show the rest" for more), the chooser, the wall, member. The round-two oxblood strip inside the shelf is gone.
C5 No empty viewportA void must have a purpose or a mark. If it waits for a mark, it says so.Every space either holds a bud, the lamp, a mark, or a dashed label "waiting for a mark: …". The check script fails if any stretch of half a screen or more has nothing in it.

Jude's three marks, dropped in

MarkWhereRule
Locker wallMember module, beside the sign-upHolders stay blank in public.
band-e (No. 07)The live drop's frame on the wall, and the chooserThe number is drawn into the picture, so it shows only for drop No. 07. Any other number gets a labelled hook. The first screen keeps the coded band Simon said yes to.
card-e (No. 06, gone in six days)The gone drop's frame on the wallShown only when the shop says No. 06 went in 6 days, which it does today. Otherwise a labelled empty hook.

The marks are Jude's files resized to webp, never redrawn. Sources: 02-Brands/weed-pleez/brand-assets/marks/.

Fail test, whole page, round three (honest)

Q1: cover the logo, could this be any cannabis shop? Q2: would the budtender hold this for a member, by name?

PartQ1Q2Note
Whole page, top to bottomPASSPASSRoom, shelf, room. It reads as one shop with one lamp, not a scatter.
First screen (the drop)PASSPASSUnchanged from round two (Simon's yes).
Featured modulesPASSWEAKNow ruled: one big, two small, on one shelf line, mirrored. Still borrowed retail photos, angles differ. Jude's One Lamp photos fix it.
The ledgerWEAKPASSPlain on purpose. Only the type and the list thumbnail make it ours.
The wallPASSPASSThe sell-out card and band are Jude's renders now, not placeholders.
MemberPASSPASSThe locker wall carries "held for you by name" without a word.