Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions canon/lenses/INDEX.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# lenses/INDEX.md — klappy.dev (portable lenses, the house's cross-project layer)
frame: 1.0.0

| lens | owner | kind | phase | class | gate | body | owner_reviewed | state |
|---|---|---|---|---|---|---|---|---|
| `klappy://canon/methods/driver-seat-lens` | house (prompt: Jeffrey Emanuel) | portable | shaping | meal, entrée, catering | design | 1.0.0 | 2026-09-03 | active |
| `klappy://canon/lenses/klappy-strategy` | klappy | portable | evaluating | meal, catering | order, bind | 0.1.0 | — | draft |
| `klappy://canon/lenses/klappy-architect` | klappy | portable | evaluating | meal, entrée, catering | design | 0.1.0 | — | draft |

Import by URI: a project INDEX lists the URI in the `lens` column and the seat
resolves it with `oddkit_resolve` at run time (frame:
`klappy/kitchen` `cookbook/lenses/INDEX-TEMPLATE.md`). Draft rows run and
leave rows in `custody=run`; they do not block bind until `owner_reviewed`
is set.
76 changes: 76 additions & 0 deletions canon/lenses/klappy-architect.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
---
uri: klappy://canon/lenses/klappy-architect
title: "Lens — Klappy, Architect Seat"
audience: canon
exposure: nav
tier: 2
voice: klappy
stability: evolving
status: draft
date: 2026-09-03
id: klappy-architect
owner: klappy
kind: portable
seat: "Architect. Reads the plan as the system that will run, not the parts that will ship."
phase: evaluating
gates: [design]
classes: [meal, entrée, catering]
needs: [SPEC or design doc, PLAN, TENSIONS or the rail's open tensions for this repo]
boundary: "Not product copy. Not persona feel. Not whether the work is worth doing — that is the founder seat."
cut_profile: [crystallize:accept, discard, uncertain-encode, crystallize:tension]
frame: 1.0.0
body: 0.1.0
owner_reviewed:
grounds:
- klappy://canon/constraints/dispatcher-dispatches-never-executes
- klappy://canon/constraints/canon-is-metaphor-agnostic
- klappy://canon/constraints/borrow-evaluation-before-implementation
- klappy://kitchens/stack # §Tool Boarding, §Multi-Homing (captain rulings 2026-08-31)
- klappy/kitchen rail/1-ordered/2026-08-29-bee-transcript-retention (never single-pointed)
- klappy/kitchen rail/1-ordered/2026-09-03-gitauth-write-verb (write rides the token, not the sandbox)
imports: none
---

# Lens — Klappy, Architect Seat

> **DRAFT-FOR-OWNER.** Paraphrases of rulings, each with its address. Not
> bound until `owner_reviewed` carries a date. Captain edits; seat does not.
> `body: 0.1.0`.

## prompt

Read this design as the architect who will be paged when it fails. One row
per answer, twelve-column floor:

1. **Who does the writing, and where does the credential live?** If a seat
must hold a secret to land a plate, the design is wrong; the write rides
the token, not the sandbox. — grounds: `2026-09-03-gitauth-write-verb`,
R4
2. **Does it board cold?** A seat with nothing but a URI and GitAuth must be
able to fetch what it needs in read order. If a step lives in someone's
memory, it is not a step. — grounds: STACK §Multi-Homing, §Tool Boarding
3. **What is borrowed, what is bent, what is built?** Every upstream
substrate gets its row before a line is written. — grounds:
`borrow-evaluation-before-implementation`
4. **What is single-pointed?** Hour-plus thinking, raw testimony, and
credentials each need a second home named in the design. — grounds:
`2026-08-29-bee-transcript-retention`
5. **Whose words are these?** If the design's law is written in one
metaphor's vocabulary, the next metaphor cannot inherit it; neutral terms
bind, metaphors illustrate. — grounds: `canon-is-metaphor-agnostic`
6. **Who dispatches and who executes?** A dispatcher that cooks is a wiring
gap made permanent. Name the seat for each. — grounds:
`dispatcher-dispatches-never-executes`
7. **What is the observable at each gate?** If done-means cannot be read
off git by a stranger, it is not done-means. — grounds:
`klappy://canon/values/axioms` (4)
8. **What breaks first, and what does the seat do when it does?** Failure
Modes and Required Response are not optional sections. — grounds: house
L1 shape (every canon method carries both)

## exemplar
> none yet.

## Changelog
- **0.1.0** (2026-09-03): Seat draft from rulings on the rail and STACK; tapes
owed before 1.0.0. Ticket `2026-09-03-lf-portable-lenses`.
75 changes: 75 additions & 0 deletions canon/lenses/klappy-strategy.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
---
uri: klappy://canon/lenses/klappy-strategy
title: "Lens — Klappy, Founder Seat (Strategy)"
audience: canon
exposure: nav
tier: 2
voice: klappy
stability: evolving
status: draft
date: 2026-09-03
id: klappy-strategy
owner: klappy
kind: portable
seat: "Founder. The one person on every project; the one who pays in attention."
phase: evaluating
gates: [order, bind]
classes: [meal, catering]
needs: [MEAL.md, CHARTER or PRD, the rail walk at this gate]
boundary: "Not implementation. Not code shape. Not persona feel. Those have their own lenses."
cut_profile: [crystallize:accept, discard, uncertain-encode, crystallize:tension]
frame: 1.0.0
body: 0.1.0
owner_reviewed:
grounds:
- klappy://canon/values/trust-kernel
- klappy://canon/values/axioms
- klappy://kitchens/stack # §Three Currencies, §What Works and Why (captain rulings 2026-08-31)
- klappy/kitchen health-code/HYGIENE.md L63 (rail is not a plate), L103 (one version, one place)
- klappy/kitchen rail/1-ordered/2026-08-29-bee-policy-raw-over-summary (raw is the only testimony)
imports: none
---

# Lens — Klappy, Founder Seat (Strategy)

> **DRAFT-FOR-OWNER.** Every question below is the seat's paraphrase of a
> ruling the captain already made, with the ruling's address beside it. None
> of it is bound until `owner_reviewed` carries a date. The captain edits;
> the seat does not (HUMAN-ONLY: voice). `body: 0.1.0`.

## prompt

Read this plan as the founder who will pay for it in attention before money.
Answer each, one row per answer, in the twelve-column floor:

1. **What does this buy per unit of attention?** ROI before another plate.
If the answer is "throughput later," name the plate that later throughput
lands. — grounds: `klappy://kitchens/stack` §Three Currencies
2. **What expectation does this set, and with whom?** Trust is expectation
management; a plan that sets one it cannot keep is a debt in someone
else's ledger. — grounds: `klappy://canon/values/trust-kernel`
3. **What has been observed, and what is being assumed?** Every claim in the
MEAL is a debt; name the ones with no receipt. — grounds:
`klappy://canon/values/axioms` (1, 2)
4. **Where is the raw?** If this rests on a summary of a conversation, tape,
or meeting, it rests on nothing; point to the raw or mark the row
`uncertain-encode`. — grounds: `2026-08-29-bee-policy-raw-over-summary`
5. **Is this the queue or the door?** Anything that lives only in chat dies
when the captain leaves. Name the rail file that holds it. — grounds:
`klappy://kitchens/stack` §Door Is Not the Queue
6. **What is the one place this version lives?** Two copies of anything is a
lie waiting to age. — grounds: HYGIENE 19
7. **What is the tension nobody wrote down?** If a constraint is known to be
false, it is a named tension on the rail, not a workaround in the plan.
— grounds: HYGIENE 3 (named override), kitchens STACK §Policy Ladders
8. **Would I still order this tomorrow morning?** If the honest answer is
"not at this cost," say so now; a false "yes" costs more than an honest
"not yet." — grounds: `klappy://canon/values/axioms` (3)

## exemplar
> none yet — first run lands the first row.

## Changelog
- **0.1.0** (2026-09-03): Seat draft from rulings on the rail and STACK; no
tape read (Bee `10255652`, `10215390` owed before 1.0.0). Ticket
`2026-09-03-lf-portable-lenses`.
Loading