3d9bb9af536e3145024f89768684bbbcdb90f90f
15
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
3d9bb9af53 |
Own catalogue in a second company; models self-hosted on premises
Decisions (Alexander, 26 Oct 2026): a second company, not the plant company, holds the catalogue; it owns and licenses titles; language models are self-hosted on premises. catalogue-intelligence.md reworked: the catalogue company is a customer of the plant at arm's length (orders through intake and portal, the plant's price list, standby pressing offered to every customer, no moved dates, no data either way, metal in the archive on customer terms; Revenue Code section 71 bis, 200M THB disclosure threshold per the OECD profile), its own ERPNext site, the run-size rule on the plant's price instead of its direct cost, its own advisor instance on hardware it controls, phasing, cost borne by it, risks, open decisions (shareholders and Poy Records, working capital, standby terms, where its systems run). Mirrors: README (planning bullet, project status), roadmap item 28, digital-factory (tool rule, language-model row in the open-source table), artist-platform (standby pressing proposal, pre-orders), production-timeline, revenue-model, plant-assistant (self-hosted on premises; catalogue data removed; advisor as a separate instance). |
||
|
|
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. |
||
|
|
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. |
||
|
|
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). |
||
|
|
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. |
||
|
|
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). |
||
|
|
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. |
||
|
|
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). |
||
|
|
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. |
||
|
|
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. |
||
|
|
4607a4da58 |
Plan the artist platform: price calculator and fan-funded pressing
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. |