UBELL · 문장 규칙표 v1

정의는 하나의 별 아래 줄을 선다
— 빈 화면은 0을 보고하지 않는다

2026-08-07의뢰: 오퍼스(감독)작성: 페이블(디자인) 목업 아님 — 규칙 문서
이 규칙표가 존재하는 이유 — 실측. 로그인한 적 있는 계정 8(최근 7일 3) · 골목 발걸음 0 · 진짜 가게 0곳(좌판 10곳 전부 시연) · 대화 실사용 0 · 기도 요청 3 · 말씀카드 1. 우벨에서 가장 자주 보이는 화면은 빈 화면이다. 그래서 빈 상태 카피는 장식이 아니라 제품의 첫인상이고, 기준 없이 화면마다 새로 지으면 안 된다.
A

다섯 질문의 답

1정의 일곱의 위계는?

북극성은 하나 — “내 조직이 나를 아는 앱.” 그 아래 문(門)의 문장 셋: 통증(단톡방은 누가 읽었는지 알려주지 않습니다) · 경계(겉은 동네, 속은 공동체) · 값(우벨이 파는 것은 전원이다). 나머지는 전부 화면의 문장이다 — 사랑방·홈·골목·성소.

죽인 것: “문은 셋, 몸은 하나.” 경계 문장과 같은 말을 숫자로 다시 하는 문장이고, 숫자를 품은 정의는 구조가 바뀌는 순간 거짓이 된다(“네 번째 정문을 짓지 않는다”는 논의가 이미 한 번 있었다). 소개 페이지의 서사 문단으로 강등 — 앞으로 제품 정의로 인용 금지.

2빈 상태의 문법 한 줄은?

빈 화면은 0을 보고하지 않는다 — 보는 사람이 지금 할 수 있는 다음 한 걸음이 있으면 그 하나만 내밀고, 없으면 비어 있음이 정상임을 한 줄로 말하고 물러난다.

“지표를 감추고 순서를 내민다”(개통 카드)와 “조용한 날도 좋은 날”(홈)은 싸우는 전략이 아니라 화면의 주어가 다른 것이다. 가르는 질문은 하나: 이 비어 있음을 채울 손이 보는 사람의 손인가? 그렇다 → 순서를 내민다. 아니다 → 안심시키고 물러난다. B·C절에 공식으로 푼다.

30을 어떻게 다루나?

기본은 ①숨긴다. 관계를 세는 숫자(발걸음·단골·읽음·함께)의 0은 정보가 아니라 실패의 그림이다 — 그리지 않는다. 행위자 화면은 ②다른 것을 센다 — 없는 결과 대신 남은 순서를(“3단계 중 1”). 공동체 표면은 ③혼자여도 성립하는 문장으로 바꾼다.

성소 판정: ‘함께’를 세는 숫자는 2부터만 숫자다. “함께 불을 밝히는 0명”은 함께가 없음을 큰 글씨로 증명하는 문장이다. n<2이면 그 절을 통째로 지우고 “직분은 여기서 지워집니다”만 남긴다 — 이 문장은 혼자여도 참이다.

4말투의 경계 — 어디까지 따뜻함인가?

따뜻함은 사실에 붙은 온도다: 사실 한 줄이 먼저 오고, 정서는 반 줄로 뒤에 붙는다. 느끼함의 세 신호 — ①사실이 빠지고 정서만 남음 ②앱이 사용자의 감정을 대신 판정함 ③앱이 타인의 마음이나 행동을 대신 말함.

오늘 선을 넘은 실제 문장: 오늘 한마디를 걸어두면 지나는 이웃이 읽어요(MyShopCard.tsx — 발걸음 실측 0인데 타인의 행동을 현재형으로 약속) · 놓치지 않게 알려드려요(SarangbangInbox.tsx — 앱 밖의 사람에게는 지킬 수 없는 결과 보증). “조용한 날도 좋은 날이에요”는 선 위에 서 있다 — 홈 한 곳에서만 허용하고, 이 문형(“~한 날도 좋은 날”)의 복제는 금지한다.

5문장이 기능을 앞지르지 않게 하려면?

검사법 한 줄: “이 문장이 말하는 사건을 오늘 DB에서 한 행이라도 보여줄 수 있는가 — 없으면 아직 못 쓰는 문장이다.”

오늘의 사고 셋(“가는 중이에요” = 설계 문서의 말이 사실처럼 인용됨 · “주인에게 전해뒀어요” = 받을 사람이 앱 밖 · “차액은 교회가 채웁니다” = 승인 없는 돈 약속)의 공통점은 주어가 남이라는 것이다. 시스템이 지금 하는 일만 현재형을 쓸 수 있다. 타인의 행동·미래의 기능·돈은 E절의 금칙 문형이다.

B

정의의 위계도

북극성 — 제품이 무엇인가 · 모든 문장의 어버이
“내 조직이 나를 아는 앱”
로드맵 IDENTITY · 아래 모든 문장은 이 문장의 사례여야 한다
문(門)의 문장 — 왜 들어오고 · 어디까지 보이고 · 왜 내나
“단톡방은 누가 읽었는지 알려주지 않습니다”
통증의 문 · /org 정문 — 들어올 이유. 어휘 스킨이 필요 없는 유일한 통증 문장
“겉은 동네, 속은 공동체”
경계의 문 · 마당↔등불 · 비로그인 정문 — 무엇이 문 밖이고 무엇이 문 안인가
“우벨이 파는 것은 전원(全員)이다”
값의 문 · 과금 화면 — 돈이 나오는 모든 문장의 유일한 어버이
화면의 문장 — 한 화면이 자기 일을 설명하는 말 · 위에서 도출되어야 한다
“사랑방은 맞이의 방 — 말은 교회가 먼저 걸고, 성도의 말은 반드시 읽힌다”
사랑방 ← 북극성(‘나를 안다’= 먼저 말 건다)
“홈은 우편함이다 — 도착이 아니면 문이다”
/my 홈 ← 북극성
“골목이 이기는 축은 ‘누구에게서’다”
골목·장터 ← 경계의 문
“기도 앞에서 우리는 모두 무릎 꿇은 한 사람”
성소 ← 북극성(조직이 알아도, 여기선 직분을 지운다)
죽임
“문은 셋, 몸은 하나”
경계의 문과 같은 말을 숫자로 반복 — 숫자를 품은 정의는 구조가 바뀌면 거짓이 된다. /living-church-os의 서사 문단으로만 남고, 정의로 인용 금지.
도출 규칙. 새 화면의 문장은 반드시 위 네 문장(북극성 + 문 셋) 중 하나에서 나와야 한다. 어디서도 도출되지 않는 문장이 필요해 보이면, 그것은 문장이 아니라 제품이 갈라지고 있다는 신호다 — 짓지 말고 감독에게 올린다. 여덟 번째 정의는 이 표를 고친 다음에만 태어난다.
C

빈 상태 공식표

빈 상태 문법 · 한 줄
빈 화면은 0을 보고하지 않는다 — 다음 한 걸음이 보는 사람의 것이면 그 하나만 내밀고, 아니면 비어 있음이 정상임을 한 줄로 말하고 물러난다.

유형별 공식

유형판정 질문공식실제 예
① 받는 화면
홈 · 사랑방 목록
채울 손이 남의 손이다. 내가 할 일이 없다. [오늘의 사실 한 줄] · [비어 있음이 정상이라는 반 줄]
CTA 없음 · 숫자 없음
오늘 도착한 건 없어요 · 조용한 날도 좋은 날이에요 유지
② 행위자 화면
콘솔 · 소식 · 명부 · 개통 카드
채울 손이 보는 사람의 손이다. [없다는 사실] + [하나 하면] → [무엇이 달라지나]
지표를 감추고 순서를 내민다
아직 보낸 광고가 없습니다. 위에서 하나 보내면, 읽은 사람과 못 읽은 사람이 여기 쌓입니다. 모범
③ 기다리는 화면
내 가게 — 내 일은 끝났다
내가 할 일은 이미 했고, 남을 기다린다. [이미 선 것의 확인] + [내가 더 할 수 있는 하나]
⚠타인의 행동을 약속하지 않는다
문패는 이미 골목에 서 있어요 유지 — 단, 부제는 수리(아래 4번)
④ 홀로 화면
성소
집계 자체가 이 방의 결과 어긋난다. 혼자여도 참인 문장만.
‘함께’ 숫자는 2부터만 숫자다
n<2 → 직분은 여기서 지워집니다만 남긴다

오늘 화면에서 고칠 것

#파일지금 문장바꿀 문장
1 app/my/sanctuary/page.tsx:36 함께 불을 밝히는 0명 · 직분은 여기서 지워집니다 n<2: 직분은 여기서 지워집니다
n≥2: 함께 불을 밝히는 N명 · 직분은 여기서 지워집니다
2 app/my/MyShopCard.tsx:80 오늘 한마디를 걸어두면 지나는 이웃이 읽어요
발걸음 실측 0 — 이웃의 행동을 약속
오늘 한마디를 걸어두세요 — 문패 아래에 함께 걸려요
시스템이 하는 일만 말한다
3 app/my/messages/SarangbangInbox.tsx:123 조용한 방이에요 · 종이 울리면 놓치지 않게 알려드려요
앱 밖의 사람에게 지킬 수 없는 결과 보증
조용한 방이에요 · 새 말이 오면 종이 울려요
기제를 말하고 결과는 약속하지 않는다
4 app/admin/o/[slug]/roster/page.tsx:114 아직 등록된 구성원이 없습니다
행위자 화면인데 다음 걸음이 없다 — ②공식 위반
아직 등록된 구성원이 없습니다. 쓰던 명단을 그대로 올리면 여기부터 채워집니다.
개통 카드의 말(“쓰던 엑셀 그대로”)과 같은 결

app/shop/mine/page.tsx:117의 “아직 첫 발걸음을 기다려요”는 ③공식에 맞아 유지 — 단, 같은 칸에 발걸음 0을 숫자로 함께 그리지 않는 조건이다.

D

말투 경계 — 오늘 실제 문장으로

기준: 사실이 먼저, 정서는 반 줄로 뒤에. 앱은 자기가 한 일만 말하고, 남의 마음·행동·미래는 말하지 않는다.

되는 문장 — 사실에 붙은 온도
  • 아직 보낸 광고가 없습니다. 위에서 하나 보내면, 읽은 사람과 못 읽은 사람이 여기 쌓입니다.사실 + 내 손의 다음 걸음 + 달라지는 것
  • 문패는 이미 골목에 서 있어요내가 한 일의 확인 — 기다림을 헛되지 않게
  • 이 폰이 기억해요참인 기제(localStorage) — 계정도 없는 손님에게 지킬 수 있는 말만
  • 상담 창구는 아직 없습니다 — 지금은 사람이 직접 도와드립니다없음을 문장으로 — /union이 세운 모범
선을 넘은 문장 — 오늘 쓴 것
  • 지나는 이웃이 읽어요타인의 행동을 현재형으로 — 발걸음 실측 0. 느끼함의 정체는 과장이 아니라 거짓이다
  • 놓치지 않게 알려드려요앱 밖의 사람은 놓친다 — 지킬 수 없는 결과 보증
  • 함께 불을 밝히는 0명함께가 없음을 큰 글씨로 증명 — 위로하려던 문장이 외로움을 집계한다
  • 주인에게 전해뒀어요받을 사람이 앱 밖 — 완료형 생색. 미수 사고(설계 단계에서 차단됨)

선 위의 문장. “조용한 날도 좋은 날이에요”는 앱이 감정을 판정하는 문형이라 원래 금지선인데, 홈 ①공식의 원본 한 곳으로만 허용한다. 파생 금지 — “쓸쓸한 날도 괜찮아요”류가 두 번째로 나타나는 순간 느끼함이 시작된다.

E

금칙 목록

검사법 · 한 줄
이 문장이 말하는 사건을 오늘 DB에서 한 행이라도 보여줄 수 있는가 — 없으면 아직 못 쓰는 문장이다.

금칙 문형

타인의 행동을 현재형·완료형으로 약속. “이웃이 읽어요” · “주인에게 전해뒀어요” — 주어가 남이면 현재형 금지. 시스템이 하는 일로 바꿔 쓴다.
없는 기능의 진행형. “가는 중이에요” — 실물 버튼은 ‘다녀왔어요’ 하나다. 설계 문서의 말은 화면에 인용 금지.
돈·보전의 약속. “차액은 교회가 채웁니다” — 돈이 나오는 문장은 값의 문(“파는 것은 전원”) 아래에서만, 감독 승인 후에만.
규모의 과장. “이미 N교회가 씁니다”류 — 실측 소속 1개. 크기는 미래형으로만(“명단 한 장을 얹는 순간 문이 생깁니다”).
감정 판정 문형의 복제. “~한 날도 좋은 날” 파생 금지 — 원본은 홈 한 곳뿐.

금칙 낱말·기호

느낌표 · 본문 이모지 · “지금 바로” · “드디어” · “완벽” · “최고” · “곧”(기능 출시 약속) · 앱의 1인칭 생색(“제가 ~해뒀어요”) · vocab 낱말 앞 합성 접두(“각·소속·하위”+orgVocab 낱말 — 그 자리는 unit* 필드의 몫, lib/orgVocab.ts 주석의 규칙) · 조사 직접 표기(“을(를)” — lib/korean.tsparticle()을 거친다).

F

화면 하나를 짓기 전, 다섯 문

이 화면의 문장은 네 문장(북극성 + 문 셋) 중 어디서 나오는가?어디서도 안 나오면 새 정의를 짓고 있는 것이다 — 멈추고 감독에게 올린다.
빈 상태부터 지었는가? 실측을 확인했는가?우벨의 기본 화면은 빈 화면이다(계정 8 · 발걸음 0 · 진짜 가게 0). 채워진 목업으로 먼저 그리면 빈 상태가 나중에 땜질된다.
이 비어 있음을 채울 손이 보는 사람의 손인가?그렇다 → ②순서 공식. 아니다 → ①안심 공식 또는 ③기다림 공식. C절의 표.
문장이 말하는 사건을 오늘 DB에서 보여줄 수 있는가? 0이 어딘가에 크게 그려지는가?전자가 아니면 그 문장은 아직 못 쓴다. 후자면 숨기거나(관계 숫자) 다른 것을 센다(순서).
낱말은 orgVocab에서 왔는가, 조사는 particle()을 거쳤는가, 느낌표·이모지·감탄이 없는가?긴 문장은 템플릿 문자열 한 덩어리로 — JSX 줄바꿈이 공백을 삼킨 사고가 이미 있었다(/union).