Semantic Map / Help
図を変更するための全契約
正本は、承認済みの意味変更を1件1行で追記するDecisionLogです。StateはLogを決定的にreduceした結果、SceneとmaxGraphは表示です。座標が意味となるmap以外では、表示座標を正本にしません。
URLとState
通常は副作用のない/app#smap=<token>です。Envelope/3をcanonical JSON→gzip→base64urlで保持します。上限超過時だけ、利用者が明示publishしたdigestを/app#smap-ref=<sha256>でGET解決できます。自動publish・QUERY・旧schemaは受理せず、path、tab、storageからBaseを推測しません。
Pattern
1 Scene=1 Patternです。有効なのはmap/1、graph/1、seq/1。chart/1は予約のみで受理しません。mapは位置・包含・重なり、graphは接続、seqはlane+LR軸です。同じStateを再投影し、異種Patternは親子Sceneで合成します。
seqではparentがWBS、temporal.actorが担当です。ordinalとcalendarを併記でき、Viewが読み方だけを選びます。不足値は推測せず拒否します。Themeはrendererだけが所有し、URLへ入れません。
URL Portal
leaf regionのmount.srcは完全な子#smapです。hostの同一性を保ったまま、十分な画面面積で子Sceneを表示します。子IDは@mount/へnamespace化し読み取り専用です。子Proposal・camera・selection・循環・過大数を拒否し、relationを親へ代理接続しません。
GeoSpecとPolicy
meta.geoSpecはOGC:CRS84のPoint/Polygonを保持し、生成後も失わず編集不可です。root kindがpolicy-model/1の時だけPolicyの包含・node・relation・endpointを厳密検査します。
編集と承認
GUI操作はOperationとしてLocal Draftだけへ積みます。Acceptはfork reduce、Scene、hash、append後Log、完成URLを先に検査し、成功時だけProposalと同じbytesをappendします。Reject・失敗ではLog、State、Draft、URLを受理前へ戻します。
受け渡し
①Textは完全な#smap URL+依頼だけを作り、画像を生成しません。②Imageを押した時だけ全Scene overlayを含む画像を生成します。Clipboard拒否時は旧方式へ逃げず、失敗として表示します。
境界
secret禁止。旧#doc・#apply、貼付fallback、shortener、backend、認証、DB、自動mergeはありません。URL上限8,192文字、Scene上限2,048要素を超えたらfail-closedです。
YAGNI: 未要求機構を作らない。KISS: 1 Log、1 Envelope、1 fragment。DRY: ProposalとDecision、appと公開codecを共通化。SOLID: Domain、Pattern、Protocol、Transport、Projection、Renderer、Appを分離する。