Add CTO Core promotion decision packet
This commit is contained in:
parent
00d13f6b6f
commit
dd58709f0d
127
.sot/03-PROTOCOLS/CTO-CORE-PROMOTION-DECISION-PACKET-CLOSEOUT.md
Normal file
127
.sot/03-PROTOCOLS/CTO-CORE-PROMOTION-DECISION-PACKET-CLOSEOUT.md
Normal file
@ -0,0 +1,127 @@
|
||||
---
|
||||
name: CTO Core Promotion Decision Packet Closeout
|
||||
status: validated
|
||||
lifecycle_classification: sot
|
||||
owner: jp
|
||||
created: 2026-06-02
|
||||
last_reviewed: 2026-06-02
|
||||
core_promotion_status: not-promoted
|
||||
source: .sot/03-PROTOCOLS/CTO-CORE-PROMOTION-DECISION-RECORD.md
|
||||
---
|
||||
|
||||
# CTO Core Promotion Decision Packet Closeout
|
||||
|
||||
Local planning SOT only. Not a Core Protocol. Not active Core authority.
|
||||
|
||||
Core Promotion Decision Packet.
|
||||
|
||||
## Workboard
|
||||
|
||||
- `CTO-WORK-085`
|
||||
- `CTO-WORK-086`
|
||||
- `CTO-WORK-087`
|
||||
- `CTO-WORK-088`
|
||||
|
||||
## Result
|
||||
|
||||
- status: validated
|
||||
- validated child-local repeatability evidence; not Core promotion; not Runtime default activation
|
||||
- decision_status: core_promotion_requested
|
||||
- ready_for_core_review: true
|
||||
- recommended_next_decision: open_governed_core_prd_route
|
||||
- candidate_default_repeatability_eligible: true
|
||||
- repeatability_count: 2
|
||||
- repeatability_status: pass
|
||||
- runtime_default_activation: false
|
||||
- core_promotion_status: not-promoted
|
||||
- Runtime default activation remains false.
|
||||
- No Core promotion occurs.
|
||||
- No Core mutation occurs.
|
||||
- no target repository mutation attempted
|
||||
- no Case execution attempted
|
||||
- Do not activate Case as default backend.
|
||||
- This closeout does not authorize another Case run.
|
||||
|
||||
## Evidence Map
|
||||
|
||||
| Evidence | Status | Pointer |
|
||||
| --- | --- | --- |
|
||||
| Governed execution evidence | validated | `CTO-WORK-071` |
|
||||
| Hermes live smoke remote sync | validated | `CTO-WORK-075` |
|
||||
| CTO endgoal completion audit | validated | `CTO-WORK-077` |
|
||||
| Stage 5 repeatability evidence | validated | `CTO-WORK-080` |
|
||||
| Stage 6 repeatability PRD | validated | `CTO-WORK-081` |
|
||||
| Stage 6 repeatability Harness route | validated | `CTO-WORK-082` |
|
||||
| Hermes repeatability control summary | validated | `CTO-WORK-083` |
|
||||
| Stage 6 repeatability evidence closeout | validated | `CTO-WORK-084` |
|
||||
|
||||
## Artifact Evidence
|
||||
|
||||
- Stage 6 repeatability comparison artifact: `/home/svrnty/.hermes/profiles/cto-planb/harness-runs/20260602T104507Z-stage6-real-governed-refresh/stage6-real-governed-refresh-comparison.json`
|
||||
- Hermes WebUI summary artifact: `/home/svrnty/.hermes/profiles/cto-planb/harness-runs/20260602T104552Z-run-all-fake-2738738/webui-summary.json`
|
||||
- first governed Stage 5 report: `/home/svrnty/.hermes/profiles/cto-planb/harness-runs/20260601T105222Z-r1-src-string-slugify-180161/report.json`
|
||||
- repeat governed Stage 5 report: `/home/svrnty/.hermes/profiles/cto-planb/harness-runs/20260602T101450Z-r1-slugify-punctuation-2663598/report.json`
|
||||
- first target commit: `7706f99`
|
||||
- repeat target commit: `2fa1601`
|
||||
- Hermes implementation commit: `05ab2ff`
|
||||
- Hermes merge commit: `40b0d9a`
|
||||
- CTO baseline merge commit before this packet: `00d13f6`
|
||||
|
||||
## Readiness Facts
|
||||
|
||||
- Cortex governs: proven
|
||||
- CTO routes: proven
|
||||
- Hermes controls: proven
|
||||
- Harness proves: proven
|
||||
- Case executes only after proof: proven
|
||||
- bounded code changes with evidence: proven
|
||||
- target repos stay owned and protected: proven
|
||||
- default status is earned not assumed: proven
|
||||
- candidate-default evidence: proven
|
||||
- repeatability_count: 2
|
||||
- repeatability_status: pass
|
||||
- candidate_default_repeatability_eligible: true
|
||||
- runtime_default_activation: false
|
||||
- core_promotion_status: not-promoted
|
||||
- Codex lane: blocked with rationale
|
||||
- Pi lane: blocked with rationale
|
||||
|
||||
## Future Core Route Requirements
|
||||
|
||||
Any future Core route must:
|
||||
|
||||
- start from the Core workspace, not this CTO workspace;
|
||||
- classify the promoted object class before mutation;
|
||||
- obey the Core Sequence Protocol;
|
||||
- update Core SOT only through a governed Core PRD and SOT Issue route;
|
||||
- add Core validator coverage before any promotion claim;
|
||||
- produce Core Evidence before any Core authority claim;
|
||||
- keep runtime default activation separate from candidate-default readiness;
|
||||
- preserve no-secret, no-endpoint-value, no-raw-Target-Repository-content rules;
|
||||
- preserve rollback by keeping Case disabled until a later governed route changes runtime default activation.
|
||||
|
||||
## Blockers Before Promotion
|
||||
|
||||
- No Core PRD exists for CTO promotion.
|
||||
- No Core SOT Issue exists for CTO promotion.
|
||||
- No Core validator for CTO promotion exists.
|
||||
- No Core Evidence file exists for CTO promotion.
|
||||
- No Core Sequence Protocol route has selected CTO promotion as current work.
|
||||
- Runtime default activation remains false.
|
||||
|
||||
## Explicit Non-Authority
|
||||
|
||||
This packet is a decision packet, not execution evidence, not Core Evidence, not a Core Protocol, not a runtime switch, and not a promotion approval.
|
||||
|
||||
Do not push, merge, deploy, close, PR open, issue close, publish, mutate vendor source, mutate external developer repositories, mutate unowned repositories, expose endpoint values, expose secret values, expose credential values, or expose raw Target Repository content.
|
||||
|
||||
Do not treat Case, Hermes, Pi, Codex, Harness, or CTO as Cortex OS authority.
|
||||
|
||||
## Validation
|
||||
|
||||
- `python3 tools/validate_cto_child.py`: required
|
||||
- `python3 /home/svrnty/workspaces/cortex-os/core/tools/check_s69_caveman_prose_discipline.py`: required before final claim
|
||||
|
||||
## Decision
|
||||
|
||||
CTO evidence is ready for Core review. The next pragmatic move is to open a governed Core PRD route only if JP or a governed Core route chooses to pursue promotion. Until that separate route exists and passes Core validators, Core promotion remains not-promoted and runtime default activation remains false.
|
||||
111
.sot/03-PROTOCOLS/CTO-CORE-PROMOTION-DECISION-PACKET-ISSUES.md
Normal file
111
.sot/03-PROTOCOLS/CTO-CORE-PROMOTION-DECISION-PACKET-ISSUES.md
Normal file
@ -0,0 +1,111 @@
|
||||
---
|
||||
name: CTO Core Promotion Decision Packet Issues
|
||||
status: validated
|
||||
lifecycle_classification: sot
|
||||
owner: jp
|
||||
created: 2026-06-02
|
||||
last_reviewed: 2026-06-02
|
||||
core_promotion_status: not-promoted
|
||||
source: .sot/03-PROTOCOLS/CTO-CORE-PROMOTION-DECISION-PACKET-PRD.md
|
||||
---
|
||||
|
||||
# CTO Core Promotion Decision Packet Issues
|
||||
|
||||
Local planning SOT only. Not a Core Protocol. Not active Core authority.
|
||||
|
||||
Core Promotion Decision Packet.
|
||||
|
||||
## Issue: CTO-WORK-085 - Core Promotion Decision Packet PRD
|
||||
|
||||
Type: AFK.
|
||||
|
||||
Status: validated.
|
||||
|
||||
Acceptance:
|
||||
|
||||
- Define child-local packet scope.
|
||||
- Add Core Promotion Decision Packet to `CONTEXT.md`.
|
||||
- Define allowed decision states: `not_decided`, `core_promotion_requested`, and `core_promotion_deferred`.
|
||||
- Require `ready_for_core_review: true`.
|
||||
- Require candidate_default_repeatability_eligible: true.
|
||||
- Require repeatability_count: 2.
|
||||
- Require repeatability_status: pass.
|
||||
- Require runtime_default_activation: false.
|
||||
- Require core_promotion_status: not-promoted.
|
||||
- Require recommended_next_decision: open_governed_core_prd_route.
|
||||
- Require Core Sequence Protocol route required.
|
||||
- Require Core validator coverage required.
|
||||
- Require runtime default activation requires a separate governed Core route.
|
||||
- Forbid Core mutation, Target Repository mutation, Case execution, default activation, push, merge, deploy, close, PR open, issue close, publication, vendor-source mutation, external developer repository mutation, unowned repository mutation, endpoint exposure, secret exposure, credential exposure, and raw Target Repository content exposure.
|
||||
|
||||
## Issue: CTO-WORK-086 - Core Promotion Decision Record
|
||||
|
||||
Type: AFK.
|
||||
|
||||
Status: validated.
|
||||
|
||||
Blocked by: `CTO-WORK-085`.
|
||||
|
||||
Acceptance:
|
||||
|
||||
- Create the Core Promotion Decision Record.
|
||||
- Record `decision_status: core_promotion_requested`.
|
||||
- Record allowed decision states: `not_decided`, `core_promotion_requested`, and `core_promotion_deferred`.
|
||||
- Record resolver: JP or governed Core route.
|
||||
- Record `ready_for_core_review: true`.
|
||||
- Record candidate_default_repeatability_eligible: true.
|
||||
- Record repeatability_count: 2.
|
||||
- Record repeatability_status: pass.
|
||||
- Record runtime_default_activation: false.
|
||||
- Record core_promotion_status: not-promoted.
|
||||
- Record recommended_next_decision: open_governed_core_prd_route.
|
||||
- Record Core Sequence Protocol route required.
|
||||
- Record Core validator coverage required.
|
||||
- Record no Core mutation, no Target Repository mutation, no Case execution, and no default activation.
|
||||
|
||||
## Issue: CTO-WORK-087 - Core Promotion Decision Packet Closeout
|
||||
|
||||
Type: AFK.
|
||||
|
||||
Status: validated.
|
||||
|
||||
Blocked by: `CTO-WORK-086`.
|
||||
|
||||
Acceptance:
|
||||
|
||||
- Create the Core Promotion Decision Packet closeout.
|
||||
- Map evidence from `CTO-WORK-071`, `CTO-WORK-075`, `CTO-WORK-077`, `CTO-WORK-080`, `CTO-WORK-081`, `CTO-WORK-082`, `CTO-WORK-083`, and `CTO-WORK-084`.
|
||||
- Reference Stage 6 repeatability comparison artifact.
|
||||
- Reference Hermes WebUI summary artifact.
|
||||
- Record validated child-local repeatability evidence; not Core promotion; not Runtime default activation.
|
||||
- State Runtime default activation remains false.
|
||||
- State No Core promotion occurs.
|
||||
- State Do not activate Case as default backend.
|
||||
- State This closeout does not authorize another Case run.
|
||||
|
||||
## Issue: CTO-WORK-088 - Core Promotion Decision Packet Validation
|
||||
|
||||
Type: AFK.
|
||||
|
||||
Status: validated.
|
||||
|
||||
Blocked by: `CTO-WORK-087`.
|
||||
|
||||
Acceptance:
|
||||
|
||||
- Update `tools/validate_cto_child.py`.
|
||||
- Register `CTO-WORK-085`, `CTO-WORK-086`, `CTO-WORK-087`, and `CTO-WORK-088`.
|
||||
- Require PRD, issue sequence, decision record, and closeout phrases.
|
||||
- Require Workboard statuses validated.
|
||||
- Require `python3 tools/validate_cto_child.py` to pass.
|
||||
- Require `python3 /home/svrnty/workspaces/cortex-os/core/tools/check_s69_caveman_prose_discipline.py` before final claim.
|
||||
|
||||
## Granularity Check
|
||||
|
||||
This sequence is one vertical CTO route: define the decision packet contract, record the fail-closed decision state, close out the packet against existing evidence, and validate the packet. It deliberately avoids a Core implementation slice because Core promotion is a separate governed decision.
|
||||
|
||||
## Challenge Notes
|
||||
|
||||
- `$to-issues` output stays AFK because the work is child-local documentation plus validator coverage.
|
||||
- `$improve-codebase-architecture` feedback accepted: do not add a new runtime seam when the SOT plus validator seam is enough.
|
||||
- `$grill-with-docs` feedback accepted: use `ready_for_core_review` and `Core Promotion Decision Packet`, not promoted, approved, or runtime default active.
|
||||
133
.sot/03-PROTOCOLS/CTO-CORE-PROMOTION-DECISION-PACKET-PRD.md
Normal file
133
.sot/03-PROTOCOLS/CTO-CORE-PROMOTION-DECISION-PACKET-PRD.md
Normal file
@ -0,0 +1,133 @@
|
||||
---
|
||||
name: CTO Core Promotion Decision Packet PRD
|
||||
status: validated
|
||||
lifecycle_classification: sot
|
||||
owner: jp
|
||||
created: 2026-06-02
|
||||
last_reviewed: 2026-06-02
|
||||
core_promotion_status: not-promoted
|
||||
source: .sot/03-PROTOCOLS/CTO-CASE-STAGE6-REPEATABILITY-REFRESH-EVIDENCE.md
|
||||
---
|
||||
|
||||
# CTO Core Promotion Decision Packet PRD
|
||||
|
||||
Local planning SOT only. Not a Core Protocol. Not active Core authority.
|
||||
|
||||
Core Promotion Decision Packet.
|
||||
|
||||
## Problem Statement
|
||||
|
||||
CTO now has validated child-local evidence through Stage 6 repeatability: two governed Stage 5 Case passes, a read-only Stage 6 repeatability refresh, Hermes Control Surface replay data, runtime default activation false, and Core promotion status not-promoted. Without one compact decision packet, the next operator or Core route has to reconstruct readiness from many artifacts and can misread candidate-default readiness as promotion or runtime default authority.
|
||||
|
||||
## Solution
|
||||
|
||||
Create a child-local Core Promotion Decision Packet that maps validated CTO evidence to one future governed Core review decision. The packet records `decision_status: core_promotion_requested`, `ready_for_core_review: true`, `candidate_default_repeatability_eligible: true`, `runtime_default_activation: false`, and `core_promotion_status: not-promoted`. It recommends opening a separate governed Core PRD route if JP or a governed Core route chooses to pursue promotion. It does not mutate Core, promote CTO artifacts, activate Case as runtime default, or authorize another Case run.
|
||||
|
||||
## Scope
|
||||
|
||||
- Register `CTO-WORK-085`, `CTO-WORK-086`, `CTO-WORK-087`, and `CTO-WORK-088`.
|
||||
- Define the packet as child-local CTO planning only.
|
||||
- Define allowed decision states: `not_decided`, `core_promotion_requested`, and `core_promotion_deferred`.
|
||||
- Set the current decision state to `core_promotion_requested` as a request for Core review, not as promotion approval.
|
||||
- Map evidence from `CTO-WORK-071`, `CTO-WORK-075`, `CTO-WORK-077`, `CTO-WORK-080`, `CTO-WORK-081`, `CTO-WORK-082`, `CTO-WORK-083`, and `CTO-WORK-084`.
|
||||
- Include repeatability_count: 2.
|
||||
- Include repeatability_status: pass.
|
||||
- Include candidate_default_repeatability_eligible: true.
|
||||
- Include runtime_default_activation: false.
|
||||
- Include Core promotion status not-promoted.
|
||||
- Reference the Stage 6 repeatability comparison artifact.
|
||||
- Reference the Hermes WebUI summary artifact.
|
||||
- Record the recommended next decision as `open_governed_core_prd_route`.
|
||||
- State Core Sequence Protocol route required before any Core mutation.
|
||||
- State Core validator coverage required before any Core promotion claim.
|
||||
- State runtime default activation requires a separate governed Core route.
|
||||
- State no new target repository mutation occurs.
|
||||
- State no Core file mutation occurs in this CTO slice.
|
||||
- Preserve secrets, endpoints, credential values, and raw Target Repository content out of SOT.
|
||||
|
||||
## Non-Goals
|
||||
|
||||
- Do not promote CTO artifacts into Core.
|
||||
- Do not activate Case as default backend.
|
||||
- Do not run Case.
|
||||
- Do not mutate target repositories.
|
||||
- Do not mutate `../core/`.
|
||||
- Do not edit upstream `hermes-webui`.
|
||||
- Do not edit upstream `hermes-agent`.
|
||||
- Do not create Runtime behavior.
|
||||
- Do not create a new backend, provider, adapter, harness command, or WebUI control.
|
||||
- Do not push, merge, deploy, close, PR open, issue close, public publication, vendor-source mutation, external developer repository mutation, unowned repository mutation, endpoint exposure, secret exposure, credential exposure, or raw Target Repository content exposure.
|
||||
- Do not treat Case, Hermes, Pi, Codex, Harness, or CTO as Cortex OS authority.
|
||||
|
||||
## User Stories
|
||||
|
||||
1. As JP, I want one compact readiness packet, so that I can decide whether to open a governed Core review without reading every CTO artifact first.
|
||||
2. As Cortex OS Core, I want child-local evidence to remain child-local until routed, so that promotion cannot happen by wording.
|
||||
3. As CTO, I want candidate-default readiness separated from runtime default activation, so that repeatability evidence cannot become execution authority.
|
||||
4. As Hermes, I want replay paths preserved in the packet, so that proof can be inspected without copying runtime artifacts into SOT.
|
||||
5. As a future Core agent, I want explicit blockers and required validators, so that a Core PRD route can start from a clear contract.
|
||||
|
||||
## Implementation Decisions
|
||||
|
||||
- The packet is a SOT document in the CTO workspace, not a generated artifact and not a Core Protocol.
|
||||
- The packet is the interface for this slice; no runtime module, adapter, or new command is introduced.
|
||||
- The decision record uses only `not_decided`, `core_promotion_requested`, and `core_promotion_deferred`.
|
||||
- The packet records `ready_for_core_review: true` rather than `promoted`, `approved`, or `runtime_default_active`.
|
||||
- The packet maps evidence by Workboard IDs and replay artifact paths instead of copying runtime JSON, proof logs, or raw Target Repository content.
|
||||
- The packet's next action is a decision route: `open_governed_core_prd_route`.
|
||||
- Any later promotion must happen from the Core workspace under the Core Sequence Protocol, Core object classification, Core validators, and Core Evidence.
|
||||
|
||||
## Testing Decisions
|
||||
|
||||
- Test at the highest existing seam: `python3 tools/validate_cto_child.py`.
|
||||
- Validator coverage must require the packet files, Workboard IDs, readiness fields, authority guards, replay paths, and forbidden-action language.
|
||||
- Core caveman prose discipline remains required before claim or final answer.
|
||||
- No Harness aggregate is required for this slice because no Hermes, Harness, Case, or Target Repository behavior changes.
|
||||
|
||||
## Challenge Review
|
||||
|
||||
- `$zoom-out`: accepted. The packet maps the vertical chain: Cortex governs, CTO routes, Hermes controls, Harness proves, Case executes, Target Repository stays owned.
|
||||
- `$improve-codebase-architecture`: accepted. The deepest useful interface is the existing SOT plus validator seam; adding a runtime abstraction would create shallow machinery.
|
||||
- `$grill-with-docs`: accepted. `Core Promotion Decision Packet` is added to `CONTEXT.md`, and the canonical readiness term is `ready_for_core_review`.
|
||||
- Reviewer feedback accepted: use a separate decision record and closeout so the decision state is fail-closed and the validation proof is explicit.
|
||||
- Reviewer feedback accepted: preserve exact guard phrases `No Core promotion occurs.`, `Do not activate Case as default backend.`, and `This closeout does not authorize another Case run.`
|
||||
- Rejected feedback: promote directly into Core now. This is an irreversible authority choice and requires a governed Core route.
|
||||
- Rejected feedback: activate Case as runtime default now. Repeatability proves review readiness only; default activation needs separate Core authority.
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
- `WORKBOARD.yaml` records `CTO-WORK-085`, `CTO-WORK-086`, `CTO-WORK-087`, and `CTO-WORK-088` as validated.
|
||||
- `CONTEXT.md` defines Core Promotion Decision Packet.
|
||||
- The PRD, issue sequence, decision record, and closeout all state Local planning SOT only. Not a Core Protocol. Not active Core authority.
|
||||
- The decision record defines only `not_decided`, `core_promotion_requested`, and `core_promotion_deferred`.
|
||||
- The packet records `decision_status: core_promotion_requested`.
|
||||
- The packet records `ready_for_core_review: true`.
|
||||
- The packet records `candidate_default_repeatability_eligible: true`.
|
||||
- The packet records `repeatability_count: 2`.
|
||||
- The packet records `repeatability_status: pass`.
|
||||
- The packet records `runtime_default_activation: false`.
|
||||
- The packet records `core_promotion_status: not-promoted`.
|
||||
- The packet records `recommended_next_decision: open_governed_core_prd_route`.
|
||||
- The packet states Core Sequence Protocol route required.
|
||||
- The packet states Core validator coverage required.
|
||||
- The packet states runtime default activation requires a separate governed Core route.
|
||||
- The packet references the Stage 6 repeatability comparison artifact.
|
||||
- The packet references the Hermes WebUI summary artifact.
|
||||
- The packet states no Core mutation, no Target Repository mutation, no Case execution, and no default activation occur in this slice.
|
||||
- The CTO validator checks the PRD, issue sequence, decision record, closeout, and Workboard statuses.
|
||||
|
||||
## Validation
|
||||
|
||||
- `python3 tools/validate_cto_child.py`
|
||||
- `python3 /home/svrnty/workspaces/cortex-os/core/tools/check_s69_caveman_prose_discipline.py`
|
||||
|
||||
## Risks And Dependencies
|
||||
|
||||
- Readiness language can be misread as promotion. Mitigation: require `ready_for_core_review`, `core_promotion_status: not-promoted`, and runtime default activation false.
|
||||
- The future Core route can conflict with current Core Sequence Protocol priorities. Mitigation: the packet recommends review only and requires Core Sequence Protocol routing before Core mutation.
|
||||
- Evidence paths can drift. Mitigation: packet records exact replay artifact paths and Workboard IDs.
|
||||
- New CTO text can overstate authority. Mitigation: CTO validator requires authority guard phrases and forbidden-action language.
|
||||
|
||||
## Success Definition
|
||||
|
||||
CTO has one validated Core Promotion Decision Packet that says candidate-default evidence is ready for Core review, while Core promotion remains not-promoted, runtime default activation remains false, no Core or Target Repository mutation occurs, and any promotion must begin as a separate governed Core PRD route.
|
||||
57
.sot/03-PROTOCOLS/CTO-CORE-PROMOTION-DECISION-RECORD.md
Normal file
57
.sot/03-PROTOCOLS/CTO-CORE-PROMOTION-DECISION-RECORD.md
Normal file
@ -0,0 +1,57 @@
|
||||
---
|
||||
name: CTO Core Promotion Decision Record
|
||||
status: validated
|
||||
lifecycle_classification: sot
|
||||
owner: jp
|
||||
created: 2026-06-02
|
||||
last_reviewed: 2026-06-02
|
||||
core_promotion_status: not-promoted
|
||||
source: .sot/03-PROTOCOLS/CTO-CORE-PROMOTION-DECISION-PACKET-ISSUES.md
|
||||
---
|
||||
|
||||
# CTO Core Promotion Decision Record
|
||||
|
||||
Local planning SOT only. Not a Core Protocol. Not active Core authority.
|
||||
|
||||
Core Promotion Decision Packet.
|
||||
|
||||
## Decision State
|
||||
|
||||
- decision_status: core_promotion_requested
|
||||
- allowed_decision_states: `not_decided`, `core_promotion_requested`, `core_promotion_deferred`
|
||||
- resolver: JP or governed Core route
|
||||
- ready_for_core_review: true
|
||||
- recommended_next_decision: open_governed_core_prd_route
|
||||
- candidate_default_repeatability_eligible: true
|
||||
- repeatability_count: 2
|
||||
- repeatability_status: pass
|
||||
- runtime_default_activation: false
|
||||
- core_promotion_status: not-promoted
|
||||
|
||||
## Consequences
|
||||
|
||||
- `not_decided` means no Core promotion request exists.
|
||||
- `core_promotion_requested` means CTO requests a future governed Core review. It does not grant Core authority.
|
||||
- `core_promotion_deferred` means CTO evidence remains child-local and no Core route should be opened from this packet.
|
||||
|
||||
## Required Future Core Route
|
||||
|
||||
- Core Sequence Protocol route required.
|
||||
- Core validator coverage required.
|
||||
- Core Evidence required.
|
||||
- Core PRD required.
|
||||
- Core SOT Issue required.
|
||||
- runtime default activation requires a separate governed Core route.
|
||||
- Core promotion, if chosen later, must happen only in `core/` or a governed Core worktree, not `cto/`.
|
||||
|
||||
## Guardrails
|
||||
|
||||
- No Core promotion occurs.
|
||||
- No Core mutation occurs.
|
||||
- Runtime default activation remains false.
|
||||
- Do not activate Case as default backend.
|
||||
- no target repository mutation attempted
|
||||
- no Case execution attempted
|
||||
- This closeout does not authorize another Case run.
|
||||
- This record does not authorize another Case run.
|
||||
- Do not expose endpoint values, secret values, credential values, or raw Target Repository content.
|
||||
@ -36,3 +36,7 @@ _Avoid_: Core authority, runtime default switch, backend approval source
|
||||
**Governed Workflow Delegation**:
|
||||
A bounded real coding task routed through CTO, approved through Hermes/operator policy, executed by an eligible backend, and accepted only through CTO Harness evidence.
|
||||
_Avoid_: autonomous default execution, unmanaged Case task, direct repo mutation
|
||||
|
||||
**Core Promotion Decision Packet**:
|
||||
A child-local CTO artifact that maps validated CTO evidence to a future governed Core decision route. It may request Core review, but it does not grant Core authority or runtime default activation.
|
||||
_Avoid_: promotion approval, Core authority, runtime default switch
|
||||
|
||||
@ -54,6 +54,10 @@ This workspace is registered as a child-local planning workspace. Registration d
|
||||
| |-- CTO-CASE-STAGE5-TARGET-REPOSITORY-ADMISSION.json
|
||||
| |-- CTO-CASE-STAGE6-CANDIDATE-DEFAULT-PRD.md
|
||||
| |-- CTO-CASE-STAGE6-CANDIDATE-DEFAULT-ISSUES.md
|
||||
| |-- CTO-CORE-PROMOTION-DECISION-PACKET-PRD.md
|
||||
| |-- CTO-CORE-PROMOTION-DECISION-PACKET-ISSUES.md
|
||||
| |-- CTO-CORE-PROMOTION-DECISION-RECORD.md
|
||||
| |-- CTO-CORE-PROMOTION-DECISION-PACKET-CLOSEOUT.md
|
||||
| |-- CTO-HERMES-CONTROL-SURFACE-PRD.md
|
||||
| |-- CTO-HERMES-CONTROL-SURFACE-ISSUES.md
|
||||
| |-- CTO-FIRST-REAL-GOVERNED-WORKFLOW-PRD.md
|
||||
|
||||
@ -421,3 +421,23 @@ items:
|
||||
status: validated
|
||||
source: .sot/03-PROTOCOLS/CTO-CASE-STAGE6-REPEATABILITY-REFRESH-EVIDENCE.md
|
||||
owner: ""
|
||||
- id: CTO-WORK-085
|
||||
title: Core Promotion Decision Packet PRD
|
||||
status: validated
|
||||
source: .sot/03-PROTOCOLS/CTO-CORE-PROMOTION-DECISION-PACKET-PRD.md
|
||||
owner: ""
|
||||
- id: CTO-WORK-086
|
||||
title: Core Promotion Decision Record
|
||||
status: validated
|
||||
source: .sot/03-PROTOCOLS/CTO-CORE-PROMOTION-DECISION-RECORD.md
|
||||
owner: ""
|
||||
- id: CTO-WORK-087
|
||||
title: Core Promotion Decision Packet Closeout
|
||||
status: validated
|
||||
source: .sot/03-PROTOCOLS/CTO-CORE-PROMOTION-DECISION-PACKET-CLOSEOUT.md
|
||||
owner: ""
|
||||
- id: CTO-WORK-088
|
||||
title: Core Promotion Decision Packet Validation
|
||||
status: validated
|
||||
source: .sot/03-PROTOCOLS/CTO-CORE-PROMOTION-DECISION-PACKET-ISSUES.md
|
||||
owner: ""
|
||||
|
||||
@ -84,6 +84,10 @@ REQUIRED_FILES = [
|
||||
".sot/03-PROTOCOLS/CTO-CASE-STAGE6-REPEATABILITY-REFRESH-PRD.md",
|
||||
".sot/03-PROTOCOLS/CTO-CASE-STAGE6-REPEATABILITY-REFRESH-ISSUES.md",
|
||||
".sot/03-PROTOCOLS/CTO-CASE-STAGE6-REPEATABILITY-REFRESH-EVIDENCE.md",
|
||||
".sot/03-PROTOCOLS/CTO-CORE-PROMOTION-DECISION-PACKET-PRD.md",
|
||||
".sot/03-PROTOCOLS/CTO-CORE-PROMOTION-DECISION-PACKET-ISSUES.md",
|
||||
".sot/03-PROTOCOLS/CTO-CORE-PROMOTION-DECISION-RECORD.md",
|
||||
".sot/03-PROTOCOLS/CTO-CORE-PROMOTION-DECISION-PACKET-CLOSEOUT.md",
|
||||
".sot/03-PROTOCOLS/CTO-FIRST-REAL-GOVERNED-WORKFLOW-PRD.md",
|
||||
".sot/03-PROTOCOLS/CTO-FIRST-REAL-GOVERNED-WORKFLOW-ISSUES.md",
|
||||
".sot/03-PROTOCOLS/CTO-FIRST-REAL-GOVERNED-WORKFLOW-APPROVAL-PACKET.md",
|
||||
@ -1408,6 +1412,139 @@ REQUIRED_STAGE6_REPEATABILITY_REFRESH_EVIDENCE_PHRASES = [
|
||||
"JP chat approval on 2026-06-01",
|
||||
]
|
||||
|
||||
REQUIRED_CORE_PROMOTION_DECISION_PACKET_PRD_PHRASES = [
|
||||
"Local planning SOT only. Not a Core Protocol. Not active Core authority.",
|
||||
"Core Promotion Decision Packet",
|
||||
"CTO-WORK-085",
|
||||
"CTO-WORK-086",
|
||||
"CTO-WORK-087",
|
||||
"CTO-WORK-088",
|
||||
"not_decided",
|
||||
"core_promotion_requested",
|
||||
"core_promotion_deferred",
|
||||
"ready_for_core_review: true",
|
||||
"candidate_default_repeatability_eligible: true",
|
||||
"repeatability_count: 2",
|
||||
"repeatability_status: pass",
|
||||
"runtime_default_activation: false",
|
||||
"core_promotion_status: not-promoted",
|
||||
"recommended_next_decision: open_governed_core_prd_route",
|
||||
"Core Sequence Protocol route required",
|
||||
"Core validator coverage required",
|
||||
"runtime default activation requires a separate governed Core route",
|
||||
"No Harness aggregate is required for this slice",
|
||||
"Do not promote CTO artifacts into Core.",
|
||||
"Do not activate Case as default backend.",
|
||||
"Do not mutate `../core/`.",
|
||||
"No Core promotion occurs.",
|
||||
"This closeout does not authorize another Case run.",
|
||||
]
|
||||
|
||||
REQUIRED_CORE_PROMOTION_DECISION_PACKET_ISSUE_PHRASES = [
|
||||
"Local planning SOT only. Not a Core Protocol. Not active Core authority.",
|
||||
"Core Promotion Decision Packet",
|
||||
"CTO-WORK-085",
|
||||
"CTO-WORK-086",
|
||||
"CTO-WORK-087",
|
||||
"CTO-WORK-088",
|
||||
"not_decided",
|
||||
"core_promotion_requested",
|
||||
"core_promotion_deferred",
|
||||
"ready_for_core_review: true",
|
||||
"candidate_default_repeatability_eligible: true",
|
||||
"repeatability_count: 2",
|
||||
"repeatability_status: pass",
|
||||
"runtime_default_activation: false",
|
||||
"core_promotion_status: not-promoted",
|
||||
"recommended_next_decision: open_governed_core_prd_route",
|
||||
"Core Sequence Protocol route required",
|
||||
"Core validator coverage required",
|
||||
"runtime default activation requires a separate governed Core route",
|
||||
"validated child-local repeatability evidence; not Core promotion; not Runtime default activation",
|
||||
"Runtime default activation remains false.",
|
||||
"No Core promotion occurs.",
|
||||
"Do not activate Case as default backend.",
|
||||
"This closeout does not authorize another Case run.",
|
||||
"python3 tools/validate_cto_child.py",
|
||||
]
|
||||
|
||||
REQUIRED_CORE_PROMOTION_DECISION_RECORD_PHRASES = [
|
||||
"Local planning SOT only. Not a Core Protocol. Not active Core authority.",
|
||||
"Core Promotion Decision Packet",
|
||||
"decision_status: core_promotion_requested",
|
||||
"allowed_decision_states: `not_decided`, `core_promotion_requested`, `core_promotion_deferred`",
|
||||
"resolver: JP or governed Core route",
|
||||
"ready_for_core_review: true",
|
||||
"recommended_next_decision: open_governed_core_prd_route",
|
||||
"candidate_default_repeatability_eligible: true",
|
||||
"repeatability_count: 2",
|
||||
"repeatability_status: pass",
|
||||
"runtime_default_activation: false",
|
||||
"core_promotion_status: not-promoted",
|
||||
"Core Sequence Protocol route required.",
|
||||
"Core validator coverage required.",
|
||||
"Core promotion, if chosen later, must happen only in `core/` or a governed Core worktree, not `cto/`.",
|
||||
"No Core promotion occurs.",
|
||||
"No Core mutation occurs.",
|
||||
"Runtime default activation remains false.",
|
||||
"Do not activate Case as default backend.",
|
||||
"no target repository mutation attempted",
|
||||
"no Case execution attempted",
|
||||
"This closeout does not authorize another Case run.",
|
||||
]
|
||||
|
||||
REQUIRED_CORE_PROMOTION_DECISION_PACKET_CLOSEOUT_PHRASES = [
|
||||
"Local planning SOT only. Not a Core Protocol. Not active Core authority.",
|
||||
"Core Promotion Decision Packet",
|
||||
"CTO-WORK-085",
|
||||
"CTO-WORK-086",
|
||||
"CTO-WORK-087",
|
||||
"CTO-WORK-088",
|
||||
"validated child-local repeatability evidence; not Core promotion; not Runtime default activation",
|
||||
"decision_status: core_promotion_requested",
|
||||
"ready_for_core_review: true",
|
||||
"recommended_next_decision: open_governed_core_prd_route",
|
||||
"candidate_default_repeatability_eligible: true",
|
||||
"repeatability_count: 2",
|
||||
"repeatability_status: pass",
|
||||
"runtime_default_activation: false",
|
||||
"core_promotion_status: not-promoted",
|
||||
"Runtime default activation remains false.",
|
||||
"No Core promotion occurs.",
|
||||
"No Core mutation occurs.",
|
||||
"no target repository mutation attempted",
|
||||
"no Case execution attempted",
|
||||
"Do not activate Case as default backend.",
|
||||
"This closeout does not authorize another Case run.",
|
||||
"CTO-WORK-071",
|
||||
"CTO-WORK-075",
|
||||
"CTO-WORK-077",
|
||||
"CTO-WORK-080",
|
||||
"CTO-WORK-081",
|
||||
"CTO-WORK-082",
|
||||
"CTO-WORK-083",
|
||||
"CTO-WORK-084",
|
||||
"/home/svrnty/.hermes/profiles/cto-planb/harness-runs/20260602T104507Z-stage6-real-governed-refresh/stage6-real-governed-refresh-comparison.json",
|
||||
"/home/svrnty/.hermes/profiles/cto-planb/harness-runs/20260602T104552Z-run-all-fake-2738738/webui-summary.json",
|
||||
"7706f99",
|
||||
"2fa1601",
|
||||
"05ab2ff",
|
||||
"40b0d9a",
|
||||
"00d13f6",
|
||||
"Cortex governs: proven",
|
||||
"Harness proves: proven",
|
||||
"Case executes only after proof: proven",
|
||||
"candidate-default evidence: proven",
|
||||
"Codex lane: blocked with rationale",
|
||||
"Pi lane: blocked with rationale",
|
||||
"Core Sequence Protocol",
|
||||
"No Core PRD exists for CTO promotion.",
|
||||
"No Core SOT Issue exists for CTO promotion.",
|
||||
"No Core validator for CTO promotion exists.",
|
||||
"No Core Evidence file exists for CTO promotion.",
|
||||
"No Core Sequence Protocol route has selected CTO promotion as current work.",
|
||||
]
|
||||
|
||||
|
||||
def workboard_status(text: str, issue_id: str) -> str | None:
|
||||
pattern = rf"- id: {re.escape(issue_id)}\n(?: .+\n)*? status: ([^\n]+)"
|
||||
@ -1956,6 +2093,46 @@ def main() -> int:
|
||||
if phrase not in text:
|
||||
errors.append(f"missing_stage6_repeatability_evidence_phrase:{phrase}")
|
||||
|
||||
core_promotion_decision_packet_prd = ROOT / ".sot/03-PROTOCOLS/CTO-CORE-PROMOTION-DECISION-PACKET-PRD.md"
|
||||
if core_promotion_decision_packet_prd.is_file():
|
||||
text = core_promotion_decision_packet_prd.read_text(encoding="utf-8")
|
||||
if "core_promotion_status: not-promoted" not in text:
|
||||
errors.append("core_promotion_decision_packet_prd_missing_not_promoted_frontmatter")
|
||||
for phrase in REQUIRED_CORE_PROMOTION_DECISION_PACKET_PRD_PHRASES:
|
||||
checked.append(f"core_promotion_decision_packet_prd_phrase:{phrase}")
|
||||
if phrase not in text:
|
||||
errors.append(f"missing_core_promotion_decision_packet_prd_phrase:{phrase}")
|
||||
|
||||
core_promotion_decision_packet_issues = ROOT / ".sot/03-PROTOCOLS/CTO-CORE-PROMOTION-DECISION-PACKET-ISSUES.md"
|
||||
if core_promotion_decision_packet_issues.is_file():
|
||||
text = core_promotion_decision_packet_issues.read_text(encoding="utf-8")
|
||||
if "core_promotion_status: not-promoted" not in text:
|
||||
errors.append("core_promotion_decision_packet_issues_missing_not_promoted_frontmatter")
|
||||
for phrase in REQUIRED_CORE_PROMOTION_DECISION_PACKET_ISSUE_PHRASES:
|
||||
checked.append(f"core_promotion_decision_packet_issue_phrase:{phrase}")
|
||||
if phrase not in text:
|
||||
errors.append(f"missing_core_promotion_decision_packet_issue_phrase:{phrase}")
|
||||
|
||||
core_promotion_decision_record = ROOT / ".sot/03-PROTOCOLS/CTO-CORE-PROMOTION-DECISION-RECORD.md"
|
||||
if core_promotion_decision_record.is_file():
|
||||
text = core_promotion_decision_record.read_text(encoding="utf-8")
|
||||
if "core_promotion_status: not-promoted" not in text:
|
||||
errors.append("core_promotion_decision_record_missing_not_promoted_frontmatter")
|
||||
for phrase in REQUIRED_CORE_PROMOTION_DECISION_RECORD_PHRASES:
|
||||
checked.append(f"core_promotion_decision_record_phrase:{phrase}")
|
||||
if phrase not in text:
|
||||
errors.append(f"missing_core_promotion_decision_record_phrase:{phrase}")
|
||||
|
||||
core_promotion_decision_packet_closeout = ROOT / ".sot/03-PROTOCOLS/CTO-CORE-PROMOTION-DECISION-PACKET-CLOSEOUT.md"
|
||||
if core_promotion_decision_packet_closeout.is_file():
|
||||
text = core_promotion_decision_packet_closeout.read_text(encoding="utf-8")
|
||||
if "core_promotion_status: not-promoted" not in text:
|
||||
errors.append("core_promotion_decision_packet_closeout_missing_not_promoted_frontmatter")
|
||||
for phrase in REQUIRED_CORE_PROMOTION_DECISION_PACKET_CLOSEOUT_PHRASES:
|
||||
checked.append(f"core_promotion_decision_packet_closeout_phrase:{phrase}")
|
||||
if phrase not in text:
|
||||
errors.append(f"missing_core_promotion_decision_packet_closeout_phrase:{phrase}")
|
||||
|
||||
prd = ROOT / ".sot/03-PROTOCOLS/CTO-CASE-CANDIDATE-BACKEND-PRD.md"
|
||||
if prd.is_file():
|
||||
text = prd.read_text(encoding="utf-8")
|
||||
@ -2489,6 +2666,10 @@ def main() -> int:
|
||||
checked.append(f"workboard_id:{issue_id}")
|
||||
if issue_id not in text:
|
||||
errors.append(f"missing_workboard_id:{issue_id}")
|
||||
for issue_id in ["CTO-WORK-085", "CTO-WORK-086", "CTO-WORK-087", "CTO-WORK-088"]:
|
||||
checked.append(f"workboard_id:{issue_id}")
|
||||
if issue_id not in text:
|
||||
errors.append(f"missing_workboard_id:{issue_id}")
|
||||
expected_statuses = {
|
||||
"CTO-WORK-001": "validated",
|
||||
"CTO-WORK-002": "validated",
|
||||
@ -2571,6 +2752,10 @@ def main() -> int:
|
||||
"CTO-WORK-082": "validated",
|
||||
"CTO-WORK-083": "validated",
|
||||
"CTO-WORK-084": "validated",
|
||||
"CTO-WORK-085": "validated",
|
||||
"CTO-WORK-086": "validated",
|
||||
"CTO-WORK-087": "validated",
|
||||
"CTO-WORK-088": "validated",
|
||||
}
|
||||
for issue_id, expected in expected_statuses.items():
|
||||
checked.append(f"workboard_status:{issue_id}:{expected}")
|
||||
@ -2649,6 +2834,14 @@ def main() -> int:
|
||||
errors.append("workboard_missing_qwen_local_admission_json_source")
|
||||
if "CTO-CASE-SPARK-ENDPOINT-CONFIG-ISSUES.md" not in text:
|
||||
errors.append("workboard_missing_spark_endpoint_config_issues_source")
|
||||
if "CTO-CORE-PROMOTION-DECISION-PACKET-PRD.md" not in text:
|
||||
errors.append("workboard_missing_core_promotion_decision_packet_prd_source")
|
||||
if "CTO-CORE-PROMOTION-DECISION-PACKET-ISSUES.md" not in text:
|
||||
errors.append("workboard_missing_core_promotion_decision_packet_issues_source")
|
||||
if "CTO-CORE-PROMOTION-DECISION-RECORD.md" not in text:
|
||||
errors.append("workboard_missing_core_promotion_decision_record_source")
|
||||
if "CTO-CORE-PROMOTION-DECISION-PACKET-CLOSEOUT.md" not in text:
|
||||
errors.append("workboard_missing_core_promotion_decision_packet_closeout_source")
|
||||
|
||||
payload = {
|
||||
"ok": not errors,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user