Commit Graph
168 Commits
Author SHA1 Message Date
grabowski d36a6fdd02 Own catalogue: sales map, demand model and market advisor (plan)
New docs/catalogue-intelligence.md for Alexander's idea of a catalogue
the plant presses for itself. Why (idle Classic hours ~60k to 160k
records a year at 60 % specials on the doc basis; two-week represses
from the metal archive; Thai catalogue sells in Japan, EM Records,
ZudRangMa), scope (Poy Records as seed; customers' data and press dates
protected), data sources with access terms (Bandcamp ship-to fields,
distributor sell-through clauses, opt-in record passport registrations,
Spotify for Artists, Discogs CC0 dumps; Discogs API marketplace and
want data restricted), ERPNext touchpoints (Licence, Channel Sales
Report, Catalogue Recommendation, geocoded addresses, CRM), PDPA rules
for the map, dashboard views on an open-source map stack, a staged
demand model with a stocking rule for run size, a propose-only advisor
on an open-weights model, phasing, cost estimates, risks and open
decisions.

Backlinks: README (planning documents, layout), roadmap item 28,
digital-factory tool rule, artist-platform repress pre-orders,
production-timeline repress, revenue-model ResurRec Japan.
2026-10-27 09:28:51 +07:00
grabowski 793ea02c22 ResurRec Japan: demand in Japan and whether it serves all of Asia
Revenue model, ResurRec Japan section: RIAJ 2025 vinyl production
(3.38M records, 8.4bn yen, fifth year of growth), short domestic supply
(6 to 12 month lead times at Toyo Kasei and Sony per P-Vine, orders
placed abroad via brokers), the photographed presses at about a fifth of
Japan's volume on one shift. No published Asia-wide intent; the rest of
Asia has local plants, so Japan-from-Japan and SEA-from-Bangkok is our
reading. Consequence for CNX's ~0.74M regional demand (roadmap item 1).
2026-10-26 16:58:23 +07:00
grabowski 7fca116edb ResurRec Japan vs CNX launch plant: capacity table
Revenue model, ResurRec Japan section: 3 AD12s as photographed against
one Duplex system + one Classic on the scale.md basis (60 to 70 %
effectiveness, 300 days): ~1.6x per hour on black and solid colours,
one Japan shift matches CNX's two; specials comparison waits on the
AD12 splatter-mode rate; steam load about the same.
2026-10-26 16:38:27 +07:00
grabowski 39342f3a7e ResurRec Japan: press capacity of the three AD12s in the photo
Revenue model, ResurRec Japan section: ~2,000 to 2,500 records a day,
~0.6 to 0.76M a year on one shift, ~1.2 to 1.5M on two (Pheenix 24 to
26 s cycle, the table's 60 to 70 % effectiveness, 300 days), about CNX's
launch plant at 60 % specials. Black and solid colours only; splatter
runs semi-automatic on the AD12 with no published cycle time.
2026-10-26 16:35:43 +07:00
grabowski d968ee5b08 ResurRec Japan: photos of the new plant, presses read as new Pheenix AD12s
Four photos of ResurRec's new Japan plant (October 2026) filed in
docs/finance/resurrec-japan/. Revenue model gets a "ResurRec Japan"
section: what the photos show (visitor window, automatic presses in
aluminium cabinets that Alexander identifies as a new red AD12
generation, ceiling services, air-conditioned room, no plating in view),
what it changes (scaling abroad, Japan export wedge narrows, Classic vs
AD12 evidence, collaboration depends on their metal path) and open
questions. Also notes a directory listing naming an M-Tech Allegro II in
Bangkok against the tour's Newbilt Classic.

Mirrors: Pheenix sections in vendor-landscape, exhibitor questions and
supplier map; pressing-line AD12 paragraph; roadmap item 5; visitor
corridor in crane-workshop-tours; README status and layout.
2026-10-26 16:33:18 +07:00
grabowski f6829417a0 Test site: DNS moves to the fleet nameservers, no Cloudflare proxy
Deploy test site / deploy (push) Successful in 1m4s
cnxvinyl.lol's zone now lives in cnx-network-clan (ns1/ns2.cnx.network),
pointing straight at s1; mail is on mx1. Live once the nameservers at
Porkbun are switched.

- site/Caddyfile mirrors what s1 runs (checked 2026-10-23): no
  cloudflare_only or security_headers imports; Caddy gets its own certs.
- deploy-site.yml: drop the Cloudflare cache purge step and its secrets.
- site/README.md and digital-factory.md: DNS and certificate notes.
2026-10-23 11:01:55 +07:00
grabowski 1f532d0c85 All-equity funding: shareholders fund the whole plant
Deploy test site / deploy (push) Successful in 1m0s
User, 20 Oct 2026: the plan is that the shareholders fund the whole
plant and get shares for that (no bank loan).

- total-investment.md "Two plans": Funding paragraph: Plan B's ~217M
  THB paid in as share capital; the lead investor's 60 % at least ~130M,
  the 40 % at most ~87M (~121M / ~81M before the reserve; Plan A ~109M /
  ~73M); capital registered in full and called in instalments against
  the tranches; BOI's 3:1 met with no debt; nothing pledged.
- boi.md, README Project Status and the share-price bullet follow.
- Business plan A and B: the ask, the decisions, section 12.2 (funding
  bullet replaces the 3:1 equity floor), section 14 and the BOI
  requirements paragraph; "not in this plan" now names bank debt; both
  rebuilt (63 pages, checked).
- share-price.md re-based: 2,170,000 shares of 100 THB, the 40 % ~86.8M
  THB; illustrative calls 25/40/20/15 % against the tranches; premium
  rows on 217M; value per share once running with no debt (adverse 11 to
  42 THB, central 80 to 314, favourable 176 to 688 per 100 THB paid);
  VC method and CAPM recomputed; the calculator's ~22 % IRR is now the
  shareholders' pre-tax return (~18 % after tax, rough); missed-call
  rules (CCC 1120 to 1125); the levered case kept as "if a loan were
  added later".
- Deck: slide 12 (all equity, 60/40 bar ~130M / ~87M, none pledged,
  share capital called in instalments), slide 13 (re-based table, chart,
  premium cards, VC line), slide 17 (co-investor card, calls) and notes
  ("lenders" -> "investors"); both PDFs rebuilt; deck verify clean.
2026-10-20 17:17:18 +07:00
grabowski 1829dd2aec Share price for the 40 %: market-based ranges, deck slide 13
Deploy test site / deploy (push) Successful in 1m4s
User, 20 Oct 2026: add a page about possible share prices, do some
calculation on normal market data.

- docs/finance/share-price.md (new): market data with sources and
  dates (Damodaran January 2026 EV/EBITDA, P/E and betas for emerging
  markets and global; Thailand ERP 6.18 % (July 2026); ThaiBMA 10-year
  2.30 % (19 Oct 2026); illiquidity discount 20 to 35 %; venture target
  returns by stage; SET peers SCGP, TPAC, SITHAI, GRAMMY; Thai Civil and
  Commercial Code on par value and premiums).
- Results, all estimates: A founding round at par, pari passu: 542,500
  shares of 100 THB at Plan B's 54.25M equity floor, the 40 % ~21.7M
  THB; B a premium only for documented pre-round costs (102 to 137 THB);
  C value per share once running at ~163M THB debt: adverse ~0, central
  126 to 1,016 THB, favourable 508 to 2,512 THB; D a financial investor
  today 18 to 236 THB (central); E calculator cross-check. Recommendation:
  par for the founding round; pre-emption and information rights for the
  40 %.
- Deck: new slide 13 "Share price: what the 40 % could cost" in both
  themes, with notes; the ask slide points to it; 17 slides, both PDFs
  rebuilt; site slide notes trimmed.
- README bullet, layout line and Project Status link; total-investment
  shareholding paragraph links the page.
2026-10-20 15:13:47 +07:00
grabowski 967e6b1c76 Payap still an option: rezoning route; order example opaque
Deploy test site / deploy (push) Successful in 2m40s
User, 20 Oct 2026: Payap University claims they can rezone the land;
update the deck to show it is still an option. And: do not use a
transparent vinyl as the example in the order tool screenshot.

- land-listings/payap/rezoning-2026-10-20.md (new): what a rezoning is
  under the Town Planning Act B.E. 2562 (section 35 amendment started by
  DPT or the local official, Town Planning Commission, 30-day posting
  with objections, Ministry of Interior notification via Cabinet and the
  Royal Gazette; a landowner can ask, not rezone), the DPT's own work
  plan (~70 weeks without objections, ~82 with: ~16 to 19 months), the
  schedule effect (roughly a year on first production unless the request
  starts now; estimate) and what to ask Payap. DPT procedure PDF filed.
- site-candidates.md: Payap "still an option" in the table, rezoning
  paragraph with an Open action, check 1 and the re-siting rule; zoning
  record, payap-partnership.md and README point to it.
- Business plan 6.1, risk table and critical path: Payap's rezoning
  claim and its ~16 to 19 months; A and B rebuilt (63 pages, checked).
- Deck: site slide names Payap as an option once rezoned, notes and
  source line; risk row updated.
- order.html: the "Splatter 12"" preset now has a white base instead of
  clear; deck platform screenshots re-shot in both themes (numbers
  unchanged: 100 fans, break-even 46, ~480 THB kept). Order checks 96/96,
  fan parity 206/206; deck verify clean in both themes, PDFs rebuilt.
2026-10-20 14:58:40 +07:00
grabowski 744a56d22b Order tool: fan funding; deck: light and dark, 60/40 shareholding
Deploy test site / deploy (push) Successful in 1m2s
User, 20 Oct 2026: can the deck also be made in a light and dark mode;
the new order tool should also offer fan funding, so the platform
screenshots match and use the same calculator; the main investor holds
at least 60 %, so 40 % is for sale.

Order tool (docs/order.html, /demos/order/):
- New step 15 "How to pay": pay the plant directly (deposit) or let
  fans fund it; step 16 becomes "Review & launch" with the campaign
  simulation and its three outcomes.
- Campaign maths ported from make-a-record (fan price, length, cap, own
  copies, VAT; fans needed = max(100, break-even); keep at the goal and
  with more fans; price hint); R gains fee (3.5 %), VAT and campaign
  length with sources; no price changed.
- Quote card shows fan price, fans needed and the artist's keep on the
  fan route; route and campaign in the #q= hash; deep links
  #s=<step>&p=<preset>&route=fans.
- Parity with make-a-record: 206/206 checks over 40 configurations;
  default quotes unchanged (37,836 / 217 / 102,936 THB; partner
  mastering 43,676).

Investor deck (docs/pitch/):
- Light and dark theme like the other site pages (cnx-theme, T key and
  button), presenter and overview follow; charts from CSS variables;
  text pairs at WCAG AA in both themes; tool screenshots in both themes.
- Two PDFs: dark and light (print-friendly), each ~1.5 MB.
- Platform slide: both pictures from the order tool (Splatter 12" order
  step and its fan-funding view: 100 fans at 1,200 THB, break-even 46,
  ~480 THB a copy kept).
- BOI and financing slide: shareholding bar, lead investor at least 60 %,
  at most 40 % for co-investors (~32M / ~22M THB at the ~54M equity
  floor, arithmetic only); the ask offers up to 40 %.

Docs: artist-platform.md (fan funding in the order tool), README and
landing page entries.
2026-10-20 14:31:40 +07:00
grabowski c8307f9d5e Shareholding: main investor holds at least 60 %, 40 % for sale
User, 20 Oct 2026: the main investor W wants to hold at least 60 % of
the company (the BOI-promoted company), so only 40 % is for sale.

- total-investment.md "Two plans": the 60/40 rule; Ploy Printing's
  stake, founders' shares and any further co-investor come out of the
  40 %; at Plan B's ~54M THB equity floor (3:1) and one share price
  that is at least ~32M / at most ~22M THB (arithmetic only; share
  price, valuation and in-kind shares not agreed).
- README Project Status and boi.md (foreign-ownership privilege) point
  to it.
- Business plan: section 12.2 states the split (A: ~28M / ~18M, B:
  ~32M / ~22M at the equity floor, arithmetic), the co-investment bullet
  and the decisions list name the 40 %; A and B rebuilt (63 pages each,
  TOC and em-dash check clean).
2026-10-20 13:52:33 +07:00
grabowski 81de64c8a1 Investor deck rebuilt around Plan B (16 slides)
Deploy test site / deploy (push) Successful in 59s
User, 19 Oct 2026: build the deck again but focus on Plan B, the main
investor wants to go with that.

- Proposes Plan B, ~217M THB at the midpoint (~6.56M USD), labelled
  ~215M; Plan A (~182M) only as the comparison. Every running footer,
  source line and speaker note now presents Plan B.
- New slide 9 "Why Plan B": ownership and control, not a higher
  modelled return (owned roof PV and battery instead of a PPA, full
  metrology from the first release, corridor and tours from day one,
  cassette and CD-R, bought crane, Thai utilities; ~34.5M THB together);
  Plan A has the better modelled return, owning the array earns no BOI
  tax benefit.
- Investment by block for Plan B with low-high ranges, the "what Plan B
  buys" table, no contingency (~30M at 15 %); operating picture, cash
  curve (payback ~4.2, IRR ~22 %, NPV ~4.7M USD) and BOI slide (equity
  at least ~54M THB at 3:1, owned PV and battery as collateral) for B;
  B-specific risks; the ask with the Plan B tranches only.
- Plan B renders replace the Plan A ones; PDF regenerated, 16 pages,
  1.5 MB.
- README and landing page entries say 16 slides and Plan B.
- Checks: every slide at 1920/1440/1280/390 px without overflow,
  navigation and presenter sync, PDF pages and text, no em dashes.
2026-10-20 13:45:30 +07:00
grabowski 995bb4ba60 Plan B chosen; stale mirrors fixed; business plan rebuilt
User, 19 Oct 2026: the main investor wants to go with Plan B; fix the
stale docs the deck build found.

- total-investment.md "Two plans" and README: the main investor wants
  Plan B (~217M THB, labelled ~215M); Plan A stays as the comparison.
- boi.md: duty without BOI on the launch plant's ~2.3M USD of imported
  machinery (~0.11M duty, ~0.17M import VAT), as total-investment states;
  the calculator's ~2.5M includes the water treatment; the old ~2.75M
  was the superseded start fleet.
- roadmap.md item 2: the BOI application stacks automation, R&D and the
  battery if it qualifies; solar lost promotion on 1 July 2025.
- project-timeline.md: October re-read note (launch plant with
  galvanics commissioned first, long lease of raw land, Plan B price;
  calendar not redrawn); galvanics rows no longer "Phase 5".
- revenue-model.md: blended price at 60 % specials ~124 to 174 THB
  (3.76 to 5.27 USD), the Thai gap "three to six times".
- site-candidates.md, scale.md: utility yard with air-cooled chillers,
  no cooling tower; electroplating permission needed from the start.
- Business plan: working capital 4.5M to 9.6M THB (as total-investment);
  A and B docx and PDF rebuilt (63 pages each, TOC checked).
2026-10-20 13:26:28 +07:00
grabowski 40c049ae15 Investor deck: 15 web slides with presenter view, plus PDF
Deploy test site / deploy (push) Successful in 55s
User, 19 Oct 2026: build a high-end investor pitch deck; the whole
plant, web slides on the test site with presenter mode plus a PDF,
12 to 15 slides, both plans, for a BOI / bank / institutional reader.

- docs/pitch/index.html (site /pitch/): title, opportunity, the chain
  under one roof, how a record is made (9 stages, 3 gates, traceability,
  ERPNext), platform, site and building, sustainability and region,
  investment A vs B by block with the six levers (no contingency in
  either price), operating picture with the adverse case, ten-year cash
  and returns (calculator presets), BOI promotion and the 3:1
  debt-to-equity condition (financing structure to be agreed), schedule,
  risks, team and vendors, the ask (phase 0 then tranches).
- Every figure carries a source line (business plans draft 0.3 and the
  owning docs); speaker notes per slide; P opens a synced presenter
  window, O the overview, F fullscreen, #n deep links.
- img/: six WebP pictures (calculator renders, order tool, fan funding,
  record passport); CNX-Vinyl-Investor-Deck.pdf, 15 pages 16:9, images
  re-encoded to 1.5 MB.
- site/build.sh copies docs/pitch/ to /pitch/ (new DIRS list); the
  deploy also triggers on docs/pitch/**; landing page and README entries.
- Checks: 15 slides at 1920/1440/1280/390 px without overflow, navigation,
  presenter sync both ways, PDF pages and text, no em dashes.
2026-10-19 17:35:34 +07:00
grabowski 7d6a47e6d0 Order tool v2: step-by-step configurator after mobineko.com/order
Deploy test site / deploy (push) Successful in 51s
User, 19 Oct 2026: build a new version of the order tool like
mobineko.com/order; it should also offer selectable mastering like
brandenburgmastering.com at 60 USD a track.

- New docs/order.html (site /demos/order/): 15-step rail, step panel,
  large live SVG record (colour per disc, translucent, split, splatter,
  marble, colour-in-colour; label, dead wax, jacket view), floating
  quote card with price, ship window and quantity; phone strip and
  bottom bar. Review lists what is missing, itemised quote with basis
  badges, deposit, lead time, ERPNext touchpoints on the simulated
  order. Disabled-not-hidden options with reasons.
- Mastering choice: none, in-house vinyl mastering (5,000 THB a side,
  default), or partner studio (Brandenburg Mastering, Amsterdam, example,
  not contracted) at 60 USD a track (team figure), replacing the in-house
  line.
- Same R list and quote() as artist-order: defaults reproduce 37,836 THB
  per title and the per-copy figures; new lines (repress stamper,
  colour effects, printed inner, finish, obi, bag, shipping) are
  estimates.
- artist-platform.md: the page and the mastering choice; README, landing
  page and site/build.sh entries.
- Checks: pw_order.py 96 checks (parity, partner mastering, 15 steps at
  1440/1024/768/390 dark and light, disabled force-clicks, render sizes
  and fills, uploads, audio readers, share link, place order).
2026-10-19 14:21:11 +07:00
grabowski 69f8392a23 Optical QC: plate every 5 records, how plates avoid scratching
User, 19 Oct 2026: one plate every 5 records; how do we make sure the
plates don't scratch the records.

- Plate every 5 (10 per 50-record stack, ~15 kg a stack).
- Scratch rules: groove-guard profile keeps grooves off the plate (QRP);
  plate flat, larger than the record (306 to 310 mm), deburred; clear
  anodised (cost estimate, CNY 16 to 28/m2 China reference); vertical
  handling only; no grit (trimmer extraction, ionised blow-off and wipe
  on return, covered carts and racks); numbered plates, monthly check;
  station compares scratches on plate faces vs record faces.
- About 700 plates for a 24 h queue (25 sheets, THB 245k to 315k cut,
  + 35k to 105k anodising, estimates); 200 to 260 for 8 h.
- Plate trial adds bare vs anodised and the scratch comparison.
2026-10-19 12:37:28 +07:00
grabowski 5bdb013449 Optical QC: stacks of 50, aluminium cooling plates cut locally
User, 19 Oct 2026: stack records with spacers; the plates are aluminium
and should be cut locally.

- Where it sits: 50 records a stack (Cascade), a flat aluminium plate
  every 10 records to start (MY45; Mobineko uses one per record; the
  Classic handles plates itself), full discs not ring spacers.
- Plates: 5052 (5083 if anodised), 3 mm, diameter and hole to Newbilt's
  drawing; 28 per 1220 x 2440 sheet, sheet about THB 8,300 ex VAT
  (OneStockHome, 3003), THB 350 to 450 a plate cut and deburred
  (estimate); fibre laser or waterjet, Chiang Mai shops listed; deburred,
  flatness check, kept clean. About 350 plates for a 24 h queue
  (THB 120k to 160k), 100 to 130 for 8 h.
- Spiral cooling tower considered and not taken (full queue USD 75k to
  120k for 8 h, dust, no stack weight); a 30 to 60 min spiral stays a
  later option.
- Next steps: Newbilt plate drawing; new plate and settling trial
  (plate every 5/10/25, warp at 1 h and 24 h).
2026-10-19 12:35:48 +07:00
grabowski c939ba1fbb Optical QC control: QiTech Control library and shop
User, 19 Oct 2026: check github.com/qitechgmbh/control and
shop.qitech.de/collections/ethercat.

- QiTech Control (LGPL-3.0, Rust on an EtherCrab fork, NixOS, runs
  QiTech's own machines): plan now uses its EtherCAT library qitech_lib,
  pinned, as the layer under our station service; not the full Electron
  app. It has DC SYNC0, SDO/PDO handling, EK1100/EL2809/EL3021/EL3024
  drivers and a CiA402 MINAS A6 servo driver to copy for the A6-EC.
  Drivers to write: EK1101, EL1809, EL3152, EL5101, A6-EC (upstream).
  Kernel: start from QiTech's tested settings (6.18, preempt=full,
  isolcpus 2,3); 6.12 PREEMPT_RT stays the fallback for IgH.
- QiTech shop (new Beckhoff stock from an insolvency, ships worldwide):
  EK1101 EUR 85.13, EL1809 EUR 16.53, EL2809 EUR 41.03, EL9011 EUR 1.76
  replace the geizhals offers, EUR 207.57 less. TwinSAFE and Beckhoff
  STO servo terminals noted, not taken.
- EtherCAT parts EUR 1,684 to 1,897 + 2 servo kits (THB 72k to 80k);
  bench parts about THB 56k; spare coupler/DI/DO now stocked.
- BOM total USD 16,671 to 32,681 (THB 0.55M to 1.08M).
2026-10-19 10:54:31 +07:00
grabowski face699a28 Optical QC: EtherCAT control plan with geizhals.de prices
Deploy test site / deploy (push) Successful in 57s
User, 19 Oct 2026: plan the current EtherCAT setup, keep the 100 W servo,
check prices on geizhals.de.

- New docs/equipment/inline-qc-control-plan.md: decisions, bus layout
  (drives at the end of the line because the A6-200EC takes control
  power from the main supply), I/O list for EL1809/EL2809/EL3152/EL5101
  and the drive touch probe, PDO and DC notes from the A6-EC manual,
  geizhals.de price table (EUR 1,891.60 to 2,104.39 + USD 246.58 for the
  servo kits, THB 80k to 88k), NixOS/EtherCrab software, safety circuit
  (PNOZ s3, two contactors, dump valve), bench test with pass marks
  (parts about THB 64k, all reused), build order, spares, open points.
- EL3102 replaced by EL3152: the optoNCDT 1420 output is 4 to 20 mA.
- Spindle encoder index goes to an EL5101 instead of the drive touch
  probe; encoder 2,000 to 2,500 pulses.
- BOM: control lines split per part with geizhals.de prices (+30% high
  end for shipping and Thai duty/VAT, estimate); total USD 16,912 to
  33,061 (THB 0.56M to 1.09M). Doc, render caption and fleet calculator
  text now say USD 17k to 33k.
- README links the plan.
2026-10-19 10:43:59 +07:00
grabowski d26ed7ab3c Optical QC: STO servo version looked at, stay with 100 W
User, 18 Oct 2026, asked about the A6-EC400H2B1-M17-STO (400 W, STO,
brake, USD 157.91). STO comes only from 400 W; its manual gives no SIL
or PL and no certificate, so it cannot replace the contactor; the brake
holds nothing on a horizontal axis. Recommendation recorded: keep the
100 W kit; if a rated STO is confirmed in writing, take the brake-less
A6-EC400H2A1-M17-STO (USD 129.60) on both axes, 1:2 to 1:3 belt, no
contactor.
2026-10-19 10:24:54 +07:00
grabowski ba1f5fc3a9 Optical QC: EtherCAT control
User, 18 Oct 2026: use an EtherCAT based system.

- Spindle and conveyor on the StepperOnline A6-EC100L2A1-M17 kit
  (100 W, A6-200EC drive, USD 123.29), spindle through a 1:6 belt in
  cyclic synchronous position, conveyor in cyclic synchronous velocity.
- The A6-EC drive has no divided encoder output, so an RS-422
  incremental encoder on the spindle shaft clocks both line-scans; its
  index goes to the drive touch probe for one angle reference.
- Station controller: fanless N100 mini PC with 2x Intel i226, NixOS
  PREEMPT_RT, EtherCAT master EtherCrab (Rust, MIT/Apache) first, IgH
  (nixpkgs, igc native driver on 6.12 LTS) as fallback; no PLC.
- EtherCAT I/O: EK1100, EL1809, EL2809, EL3102 (warp lasers sampled with
  the spindle position, ~1,000 points a turn at 1 ms).
- Safety stays hardwired (safety relay, contactor; no STO at 100 W).
- Edge PC with the GPU stays off the real-time loop.
- BOM: drives, encoder, controller and I/O lines with sources; total
  USD 16,112 to 32,938 (THB 0.53M to 1.09M). Next step: EtherCAT bench.
- Investor render: cabinet and outfeed labels.
2026-10-19 10:15:54 +07:00
grabowski cf900cf3a4 Optical QC: spindle servo, 100 W StepperOnline A6-RS kit
User, 18 Oct 2026, asked about the StepperOnline A6-EC100L2A1-M17
(100 W EtherCAT kit).

- The motor fits: torque about 0.02 N m needed at the motor through a
  1:6 belt (0.32 rated); the belt brings the load inertia (about 25 to
  35 kg cm2, estimate; record 20.5) to about 28x the 0.03 kg cm2 rotor.
- Take the pulse/RS-485 twin A6-RS100L2A1-M17 (USD 108.78): its drive
  outputs the encoder as divided A/B/Z pulses for the line-scans and
  takes pulse/direction from the planned PLC. The EtherCAT drive has no
  divided output (A6-EC manual, CN1: 5 DI, 3 DO) and needs an EtherCAT
  master.
- inline-optical-qc.md: spindle servo paragraph, sensor table, BOM
  group; BOM line 109 to 250 (was 300 to 700). Total USD 16,073 to
  32,734, THB 0.53M to 1.08M.
2026-10-19 10:01:40 +07:00
grabowski 9d8a1a1fb8 Optical QC: sensor list
User, 18 Oct 2026: list the sensors the optical QC station uses.

- inline-optical-qc.md: sensor table in the station setup (4 cameras,
  2 warp lasers, spindle encoder, 3 presence sensors and a through-beam,
  6 cylinder position switches, door switch; thermal camera option and
  laser line profiler alternative), with where each sits, what it
  measures and the price signal.
- BOM: cylinder position switches were missing (6, SMC D-M9 class,
  USD 25 to 60 each, estimate). Total now USD 16,264 to 33,184, still
  16k to 33k; THB 0.54M to 1.10M.
2026-10-19 09:46:10 +07:00
grabowski 8c2143630c Optical QC: one station for both presses, after the cooling racks
Deploy test site / deploy (push) Successful in 55s
User, 18 Oct 2026: for now one QC station for both machines; let the
records cool in a queue before testing them.

- inline-optical-qc.md "Where it sits": launch setup. Spindle stacks
  from the Duplex system and the Classic, labelled at the press (press,
  stamper set, first and last cycle), cool in FIFO racks (24 h accepted
  practice, 8 h at the shortest, Stamper Discs; about one day of output,
  2,800 to 3,100 records); the finishing operator feeds the station from
  the cooled stacks. Gains: warp and centring measured on settled records
  (the release value), one station instead of two, no Classic unloader
  change, no warm-record sag or thermal camera. Cost: defects found hours
  later, covered by the Duplex operator, per-cycle telemetry and an early
  lane for the first records of each run and after stamper changes.
  Record key from the stack label and stack position, checked against the
  run-out stamper number. Capacity 10 to 12 a minute against 5 to 6:
  one station to about two Duplex systems and two Classics. A station at
  each press stays the later option. Cost table, open points, infeed row,
  thermal camera note and the Newbilt question follow.
- Fleet calculator: the per-press stations and the release station are
  gone; the finishing block shows the cooling racks with record stacks
  and the one optical station by the corridor glass; tooltips, corridor
  and conveyor texts; machine park back to its legend, finishing box
  "cooling, QC, packing".
- quality-automation.md layer 1, digital-factory.md QC row,
  process-flow.md stage 6, site-candidates.md block ground floor,
  crane-workshop-tours.md tour stop 6.
- Investor render: infeed label "the operator sets each cooled record
  down".

Checks: node --check; pw_bp_calc.py 0 fails; pw_iso_view_check.py OK;
info for every data-id at all presets, levels and rotations; GF nodes
2,414 at the full preset; zoomed shots in two rotations.
2026-10-18 15:18:00 +07:00
grabowski 9ffcfe62f1 Plant view: inline optical QC station at every press
Deploy test site / deploy (push) Successful in 58s
User, 18 Oct 2026: add the new inline inspection machine to the factory.

- Fleet calculator, isometric plant view: qcStation() draws the concept
  station (1.9 x 0.65 x 1.5 m: aluminium conveyor table with the two rim
  belts, light-tight tunnel, stack light, record on the infeed, reject
  bin) in front of the operator in every Duplex cell (after the trimmer)
  and at the unload side of every Classic, in the hall and in phase 2;
  own ids qc-duplex-n / qc-classic-n with tooltips from
  inline-optical-qc.md (Classic hand-off open with Newbilt). Cell floor
  extended to take the bin.
- The finishing block's end-of-line optical station becomes the release
  inspection: the same station measuring cooled samples (records settle
  ~24 h); corridor, block and conveyor tooltips reworded.
- Machine park schematic: a QC bar in every Duplex cell and Classic, an
  "inline QC" legend entry; the legend moved to the bottom of the hall
  box (it collided with the hall heading).
- Docs: inline-optical-qc.md (release station location, plant view),
  site-candidates.md block ground floor, crane-workshop-tours.md tour
  stop 6.

Checks: node --check on all scripts; pw_bp_calc.py 0 fails;
pw_iso_view_check.py OK; every data-id has info at all presets, levels
and rotations; legend clear of cells and heading up to 30M records;
zoomed shots in both themes and two rotations. GF node count at the full
preset 2,523 (was 2,388), 8M records ~2,980; rebuild under 60 ms.
2026-10-18 14:56:08 +07:00
grabowski 705690eb99 Fleet calculator: plant view starts from the front, drag pans at any zoom
Deploy test site / deploy (push) Successful in 55s
User, 18 Oct 2026: show the factory from the front at start, and make the
view movable always, not only after the first zoom.

- CNXIso default rotation 1 (from the south-west: office, car park and
  gate face the viewer) instead of 3; documented setRotation in the
  header. The business plan renders pin setRotation(1) already.
- Drag pans at fit as well (was only when zoomed in); grab cursor at
  every zoom, grabbing while dragging. On touch screens the fitted view
  keeps vertical swipes for page scrolling (touch-action pan-y), so a
  horizontal drag pans; once zoomed in every direction pans, as before.
2026-10-18 14:24:54 +07:00
grabowski e8674795f5 Inline QC station: real 40x40 profiles, labelled investor render
User, 18 Oct 2026: use real 40x40 profiles, make a render with text
pointing out the parts to show the investor; the ring lights looked
like they were floating.

- build_station.py: frame drawn from the real 8-slot 40 series section
  (profile_shape: slots, centre bore, corner cavities; 40x80 with centre
  cavity) and 24 cast angle brackets; top beams now butt between the
  uprights; label-camera posts moved beside the cameras so both ring
  lights clamp straight to them; top line-scan on a side post with
  visible camera plate and light hangers; slide strips on carrier angles,
  pulley axles, end-stop posts, presence-sensor brackets, backlight post,
  cabinet on base crosses, chute on two supports and clear of the rail,
  pneumatics rail, stack light on the back upright, touch screen on the
  front end upright. A connectivity check at the end lists any part that
  does not reach the floor through touching parts: none.
- render_annotated.py (FreeCAD): front three-quarter view, camera backed
  off so nothing is clipped, no navigation cube or preselection, label
  positions projected from the camera and checked with marker renders.
- annotate_render.py (Pillow): title, 16 labels in two columns, leaders
  assigned so none cross -> inline-qc-station-annotated.png.
- render_station.py: same camera and preselection fixes; all six views
  re-rendered.
- BOM: 32 m of 40x40 in 45 pieces; total still USD 16k to 33k.
- inline-optical-qc.md and README updated; .gitignore for the render
  intermediates.
2026-10-18 14:07:41 +07:00
grabowski 609424b598 Inline QC station: concept setup on an aluminium profile frame
User, 18 Oct 2026: create a setup for the inline optical QC, an
aluminium extrusion frame with all sensors and a conveyor mounted to it.

- docs/equipment/inline-qc-station/: FreeCAD script (build_station.py)
  and model (.FCStd) of one station, 1.9 x 0.65 x 1.5 m on 27 m of
  40x40 and 3.8 m of 40x80 profile: rim-belt conveyor (two 6 mm PU round
  belts under the unrecorded rim, open centre), label gate with top and
  bottom colour cameras on the fly, inspection position with a lift and
  rotate chuck (75 mm lift, expanding mandrel, belt-driven servo), top and
  bottom 4k line-scans on opposite radii with coaxial, dark-field and
  backlights, two warp lasers, optional thermal camera, light-tight black
  tunnel with door switch, rodless-cylinder reject pusher with chute and
  bin, outfeed stop, cabinet, PLC, NixOS edge PC, HMI, stack light.
- render_station.py renders six views (open and closed iso, front, plan,
  inspection detail and elevation via clipped temporary documents).
- inline-qc-station-bom.csv: 32 lines with sources; USD 16k to 33k per
  station without the thermal camera.
- inline-optical-qc.md: new section "The station setup" (flow table,
  inspection zone, cycle ~5 to 6 s, control, BOM by group, open points);
  cost table updated (two launch stations ~USD 50k to 105k, still inside
  the metrology launch tier); Duplex/Classic flow now via the conveyor.
- README bullet and tree.
2026-10-18 13:29:55 +07:00
grabowski 5207808b57 Inline optical QC: devices for the record inspection station
User, 17 Oct 2026: research on the inline QC equipment, which devices
can be used for the optical check.

- New docs/equipment/inline-optical-qc.md: defect-by-defect table with
  the optical signature, device and limit (IEC 98 / DIN 45547 hole and
  eccentricity, Stamper Discs targets, Mobineko warp limits), precedents
  (no vinyl product; Dr. Schenk ISM CD scanner as template; Basler/Xiris;
  PRP AQA 2023; CTU thesis), a station design (centring turntable, 4k
  line-scan per side with dark-field, bright-field and transmitted light,
  colour label camera, two laser warp sensors or a line profiler,
  optional thermal camera) with sourced price signals, resolution and
  eccentricity math, throughput, placement at the Duplex cell and the
  Classic, smart-camera vs open GenICam/Aravis/OpenCV/anomalib on NixOS,
  specials, Thai channels, next steps.
- Estimate USD 12k-30k hardware per station, ~USD 40k-100k for the two
  launch stations; inside the existing metrology launch tier, no plan
  price change.
- Backlinks: quality-automation.md layer 1, digital-factory.md QC
  integration row, README bullet and tree.
2026-10-17 23:47:12 +07:00
grabowski 984ced2485 Biomass steam in both plans, PV on the factory roof only
Deploy test site / deploy (push) Successful in 49s
User, 17 Oct 2026: "only put solar on the factory, prepare the other
buildings for solar, option a and b should operate on biomass".

- Steam: two 500 kg/h biomass modules (Getabec class, 6M to 10M THB) plus
  a fuel store and handling block (1M to 2M, estimate) in both plans; the
  electric bank becomes the alternative. ~0.67M THB of fuel a year against
  ~4.9M for electric steam; grid demand ~264 kW instead of ~980 kW.
- Solar: ~520 kWp on the factory roof (the biomass-case optimum is ~500 to
  550 kWp, hourly sketch in sustainability.md "PV size with biomass
  steam"); office roof and parking canopies built PV-ready (~120 kWp
  later). ~87 % used on site, ~61 % of the plant's electricity.
- Calculator: biomass default, bFuel row, pvKWp 520, pvSelf 87, iso fills
  the factory roof first and shows the other roofs as PV-ready.
- Numbers: launch plant ~168M / 232M / 296M with contingency; Plan A
  ~182M (~2M above 180M: the Chinese-route lever priced only electric
  boilers; a Chinese biomass quote is the way back), Plan B ~217M (label
  ~215M), ~35M more. Calculator EBITDA A 2.17M, B 2.23M USD.
- CSV, total-investment, revenue-model, sustainability, scale, biomass,
  site-candidates, boi, steam-cooling, construction RFQ (canopies
  PV-ready), README, roadmap; business plan draft 0.3 rebuilt (A and B
  63 pages) with new renders.
2026-10-17 20:24:55 +07:00
grabowski 9ff5feef11 Solar on every roof, BOI solar correction, open source section
Deploy test site / deploy (push) Successful in 54s
Solar (user, 17 Oct 2026: "use as much roof space as possible")
- PV on every roof and canopy: ~640 kWp on the Payap scenario plot
  (factory roof ~523, canopies ~54, flat office roof ~65 kWp around the
  AC units); ~300 kWp on the Mueang Chi hall. Calculator: pvKWp 640,
  new pvSelf 85 % (zero export, hourly sketch), PV cost per kWp times the
  array, office-roof PV in the iso view, roofs drawn full.
- 12.8M to 16.6M THB at 20 to 26 THB/W; CSV baseline 34.37M to 56.34M;
  launch plant ~168M / 231M / 294M THB with contingency; Plan B ~216M
  (label ~215M), ~39M above Plan A; Plan A unchanged (it leases the
  array), its solar lever ~17.5M. PV payback ~4.2 to 5.9 years.
- Permits (rooftop solar no factory licence since 28 Dec 2024, ERC
  exemption under 1,000 kVA, PEA zero export) and PPA discounts sourced
  in sustainability.md.

BOI correction
- Announcement 3/2568 (in force 1 July 2025) ended BOI promotion for
  solar installations; only the battery may qualify (12M THB per MW cap).
  Removed the "BOI solar measure" from boi.md, total-investment,
  revenue-model, sustainability, site-candidates and both plan versions;
  Plan B's case for owning the array is the PPA bill it avoids
  (~0.07M USD a year).

Open source (user, 17 Oct 2026)
- digital-factory.md "Open source throughout, and working with other
  plants": everything we run and build is open source on NixOS, our code
  published (licence to decide), vendor firmware the stated exception;
  later the stack and factory-automation services for other pressing
  plants, not in the revenue.
- Business plan section 5.6 plus an executive-summary bullet, reading
  guide and not-modelled mentions; draft 0.3 rebuilt (A 60, B 61 pages),
  renders re-made with the roofs full.
2026-10-17 17:22:57 +07:00
grabowski ab303618d8 Solar and battery re-priced from Thai market data (October 2026)
Deploy test site / deploy (push) Successful in 46s
- Rooftop PV, 300 kWp (size still illustrative): 20 to 26 THB/W installed
  with the Deye hybrid inverters, 6.0M to 7.8M THB (was 25 to 35 THB/W,
  7.5M to 10.5M). Sources in the utilities CSV: DEDE Thailand PV Status
  report (Mahidol survey: 22 to 25 THB/W for factory systems of 10 kW to
  1 MW, 2023), CapSolar 2026 (20 to 25 under 1 MWp), Saimai Solar's list
  (300 kW for 5.4M THB), Deye hybrid inverter retail (160,500 THB per
  50 kW).
- Battery 271 kWh, now installed: 2.0M to 3.5M THB (was the bare Gobel
  list price, 1.4M to 2.0M, which matches DEDE's 5,000 to 7,000 THB/kWh
  for LiFePO4); adds enclosure, fire protection, controls and installation,
  below CapSolar's 12,000 to 15,000 THB/kWh for a fully installed factory
  BESS because the hybrid inverters do the conversion (estimate).
- Utilities baseline 27.57M to 47.50M THB; launch plant ~160M / 222M /
  283M THB with contingency; Plan B ~208M (~149M to 266M), ~31M more than
  Plan A; Plan A's total unchanged, its solar lever ~9.7M. PV payback
  ~3.8 to 5.4 years (sustainability.md). Calculator, README, roadmap,
  revenue model and both business plan versions (renders included)
  updated.
2026-10-17 16:41:14 +07:00
grabowski 3f33babdaa Plan B re-defined: the launch plant with everything in (~210M THB); front view on the cover
Deploy test site / deploy (push) Successful in 52s
- Plan B now starts like Plan A with one Duplex system and one Classic,
  but takes none of the six levers: owned solar and battery (with the BOI
  solar measure), the full metrology stack, the visitor corridor, cassette
  and CD-R, the bought crane and Thai-supplied utilities (user, 17 October
  2026). ~193.8M THB before the reserve, ~209M with it (~150M to 268M),
  ~32M (~18 %) more than Plan A; the second Duplex is a growth step from
  revenue in both (~15.4M THB, estimate).
- total-investment.md "Two plans" re-based (heading and anchor now
  "B at ~210M THB", README and roadmap links updated); revenue-model.md
  operating pictures: same volume and EBITDA as Plan A, depreciation on
  Plan B's capital (operating profit 1.26M USD central, payback ~3.7 yr);
  the extra earns nothing in the modelled table, which the docs say.
- Calculator: Plan B preset = the launch plant with contingency kept out
  (EBITDA 2.07M USD, cash payback year ~4.3, IRR ~21 %); budget card marks
  180M and 180M plus 25 %; preset label "Plan B (~210M, all in)".
- Business plan draft 0.3, both versions rebuilt: every Plan B branch of
  the three content files rewritten; renders regenerated with the
  isometric view turned to the front of the site (road, car park, office,
  corridor facade) for the cover and Figures 8 to 10.
2026-10-17 16:33:18 +07:00
grabowski ffc6cedbca Business plan: isometric calculator views instead of FreeCAD, software section with screenshots
- Cover and section 6.2 now use the isometric plant view of the plant and
  business plan calculator, drawn with each version's own preset: the
  cover (roofs, no labels), Figure 8 the site from above, Figure 9 the
  ground floor cut open, Figure 10 the press hall close up. The FreeCAD
  aerial render, the Mueang Chi site plan and the hall layout sketch are
  no longer in the plan; the captions say the calculator draws the Payap
  scenario model while the 6.2 text and zone table are the Mueang Chi
  hall.
- New section 5.5 "The software: plant overview, factory console and
  artist platform" with six screenshots of the demos: the plant overview
  (simulated SCADA), the factory console press floor and its ERPNext
  link, the artist ordering offer, fan funding and the record passport.
  Simulated data is marked as such; the platform name stays undecided.
- Figures renumbered (budget card 11, cash 12) and named in the
  section 15 source table. Renders in docs/renders/calculator/ and
  docs/renders/demos/; README bullet updated.
2026-10-17 16:06:04 +07:00
grabowski bd357ab03f Business plan draft 0.3 in two versions: Plan A ~180M and Plan B ~225M THB
Deploy test site / deploy (push) Successful in 52s
- One build makes both documents: plan_variant.py switches the
  plan-specific text (pick / is_a / label); build_plan.py writes
  CNX-Vinyl-Business-Plan-A and -B (docx), export_pdf.py exports both PDFs
  with the table of contents filled in. Draft 0.2 (single launch-plant
  plan with contingency) is removed; it stays in the history.
- Plan A: the launch plant with every machine and six cost levers, ~177M
  THB with the ramp-up reserve, no contingency. Plan B: the second Duplex
  at launch, five presses, ~224M THB on the same basis. Each version reads
  as a complete plan with one table comparing it with the other; the
  216M investor-question text is gone, Pheenix is priced at OMS's
  reference plus 20 %.
- Calculator renders in both documents, each from its own preset: the
  plant at a glance (Figure 4), the budget check (Figure 5) and ten years
  of cash (Figure 6), in docs/renders/calculator/.
- Calculator budget card: the verdict and third KPI now name the tightest
  budget the midpoint fits (Plan A: 3.3M to spare under 180M; Plan B:
  0.8M under 225M) instead of always 225M.
- Fixes: CD replication cross-references point to section 4.10; the
  blended price in section 3.3 and roadmap item 1 is 3.76 to 5.27 USD at
  60 % specials (3.50 to 4.60 at a standard-heavy mix).
2026-10-17 15:42:35 +07:00
grabowski f2ff1eac1f Two plans for the investor: Plan A ~180M, Plan B ~225M THB; Pheenix at OMS +20 %
Deploy test site / deploy (push) Successful in 53s
User (October 2026): price the Pheenix galvanics line at OMS's reference
plus 20 %, and work on a new business plan in two versions, one at
roughly 180M THB and one at +25 %; the plans do not include contingency;
Plan A keeps every machine and uses cost levers only.

- total-investment.md: Pheenix block 324k to 445k USD (OMS 4-cell wet
  room with know-how transfer, EUR 234k to 321k, plus 20 %; was 320k to
  650k estimate); launch plant now ~161M to 285M THB with contingency,
  midpoint ~223M. New section "Two plans": Plan A = launch plant with
  solar PPA, metrology launch tier, corridor later, cassette and CD-R
  later, rented crane, Chinese boilers and compressor: subtotal ~161.7M
  + ramp-up reserve 10 to 20M = ~177M THB (127M to 226M). Plan B = second
  Duplex at launch (five presses), everything in: subtotal ~209.2M +
  reserve = ~224M THB (162M to 286M). Contingency listed as not in
  either price (~24M / ~31M at 15 %). The 180M / 216M answer marked
  superseded.
- revenue-model.md: operating pictures of both plans at 60 % specials.
  Plan A central EBITDA 1.73M USD, operating profit 1.34M, payback ~3.1
  yr on the plan price; adverse loses money. Plan B (1.0 / 1.25 / 1.5M
  records) central EBITDA 3.14M, operating profit 2.63M, payback ~2.2 yr;
  adverse just covers depreciation; needs ~1.25M records sold.
- Calculator: Pheenix price basis "OMS +20 %" and "OMS directly"; new
  contingency switch (in the total / shown separately); presets Plan A
  and Plan B (replace "investor levers" and "five-press"); budget card
  against 180M and 225M.
- galvanics.md price note, README, roadmap.

Checks: calculator regression updated and passing (0 fails, no page
errors), node --check on all scripts, site build (no dead links), no em
dashes added.
2026-10-17 14:47:43 +07:00
grabowski f7e20e1015 Make a record: USD / THB / EUR selector and English / Thai language switch
Deploy test site / deploy (push) Successful in 1m45s
User (October 2026): currency selector on the first page (USD / THB /
EUR) and a language selector for Thai on the make-a-record demo.

- Top bar: one currency control (replaces the THB/USD switch on the
  price step) and an EN / Thai control, visible from step 1; both persist
  (localStorage, #cur= / #lang= in the URL, hash wins). Prices stay
  computed in THB: USD = THB / 33, EUR = THB / 38.115 (1 EUR = 1.155
  USD); the fan price is entered in the chosen currency and stored in
  THB, the campaign rule max(100, break-even) unchanged.
- Thai: every visible string, tooltip, aria label, file check, quote
  line, production update, passport, investor note and tour caption
  (dictionary T = {en, th}, t(key, vars), data-i18n attributes; 636
  keys), system Thai fonts, Thai dates with Gregorian years, and a footer
  note that the Thai is a draft translation for review. Template PDFs
  stay English (Helvetica has no Thai glyphs).
- Top bar wraps to two rows below 1000 px (steps were cut off between 761
  and 990 px before).
- README and landing entries mention the currencies and Thai.

Checks (headless Edge): doc example unchanged in THB (37,836 per title,
232 per copy at 100, break-even 41, goal 100, ~548 kept, 640 hint);
conversions exact; 390 / 768 / 1024 / 1440 px, light and dark, EN and
TH, all currencies, steps 1 to 5: no page errors, overflow or untranslated
leftovers; tour in Thai; node --check; no em dashes.
2026-10-16 22:03:50 +07:00
grabowski 3f1e4452b8 Press hall: five Duplex bays and four Classic positions (balanced at 60 % specials)
Deploy test site / deploy (push) Successful in 44s
User (October 2026): "change the hall layout" after the finding that the
60/40 floor split leaves the Classics about half loaded at 60 %+
specials (specials run only on the Duplex systems).

- Press hall now keeps five Duplex bays (four along the visitor
  corridor, the fifth at the head of the second row) and four Classic
  positions: 550 + 200 = ~750 m2 of ~870 m2, ~73/27 by floor, 10 to 4 by
  presses; launch plant fills one of each, growth adds Duplex first.
- Full hall: ~2.9 to 4.4M records a year at 60 % specials, Classics ~80
  to 100 % loaded (60/40 gave ~2.3 to 3.6M); ~3.2 to 4.4M at ~20 %;
  fourteen presses as before: ~2.1 to 2.5 t/h steam, up to ~1.8 MW
  cooling, a utility phase of its own.
- pressing-line.md, scale.md, site-candidates.md, crane-workshop-tours.md,
  roadmap.md, README (FreeCAD model still the earlier layout, not
  redrawn); calculator preset "Full hall (5 D + 4 C)" and ladder; plant
  view reserves 5 Duplex bays and 4 Classic positions; business plan
  draft 0.2 rebuilt.

Checks: renderer 720 checks and functional checks pass, calculator
regression 0 fails, level checks clean; PDF 47 pages, TOC filled.
2026-10-16 20:57:51 +07:00
grabowski b3e8e4272b Specials share 60 %+: revenue model, calculator and business plan re-based
Deploy test site / deploy (push) Successful in 52s
User (October 2026): "lets say 60+% special prints" (the plant focuses on
special prints, not mono colours).

- Specials (splatter, marble, colour effects) run only on the Duplex
  systems, so at 60 % the Duplex sets the launch plant's output: ~0.58 /
  0.74 / 0.90M records a year (was 0.71 / 0.84 / 0.97 at ~20 %), the
  Classic at about two thirds load. Full 60/40 hall: ~2.3 to 3.6M (Duplex
  -limited, Classics about half loaded); five-press fleet unchanged. A
  hall balanced by output at 60 % would give Duplex ~70 to 75 % of the
  floor (estimate; noted, not applied).
- Blended price 3.76 / 4.49 / 5.27 USD (standard 3.40 / 3.80 / 4.25 plus
  the 0.60 / 1.15 / 1.70 specials premium on 60 %). Launch operating
  picture: revenue 2.28 / 3.65 / 5.41M USD, EBITDA 0.23 / 1.73 / 3.79M,
  operating profit -0.66 / 1.21 / 3.46M, payback ~3.8 yr central,
  break-even ~0.25M records; adverse needs ~1.1M records to cover
  depreciation. Specials' extra direct cost (coloured compound, purge,
  trim only into black) is not in the cost table yet: flagged as an
  upper bound until compound quotes.
- Calculator default specials share 20 -> 60 % (planning rates keep the
  launch plant balanced at 850k: revenue 4.14M, EBITDA 2.07M, payback
  3.3 yr, cash payback year ~4.8, IRR ~18 %).
- revenue-model.md, scale.md, pressing-line.md, README; business plan
  draft 0.2 rebuilt (sections 1, 4, 9, risks).

Checks: calculator regression 0 fails, no page errors, node --check on
all scripts; PDF 47 pages, table of contents filled; no em dashes added.
2026-10-16 20:45:39 +07:00
grabowski d8b2c1e2db Press hall laid out 60/40 for Duplex systems (special pressings first)
Deploy test site / deploy (push) Successful in 46s
User (October 2026): "the factory should have more space for duplex
setups than classic, we will mainly focus on special prints and not mono
colours plan it to be 60/40 duplex classic".

- Press hall (~870 m2) planned 60/40 by floor: four Duplex bays along the
  visitor corridor and six Classic positions in the second row (440 + 300
  = ~740 m2 at 110 / 50 m2), the rest open for mould carts and staging;
  the launch plant fills one of each, growth adds Duplex systems first.
  Replaces "room for ten more Classics".
- Full hall: 8 semi-automatic presses + 6 Classics, 57/43 by press count,
  ~1,250 to 1,410 records/h gross, ~3.6 to 4.7M a year on the scale.md
  basis (was 4.7 to 5.8M for 2 Duplex + 11 Classics); ~2.1 to 2.5 t/h
  steam and up to ~1.8 MW cooling, still a utility phase of its own.
  By hourly output the six automatic Classics still press more than the
  eight semi-automatic presses (estimate).
- pressing-line.md, scale.md (capacity table, utilities), site-candidates
  .md, crane-workshop-tours.md, roadmap.md, README (the FreeCAD Payap
  model still draws the earlier layout; noted, not redrawn).
- Calculator: preset "Full hall 60/40 (4 D + 6 C)", fleet ladder Duplex
  first (1+1, 2+1, 3+2, 4+3, 4+6) plus the same floor Classic-led (2+11)
  and Duplex-only (7+0) for comparison; plant view reserves 4 Duplex
  bays and 6 Classic positions.
- Business plan draft 0.2 rebuilt (capacity table row, plot fit, layout).

Checks: renderer 720 checks pass (node budget 2,700 for the Duplex-heavy
stress preset, 60 fps), calculator regression 0 fails, level selector and
page checks clean at 390 / 1024 / 1440 px dark and light; PDF 47 pages
with a filled table of contents.
2026-10-16 20:09:56 +07:00
grabowski 4beda7f27a Plant view: toilets in the factory, link lands on doors, no separate trimmer
Deploy test site / deploy (push) Successful in 45s
User feedback on the isometric view (October 2026):
- "the production hall is missing toilets": two sets. At the staff
  entry: women 2 WC, men 1 WC and 1 urinal, an accessible WC, basins.
  At the east end of the back aisle in the finishing block: women 2 WC,
  men 1 WC and 1 urinal, basins (proposed, not yet in the parametric
  plans). site-candidates.md gets a Toilets bullet with the Thai minimum
  (Ministerial Regulation No. 39 B.E. 2537, table 2; separate toilets for
  men, women and disabled staff under the welfare regulation B.E. 2548).
- "the door and the corridor is not aligned": the covered link now lands
  on doors at both ends, centred on it (factory entrance at the start of
  the visitor corridor, office lobby door on the north face, windows
  cleared); the corridor glass starts after the door; the stray staff
  door with no path is gone; the link deck ramps up to the factory floor.
- "we also dont need a extra trimmer with the optical, this is included
  in the duplex and the classics": the finishing block keeps only the
  optical inspection station; site-candidates.md, the tour route and the
  process flow say the presses trim inline.

Checks: renderer 720 checks and functional checks pass (max 2,485 SVG
nodes); calculator regression 0 fails; level selector works in the page;
no page errors or overflow at 390 / 1024 / 1440 px, dark and light.
2026-10-16 19:40:05 +07:00
grabowski 8e4559ee36 Plant view: GF / 1F / Roof levels, lamps off the drive areas, pipe bridges land on walls
Deploy test site / deploy (push) Successful in 48s
User feedback on the isometric view (October 2026):
- "a light pole in the middle of the truck apron": a PAVED list of the
  drive areas (gate road, aprons, east road, lane, access road, car
  park, yard); every lamp now stands on a kerb or verge (the apron lamp
  to the south kerb, three more moved off drive areas, one added on the
  east road); one LAMPS list feeds poles and light pools.
- "the office building also has 2 levels, can we make a selector for GF
  1 2": the Roof / Inside toggle becomes GF | 1F | Roof. 1F shows the
  office first floor (+4.0 m: offices, meeting and training, meeting
  room, IT and server, toilets, pantry, flexible room, stair and lift)
  and the finishing and print block's upper floor (+3.8 m: print room in
  reserve, print stock, packaging materials, stair and goods lift), the
  rest ghosted. Office ground floor re-split after the floor plans
  (site-candidates.md). setMode('inside'/'roof') still works; new
  setLevel / getLevel / onLevel; the level survives calculator updates.
- "the pipe bridge to the pump and HX room also stops mid air": both
  pipe bridges now drop down the wall faces at the factory and at the
  yard building to low-level wall sleeves, with a second support post.

Checks: renderer 720 checks (presets x GF/1F/Roof x 390/1024/1440 x
dark/light) and functional checks pass; calculator regression 0 fails;
level selector works in the page; screenshots reviewed in all rotations.
2026-10-16 18:52:17 +07:00
grabowski 073f20a132 Plant view: cars under the canopies, PV on the car park, yard lamps, silo order
Deploy test site / deploy (push) Successful in 47s
User feedback on the isometric view (October 2026):
- "the cars are above the car park roof": cars and scooters were their
  own sprites and the depth sort put some above the canopy; they are now
  drawn inside the canopy sprite before the posts and the roof, so the
  roof always covers them in every rotation.
- "a light pole in the middle of the yard": the two yard lamps at the
  service-lane edge (one in front of the boiler hall) move to the yard's
  back fence; one LAMPS list feeds both the poles and the light pools.
- "add solar panels to the car park": the car and scooter canopies now
  take PV first (107 modules, ~48 kWp; construction RFQ has canopy PV),
  the factory roof the rest (560 of 667 modules at 300 kWp); canopy
  tooltips give their kWp.
- "arrange the pvc storage outside to be black, red, yellow": the silos
  read black, black, red, yellow from the default north-east view.

Renderer checks rerun (288 + functional, no failures); calculator
regression 62 checks pass; 390 / 1024 / 1440 px, dark and light, no page
errors or overflow.
2026-10-16 18:10:53 +07:00
grabowski d7380919e4 Steam and cooling, plant operation: show the launch plant (1 Duplex + 1 Classic)
Deploy test site / deploy (push) Successful in 43s
User (October 2026): "launch plant should be 1x duplex system and 1x
classic". The calculator already did; these two pages did not.

- steam-cooling.html: default case is now "Launch plant" (D1-A, D1-B,
  Classic; B-1 and B-2; CH-1 and CH-2: 450 to 540 kg/h on 1,000 kg/h,
  391.5 kW on 500 kW). Other cases: Duplex first (commissioning), Second
  Duplex (growth option, five presses), One module down (launch plant
  with B-2 and CH-2 out). Idle boxes say "reserved position" / "growth
  option". Phasing table: launch plant, second Duplex, options;
  galvanics cooling is launch scope. Five-press figures labelled as the
  growth case or backbone sizing; chiller cost per the CSV 2-module row.
- plant-operation.html: the launch plant: Classic C2 removed everywhere
  (press, trimmer, routes, conveyor, lamps, texts), Classic re-centred;
  one PDPU (2 cells) as in total-investment; boilers 2 x 500 kg/h,
  chillers 2 x 250 kW; title arrivals scaled to three presses; phone
  legend in one column.
- Landing entries and README bullets for both pages.

Verified headless (Edge): skill checks pw_sc_check and pw_plant_check
with launch-plant expectations, 90-day runs, perf unchanged; 390 / 1024
/ 1440 px dark and light without page errors or overflow.
2026-10-16 16:58:37 +07:00
grabowski 71e30b0633 Plant view: isometric tile-game render of the configured plant
Deploy test site / deploy (push) Successful in 45s
User request (October 2026): a SimCity / Factorio style render in the
calculator for an overview of the factory, solar and utilities.

New card "The plant at a glance" at the top of the plant and business
plan calculator: an isometric SVG scene (CNXIso, inlined with its iso-
prefixed CSS) of the Payap-scenario site driven by the calculator state:
Duplex systems and Classics (r.D, r.C; overflow into the phase 2
building), galvanics in-house or "stampers bought in", cutting in-house
or "cut abroad", metrology tier, cassette and CD-R benches, solar buy /
PPA / none (300 kWp, 271 kWh battery), electric or biomass steam (fuel
store, chip pile, smoking stack), boiler and chiller modules out of the
four positions each (r.nb, r.nc), crane, visitor corridor.

Roof / Inside cutaway, four rotations with a north arrow, zoom, pan,
pinch, tap for figures from the docs; dusk in the dark theme, day in the
light theme; CSS-only animation that pauses off-screen and respects
reduced motion. The scene only rebuilds when its config changes.

Verified headless on Edge: 390 / 1024 / 1440 px, dark and light, no page
errors, no overflow, presets map to the scene (lean, five-press, full
hall); the calculator's 62-check regression still passes; node --check
on all scripts. Renderer built and tested separately (288 checks).
2026-10-16 16:55:34 +07:00
grabowski 485b3b630a Plant and business plan calculator: configuration, investment, budget, ten-year cash
Deploy test site / deploy (push) Successful in 44s
User request (October 2026): an interactive business plan calculator
where the plant configuration is chosen and everything follows. Built
into the fleet calculator (same page and URL, one model):

- Plant configuration card: galvanics in-house or bought stampers (and
  Pheenix estimate vs OMS reference), mastering and cutting in-house or
  outsourced, metrology full or launch tier, cassette and CD-R, solar
  buy / PPA / none, electric or biomass steam, Thai or Chinese utilities,
  crane buy or rent, visitor corridor now or later, ramp-up reserve;
  stamper supply to other plants; disabled-not-hidden controls.
- Investment built from the total-investment blocks (low / mid / high,
  sources and kind badges); boiler and chiller modules sized from the
  fleet and flagged past the four positions; phase 2 building past the
  870 m2 press hall. Default reproduces 160.9 / 226.7 / 292.5M THB.
- Budget card against 180M and 216M THB; "Investor levers" preset gives
  193.6M mid, 203.6 to 213.6M with the reserve.
- Money follows the configuration: outsourced title steps passed through
  at cost (fee split 51.1 / 37.0 / 11.9 %), electric steam energy and
  demand charge, PPA power price, optional cassette/CD-R revenue.
- Ten-year cash view: editable ramp and discount rate, payback, NPV, IRR,
  chart and table; pre-tax, pre-financing sketch.
- Presets: launch plant, investor levers, lean, five-press, full hall.
- Verified headless on Edge: 62 checks, 390 / 1024 / 1440 px, dark and
  light, no overflow, no page errors.

Business plan 9.4 cross-check updated to the calculator's figures
(EBITDA 1.68M, payback 4.1 yr; cash payback year ~5.7, IRR ~13 %);
docx and pdf rebuilt. README and landing entry renamed.
2026-10-16 16:15:22 +07:00
grabowski d42e99389b Business plan draft 0.2: re-based on the launch plant
The investor business plan (docx + pdf) rebuilt for the launch plant
decided in October 2026: one Duplex system and one Classic, Pheenix
galvanics with zero discharge, the Sibert line, a Sillitoe cutting room,
modular steam and cooling (rooms for four), cassette and CD-R; no bridge
stampers, no outsourced cutting; second Duplex as a growth option.

- Part A: executive summary (what changed since 0.1, the numbers, the
  180M / 216M answer, first release marked open), reading guide, two
  price points (ResurRec and Record Industry), anatomy rewritten for
  Sillitoe, Pheenix, Sibert, Duplex + Classic, lead times without bridge
  stampers, new 4.8 artist platform, cassette 4.9, CD 4.10.
- Part B: traceability with ERPNext as system of record, metrology launch
  tier as the investor's choice, QC, efficiency (PEA tariff, utility
  modules, fuel open, Chinese boilers and DIW rules), site (Mueang Chi,
  Payap zoning result), building blocks, safety, BOI and licences with
  galvanics in the first factory licence.
- Part C: launch-plant investment table, the investor's question and
  levers, tranches, currency, operating picture of the launch plant,
  timeline with the metal path on the critical path, commissioning
  sequence and why the whole chain at launch, team, 22 risks, 17 phase 0
  actions, the ask.
- plan_lib: grid column widths so LibreOffice keeps table widths.
- export_pdf.py: LibreOffice UNO export that fills the table of
  contents (47 pages).
- README: total investment, revenue model and business plan bullets.
2026-10-16 16:01:25 +07:00
grabowski 794cde228c Re-base scale, pressing line, roadmap, revenue model and calculator on the launch plant
Deploy test site / deploy (push) Successful in 48s
Launch plant (user, October 2026): one Duplex system and one Classic,
with cutting and galvanics in-house, everything in one capital round.

- scale.md: capacity table now launch plant 0.71-0.97M records/yr, the
  second Duplex as a growth option; launch utilities (450-540 kg/h on
  B-1/B-2, ~390 kW on 2 x 250 kW); calculator figure ~0.94M.
- pressing-line.md: launch plant section on top; five-press fleet kept as
  the layout fleet the hall and backbone are built for.
- roadmap.md: long-lead orders for the launch plant, no bridge stampers
  or outsourced cutting, commissioning order, what stays revenue-gated.
- revenue-model.md: operating picture of the launch plant: central
  revenue ~3.75M USD, EBITDA ~1.6M, operating profit ~1.1M, payback ~4
  yr on 216M THB, break-even ~0.3M records; adverse corner cannot cover
  depreciation. Five-press table kept and labelled.
- fleet-calculator.html: start fleet 1 Duplex + 1 Classic, target 850k,
  capex base 6.55M (cases 8.9 / 6.55 / 4.9M), Duplex beyond one, chiller
  500 kW, imported machinery 2.3M, ladder from the launch plant.
- total-investment.md: superseded note updated.
2026-10-16 15:34:19 +07:00
grabowski 7344f12dc8 Chinese suppliers for boilers, compressed air and hydraulics
Checked October 2026 on the investor's budget question. New
docs/suppliers/china-utilities.md: boiler makers (ZOZEN, Sitong,
Fangkuai, Taiguo, Yuanda, Yongxing, Taishan, Nobeth) with fit for 500
kg/h at 1.25 MPa, claimed certificates, Thai references and listing
prices; the Thai rules for an imported boiler (MR and MOI notification
B.E. 2549: ASME/JIS/EN or equivalent, certification-body verification,
once-through relief does not reach 10.5 bar, licensed controller, annual
inspection); compressor makers with Thai offices (Kaishan, Denair) and
sizing; hydraulic pump sets and accumulators (Huade, Yuci, Hengli, WMD,
Renowell, Inovance, NXQ makers), the shared-ring-main risks and Thai HPU
builders; duty and freight; open RFQs.

Result: about 2M THB at the midpoint (~2.5M with contingency), ~1 % of
the 216M target, mostly the boilers; Newbilt aggregates stay Newbilt's.
total-investment notes it and lists the uncosted central hydraulic
plant; utilities CSV gets the Chinese candidates and route estimates;
backlinks from equipment-suppliers, pressing-line, README.
2026-10-16 15:21:38 +07:00
grabowski 553b4a93d1 Launch plant roll-up and the investor's 180M THB question
Decided (user, October 2026): the plant launches with everything in one
capital round, commissioned in sequence: one Newbilt Duplex system, one
Classic, a Pheenix galvanics line with ZLD water, the Sibert line, a
Sillitoe cutting room, and the modular steam and cooling plant (2 x 500
kg/h boilers, 2 x 250 kW chillers, rooms for four each). No bridge
stampers, no outsourced cutting; cassette and CD-R stay; the second
Duplex and further Classics are growth options, not in the investment.

total-investment.md: new 'Launch plant' roll-up, 4.9M to 8.9M USD,
161M to 292M THB incl. 15 % contingency (midpoint ~227M), with what is
left out (ramp-up reserve ~10-20M THB, CD replication, financing, FX,
archive shelving) and the BOI assumption. The investor's question (180M
THB, maybe +20 % = 216M): fits at the low end only; at the midpoint four
levers that keep every machine (solar via PPA, metrology launch tier,
galvanics near OMS's reference, visitor corridor later) give ~193M, plus
reserve ~203-213M, inside 216M; 180M needs low quotes. The quotes that
decide it: Newbilt (Duplex, Classic), Pheenix galvanics, building with
soil test, metrology. Old full vision and phased entry marked superseded
until the mirrors are re-based.

Utilities CSV: chiller bank two modules (4.9-7.9M THB), boiler note for
B-1 and B-2 at launch, ZLD and DI rows now launch scope (carried with
galvanics); baseline 28.47M-48.73M THB. README project status.
2026-10-16 14:53:19 +07:00