@asc-agent/runtime 0.1.0
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.
- package/LICENSE +15 -0
- package/README.md +22 -0
- package/dist/adapters/claude-code/binding.d.ts +5 -0
- package/dist/adapters/claude-code/binding.js +14 -0
- package/dist/adapters/claude-code/guard.d.ts +54 -0
- package/dist/adapters/claude-code/guard.js +295 -0
- package/dist/adapters/claude-code/install.d.ts +67 -0
- package/dist/adapters/claude-code/install.js +231 -0
- package/dist/adapters/claude-code/observer.d.ts +38 -0
- package/dist/adapters/claude-code/observer.js +77 -0
- package/dist/adapters/claude-code/probe.d.ts +53 -0
- package/dist/adapters/claude-code/probe.js +129 -0
- package/dist/adapters/claude-code/skill.d.ts +8 -0
- package/dist/adapters/claude-code/skill.js +267 -0
- package/dist/adapters/fixture-work/index.d.ts +34 -0
- package/dist/adapters/fixture-work/index.js +78 -0
- package/dist/adapters/github/adapter.d.ts +32 -0
- package/dist/adapters/github/adapter.js +95 -0
- package/dist/adapters/github/client.d.ts +30 -0
- package/dist/adapters/github/client.js +90 -0
- package/dist/adapters/github/context.d.ts +44 -0
- package/dist/adapters/github/context.js +170 -0
- package/dist/adapters/github/event-source.d.ts +55 -0
- package/dist/adapters/github/event-source.js +183 -0
- package/dist/adapters/github/scm.d.ts +50 -0
- package/dist/adapters/github/scm.js +104 -0
- package/dist/adapters/gitlab/adapter.d.ts +36 -0
- package/dist/adapters/gitlab/adapter.js +117 -0
- package/dist/adapters/gitlab/client.d.ts +30 -0
- package/dist/adapters/gitlab/client.js +47 -0
- package/dist/adapters/gitlab/ports.d.ts +40 -0
- package/dist/adapters/gitlab/ports.js +186 -0
- package/dist/adapters/jam/adapter.d.ts +53 -0
- package/dist/adapters/jam/adapter.js +144 -0
- package/dist/adapters/jam/event-source.d.ts +28 -0
- package/dist/adapters/jam/event-source.js +65 -0
- package/dist/adapters/jam/mcp-client.d.ts +50 -0
- package/dist/adapters/jam/mcp-client.js +218 -0
- package/dist/adapters/jam/ports.d.ts +51 -0
- package/dist/adapters/jam/ports.js +167 -0
- package/dist/adapters/local/identity.d.ts +27 -0
- package/dist/adapters/local/identity.js +40 -0
- package/dist/adapters/local/presentation.d.ts +14 -0
- package/dist/adapters/local/presentation.js +42 -0
- package/dist/adapters/markdown/layout.d.ts +15 -0
- package/dist/adapters/markdown/layout.js +49 -0
- package/dist/adapters/markdown/serialize.d.ts +9 -0
- package/dist/adapters/markdown/serialize.js +120 -0
- package/dist/adapters/markdown/state-store.d.ts +23 -0
- package/dist/adapters/markdown/state-store.js +316 -0
- package/dist/adapters/mattermost/client.d.ts +23 -0
- package/dist/adapters/mattermost/client.js +54 -0
- package/dist/adapters/mattermost/presentation.d.ts +43 -0
- package/dist/adapters/mattermost/presentation.js +88 -0
- package/dist/adapters/memory/mocks.d.ts +87 -0
- package/dist/adapters/memory/mocks.js +163 -0
- package/dist/adapters/memory/runtime-binding.d.ts +23 -0
- package/dist/adapters/memory/runtime-binding.js +118 -0
- package/dist/adapters/memory/state-store.d.ts +17 -0
- package/dist/adapters/memory/state-store.js +125 -0
- package/dist/adapters/text/renderer.d.ts +7 -0
- package/dist/adapters/text/renderer.js +81 -0
- package/dist/adapters/webhook/ingress.d.ts +103 -0
- package/dist/adapters/webhook/ingress.js +150 -0
- package/dist/cli/asc.d.ts +16 -0
- package/dist/cli/asc.js +2914 -0
- package/dist/cli/identity-config.d.ts +7 -0
- package/dist/cli/identity-config.js +31 -0
- package/dist/composition/observe.d.ts +21 -0
- package/dist/composition/observe.js +72 -0
- package/dist/composition/registry.d.ts +33 -0
- package/dist/composition/registry.js +62 -0
- package/dist/composition/runtime.d.ts +63 -0
- package/dist/composition/runtime.js +155 -0
- package/dist/core/approval/service.d.ts +17 -0
- package/dist/core/approval/service.js +129 -0
- package/dist/core/attach/bootstrap.d.ts +102 -0
- package/dist/core/attach/bootstrap.js +178 -0
- package/dist/core/attach/init.d.ts +29 -0
- package/dist/core/attach/init.js +100 -0
- package/dist/core/attach/setup-plan.d.ts +125 -0
- package/dist/core/attach/setup-plan.js +177 -0
- package/dist/core/attach/setup.d.ts +40 -0
- package/dist/core/attach/setup.js +140 -0
- package/dist/core/binding/types.d.ts +93 -0
- package/dist/core/binding/types.js +74 -0
- package/dist/core/distribution/release.d.ts +15 -0
- package/dist/core/distribution/release.js +27 -0
- package/dist/core/distribution/runtime-install.d.ts +50 -0
- package/dist/core/distribution/runtime-install.js +90 -0
- package/dist/core/distribution/runtime-select.d.ts +74 -0
- package/dist/core/distribution/runtime-select.js +149 -0
- package/dist/core/execution/executor.d.ts +51 -0
- package/dist/core/execution/executor.js +106 -0
- package/dist/core/execution/grant.d.ts +42 -0
- package/dist/core/execution/grant.js +78 -0
- package/dist/core/model/entities.d.ts +872 -0
- package/dist/core/model/entities.js +285 -0
- package/dist/core/model/ids.d.ts +41 -0
- package/dist/core/model/ids.js +50 -0
- package/dist/core/model/transitions.d.ts +26 -0
- package/dist/core/model/transitions.js +124 -0
- package/dist/core/monitor/coverage.d.ts +111 -0
- package/dist/core/monitor/coverage.js +129 -0
- package/dist/core/monitor/engine.d.ts +134 -0
- package/dist/core/monitor/engine.js +574 -0
- package/dist/core/monitor/health-alerts.d.ts +35 -0
- package/dist/core/monitor/health-alerts.js +88 -0
- package/dist/core/monitor/investigation.d.ts +82 -0
- package/dist/core/monitor/investigation.js +232 -0
- package/dist/core/monitor/observation.d.ts +79 -0
- package/dist/core/monitor/observation.js +110 -0
- package/dist/core/monitor/relevance.d.ts +47 -0
- package/dist/core/monitor/relevance.js +100 -0
- package/dist/core/monitor/signals.d.ts +59 -0
- package/dist/core/monitor/signals.js +105 -0
- package/dist/core/operator/local-operator.d.ts +60 -0
- package/dist/core/operator/local-operator.js +82 -0
- package/dist/core/operator/preflight.d.ts +60 -0
- package/dist/core/operator/preflight.js +139 -0
- package/dist/core/operator/proceed.d.ts +98 -0
- package/dist/core/operator/proceed.js +167 -0
- package/dist/core/operator/progress.d.ts +124 -0
- package/dist/core/operator/progress.js +135 -0
- package/dist/core/operator/render.d.ts +34 -0
- package/dist/core/operator/render.js +170 -0
- package/dist/core/operator/runtime-binding.d.ts +61 -0
- package/dist/core/operator/runtime-binding.js +22 -0
- package/dist/core/policy/ownership.d.ts +44 -0
- package/dist/core/policy/ownership.js +46 -0
- package/dist/core/policy/policy.d.ts +99 -0
- package/dist/core/policy/policy.js +147 -0
- package/dist/core/policy/remote-freeze.d.ts +101 -0
- package/dist/core/policy/remote-freeze.js +151 -0
- package/dist/core/policy/scope.d.ts +23 -0
- package/dist/core/policy/scope.js +93 -0
- package/dist/core/presentation/digest.d.ts +98 -0
- package/dist/core/presentation/digest.js +160 -0
- package/dist/core/resolver/load.d.ts +121 -0
- package/dist/core/resolver/load.js +246 -0
- package/dist/core/resolver/render.d.ts +4 -0
- package/dist/core/resolver/render.js +62 -0
- package/dist/core/resolver/resolve.d.ts +42 -0
- package/dist/core/resolver/resolve.js +51 -0
- package/dist/core/resolver/version.d.ts +22 -0
- package/dist/core/resolver/version.js +49 -0
- package/dist/core/runtime/audit.d.ts +374 -0
- package/dist/core/runtime/audit.js +454 -0
- package/dist/core/runtime/claims.d.ts +115 -0
- package/dist/core/runtime/claims.js +153 -0
- package/dist/core/runtime/closure.d.ts +73 -0
- package/dist/core/runtime/closure.js +162 -0
- package/dist/core/runtime/controller.d.ts +40 -0
- package/dist/core/runtime/controller.js +121 -0
- package/dist/core/runtime/escalation.d.ts +188 -0
- package/dist/core/runtime/escalation.js +322 -0
- package/dist/core/runtime/execution-state.d.ts +43 -0
- package/dist/core/runtime/execution-state.js +81 -0
- package/dist/core/runtime/front.d.ts +95 -0
- package/dist/core/runtime/front.js +144 -0
- package/dist/core/runtime/orchestrator.d.ts +54 -0
- package/dist/core/runtime/orchestrator.js +98 -0
- package/dist/core/runtime/query.d.ts +184 -0
- package/dist/core/runtime/query.js +213 -0
- package/dist/core/runtime/report.d.ts +33 -0
- package/dist/core/runtime/report.js +108 -0
- package/dist/core/runtime/session.d.ts +156 -0
- package/dist/core/runtime/session.js +281 -0
- package/dist/core/runtime/store-ops.d.ts +22 -0
- package/dist/core/runtime/store-ops.js +26 -0
- package/dist/core/view/build-view.d.ts +36 -0
- package/dist/core/view/build-view.js +131 -0
- package/dist/core/view/decision-view.d.ts +564 -0
- package/dist/core/view/decision-view.js +103 -0
- package/dist/core/workspace/identity.d.ts +82 -0
- package/dist/core/workspace/identity.js +133 -0
- package/dist/core/workspace/index-store.d.ts +140 -0
- package/dist/core/workspace/index-store.js +125 -0
- package/dist/core/workspace/migrate.d.ts +73 -0
- package/dist/core/workspace/migrate.js +123 -0
- package/dist/core/workspace/resolve.d.ts +34 -0
- package/dist/core/workspace/resolve.js +89 -0
- package/dist/ports/adapter.d.ts +35 -0
- package/dist/ports/adapter.js +12 -0
- package/dist/ports/approval.d.ts +98 -0
- package/dist/ports/approval.js +7 -0
- package/dist/ports/change-context.d.ts +22 -0
- package/dist/ports/change-context.js +8 -0
- package/dist/ports/event-source.d.ts +42 -0
- package/dist/ports/event-source.js +6 -0
- package/dist/ports/inventory.d.ts +53 -0
- package/dist/ports/inventory.js +12 -0
- package/dist/ports/presentation.d.ts +62 -0
- package/dist/ports/presentation.js +13 -0
- package/dist/ports/renderer.d.ts +23 -0
- package/dist/ports/renderer.js +7 -0
- package/dist/ports/resource-context.d.ts +51 -0
- package/dist/ports/resource-context.js +9 -0
- package/dist/ports/scm.d.ts +40 -0
- package/dist/ports/scm.js +6 -0
- package/dist/ports/state-store.d.ts +97 -0
- package/dist/ports/state-store.js +12 -0
- package/dist/presets/balanced.json +8 -0
- package/dist/presets/conservative.json +9 -0
- package/dist/presets/lightweight.json +8 -0
- package/dist/profiles/example-team/profile.json +101 -0
- package/dist/profiles/pilot-local/profile.json +56 -0
- package/dist/schemas/profile.d.ts +631 -0
- package/dist/schemas/profile.js +287 -0
- package/package.json +55 -0
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import type { ApprovalRequest, ControlState, ExecutionGrant, MonitorEvent, QueueItem, Session } from '../core/model/entities.ts';
|
|
2
|
+
/**
|
|
3
|
+
* 저장 가능한 entity 종류. 모든 entity는 `version`을 갖고, 그 값이 CAS 토큰이다 —
|
|
4
|
+
* 별도 etag를 두지 않는다 (C-01 §8).
|
|
5
|
+
*/
|
|
6
|
+
export type EntityMap = {
|
|
7
|
+
session: Session;
|
|
8
|
+
request: ApprovalRequest;
|
|
9
|
+
grant: ExecutionGrant;
|
|
10
|
+
queueItem: QueueItem;
|
|
11
|
+
event: MonitorEvent;
|
|
12
|
+
};
|
|
13
|
+
export type EntityKind = keyof EntityMap;
|
|
14
|
+
/** entity별 primary key. event는 id 대신 eventKey를 쓴다. */
|
|
15
|
+
export declare const ENTITY_KEY: {
|
|
16
|
+
[K in EntityKind]: keyof EntityMap[K] & string;
|
|
17
|
+
};
|
|
18
|
+
export type CasOk<T> = {
|
|
19
|
+
ok: true;
|
|
20
|
+
entity: T;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* 기대한 version이 아니었다 — 그 사이 누군가(다른 채널·다른 Run) 전이시켰다.
|
|
24
|
+
* `current`는 실패 시점의 실제 entity로, 호출자가 이미 결정된 요청인지 판별하는 근거다.
|
|
25
|
+
*/
|
|
26
|
+
export type CasConflict<T> = {
|
|
27
|
+
ok: false;
|
|
28
|
+
reason: 'VERSION_CONFLICT';
|
|
29
|
+
current: T;
|
|
30
|
+
};
|
|
31
|
+
export type CasMissing = {
|
|
32
|
+
ok: false;
|
|
33
|
+
reason: 'NOT_FOUND';
|
|
34
|
+
current?: undefined;
|
|
35
|
+
};
|
|
36
|
+
export type CasResult<T> = CasOk<T> | CasConflict<T> | CasMissing;
|
|
37
|
+
/** 같은 id로 두 번 만들 수 없다 — 생성도 원자적이어야 한다. */
|
|
38
|
+
export type CreateResult<T> = CasOk<T> | {
|
|
39
|
+
ok: false;
|
|
40
|
+
reason: 'ALREADY_EXISTS';
|
|
41
|
+
current: T;
|
|
42
|
+
};
|
|
43
|
+
export type ListFilter<K extends EntityKind> = {
|
|
44
|
+
/** 부분 일치 조건. 지정한 필드가 전부 같은 entity만 반환한다. */
|
|
45
|
+
where?: Partial<EntityMap[K]>;
|
|
46
|
+
limit?: number;
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* append-only History. 감지 이력과 최종 처분을 남기며, 요약·압축하지 않는다 (OM §7.3~7.4).
|
|
50
|
+
* 회전은 Adapter가 무손실 이동으로 처리한다.
|
|
51
|
+
*/
|
|
52
|
+
export type HistoryEntry = {
|
|
53
|
+
at: string;
|
|
54
|
+
actor: string;
|
|
55
|
+
kind: string;
|
|
56
|
+
ref: string;
|
|
57
|
+
detail?: string;
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Adapter가 자기 부가 정보를 두는 격리된 저장 공간. Core는 이 안의 형태를 모른다 —
|
|
61
|
+
* PresentationRecord 같은 채널별 metadata가 여기 산다 (§ports/approval.ts).
|
|
62
|
+
*/
|
|
63
|
+
export interface ScopedStore {
|
|
64
|
+
get(key: string): Promise<string | null>;
|
|
65
|
+
set(key: string, value: string): Promise<void>;
|
|
66
|
+
delete(key: string): Promise<void>;
|
|
67
|
+
keys(prefix?: string): Promise<string[]>;
|
|
68
|
+
/**
|
|
69
|
+
* 없을 때만 쓰고, 썼는지 알려준다. 프로세스가 여럿이어도 정확히 하나만 성공해야 하므로
|
|
70
|
+
* 확인과 쓰기 사이에 틈이 있으면 안 된다 — Adapter가 원자적으로 구현한다.
|
|
71
|
+
* Monitor Run 하나만 돌게 하는 lease가 이 위에 선다 (OM §10.1).
|
|
72
|
+
*/
|
|
73
|
+
setIfAbsent(key: string, value: string): Promise<boolean>;
|
|
74
|
+
}
|
|
75
|
+
export interface StateStore {
|
|
76
|
+
get<K extends EntityKind>(kind: K, id: string): Promise<EntityMap[K] | null>;
|
|
77
|
+
list<K extends EntityKind>(kind: K, filter?: ListFilter<K>): Promise<EntityMap[K][]>;
|
|
78
|
+
/** version 0으로 새 entity를 만든다. */
|
|
79
|
+
create<K extends EntityKind>(kind: K, entity: EntityMap[K]): Promise<CreateResult<EntityMap[K]>>;
|
|
80
|
+
/**
|
|
81
|
+
* 유일한 갱신 경로. `next.version`은 `expectedVersion + 1`이어야 하며, 저장된 version이
|
|
82
|
+
* expectedVersion과 다르면 아무것도 쓰지 않고 실패한다.
|
|
83
|
+
*/
|
|
84
|
+
compareAndSet<K extends EntityKind>(kind: K, id: string, expectedVersion: number, next: EntityMap[K]): Promise<CasResult<EntityMap[K]>>;
|
|
85
|
+
/** Controller single-writer 상태 문서 (OM §7.2). 갱신도 CAS를 거친다. */
|
|
86
|
+
getControlState(): Promise<ControlState>;
|
|
87
|
+
setControlState(expectedVersion: number, next: ControlState): Promise<CasResult<ControlState>>;
|
|
88
|
+
/**
|
|
89
|
+
* 끝난 entity를 보관소로 옮긴다 (OM §7.4). 지우거나 요약하지 않는다 — 옮기기만 한다.
|
|
90
|
+
* 옮겨진 것은 `get`·`list`에 더는 나타나지 않으므로, 회수처럼 "한 번만 일어나야 하는"
|
|
91
|
+
* 절차가 저절로 멱등해진다.
|
|
92
|
+
*/
|
|
93
|
+
archive<K extends EntityKind>(kind: K, id: string): Promise<boolean>;
|
|
94
|
+
appendHistory(entry: HistoryEntry): Promise<void>;
|
|
95
|
+
readHistory(limit?: number): Promise<HistoryEntry[]>;
|
|
96
|
+
scope(adapterId: string): ScopedStore;
|
|
97
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// State Store Port — Core가 entity를 읽고 쓰는 유일한 통로.
|
|
2
|
+
// Core Contract는 이 인터페이스이지 파일 배치가 아니다 (OM §7.0). Markdown Adapter는
|
|
3
|
+
// 기본 구현일 뿐이고, SQLite/JSON으로 바꿔도 Core는 그대로여야 한다.
|
|
4
|
+
// 동시성 보장(compare-and-set, atomic rename 등)은 전부 Adapter 책임이다 (OM §7.2).
|
|
5
|
+
/** entity별 primary key. event는 id 대신 eventKey를 쓴다. */
|
|
6
|
+
export const ENTITY_KEY = {
|
|
7
|
+
session: 'id',
|
|
8
|
+
request: 'id',
|
|
9
|
+
grant: 'id',
|
|
10
|
+
queueItem: 'id',
|
|
11
|
+
event: 'eventKey',
|
|
12
|
+
};
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"$comment": "공개 예시 Profile. 실 프로젝트가 아니라 스키마와 계층 병합이 어떻게 서는지 보여 주기 위한 것이다 — 개인 계정·토큰은 여기가 아니라 User Override와 자격 저장소에 둔다.",
|
|
4
|
+
"id": "example-team",
|
|
5
|
+
"requires": {
|
|
6
|
+
"asc": ">=0.1 <1.0",
|
|
7
|
+
"capabilities": [
|
|
8
|
+
"scm.github"
|
|
9
|
+
]
|
|
10
|
+
},
|
|
11
|
+
"optionalCapabilities": [
|
|
12
|
+
"messenger.mattermost"
|
|
13
|
+
],
|
|
14
|
+
"project": {
|
|
15
|
+
"scm": "github",
|
|
16
|
+
"repository": "example-org/example-repo"
|
|
17
|
+
},
|
|
18
|
+
"canonical": {
|
|
19
|
+
"sources": [
|
|
20
|
+
{
|
|
21
|
+
"id": "shared-spec",
|
|
22
|
+
"$comment": "파트 공용 spec과 계약. develop이 정본이다.",
|
|
23
|
+
"provider": "git",
|
|
24
|
+
"remote": "origin",
|
|
25
|
+
"ref": "develop",
|
|
26
|
+
"paths": [
|
|
27
|
+
"specs/**"
|
|
28
|
+
]
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"id": "fe-plan",
|
|
32
|
+
"$comment": "FE plan·tasks는 front 브랜치에만 있고 develop에 병합돼 있지 않다.",
|
|
33
|
+
"provider": "git",
|
|
34
|
+
"remote": "origin",
|
|
35
|
+
"ref": "front",
|
|
36
|
+
"paths": [
|
|
37
|
+
"specs/**/FE/**"
|
|
38
|
+
]
|
|
39
|
+
}
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
"monitor": {
|
|
43
|
+
"$comment": "reasonSignals는 GitHub Adapter의 GITHUB_REASON_SIGNALS와 같은 표다. signalPriority는 실측으로 조정하는 자리이며, 여기 값은 형태를 보여 주는 예시다.",
|
|
44
|
+
"reasonSignals": {
|
|
45
|
+
"assign": "assigned_to_me",
|
|
46
|
+
"mention": "mentioned_me",
|
|
47
|
+
"team_mention": "mentioned_me",
|
|
48
|
+
"review_requested": "review_requested",
|
|
49
|
+
"author": "my_pr_reviewed",
|
|
50
|
+
"comment": "participated_thread_changed",
|
|
51
|
+
"subscribed": "participated_thread_changed",
|
|
52
|
+
"state_change": "participated_thread_changed"
|
|
53
|
+
},
|
|
54
|
+
"priorityLabels": {
|
|
55
|
+
"front": "P1"
|
|
56
|
+
},
|
|
57
|
+
"escalationLabels": [
|
|
58
|
+
"blocker"
|
|
59
|
+
],
|
|
60
|
+
"signalPriority": {
|
|
61
|
+
"mentioned_me": "P1",
|
|
62
|
+
"participated_thread_changed": "P2",
|
|
63
|
+
"my_pr_reviewed": "P1"
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
"workflow": {
|
|
67
|
+
"$comment": "포인터만 둔다. 내용은 복사하지 않는다.",
|
|
68
|
+
"blockSource": "docs/backlog.md",
|
|
69
|
+
"taskSource": [
|
|
70
|
+
"speckit_tasks",
|
|
71
|
+
"session_objective"
|
|
72
|
+
]
|
|
73
|
+
},
|
|
74
|
+
"policy": {
|
|
75
|
+
"$comment": "파트 경계를 넘는 변경은 Session 계약으로 열 수 없다.",
|
|
76
|
+
"hardDeny": [
|
|
77
|
+
"spec.change",
|
|
78
|
+
"cross-part-contract.change",
|
|
79
|
+
"mvp-scope.change"
|
|
80
|
+
],
|
|
81
|
+
"softDeny": [
|
|
82
|
+
"shared-module.change"
|
|
83
|
+
],
|
|
84
|
+
"roleScopes": {
|
|
85
|
+
"implementer": [
|
|
86
|
+
"web-frontend/**"
|
|
87
|
+
],
|
|
88
|
+
"verifier": []
|
|
89
|
+
},
|
|
90
|
+
"settings": {
|
|
91
|
+
"independentVerifier": true
|
|
92
|
+
},
|
|
93
|
+
"lockedSettings": [
|
|
94
|
+
"independentVerifier"
|
|
95
|
+
]
|
|
96
|
+
},
|
|
97
|
+
"terminology": {
|
|
98
|
+
"Block": "Spec 하위 작업 묶음 (B-NN)",
|
|
99
|
+
"Canonical": "정본 — spec·contracts는 develop, FE plan은 front"
|
|
100
|
+
}
|
|
101
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"$comment": "fixture·demo·pilot 전용 Profile. canonical 없음 = 정본 검증이 성립하지 않는다 — 실 프로젝트에 attach하지 않는다.",
|
|
4
|
+
"id": "pilot-local",
|
|
5
|
+
"requires": {
|
|
6
|
+
"asc": ">=0.1 <1.0",
|
|
7
|
+
"capabilities": []
|
|
8
|
+
},
|
|
9
|
+
"project": {
|
|
10
|
+
"scm": "local",
|
|
11
|
+
"repository": "pilot/fixture"
|
|
12
|
+
},
|
|
13
|
+
"canonical": {
|
|
14
|
+
"sources": []
|
|
15
|
+
},
|
|
16
|
+
"policy": {
|
|
17
|
+
"roleScopes": {
|
|
18
|
+
"implementer": [
|
|
19
|
+
"src/**"
|
|
20
|
+
],
|
|
21
|
+
"verifier": []
|
|
22
|
+
},
|
|
23
|
+
"unionLists": {
|
|
24
|
+
"closureChecklist": [
|
|
25
|
+
"tasks-synced",
|
|
26
|
+
"backlog-updated",
|
|
27
|
+
"worklog-recorded"
|
|
28
|
+
]
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"ownership": {
|
|
32
|
+
"frontend": {
|
|
33
|
+
"paths": [
|
|
34
|
+
"src/**"
|
|
35
|
+
],
|
|
36
|
+
"authorities": [
|
|
37
|
+
"client-ui",
|
|
38
|
+
"client-routing"
|
|
39
|
+
]
|
|
40
|
+
},
|
|
41
|
+
"backend": {
|
|
42
|
+
"paths": [
|
|
43
|
+
"server/**"
|
|
44
|
+
],
|
|
45
|
+
"authorities": [
|
|
46
|
+
"api-contract",
|
|
47
|
+
"persistence"
|
|
48
|
+
]
|
|
49
|
+
},
|
|
50
|
+
"product": {
|
|
51
|
+
"authorities": [
|
|
52
|
+
"product-policy"
|
|
53
|
+
]
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|