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.
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.
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.
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.
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.
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.
The current plan (user decision, October 2026) replaces the 50/50 target
(two semi-automatic presses and two Pheenix AD12s) with an all-Newbilt
fleet of five presses: two Duplex systems in Newbilt's two-extruder
configuration (two HRP 12 presses, an extruder each, one hydraulic unit)
and one Classic fully automatic press.
- pressing-line.md: new "Current plan" section (fleet table, what it
means, phasing from the Single 2.1 as the first half of system 1,
re-quote questions); site requirements per Duplex system.
- scale.md: capacity table and basis (368 to 448 records/h, ~1.06 to 1.5M
a year on two shifts, same range as before); pressing electrical row;
steam and cooling flagged, not re-based: five presses draw ~750 to 900
kg/h of steam and up to ~625 kW of cooling at Newbilt's per-press
figures, against the 400 kg/h / 250 kW sized for one Duplex.
- total-investment.md: fleet change as an added-scope row (system 2
~230k-300k and the Classic ~290k-460k, estimates; -60k / -160k against
the two blocks it replaces); headline unchanged until the re-base.
- roadmap items 4, 5 and 24, revenue model mature row, crane doc (the
Classic's weight now decides 5 t or 3.2 t), vendor landscape (AD12 is
the comparison for the Classic), README.
The business plan docx is not regenerated.
OMS (Lou Wullms) sent its introduction letter, filed in
docs/equipment/oms/: wet-room units with reference prices, two 4-cell
configurations (EUR 224,000 basic with two EFS2-200, EUR 311,000 advanced
with one AEFS4-250 and PLC; installation days extra), capacities of 24
and 32 shells in an 8-hour day, utilities, rooms, staffing, used
equipment, and five contacts for buying a cutting lathe. Recorded in
galvanics.md (tables, our reading: the advanced units add up to EUR
314,000, know-how transfer is left out of both totals although CNX has no
plating know-how, the basic set has no passivation unit), the exhibitor
follow-ups, vendor landscape (new section on used lathes and cutting-room
contacts, plus Lou's three websites), supplier map, roadmap items 6 and
13, total investment (basis note only, block unchanged) and the scale
people estimate. Open: forward the letter to Simona, as Lou asked.
Sibert (Ian Locke, 9 October): footprints and formal quotations when we
are ready; settle the pressing side first, hopefully with Pheenix, and
mention his recommendation if we do; impressed by the green-factory
plans (supplier feedback). Open: pass on the recommendation if Pheenix is
chosen.
CNX-01 in proplan: OMS basic and advanced added as options to D-002 with
their reference prices in THB; budget line 3 notes the OMS range.
- Sibert: back in Thailand, investor meeting in preparation, his OMS/Pheenix
advice noted; itemised quotation not yet requested.
- OMS: met in Haarlem; role split given to Lou (Simona management and audio,
Alexander technical); waiting for his calculation material.
- README: team roles, investor meeting in the status list.
- Pheenix Alpha (Robert Gunnarsson, 5 Oct; Simona's reply 9 Oct): offers
a Teams call, reference clients and a factory visit near Stockholm;
300+ presses (vendor figure); we call once questions are concrete,
next Europe trip planned for February 2027. CEO contact and Marsta
address added.
- OMS (Lou Wullms, 7 Oct): first email contact, company data, contacts
(Lou Wullms technical, Wilma Peeters accounting/logistics); open: reply
to confirm, then OMS sends material to calculate from.
- SST Frankfurt (Daniel Krieger, 7 Oct): cut the lacquers for POY003,
005, 006 and 013; on good terms with ResurRec; offered help. New cutting
service entry in the supplier map and vendor landscape; corrected the
briefing, which had SST as DMM (its site lists lacquer and dubplates).
- Roadmap items 5, 6 and 14 and the production timeline launch basis
updated accordingly.
No public price index exists; DEDE lists buyers, not prices. Reported
market prices: fresh chips 1,350-1,800 THB/t (LH Bank, Mar 2026),
rubberwood firewood >1 THB/kg farm gate (OIE RIU 2026, doubled since late
2025), corn residue 2 THB/kg (Sunsweet, Mae Chaem), rice husk ~1.5 THB/kg,
pellets 3,000-5,000 THB/t. Planning price 1.35-2 THB/kg delivered, so the
mature fuel bill is ~0.6M-1.2M THB/yr (was 0.35M-0.8M): still a quarter
to a tenth of electric steam. Prices follow diesel; Ratch Pathana's Pa Sak
(Lamphun) buying centre is the local price-setter. Sources filed under
docs/finance/biomass/; sustainability.md and README follow.
PEA tariff schedule (May 2023 onward, still current) filed under
docs/finance/pea/; Ft 0.1623 THB/kWh for Sep-Dec 2026 from the PEA Ft page.
The plant falls under Schedule 3.2.2 (Medium General Service, TOU, 22 kV).
New section in sustainability.md: blended ~3.81 THB/kWh for two-shift
production plus 132.93 THB/kW demand charge; electric steam ~4.7M-5.5M
THB/yr at maturity against ~0.35M-0.8M of biomass fuel; self-consumed PV
worth ~3.7 THB/kWh (~4.5-7 yr payback); solar thermal not recommended;
the battery earns little from TOU arbitrage or peak shaving. biomass.md,
scale.md, the utilities CSV note and the README follow.
FreeCAD BIM (Arch) sketch of the 60 x 25 m phase 1 hall:
Building > Ground floor with Spaces for every zone (areas computed),
room-in-room partitions, the fire wall at 48 m, the 5 t crane runway,
and the main equipment as BIM Equipment (Pheenix line, Sibert row,
Newbilt Duplex and two Classic presses, silos, racking). Zones run in
process order along the visitor corridor. Top-view PNG alongside.
Linked from the README and from the crane doc, with the one conflict it
shows: reception and cutting room under the crane travel.
Ian Locke's email of 5 October 2026 after Making Vinyl Europe:
- Budget of USD 250k for VSP, VSF and VSC confirmed; his time, spares,
shipping and travel extra; itemised quotation on request. The
total-investment block keeps its estimate until the re-base, the
difference (+190k low case / +80k high case) goes into the
not-yet-rolled-up table.
- Current specifications filed (VSF and VSC 2022, VSP 2023) plus the
VSF/VSP/VSC line-up drawing (4958 x 833 mm); the 2021 issues move to
sibert/specs-2021/. VSC is now 1000 kg with split OD hydraulic / ID
pneumatic forming; VSF 0-30 psi, 4-station head. Crane table, supplier
map, vendor landscape and the plant page details updated.
- Fully automatic VSPa exists; Sibert offers to move features to the VSP.
- Electroforming: OMS (Optical Media Services, Lou Wullms) named next to
Pheenix; added as a third galvanics candidate with open questions.
- Sequencing advice (presses, boilers, operators and live feedback loops
first) recorded in the exhibitor briefing, roadmap item 23, and as
digital-factory design decision 9 (operators see the data first).
Rebuild docs/plant-operation.html from the single P1 press into the mature
plant: Newbilt Duplex (two HRP 12 on a VEX 50, EX 35 for splatter), two
Newbilt Classic automatic presses with edge trimmers, label punch and
Granulator 400; Pheenix Alpha PASU, PPPU, two PDPU and PMPB; Sibert VSF,
VSP and VSC in that order; father and mother archive and the stamper rack.
Time runs at 1x real time with speeds up to 3600x. Press cycles are
Newbilt's (Classic 28 s, Duplex ~30 s), plating follows Faraday's law at
the PDPU current, and the operator steps use the galvanics.md table, with
unpublished times marked as estimates. Titles flow through the three artist
gates in days; test pressings unmount and the presses run approved work
meanwhile; worn stampers and represses come from the archived mothers.
Two shifts, unplanned press stops sized to scale.md's 60 to 70 %
effectiveness, and demos for a steam dip, a new PVC lot and a repress.
The boiler and chiller are shown at 800 kg/h and 500 kW (estimates) and
the detail panels flag that scale.md's 400 kg/h and 250 kW are Duplex
figures; scale.md itself is unchanged.
Also commits the galvanics.md cycle-time table the page runs on (one PDPU
covers demand, the second is redundancy) and updates the README and the
test-site descriptions.
quality-automation.md: the day-one per-lot tier becomes a table with an
instrument class and a rough price per check (moisture analyzer, strip
oven, density balance, spectrophotometer, gloss, sieves, muffle furnace,
stereo microscope), plus what was missing: a lab plaque press or two-roll
mill so speck, color and DSC tests do not tie up a production press;
sample conditioning as part of the method at 60 to 90 % ambient humidity;
magnets for metal in lots and regrind. Day-one tier ~USD 55k to 150k
(estimate); Karl Fischer and the ISO 182 Thermomat as options. Mature tier
priced (~120k to 240k), handheld XRF as an option, and partner labs (Payap
pharmacy, CMU science) to defer it.
total-investment.md: the day-one tier goes into "Added scope, not yet in
the roll-up" (55k to 150k USD, 1.8M to 5.0M THB); added total now ~290k
to 690k USD, about 7 to 9 % on the subtotal. Headline total unchanged.
Most people the team talked to in Haarlem were strongly interested in the
full-traceability approach. For Sibert it was one of the reasons to talk to
us at all; without it their representative would strongly advise against
the plan, and seeing buildfor.life's development and data work convinced
him the project comes from the right direction.
Exhibitor briefing gets an "After the show" section (feedback, what has
been filed since); traceability.md opens with the market signal; roadmap
item 1 notes it as supply-side evidence, with buyer prices still missing;
README project status updated (show attended, Payap lead).
Payap also wants to work closely with the project on new student
programmes: audio engineering (mastering, lathe cutting), IT, business
administration and more.
New docs/payap-partnership.md: why it fits (mastering/cutting engineers
are the hardest hires; Payap has music, IT, business, communication arts,
an English-language International College and pharmacy labs; the plant has
a lathe, production data and a real factory application), programme areas
mapped to the docs they draw on, and what it changes: a reason to bring
the cutting room (roadmap item 27) forward, a cutting engineer before the
students, lacquer and stylus cost of teaching, pre-release security for
customer audio, student access and safety, IT work on staging only, the
link to the Payap land, BOI R&D merit. Suggested form: MOU, internships,
short certificate courses first, degree tracks later; what to settle in
writing and questions for the next meeting.
Links from README (bullet, layout), site-candidates, roadmap item 27, the
supplier map's open training item and the BOI open items.
Payap University (Chiang Mai) is interested in leasing land to the
project; a pharmaceutical facility is under construction on the same land.
New docs/site-candidates.md puts the three options side by side (Mueang
Chi lease, Northern Region Industrial Estate, Payap) with the public facts
on Payap (Mae Khao campus on the Chiang Mai-Lampang superhighway, bought
as low-lying land, ~275 acres; Faculty of Pharmacy cosmetics production
facility tendered July 2024; RPAH cannabis/herbal bioreactor centre), why
it is attractive (5 km from the old city, a university partner with music,
pharmacy and labs, production already being built there) and the checks
that could rule it out, in order: zoning for pressing, boiler and later
electroplating; whether the university can lease to a company; the GMP
neighbour's sensitivity to our emissions (argues against biomass steam
there); flooding; plot fit; galvanics consent. Questions for the next
meeting listed. Nothing re-sited: model, RFQ and site code stay on
Mueang Chi until a plot is known.
README (intro, bullet, layout), roadmap item 9 and the lease fork in
project-timeline link to it.
docs/equipment/pheenix-alpha/: the four Pheenix Alpha electroforming flyers
(2024: PASU silvering, PPPU pre-plating, PDPU dual-cell plating, PMPB
passivation bench), renamed from their download hashes.
docs/equipment/sibert/: the VSP, VSF and VSC technical specifications
(2021), plus Sibert's 2008-09 optical-disc SPS literature and the 2008
Blu-ray stamper characteristics paper in sps-optical-disc-2009/. Two
byte-identical duplicates in the download were dropped.
New docs/equipment/galvanics.md, the metal-path counterpart to
pressing-line.md: datasheet tables for both ranges and what they change.
Pheenix is a second turnkey galvanics vendor next to Digital Matrix and
can quote lacquer-to-record as one vendor; neither range includes water
treatment. Utilities from the sheets (~27 kVA connected per line, DI water,
12-20 C cooling water, extraction sizes), ~5.6 m2 of footprint, and a cell
count estimate (one PDPU at the low end, two at the high end). The Sibert
machines are single-phase, 200/250/600 kg on castors, centre manually and
list no data interface; the VSC locates on the punched hole; the finisher's
water carries nickel. Weights, cycle times, prices and mould fit are listed
as quote questions.
Backlinks and small updates: README (bullet, layout tree, vendor list),
roadmap items 6 and 23, vendor landscape, supplier map, exhibitor briefing
(on-file notes, Sibert three-phase question answered), digital factory
(Pheenix PLC data, Sibert data question, RFQ clause 5), quality automation
(hardness on the centre slug, BD paper as the acceptance-spec model),
sustainability (finisher water), total investment block label (numbers
unchanged), scale (galvanics feeder note), crane weight table, process
flow, pressing-line stamper-fit question, plant page detail lines.
docs/equipment/newbilt/flyers-2026/: the six 2026 product flyers
(Classic, Duplex, EX 35, Edge Trimmer, Granulator 400, Label Punch) and
the 2024 Classic print flyer, collected at the booth in Haarlem.
pressing-line.md gets a range table with the flyer figures and what they
change: Classic and Duplex share inserts (one mould family for a
Newbilt-only fleet, Classic now named as automated candidate next to the
Pheenix AD12), edge trim of 20 to 40 g per 12" 180 g record brackets the
~20 % regrind share, the Granulator 400 runs in batches, central
hydraulics is an option, and the EX 35 is not in the 2024 quote.
Sources disagree on the Classic's panel (two 21" vs one 10"), extruder
power (7.5 kW drive in the 2024 flyer vs 15 kW noted earlier) and 10"
support; recorded as re-quote points instead of picking one. Supplier
table and exhibitor briefing corrected to match and given Erwin Neubauer
as a second contact; plant page grinder detail cites the flyer figures.
The header no longer forces a 1,600 px layout: it wraps on tablets and
narrow desktops (all nine KPIs now fit at 1,600 px, one was clipped
before), and on short screens (max-height 560 px, i.e. phones in
landscape) it collapses to one row with a scrolling KPI strip. There the
detail, event log and legend move into a side sheet (Info button, opens
by itself when a station is tapped), so the drawing gets the full height.
The drawing pans and zooms by viewBox, so the sim coordinates are
untouched: pinch and drag on touch, wheel and drag with a mouse, plus
zoom buttons and +/-/0 keys. A drag or pinch never selects the station
under the finger. Uses 100dvh and disables iOS landscape text inflation.
Upright phones get a hint to turn sideways.
Checked in Chrome device emulation at 667x375, 740x360, 844x390,
932x430, 1024x768, 1180x820, 1366x1024, 1258x800, 1600x900, 1920x1080
(no horizontal overflow, zoom controls clear of every station) with real
touch input (tap, tab switching, pinch, drag) and a 10x sim run without
errors.
A first run failed with "Permission denied (publickey)": s1 accepts only
the blog key (deploy@s1.b4l.co.th, SHA256:o4w7HL...) for the deploy user,
and the secret held a different key. The SSH step now strips CR, refuses
a secret that is not an unencrypted private key, and logs the key's
fingerprint for comparison with authorized_keys. The ssh host alias is
renamed so the masked VPS_USER value no longer hides it in the log.
site/ builds the internal test site: public/ served as is (landing page,
robots.txt, static sites) plus demo pages copied out of docs/ (the plant
operation page at /demos/plant-operation/). build.sh fails on dead
internal links and stamps version.txt.
.gitea/workflows/deploy-site.yml rsyncs site/dist to the buildfor.life
web server with the blog's two-directory rename swap, checks version.txt
on the server, purges Cloudflare when a token is set, and checks the
public URL. Secret names match the blog's workflow.
site/Caddyfile is the virtual host to append on s1 (noindex everywhere,
Cloudflare-only like the blog apex, www redirect). site/README.md has the
one-time setup: DNS, Caddy, web root, secrets, runner.
New docs/artist-platform.md: upload master and artwork with automatic
audio, artwork and rights checks; an itemised price calculator for every
customer (per-title vs per-copy lines, price-per-copy curve, lead time
from the production-timeline quote table, versioned price list); and
fan-funded campaigns that press and dropship per fan once the goal is
reached, refund otherwise. Covers goal maths, payments (charge into a
ring-fenced account, CNX as seller of record, legal opinion first; the
Qrates failure as the design rule), repress pre-orders, architecture on
the cnx-factory stack with the public side on a fleet machine, PDPA,
phasing (calculator public early as a run-size probe, campaigns only
after first releases ship), cost and open decisions.
Backlinks from README, process flow, production timeline, revenue model,
digital factory and roadmap items 1 and 20; total investment added-scope
table gains the platform line.
New docs/crane-workshop-tours.md: a 5 t single-girder EOT crane over the
whole production compartment (stops at the warehouse fire wall), a
machine door and crane-served workshop/machine bay at the ramp end, and
a glazed ground-level visitor corridor along the car-park elevation with
stations in process order, its own air and acoustic glazing so tours
need no PPE. Covers what each changes in the shell (crane-ready frame,
hook height under the 7.0 m eave, no full-height cross walls in the
crane zone, room lids and crane hatches), safety, costs and open
decisions.
Propagated: construction RFQ (crane-ready frame, new section 1c, machine
door, accessible 1:12 entrance now required), scale zone table (+210 to
280 m2, total ~1,400 to 2,000 m2), facility security, worker safety,
roadmap items 9 and 15, total investment added-scope table, README.
Sillitoe Audio Technology (Australia) sells a complete cutting system:
lathe, MMFB feedback cutterhead, cutting amplifier, Space / Time Control
automation with a virtual groove, vacuum and microscope, at a published
USD 125,000 ex tax and shipping. Vendor landscape gets the narrative and
an Agnew-or-Sillitoe comparison; supplier map, total investment basis,
roadmap item 13 and the digital factory's no-telemetry section (STC cue
sheet, Open Groove export, stylus hours) follow.
Rewrite docs/digital-factory.md against the fleet that already exists at
git.b4l.co.th/B4L/cnx-network-clan instead of a plant-only clan:
- The plant is one more site: gw-lpn-1 from the cnx.router module, plant
machines in the same inventory, reached over the existing ZeroTier mesh
(no VPS, no moon, no port forwards).
- Fleet pieces reused as-is: control for host metrics, journals and host
alerts; ns1/ns2 for the gateway wildcard cert; web01 as the public
proxy for the customer portal; clan borgbackup with a plant server.
- Process time series move from TimescaleDB to a plant-local
VictoriaMetrics (same modules and rules as control); PostgreSQL keeps
everything with identity. Object storage dropped for ZFS datasets.
- VLAN table on the fleet addressing convention (siteId 3 assumed, ids
above 40); OT segments as dual-homed islands behind the collectors;
stations reach the app only through the gateway Caddy proxy.
- New section listing every file that changes in the clan repo, the
modules/vinyl/* to write, and three router-module extensions (NTP
serving, static VLANs, second WAN).
- Gaps the plant closes for the fleet: Alertmanager delivery, off-site
backup destination, TSDB backup.
- Repository layout decided: infra in cnx-network-clan, app in
cnx-factory as a flake input, this repo stays documents.
README bullet updated to match.
New docs/digital-factory.md: every system needed for environmental,
machine, QC and genealogy data to land in one database keyed to one
record identity. Standing decision: all services run on NixOS machines
declared and deployed as a single clan.lol inventory (mesh, backups,
host monitoring, secrets from clan services).
Covers machine list and roles, VLAN zoning, Telegraf/MQTT acquisition
source by source with the RFQ clause for each, environment sensor zones,
QC instrument integration paths, the factory application modules and
entities, alerting tiers, backup and retention, security, procurement
clauses, build order aligned with the roadmap phases, rough cost and
open questions.
README index and layout tree updated; roadmap item 17 and the
traceability spec link to the new document.
The docs and the plant page had labelling as a finishing step after the
press. On a record press the bottom label, the cake and the top label go
in between the stampers every cycle and the mold bonds the paper into the
vinyl; the oven only pre-dries them. Corrected everywhere the process is
described:
- process-flow.md: labels are a parallel input to pressing with their own
row (print inspection, oven, lot per cycle); stage 6 loads label, cake,
label; stage 7 is trim, sleeve, shrink
- process-flow.drawio (+ regenerated png/pdf): label input now feeds
stage 6, not stage 7
- README vision list and the business plan source (regenerated docx/pdf):
pressing paragraph explains the pressed-in label, finishing no longer
claims to label
- plant-operation.html: label dry oven station feeds two label discs
into the press with every cake, the cake in the mold shows its labels,
the cycle log records the label lot, finishing is sleeve + shrink
docs/plant-operation.html: one self-contained static page showing the
whole plant running, from PVC intake and the material lab gate through
extruder, press cycle (load/close/steam/cool/open/eject), trimmer, 100%
optical inspection, sampled audio comparison, finishing, packaging
(matrix code vs barcode) and fulfillment. The metal path (audio intake,
mastering, cutting, silvering, father/mother/stamper, stamper prep) runs
above with the three artist gates; utilities (steam, cooling, air,
hydraulics, grinder/regrind, energy, traceability, HVAC) below with
live-looking tags.
Numbers are taken from the repo (Newbilt site requirements, scale.md,
quality-automation.md, process-flow.md). Every station is clickable for
what happens there and the checks that gate it. Two demo buttons show a
steam pressure dip holding the press and a new PVC lot held by the lab
until a test pressing releases it. README links the page.
Leased land instead of purchase, in-house cassette duplication, CD-R
duplication with CD replication shown as a separate investor decision,
Ploy Printing as packaging partner and intended co-investor, and a
dedicated section on traceability, metrology, QC and efficiency.
The project has a standing style rule against em dashes that was missed
when these docs were written. This removes the 42 occurrences where the
substitution is mechanical and cannot change meaning:
- table cells using an em dash as a placeholder, now a hyphen
- em dashes immediately followed by a conjunction or subordinator
(but, and, or, so, though, while, which, where, because, since),
where a comma is simply correct
115 remain. Those join independent clauses, where a comma would create a
splice and a colon often reads wrong, so each needs a judgement call
rather than a pattern. A blanket regex over them was attempted and
reverted: it produced double colons and broken sentences.
Both were flagged in the review and deferred; fixing them properly
changes what the model says.
Labour
- The 0.23-0.40 USD/record line implied 44,000-63,000 THB per head per
month, far above northern Thai production rates.
- Rebuilt from headcount and wages: 13-19 direct production staff
(operators, galvanics, QC, maintenance) at loaded northern Thai rates
gives 3.7M-5.4M THB/yr, or 0.08-0.16 USD per record. Build-up shown.
- Mastering and cutting engineers excluded as title-services labour;
admin and sales moved to overheads where they belong.
- Stamper amortisation widened to 0.03-0.12 to match the in-house
marginal cost assumed elsewhere on the page.
- Direct cost total is now 1.30-2.58 USD (43-85 THB).
Operating roll-up
- The old EBITDA and operating-profit figures did not reconcile with
their own components and showed no loss case anywhere. Replaced with
a three-scenario table built from the components, each column
internally consistent, with cash overheads and depreciation separated.
- The adverse case is EBITDA-positive but does NOT cover depreciation:
operating profit -0.32M USD at 1.0M records on the low price and high
cost. The previous figures quoted 0.6-1.2M and hid this entirely.
Utilisation and price realisation decide solvency, not just upside.
- The favourable case is not credible and that is a finding about the
cost table rather than the business: 69% EBITDA margin against
industry norms of 15-25%, and 47% even at the centre. The direct cost
table counts only per-record consumables and direct payroll. Named
what is missing (indirect labour, scrap above the reject allowance,
water and effluent, inbound freight, inventory carrying, sales
commission) and marked the adverse column as the honest one until
those lines exist.
- Payback restated per scenario: never / 2.3-4.4 yr / 1.0-1.8 yr. The
old "5 to 8 years" came from the pre-correction margin.
- FX sensitivity and the utilisation bullet updated to match.
The table is a sensitivity, not a forecast, and now says so.
A four-agent review audited arithmetic, cross-document consistency,
epistemic honesty and style. It found substantially more than the
manual pass in the previous commit. Errors that changed conclusions,
not decimals:
Arithmetic
- production-timeline: the headline lead times did not reconcile with
the stage table on the same page. Launch is 22-49 days (was 21-39),
mature 11.5-22 (was 14-20), repress 6.5-11.5. Including gates,
launch is 6-17 weeks, not 8-14.
- Consequence: at 17 weeks the launch configuration is at parity with
EU/US plants, not ahead of them. The page now compares quote to
quote rather than a stage sum to a quoted lead time, and says so.
- The galvanics turnaround saving is 1.5-5 weeks, not 3-5.
- scale.md Duplex capacity 300-600k/yr did not reproduce from its own
stated basis; corrected to 175-540k. production-timeline disagreed
with scale.md on the same fleet; both now agree.
- "300 units is under an hour of pressing" was out by an order of
magnitude on the semi-auto line: 5-8 hours.
- project-timeline carried two totals for the same quantity. Now
27-33 months throughout, with the Gantt's two ordering breaks fixed.
- scale.md: 300 kWp covers 28-45% of consumption, not 20-35%; roof PV
stated as both 150-200 and 247 kWp for the same roof; parking canopy
dimensions and PV disagreed with the RFQ.
- RFQ: fire tank stated 200 m3 where both its geometry (254 m3) and
its own mass (250 t) say 250. Drainage now gives total sealed area
66%, not the 46% paving figure, since that is what attenuation needs.
- Galvanics payback used only the top of the saving range: 1-5 years,
not 1-4.
Inference marked as inference
- The 22,000 THB stamper figure is an invoice RESIDUAL. It carries
lacquer cutting, test pressings, setup and margin, so it is an upper
bound on the stamper component, not a measurement. Everything derived
from it now says so, and a line-itemised invoice is the top question.
- The saving was also benchmarked against the wrong supplier: CNX buys
from Stamper Discs, not a Thai reseller. Stated as 175-665 USD until
that quote exists.
- The stamper-bottleneck hypothesis now names its alternatives. Jacket
print runs would produce the same symptom and would constrain CNX
equally, which would remove the competitive read entirely.
- Competitor capacity relabelled as nameplate times an assumed OEE,
with the assumed shift pattern stated; all rows on one 300-day basis.
- The fixed/variable decomposition keeps the shape and drops the point
estimates: the solve point inside the flat 1000-3000 tier is
arbitrary and moves the fixed component by nearly half.
- "Nobody in Thailand plates" reduced to "we have found no evidence",
with a desk check named as the action.
- Cut the USD 450-700k valuation of a competitor's presses entirely.
It extrapolated a semi-auto quote onto a different machine, ignored
the used market, and supported no decision.
- The collaboration payback divided capex by revenue where the same
page uses contribution elsewhere: 5-10 years, not 1-3.
Missing caveats added
- No financing is committed or modelled anywhere in this repo;
project-timeline previously asserted money was not a constraint.
- Leasing cannot pull the launch forward on its own, since the press
chain governs and construction has float against it.
- The whole competitive analysis is one buyer, one plant, one
afternoon, and the primary evidence is not archived in the repo.
- ResurRec is a competitor and may decline to buy from a new entrant.
Currency
- Base currency moves from EUR to USD and THB throughout. Rates at
5 Aug 2026: 1 USD = 33 THB, 1 EUR = 1.155 USD, 1 GBP = 1.35 USD.
EUR/THB lands at ~38, so existing THB research needed no change.
- Vendor quotes keep their original currency with a USD/THB equivalent
alongside, so they stay checkable against the source PDFs.
- Full vision ~4.7-8.9M USD; phased entry ~1.7-2.9M USD.
New documents
- production-timeline.md: order turnaround stage by stage. Launch
8-14 weeks, mature 5-10, repress 2-3. Quantifies the in-house
galvanics turnaround claim the repo had asserted without a number,
and flags artwork as an unmodelled fourth approval gate.
- project-timeline.md: calendar to first paying release, ~Q4 2028.
Critical path is BOI certificate to press order to build to
commissioning. Two findings: Newbilt build time is absent from the
repo yet carries ~40% of the schedule, and the BOI rule may be
over-serialised since duty exemption attaches at importation rather
than at contract signature.
First market data (ResurRec, Bangkok)
- Invoice-derived prices, a factory tour, and a confirmed fleet of one
Newbilt Classic 12" automatic plus one semi-automatic.
- Price ladder recorded at 300/500/1000-3000/3000+ units. Decomposes
to roughly 34-50k THB fixed per title and 535-780 THB variable per
unit, which is 4-7x the price this model assumes.
- The incumbent presses 230-350k records/yr but buys every stamper as
an import. That single constraint plausibly explains their 150-unit
floor, their flat discount ladder and their large-run lead time, and
it is what an in-house galvanics line attacks. Logged as an open
question on whether galvanics should move from phase 5 to phase 1.
- Inferences are marked as inferences; the whole set is one buyer and
one plant, and the model is deliberately left unrebased until a
second data point exists.
Corrections
- Gross margin arithmetic did not follow from its own inputs. Restated
as ~1.95 USD at the midpoint with the 0.75-3.15 spread shown; the
previous "40 to 55%" was not supported.
- Direct cost low total 1.50 to 1.45 USD; contingency THB high 40M
to 38M.
- README indexes the construction RFQ, which was missing.
The parametric model (docs/cnx_vinyl_parametric.FCStd) is now tracked. It
is the spreadsheet-driven Arch/BIM rebuild that supersedes the hard-coded
massing in factory_building_rough.FCStd, which is kept because the current
renders still come from it.
Site works. The two gates are consolidated into a single 10.0 m bi-parting
opening, with the wall plugged where the second one stood. The guard house
sits beside it clear of the entry corridor, and was raised out of the
ground - it had been modelled sunk half a storey. The fire water tank moved
to the north-west corner of the plot, taking utility-yard clearance from
5.6 m to 18.6 m; the fire pump house follows it. The site is now paved
continuously from the frontage through to phase 2: 4,387 m², split 1,608
heavy-duty and 2,779 general so the two can be priced apart.
Phase 1 envelope. The walls stopped flat at 8.2 m while the roof rose to
12.6 m, leaving the entire high-side wall and both gable triangles open -
about 366 m². Walls now follow the roof underside exactly. The rebuild also
starts the sandwich panel on top of the masonry dado, clearing a 31.9 m³
overlap that had been double-counting 425 m² of envelope. A vehicle ramp
(10.5 m at 1:10) and three stair flights are added, since with FFL at
+1.2 m the building had no means of access at grade.
Phase 2. Built from the design already documented in scale.md: 45 x 38 m,
two-bay sawtooth at 10.35/7.0 m with a 3.35 m glazed riser, bays falling
ESE. A three-storey office cube - canteen, office, office plus sleeping -
stands at the yard end of the west tooth, 1.65 m proud of the ridge. Its
walls and the hall walls are Arch Walls, and the yard glazing is Arch
Windows, so both carry IFC types and cut their own openings.
RFQ updated against the model throughout, with a new section on where
mineral-wool core is required instead of PIR, for compartmentation and for
acoustics.
Site model: two sealed dock positions on the north gable (depressed
12 m pit + 12 m ramp cut into ground and paving), water treatment
moved clear of the cooling tower, second car/staff gate on the NE
edge with access road to parking, guard house relocated between the
gates, perimeter wall rebuilt continuous on its 0.4 m inset line,
leftover door recesses filled on both envelopes, loading-apron
marking removed. Renders re-exported.
Docs: phase 1 contractor pricing request (PEB spec, PIR envelope,
dock, site works, exclusions, soil caveats).
setViewDirection leaves camera roll unconstrained, so the aerials came
out with a tilted horizon. The camera orientation is now built explicitly
with world +Z projected as the frame up-vector.
Two FreeCAD quirks had to be worked around. setCameraOrientation() goes
through an animated setter (UseAnimation defaults on), so saveImage fired
mid-transition and the roll drifted; setting the Coin camera node
directly avoids the animation entirely. The first call after a standard
view also needs a second application to take, so each render now verifies
up.z equals cos(elevation) before saving and retries if not.
Also tightened framing 20%, since fitAll was zooming out to include the
road strip that runs well past the parcel.
The first pass included two orthographic elevations and a low approach
view, which read the site edge-on and showed no roof. Dropped those.
The set is now six views that all look down: a straight-down site plan,
four aerials at 45 degrees from each corner, and one 35 degree hero shot.
Nine 2400px views of the site model in docs/renders: an isometric, a
site plan, dimetric and trimetric, four aerial obliques from each corner,
a low approach view from the road, and two orthographic elevations.
Also hardens the freecad MCP entry added in the previous commit. It ran
"uvx freecad-mcp" unpinned, which resolves and executes whatever version
is current at every launch. Now pinned to 0.1.20 and marked optional, in
line with the ruv-swarm and flow-nexus entries alongside it.
Models the plot and everything on it in FreeCAD, and writes up the
decisions the modelling forced.
Parcel geometry is traced from the DOL LandsMaps cadastral polygon and
reconciled against that portal's own measured edge lengths (40.86 + 26.61
/ 166.81 / 42.48 + 14.94 / 152.46 m), which the trace reproduces to within
about 1% with 1.67 m of closure error over a 444 m perimeter. Note the
mapped extent comes out near 9,570 sqm against a deed area of 8,266 sqm,
a ~16% gap that needs a surveyor before any offer.
On the site: 60x25 m production building on a 10 degree monopitch, a
45x38 m phase-2 building, roof and carport PV, fire and raw water tanks,
a detached boiler/chiller utility yard, perimeter wall and gate, guard
house, roofed staff parking, and the loading and fire-access roads.
Docs:
- scale.md: expansion headroom for a second building, and the detached
utility yard, which frees ~126 sqm inside the main shed
- sustainability.md: roof orientation study (rotating the building for
solar gains under 1 point and costs 4 m of clearance, so it stays
aligned to the plot), and a new water supply section
- facility-security.md: fire water supply behind the existing
suppression design
Figures marked as estimates are planning-grade, not engineering
calculations; the PV module spec is a generic placeholder, and zoning for
factory use on this plot is still unverified.