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.
Three current gates (market validation, BOI, land title check) through
quotes, commitment, build, launch, and revenue-gated expansion; import
window correctly attributed to certificate issuance
Own land yields ~80-135 t/yr vs ~350-400 t/yr mature demand; forestry
classification check gates everything; staged electric-first path with
coppice planted now for the expansion-phase biomass boiler
Press cooling return (60 C) feeds heat pump into boiler feedwater; waste
heat runs label oven and HVAC dehumid reheat; solar thermal preheat;
steam accumulator; boiler does only the final lift. Heat pumps for the
final 180 C steam and ground-source in tropical Thailand both ruled out
with reasoning; northern Thailand LPG tank context documented
Steam, compressed air, cooling, water treatment, racking, HVAC, solar EPC
and BESS; baseline total 23.98M-41.63M THB, options priced separately;
all figures budgetary +/- 30%, basis marked per row
Group B base activity (plastics) with non-tax package and machinery duty
exemption; CIT value engineered via solar/BESS, smart-and-sustainable
automation, and R&D merit measures; NEC/Lamphun regional angle; BOI
approval sequenced ahead of incorporation and machinery orders
- docs/process-flow.md: mermaid chart plus stage table of every check and
the three artist approval gates, from audio intake to fulfillment
- docs/process-flow.drawio with PNG and PDF exports
- pressing-line.md: floor must carry multiple tons per m2 in machine areas
- README: process-flow entry in document index and layout tree
- docs/facility-layout.drawio: zoned floor concept (production, galvanics,
utilities, logistics, support) with material and stamper flow arrows
- PNG and PDF exports alongside the source
- facility-security.md: suppression subsection no longer splits the fire
safety bullet list; clean agent wording updated to FK-5-1-12
- README: vendor sections for Agnew Analog (lathe), Plating Power/Digital
Matrix (galvanics), Sibert (stamper prep), Stamper Discs (bridge stamper
service), Pheenix Alpha (automated presses)
- docs/suppliers/equipment-suppliers.md: full needs list and supplier map
across all nine areas of the production chain
- docs/: Newbilt equipment offer, site requirements, process schematic,
service rates, project cost overview, PVC supplier list, consultancy overview
- .gitignore excluding local tooling config and runtime state