My spidey sense went off when I noticed that among foundational OPs there are jumps.
Would it not be prudent to ensure that the language is NOT Turing-complete ?
That can be done if jumps are restricted, otherwise script interpretation can be non-terminating, etc.
Scripts are terminating in that they run for a fixed number of instructions.
Albert says: Maybe I'm too picky, but the fund script might be abused for functionality. abusing specs: "fund 1 XRP to do x fund 2 XRP to do Y". etc.
Why you do want a bond contact
The purpose of the bond contact would be to resell it. In the current financial would, the secondary market for bonds is immense.
You need to be able to change the receiver of the Issuer's funds, without modifying the rest of the contract.
In the event of default of the Issuer, typically a company is liquidated and the proceeds are returned to the creditors (bond holders) according to the bond seniority and the amount of outstanding debt in that level of seniority (pari passu).
Bond seniority is another reason you need a contract. The issuer should not issue bonds more senior to the existing bonds without approval of the majority of existing bond holders, since much of the value of a distressed bond comes from the Issuer's liquidation value.
Bwilson recently added links to define "assurance contracts". First, this was done twice, usually definition links are only used on the first mention. Second, rather than linking to http://www.ariannasimpson.com/game-theory-assurance-contracts/, which is an article about the topic, wouldn't it be better to link to a where a definition is given, like https://en.wikipedia.org/wiki/Assurance_contracts? The former does mention Bitcoin and so possibly covers things from a crypto-currency perspective (I haven't read it yet) but still doesn't seem like the best link to use to define a term.