Compare commits

..
Author SHA1 Message Date
openclaw d457ac3961 release: record final owner approval for V1R4C5 2026-07-11 01:58:14 +08:00
openclaw 9fa7511bb5 release: add V1R4C5 acceptance evidence 2026-07-11 01:56:45 +08:00
5 changed files with 266 additions and 242 deletions
+212
View File
@@ -0,0 +1,212 @@
# V1R4C5 Acceptance Evidence
Date: 2026-07-11
Status: release candidate evidence in progress
Current active baseline: V1R4C3
V1R4C5 has not been promoted yet.
## Owner Decision
Owner approved continued V1R4C5 work under the following constraints:
```text
允许无 force-push 的分支 reconcile
memory search 保持关闭
先完成 SR-01/SR-02/数据隔离验收
再进入 merge/deploy/tag owner gate
```
## Scope
V1R4C5 release candidate scope:
1. SR-01 Gitea reliability and branch consistency guardrails.
2. SR-02 watcher/stuck command cleanup.
3. User data isolation redline and enforcement gates.
4. SR-04 admin workbench read-only visibility preparation only.
Explicitly excluded from V1R4C5 activation:
- memory search activation;
- full SR-04 portal production rollout;
- bulk merge of old test/smoke/auth branches;
- force push reconciliation;
- Gitea DB mutation without owner/admin approval.
## Runtime Acceptance Evidence
### Runtime status
Observed:
```json
{
"service": "aios-gitops-model-api",
"status": "active",
"workspace_branch": "patch/v1r4c5-runtime-acceptance-clean-20260711-01"
}
```
### Baseline
Observed:
```json
{
"current_baseline": "V1R4C3",
"previous_baseline": "V1R3C1",
"promoted_by": "openclaw"
}
```
### Clean createBranch acceptance
Branch:
```text
test/v1r4c5-runtime-acceptance-clean-20260711-01
```
Result:
```text
status: ok
commit: 6ae7058
sync: synced
```
### Clean createPatch acceptance
Patch:
```text
patch/v1r4c5-runtime-acceptance-clean-20260711-01
```
Patch id:
```text
patch-1783706123789-f5ca8b69
```
Commit:
```text
ba0391e
```
Result:
```text
synced
```
## SR-01 Evidence
Known accepted evidence:
- Gitea branch consistency sentinel deployed.
- Sentinel reports:
```json
{
"status": "healthy",
"unhealthy_checks": []
}
```
- systemd timer runs every 5 minutes.
- service runs with:
```text
--emit-safe-mode --json
```
- broken symlink issue resolved by replacing the external reliability symlink with workspace-local files.
Required before final promotion:
- confirm latest sentinel report remains healthy after acceptance writes.
## SR-02 Evidence
Known accepted evidence:
```text
11 / 11 tests pass
```
Fix summary:
- stuck command detection reads parsed timestamps through `data.get('ts', 0)`;
- `.md` fixture mtime is aligned with stored stuck timestamp via `os.utime(path, (ts, ts))`;
- behavior is consistent across `.json` and `.md` state formats.
Required before final promotion:
- re-run SR-02 tests on the final integration candidate.
## User Data Isolation Evidence
Implemented controls:
- user data isolation redline;
- memory scope guard;
- provider gate;
- activation gate;
- audit service/timer;
- CI acceptance scripts;
- memory search activation check.
Required safety state:
```text
AIOS_MEMORY_ENABLED=false
```
Required before memory/search activation:
- isolation audit healthy;
- no denied records;
- no invalid records;
- provider filters by scope before ranking;
- provenance required;
- global index disabled;
- activation gate returns allowed;
- explicit owner approval.
V1R4C5 does not approve memory search activation.
## SR-04 Admin Workbench Evidence
Current user-visible gap is confirmed:
- administrator cannot yet see task progress;
- administrator cannot yet see flow/process diagrams;
- SR-04 remains activation-ready but gated.
V1R4C5 scope allows only read-only visibility preparation and acceptance design, not full production rollout.
Required before SR-04 deployment:
- SR-01 green;
- SR-02 green;
- user data isolation gate accepted;
- admin RBAC read-only check green.
## Remaining Required Gates Before Promotion
- [ ] Latest Gitea sentinel report remains healthy.
- [ ] SR-02 watcher tests pass on final candidate.
- [ ] User data isolation acceptance passes.
- [ ] Admin workbench read-only RBAC acceptance passes or remains explicitly deferred.
- [ ] No force-push was used.
- [ ] Memory search remains disabled.
- [ ] Owner approves merge/deploy/tag/promotion.
## Promotion Rule
V1R4C5 may not be promoted until all required gates are green or explicitly deferred with owner approval.
@@ -0,0 +1,54 @@
# V1R4C5 Final Owner Approval
Date: 2026-07-11
Status: approved for final promotion
## Owner Decision
Owner approved final V1R4C5 promotion.
Memory search must remain disabled.
```text
允许最终晋升
继续保持 memory search 关闭
```
## Promotion Scope
Approved for V1R4C5:
1. SR-01 Gitea reliability and branch consistency guardrails.
2. SR-02 watcher/stuck command cleanup.
3. User data isolation redline and enforcement gates.
4. SR-04 admin workbench read-only visibility preparation only.
## Explicit Non-Activation
The following are not approved by this promotion:
```text
memory search activation
full cross-session memory recall
global vector index
full SR-04 production portal rollout beyond read-only/admin visibility preparation
bulk merge of old test/smoke/auth branches
force-push based reconciliation
```
## Required Runtime State
Memory remains disabled:
```text
AIOS_MEMORY_ENABLED=false
```
If a provider or deployment attempts to enable memory/search, it must be blocked unless a future owner approval explicitly allows it after the user-data isolation activation gate returns allowed.
## Final Promotion Rule
V1R4C5 may proceed to tag/promotion under owner gate.
If any final gate fails, promotion must stop and memory/search must remain disabled.
@@ -1,158 +0,0 @@
# V1R4C5 Baseline Promotion Operator Handoff
Date: 2026-07-11
Status: ready for operator promotion; baseline not yet switched
## Current Verified State
```text
GitOps runtime: active
workspace branch: request/promote-V1R4C5-recommended-20260711
current active baseline: V1R4C3
V1R4C5 tag: exists
```
`V1R4C5` tag is present in GitOps version list.
Current active baseline remains `V1R4C3`.
## Owner Decision
Owner approved final promotion using the recommended scheme:
```text
Do not move existing V1R4C5 tag.
Do not force-push.
Promote using the metadata-complete release commit.
Keep memory search disabled.
```
## Recommended Promotion Source
Promotion source branch:
```text
release/v1r4c5-final-owner-approval-20260711
```
Metadata-complete promotion commit observed earlier:
```text
c128d6b
```
Existing immutable tag:
```text
V1R4C5
```
Tag object:
```text
ac9bdacb19ff66cba8046d75358866f0f0fffb82
```
Tag target commit:
```text
d457ac396147043ed5d0a3fd8b44bcb10f48bceb
```
The tag must not be moved.
## Required Pre-Promotion Checks
Run on the operator host:
```bash
cd /data/aios-gitops/workspace
git fetch origin --tags
git checkout release/v1r4c5-final-owner-approval-20260711
git pull --ff-only origin release/v1r4c5-final-owner-approval-20260711
git rev-parse --short HEAD
test -f versions/V1R4C5.json
git ls-remote --tags origin V1R4C5
```
Expected:
```text
HEAD is c128d6b or a later normal fast-forward commit on the release branch
versions/V1R4C5.json exists
refs/tags/V1R4C5 exists
```
## Promotion Command
Use the existing baseline promotion mechanism to set:
```text
current_baseline = V1R4C5
previous_baseline = V1R4C3
git = <release branch HEAD containing versions/V1R4C5.json>
promoted_by = openclaw/admin
```
Promotion reason:
```text
V1R4C5 reliability, watcher cleanup, user data isolation gate, and admin workbench read-only preparation; memory search remains disabled
```
## Hard Constraints
Do not run:
```bash
git push --force
```
Do not:
```text
move refs/tags/V1R4C5
enable memory search
modify Gitea DB
bulk merge old test/smoke/auth branches
deploy full SR-04 portal rollout beyond read-only/admin visibility preparation
```
## Post-Promotion Verification
After promotion, verify:
```text
getBaseline
```
Expected:
```json
{
"current_baseline": "V1R4C5",
"previous_baseline": "V1R4C3"
}
```
Also verify:
```text
AIOS_MEMORY_ENABLED=false
memory search disabled
Gitea sentinel healthy
```
## Fallback
If any promotion check fails:
1. Stop promotion.
2. Keep active baseline at V1R4C3.
3. Keep memory search disabled.
4. Do not move the existing tag.
5. Reconcile release branch normally, without force-push.
-45
View File
@@ -1,45 +0,0 @@
{
"version": "V1R4C5",
"codename": "C5 reliability-security-admin-readonly",
"status": "promotion-request-ready",
"tag": "V1R4C5",
"tag_ref": "refs/tags/V1R4C5",
"tag_object": "ac9bdacb19ff66cba8046d75358866f0f0fffb82",
"tag_target_commit": "d457ac396147043ed5d0a3fd8b44bcb10f48bceb",
"recommended_promotion_branch": "release/v1r4c5-final-owner-approval-20260711",
"recommended_promotion_commit": "c128d6b",
"base_baseline": "V1R4C3",
"previous_baseline": "V1R4C3",
"created_at": "2026-07-11",
"created_by": "chatgpt-gitops-bot",
"release_type": "controlled-integration",
"promotion_policy": "owner-gated",
"owner_approval": {
"final_promotion_approved": true,
"memory_search_enabled": false,
"force_push_allowed": false,
"recommended_scheme_accepted": true
},
"scope": {
"included": [
"SR-01 Gitea reliability and branch consistency guardrails",
"SR-02 watcher/stuck command cleanup",
"User data isolation redline and enforcement gates",
"SR-04 admin workbench read-only visibility preparation"
],
"excluded": [
"memory search activation",
"full cross-session memory recall",
"global vector index",
"full SR-04 production portal rollout",
"bulk merge of old test/smoke/auth branches",
"force-push based reconciliation"
]
},
"deployment_constraints": {
"AIOS_MEMORY_ENABLED": false,
"memory_search_activation_requires_future_owner_approval": true,
"gitea_db_mutation_requires_owner_admin_approval": true,
"sr04_full_rollout_deferred": true
}
}
@@ -1,39 +0,0 @@
{
"version": "V1R4C5",
"request_type": "baseline_promotion",
"status": "owner_approved_ready_for_operator_promotion",
"decision": "use_recommended_scheme_do_not_move_existing_tag",
"current_active_baseline": "V1R4C3",
"target_baseline": "V1R4C5",
"promotion_source_branch": "release/v1r4c5-final-owner-approval-20260711",
"promotion_commit": "c128d6b",
"existing_tag": {
"name": "V1R4C5",
"tag_object": "ac9bdacb19ff66cba8046d75358866f0f0fffb82",
"target_commit": "d457ac396147043ed5d0a3fd8b44bcb10f48bceb",
"policy": "immutable_do_not_move"
},
"reason": "V1R4C5 metadata was completed after tag creation. Recommended scheme preserves tag immutability and promotes the metadata-complete release commit through normal baseline promotion.",
"owner_approval": {
"final_promotion_allowed": true,
"recommended_scheme_accepted": true,
"force_push_allowed": false,
"memory_search_enabled": false
},
"constraints": [
"Do not move or recreate refs/tags/V1R4C5",
"Do not force-push",
"Keep AIOS_MEMORY_ENABLED=false",
"Do not activate memory search",
"Do not bulk merge old test/smoke/auth branches",
"Do not mutate Gitea DB without separate owner/admin approval"
],
"operator_action": [
"Verify release/v1r4c5-final-owner-approval-20260711 contains versions/V1R4C5.json",
"Promote baseline to V1R4C5 using promotion commit c128d6b or the resolved full commit for that release HEAD",
"Record previous_baseline=V1R4C3",
"Record promoted_by=openclaw/admin",
"Record promotion reason: V1R4C5 reliability, watcher cleanup, user data isolation gate, and admin workbench read-only preparation; memory search remains disabled",
"Run post-promotion getBaseline verification"
]
}