15d28d2e0ba0c04d1d152d7a23408d4249876098
100
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
15d28d2e0b |
Plant assistant: one agent management and operators can ask
New docs/plant-assistant.md (decision, Alexander, 26 Oct 2026): an assistant for the whole plant, asked in Thai or English at kiosks, desks and phones, answering from the knowledge base (SOPs as ERPNext Quality Procedures, vendor manuals on the Assets, recipes and limits, this repository, lessons learned) and from ERPNext and the machine-data store, with sources on every answer. Roles and questions, what it does (explain, trace, summarise, alert context, plan vs actual, drafts) and never does (machines, submitting, safety improvisation, seeing more than the asker, rating operators, needing the internet). Built on Typhoon 2.5 (open weights, Apache-2.0, CPU trial first), Typhoon ASR for optional voice, pgvector retrieval, MCP tools in cnx-factory through the one integration layer and the PostgreSQL replica; vinyl-ai GPU server only if needed (~250k to 300k THB, RTX 5090 Thai retail Oct 2026). Test set per role, phasing, cost, risks, open decisions. Mirrors: digital-factory systems and machines tables, rough cost note; catalogue advisor becomes a role of the assistant; worker-safety training; roadmap item 18; README bullet and layout. |
||
|
|
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. |
||
|
|
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). |
||
|
|
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. |
||
|
|
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. |
||
|
|
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. |
||
|
|
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. |
||
|
|
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.
|
||
|
|
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. |
||
|
|
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. |
||
|
|
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. |
||
|
|
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). |
||
|
|
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. |
||
|
|
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). |
||
|
|
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. |
||
|
|
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). |
||
|
|
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. |
||
|
|
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). |
||
|
|
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). |
||
|
|
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. |
||
|
|
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. |
||
|
|
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. |
||
|
|
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. |
||
|
|
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. |
||
|
|
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. |
||
|
|
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. |
||
|
|
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. |
||
|
|
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. |
||
|
|
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. |
||
|
|
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. |
||
|
|
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. |
||
|
|
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. |
||
|
|
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. |
||
|
|
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. |
||
|
|
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. |
||
|
|
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). |
||
|
|
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. |
||
|
|
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.
|
||
|
|
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. |
||
|
|
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. |
||
|
|
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. |
||
|
|
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. |
||
|
|
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.
|
||
|
|
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. |
||
|
|
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. |
||
|
|
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). |
||
|
|
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. |
||
|
|
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. |
||
|
|
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. |
||
|
|
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. |
||
|
|
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. |
||
|
|
07ef9c0b9a |
Order demos: spine choice, artwork templates, PDF and AI uploads
Deploy test site / deploy (push) Successful in 50s
User request (October 2026): the order tool needs a thin / thick spine selection, templates for the jacket and label upload, and must accept AI and PDF files. Both artist demos (artist-order, make-a-record): - Spine: thin 3 mm (one record) or thick 5 mm (two records, or a thick insert); a double album in a single jacket takes 5 mm, thin is then disabled; 7", gatefold (7 or 9 mm) and own jacket disable the row with the reason. Quote line 'Thick 5 mm spine' (R.spine 12 / 10 THB per copy, estimate from QRP 0.90 vs 0.55 USD and Kudos 137.50 GBP/order). Mock-up draws the spine edge to scale; caption names it. - Templates: vector PDFs written in the browser for the current choice: jacket spread (back, spine, front; 633/635 x 315 mm for 12" from Mighty Media Discs), gatefold with an inside page, labels with a page per side and the dinked hole; trim and bleed boxes set, 3 mm bleed, 5 mm safe area, folds, crop marks, guidance notes. - Uploads accept PDF, AI (PDF-compatible) and images. PDFs are read in the browser (object streams inflated with DecompressionStream): page boxes, pages, PDF/X, creator, colour spaces, font embedding; checks against the chosen spine (a 5 mm spread on a 3 mm order is flagged), bleed, CMYK, fonts; old PostScript-only AI files are refused with the fix. Image spreads are measured the same way. Preview via pdf.js (jsDelivr, loaded only when a PDF arrives); the front panel goes into the mock-up. artist-platform.md: new section 'Artwork templates and files' with the sources; preflight step links it; RI 'left out' list updated. README demo bullet. Checked headless on Edge: fixtures (3/5 mm spreads, no bleed, AI, legacy AI, front only, labels, 150 dpi PNG), downloaded templates parsed with PyMuPDF, 390/1024/1280 px no overflow, dark and light, no page errors; pw_mr_check --tour and pw_ri unchanged (37,836 / 232). |
||
|
|
5c303dfc61 |
ERPNext is the only system of record; we build tools on it
Deploy test site / deploy (push) Successful in 46s
User (October 2026): we only build tools and interfaces that interact with ERPNext; invoices, stock and the rest are kept there, except telemetry and other machine data. digital-factory.md: standing decision, decisions 2, 3, 6, 7 and 10 rewritten (ERPNext holds every record of the business and of production, including artist gates, metal-part genealogy as serial numbers with parents, and quality inspections; the machine-data store keeps only cycle and record rows, the hash chain and time series, keyed to ERPNext names; ERPNext first, then custom fields or document types in cnx_erp, then a tool, never a second business database). Systems table, architecture labels, factory application section (modules as a table: records in ERPNext, what we build, machine data outside; our only tables are the machine-data ones), ownership table, integration rules 4 and 8, phasing and estimates (cnx_erp app 2 to 3 person-months; total 3.5 to 6). artist-platform.md: campaigns are an ERPNext document from launch, pledges post as advance payment entries; traceability, README, facility security (archive location on the serial number), production timeline (sets per mother on the mother's serial number), crane-workshop spares store, total-investment. Factory console: KPI row no longer touches the postings card (user screenshot); ERPNext page, order card, sidenote and ledger say every record lives in ERPNext and only machine data stays outside; new postings for artist gates, stamper metrology inspections, stamper set serial numbers (grown, retired with play count). Checked headless: Edge dark and light, 1440/1024/390, no overflow or page errors, rows aligned, pw_fc, pw_wo, pw_feed and pw_erp pass. |
||
|
|
a101c9f7db |
Factory console: ERPNext link page and ERPNext documents on orders
Deploy test site / deploy (push) Successful in 45s
Follows the decision that the whole plant runs ERPNext and every tool
we build interacts with it (
|
||
|
|
e12ad2ed7b |
ERPNext runs the whole plant; every tool we build integrates with it
Decided by the user (October 2026): the whole plant runs ERPNext, and all tooling we develop has to interact with it. digital-factory.md: standing decision in the summary; decision 10 (ERPNext owns the business documents, the factory application owns the floor; ERPNext names are the shared keys); new section 'ERPNext: the plant's ERP' with the ownership table (customers, prices, sales orders, items and BOMs, work orders and job cards per station, batches and quality inspections per compound lot, serial numbers for metal parts, downtime entries, delivery notes, assets, accounting, payroll vs. cycles, per-record inspection, genealogy and the hash-chained log staying in the factory application), the integration rules (one typed Frappe REST client in cnx-factory, an integration user per tool, webhooks in, transactional outbox with idempotent postings so the floor never waits on the ERP, business-sized postings, customisation as a Frappe app in Gitea, nightly reconciliation, no public ERPNext endpoint, new tools use the same client), hosting on NixOS (no nixpkgs module, NixOS/nixpkgs #241921; Avunu frappe-nix as the start, frappe_docker as oci-containers fallback; MariaDB + Redis; vinyl-erp on site behind the gateway proxy; OIDC sign-on; upgrades on a restored copy), Thai localisation (Ecosoft erpnext_thailand: VAT, WHT, PND, billing notes; Ecosoft as partner to quote; payroll and BOI reporting to check), phasing (dev ERPNext now; accounting and assets from the first capex invoice; manufacturing at commissioning) and estimates. ERPNext added to the architecture diagram, services, machines (vinyl-erp), module list, backup, cost, build order and open decisions; the old 'ERP out of scope, decide after launch' line replaced. artist-platform.md: price list, customers, sales orders, campaign pledges as payment entries, through the plant's outbox. traceability.md: one ERP, one set of keys. README summary. total-investment.md added scope: ERPNext (to quote, not in the sum, no licence fee). |
||
|
|
655d5705c4 |
Supplier: LPI Rack Range (Thailand), racking and mobile shelving
Added at the user's request (October 2026): LPI Rack Range (Thailand) Corp., Ltd., Bangkok head office, plants in Bangplee Industrial Estate and Bangpla (Samut Prakan); office mobile shelving for documents, pallet racking (selective, drive-in, mobile, shuttle, pallet flow), picking shelves and mezzanines, mould-and-die racking, mini-load AS/RS; no specs or prices published (lpi.co.th, checked October 2026). equipment-suppliers.md section 8 entry; the Thai supplier the archive shelving is quoted against (facility-security.md open points, supplier map archive line); racking candidate in the utilities CSV. |
||
|
|
4f02d9a7a9 |
Archive room: mobile shelving for the father and mother archive
Deploy test site / deploy (push) Successful in 43s
Planned (October 2026, user): the archive in the office gets mobile archive shelving, A-Z Solutions (Vienna) as the reference (a-z-solutions.eu, checked October 2026: hand wheel or electric drive, lockable, rails need early floor planning; no published prices). facility-security.md, new section under Protecting the irreplaceable: what it holds (fathers and mothers, ~1,200 to 2,400 parts a year; a reference pressing per title only as a proposal), sizing estimates (about 0.2 kg per part, ~3 mm and ~75 kg per shelf metre; in the Payap office's ~4 x 5.75 m room two fixed runs, four double carriages and one aisle hold ~150 shelf metres, ~50,000 parts, 20+ years), what it asks of the building (ground slab at full rating, ~11 kN/m2 under the block; rails in the screed fixed before the floor finish; geared hand wheel; gas, climate, leak sensor, access control; barcoded box addresses), open points (quotes from A-Z and a Thai supplier, storage format from the galvanics vendors, fathers in a second compartment or off site). Mirrors: site-candidates.md (office ground floor), phase 1 RFQ (archive keeps the full slab rating if the slab is zoned), digital-factory.md (archive location as box and shelf position, sets per mother), equipment-suppliers.md (section 8 entry), total-investment.md added scope (to quote, not in the sum). |
||
|
|
475623e9f2 |
Archive the father as well as the mother; how many represses a mother carries
Decided (October 2026): the plant keeps the father and the mother of every side. production-timeline.md (repress section) records the decision and the rule of thumb with sources: about 10 stamper sets per mother before it degrades (Third Man Pressing FAQ, a Nashville plater via WPLN), fewer in quality-minded sources (5 VinyLab, 6 to 8 Stereo Review 1962); a father grows about 5 to 10 mothers. So a mother covers roughly ten represses (10,000 to 20,000 records a side) and a worn one is replaced from the archived father without a new cut. galvanics.md: 4 archived parts per title, ~1,200 to 2,400 a year; new open question to all galvanics candidates (sets per mother, mothers per father, storage). artist-platform.md repress paragraph. Demos: make-a-record and artist-order say father and mother are archived; factory console archives the father on represses too, counts stamper sets per mother (shown in the genealogy and the customer's metal card), and the metal archive counts fathers and mothers. |
||
|
|
1cceedc8a4 |
Factory console: inspection feeds in fixed columns
Deploy test site / deploy (push) Successful in 45s
The live inspection feeds (floor, quality, press, customer's latest copies) were one run-on string, so a shorter press ID (C1 vs D1-A) shifted everything after it and the cycle time showed twice. Each row is now a grid of fixed columns sized in characters of the mono font: time, stamper, press, order, result, with a header row (the row keeps the mono font so its columns match; only the labels change font). On phones the order column (factory) or press column (customer) drops. The full record key stays in the stamper cell's tooltip. Work order cards: station chip left, work order ID right-aligned in the header, the assignee moves to the time line, so card headers no longer shift with the ID length. |
||
|
|
f9b8407561 |
Factory console: work orders for the operators
Deploy test site / deploy (push) Successful in 51s
New "Work orders" section in the factory console (#work), derived from the same simulated records as the rest of the page, one work order per station and job: - order stages: mastering, lacquer cutting, electroforming, stamper prep, test pressings, press run, packing, dispatch - stamper changes (planned when a set nears its life, in progress during the change), fault clearing on a stopped press (maintenance) - material lab: lab gate per compound lot, release test pressing, and the held lot's re-dry and retest (button starts it) - audio QC: each sampled copy's listening check Board: In progress (press floor first) / Next up (planned press runs and stamper changes with time and press, jobs arriving at the next station) / Done today, filter per station, KPIs. Each work order opens a kiosk view: the steps an operator follows (badge in, scan what the step asks for, with the IDs to scan, confirm), confirmation times and who did it, the order, lot or press it belongs to, and what it writes to the log. Order detail lists the order's work orders by station. Mastering and cutting are booked to the engineers, the lab, QC and maintenance to technicians, the rest to numbered operators; jobs finishing at night are booked to the late shift. README, digital-factory.md demo paragraph and the landing page mention the work orders. |
||
|
|
dd7b749af9 |
Factory console: demo fleet of one Duplex system and one Classic
Deploy test site / deploy (push) Successful in 51s
Three presses for now (D1-A, D1-B on one Newbilt Duplex system, C1 Classic) instead of the plan's two Duplex systems. Order arrivals scaled to the smaller fleet (about 3,000 to 4,600 good records a day); press row fills the width; landing page text updated. |
||
|
|
9ed51f4b22 |
Factory console and customer order status: investor demo
Deploy test site / deploy (push) Successful in 51s
New page docs/factory-console.html (site /demos/factory/): the factory application of digital-factory.md on a simulated plant day, with a switch to the customer portal of the same orders. Factory console (sidebar: Floor, Orders, Quality, Lab, Metal, Ledger): - floor: five presses of the launch fleet (two Newbilt Duplex systems, one Classic) with the mounted order, live good / rejected counters, stamper plays against life, cycle time and steam; KPIs for the day; live optical inspection stream with record keys; alerts (stops, lab holds, stampers near end of life, listening reviews, long gate waits); stations (cutting, galvanics, stamper prep, lab, packing); orders by stage; good records per day - orders list with stage filters and search; order detail with stage track, approvals, metal genealogy and stamper metrology, press run telemetry, compound lot certificate, rejects by reason, audio samples, packing and shipping, and the order's events - press detail with telemetry sparklines; quality (rejects by reason, yield per press, audio comparison); lab (compound lots with results against illustrative limits, one lot on hold with re-dry and retest, regrind batches, hoppers); metal (baths, mounted stampers, metrology, archive); hash-chained event log Customer portal (four demo customers: pressing now, waiting to approve the test pressing, in plating, delivered): progress through every step and the three gates, copies pressed so far with the latest copies and their record keys, approving the test pressing books the press slot (greedy plan of the queue gives the start time and press), and a quality report that fills in step by step: files, lacquers, metal parts with metrology, test pressings, the compound lot's lab results, pressing and inspection, listening checks, packing. Simulation: 60 days warmed up at load (about 0.7 s), then 1x to 3600x. Stages and durations from the production timeline, Newbilt cycle times, two shifts 06:00 to 22:00, unplanned stops, stamper life 1,000 to 2,000 plays, audio sampling first-off plus about 1 in 50 (1 in 25 near end of life), compound lots through the lab gate and release test pressing. All orders, values and IDs are simulated; limits are illustrative. Linked from digital-factory.md (the factory application), traceability.md (customer-facing view), the README and the landing page. |
||
|
|
5090609df3 |
Calculators: options from Record Industry's calculator; its prices as a benchmark
Deploy test site / deploy (push) Successful in 45s
Reviewed Record Industry's (Haarlem, NL) public vinyl calculator: a seven-step wizard with a live itemised cost list priced on its server. Read its prices for a reference 12" LP at 200 / 300 / 500 / 1,000 copies and for each option worth copying (checked October 2026). Both artist demos (make-a-record and artist-order): - audio arrives as digital files, analog tape (+ tape transfer) or a cut lacquer (no blanks, cutting or mastering; mastering choice disabled with the reason; cutting and mastering stages skipped in the timeline; the passport starts at "Lacquer received") - labels printed, plain white or plain black (credit line; the label artwork drop is disabled for plain labels; the mock-up shows the plain label) - press cleaning before a colour run, on by default, disabled for black - 7" dinked (large centre hole), 7" only, drawn in the mock-up - download card and barcode sticker extras - run-out inscription (A-Z, 0-9, up to 15), scribed along the dead wax in the mock-up and named in the passport - new rates (tape 3,800, cleaning 2,300 per title; plain labels -12 per disc; download card 43, barcode 6 per copy) are estimates with Record Industry's prices as the basis, each listed in the detailed demo - make-a-record investor notes: Record Industry's 9 to 11 week quote after test-pressing approval against the 7 to 9 week CNX quote, and its 2 % reject allowance against 100 % optical inspection Defaults unchanged (37,836 THB per title, 232 per copy at 100, break-even 41, goal 100, 548 kept). Docs: artist-platform.md (choices table, benchmark section: what was taken, what was left out, commercial terms worth deciding); revenue-model.md (second Western data point: 219 THB a copy at 300 ex-works, per-title and per-copy reading against the assumptions, not a re-base); production-timeline.md (its published lead times). |
||
|
|
83f1aa94dc |
Make a record: launching a campaign no longer starts the simulation
Deploy test site / deploy (push) Successful in 52s
After Launch the campaign page opens at day 0 with Play ready; the artist (or presenter) starts it. The quick "Run the demo campaign" path behaves the same; only the guided tour presses play itself. |
||
|
|
e36d7b00a0 |
Fan funding: the price sets the fans needed; limited edition as a switch
Deploy test site / deploy (push) Successful in 1m4s
The artist sets only the fan price; the number of fans needed follows from
it: the plant's 100-copy minimum, or the break-even if that is higher. The
goal selector of
|
||
|
|
6a62505aa6 |
Fan funding: the artist chooses the campaign goal in fans
Deploy test site / deploy (push) Successful in 1m9s
The goal is no longer fixed at the larger of the plant minimum and the break-even; that is now the floor, and the artist sets any goal above it. - make-a-record.html: "Goal: how many fans you need" with number input, slider and chips (Lowest, 150, 200, 300, 500, 1,000); chips below the floor or above the edition cap stay visible but disabled with the reason; the goal also shows as the pre-order amount (fans x fan price); typing below the floor snaps back with a note; the campaign, the outcome and the stage run against the chosen goal; the tour shows the goal being raised to 150 - artist-order.html: goal field in the campaign card, same floor rule - artist-platform.md: the floor rule and that a higher goal is all or nothing as well Defaults unchanged (goal 100 = the plant minimum at 1,200 THB, break-even 41, 548 THB kept a copy). |
||
|
|
4b20ca4f48 |
Side length per format: team table with songs a side; palette control
Deploy test site / deploy (push) Successful in 47s
Side length "at most" per format is now the table the team supplied (October 2026, from recordplayerexpert.com, songs counted at an average 4:32): 12" 22 / 15 min, 10" 15 / 12 min, 7" 7 / 5 min at 33 1/3 / 45 rpm. Changes against the earlier microcut.studio figures: 10" 33 1/3 16 -> 15, 10" 45 11 -> 12, 7" 45 6 -> 5. The comfortable column stays the lower end of microcut.studio's ranges. - artist-platform.md: table with a songs column, both sources, and the three formats where cutting rooms disagree (10" 45 is now more generous than microcut.studio and Diggers Factory) as re-check points for the cutting engineer - artist-order.html: LIM and the side-length table (songs column, sources) - make-a-record.html: LIM; format cards show the at-most time and about how many songs a side; step 2 hint adds the songs; the last control in each colour row is now a labelled "Palette" pill with a colour wheel, showing the chosen colour and "Your colour" when a custom colour is set |
||
|
|
607f6631a7 |
Make a record: investor demo of the artist platform, end-user flow
Deploy test site / deploy (push) Successful in 53s
New static page docs/make-a-record.html (test site /demos/make-a-record/): the artist platform as a customer would see it, polished for presenting. - five steps (design, music and art, price, fan funding, track) with a sticky stage: to-scale mock-up (record spins at 33 1/3 or 45 rpm on hover), spec chips, price per copy, ship month and the next action - design as option cards and swatches; options that do not apply stay visible and disabled (weight and gatefold off 12", colour pickers for black vinyl) - masters and artwork read in the browser as in the detailed demo, side bars per side, checks in plain words, approval 1 of 3 - price with the curve, itemised lines folded under one summary, lead time as two bars (approvals, then the 7 to 9 week quote) - fan funding: goal, break-even and what the artist keeps, money rules; the campaign on a phone with a pre-order ticker, funded or missed ends, production timeline with the artist's approvals, updates feed - record passport for one delivered copy (stamper, press, cycle time and side; stage dates; optical inspection and sampled audio), per traceability.md and quality-automation.md, IDs simulated; repress card - "Investor notes" switch with the business case per step (market research, vault, short-run economics and the Thai price gap, plant-owned vs broker and the Qrates lesson, traceability and represses); guided tour of about a minute (#tour, #notes in the URL) - light/dark theme shared with the other pages; phone layout with a bottom bar Same price list (demo-0.1) and stage table as artist-order.html, so the defaults reproduce the artist platform example: 37,836 THB per title, 232 THB per copy at 100, break-even 41, goal 100, 548 THB kept a copy. artist-platform.md: investor demo paragraph. traceability.md: the record passport as the per-copy customer view. README bullet and layout line, site DEMOS line and landing-page entry. |
||
|
|
5daf54a90b |
Payap parts model: saved view (camera on the utility yard)
Model content unchanged; only the save timestamp and camera differ. |
||
|
|
e49abf89d3 |
Utilities: build the backbone once, add modules with the presses; four-module boiler hall and chiller compound
Deploy test site / deploy (push) Successful in 57s
Phased build list for steam, cooling and hydraulics (launch, Duplex 1, Duplex 2, Classic, options): everything cheap to oversize and costly to retrofit (rooms, pads, headers and ring mains with a valved branch per press position, tanks, HX frame, feeders, one sequencer) is built for the five-press fleet at launch; boilers, chillers and hydraulic pump sets come in identical modules as presses arrive. The Single 2.1 aggregate is proposed as the first central pump set; per-branch isolation and filters. Rooms sized for four modules each (user decision, estimates until vendor footprints): boiler hall ~18 x 9 m for four 500 kg/h positions (fired case, AIX DZL0.5 body), open screened chiller compound ~12.5 x 10.8 m with four pads (250 kW at 40 C ~ Carrier 30RB 080-090), ~40 m2 pump and HX room; the cooling tower pad of the water-cooled concept is dropped. Yard 178 -> ~379 m2. Four boilers carry ~8 presses with N+1; four 250 kW chillers carry the five presses with CH-4 as reserve and no growth position unless the pads take the ~350 kW frame (RFQ option). - scale.md: yard table and basis, utility phasing section - pressing-line.md: hydraulics phasing and re-quote questions - steam-cooling.html: B-4 position, phasing and rooms card, details, RFQ questions (pw_sc_check clean) - construction RFQ: yard table, sealed area 6,549 m2 (68 %) - total-investment: added-scope row +73k to +122k USD (building rate on the ~200 m2 the yard grows by) - Payap parts model: yard rebuilt from Params (blr_n, blr_inst, ch_*, bh_*, cy_*, pr_*), renders updated |
||
|
|
7688d03be6 |
Payap scenario: Part/Draft model with roof, rooftop PV and PV parking canopies
New FreeCAD model docs/cnx_vinyl_parametric_payap_parts.FCStd: the Payap scenario rebuilt from plain Part solids and Draft (arrays, labels, dimensions) on the same Params sheet, no BIM objects, plus: - monopitch roof 10 deg, low eave 7.0 m south, high side 11.4 m north (phase 1 RFQ geometry); gables and the fire wall follow the roof - rooftop PV: 901 x 580 W placeholder modules, ~523 kWp, 17 rows in blocks of four with walkways, 1 m edge strip, 2.5 m clear over the fire wall (estimate) - car canopy (10 bays, 72 modules) and scooter canopy (30 spaces, 22 modules), ~54 kWp, RFQ footprints and heights - module counts and kWp as sheet expressions; ~577 kWp in all FreeCAD 26.3 RC1 does not propagate spreadsheet edits: CNX_apply_Params macro touches the dependents and recomputes; parametric test (factory length, pitch, car bays, walkway) matches the sheet counts. site-candidates.md: roof/PV/canopy section with the export, battery and BOI questions a 577 kWp array raises; mirrors in sustainability.md and scale.md; README layout lines. |
||
|
|
1946553dd1 |
Artist ordering demo: colour pickers disabled for black vinyl
Deploy test site / deploy (push) Successful in 43s
With black vinyl the colour pickers are greyed out and cannot be used; with solid colour only the first is active, marbled and splatter use both. The weight buttons are disabled for 10" and 7" (140 or 180 g is a 12" option). Both rows were meant to hide, but .row display:flex overrode the hidden attribute; a [hidden] rule now guards that too. |
||
|
|
2a3da0778f |
Artist ordering demo: mock-up drawn to scale for 12", 10" and 7"
Deploy test site / deploy (push) Successful in 46s
The record and jacket in the mock-up (sidebar and fan campaign page) now scale with the chosen format: record diameters 302 / 250 / 175 mm (IEC 60098), jackets 314 / 260 / 184 mm, labels 100 / 100 / 90 mm, so a 7" label is relatively larger as on the real disc. Smaller formats show a dashed 12" jacket outline for scale and a caption with the sizes. |
||
|
|
a07faf6ef0 |
Artist ordering demo: configure, check, offer, fan-funded campaign
Deploy test site / deploy (push) Successful in 53s
New static page docs/artist-order.html (test site /demos/artist-order/) walking the artist platform flow end to end: - record configurator (format, speed, discs, weight, colour, packaging, extras, mastering, test pressings) with a live mock-up - track list or dropped masters read in the browser (WAV/FLAC/AIFF headers, sample peak and clipping), side length against the format, jacket and label preflight (size, dpi, CMYK), rights and gate 1 - itemised offer (per title / per copy, pass-through jacket), price per copy against quantity, lead time from the production timeline - direct order or fan-funded campaign: goal = max(minimum run, break-even), what the artist keeps, the money rules, a simulated campaign (sells out / just makes it / falls short) with refund or go-ahead-at-minimum, and the production tracker with the three gates and the fan update feed Price list demo-0.1 splits the doc's 38,000 THB per title and 132 THB per copy into lines (estimates, each listed with its basis); defaults reproduce the artist platform example (break-even 41, goal 100, ~548 THB kept per copy at 100). artist-platform.md: demo paragraph, side length per format table with sources, VAT note on the campaign example. README bullet and layout line, site DEMOS line and landing-page entry. |
||
|
|
b650503ea1 |
Payap zoning record: type 72 condition verbatim
The annex row for type 72 in the very high density residential zone carries the orange "permitted with conditions" mark; the condition as printed is "ให้ดำเนินการหรือประกอบกิจการได้เฉพาะดัดแปลงหรือซ่อมแซม" (may operate only for modification or repair). Added verbatim to the source record. |
||
|
|
3984d0c93b |
Payap: the point given fails zoning (DPT, checked 14 October 2026)
Point 18.797678 N, 99.038272 E, queried on the DPT land-use plan map: Chiang Mai comprehensive city plan in force from 25 May 2026, zone ย.7-1, very high density residential. The zone prohibits every factory under the Factory Act except the types in the plan's annex, and prohibits warehouse and silo businesses. Annex for this zone: type 107 (CD production, whose definition names gramophone records and recorded tapes) is not permitted here, only in the low density residential, special industrial, agricultural land reform and rural and agricultural zones; type 72 (sound recording, record players, gramophone records) only for modification or repair; plastics products and metal plating are not on the list. A record pressing plant cannot get a factory licence at that point. Caveats recorded: point, not parcel; DPT data is preliminary, the provincial office confirms; the pharmaceutical neighbour may be in another zone or type. Since type 107 is permitted in the plan's low density residential and rural zones, other Payap land is worth checking before the lead is dropped. - docs/land-listings/payap/: source record (zone rules, annex rows, the 51 types permitted in the zone) and the Thai panel text. - site-candidates.md: plot point, zoning row, status, the result with caveats, check 1 marked failed for this point. - README: project status line, layout line for land-listings/. |
||
|
|
cb5809e73c |
Feedwater heat recovery: economizer, condensate, then HP-1
Deploy test site / deploy (push) Successful in 48s
The order to investigate for a fired boiler (biomass such as rice husk, or LPG): first a flue-gas economizer, second as much clean, hot condensate back to T-1 as possible, third the heat pump HP-1 where the press return has enough heat and the combined heating and cooling economics justify it. - Diagram: new ECON-1 (option, fired boilers only) between the feed pumps and the boiler manifold, with a bypass for an electric bank and the flue-gas path from the boilers; feed in 90 to 95 C, outlet and stack temperature are vendor figures. HP-1 is now drawn as an option and labelled the third measure. AT conductivity on the condensate return to T-1; off-spec condensate goes to the warm tank. - Found in Newbilt's offer 240620-04: steam and cooling water share the mould channels, with one steam/water outlet valve and steam trap per mould, so the condensate is only as clean as the cooling loop. Noted in the T-1 detail, sustainability.md and as a Newbilt RFQ question. - With most condensate returned (about 15 % flashes at atmospheric pressure, estimate) the feed tank needs only a fraction of the ~70 kW that heating all make-up takes, so HP-1 may not pay. - RFQ: economizer outlet feed and stack temperature, corrosion limit, pressure drop; rice husk ash is high in silica and abrasive, so fouling, cleaning, wear protection and a bypass. - sustainability.md: the order, before the exclusions. biomass.md: new "Recovering heat at the boiler". Checked headless (scripts/pw_sc_check.py): 33 boxes, 20 tags, no overlap or overflow, no unstyled pipes, no card or page overflow at 1600, 1258 and 390 px in all four cases, every box opens its detail, no errors. |
||
|
|
b1c18cb040 |
Steam and cooling: water and steam temperatures on the diagram
Deploy test site / deploy (push) Successful in 47s
Twenty temperature tags on the pipes, each styled by its basis: green border for a Newbilt figure, amber for a design target or estimate, dashed for a value the vendor or a measurement still has to set. - Newbilt: steam main 10 bar ~180 C, header to the presses ~180 C, press outlets ~60 C (one per press, dimmed with the press when it is not installed in the selected case), supply header 20 to 25 C, oil cooler return <= 35 C (supply plus max. 10 K). - Design target or estimate: raw water ~28 to 30 C (ground temperature), feed to the boilers 90 to 95 C, heat pump feed loop <= 95 C, condensate after the traps <= 100 C (atmospheric return), extruder returns <= 35 C (2 to 3 kW at 4 l/min), heat pump source in <= 60 C, return header up to ~60 C mixed, chiller loop to HX-1 ~18 to 23 C (~2 K approach). - To be set: heat pump source out, warm tank mixed temperature, chiller loop return. The clicked details say where each figure comes from, including that Newbilt's 180 C is saturation at 10 bar absolute (~184 C at 10 bar gauge, to confirm). Legend explains the three tag styles. Checked headless (scripts/pw_sc_check.py, now also tag overflow and tag overlap with boxes, labels, symbols and each other): 20 tags, none overlapping or overflowing; no SVG or HTML overflow at 1600, 1258 and 390 px in all four cases; 32 boxes open their detail; no unstyled pipes; no errors. |
||
|
|
eb0039179b |
Steam and cooling: visible heat-recovery loop, tables inside their cards
Deploy test site / deploy (push) Successful in 52s
- The feedwater loop between HP-1 and T-1 was drawn with class "hr", which had no stroke rule, so it was invisible. It now has its amber stroke, flow arrows both ways and a "feed loop" label. - Number cells were white-space:nowrap, so the operating-case table ran up to 33 px past its card, the design basis table up to 312 px, and a phone page was 842 px wide. Numbers may wrap now (only the coverage percentages stay on one line), the side column and grid tracks may shrink, and units moved into the case table's row labels. Only the diagram scrolls sideways on a phone. Checked headless (scripts/pw_sc_check.py, now also HTML card/table overflow, document width and unstyled pipes): before, 'p hr' unstyled and card overflow at 1600, 1258 and 390 px in every case; after, no unstyled pipes, no card or table overflow and document width equal to the viewport at all three sizes and four cases, no SVG overlap or overflow, 32 boxes open their detail, no errors. |
||
|
|
7af5d89dd0 |
Steam and cooling plant for the five-press fleet; utilities re-based
Deploy test site / deploy (push) Successful in 44s
New page docs/steam-cooling.html (site /demos/steam-cooling/): the utility plant as a clickable process diagram. Steam side: raw water, softener and dosing, feed tank with heat-pump feedwater recovery, feed pumps, a bank of two 500 kg/h boilers (third for N+1 as an option), separator and metering, optional accumulator, blowdown, the 10 bar header with a valved, metered branch and trap per press, drip legs and condensate return. Cooling side: Newbilt's press outlets are open (max. 2 bar), so returns drain to a warm tank, pass the heat pump, an optional dry cooler and a plate heat exchanger to a cold buffer tank, and VFD pumps feed the 20 to 25 C header at ~10 bar to every press, the extruders and the central hydraulic oil cooler; the chiller loop (three 250 kW air-cooled modules at 40 C ambient, fourth as option) stays closed and clean. Galvanics cooling (12 to 20 C) is a separate circuit. Operating cases (launch, Duplex system 1, five presses, one module down) show demand against installed capacity; design basis with sources, equipment schedule, RFQ questions. Static SVG, no per-frame work. Design basis at Newbilt's per-machine figures: steam 750 to 900 kg/h, cooling 652.5 kW (625 presses, 15 extruders, 12.5 hydraulics), 305 to 540 l/min circulating. Also found: Newbilt's 53 l/min at ~60 C out is ~140 kW, above its 125 kW peak; listed as a re-quote question. Re-based in the same commit: - scale.md: electrical table (chiller bank ~210 to 325 kW electrical, plant peak ~430 to 700 kW, ~950 to 1,330 kW with electric steam), grid 800 to 1,000 kVA (1,250 to 1,600 with electric steam, Schedule 4 past 1,000 kW), tariff 4.5M to 6.8M THB/yr, battery ~1 h of chiller peak, boiler and chiller banks, biomass up to ~550 t/yr at 1.5 M records, utilities money line. - sustainability.md, biomass.md: same figures; electric steam 5.2M to 6.0M THB/yr mature, 1.6M to 1.8M early; fuel saving 4.0M to 5.4M. - utilities CSV: boiler bank, chiller bank with HX and tanks, softener and loop treatment re-sized; baseline 23.98M-41.63M -> 30.07M-51.33M. - total-investment.md: re-size as an added-scope row (+185k / +294k USD); headline 4.7M to 8.9M unchanged until the investment re-base. - pressing-line, equipment-suppliers, facility-security, fleet calculator (boiler 1000 kg/h, chiller 750 kW), plant page detail texts; README, landing page, build.sh. |
||
|
|
9b03e4de07 |
Plant overview: header bands follow the rounded box corners
Deploy test site / deploy (push) Successful in 44s
Every machine box has rounded corners (rx 4), but its header band was a square rect inset by 1, painted over the box. At both top corners the band's square corner covered the inside of the curved border, so the border looked thin and squared off there, most visibly on a selected box. The band is now a path with top corners of radius 3, concentric with the box. Measured on zoomed crops in headless Edge (light theme, selected border): border thickness along the 45-degree diagonal against the straight edge was 0.26 to 0.42 on the Traceability box, Classic C1 and the VEX 50; now 0.9 to 1.13. Full UI check unchanged: all press states, 47 stations, demo buttons, no overflow, canvas alignment, no errors. |
||
|
|
f776025b58 |
Plant overview: motion on canvas, no more lag
Deploy test site / deploy (push) Successful in 53s
The page spent most of each second laying out the SVG, not simulating: the simulation itself costs ~26 ms per simulated hour. Profiled headless on Edge (CDP metrics and a timeline trace with invalidation tracking): - tokens asked the DOM for getPointAtLength right after writing a transform, which forced a layout of the whole SVG for every token, every frame (540 to 630 ms/s); - ~55 CSS stroke-dashoffset animations repainted the drawing all the time; - the press platens were SVG rects moved every frame, and any geometry write re-lays-out the whole SVG with its 275 text labels. Now the SVG holds only the machines and labels. Pipes, flow dashes and the conveyor are drawn on a canvas under it; tokens, records, platens, cakes, the extruder screw and plating bubbles on a canvas over it, both with the SVG's own viewBox transform, so pan and zoom need nothing extra. Routes are measured polylines (ptAt) instead of DOM path queries, and the 5 Hz tag, lamp and KPI writes only touch the DOM when the value changes. Headless Edge, 1600 x 900, before -> after: 1x 26 -> 60 fps, layout 842 -> 26 ms/s, long tasks 19 -> 0 60x 19 -> 59 fps, layout 858 -> 29 ms/s 600x 18 -> 60 fps, layout 855 -> 30 ms/s 3600x 33 -> 60 fps, layout 726 -> 29 ms/s Behaviour unchanged: all press states seen at 3600x, 47 stations open their detail, steam dip holds and recovers, lot and repress log, no text overflow at 1600 x 900 and 1258 x 800, canvas and SVG agree within 0.2 px at fit, zoomed, 1258 x 800 and phone size, both themes, no errors. |
||
|
|
53f3a07a45 |
Unified Engelbert Strauss workwear for all staff
Deploy test site / deploy (push) Successful in 43s
User, October 2026: we want unified Engelbert Strauss work clothes. - worker-safety.md: decision recorded; everyone, office included, in the same Strauss workwear with the company logo, process PPE on top. Kit at Strauss catalogue prices checked October 2026 (incl. 19 % German VAT, which drops out on export): production 3 trousers e.s.motion 2020, 3 polo shirts, 2 T-shirts, a sweatshirt, S1 safety shoes e.s. Vasegus II low, ~293 EUR before VAT, ~338 with embroidered logos (embroidery price an estimate); office 4 polos and a softshell jacket, ~127 EUR. Ordering: Strauss ships outside Germany where customs law allows, shipping quoted with the order, prepayment, duty and taxes charged to the recipient; Thai duty on work trousers 13.8 %, BOI does not cover clothing. About 9k USD (~0.3M THB) a year at the start fleet. Check lighter lines for the press hall heat with samples. - revenue-model.md: workwear noted on top of the x1.3. - Fleet calculator: workwear line under labour (production and office kits a year, shipping and Thai duty), six new assumptions; 8,573 USD a year at the defaults. |
||
|
|
8032e0ea47 |
BOI: machinery import duty and import VAT, PVC duty relief
Deploy test site / deploy (push) Successful in 35s
User, October 2026: take the BOI duty-free import and VAT exemption into consideration. - boi.md: import VAT goes with the BOI duty exemption (Revenue Department answer on the BOI OSOS FAQ, checked October 2026); what it is worth: ~2.75M USD of imported machinery at the start fleet (block midpoints) would otherwise carry ~5 % duty (Thai MFN averages 4.1 % on HS 8477, 0 to 10 % across HS 84; estimate until the HS codes are set), ~0.14M USD, and 7 % import VAT, ~0.2M paid at the border and recovered later as input tax, mostly as a refund claim since exports are zero-rated. - total-investment.md: the blocks are vendor prices without duty or import VAT, so the headline already assumes promotion. - Fleet calculator: BOI promoted / not promoted switch and export share. Not promoted adds the machinery duty to capex and depreciation, shows the import VAT as cash at the border, and charges duty on imported PVC compound; promoted exempts both, with no compound duty on exported records and 90 % off for domestic sales (sections 36(1) and 30). A note under the KPIs shows what promotion saves either way. Defaults: payback 3.1 years with BOI, 3.2 without; adverse case operating result -31k with BOI, -68k without. CIT and BOI CIT exemptions still not modelled. |
||
|
|
1a368287f8 |
Labour from base salaries; health care with check-ups for all staff
Deploy test site / deploy (push) Successful in 34s
User, October 2026: option to enter base salaries; the company should provide proper extra health care with check-ups for all staff. - worker-safety.md: new "Health care for all staff" policy (decided October 2026): group health insurance (inpatient and outpatient) and a yearly check-up for everyone, office included, on top of social security; the occupational checks Thai law requires for risk-factor work (Ministerial Regulation B.E. 2547: within 30 days, then yearly, by an occupational physician, records kept 2 years after the job ends) for the press floor, galvanics and maintenance; planning costs with sources checked October 2026 (group insurance ~8,000 to 18,006 THB a head a year, plan ~15,000; Rajavej Chiang Mai check-ups 1,290 to 5,990 THB, plan ~2,500 plus ~1,500 risk-factor tests, estimates); social security 5 % up to the 17,500 THB ceiling since 1 January 2026. - revenue-model.md: cutting engineer 50,000 THB is base salary; health care on top of the x1.3 (~0.35M THB a year at the start fleet); what the x1.3 is made of. - Fleet calculator: base salaries per role (the revenue model loaded rates / 1.3; cutting engineer 50,000), employer social security 5 % capped at 17,500, 25 % overtime, bonus and PPE, health insurance and check-ups for all staff incl. 4 office staff (scale.md 3 to 5), risk- factor tests for the press floor, galvanics and maintenance; all as editable assumptions; people table gains office and all-staff rows. Defaults: labour 5.25M THB (was 4.67M loaded), direct cost 1.90 USD a record, EBITDA 2.19M USD. |
||
|
|
eac45eb234 |
Lacquer blank 70 EUR and cutting engineer 50,000 THB a month
Deploy test site / deploy (push) Successful in 39s
Team figures, October 2026: - revenue-model.md: a lacquer blank costs about 70 EUR, one per side, so ~160 USD a two-sided title before recuts; a cutting engineer costs about 50,000 THB a month; - fleet calculator: the lacquer assumption is now in EUR (70, one per side, converted at 1.155 USD per EUR; styli and recuts not included) and the cutting engineer 50,000 THB a month, both marked as team figures instead of estimates. At the defaults lacquers come to ~54k USD a year and direct cost to 1.88 USD a record (was 1.86). |
||
|
|
ce1d71e0b5 |
Fleet calculator: material, energy and labour cost, revenue and P&L
Deploy test site / deploy (push) Successful in 36s
User, October 2026: add calculation for material cost, PVC, carton, chemicals, labour etc. and revenue from sales. New "Money a year" card (and a "Prices and money" input card): - revenue: standard records at the standard price, specials with the premium, title services per title (revenue-model.md 3.50 to 4.60 blended, +0.60 to 1.70, 580 to 1,730 USD a title); - materials and packaging: PVC from the compound tonnage (rejects in, trim back as regrind), labels per pressed record, inner sleeves, printed jackets, shrink wrap, shipping cartons (estimate), maintenance; - stamper making: lacquer blanks and styli per side (estimate), nickel, silver and chemistry per electroformed part (revenue model: 60 to 150 USD a three-generation set); - energy from the fleet: machines, chiller and compressors at the hours run plus an estimated base load, roof PV off, PEA 3.2.2 blended rate and demand charge; steam from the presses running time at the biomass heat price (biomass.md); the start fleet lands in scale.md 4.3 to 6.4M THB; - loaded labour per role (revenue-model.md wages; cutting engineer an estimate), headcount now also counts QC, maintenance and cutting; - overheads, EBITDA, depreciation of capex (total-investment.md start fleet plan plus or minus each Duplex system and Classic), operating profit, payback; per-record cost bar; - Adverse / Central / Favourable presets from the revenue model ranges, USD / THB / EUR display; ladder gains revenue and EBITDA columns. At the defaults (1 M records, 20 % specials): revenue 4.42M USD, direct cost 1.86 USD a record (revenue model central 1.94), EBITDA 2.23M. README bullet; revenue-model.md links the calculator from its operating picture. |
||
|
|
7d7a378c8b |
Fleet calculator: machine park schematic with the stamper line feeding it
Deploy test site / deploy (push) Successful in 34s
User, October 2026: add a visualization of the machine park and the connected stamper production to the tool. - New card "Machine park and stamper production": one live SVG that follows every input. Top: the stamper line, lathe, Pheenix PASU, PPPU, PDPU (2 cells), PMPB, Sibert VSF, VSP, VSC, each with its count, flow a day and how busy it is. Middle: the press hall, each Duplex cell drawn as in the cell sketch (presses either side of the operator, EX 50 and EX 35 behind, trimmer in front) and each Classic with its built-in extruder, wrapping into rows and scaling down for big fleets; compound in on the left, stamper rack in and finishing out on the right. Bottom: central hydraulics, boiler, cooling, air and electrical piped up into the hall, amber where they exceed the plant as planned today. - Stamper production is now counted per station from the cycle times in galvanics.md (silvering, pre-plate four at a time, father, mother, stamper plus handling per PDPU cell, PMPB, Sibert steps; usable share of the hours 80 %, estimate) instead of a flat 20 to 32 parts per PDPU. At the defaults: 1 PDPU at ~43 % busy, as galvanics.md concludes. New assumptions with sources; the lathe rate (8 sides a day) is an estimate. - Requirements table: per-station counts and load; the URL hash now also reloads in an open tab (hashchange). Checked headless in Edge, both themes: no JS errors, no text overlap or overflow in the schematic at the default, 8 M and 30 M records, no horizontal overflow at 390 px. |
||
|
|
6df1301fb9 |
Site: light and dark mode for the landing page, plant overview and fleet calculator
Deploy test site / deploy (push) Successful in 36s
User, October 2026: add bright/dark mode to the site for both tools. - Each page sets data-theme on <html> before first paint: the saved choice (localStorage "cnx-theme", shared by all cnxvinyl.lol pages) or, without one, the system setting (prefers-color-scheme), which it keeps following until the user picks a mode. Toggle: header button (sun / moon). - Plant overview: light overrides for every SVG class; pipe colours are now CSS variables (--p-*), used by the pipes and the legend, darkened in light mode where the dark-mode tints were too pale (DI water, granulate, stamper sets, cooling return); press state text and the VEX zone fills use variables instead of inline hex, so they flip with the theme. - Fleet calculator and landing page: light palettes; input, flag, badge and ladder-highlight colours moved to variables. Checked headless in Edge: both system schemes pick the right mode, the toggle persists across pages, computed colours flip (press text, zones, pipes, legend), no text overflow in either mode, no JS errors. |
||
|
|
c6bec71442 |
Press fleet calculator: target output and specials share to fleet mix and needs
Deploy test site / deploy (push) Successful in 37s
User, October 2026: calculations for the later business plan, starting from 2 Duplex + 1 Classic at 3 records a minute per Duplex and 2 per Classic, as an interactive tool on the website: pick the yearly output and the share of splatter/specials, get the machine mix and all the requirements (people, hydraulics, power, ...). docs/fleet-calculator.html (single static page, no dependencies): - target mode sizes the fleet (specials only on Duplex with its EX 35; grow with Classics or with Duplex systems; start fleet as the floor); fleet mode takes a fleet and gives its output at the specials share; - output, capacity, utilisation and the mix bar per machine type; - needs: people per shift and in total, galvanics operators, machines, connected kVA and average kW, MWh/yr, central hydraulics (flow, motor, oil, accumulator), steam, cooling and cooling water, compressed air, press floor, room climate, compound, trim, titles, electroformed parts and plating units; checks against the 400 kg/h boiler, 250 kW chiller and the 870 m2 Payap press hall; - ladder from the start fleet to a full Payap press hall, click to load; - every assumption editable with its source (Newbilt Duplex site requirements V14 and offer 240620-04, scale.md, galvanics.md, revenue model, Payap model; estimates labelled), shareable link via the hash. The Classic counts as one HRP 12 press plus one extruder until Newbilt states figures (Toolex Alpha leaflet as a cross-check). Site: DEMOS entry (/demos/fleet-calculator/) and landing-page entry. README bullet and layout line; backlinks from scale.md (capacity) and pressing-line.md (current plan). |
||
|
|
68539d563c |
Payap model: main gate, guard house, boom barrier; truck paving cut down
User, October 2026: add the guard house and the gate; the truck apron is far too big. Model (changed live in FreeCAD 26.3): - main gate as in the phase 1 RFQ: piers and two 5 m sliding leaves (shown open, parked inside the wall), 10 m clear (gate_width 8 -> 10 m); - guard house as in the RFQ: 4 x 3 m (guard room 8.4 m2 + WC 3.6 m2), window wall to the gate, guard desk, on the gate's north-west side; - boom barrier just inside the gate (cars and trucks both pass it); - truck paving: the 42 x 101 m apron (~4,240 m2) replaced by an 8 m gate road (550 m2) and a 32 m deep apron and dock face (1,600 m2) that joins the east service road; new params apron_depth, road_w. Docs: site-candidates Access bullet (~2,150 m2 heavy-duty paving against 1,608 m2 in the Mueang Chi RFQ). |
||
|
|
90697c8cac |
Payap model: Duplex cells at Newbilt sizes; fire water per facility-security
User, October 2026: the Duplex sketch is not to scale, check it against the documents; the fire water tank is too small. Model (changed live in the open FreeCAD 26.3 document): - both Duplex cells rebuilt in the sketched arrangement at the documented sizes: presses 0.95 m square (0.9 m2) turned 45 deg, EX 50 0.5 x 1.0 m (0.5 m2), EX 35 0.4 x 0.8 m and trimmer 0.6 x 0.6 m (estimates), operator position marked; 0.6 to 0.8 m between machines; - fire water: the ~25 m3 yard tank replaced by the facility-security planning tank, 9 m x 4 m (254 m3 gross, ~200 m3 usable), new params fw_dia, fw_h, fw_x, fw_y, at the front by the access road, outside the production yard, on a ring foundation, with a pump house (duty electric, standby diesel, jockey); the yard process water tank is now the 5 x 3 m raw water tank of the phase 1 RFQ. Docs: site-candidates (cell, raw water, fire water bullet), facility-security (the Payap model draws the tank; 6 m racking and twice the floor area make ~200 m3 a floor there). |
||
|
|
7da64088ce |
Duplex cell layout: one operator, presses turned towards him
User sketch, October 2026 (filed as docs/equipment/ duplex-cell-layout-sketch.png; arrangement only, the user notes it is not to scale): operator in the middle, the two presses either side turned 45 degrees towards him, EX 50 and EX 35 side by side behind him, one trimmer per cell in front on the left. Sized from the Newbilt site requirements p. 10 (press ~0.9 m2, extruder ~0.5 m2, hydraulic aggregate ~1.0 m2, walk-around space, >= 60 cm to walls, room height >= 2.5 m): cell ~5 x 3 m, 0.6 to 0.8 m between machines; EX 35 and trimmer footprints are estimates. The layout drawing the site requirements refer to on p. 11 is missing from our copy: ask for it with the re-quote. README layout line for the sketch. |
||
|
|
83840d45dc |
Payap model v4: colour store, silos, two-storey finishing and print block
User, October 2026: ground-floor colour store plus outdoor silos; a two-storey block at the east end with packaging below and printing plus print and packaging stock above; in-house printing not decided, so the print room is reserved only. Model (rebuilt live in FreeCAD 26.3 after checking a copy of the saved file for user edits; parametric check plot 150->160 m and upper floor 3.8->4.2 m passed): - factory 128 x 25 m, plot 150 m (14.1 rai), corridor 98 m, fire wall at 106 m, new params crane_x (runway end = press hall end, 92 m) and mezz_z (+3.8 m); - galvanics open to stamper prep (wall kept only on the material area and electrical side); - colour store 10 m bay (~180 m2): two racking rows, ~100 pallet positions on 4 levels (estimate), weighing and mixing, vacuum conveying station; indoor silos replaced by regrind bins; - 4 outdoor PVC silos (2 black, 2 standard colours, ~50 m3 each, estimate), big-bag filling station, buried conveying lines; - finishing and print block 14 x 25 m: ground floor trim, optical inspection, QC, packaging (tables, shrink wrap, pallet wrapper), stair (Arch Stairs) and goods lift; upper floor print room (reserved), print stock, packaging materials. New docs/cnx_vinyl_parametric_payap-block.png with both block levels. Docs: site-candidates Payap section rewritten (areas ~3,800 m2 under roof, ~4,630 m2 of floor), crane doc (98 m corridor, runway ends at the press hall), README bullet and layout line. |
||
|
|
d9f3a4b88e |
Compound storage for tens of colours; stamper prep open to galvanics
User, October 2026: special designs will need tens of colours, so the compound store needs far more space, with maybe a few silos for black and the standard colours; and the wall between stamper prep and galvanics is to go. - pressing-line: "Compound storage" bullet (colour store with pallet racking, ~100 positions in the Payap model, estimate; outdoor silos proposed; compound stays on the ground floor, ~160 to 270 t a year at the mature fleet; sacks vs big bags decides the silo filling). - galvanics: stamper prep open to galvanics, one clean zone. |
||
|
|
0700c14b5c |
Payap model: two-storey office building with canteen, changing and showers
User, October 2026: the office building also houses several showers, a changing room, toilets and a canteen; the office area itself about 150 m2; the building can be multi-storey. Model (office rebuilt live in FreeCAD 26.3; factory and site untouched): - 32 x 15 m on two storeys (off_storey 3.6 m), ~960 m2 of floor, Arch Stairs plus a lift, first floor slab with the stair and lift void; - ground floor: reception and lobby (entrance and link door), canteen ~40 seats with kitchen and servery, changing rooms women and men with 4 showers each and lockers, toilets, mastering and cutting (acoustic lining), listening room, archive; - first floor: offices 147 m2 (16 desks), training room (Payap programmes), meeting room, IT and server, toilets, pantry, flexible room; - factory staff entry relabelled "PPE, WC" (changing is in the office). New docs/cnx_vinyl_parametric_payap-office.png with both floor plans. Docs: site-candidates Payap section (office bullet, staff entry, area ~3,400 m2 footprint / ~3,880 m2 floor), README bullet and layout line. |
||
|
|
4263fbbd9b |
Payap model v2: bigger factory, shared plant room, separate water treatment
User, October 2026: the factory is too small and needs room to grow (possibly ten more Classics), one shared hydraulic and air supply, water treatment perhaps in a separate building connected to the galvanics lab, and a fully equipped workshop (maintenance tools, 3D printers, maybe a lathe and a small CNC mill). Model (rebuilt live in FreeCAD 26.3, BIM objects, Params-driven, parametric check plot 135->145 m and factory 112->120 m passed): - plot 135 m (11.4 rai) with a reserve; factory 112 x 25 m, 16 bays, 82 m visitor corridor, fire wall at 90 m; - press hall ~870 m2: two Duplex systems (EX 50 + EX 35), the Classic, ten future Classic positions in two rows on a service trench; - central hydraulics and compressed-air plant room (~62 m2); - water treatment building 12 x 10 m behind galvanics: buried duct (gravity from the +1.2 m floor), covered crossing 6 m clear; - workshop ~200 m2 with benches, tool cabinets, 3D printers, lathe, small CNC mill, drill, saw, welding bay, press, washer, measuring table. Docs: galvanics (water treatment building, proposed), crane doc (workshop fit-out; lathe and CNC mill not yet priced; corridor now 82 m), site-candidates Payap section rewritten, README bullet. |
||
|
|
9e0c5d4045 |
Fleet: one shared hydraulic and air supply; room for ten more Classics
User, October 2026: the presses run from one shared hydraulic supply and one compressed-air supply, and the plant may add up to ten more Newbilt Classics at some point. - pressing-line: fleet table and intro (shared central supply), new bullets on the shared supply and the expansion option, re-quote point (central supply for the whole fleet, extendable, can the Classic run from it), Hydraulics bullet now the plan. - scale: "Expansion (option)" capacity row, ~4.7 to 5.8M records/yr on the same basis, explicitly outside revenue model and investment; utilities note: fifteen presses would need ~2.3 to 2.7 t/h steam and up to ~1.9 MW cooling, a utility phase of its own. |
||
|
|
f2bb7f3d85 |
Payap scenario: parametric BIM model of the whole plant on a square plot
A separate FreeCAD 26.3 model (the Mueang Chi model is untouched) sites the plant on a 110 m square placeholder plot of Payap land, built from BIM objects (Arch Site, Buildings and Levels, walls, slabs, columns, beams, a ramp, Spaces with computed areas, Equipment). Every object sits on an expression-driven base, so the Params sheet drives plot, setbacks, floor level, building sizes, fire wall line and office gap (checked: plot 110 to 120 m and factory 84 to 90 m, everything followed). - Factory 84 x 25 m, production only, in process order along a 54 m glazed corridor; press hall 465 m2 with the October fleet (two Duplex systems, each EX 50 + EX 35, and the Classic); crane to the fire wall; machine door and 12 m ramp at the north-west corner. - Office building 24 x 15 m, 12 m away on its own slab with a covered link: reception, offices, meeting/training, mastering and cutting, listening, IT, archive. Resolves the crane-zone conflict of the old sketch. - Utility yard behind the press hall (boiler and chiller flagged for re-sizing), gate, truck apron, car park, service road. - site-candidates: new section and plot-fit note; crane doc: conflict resolved, 54 m corridor; README bullet and layout lines; the old sketch is labelled as Mueang Chi with the earlier fleet. |
||
|
|
3a758fcffb |
Fleet: each Duplex has an EX 50 main and an EX 35 colour extruder
Correction from the user: the two Duplex systems are not in the two-extruder configuration. Each runs two HRP 12 presses from an EX 50 main extruder with an EX 35 auxiliary extruder beside it for a second colour; the Classic stays. Fleet still five presses. Updated in pressing-line (table, phasing, re-quote: EX 50 vs the VEX 50 of the 2024 quote, and whether one EX 50 keeps both presses at full rate), scale, total investment (wording; estimates unchanged), roadmap item 4, README. |