Skip to content

v0.11.0 — Two instruments, one row, and a number nobody could see was wrong

Latest

Choose a tag to compare

@github-actions github-actions released this 01 Sep 07:40

Highlights

Two instruments that shared an id — or carried no id at all — became one row, and the
percentages were computed from both.
Ids come out of your documents, so two SAFEs from the same
investor, or two notes an extraction left unlabelled, could collide. When they did, the detail
section showed one instrument, the totals counted two, and nothing said so. Measured on a real
pair of convertible notes, the report claimed 720,000 shares where the true figure was 1,120,000,
described itself as complete, and raised no warning. Colliding and blank ids are now refused with
an explanation naming which entry to fix, and the per-instrument results are a list rather than a
lookup keyed on those ids — so a row cannot be lost even if a future check misses something.

Ownership percentages on a cap-implied SAFE snapshot were computed against a denominator that
left out the SAFEs doing the converting.
A SAFE that converts is part of what it converts into.
Leaving them out overstated every holder's share.

Anti-dilution protection could increase your dilution. The broad-based weighted-average
calculation applied a floor that, in some rounds, produced a worse conversion price than no
protection at all.

A report can no longer be built from figures that describe two different cap tables. If the
instrument list has been updated but the cap-table snapshot has not, the run now stops before the
arithmetic instead of computing numbers from a mismatched pair and warning about the result
afterwards. A warning that arrives after the report is a warning about a report you already have.

Instructions that named things you could not find have been fixed. A blocker told you to
author a scenario with "parameters pre money / new money" — two names that exist nowhere.
The report's text policy, which rewrites our internal vocabulary into plain English, was rewriting
these names inside the backticks marking them as literal. Names in backticks are now left exactly
as written, everywhere they appear in a cap-table report or counsel packet.

A counsel note could name a law that does not exist. When the cap-table review flagged a
question for your attorney, the summary sometimes supplied the full name of a tax statute — and
invented it. Three different wrong names for the same Act appeared across our test runs, one of them
in a delivered report, inside a paragraph that correctly told you to consult counsel. The cause was
that the step writing that summary was asked to cite sources it had never been given: it received
rule identifiers and no rule text, so the only way to comply was to supply wording from memory. It
now receives the actual wording, and is told to leave an abbreviation unexpanded rather than guess
at it — and never to state an issuance date you did not provide.

The coverage note in a cap-table report could contradict the check it was reporting on. On a
deal combining a convertible note with a share acquisition, the check recorded that the deal was
outside what the calculator covers, and the note beside it asserted the opposite. The note now
reads the check, names which part of the deal is uncovered, and says plainly when figures were
computed by hand rather than by the calculator.

Added

  • A quick cap-table answer is now delivered as its own short document, rather than being produced
    and then discarded before you saw it.
  • Warnings the solver raises now reach every surface that shows results, not just one of them.
  • The counsel packet and the interactive explorer now carry the same source-document
    reconciliation and warning detail the main report does.

Changed

  • The "how it converted" column in a cap-table report now reads as a sentence — "Cap and discount
    both applied — whichever gave more shares" — instead of an internal code with the underscores
    taken out.
  • Anti-dilution, conversion and charter terms are written for a lawyer to read: no field names,
    no internal codes, and sentences that survive being pasted into an email.
  • The interactive report no longer hides a figure's raw value behind a hover — the number and its
    label are both on the page.
  • A run that refuses its input leaves your previous report untouched. Refusing and overwriting at
    the same time destroyed the only good copy.

Fixed

  • A question the cap-table skill asks early on — your company name, sector and location — could
    fail to appear at all when it had nothing to suggest, because it was left with a single choice
    and a question needs at least two. It now always offers a way to say "not sure", so the question
    appears and you can move on without inventing an answer.
  • The short answer from a quick cap-table question named two internal fields where it should have
    used plain English — it reported a "stale current_conversion_price" and a solver that "did not
    converge within max_iterations". It now reads the way the full report does. The quick answer was
    the one document that had never been checked for this.
  • A convertible note excluded from a calculation was reported as excluded for the wrong reason,
    sending you to check a term that was not the problem.
  • A note whose maturity terms were absent was treated as a note whose maturity terms were zero.
  • A remedy told you to re-run through a route that re-enters the very path that dropped your note.
  • Preferred series sharing a name were merged into one, reporting founder ownership as 80.0%
    where the truth was 72.7%, and reporting both an addition and a replacement against a file that
    held neither.
  • A cap-table question asked without a document produced a raw error trace instead of an answer.
  • Two skills quoted internal file paths in messages meant for you.
  • A step that located your uploaded files by a relative path stopped finding them when the
    workspace layout moved.