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.
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.
- 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.
- 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.
- 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.
- 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).
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.