chore: upstream sync and roadmap updates
- Update README with latest project status - Archive upstream-runtime milestone and update roadmap - Update Mattermost Android build configuration - Sync upstream references for core and push-proxy services
This commit is contained in:
parent
5d1c31fb7e
commit
e82990ddff
7 changed files with 118 additions and 23 deletions
46
README.md
46
README.md
|
|
@ -97,6 +97,52 @@ docker compose up
|
|||
- staging pull 결과를 이 저장소에 자동 반영하지 않는다. 스냅샷 diff와 관련 smoke 검증을 확인한 뒤 merge 요청한다.
|
||||
- Nexo 전용 패치는 가능한 한 업스트림 스냅샷 밖의 compose, 문서, 래퍼, 작고 명시적인 패치로 둔다.
|
||||
|
||||
## 업스트림 스냅샷 운영
|
||||
|
||||
workspace script를 둘 때의 계약은 자동 merge가 아니라 snapshot 후보 준비다.
|
||||
script는 외부 `mattermost/` staging clone을 기록된 branch로 update하고,
|
||||
선택한 commit을 이 repo의 대응 경로로 복사할 수 있다. script 실행만으로
|
||||
baseline을 변경한 것으로 보지 않는다.
|
||||
|
||||
snapshot 반영은 다음 단계를 분리한다.
|
||||
|
||||
1. staging clone update와 후보 commit 선택
|
||||
2. repo별 snapshot copy: `apps/mattermost`, `services/core`, `services/push-proxy` 중 하나
|
||||
3. 해당 `UPSTREAM.md`의 source, branch, tag/commit, snapshot date 갱신
|
||||
4. snapshot diff 확인과 nexo-local patch inventory 정리
|
||||
5. 변경 범위에 맞는 smoke 검증
|
||||
6. repo별 merge 요청
|
||||
|
||||
release watch는 월 1회 Mattermost server/webapp release 흐름과 push-proxy
|
||||
`master` 변경을 확인하고, security patch 또는 ESR 영향이 있으면 정기 주기와
|
||||
별도로 snapshot 후보를 만든다. watch 결과는 해당 모듈의 `UPSTREAM.md`에
|
||||
baseline 후보 또는 보류 사유로 남기고, 검증 증거는 필요하면
|
||||
`docs/runtime-image-validation.md`나 merge 요청 본문에 연결한다.
|
||||
|
||||
## 업스트림 Patch 경계
|
||||
|
||||
`services/core/server`, `services/core/webapp`, `services/push-proxy`는
|
||||
upstream-owned runtime으로 취급한다. Nexo 변경은 upstream snapshot과 다시
|
||||
비교하기 쉬운 얇은 layer에 둔다.
|
||||
|
||||
webapp은 기본 메시지 앱 또는 reference front로 유지한다. branding, copy,
|
||||
기능 숨김은 설정, wrapper, 작은 compatibility patch로 제한하고, 제품별 화면
|
||||
흐름이나 앱별 business logic은 Nexo Flutter SDK를 소비하는 앱 쪽에서 소유한다.
|
||||
|
||||
대량 rename, directory 재배치, formatting-only churn, deep fork는 금지한다.
|
||||
예외는 보안 패치, upstream update 차단 해소, Nexo runtime 계약 유지에 필요한
|
||||
최소 변경일 때만 허용하며, 해당 모듈의 `UPSTREAM.md`에 변경 path, 사유,
|
||||
rebase 위험, 검증 결과를 남긴다.
|
||||
|
||||
upstream 새 기능은 다음 후보로 분류한 뒤 반영한다.
|
||||
|
||||
| 후보 | 기준 | 처리 |
|
||||
| --- | --- | --- |
|
||||
| keep | runtime 호환성, 보안, 기본 메시징 동작에 필요 | snapshot에 유지하고 smoke 검증에 포함한다. |
|
||||
| hide | 기본 메시지 앱에서 노출하면 혼선을 주지만 upstream 유지에는 유리 | 설정, feature flag, 얇은 UI patch로 숨긴다. |
|
||||
| defer | Nexo 계약 영향이 불명확하거나 검증 비용이 큰 기능 | 별도 follow-up으로 보류 사유와 재검토 조건을 남긴다. |
|
||||
| remove | 보안, 라이선스, runtime 안정성 문제로 유지할 수 없는 기능 | 제거 사유와 upstream rebase 위험을 기록하고 검증한다. |
|
||||
|
||||
## 개발 흐름
|
||||
|
||||
1. 변경할 경로의 domain rule을 읽는다.
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ Mattermost server, webapp, push-proxy를 nexo runtime으로 계승하면서도 u
|
|||
|
||||
## 상태
|
||||
|
||||
[진행중]
|
||||
[완료]
|
||||
|
||||
## 승격 조건
|
||||
|
||||
|
|
@ -44,28 +44,28 @@ Mattermost server, webapp, push-proxy를 nexo runtime으로 계승하면서도 u
|
|||
|
||||
server/webapp/push-proxy가 어떤 upstream 버전을 기준으로 움직이는지 추적 가능하게 만든다.
|
||||
|
||||
- [ ] [source-baseline] server와 webapp의 upstream tag/commit, 적용 patch, nexo-local 변경 범위를 기록하는 기준을 정리한다.
|
||||
- [ ] [snapshot-script] 외부 `mattermost/` staging clone을 git update하고 선택한 snapshot을 `apps/mattermost`, `services/core`, `services/push-proxy`로 복사하는 workspace script 계약을 정리한다. 검증: script가 staging pull 결과를 자동 merge하지 않고, repo별 commit SHA 기록, snapshot diff 확인, smoke 검증 단계를 분리한다.
|
||||
- [ ] [push-proxy-baseline] push-proxy를 image-only로 추적할지 source mirror/fork를 둘지 판단 기준과 현재 선택을 문서화한다.
|
||||
- [ ] [release-watch] Mattermost monthly/ESR release, security patch, push-proxy update를 확인하는 주기와 담당 문서를 정리한다.
|
||||
- [x] [source-baseline] server와 webapp의 upstream tag/commit, 적용 patch, nexo-local 변경 범위를 기록하는 기준을 정리한다.
|
||||
- [x] [snapshot-script] 외부 `mattermost/` staging clone을 git update하고 선택한 snapshot을 `apps/mattermost`, `services/core`, `services/push-proxy`로 복사하는 workspace script 계약을 정리한다. 검증: script가 staging pull 결과를 자동 merge하지 않고, repo별 commit SHA 기록, snapshot diff 확인, smoke 검증 단계를 분리한다.
|
||||
- [x] [push-proxy-baseline] push-proxy를 image-only로 추적할지 source mirror/fork를 둘지 판단 기준과 현재 선택을 문서화한다.
|
||||
- [x] [release-watch] Mattermost monthly/ESR release, security patch, push-proxy update를 확인하는 주기와 담당 문서를 정리한다.
|
||||
|
||||
### Epic: [patch-policy] Patch boundary
|
||||
|
||||
nexo 변경이 upstream merge를 어렵게 만들지 않도록 허용 경계를 만든다.
|
||||
|
||||
- [ ] [thin-branding] webapp은 기본 메시지 앱/reference front로 유지하고, branding과 기능 숨김은 얇은 patch로 제한하는 기준을 정리한다.
|
||||
- [ ] [no-deep-rename] server/webapp/push-proxy upstream-owned 코드의 대량 rename과 deep fork를 금지하고 예외 조건을 문서화한다.
|
||||
- [ ] [feature-triage] upstream 새 기능을 keep/hide/defer/remove 후보로 분류하는 기준을 정리한다.
|
||||
- [x] [thin-branding] webapp은 기본 메시지 앱/reference front로 유지하고, branding과 기능 숨김은 얇은 patch로 제한하는 기준을 정리한다.
|
||||
- [x] [no-deep-rename] server/webapp/push-proxy upstream-owned 코드의 대량 rename과 deep fork를 금지하고 예외 조건을 문서화한다.
|
||||
- [x] [feature-triage] upstream 새 기능을 keep/hide/defer/remove 후보로 분류하는 기준을 정리한다.
|
||||
|
||||
## 완료 리뷰
|
||||
|
||||
- 상태: 없음
|
||||
- 요청일: 없음
|
||||
- 완료 근거: 없음
|
||||
- 상태: 승인됨
|
||||
- 요청일: 2026-05-30
|
||||
- 완료 근거: `services/core/UPSTREAM.md`, `services/push-proxy/UPSTREAM.md`, `README.md`에 upstream baseline, snapshot script 계약, push-proxy 추적 방식, release watch, patch boundary 기준을 정리했다.
|
||||
- 리뷰 필요:
|
||||
- [ ] 사용자가 완료 결과를 확인했다
|
||||
- [ ] archive 이동을 승인했다
|
||||
- 리뷰 코멘트: 없음
|
||||
- [x] 사용자가 완료 결과를 확인했다
|
||||
- [x] archive 이동을 승인했다
|
||||
- 리뷰 코멘트: 2026-05-30 사용자 승인에 따라 완료 처리하고 archive로 이동한다.
|
||||
|
||||
## 범위 제외
|
||||
|
||||
|
|
@ -7,9 +7,9 @@
|
|||
|
||||
## 활성 Milestone
|
||||
|
||||
- [진행중] 업스트림 팔로잉 기준선
|
||||
- [계획] CI/CD와 운영 업데이트 루프
|
||||
- Phase: `agent-roadmap/phase/upstream-runtime/PHASE.md`
|
||||
- 경로: `agent-roadmap/phase/upstream-runtime/milestones/upstream-following.md`
|
||||
- 경로: `agent-roadmap/phase/upstream-runtime/milestones/cicd-operations.md`
|
||||
|
||||
## 선택 규칙
|
||||
|
||||
|
|
|
|||
|
|
@ -15,8 +15,8 @@ Mattermost server, webapp, push-proxy를 nexo의 upstream-followable 메시징
|
|||
완료, 검토중, 진행중, 계획, 스케치 순서로 두어 아래로 갈수록 미래 작업에 가까워지게 정렬한다.
|
||||
스케치 Milestone은 아직 구현 가능한 계획이 아니므로 계획 Milestone보다 아래에 둔다.
|
||||
|
||||
- [진행중] 업스트림 팔로잉 기준선
|
||||
- 경로: `agent-roadmap/phase/upstream-runtime/milestones/upstream-following.md`
|
||||
- [완료] 업스트림 팔로잉 기준선
|
||||
- 경로: `agent-roadmap/archive/phase/upstream-runtime/milestones/upstream-following.md`
|
||||
- 요약: server/webapp/push-proxy의 upstream baseline, patch 경계, update 판단 기준을 정한다.
|
||||
- [계획] CI/CD와 운영 업데이트 루프
|
||||
- 경로: `agent-roadmap/phase/upstream-runtime/milestones/cicd-operations.md`
|
||||
|
|
|
|||
|
|
@ -207,10 +207,9 @@ dependencies {
|
|||
implementation 'com.google.android.material:material:1.12.0'
|
||||
implementation 'androidx.constraintlayout:constraintlayout:2.2.1'
|
||||
implementation "com.google.firebase:firebase-messaging:$firebaseVersion"
|
||||
androidTestImplementation('com.wix:detox:+')
|
||||
androidTestImplementation 'com.wix:detox:20.47.0'
|
||||
androidTestImplementation 'androidx.test:core:1.6.1'
|
||||
androidTestImplementation 'androidx.test:runner:1.6.2'
|
||||
androidTestImplementation 'com.wix:detox:20.26.2'
|
||||
|
||||
// For animated GIF support
|
||||
implementation 'com.facebook.fresco:animated-gif:3.6.0'
|
||||
|
|
|
|||
|
|
@ -3,10 +3,45 @@
|
|||
`services/core/` is derived from the Mattermost server repository.
|
||||
|
||||
- Source: `https://github.com/mattermost/mattermost.git`
|
||||
- Branch: `master`
|
||||
- Baseline tag: `v11.4.2`
|
||||
- Baseline commit: `bcf511968217cd0f65cbead926e03260bfcd1011`
|
||||
- Snapshot date: `2026-05-30`
|
||||
- Snapshot source: `/config/workspace/mattermost/mattermost/`
|
||||
- Snapshot target: `/config/workspace/nexo/services/core/`
|
||||
|
||||
Keep product-specific changes small and easy to compare against this baseline
|
||||
until the long-term fork and rebranding strategy is settled.
|
||||
## Component Baseline
|
||||
|
||||
Server and webapp are tracked from the same upstream repository baseline, but
|
||||
they should be reviewed as separate runtime surfaces when a snapshot is updated.
|
||||
|
||||
| Component | Workspace path | Upstream path | Baseline tag | Baseline commit |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| Server | `services/core/server/` | `server/` | `v11.4.2` | `bcf511968217cd0f65cbead926e03260bfcd1011` |
|
||||
| Webapp | `services/core/webapp/` | `webapp/` | `v11.4.2` | `bcf511968217cd0f65cbead926e03260bfcd1011` |
|
||||
|
||||
## Update Record
|
||||
|
||||
When the server or webapp baseline changes, update this file with:
|
||||
|
||||
- upstream branch, tag, and commit SHA used for the snapshot
|
||||
- snapshot date, source clone path, and target workspace path
|
||||
- component scope: server, webapp, or both
|
||||
- patch inventory: upstream snapshot patches, nexo-local patches, and removed patches
|
||||
- validation summary or a link to the evidence document used before merge
|
||||
|
||||
Do not change the baseline tag or commit only because a staging clone was pulled.
|
||||
A new baseline is recorded after snapshot diff review and the relevant smoke
|
||||
checks pass.
|
||||
|
||||
## Patch Boundary
|
||||
|
||||
Keep product-specific changes small and easy to compare against this baseline.
|
||||
Prefer compose files, workspace docs, helper wrappers, or narrowly documented
|
||||
compatibility patches over direct edits to upstream-owned server or webapp code.
|
||||
|
||||
Any nexo-local patch inside `services/core/server/` or `services/core/webapp/`
|
||||
must be listed in the update record with its path, reason, upstream rebase risk,
|
||||
and validation result. Existing patch-package files under
|
||||
`services/core/webapp/patches/` are treated as part of the upstream snapshot
|
||||
unless the update record explicitly marks one as nexo-local.
|
||||
|
|
|
|||
|
|
@ -9,4 +9,19 @@
|
|||
- Snapshot source: `/config/workspace/mattermost/mattermost-push-proxy/`
|
||||
- Snapshot target: `/config/workspace/nexo/services/push-proxy/`
|
||||
|
||||
Keep nexo-specific changes outside this snapshot where possible.
|
||||
## Tracking Mode
|
||||
|
||||
Current choice: source snapshot plus nexo-owned runtime image build.
|
||||
|
||||
Use the source snapshot as the primary baseline because nexo needs reproducible
|
||||
image builds, local smoke validation, and an explicit place to review FCM/APNs
|
||||
delivery behavior. Do not treat push-proxy as image-only while local runtime
|
||||
images are built from this workspace.
|
||||
|
||||
Image-only tracking is only a future candidate if nexo no longer needs local
|
||||
source-level validation, no nexo-local patch is present, and runtime image
|
||||
provenance can still be tied to a specific upstream commit or release artifact.
|
||||
|
||||
Keep nexo-specific changes outside this snapshot where possible. If a local
|
||||
patch is unavoidable, record its path, reason, rebase risk, and validation
|
||||
evidence in this file before merging the snapshot update.
|
||||
|
|
|
|||
Loading…
Reference in a new issue