int31-dogfood 소스 서빙, GRIDOS_HOME_DIR로 완전 격리 — 라이브 4790·~/.gridos-internal 무접촉)를 직접 열어 지금 화면·코드를 확인한 뒤 그 위에 제안을 그렸습니다. A/B를 눌러 고르시고(안 누르면 권고안 그대로 채택), 코멘트를 남기실 수 있습니다. 맨 아래 상자를 눌러(전체선택) 복사해 대화창에 붙여 주세요 — 복사가 안 되면 드래그로 복사하시거나 말로 알려주셔도 같은 무게로 처리합니다.public/settings-internal.js·public/app.js·public/ge4-ui-state.js·public/internal-theme.css·server/index.js·editions/*.json을 grep으로 확인했습니다. 실측 결과 D145는 이미 최종형대로 구현이 끝나 있었습니다 — 아래 D145 카드에 그대로 밝힙니다(없는 결정을 만들어 다시 여쭙지 않습니다).GE5-1에서 원우님이 "이 형태 좋긴 한데, 추후 단계에서 위젯을 드래그앤드롭으로 대시보드에서 옮길 수 있게 할 거라, 순서 조정은 필요 없지 않을까"라고 코멘트해 설정 › 화면의 순서 이동 버튼(▲▼)을 뺐습니다(D138-B 조건). 그 "추후"가 이번 차례입니다.
카드 헤더에는 라벨과 접기 화살표(⌄)만 있습니다 — 순서를 바꿀 손잡이 자체가 없습니다. 위 순서가 항상 이 순서입니다.
.d-title(app.js 2007·2037행 dash-collapse-btn만 있음, 순서 이동 로직 없음). D138 커밋 주석: "순서 이동(▲▼) 컨트롤은 만들지 않는다 — 추후 대시보드 자체의 드래그앤드롭으로 옮길 예정".카드에 마우스를 올리면 왼쪽에 그립(⠿)이 나타납니다. 끌면 그 카드가 반투명해지고 놓을 자리에 선이 뜹니다. 놓으면 순서가 저장되고(이 컴퓨터만) "되돌리기" 토스트가 잠깐 뜹니다.
.dash-collapse-btn)·향후 위젯별 설정 메뉴와 자리가 겹치면 안 됩니다 — 왼쪽 끝에 새로 추가하고 오른쪽 기존 요소는 손대지 않습니다. 저장은 /api/dashboard/widgets 계약을 확장(order 필드 추가)해 새 엔드포인트를 만들지 않습니다. 사용자 위젯(레지스트리 미승격 3종은 §C 표시 게이트라 순서 배열에 없음)도 같은 배열에 들어가야 회귀가 없습니다.GE5-1에서 확정한 위젯 목록(§11-3 최종형)이 실제로 어떻게 구현됐는지 직접 화면을 열어 확인했습니다.
화살표(▲▼) 없음 · 포트폴리오·레이더 없음 · 4개 전부 기본 ON · 사용자 위젯은 아래 별도 섹션 — 작업 지시·GE5-1 D138-B 컨펌·§11-3 세 곳이 요구한 모양과 완전히 일치합니다.
get_page_text로 원문 그대로 확인(위 텍스트는 화면 원문 그대로 옮긴 것). 코드: settings-internal.js 1408~1476행 CORE_WIDGET_DEFS 4개 배열 + 머리 주석 "D138(2026-09-04)... 최종 목록 = 인스턴트 노트·업무 보드·AI 세션·AI가 오늘 해둔 일, 전부 기본 ON... 순서 이동 컨트롤은 만들지 않는다". app.js 2205행 "D138... «포트폴리오»는 앱에서 없앤다"로 등록 자체 제거 확인.§3 표에서 "그리다 에디션은 개발 모드에서 앱 본체까지 커스텀 가능, 기업 에디션은 이 자체가 없음(봉인)"으로 이미 결정했습니다. 그런데 지금 앱에는 이 결정을 실행할 화면(토글)이 아예 없습니다 — 코드 레벨의 플래그(devAccess)만 있고, config.json을 직접 편집해야만 켤 수 있습니다.
config.json을 직접 고쳐야 합니다(비현실적). B는 설정에 "개발 모드" 섹션을 신설해 토글 하나로 켜고, 켜면 소스 경로·"소스 열기"·"변경 반영(재시작)"과 업데이트 충돌 감지 카드가 나옵니다. 기업 에디션에는 이 섹션 자체가 안 보입니다.개발 모드로 진입하는 유일한 방법은 팀원이 직접 ~/.gridos-internal/config.json을 열어 "devAccess": true를 손으로 써넣는 것입니다 — 팀원(비개발자 포함)에게 요구할 수 있는 방식이 아닙니다.
server/index.js 1791~1796행 isDevUser() { return readLocalConfig().devAccess === true; } — UI 토글이 아니라 config.json 직접 편집이 유일한 경로임을 주석이 명시("운영자가 config.json에 devAccess:true를 직접 켜야만 노출").토글 하나로 켜고 끕니다. 켜면 소스 경로가 보이고 "소스 열기"로 파인더에서 바로 코드를 고칠 수 있으며, "변경 반영"으로 재시작 없이 적용합니다. 업데이트 시점에 로컬 수정과 공식본이 충돌하면(§22) 병합 없이 "공식본 적용(백업)"과 "내 수정 유지" 중 하나만 고르면 됩니다 — 이번 단계는 안내까지만, 실제 병합은 2차 범위입니다.
editions/grida.json·one.json에는 modules.board 스위치만 있고 개발 모드 스위치가 없습니다 — 신설 시 modules.devMode 같은 필드를 매니페스트에 먼저 추가하고, 그 값이 없는 에디션(향후 enterprise.json)에서는 섹션 렌더 자체를 건너뛰어야 "숨김"이 아니라 "봉인"이 됩니다(§3 "봉인 대상은 앱 본체뿐" 원칙과 일치).§11-4·§12-7·§20에서 "팀원이 개발 모드로 만든 것은 끌 수 없이 관리자 화면에 공유된다"고 이미 확정했습니다. 그런데 지금 화면 어디에도 이 사실을 팀원에게 알리는 문구가 없습니다 — 토글도, 안내도, 마지막 보고 시각도 없습니다.
공유는 이미 켜져 있는데(끌 수 없음, §12-7) 그 사실을 알려주는 화면이 없어 팀원 입장에서는 "몰래" 올라가는 것처럼 보일 수 있습니다.
settings-internal.js 전체에서 "커스텀 내역"·"팀 공유"·"마지막 보고"·"관리자 화면에 공유" 문자열 0건.개발 모드 토글 바로 아래에 붙어 있어 "이 기능을 켜면 이것도 같이 켜진다"는 인과가 한눈에 보입니다. 끌 수 있는 스위치가 아니라 그냥 사실을 알리는 카드입니다. 마지막 보고 시각이 있어 "보고가 멈췄다"도 팀원 스스로 확인할 수 있습니다(§11-4 강제 방식의 "보고가 끊기면 즉시 드러나게").
GE5-1에서 이미 "개발 모드는 진짜 서버 장애 유예 띠와 다른 무채색 배지로 바꾸자"(D141-B)고 확정했습니다. 실측해 보니 문구는 이미 고쳐져 있었지만("개발 모드 — 라이선스 검사 생략"), 자리와 색은 아직 그대로였습니다 — 진짜 장애 유예와 똑같은 경고색 전폭 띠 안에 그 문구가 들어가 있습니다.
#app-ver) 옆으로 옮기고, 진짜 서버 장애 유예는 지금 그대로 경고색 전폭 띠를 유지해 둘을 시각적으로 분리합니다.문구는 D141에서 이미 정직해졌지만, 실제 장애(예: 서버가 며칠째 응답 없음)와 시각적으로 구분되지 않습니다 — 색을 못 보고 문구만 훑으면 여전히 "뭔가 잘못됐다"로 읽힙니다.
.gos-grace-strip 안에 그대로 렌더링(경고색 앰버, 전폭, 타이틀바 바로 아래 별도 줄). 코드: ge4-ui-state.js 109~117행 문구 로직은 이미 dev 분기(D141)로 갈라져 있으나, internal-theme.css 4436~4446행 .gos-grace-strip CSS는 --warn 색 고정 하나뿐 — dev 여부에 따른 클래스 분리가 없습니다(ge4-ui.js 51행 el.className = 'gos-grace-strip' 무조건 동일).전폭 경고색 띠를 없애고, 버전 배지(INTERNAL 3.0) 옆에 작은 무채 배지 하나만 남습니다. 진짜 장애 유예는 그대로 경고색 전폭 띠를 유지해서, 두 상태가 색만 봐도 완전히 다르게 보입니다.
ge4-ui.js renderGraceStrip()에서 info.dev일 때 별도 배지 렌더 경로로 분기하고, .gos-grace-strip 자체는 건드리지 않아 진짜 유예 스타일에 회귀가 없게 합니다.카드마다 A/B를 눌러 고르신 뒤(선택 안 하면 권고안 자동 채택, D145는 확인만) 아래 박스를 눌러(전체 선택) 복사해 채팅에 붙여넣어 주세요. 복사가 안 되면 박스를 눌러 드래그 복사하시거나, 말로 "D144는 A, 나머지는 권고안대로" 하셔도 같은 무게로 처리합니다.