@team-semicolon/semicolony-cli 4.18.66 → 4.18.68

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,16 @@
1
+ -- 175_hive_cron_board_grants.sql
2
+ --
3
+ -- SEMO Ops hive-cron 실행 관측 보드의 읽기 권한.
4
+ --
5
+ -- 설계: semo-ops docs/superpowers/specs/2026-07-29-semo-ops-worker-fleet-board-design.md
6
+ -- (같은 ops 표면의 두 번째 조각)
7
+ --
8
+ -- 원칙:
9
+ -- - 관측 전용이다. 쓰기 권한을 주지 않는다 — 크론 잡 활성/비활성은 이 보드의
10
+ -- 범위가 아니며, 권한을 미리 열어두지 않는다.
11
+ -- - 스키마는 174 와 같은 semo_ops (team_knowledge_fabric DB).
12
+ --
13
+ -- Safety: additive only. Runner가 BEGIN/COMMIT으로 감싸므로 트랜잭션 구문을 넣지 않는다.
14
+
15
+ GRANT SELECT ON TABLE semo_ops.hive_cron_jobs TO sc_fleet_board;
16
+ GRANT SELECT ON TABLE semo_ops.hive_cron_job_runs TO sc_fleet_board;
@@ -0,0 +1,76 @@
1
+ -- 176_kf_ops_observer_principal.sql
2
+ --
3
+ -- Knowledge Fabric 임포트 관측용 전용 principal.
4
+ --
5
+ -- 배경: knowledge_fabric 테이블은 FORCE RLS 에 명시적 principal 모델
6
+ -- (owner / app / import_verifier / migrator / query_issuer)을 갖춘 격리
7
+ -- 서브시스템이다. 대시보드 롤(sc_fleet_board)에 GRANT 만 주면 정책 대상이
8
+ -- 아니라 0행만 보인다(2026-07-29 실측). 그래서 GRANT 를 얹는 대신 기존
9
+ -- 규약대로 **전용 principal 을 신설**한다.
10
+ --
11
+ -- 경계:
12
+ -- - SELECT 전용. 쓰기 명령은 정책 자체를 만들지 않는다.
13
+ -- - 대상 테이블 3개(batches/events/items)로 한정한다. relation·approval·
14
+ -- projection 계열은 건드리지 않는다.
15
+ -- - items 는 지식 본문(envelope, record_document)과 acl 을 담고 있어
16
+ -- **집계에 필요한 두 컬럼만** 준다. 본문은 이 principal 로 읽을 수 없다.
17
+ -- - bypassrls 를 주지 않는다. 다른 KF principal 과 같은 지위다.
18
+ --
19
+ -- 정책 술어를 scope GUC 가 아니라 true 로 두는 이유: 이 principal 의 용도가
20
+ -- "임포트 원장 전체를 관측"하는 것이라, scope 를 하나씩 지정하면 새 scope 가
21
+ -- 생겼을 때 보드에서 조용히 사라진다 — 관측 보드에서 가장 위험한 실패다.
22
+ -- SELECT 전용 + 컬럼 제한이라 owner(ALL 명령) 보다 엄격하게 유지된다.
23
+ --
24
+ -- Safety: additive only. Runner가 BEGIN/COMMIT으로 감싸므로 트랜잭션 구문을 넣지 않는다.
25
+
26
+ DO $$
27
+ BEGIN
28
+ IF NOT EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'team_knowledge_fabric_ops_observer') THEN
29
+ CREATE ROLE team_knowledge_fabric_ops_observer LOGIN NOINHERIT;
30
+ END IF;
31
+ END
32
+ $$;
33
+
34
+ COMMENT ON ROLE team_knowledge_fabric_ops_observer IS
35
+ 'Read-only observation principal for the SEMO Ops import board. SELECT only, no knowledge bodies.';
36
+
37
+ DO $$
38
+ BEGIN
39
+ EXECUTE format(
40
+ 'GRANT CONNECT ON DATABASE %I TO team_knowledge_fabric_ops_observer',
41
+ current_database()
42
+ );
43
+ END
44
+ $$;
45
+
46
+ GRANT USAGE ON SCHEMA knowledge_fabric TO team_knowledge_fabric_ops_observer;
47
+
48
+ GRANT SELECT ON TABLE knowledge_fabric.knowledge_import_batches
49
+ TO team_knowledge_fabric_ops_observer;
50
+ GRANT SELECT ON TABLE knowledge_fabric.knowledge_import_events
51
+ TO team_knowledge_fabric_ops_observer;
52
+
53
+ -- 본문·ACL 제외. 집계에 필요한 컬럼만.
54
+ GRANT SELECT (scope_id, batch_id) ON TABLE knowledge_fabric.knowledge_import_items
55
+ TO team_knowledge_fabric_ops_observer;
56
+
57
+ DROP POLICY IF EXISTS knowledge_import_batches_ops_observer_read
58
+ ON knowledge_fabric.knowledge_import_batches;
59
+ CREATE POLICY knowledge_import_batches_ops_observer_read
60
+ ON knowledge_fabric.knowledge_import_batches
61
+ FOR SELECT TO team_knowledge_fabric_ops_observer
62
+ USING (true);
63
+
64
+ DROP POLICY IF EXISTS knowledge_import_events_ops_observer_read
65
+ ON knowledge_fabric.knowledge_import_events;
66
+ CREATE POLICY knowledge_import_events_ops_observer_read
67
+ ON knowledge_fabric.knowledge_import_events
68
+ FOR SELECT TO team_knowledge_fabric_ops_observer
69
+ USING (true);
70
+
71
+ DROP POLICY IF EXISTS knowledge_import_items_ops_observer_read
72
+ ON knowledge_fabric.knowledge_import_items;
73
+ CREATE POLICY knowledge_import_items_ops_observer_read
74
+ ON knowledge_fabric.knowledge_import_items
75
+ FOR SELECT TO team_knowledge_fabric_ops_observer
76
+ USING (true);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@team-semicolon/semicolony-cli",
3
- "version": "4.18.66",
3
+ "version": "4.18.68",
4
4
  "description": "SemiColony CLI - AI operations and agent orchestration installer",
5
5
  "main": "dist/bundle.js",
6
6
  "bin": {
@@ -71,6 +71,7 @@
71
71
  },
72
72
  "files": [
73
73
  "dist",
74
+ "native-bin",
74
75
  "migrations",
75
76
  "migrations-sqlite",
76
77
  "README.md",