Skip to content

docs(decisions): draft ADR 0005 — options, with the verdict line unsigned (#637) - #764

Merged
eaitbrahim merged 1 commit into
mainfrom
docs-adr-0005-options
Sep 8, 2026
Merged

docs(decisions): draft ADR 0005 — options, with the verdict line unsigned (#637)#764
eaitbrahim merged 1 commit into
mainfrom
docs-adr-0005-options

Conversation

@eaitbrahim

Copy link
Copy Markdown
Contributor

Drafts #637's record. The verdict line is unsigned — signing is striking one option, keeping the other, and setting Status. Nothing else needs editing.

#637's sequencing is satisfied: #370 landed the equities path, and #636's discovery closed with its findings in #753. The record is due.

Why I didn't write the verdict

An ADR is a standing rule, and this one turns on whether a cash-secured option is admissible — gharar, the character of the premium, whether full collateralisation changes the contract. Constitution line 5 ("every attestation is human-sourced, or refused") means no amount of documentation reading settles that, and a machine drafting the verdict would be the exact failure that line names.

The record says so in its own section rather than leaving the omission to be noticed.

Three findings decide the near term without reaching that question

Which is why option A is drafted as "not now, on operational grounds, question expressly not reached" — so signing it commits the project to no jurisprudential position it hasn't taken.

  • F7 — the capital floor. A cash-secured put is collateralised at strike × 100, unfractionalisable: $1,800 for the cheapest plausible underlying against config.live.yaml's budget_usd: 50. ~36× the deployment's clip — no compliant position is executable at this size, whatever anyone concludes about permissibility.
  • F5 — rail 19 is the charter. It vetoes an OCC symbol in every mode including paper, deliberately outside LIVE_STATE_RAILS, so there is no rehearsal path. Its own comment: "Spot-only is this agent's CHARTER, not an operator preference."
  • F1 — the venue posture is undocumented, and the downside is asymmetric. Whether options approval survives max_margin_multiplier: 1 is stated nowhere. If it doesn't, verify_cash_account stops the adapter building — breaking the equities path that already ships.

F3 is flagged as deserving argument rather than triage: the venue auto-exercises, liquidates within an hour of expiry when buying power is short, and reports assignment by polling only. That's a different relationship to inventory than keel has accepted anywhere.

Reopening triggers

Four, in ADR 0002's style, each a fact rather than a feeling. 1–3 are necessary together — deployment size, F1 answered on a live account (where a "no" closes it permanently, not provisionally), and the permissibility question answered by a human with sources.

Checks

Every citation verified against this tree — adapter.py:262, guards.py:905, config.live.yaml:82, and the research document. A script asserts every relative link in the record resolves: an ADR citing a path that moved is worse than one citing nothing, because it reads as verified.

6,424 passed / 3 skipped.

🤖 Generated with Claude Code

https://claude.ai/code/session_01KZZxmspQXe5qJ9FAsG13s6

…igned (#637)

#637's sequencing is satisfied: #370 landed the equities path and #636's
discovery closed with its findings recorded in #753. So the record is due, and
this drafts it up to -- and deliberately not past -- the decision.

THE VERDICT IS UNSIGNED, AND THAT IS THE POINT

Both candidate verdicts are written out in full. Signing is striking one, keeping
the other, and setting Status. Nothing else in the file needs editing.

An ADR is a standing rule; this one turns on whether a cash-secured option is
admissible, which is a fiqh-methodology question about gharar and the character
of a fully collateralised contract. Constitution line 5 -- every attestation is
human-sourced, or refused -- means no amount of documentation reading settles it,
and a machine drafting the verdict would be exactly the failure that line names.
The record says so in its own section rather than leaving the omission to be
noticed.

THREE FINDINGS DECIDE THE NEAR TERM WITHOUT REACHING THAT QUESTION

Which is why option A is drafted as "not now, on operational grounds, question
expressly not reached" -- so signing it commits the project to no jurisprudential
position it has not taken.

  F7  a cash-secured put is collateralised at strike x 100, unfractionalisable:
      $1,800 for the cheapest plausible underlying against config.live.yaml's
      budget_usd: 50. About 36x the deployment's clip, so no compliant position
      is executable at this size whatever anyone concludes about permissibility.
  F5  rail 19 vetoes an OCC symbol in EVERY mode including paper, deliberately
      outside LIVE_STATE_RAILS -- so there is no rehearsal path, and its own
      comment calls spot-only "this agent's CHARTER, not an operator preference".
  F1  whether options approval survives max_margin_multiplier: 1 is documented
      nowhere, and if it does not, `verify_cash_account` stops the adapter
      building -- breaking the EQUITIES path that already ships.

F3 is flagged as the one deserving argument rather than triage: the venue
auto-exercises, liquidates within an hour of expiry when buying power is short,
and reports assignment by polling only. That is a different relationship to
inventory than keel has accepted anywhere.

Four reopening triggers in ADR 0002's style, each a fact rather than a feeling,
and 1-3 necessary together -- deployment size, F1 answered on a live account
(where a "no" closes it permanently rather than provisionally), and the
permissibility question answered by a human with sources.

Every citation checked against this tree: adapter.py:262, guards.py:905,
config.live.yaml:82, and the research document. A script asserts every relative
link in the record resolves -- an ADR citing a path that moved is worse than one
citing nothing, because it reads as verified.

6,424 passed / 3 skipped.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KZZxmspQXe5qJ9FAsG13s6
@eaitbrahim
eaitbrahim merged commit 44fe582 into main Sep 8, 2026
1 check passed
@eaitbrahim
eaitbrahim deleted the docs-adr-0005-options branch September 8, 2026 22:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant