DocOps Writeback Runs
当前页面为 Change Request 队列只读视图。展示 status=queued 的变更请求。本页不生成 patch、不审批、不写回 Drive、不开 repo PR、不调用外部 API。
Writeback M3:sandbox POST guard wired · feature flag off · readiness BLOCKED_BEFORE_REAL_POST · real writeback disabled · per-CR dry-run eligibility · dry-run succeeded ≠ real writeback ready · approved_for_writeback 仅表示写回候选;Run dry-run 只写 doc_writeback_runs。
数据来源:staging_db(Supabase doc_* 表只读 SELECT;已排除 secret_blocked 文档源)。
Sandbox implementation wiring
Sandbox POST guard wiring(M3):`drive-writeback-real` POST executor 已接入 M3 闸门链,但 feature flag 默认关闭,不执行真实 Drive 写回。legacy C3 中文短语不适用于 M3 sandbox real writeback。
implementationWiringReady=true · sandboxReadyForFutureImplementation=ready · nextAction: POST guard wired · feature flag off · sandbox real writeback remains disabled
| feature flag | DOCOPS_SANDBOX_REAL_WRITEBACK_ENABLED = false (off) |
|---|---|
| target | 99_test only · 1C4PBDNgESdQZ4EBLB_2AteLTx-Qs863BWLTIBhMOJqw |
| sandboxTargetStatus | sandbox_allowed |
| phrase | required · status=not_enabled · matched=false |
| one-run lock | required · status=not_enabled · key=docops-sandbox-writeback:91296ba0-3c81-4940-8234-6cb2ceb13dfb:1C4PBDNgESdQZ4EBLB_2AteLTx-Qs863BWLTIBhMOJqw |
| readback | required · preRevision · postRevision · contentVerification |
| audit payload | preview only · no doc_writeback_runs write |
| readiness | status=BLOCKED_BEFORE_REAL_POST · readyForHumanPhrase=false · reason=sandbox_real_writeback_disabled |
| env projection | sandboxRealWriteback=false · postExecution=false · token=false · driveAdapter=false |
| realWritebackAllowed | false |
| driveWriteback | blocked |
Audit payload preview
{
"sandbox": true,
"targetLabel": "99_test",
"targetDocId": "1C4PBDNgESdQZ4EBLB_2AteLTx-Qs863BWLTIBhMOJqw",
"phraseVerified": false,
"lockKey": "docops-sandbox-writeback:91296ba0-3c81-4940-8234-6cb2ceb13dfb:1C4PBDNgESdQZ4EBLB_2AteLTx-Qs863BWLTIBhMOJqw",
"patchId": null,
"rollbackNoteSnapshot": "## Rollback target\n\nsuggestion: 刷新 stale 文档元数据\n\n## Proposed change summary\n\n刷新 stale 文档元数据 (refresh_stale_content). no patch yet; request type refresh_stale_content may generate patch before dry-run.\n\n## Rollback method\n\n1. Do not apply this change request to Drive.\n2. If a future dry-run or real writeback was attempted, revert using the latest dry-run revision hint and reopen this change request.\n3. Keep doc_change_requests status at approved until human review decides otherwise.\n\n## Verification after rollback\n\nConfirm doc_change_requests.rollback_note is present, dry-run eligibility no longer lists rollback_note_missing, and no Drive writeback run succeeded for this CR.\n\n## Safety boundary\n\n- No Drive writeback executed in this step\n- Real writeback remains blocked\n- Production remains false",
"dryRunRunId": "b5961d4c-7f7a-44fe-8ab2-bd508119b216",
"production": false,
"driveWriteback": false,
"realWriteback": false,
"readbackRequired": true
}Sandbox implementation wiring checklist
- POST guard: wired into drive-writeback-real
- feature flag: off
- target: 99_test only
- phrase: required
- one-run lock: required
- readback: required
- audit payload: preview only
- real writeback: disabled
Writeback gate status
real_writeback_not_enabled_in_m2Writeback gate M1:仅定义 dry-run / real-writeback 边界;本阶段不启用真实 Drive writeback。 approved_for_writeback 只是写回候选,不等于已写回。
approved_for_writeback is a writeback candidate only — not Drive writeback, not auto writeback, not production.
| writebackEnabled | false |
|---|---|
| driveWriteback | blocked |
| dryRunAllowed | true |
| realWritebackAllowed | false |
| human gate required | yes |
| approval phrase required | yes (future real writeback) |
| rollback note required | yes |
| allowlist required | yes |
| dryRunCandidateCount | 4 |
| dryRunReadyCount | 0 |
| dryRunSucceededCount | 3 |
| dryRunBlockedCount | 1 |
| finalGateBlockedCount | 3 |
| approvedForWritebackCandidateCount | 4 |
Required gates (all blocked for real writeback in M1)
human_phraseallowlistrollback_notedry_run_successaudit_logone_run_lock
State machine — M1 allowed
not_eligiblecandidatedry_run_readyhuman_gate_requiredreal_writeback_blocked
State machine — M1 forbidden
real_writeback_ready_futurereal_writeback_startedreal_writeback_succeeded
Dry-run allowed only if
- change_request exists
- patch exists or can be generated
- target document is allowlisted
- rollback note exists or can be generated
- production=false
- Drive writeback remains false
Real writeback requires (all blocked in M1)
- explicit human approval phrase
- allowlisted document id
- patch preview accepted
- rollback note generated
- writeback dry-run succeeded
- environment != production or production explicitly blocked
- one-run lock
- audit log
- manual final confirmation
上述按钮在 M1 永久 disabled,不触发 POST。真实写回须后续独立任务包与人类闸门。 blocked reason: real_writeback_not_enabled_in_m2
Final gate audit
Final gate audit(M2):dry-run 成功只是前置条件,不等于真实 Drive 写回许可。本面板列出 patch / rollback / dry-run / allowlist / human phrase / one-run lock / audit log / production 边界与最终阻断原因。
3 dry-run succeeded CR(s) · 3 final gate blocked · Drive writeback remains blocked
| targetCrId | 91296ba0-3c81-4940-8234-6cb2ceb13dfb |
|---|---|
| dryRunRunId | b5961d4c-7f7a-44fe-8ab2-bd508119b216 |
| gateStatus | real_writeback_blocked |
| realWritebackAllowed | false |
| dryRunSucceededCount | 3 |
| finalGateBlockedCount | 3 |
| featureFlagEnabled | top=false · nested=false |
| readiness | status=BLOCKED_BEFORE_REAL_POST · readyForHumanPhrase=false · reason=sandbox_real_writeback_disabled |
| phraseStatus | not_enabled |
| phraseMatched | false |
| sandboxTargetStatus | sandbox_allowed |
| oneRunLockStatus | not_enabled |
| readbackRequired | true |
| auditPayloadPreview | available |
Target CR final gate checklist
| patchStatus | exists |
|---|---|
| patch preview | ## Target 99_test; Drive doc 1C4PBDNgESdQZ4EBLB_2AteLTx-Qs863BWLTIBhMOJqw; suggestion: 刷新 stale 文档元数据 ## Current issue Document content or metadata may be stale for "刷新 stale 文档元数… |
| rollbackNoteStatus | exists |
| rollback note preview | ## Rollback target suggestion: 刷新 stale 文档元数据 ## Proposed change summary 刷新 stale 文档元数据 (refresh_stale_content). no patch yet; request type refresh_stale_content may generate patc… |
| dryRunStatus | dry_run_succeeded |
| allowlistStatus | allowed · allowed_for_dry_run_only |
| human phrase | not_enabled |
| one-run lock | required |
| audit log | partial |
| production boundary | blocked |
| final confirmation | required · not enabled in M2 |
| nextAction | final gate audit / human phrase not enabled |
Final blocked reasons
real_writeback_not_enableddrive_writeback_disabledhuman_phrase_requiredone_run_lock_requiredfinal_audit_required
All dry-run succeeded CR audits
| CR id | dry-run run | gateStatus | blocked reasons |
|---|---|---|---|
| 91296ba0… | b5961d4c… | real_writeback_blocked | real_writeback_not_enabled, drive_writeback_disabled, human_phrase_required, one_run_lock_required, final_audit_required |
| 09000001… | 2bbd9c54… | real_writeback_blocked | real_writeback_not_enabled, drive_writeback_disabled, human_phrase_required, one_run_lock_required, final_audit_required |
| 07000001… | c7d7a163… | real_writeback_blocked | real_writeback_not_enabled, drive_writeback_disabled, human_phrase_required, one_run_lock_required, final_audit_required |
Per-CR dry-run candidates
Per-CR dry-run eligibility(M2):展示 patch preview / rollback note / allowlist reason / dry-run 状态;Generate patch preview 仅写 staging doc_change_request_patches;Generate & save rollback note 仅写 staging rollback_note;Run dry-run 仅写 doc_writeback_runs,不写 Drive。
| Change request | Title | Patch status | Patch preview | Rollback note status | Rollback note preview | Allowlist | Dry-run status | Latest run | Real writeback | Blocked reasons | Actions |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 91296ba0… | 刷新 stale 文档元数据 | exists | ## Target 99_test; Drive doc 1C4PBDNgESdQZ4EBLB_2AteLTx-Qs863BWLTIBhMOJqw; suggestion: 刷新 stale 文档元数据 ## Current issue Document content or metadata may be stale for "刷新 stale 文档元数… saved · real writeback blocked | exists | ## Rollback target suggestion: 刷新 stale 文档元数据 ## Proposed change summary 刷新 stale 文档元数据 (refresh_stale_content). no patch yet; request type refresh_stale_content may generate patc… saved · real writeback blocked | allowed reason: allowed_for_dry_run_only | dry_run_succeeded dryRunAllowed=true | b5961d4c… (succeeded) | blocked | real_writeback_not_enabled, drive_writeback_disabled | |
| 09000002… | N2 second sandbox append-only real writeback pilot preparation | exists | [HB OS DocOps second sandbox real writeback pilot] change_request_id: 09000002-0001-4000-8000-000000000099 mode: second_sandbox_only summary: append-only marker for controlled N3 … saved · real writeback blocked | exists | N2 rollback note: remove the single HB OS DocOps second sandbox real writeback pilot marker appended to 99_test_second_sandbox if verification fails. saved · real writeback blocked | blocked reason: target_not_allowlisted | dry_run_blocked dryRunAllowed=false | — | blocked | real_writeback_not_enabled, drive_writeback_disabled, target_not_allowlisted | |
| 09000001… | C3 99_test append-only real writeback pilot | exists | [HB OS DocOps real writeback pilot] change_request_id: 09000001-0001-4000-8000-000000000099 mode: 99_test_only summary: append-only marker for controlled C3 real Drive writeback p… saved · real writeback blocked | exists | C3 rollback note: remove the single HB OS DocOps real writeback pilot marker appended to 99_test if verification fails. saved · real writeback blocked | allowed reason: allowed_for_dry_run_only | dry_run_succeeded dryRunAllowed=true | 2bbd9c54… (succeeded) | blocked | real_writeback_not_enabled, drive_writeback_disabled | |
| 07000001… | 同步 baseline manifest 执行摘要段(stub) | exists | # Repo mirror sync plan (draft) Change request: 同步 baseline manifest 执行摘要段(stub) ## Scope - Align repo mirror copy with current Drive truth summary. - No Drive body writeback in t… saved · real writeback blocked | exists | staging acceptance rollback note: restore previous document state manually if real execution fails. saved · real writeback blocked | blocked reason: target_not_allowlisted | dry_run_succeeded dryRunAllowed=false | c7d7a163… (succeeded) | blocked | real_writeback_not_enabled, drive_writeback_disabled, target_not_allowlisted |
Writeback runs(doc_writeback_runs)
只读展示 writeback 运行记录,含 dry run 预演结果。本页不会写回 Drive、不会调用 Google Drive API、不会调用 GitHub API、不会开 repo PR。
| Change request | Status | Executor | Drive revision hint | Started | Finished | Result summary |
|---|---|---|---|---|---|---|
| 91296ba0… | failed | docops_real_drive_pilot | — | 2026-06-05 13:38:00 | 2026-06-05 13:38:00 | real execution failed: Drive writeback adapter preflight blocked (invalid_final_human_approval): explicitApprovalText does not include target driveDocId; explicitApprovalText does not include changeRequestId; explicitApprovalText missing required phrase: 只执行一次; explicitApprovalText missing required phrase: 失败不得自动重试; explicitApprovalText missing required phrase: 不得触碰 production |
| 91296ba0… | succeeded | dry_run_m2 | dry_run_only | 2026-06-05 06:45:20 | 2026-06-05 06:45:20 | Dry run only. Would prepare stale document review workflow. No Drive body write performed. |
| 09000001… | succeeded | dry_run_m2 | dry_run_only | 2026-06-05 05:58:12 | 2026-06-05 05:58:12 | Dry run only. Would prepare writeback plan for patch type drive_body_append_only. No Drive body write performed. |
| 91296ba0… | blocked | no_writeback_m1 | — | 2026-06-04 15:03:56 | 2026-06-04 15:03:56 | approved_for_writeback candidate recorded — writebackEnabled=false, driveWriteback=blocked (M1). |
| 09000002… | succeeded | docops_second_sandbox_real_drive_pilot | AFwiY18UKSNbGcZqMk9FGXrERwKZ2_rvZ99hzkv31IUti90-Gs6lmRuxm9WW3xSqMUV9dfzQOJv5CmT0An2xWuEtaeET_lEe-y9Q4OOnVes | 2026-05-24 10:18:37 | 2026-05-24 10:36:41 | N3 second sandbox real Drive writeback succeeded. Append-only marker inserted into 99_test_second_sandbox. before_revision=AFwiY19cEz8r7-8MHC7Blig6Dm-X0l9syp6CjaxV1cHUAnTkkhKM_R-92wEAX4q5EoM7wUXTeOvpTZ2QHIZ8uzS0jacqm9AMUsphN22Ailw; after_revision=AFwiY18UKSNbGcZqMk9FGXrERwKZ2_rvZ99hzkv31IUti90-Gs6lmRuxm9WW3xSqMUV9dfzQOJv5CmT0An2xWuEtaeET_lEe-y9Q4OOnVes; marker verified by readback. |
| 09000001… | succeeded | docops_real_drive_pilot | AFwiY18pHEVwLtAXqxAD2E_lpvtHeeOszxXoUz62ruNGq5CF5_ApcYcTMBkF_GyqIFTGX9SCZYuAJ8OcIYU3oig-z5ICcLuhV8FF-rUkZts | 2026-05-24 02:52:25 | 2026-05-24 02:53:25 | C3 real Drive writeback succeeded. Append-only marker inserted into 99_test. before_revision=AFwiY18IruMJrwYN0W3FJQ6IEmJLcxTqskt_CSqb4aD3mJu5DmUVWxbKicyNc0Hi_zsuyrm2mZIpymAAjOjMS1gI-gcrsfHB1YNfmaPFWVk; after_revision=AFwiY18pHEVwLtAXqxAD2E_lpvtHeeOszxXoUz62ruNGq5CF5_ApcYcTMBkF_GyqIFTGX9SCZYuAJ8OcIYU3oig-z5ICcLuhV8FF-rUkZts; marker verified by readback. |
| 07000001… | succeeded | docops_dry_run | dry_run_only | 2026-05-23 08:27:44 | 2026-05-23 08:27:44 | Dry run only. Would prepare writeback plan for patch type summary_refresh. No Drive body write performed. Dry run only. Would prepare repo mirror update plan from approved patch. No Drive body write performed. |
| 07000001… | succeeded | docops_dry_run | dry_run_only | 2026-05-23 08:27:19 | 2026-05-23 08:27:19 | Dry run only. Would prepare writeback plan for patch type summary_refresh. No Drive body write performed. Dry run only. Would prepare repo mirror update plan from approved patch. No Drive body write performed. |
| 07000001… | succeeded | docops_dry_run | dry_run_only | 2026-05-23 08:27:18 | 2026-05-23 08:27:18 | Dry run only. Would prepare writeback plan for patch type summary_refresh. No Drive body write performed. Dry run only. Would prepare repo mirror update plan from approved patch. No Drive body write performed. |
| 07000001… | planned | docbridge | — | 2026-05-22 00:02:00 | — | Staging seed placeholder — no writeback executed. |