You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs(automation): retarget closed-unmerged #840 and #906 lineage
Point IG-001 and TM-03 at open Draft #1021, and point redaction
TM-01/ADR-0009/PRD-08 at open #1031, so the control-plane graph
stops treating dead pull requests as active_pr integration paths.
Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>
Copy file name to clipboardExpand all lines: CHANGELOG.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -28,6 +28,7 @@ Semantic Versioning where the repository publishes a release.
28
28
29
29
### Fixed
30
30
31
+
- Reclassified closed-unmerged ContextualWisdomLab/.github#840 and ContextualWisdomLab/.github#906 as `superseded` and pointed `IG-001` / TM-01 / ADR-0009 at the live open successors ContextualWisdomLab/.github#1021 and ContextualWisdomLab/.github#1031.
31
32
- Materialized base Python locks only when every package line is an exact SHA-256 pin or a bounded relative `-r`/`--requirement` include. A lone `--require-hashes` directive, a dotted include such as `./lock.txt`, or `-r other-hashes.txt` no longer enters the trusted build context.
32
33
- Refused a conflict-scope repository root whose immediate parent is a symbolic link, so a swapped parent cannot redirect the canonical worktree after the last-component check (CWE-367).
33
34
- Bounded the Strix quality self-test's deterministic timeout fixtures to 3-second process and 5-second fake-sleep budgets so exact-head policy evidence completes inside the existing job limit without changing production Strix scanner timeouts, providers, credentials, or review semantics.
Copy file name to clipboardExpand all lines: docs/automation/THREAT_MODEL.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -170,9 +170,9 @@ Paths below are the current concrete control and regression locations. A listed
170
170
171
171
| Threat | Exact control source | Exact regression evidence | Closure boundary | Current maturity |
172
172
|---|---|---|---|---|
173
-
| TM-01 |`scripts/ci/redact_sensitive_log.py`; `scripts/ci/sandboxed_verify.py`; `scripts/ci/sandboxed_web_e2e.py`|`tests/test_sandboxed_verify.py`; `tests/test_sandboxed_web_e2e.py`; `tests/test_opencode_security_boundaries.py`|[PR #888](https://github.com/ContextualWisdomLab/.github/pull/888)is closed unmerged as `superseded` incident evidence after reachable-history re-contamination; clean-history integration and consumer proof are proposed by Draft [PR #906](https://github.com/ContextualWisdomLab/.github/pull/906). |`active_pr`|
173
+
| TM-01 |`scripts/ci/redact_sensitive_log.py`; `scripts/ci/sandboxed_verify.py`; `scripts/ci/sandboxed_web_e2e.py`|`tests/test_sandboxed_verify.py`; `tests/test_sandboxed_web_e2e.py`; `tests/test_opencode_security_boundaries.py`|[PR #888](https://github.com/ContextualWisdomLab/.github/pull/888)and Draft [PR #906](https://github.com/ContextualWisdomLab/.github/pull/906) are closed unmerged as `superseded` incident evidence; current open integration and consumer proof are proposed by [PR #1031](https://github.com/ContextualWisdomLab/.github/pull/1031). Do not merge overlapping [PR #929](https://github.com/ContextualWisdomLab/.github/pull/929) in parallel. |`active_pr`|
174
174
| TM-02 |`.github/workflows/deploy-pages.yml`; `docs/automation/SECURITY.md`|`tests/test_automation_documentation_contract.py`| Documentation detects known debt; explicit workflow-call secret declarations and a runtime negative contract remain open. |`accepted_architecture`|
| TM-03 |`.github/workflows/agent-mention-router.yml`; `.github/workflows/opencode-review-dispatch.yml`; `scripts/ci/agent_mention_router.py`; `scripts/ci/agent_mention_sweep.py`|`tests/test_agent_mention_complete_payload_binding.py`; `tests/test_agent_mention_idempotency.py`; `tests/test_agent_mention_workflow_contract.py`; `tests/test_opencode_security_boundaries.py`| Named router/wrapper controls exist; end-to-end strict snapshot preservation remains proposed by Draft [PR #1021](https://github.com/ContextualWisdomLab/.github/pull/1021), the bounded successor to closed-unmerged [PR #840](https://github.com/ContextualWisdomLab/.github/pull/840). |`active_pr`|
176
176
| TM-04 |`scripts/ci/pr_head_replay_guard.py`; `scripts/ci/pr_review_merge_scheduler.py`|`tests/test_pr_head_replay_guard.py`; `tests/test_pr_review_merge_scheduler.py`| Enforcement still depends on current live ruleset configuration. |`implemented_on_protected_main`|
177
177
| TM-05 |`scripts/ci/pr_review_merge_scheduler.py`; `scripts/ci/opencode_existing_approval_gate.py`; `scripts/ci/noema_review_gate.py`|`tests/test_pr_review_merge_scheduler.py`; `tests/test_opencode_existing_approval_gate.py`; `tests/test_noema_review_gate.py`| The software enforces eligibility; human reviewer capacity remains external governance work. |`implemented_on_protected_main`|
178
178
| TM-06 |`.github/workflows/opencode-review.yml`; `.github/workflows/opencode-review-dispatch.yml`; `.github/workflows/security-scan.yml`|`tests/test_opencode_security_boundaries.py`; `tests/test_review_execution_contracts.py`; `tests/test_required_workflow_queue_contract.py`| Covered entrypoints are protected; every new entrypoint must join the inventory. |`implemented_on_protected_main`|
Copy file name to clipboardExpand all lines: docs/automation/TRACEABILITY.md
+7-5Lines changed: 7 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,7 +1,7 @@
1
1
# Requirements and evidence traceability
2
2
3
3
Status: living authoritative matrix
4
-
Last reviewed: 2026-08-10
4
+
Last reviewed: 2026-08-16
5
5
6
6
Canonical maturity states are defined in [DOCUMENTATION_AUDIT.md](DOCUMENTATION_AUDIT.md): `implemented_on_protected_main`, `active_pr`, `accepted_architecture`, `planned`, `research_only`, `superseded`, and `out_of_scope`. Every maturity cell contains exactly one canonical state; explanatory qualifiers belong in the evidence or closure columns. A row marked `implemented_on_protected_main` still requires fresh exact-head evidence for each later change; a row marked `active_pr` is never shipped truth.
7
7
@@ -19,7 +19,7 @@ Repository locators below are literal paths with no globs. External canaries and
19
19
|`PRD-05` writer lease |`TRD-WRITE-01`, ADR-0001 |`scripts/ci/pr_review_merge_scheduler.py`; `.github/workflows/pr-review-autofix.yml`; `docs/automation/CONTINUATION_RUNBOOK.md`|`tests/test_pr_review_merge_scheduler.py`; `tests/test_pr_review_fix_scheduler.py`| live branch/head observation plus expected-head GitHub response | active branch writer / immediately before mutation |`accepted_architecture`|
20
20
|`PRD-06` work conservation |`TRD-RUN-01`, ADR-0007 |`.github/workflows/pr-review-merge-scheduler.yml`; `AGENTS.md`; `docs/automation/CONTINUATION_RUNBOOK.md`; `docs/automation/UML.md`|`tests/test_required_workflow_queue_contract.py`; `tests/test_automation_documentation_contract.py`; `tests/test_automation_historical_loop_supersession_contract.py`; external continuation receipt | queue sweep plus `USER_REDIRECTION_INCIDENT` same invocation recovery; when two safe lanes exist at least two materially distinct actions with a non-documentation action when available; otherwise two fresh whole-queue sweeps before exit | automation operator / after every meta action and before run exit |`accepted_architecture`|
|`PRD-11` thin modular consumers |`TRD-IF-01`, ADR-0008/0012/0014 |`.github/workflows/opencode-review.yml`; `.github/workflows/noema-review.yml`; `.github/workflows/strix.yml`; `.github/workflows/pr-review-fix-scheduler.yml`; `.github/workflows/deploy-pages.yml`|`tests/test_required_workflow_queue_contract.py`; `tests/test_central_required_workflow_ruleset_audit.py`; `tests/test_automation_documentation_contract.py`| ruleset source/ref plus positive/negative consumer run | interface owners / before breaking change |`accepted_architecture`|
@@ -48,9 +48,11 @@ Repository locators below are literal paths with no globs. External canaries and
48
48
-`ContextualWisdomLab/.github#841` is closed/unmerged historical origin evidence. It established the disclosure concern but mixed unrelated scope; it is `superseded` as an integration path.
49
49
-`ContextualWisdomLab/.github#842` is closed/unmerged historical RED→GREEN and exhaustive-boundary evidence. Its final blobs removed current-source defects but its reachable PR history retained secret-shaped test fixtures that kept Secret Scan red; it is `superseded` as an integration path.
50
50
-`ContextualWisdomLab/.github#888` is closed/unmerged `superseded` incident evidence. It initially replayed the final ten #842 blobs without predecessor fixture history, but a later committed credential-shaped fixture made its reachable range fail Secret Scan again.
51
-
-`ContextualWisdomLab/.github#906` is the Draft `active_pr` clean-history successor from protected main. It carries the corrected final ten blobs and includes the direct Docker/Podman login repair; bounded wrapper recursion is tracked by [Issue #907](https://github.com/ContextualWisdomLab/.github/issues/907), while atomic multiline/duplicate-key JSON redaction is tracked by [Issue #908](https://github.com/ContextualWisdomLab/.github/issues/908). Its exact-head checks, reviews, and threads must be re-fetched at every decision; predecessor or queued evidence is non-authorizing.
51
+
-`ContextualWisdomLab/.github#906` is closed/unmerged `superseded`. It was a Draft clean-history successor and is no longer an open integration path.
52
+
-`ContextualWisdomLab/.github#929` is an overlapping open predecessor for atomic JSON layout. Do not merge it in parallel with its successor.
53
+
-`ContextualWisdomLab/.github#1031` is the current open `active_pr` successor. It carries the sandbox redaction repair, wrapper/command redaction evidence, and the Actions group-marker JSON layout fix for [Issue #908](https://github.com/ContextualWisdomLab/.github/issues/908). Bounded wrapper recursion remains [Issue #907](https://github.com/ContextualWisdomLab/.github/issues/907). Its exact-head checks, reviews, and threads must be re-fetched at every decision; predecessor or queued evidence is non-authorizing.
52
54
- Output-memory and service-file quotas remain a separate `planned` resource-safety requirement. Redaction completion must not be reported as resource-exhaustion closure.
53
-
- Every #906 head change invalidates predecessor test counts, coverage counts, reviews, and run IDs. Protected-main/consumer synthetic credential canaries are required before operational closure.
55
+
- Every #1031 head change invalidates predecessor test counts, coverage counts, reviews, and run IDs. Protected-main/consumer synthetic credential canaries are required before operational closure.
54
56
55
57
## 4. Whole-conversation and documentation governance traceability
56
58
@@ -82,7 +84,7 @@ An issue records planned work; it does not implement the work it describes. An o
82
84
83
85
| Gap | Live object | Current boundary and required closure | Maturity |
84
86
|---|---|---|---|
85
-
|`IG-001` dispatch snapshot preservation |[PR #840](https://github.com/ContextualWisdomLab/.github/pull/840)|The active PR proposes an end-to-end versioned envelope, live-base binding, and review-only route; protected-main consumer acceptance remains required. |`active_pr`|
87
+
|`IG-001` dispatch snapshot preservation |[PR #1021](https://github.com/ContextualWisdomLab/.github/pull/1021)|Draft [PR #1021](https://github.com/ContextualWisdomLab/.github/pull/1021) is the bounded successor to closed-unmerged [PR #840](https://github.com/ContextualWisdomLab/.github/pull/840). It proposes an end-to-end versioned envelope, live-base binding, and review-only route; protected-main consumer acceptance remains required. |`active_pr`|
86
88
|`IG-002` counted independent reviewer |[Issue #772](https://github.com/ContextualWisdomLab/.github/issues/772)| Tracks planned implementation of a non-author human reviewer path that GitHub counts. |`planned`|
87
89
|`IG-003` external-head convergence |[Issue #889](https://github.com/ContextualWisdomLab/.github/issues/889)| Tracks planned implementation of one safe review-or-reject contract across privileged entrypoints. |`planned`|
88
90
|`IG-004` cross-workflow writer fencing |[Issue #890](https://github.com/ContextualWisdomLab/.github/issues/890)| Tracks planned implementation of a shared repository/branch lease, TTL, heartbeat, takeover, and fencing. |`planned`|
Copy file name to clipboardExpand all lines: docs/automation/TRD.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -233,7 +233,7 @@ type and maturity are mapped in [TRACEABILITY.md](TRACEABILITY.md).
233
233
234
234
| ID | Audited protected-main behavior | Required closure |
235
235
|---|---|---|
236
-
|`IG-001`| Mention wrappers bind a claim, but the complete downstream review path does not yet preserve every versioned field, live-base observation, and review-only policy through authoritative publication. | Integrate and accept [PR #840](https://github.com/ContextualWisdomLab/.github/pull/840). |
236
+
|`IG-001`| Mention wrappers bind a claim, but the complete downstream review path does not yet preserve every versioned field, live-base observation, and review-only policy through authoritative publication. | Integrate and accept Draft [PR #1021](https://github.com/ContextualWisdomLab/.github/pull/1021), the bounded successor to closed-unmerged [PR #840](https://github.com/ContextualWisdomLab/.github/pull/840). |
237
237
|`IG-002`| Bot/model identities remain advisory; a counted qualifying independent non-author human approval is still externally required. | Establish the governance path in [Issue #772](https://github.com/ContextualWisdomLab/.github/issues/772). |
238
238
|`IG-003`| Privileged targeted scheduler, OpenCode, and Strix paths reject external heads while older policy prose described them as reviewable. | Align every entrypoint under [Issue #889](https://github.com/ContextualWisdomLab/.github/issues/889). |
239
239
|`IG-004`| Per-workflow concurrency, invocation claims, and expected-head guards exist, but there is no shared owner/TTL/heartbeat/fencing record across branch-mutating workflows. | Implement [Issue #890](https://github.com/ContextualWisdomLab/.github/issues/890). |
Copy file name to clipboardExpand all lines: docs/automation/adr/0009-sandbox-evidence-redaction-boundary.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,14 +1,14 @@
1
1
# ADR-0009: Redact the complete sandbox evidence boundary while preserving diagnosis
2
2
3
-
Status: Accepted; Draft [PR #906](https://github.com/ContextualWisdomLab/.github/pull/906) is the active integration path; [PR #888](https://github.com/ContextualWisdomLab/.github/pull/888)is closed unmerged as superseded incident evidence
3
+
Status: Accepted; [PR #1031](https://github.com/ContextualWisdomLab/.github/pull/1031) is the current open integration path; Draft [PR #906](https://github.com/ContextualWisdomLab/.github/pull/906) and [PR #888](https://github.com/ContextualWisdomLab/.github/pull/888)are closed unmerged as superseded incident evidence
4
4
Date: 2026-08-09
5
5
Decision owners: CWL security and CI maintainers
6
6
7
7
## Context
8
8
9
9
`sandboxed_verify.py` and `sandboxed_web_e2e.py` execute proof commands and publish completed output, timeout payloads, exceptions, backend/frontend service tails, command metadata, and structured result JSON. Applying redaction to only some print calls leaves credentials reachable through JSON, terminal/Unicode evasion, nested commands, explicit allowed environment values, or stream/result boundaries. Over-broad pattern matching can instead erase benign keys and the diagnostics needed to fix CI.
10
10
11
-
`ContextualWisdomLab/.github#841` identified the disclosure class but mixed an unrelated SSRF slice and missed publication paths. It was closed unmerged. Its first broad successor was also closed unmerged because secret-shaped fixtures remained in reachable history. [PR #888](https://github.com/ContextualWisdomLab/.github/pull/888) was the clean-history replacement, but a later committed credential-shaped fixture recontaminated its reachable history; it was closed unmerged and remains superseded incident evidence. Draft [PR #906](https://github.com/ContextualWisdomLab/.github/pull/906) is the current clean-history active replacement and preserves all predecessors as historical evidence.
11
+
`ContextualWisdomLab/.github#841` identified the disclosure class but mixed an unrelated SSRF slice and missed publication paths. It was closed unmerged. Its first broad successor was also closed unmerged because secret-shaped fixtures remained in reachable history. [PR #888](https://github.com/ContextualWisdomLab/.github/pull/888) was the clean-history replacement, but a later committed credential-shaped fixture recontaminated its reachable history; it was closed unmerged and remains superseded incident evidence. Draft [PR #906](https://github.com/ContextualWisdomLab/.github/pull/906) is also closed unmerged `superseded`. [PR #1031](https://github.com/ContextualWisdomLab/.github/pull/1031) is the current open successor; do not merge overlapping [PR #929](https://github.com/ContextualWisdomLab/.github/pull/929) in parallel.
12
12
13
13
## Decision drivers
14
14
@@ -62,7 +62,7 @@ This reduces credential disclosure and log-injection risk while preserving audit
62
62
63
63
## Migration and rollback
64
64
65
-
Integrate Draft [PR #906](https://github.com/ContextualWisdomLab/.github/pull/906) through normal protection after it becomes review-ready, then run a synthetic credential fixture from protected main and an affected consumer. Update the PR body, doctoring, and CHANGELOG with only final exact-head numbers. If regression requires rollback, disable the affected evidence publication or revert to a reviewed fail-closed no-output path; do not restore a known disclosure path.
65
+
Integrate [PR #1031](https://github.com/ContextualWisdomLab/.github/pull/1031) through normal protection after current-head gates and qualifying review pass, then run a synthetic credential fixture from protected main and an affected consumer. Update the PR body, doctoring, and CHANGELOG with only final exact-head numbers. If regression requires rollback, disable the affected evidence publication or revert to a reviewed fail-closed no-output path; do not restore a known disclosure path.
0 commit comments