Board 2026-08-23 — Ratify BUSINESS_MODEL.md — FINAL MINUTES #42
Closed
opened 2026-08-23 17:30:49 -04:00 by logan
·
4 comments
No Branch/Tag Specified
Labels
Clear labels
area/ai-pipeline
area/auth
area/billing
area/correlation
area/discord
area/frontend
area/governance
area/growth
area/infra-deploy
area/legal
area/map
area/mqtt
area/node-ota
area/osint
area/recording-audio
area/sdr-radio
area/transcription
board
board:agenda
minutes:draft
minutes:final
role:ceo
role:cfo
role:cio
role:ciso
role:cmo
role:coo
role:cto
Scene/entity extraction, summarizer, AI providers, embeddings
AuthN/Z, roles, tenancy/org scoping, API keys, credentials
Plans, entitlements, AI spend accounting and caps
Incident correlation, linking, lifecycle, severity, corr_debug
Discord bot, radio bots, voice streams, bot tokens, webhooks
Web UI: Next.js app and the edge-node local dashboard
Board process, minutes, unattended runner, agent tooling
Go-to-market, outreach, cold email, discovery conversations
CI/CD, VM, registry, Firestore rules/indexes deploy, Terraform/Caddy
ToS, retention, licences/DAAs, CAN-SPAM, E&O, name suppression
Live map: pins, paths, tiles, legend, geocoding
Node-C2 MQTT, checkins, commands, node sweeper, dynsec
Node install, enrollment, OTA updater, image skew
External feeds: cameras, 511, ADS-B, AIS, outages, and their licences
Call capture, boundaries, PulseAudio, ring buffer, trimming, attribution
OP25 decode, SDR hardware/tuning, conventional, second SDR, mesh radio
STT, transcript correction, place verification, name accuracy
Board process: minutes and board-filed items
Needs board scoping at the next sitting; CEO removes the label once scoped
One exec pre-read, closed by CEO
CEO ruling; open until enacted
Filed by the CEO
Filed by the CFO
Filed by the CIO
Filed by the CISO
Filed by the CMO
Filed by the COO
Filed by the CTO
kind
behavior-bug
Wrong product behavior; the instrument reads it correctly
kind
measurement-bug
Corrupts the recording/instrument (debug data, evals, health checks), not behavior
priority
p0
Drop everything: prod broken, live exposure, or owner-ruled P0
priority
p1
Next up: blocks a gate, a customer, or core incident quality
priority
p2
Normal: real defect or planned work, schedule in turn
priority
p3
Low: minor, cosmetic, or someday
status
blocked
Waiting on an external party, spend, or another issue
status
in-progress
Branch or PR open against it
status
needs-decision
Waiting on an owner or board ruling before work
status
needs-info
Root cause or repro unknown; needs a reading first
type
bug
Something built is wrong: code, data, or a measurement
type
chore
Maintenance, refactor, tests, pinning, cleanup: no user-visible change
type
decision
A ruling to make or record: board minutes, owner calls, legal reviews
type
docs
Docs, runbooks, CLAUDE.md, skills, SOPs
type
feature
New capability or an extension of an existing one
type
security
Security, privacy, credential or tenant-isolation exposure
type
tracking
Tracker, checklist, initiative or punch-list spanning several changes
Milestone
No items
No Milestone
Projects
Clear projects
No projects
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: logan/server-26#42
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Agenda
Do we adopt
BUSINESS_MODEL.mdas the company's go-to-market — ratify as written, ratify with named amendments, or kill it — thereby deciding who pays and at what price?This is the board's first sitting. A search of
logan/server-26(open and closed) confirms no priorminutes:finalissue exists, so nothing inBUSINESS_MODEL.md,SAAS_PLAN.mdorUI_REDESIGN.mdwas binding before today.Where the board agreed (stated once)
All four advisers converged on "ratify the structure, gate the revenue." Nobody argued to kill the document and nobody argued to ratify it as written. That consensus is adopted and not re-argued below. The value of this ruling is in (a) saying precisely what is ratified, (b) making the gate enforceable instead of a sentiment, and (c) refusing to invent answers to owner-only questions.
Three findings were reported by more than one adviser and are accepted as fact without further debate:
Server/infra/firestore/firestore.rules, deny-by-default, scoped onresource.data.org_id == request.auth.token.org_id) but are not deployed to production (#13). The live tenant boundary is unknown, not known-bad — the distinction matters for wording, not for the gate.lib/billing.tspublicly promisesretentionDays: 7/90/365(lines 88/103/120) with no enforcement anywhere indrb-c2-core.BUSINESS_MODEL.md§5.7 mitigations #1 (EMS/medical exclusion) and #2 (name redaction) — which the document itself calls "the highest-leverage single mitigation in this entire document" and "cheap" — are not built.The real conflicts
Conflict 0 — the board's own record is corrupt. Issue #40, filed as the CTO draft, has a body byte-identical to #39 (CISO). The CTO's actual findings never reached the record. I am not going to rule on a missing document, so I verified the CTO's substantive claims against source myself before ruling:
drb-c2-core/app/routers/systems.py:107-129(PUT /{system_id}/ai-flags) writes asystems.ai_flagsoverride;drb-c2-core/app/routers/upload.py:270-284consumes it via_flag()with the semantics "global master off beats everything; system override defaults to inherit."require_admin_tokenmanual toggle with no link to org, plan, entitlement or billing. There is no code path by which paying for a county turns AI on, or non-payment turns it off.drb-c2-core/appforcost_usd|token_count|usage_meter|per_call_cost|billing_usage|input_tokens|prompt_tokensreturns zero hits. No per-call, per-system or per-org cost accounting exists.Consequence, and this is the single most important finding of the meeting:
BUSINESS_MODEL.md§0 line 5 ("Cost follows demand, not supply …feature_flags.pyalready supports per-system gating") is half true — the gate exists, the demand-linkage does not. And not one dollar figure in §4 has ever been checked against a real provider bill. §4.3's floor price of $49 and §3.4's "your cost is ~$70/node-month" are models resting on two assumptions the document's own §10 admits are unverified (node-002's real call volume; average recording length). We were one ruling away from publishing a price derived from a spreadsheet nobody has ever reconciled to an invoice.Conflict 1 — is §8's status table trustworthy? The COO reads §8 as the gate list and finds 7 of 10 items have no issue and no
DEFERRED.mdentry. The CISO reads §8 item 1 ("Tenant boundary … Not started") and correctly says the code side has substantially landed. Both are right, which means the table is stale in both directions: it understates progress on item 1 (tenancy code landed) and overstates remaining risk on item 5 (Gemini model IDs already migrated —config.py:47-48, closed via #14). Ruled: §8's "Status" column is struck. Gitea is the status board; a prose table inside a strategy doc is not. The list of ten gates survives; its status annotations do not.Conflict 2 — how hard is the gate, and a gate on what exactly? COO: don't ratify §7's dates. CMO: don't put a price on the site. CISO: hard gate on charging card #1. Those are three different gates being described as one. Ruled: there are two gates, A and B, and they are separate. See Decisions 4 and 5.
Conflict 3 — friends and family collide with the free tier, and the document does not resolve it. The CMO is right and this is not a small point: today's free tier is full-featured and live, while §3.2's "Public" tier is $0, ≥30 min delayed, no audio, no transcripts, no names. Those are two different products wearing one price. If friends and family keep the live full-featured version for free while a Founding Operator pays $49/mo for it, there is no conversion pressure and the delay/redaction mitigation is decorative because it only ever covers strangers. This changes what the product is for people already using it, so it is an owner question, not mine — see Open. What I can rule, and do, is that Decision 6 (redaction + disclaimer) applies to every surface including free, which de-risks the collision whichever way the owner rules and preempts nothing.
Conflict 4 — the beachhead. The CMO explicitly refuses to let the tow/collision beachhead be adopted by default silence, noting the owner did not recognise it when raised. Correct call. Not ruled here — see Open item 1.
Decisions
1.
BUSINESS_MODEL.mdis RATIFIED IN STRUCTURE, with named amendments. It is not killed and it is not ratified as written.Binding as of today: §0 (except line 6), §1's segment ranking method, §2 in full (the participation mechanic), §3.1 anchors, §3.2 tier structure, §3.3's reasoning, §4.3's floor-price discipline, §5's legal position and §5.7's mitigation ordering, and §8's gate list.
Owner: CEO. Date: 2026-08-23, effective immediately.
Cost: we lock in a model whose unit economics have never been reconciled to a bill. Mitigated by Decision 5's B5, which forbids acting on the numbers until they are.
2. Ratified as binding operating discipline, not to be relaxed without a new board sitting:
Owner: CMO (positioning), CTO (enforceability). Date: binding now.
3. §1's segment #7 (real-estate / neighbourhood-safety) is RATIFIED AS DECLINED — closed, not open for revisit without a new written legal opinion. CISO concurred; I am making it a closed question so it stops consuming meeting time.
Owner: CEO. Date: 2026-08-23.
Cost: the largest consumer TAM on the list. Given up deliberately — it is also where every defamation and harassment vector concentrates.
4. GATE A — "PUBLISH". No price, tier name, or entitlement from §3 goes on any public surface until all three hold.
Owner: CMO, with CTO for implementation. Date: 2026-09-13.
Further, and overruling the CMO in part (see Dissent): the invented
$0/$79/customplaceholder inlib/billing.tsdoes not survive with a footnote. It comes off the public site, replaced by "Pricing in development — contact us", because §3.1 of the document we just ratified already declares it superseded. A fabricated price with a disclaimer below the fold is worse than no price: it sets a false anchor, and it is exactly what a plaintiff's exhibit looks like.Cost: we lose the inbound self-serve pricing path. This costs nothing real — billing is a stub (#3;
ADMIN_BILLING_AUDIT.md§2:createCheckoutSessionalways throws), so that path converts nobody today.5. GATE B — "CHARGE". No card is charged, no invoice issued, and no Founding Operator slot is sold until ALL EIGHT hold. A checklist, not a judgement call.
firestore.rulesandfirestore.indexes.jsondeployed to prod, deployed ruleset ID recorded in the issue/adminreads org-scoped (routers/users.py:57-70)lib/billing.tsand the FAQOwner of the gate as a whole: CEO. Date: B2–B5 by 2026-09-30. B1, B6, B7 and B8 are owner-blocked and get dates when the owner answers (see Open).
Cost: first revenue moves out by at least the B5 measurement window plus the time to build metering that does not exist. That is weeks, and it is the correct trade — §4's entire cost model is currently unfalsifiable.
6. Two live-site risks are fixed independently of pricing, on the Gate A date, because they are live to any self-serve signup right now. AI transcripts and summaries are presented as reading "like a dispatch briefing" with no "machine-generated, unverified" label anywhere, and no name redaction on public surfaces. Account creation works today (
/login→/signup→ realcreateUserWithEmailAndPassword), so a stranger can reach un-mitigated AI assertions naming private individuals, including EMS calls, in two clicks. This is the most dangerous thing the board found that is live rather than planned.Owner: CTO. Date: 2026-09-13.
7. §7's go-to-market sequence is NOT ratified and its clock does not start today. The COO's capacity objection is upheld: §7 assumes cold-call sales, trial hand-holding, node-operator recruiting and shipping B1–B2 run concurrently, from one person who is also support, on-call and the only committer. Four workstreams, one person, no owner column. §7 becomes schedulable when the owner answers the beachhead question and §9 Q8, and Gate A is closed.
Owner: COO, to re-plan once unblocked. Date: not set — deliberately. A date on a blocked sequence is theatre.
8. §8's "Status" and "Owner" columns are struck as unreliable (Conflict 1). As a tracking artefact the §8 list is replaced by Gate B above plus the Gitea issues named in it. Several §8 items are assigned to "Build" that are in fact owner-only and unbuildable by any agent (#3 ToS, #4 entity/insurance, #6 accuracy sampling, #8 delay policy, #10 takedown contact).
Owner: CEO, enacted this session.
9. §9's recommended defaults are adopted as build defaults where they cost nothing and fail safe: Q1 B2B only for 18 months; Q2 exclude EMS/medical by default; Q3 do not publish person names; Q6 honour agency opt-outs proactively and publicly; Q9 credit never cash. Q4 (insurance spend), Q5 (existing agency contact), Q7 (scale ambition) and Q8 (walk-ins) are not adopted by default — they are money, fact, or a change to what the product is. See Open.
Owner: CTO for Q1/Q2/Q3/Q6 as defaults in code. Date: Q2 and Q3 ride B3 (2026-09-30).
What we gave up
$0/$79/customdown removes a conversion surface that converts nobody today — the loss is notional but it is real optics.Dissent
Drafts
#38 COO · #39 CISO · #40 CTO (duplicate body — see Conflict 0) · #41 CMO
Follow-up issues filed
Existing issues were commented on rather than duplicated: #13 (rules undeployed → B1), #4 (
/adminscoping → B2), #3 (billing mock data → Gate A), #9 (org-owner writes), #33 (index drift → B1), #35 (correlation degraded).New issues are listed in the first comment on this issue, once numbers are assigned.
Open — needs the owner
Nothing left unstruck below has been decided or defaulted. Each is money spent, a fact only the owner holds, or a change to what the product is.
The beachhead: tow / collision / restoration / auto-glass operators in Westchester — yes or no, on the record.→ ANSWERED 2026-08-23 — "no real direction but sure tow is fine". Adopted as a hypothesis with a kill criterion (12 qualifying conversations; fewer than 4 trial acceptances kills it; fewer than 2 paid after Gate B kills it), not as ratified strategy. §0 line 6, §1's #1 pick, §3.4 and §7 are unfrozen but stamped provisional — beachhead untested. Owner conviction: low, on the record.Friends and family: which tier?→ ANSWERED 2026-08-23 — "Keep them full-featured". A comped tier, distinct from §3.2 Public, which stays the delayed/redacted public free tier. Uncapped AI spend on non-payers is the accepted cost and cannot be capped until #45 exists. Founding-agenda item 4 is closed by this.Is $2–5k/yr for media liability / E&O approved before the first invoice?→ ANSWERED 2026-08-23 — "assume it will happen but get to product mvp, feedback, then go for company things": no pre-revenue spend. Gate B7 closes as a recorded "not yet", and its pre-agreed consequences bind: names suppressed by default on every surface, paid included (this widens B3 and Gate A A3), and Data/OEM stays dead. Suppression is a display layer, never deletion.Lifestyle/bootstrapped ($5–20k MRR) or venture-scale?→ ANSWERED 2026-08-23, delegated to the board and ruled: lifestyle / bootstrapped, confirmed. One operator plus AI agents; no multi-state coverage, node-supply operation or sales function exists or is planned. §1 and §3's ratification no longer rests on an assumption.Follow-up issues filed (enacting these minutes)
New:
lib/billing.ts, enforced nowhere (CTO, 2026-09-30)Commented rather than duplicated (existing issues promoted into a gate): #13 (B1), #4 (B2), #3, #9, #33, #35.
Enacted this session
BUSINESS_MODEL.md- stamped "Ratified in structure by board minutes #42, 2026-08-23", §8 status/owner columns struck per Decision 8, §0 line 6 and §3.4 flagged unratified pending the owner..claude/skills/board/SKILL.md- founding-agenda item 1 struck through, pointing here.CLAUDE.md- project-docs status row forBUSINESS_MODEL.mdupdated.Server/drb-frontend/lib/billing.ts- the comment claiming the invented plan catalog is "real UI copy (safe to ship)" corrected; it is the exact line that would mislead the next contributor into shipping it. The catalog itself is #46's work.DEFERRED.md- Gate A / Gate B recorded so it cannot drift from the issues.This issue stays open until Gates A and B are closed or re-filed as tracked work.
Owner rulings, 2026-08-23
The owner answered four of the ten Open - needs the owner items. Below is each answer verbatim plus the chair's ruling, so a later meeting can see the conviction level behind each. The Open section of this issue has been amended: these four are struck, six remain visible.
1. Beachhead (Open item 1) - ADOPTED AS A HYPOTHESIS, NOT AS RATIFIED STRATEGY
Ruling. Tow / collision / restoration / auto-glass in Westchester is adopted as the working beachhead with a kill criterion. It is not ratified strategy. Owner conviction is low and that is deliberately on the record - "sure, fine" is not a conviction and nobody should later cite this as one.
Consequently section 0 line 6, section 1's #1 pick, section 3.4 and section 7 are UNFROZEN - they may be planned and built against - but each is stamped "provisional - beachhead untested". Section 1's ranking is a hypothesis order, not a finding.
Kill criterion - deliberately small enough for one person to actually do:
Failing either stage kills the beachhead and re-ranks section 1 to segment #2 (private security / campus / hospital safety) without another board sitting. Passing stage 1 does not ratify section 7's dates - Decision 7 of these minutes stands.
Stage 1 gets no start date until Gate A closes (#46): walking into 12 businesses while the public site still shows an invented price is worse than not walking in.
Owner: CMO builds and runs the list; CEO calls the kill.
Cost: we spend the next planning cycle building toward a segment nobody has validated, on the strength of a shrug. Exposure is bounded to 12 conversations by the criterion above.
2. Friends and family (Open item 2) - COMPED TIER, FULL FEATURED
Ruling. Friends and family become a comped tier, distinct from section 3.2 "Public". They keep today's product: live, undelayed, full-featured. Section 3.2 Public ($0 / no account / >=30 min delay / no audio / no transcripts / no names) remains the public, unauthenticated free tier. Two different tiers with two different purposes, and section 3.2 is amended to say so rather than continuing to describe two products at one price.
One carve-out: name suppression (ruling 3) applies to the comped tier too. It is a platform-wide policy layer, not a tier entitlement, so "full-featured" does not mean "named".
Conflict 3 of these minutes is resolved in the owner's direction. The conversion-pressure objection is accepted as a known cost, not fixed: a friend on the live full product for $0 will sit beside a Founding Operator paying $49/mo for the same thing.
Consequence, raised by both the COO and the CTO: a comped tier is uncapped AI spend on non-paying accounts, and it cannot be capped - or even measured - until per-org cost attribution exists (#45). That dependency is now filed as its own issue rather than left in prose.
Owner: CEO for the tier definition, CTO for the entitlement flag and the eventual cap.
Cost: zero conversion pressure on exactly the people most likely to give honest feedback, plus an unmetered cost line that grows with generosity. Accepted knowingly.
3. E&O insurance (Open item 3 / Gate B7) - NO PRE-REVENUE SPEND
Ruling. No E&O spend before revenue. Gate B7 is SATISFIED as a recorded decision - the recorded answer is "not yet, revisit at company formation" - and the consequences pre-agreed in B7 and section 9 Q4 bind immediately:
intelligence.pykeeps extracting and storing entities; the render, export and API paths suppress them. Building this as data deletion would turn a reversible decision into an irreversible one, and this decision is explicitly meant to be reversed the day a policy is bound. Binding implementation constraint on #43.Gate B interaction, stated explicitly because the question was asked: this TIGHTENS the gate, it does not loosen it.
Revisit trigger: company formation (Open item 4, still open).
Owner: CTO for suppression-by-default; the owner for the policy at company formation.
Cost: the product is materially less useful than it could be. "Who was on scene" is a real part of the value and we are turning it off for everyone, including people who pay. That is the correct trade against an uninsured defamation claim, and it is the second time this board has chosen to be less useful rather than uninsured.
4. Scale (Open item 5) - LIFESTYLE, CONFIRMED
The owner delegated this to the board, so the board rules it. Lifestyle / bootstrapped, confirmed. Section 9 Q7's assumed default is now a decision.
Reasoning, recorded so a later meeting can check it rather than re-derive it: venture scale would require multi-state coverage, a node-supply operation and a sales function. None of the three exists and none is planned, and one operator plus AI agents does not produce them. Per-county pricing, a single-county beachhead and the $49 floor are the right shape for a lifestyle business and the wrong shape for a venture one.
Therefore section 1 and section 3's ratification (Decision 1) stands as filed - it no longer rests on an unconfirmed assumption, which is the whole reason this was flagged.
"Mainly AI-driven" is an operating model, not a scale ambition, and does not change the ruling. It does raise the stakes on #45: in an AI-driven one-person business the AI bill is the cost structure, so the absence of per-call cost accounting is the single largest unknown in the company.
Owner: CEO. Settled 2026-08-23.
Cost: segment 6 (insurance / risk analysts) and any national play are off the table for the foreseeable future. Any future decision to raise money re-opens sections 1 and 3 in full.
Enacted this session
BUSINESS_MODEL.md- stamp updated to point here; section 0 line 6 / section 1 / section 3.4 unfrozen as provisional with the kill criterion inline; section 3.2 split into Public vs Comped; names-suppressed-until-E&O recorded in section 5.7 and section 9 Q3/Q4; section 9 Q7 recorded as decided - lifestyle..claude/skills/board/SKILL.md- founding-agenda items 4 (free tier) and 5 (beachhead) struck, pointing here. Items 2 (credential rotation) and 3 (sellable milestone) remain the standing queue.CLAUDE.md-BUSINESS_MODEL.mdstatus row updated.Cross-reference: the weekly dev-progress cadence and the new non-officer
project-leadrole were ruled on separately in #53 (Board 2026-08-23 — Operating cadence — FINAL MINUTES). Filed as its own minutes rather than an addendum here becausesprint-startanchors the 7-day cadence check to the date of the newestminutes:final.Closing per #146 D8 (2026-09-13): a
minutes:finalissue is not a tracker. The record of a ratified decision is the stamp on the document; live work is tracked by its own work issue. Six minutes:final issues had been open 8-21 days with unexecuted decisions inside them and nobody looking.BUSINESS_MODEL.md is ratified in structure and the file carries the stamp — that stamp is the record, not this issue. Live items moved on: #43 (E&O / name suppression, Gate A), #50 (comped-tier AI spend, blocked on #45), #67 (credential rotation, founding-agenda item 2, standing header item). Gate A and Gate B stand unchanged.