docs: class-ready cut is private Pro compose root (#143)
* docs(program): adopt class-ready Pro-dev cutover track Stop blocking range readiness on unfinished Phase 3–6 contracts; document a companion Pro-dev stack that preserves Community independence. * docs(program): reframe class-ready cut as private build root Success is sirius-pro as the sole mutable Compose/build root on the range with locked Community digests on :3000/:9001; companion sidecars alone do not satisfy the cutoff.
This commit is contained in:
@@ -72,6 +72,15 @@ Dependencies and order:
|
||||
6. Phase 5 Enterprise Reporting; depends on Phase 4.
|
||||
7. Phase 6 compatibility, promotion, cleanup, and reconciliation; depends on Phase 5.
|
||||
|
||||
Accelerated class-ready track (parallel, not a replacement):
|
||||
|
||||
- API Module and OpenAPI are sufficient to start a private companion Pro-dev
|
||||
API/UI/worker composition for class use.
|
||||
- Phase 3.3-3.6 and Phases 4-6 remain required for the integrated Pro product, but do
|
||||
not block the explicitly non-production companion cut.
|
||||
- The class cut, stub boundary, commands, and human gates are recorded in
|
||||
`programs/complete-split-deploy-to-range/CLASS_READY_CUT.md`.
|
||||
|
||||
Ownership:
|
||||
|
||||
- Each bounded task records exclusive writable paths before execution.
|
||||
@@ -262,7 +271,8 @@ status: active
|
||||
verdict: accepted
|
||||
artifact_verdict: accepted
|
||||
loop_decision: continue
|
||||
next_action: Implement task 3.3, the versioned public event envelope and additive queue compatibility contract.
|
||||
execution_priority: deferred-for-class-ready-cut
|
||||
next_action: Resume task 3.3 after the class-ready Pro-dev demonstration, or earlier only if the companion implementation finds a concrete event-contract blocker.
|
||||
```
|
||||
|
||||
## Stage 3: Private Supply Chain
|
||||
@@ -578,6 +588,33 @@ Current task:
|
||||
- Existing Community queue regression tests
|
||||
- `next_action`: Inventory existing queue payloads and implement task 3.3.
|
||||
|
||||
Execution priority is temporarily deferred by the operator's class-readiness
|
||||
directive. The task, criteria, full Phase 3 exit criterion, and original acceptance
|
||||
criteria remain intact.
|
||||
|
||||
## Parallel Stage CR: Class-ready Pro-dev Cut
|
||||
|
||||
This stage accelerates a class demonstration; it does not complete Phase 3, Phase 4,
|
||||
Phase 5, Phase 6, or the full bifurcation acceptance criteria.
|
||||
|
||||
Tasks:
|
||||
|
||||
- [x] Inspect the private repositories, Phase 5 overlay contract, immutable Community
|
||||
lock, current Community deployment evidence, and range access path
|
||||
- [x] Select a companion Pro-dev API/UI/worker cut with explicit dev-only
|
||||
entitlements and no Pro migrations
|
||||
- [ ] Implement the private images and `docker-compose.community-lock.yaml` plus
|
||||
`docker-compose.pro-dev.yaml` in `OpenSecurity-Infosec/sirius-pro`
|
||||
- [ ] Publish tested private images by digest after separate human approval
|
||||
- [ ] Back up, deploy, verify instructor paths, and prove Community-only rollback on
|
||||
VMID 220 after separate range-owner approval
|
||||
|
||||
Class-ready scope and handoff:
|
||||
`programs/complete-split-deploy-to-range/CLASS_READY_CUT.md`.
|
||||
|
||||
Planning/discovery evidence:
|
||||
`programs/complete-split-deploy-to-range/evaluations/complete-split-deploy-to-range.scr.t001.md`.
|
||||
|
||||
## Stage 5: Entitlements and First Vertical
|
||||
|
||||
Tasks:
|
||||
|
||||
@@ -0,0 +1,297 @@
|
||||
# Class-ready Pro-dev cut
|
||||
|
||||
Date: 2026-07-31
|
||||
|
||||
This is an accelerated, non-production track inside the existing bifurcation
|
||||
program. It does not replace or weaken the full Community/Pro acceptance criteria.
|
||||
It establishes a private Pro working-tree / Compose build root on the range so that
|
||||
development mutations stay in `OpenSecurity-Infosec/sirius-pro`, while Community is
|
||||
consumed only as immutable digests. Full contract, entitlement, Reporting, and
|
||||
release tracks continue separately.
|
||||
|
||||
## Decision
|
||||
|
||||
**Success for this cut** is that private `OpenSecurity-Infosec/sirius-pro` is the
|
||||
**sole mutable Compose and build root** on the approved range host, checked out at
|
||||
`/home/agi/sirius-pro`. Community is consumed only through `core.lock.yaml`
|
||||
immutable digests for tag `v1.1.0`. Canonical operator ports `:3000` (UI) and
|
||||
`:9001` (API) are owned by the Pro-owned Compose project. `/home/agi/Sirius` is
|
||||
retired from the development path (read-only pin of the locked Community tag, or
|
||||
unused).
|
||||
|
||||
**Companion sidecars alone do not satisfy this cutoff.** Private services listening
|
||||
only on `:3100` / `:9101` / `:9102` while Community continues to own `:3000` /
|
||||
`:9001` from `/home/agi/Sirius` leave the range as a Community development surface
|
||||
and are insufficient, even if those sidecars are healthy.
|
||||
|
||||
| Layer | Class-ready implementation | Boundary |
|
||||
| --- | --- | --- |
|
||||
| Private build root | Range development and Compose project live under `/home/agi/sirius-pro` from private `sirius-pro` | Sole mutable working tree for Pro-dev on the range |
|
||||
| Community core | Six Community `v1.1.0` images from `core.lock.yaml`, referenced only by exact `@sha256:` digests | No private credentials required to run Community alone elsewhere; on the range, Pro Compose owns the project that pulls those digests |
|
||||
| Canonical ports | Pro-owned Compose project binds `:3000` and `:9001` | Operator and instructor paths stay on the existing ports |
|
||||
| `/home/agi/Sirius` | Detached read-only pin of `v1.1.0` or left unused; not the active Compose project directory | Not a development write path; no local Community forks or private Community clones |
|
||||
| Optional Pro-dev stubs | Private API/UI/worker stubs may exist, but only as overlays inside the Pro-owned project | Sidecars on `:3100`/`:9101`/`:9102` are optional and **not** the acceptance signal |
|
||||
| Shared fixes | Bugfixes that belong in Community remain public-first per ADR-001/ADR-002 | No private Community fork; no exporting private commits into public as the product model |
|
||||
| Product features | None required for this cut | No Reporting, entitlements platform, event contract, UI registry, or engine interface work |
|
||||
|
||||
The private repository should contain (exact layout may evolve in private work, but
|
||||
the range outcome above is fixed):
|
||||
|
||||
- `core.lock.yaml`: already pins Community `v1.1.0` source commit and six release
|
||||
digests; remains the only Community input.
|
||||
- A Pro-owned Compose project that pulls those locked digests and owns `:3000` /
|
||||
`:9001` (and any optional Pro-dev services).
|
||||
- A validator that rejects mutable image references for locked Community and private
|
||||
images, and rejects treating `/home/agi/Sirius` as the active development Compose
|
||||
root.
|
||||
- Optional class artifacts (`pro-dev.lock.yaml`, stub services) that must not redefine
|
||||
success away from the private build-root cutoff.
|
||||
|
||||
This shape deliberately avoids unfinished public event, UI registry, engine, and
|
||||
entitlement contracts. Those remain blockers for the integrated product, not for
|
||||
establishing the private working-tree cutoff.
|
||||
|
||||
## Non-goals
|
||||
|
||||
- Private fork or private clone of Community as the product model.
|
||||
- Making shared Community fixes land first (or only) in private trees.
|
||||
- Shipping Enterprise Reporting, signed licenses, event contracts, UI registry,
|
||||
engine interfaces, or other product features for this cut.
|
||||
- Claiming that healthy companion sidecars on non-canonical ports complete the cut.
|
||||
- Weakening Community independence, leakage controls, or the full program acceptance
|
||||
criteria.
|
||||
|
||||
## Scope split
|
||||
|
||||
### A. Must ship for the class demo
|
||||
|
||||
- Private `sirius-pro` is the sole mutable Compose/build root on the range at
|
||||
`/home/agi/sirius-pro`.
|
||||
- Community is consumed only via `core.lock.yaml` immutable digests for `v1.1.0`
|
||||
(source commit `b61b47b468cfc5c837a5bde50eeafe52df4fe10d` and the six locked
|
||||
image digests).
|
||||
- The Pro-owned Compose project owns canonical ports `:3000` and `:9001`; health
|
||||
probes against those ports succeed from the approved client path.
|
||||
- `/home/agi/Sirius` is not used as the active development Compose project
|
||||
(read-only pin of `v1.1.0` or unused).
|
||||
- No private Community fork; public-first shared fixes per ADR-001/ADR-002 remain
|
||||
policy.
|
||||
- Pre-change database backup and prior Community checkout/image state are recorded
|
||||
before the range change.
|
||||
- No Pro schema/migration is required for this cut; Community volumes and scan data
|
||||
remain the rollback authority where volumes are reused.
|
||||
|
||||
### B. May ship stubbed/dev (optional; not acceptance)
|
||||
|
||||
- Private Pro-dev API/UI/worker stubs and non-canonical ports (`:3100`, `:9101`,
|
||||
`:9102`) may be present inside the Pro-owned project.
|
||||
- Explicit `non-production` / fail-closed entitlement stubs if useful for demos.
|
||||
- Digested private images and a class `pro-dev.lock.yaml`.
|
||||
|
||||
These do **not** replace the must-ship private build-root and canonical-port
|
||||
criteria.
|
||||
|
||||
### C. Deferred to the full program
|
||||
|
||||
- Public event envelope, UI registry, engine interfaces, and full compatibility
|
||||
harness (Phase 3.3-3.6).
|
||||
- Capability catalog integration, signed offline licenses, KMS/key rotation, grace,
|
||||
renewal, and lifecycle matrices (Phase 4).
|
||||
- Pro schema, migrations, real event consumption, scheduling, PDF/CSV output, audit
|
||||
history, and integrated Reporting UI/API/worker (Phase 5).
|
||||
- Nightly compatibility, full SBOM/provenance/signing promotion, release manifests,
|
||||
and promotion-by-retag (Phase 6).
|
||||
- Counsel, EULA/customer distribution, customer licenses, production deployment,
|
||||
and any external release claim.
|
||||
|
||||
## Evidence and blockers at cut selection
|
||||
|
||||
- `sirius-pro` previously started as a skeleton; local private work may already
|
||||
include companion stubs (for example services on `:9101`/`:3100`/`:9102`). Those
|
||||
stubs are **not** cutoff completion.
|
||||
- `sirius-pro/core.lock.yaml` already pins Community `v1.1.0` source commit
|
||||
`b61b47b468cfc5c837a5bde50eeafe52df4fe10d` and all six release digests.
|
||||
- Community main advances separately; it is not the immutable six-image class input.
|
||||
Use the `v1.1.0` lock for this cut.
|
||||
- The last independent range receipt (2026-07-31) says VMID 220 was started and
|
||||
Community UI/API returned 200. The installed checkout was previously recorded as
|
||||
`/home/agi/Sirius` using mutable `latest`; live state must be re-read before change.
|
||||
- Companion sidecars published privately while `/home/agi/Sirius` still owns
|
||||
`:3000`/`:9001` do **not** meet success.
|
||||
- Private repositories are outside the public Sirius checkout; private source must
|
||||
not be staged in Community as a workaround.
|
||||
- Private Pro images, GHCR pull credentials, and a network-capable operator session
|
||||
remain execution blockers for the deployment gate—not for documenting this cutoff.
|
||||
|
||||
No additional public product contract is a blocker for the private build-root cut.
|
||||
The real blockers are private Compose/build-root implementation that owns the
|
||||
canonical ports, private image publication as needed, GHCR read access on the guest,
|
||||
backup/approval gates, and a network-capable operator session for the approved
|
||||
deployment gate.
|
||||
|
||||
## Ordered execution checklist
|
||||
|
||||
### 1. Implement and validate the private build root — agent
|
||||
|
||||
Run the next agent cycle with
|
||||
`/Users/oz/Projects/Sirius-Project/private/sirius-pro` as a writable workspace. Own
|
||||
only that repository. Establish a Pro-owned Compose project that:
|
||||
|
||||
1. Consumes Community solely via `core.lock.yaml` digests (`v1.1.0`).
|
||||
2. Owns `:3000` and `:9001` in the rendered Compose project.
|
||||
3. Treats companion sidecars as optional overlays, not as success.
|
||||
4. Rejects mutable Community/private image references in validation.
|
||||
|
||||
Required validation after the files exist (adjust paths to the private layout):
|
||||
|
||||
```bash
|
||||
cd /Users/oz/Projects/Sirius-Project/private/sirius-pro
|
||||
# Native tests for any private packages that exist
|
||||
# Compose/config validation that lists rendered images and requires @sha256:
|
||||
bash scripts/validate-pro-dev-compose.sh
|
||||
git diff --check
|
||||
```
|
||||
|
||||
Commit locally in private; do not push without a human gate.
|
||||
|
||||
### 2. Review, publish, and record private images — human gates
|
||||
|
||||
1. Human reviews the local private diff and explicitly approves push/PR/merge.
|
||||
2. Human separately approves any private image workflow dispatch required for the
|
||||
Pro-owned project.
|
||||
3. Digests used on the range are recorded; this class cut does not claim deferred
|
||||
Phase 6 promotion guarantees.
|
||||
4. Human provisions a least-privilege `read:packages` credential to the range guest
|
||||
when private images are required. Do not commit it or copy it into Compose/YAML.
|
||||
|
||||
### 3. Re-enter the range read-only — human/operator
|
||||
|
||||
The previously proven access path is:
|
||||
|
||||
```bash
|
||||
ssh -i ~/.ssh/dev01_agi -o BatchMode=yes \
|
||||
-o ProxyCommand="ssh -i ~/.ssh/dev01_agi -o BatchMode=yes -W %h:%p agi@192.168.123.200" \
|
||||
agi@10.0.10.20
|
||||
```
|
||||
|
||||
Before approval to change anything, collect:
|
||||
|
||||
```bash
|
||||
# Current Community path (legacy; must not remain the active Pro-dev root)
|
||||
cd /home/agi/Sirius
|
||||
git status --short --branch
|
||||
git rev-parse HEAD
|
||||
docker compose ps
|
||||
docker ps --format '{{.Names}} {{.Image}} {{.Status}}'
|
||||
curl -fsS http://127.0.0.1:9001/health
|
||||
curl -fsS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:3000/
|
||||
|
||||
# Target private root (may be absent before cutover)
|
||||
ls -la /home/agi/sirius-pro 2>/dev/null || true
|
||||
```
|
||||
|
||||
If this path fails, stop and report whether the failure is jump-host SSH, guest SSH,
|
||||
VM power, or guest service health. Do not add routes, firewall rules, or restart VMID
|
||||
220 without a separate range-owner approval.
|
||||
|
||||
### 4. Back up and stage — human deployment gate
|
||||
|
||||
After range-owner approval, preserve the existing state without exposing secrets:
|
||||
|
||||
```bash
|
||||
install -d -m 700 /home/agi/backups
|
||||
cd /home/agi/Sirius
|
||||
git rev-parse HEAD > /home/agi/backups/sirius-pre-pro-dev.git-sha
|
||||
docker ps --no-trunc --format '{{.Names}} {{.Image}} {{.Status}}' \
|
||||
> /home/agi/backups/sirius-pre-pro-dev.containers.txt
|
||||
docker exec sirius-postgres sh -lc \
|
||||
'pg_dump -U "$POSTGRES_USER" -d "$POSTGRES_DB" -Fc' \
|
||||
> /home/agi/backups/sirius-pre-pro-dev.dump
|
||||
test -s /home/agi/backups/sirius-pre-pro-dev.dump
|
||||
```
|
||||
|
||||
Stage the reviewed private tree at `/home/agi/sirius-pro`. Retire `/home/agi/Sirius`
|
||||
from the development path: either leave it unused or move it to a detached
|
||||
read-only pin of public `v1.1.0` (same commit as `core.lock.yaml`). Do not develop
|
||||
against `/home/agi/Sirius` after cutover.
|
||||
|
||||
```bash
|
||||
# Optional read-only Community pin (not the active Compose root)
|
||||
cd /home/agi/Sirius
|
||||
test -z "$(git status --porcelain --untracked-files=no)"
|
||||
git fetch --tags origin v1.1.0
|
||||
git checkout --detach v1.1.0
|
||||
test "$(git rev-parse HEAD)" = b61b47b468cfc5c837a5bde50eeafe52df4fe10d
|
||||
```
|
||||
|
||||
Existing ignored `.env` and secret files remain Vault-derived runtime mirrors;
|
||||
copy or re-point them into the Pro-owned project as the operator runbook requires,
|
||||
without committing secrets.
|
||||
|
||||
Log in to GHCR only via standard input from the human-provided ephemeral environment
|
||||
when private images are required:
|
||||
|
||||
```bash
|
||||
printf '%s' "$SIRIUS_PRO_GHCR_PULL_TOKEN" | \
|
||||
docker login ghcr.io --username "$SIRIUS_PRO_GHCR_USER" --password-stdin
|
||||
unset SIRIUS_PRO_GHCR_PULL_TOKEN
|
||||
```
|
||||
|
||||
### 5. Render, deploy, and verify — agent observes; human executes
|
||||
|
||||
Deploy from `/home/agi/sirius-pro` as the Compose project directory (exact compose
|
||||
file names follow the private repository layout). The project must own `:3000` and
|
||||
`:9001` and pull Community only by locked digests.
|
||||
|
||||
Illustrative shape (adjust `-f` paths to the private tree):
|
||||
|
||||
```bash
|
||||
cd /home/agi/sirius-pro
|
||||
docker compose --env-file .env \
|
||||
--project-directory /home/agi/sirius-pro -p sirius \
|
||||
-f <pro-owned-compose-files> \
|
||||
config --images
|
||||
|
||||
docker compose --env-file .env \
|
||||
--project-directory /home/agi/sirius-pro -p sirius \
|
||||
-f <pro-owned-compose-files> \
|
||||
pull
|
||||
|
||||
docker compose --env-file .env \
|
||||
--project-directory /home/agi/sirius-pro -p sirius \
|
||||
-f <pro-owned-compose-files> \
|
||||
up -d
|
||||
```
|
||||
|
||||
Acceptance probes (canonical ports are required):
|
||||
|
||||
```bash
|
||||
curl -fsS http://127.0.0.1:9001/health
|
||||
curl -fsS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:3000/
|
||||
# Confirm active Compose project directory is /home/agi/sirius-pro
|
||||
# Confirm rendered Community images match core.lock.yaml digests
|
||||
# Confirm /home/agi/Sirius is not the active project directory
|
||||
```
|
||||
|
||||
Optional sidecar probes (`:9101`, `:3100`, `:9102`) may be recorded if those
|
||||
services exist; they are **not** sufficient for acceptance.
|
||||
|
||||
The instructor then verifies the scan/UI path on the canonical ports from the
|
||||
approved client path.
|
||||
|
||||
### 6. Prove Community-data rollback / restore — human deployment gate
|
||||
|
||||
Do not use `down --volumes` or delete any volume without a separate destructive
|
||||
approval. Prove that core data remains readable after cutover operations, and that
|
||||
the Pro-owned project can be reconciled without destroying Community volumes.
|
||||
|
||||
Verify an existing scan remains readable. Capture evidence before any further
|
||||
overlay changes. Human approval is required before restoring or advancing state.
|
||||
|
||||
## Immediate human gate
|
||||
|
||||
Approve documentation of this private build-root cutoff on the Community feature
|
||||
branch, then continue private `sirius-pro` implementation so the range Compose root
|
||||
moves to `/home/agi/sirius-pro` with locked Community digests on `:3000`/`:9001`.
|
||||
Do not treat companion sidecars alone as done. Do not approve range mutation,
|
||||
publication, or deployment without the separate gates above.
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
goal: "Complete the Sirius Community/Pro product split, publish a runnable Pro distribution that consumes immutable Community releases, and deploy and verify that Pro distribution in the approved range environment."
|
||||
status: "active"
|
||||
status: "waiting"
|
||||
acceptance_criteria:
|
||||
- "The existing bifurcation program completes its public contracts, entitlement platform, first Pro vertical, compatibility automation, and release closeout without weakening the completed Community release or private-foundation controls."
|
||||
- "A tagged Community core release remains independently runnable without private credentials, packages, repositories, licenses, or Pro artifacts and passes leakage, upgrade, and regression checks."
|
||||
@@ -9,6 +9,7 @@ acceptance_criteria:
|
||||
- "The Pro Compose overlay deploys to the approved SIRIUS range host (VMID 220 / 10.0.10.20), passes health and instructor-path E2E checks, and can be removed while Community and core data remain healthy."
|
||||
- "License valid, expired, grace, renewed, Community-to-Pro, Pro upgrade, and Pro-to-Community-only lifecycle tests pass with existing scan data retained and readable."
|
||||
- "The public repository and artifacts contain no private source, module paths, registry references, credentials, or Pro runtime code after final release and deployment."
|
||||
- "A parallel class-ready Pro-dev cut may be demonstrated before full closeout only when private OpenSecurity-Infosec/sirius-pro is the sole mutable Compose/build root on the range (/home/agi/sirius-pro), Community is consumed only via core.lock.yaml immutable digests (v1.1.0), and canonical ports :3000/:9001 are owned by that Pro project with /home/agi/Sirius retired from the development path; companion sidecars on :3100/:9101/:9102 alone do not satisfy the cut; this does not satisfy or delete the full Pro release criteria above."
|
||||
human_gates:
|
||||
- "Human approval before every push, pull request, merge, public or private tag/release, package publication, or promotion."
|
||||
- "Human approval before creating or rotating signing identities, KMS keys, license keys, credentials, secrets, package namespaces, or external infrastructure."
|
||||
@@ -61,6 +62,20 @@ Dependencies and order:
|
||||
6. Back up the range data, deploy the digest-pinned Pro overlay, execute E2E/lifecycle
|
||||
tests, prove overlay removal/data integrity, then restore the accepted Pro state.
|
||||
|
||||
Accelerated parallel track:
|
||||
|
||||
- After the completed API Module and OpenAPI contracts, the class-ready cut may
|
||||
establish a private Pro working-tree / Compose build root on the range without
|
||||
waiting for Phase 3.3-6 or shipping product features.
|
||||
- Success is private `sirius-pro` at `/home/agi/sirius-pro` as the sole mutable
|
||||
Compose/build root, Community only via `core.lock.yaml` digests (`v1.1.0`),
|
||||
canonical ports `:3000`/`:9001` owned by that project, and `/home/agi/Sirius`
|
||||
retired from the development path. Companion sidecars alone do not complete the
|
||||
cut. No private Community fork; shared fixes remain public-first (ADR-001/002).
|
||||
- The full ordered dependency chain and every original acceptance criterion remain
|
||||
required for an actual Pro release. See
|
||||
`programs/complete-split-deploy-to-range/CLASS_READY_CUT.md`.
|
||||
|
||||
Repository-native validation:
|
||||
|
||||
- Affected Go package tests plus `go test -race` for public contracts and entitlement
|
||||
@@ -118,6 +133,38 @@ Tasks:
|
||||
- [ ] Complete API inventory/OpenAPI, event, UI, and engine extension contracts
|
||||
- [ ] Publish and verify the tagged compatible Community contract release
|
||||
|
||||
## Parallel Stage CR: Class-ready Pro-dev Cut
|
||||
|
||||
Owned paths for the planning/discovery task:
|
||||
|
||||
- `programs/complete-split-deploy-to-range/PROGRAM.md`
|
||||
- `programs/complete-split-deploy-to-range/CLASS_READY_CUT.md`
|
||||
- `programs/complete-split-deploy-to-range/evaluations/`
|
||||
- `programs/bifurcation/PROGRAM.md`
|
||||
|
||||
Owned path for the next implementation task (requires a new writable workspace):
|
||||
|
||||
- `/Users/oz/Projects/Sirius-Project/private/sirius-pro`
|
||||
|
||||
Tasks:
|
||||
|
||||
- [x] Inspect private scaffold, immutable lock, Community Compose state, and prior
|
||||
range evidence
|
||||
- [x] Define the class-ready must/stub/deferred boundary and exact execution checklist
|
||||
- [x] Reframe class success as private working-tree/build-root cutoff (not companion
|
||||
sidecars alone); document in `CLASS_READY_CUT.md`
|
||||
- [ ] Implement and locally validate private `sirius-pro` as the Pro-owned Compose
|
||||
build root that consumes `core.lock.yaml` digests and owns `:3000`/`:9001`
|
||||
- [ ] Cross separate human gates for private push/review, image publication (if any),
|
||||
GHCR pull access, range backup, and deployment
|
||||
- [ ] Deploy so `/home/agi/sirius-pro` is the active root, retire `/home/agi/Sirius`
|
||||
from the development path, verify canonical ports and locked digests, prove data
|
||||
health
|
||||
|
||||
Class-ready is an accelerated demonstration milestone only. It does not mark Stages
|
||||
2-5 or the program acceptance criteria complete. Optional Pro-dev sidecars on
|
||||
`:3100`/`:9101`/`:9102` are not the acceptance signal.
|
||||
|
||||
## Stage 3: Entitlements and Enterprise Reporting
|
||||
|
||||
Owned paths:
|
||||
@@ -216,14 +263,14 @@ Local task evidence (cycle 1):
|
||||
- Decision: API inventory/OpenAPI accepted; continue with the event contract as
|
||||
`complete-split-deploy-to-range.s2.t003`.
|
||||
|
||||
## Current task
|
||||
## Paused full-track task
|
||||
|
||||
- `task_id`: `complete-split-deploy-to-range.s2.t003`
|
||||
- `stage`: `2 Complete Public Contracts`
|
||||
- `cycle`: `2`
|
||||
- `attempt`: `1`
|
||||
- `assigned_role`: `grok`
|
||||
- `status`: `active`
|
||||
- `status`: `deferred`
|
||||
- `verdict`: `pending`
|
||||
- `artifact_verdict`: `pending`
|
||||
- `loop_decision`: `continue`
|
||||
@@ -243,6 +290,9 @@ Local task evidence (cycle 1):
|
||||
- Existing Community queue regression tests
|
||||
- `next_action`: Inventory existing queue payloads and implement bifurcation task 3.3.
|
||||
|
||||
This task is retained unchanged and resumes after the class-ready cut, or earlier only
|
||||
if the private build-root cutoff reveals a concrete event-contract blocker.
|
||||
|
||||
Local task evidence:
|
||||
|
||||
- The approved go-api push published reviewed commits `4f48af4` and `ebd42f4`.
|
||||
@@ -269,3 +319,62 @@ Completion evidence:
|
||||
`programs/complete-split-deploy-to-range/evaluations/complete-split-deploy-to-range.s2.t001.md`.
|
||||
- Decision: task `complete-split-deploy-to-range.s2.t001` accepted; continue with API
|
||||
inventory and OpenAPI as `complete-split-deploy-to-range.s2.t002`.
|
||||
|
||||
## Current class-ready task
|
||||
|
||||
- `task_id`: `complete-split-deploy-to-range.scr.t001`
|
||||
- `stage`: `Parallel Class-Ready Cut`
|
||||
- `cycle`: `3`
|
||||
- `attempt`: `1`
|
||||
- `assigned_role`: `sol`
|
||||
- `status`: `done`
|
||||
- `verdict`: `accepted`
|
||||
- `artifact_verdict`: `null`
|
||||
- `loop_decision`: `human_gate`
|
||||
- `owned_paths`:
|
||||
- `programs/complete-split-deploy-to-range/PROGRAM.md`
|
||||
- `programs/complete-split-deploy-to-range/CLASS_READY_CUT.md`
|
||||
- `programs/complete-split-deploy-to-range/evaluations/complete-split-deploy-to-range.scr.t001.md`
|
||||
- `programs/bifurcation/PROGRAM.md`
|
||||
- `criteria`:
|
||||
- Establish the actual private scaffold and immutable Community input state.
|
||||
- Define class-ready success as a private Pro working-tree/build-root cutoff that
|
||||
does not require unfinished public contracts or weaken Community independence.
|
||||
- Record must-ship, optional stub, and deferred scope with commands and human gates.
|
||||
- Discover and attempt the previously proven range access path without changing
|
||||
routes, VM state, services, or credentials.
|
||||
- `validation`:
|
||||
- Private repository tree and Dockerfile/Compose inventory
|
||||
- Community production Compose render for `v1.1.0`
|
||||
- Existing core-manifest contract tests
|
||||
- Exact direct and ProxyJump reachability probes
|
||||
- Program evaluation validation and `git diff --check`
|
||||
- `next_task_id`: `complete-split-deploy-to-range.scr.t002`
|
||||
- `next_action`: Implement and locally validate private `sirius-pro` so the range
|
||||
Compose/build root becomes `/home/agi/sirius-pro` with Community only via
|
||||
`core.lock.yaml` digests and Pro ownership of `:3000`/`:9001`; companion sidecars
|
||||
alone are not acceptance. Stop before push/publication or range mutation without
|
||||
human gates.
|
||||
|
||||
Cycle 3 evidence:
|
||||
|
||||
- Private repositories are clean skeletons at `sirius-pro@16d483e`,
|
||||
`sirius-entitlements@ff1e4e2`, and `sirius-release@c7bbdc6`; only the release repo
|
||||
has a bootstrap Dockerfile and no private product Compose file exists.
|
||||
- `sirius-pro/core.lock.yaml` has exact, digest-addressed Community `v1.1.0` inputs.
|
||||
- The current Community Compose renders all seven service image uses (six distinct
|
||||
images; API is also the one-shot migrator) for `IMAGE_TAG=v1.1.0`.
|
||||
- Prior range evidence records `/home/agi/Sirius`, VMID 220, and the exact
|
||||
`agi@192.168.123.200` ProxyJump/ProxyCommand path. A 2026-07-31 receipt reports UI
|
||||
and API 200 after the VM was started.
|
||||
- This sandbox blocked direct TCP, route inspection, HTTP, and the exact ProxyCommand
|
||||
with `Operation not permitted`; no network, route, VM, container, or secret change
|
||||
was attempted.
|
||||
- Decision and execution handoff:
|
||||
`programs/complete-split-deploy-to-range/CLASS_READY_CUT.md`.
|
||||
- Evaluation:
|
||||
`programs/complete-split-deploy-to-range/evaluations/complete-split-deploy-to-range.scr.t001.md`.
|
||||
- Decision: planning/discovery accepted. A later docs correction reframes class
|
||||
success as the private working-tree/build-root cutoff; companion sidecars alone
|
||||
do not complete it. Continue private implementation toward `/home/agi/sirius-pro`
|
||||
owning `:3000`/`:9001` with locked Community digests.
|
||||
|
||||
+54
@@ -0,0 +1,54 @@
|
||||
---
|
||||
goal_id: complete-split-deploy-to-range
|
||||
task_id: complete-split-deploy-to-range.scr.t001
|
||||
run_id: parent-complete-split-deploy-to-range-scr-t001-cycle3-20260731
|
||||
execution_kind: parent
|
||||
cycle: 3
|
||||
attempt: 1
|
||||
evaluator_role: sol
|
||||
evaluated_at: "2026-07-31T21:18:04Z"
|
||||
evidence_paths: "CLASS_READY_CUT.md; private repo commits 16d483e/ff1e4e2/c7bbdc6; ellingson-range receipts dated 2026-07-29 and 2026-07-31; Community Compose render; direct TCP/HTTP and exact ProxyCommand probes"
|
||||
criteria:
|
||||
- id: grounded-current-state
|
||||
status: pass
|
||||
evidence:
|
||||
- "All three private repository trees, commits, locks, Compose/Dockerfile presence, Community Compose files, and Phase 5 overlay requirements were inspected."
|
||||
- id: minimal-class-ready-cut
|
||||
status: pass
|
||||
evidence:
|
||||
- "Planning accepted a runnable private cut using Community v1.1.0 digests without waiting for event/UI/engine contracts."
|
||||
- "Superseding docs correction (same program paths): success is private sirius-pro as sole mutable Compose/build root on the range (/home/agi/sirius-pro) owning :3000/:9001; companion sidecars on :3100/:9101/:9102 alone do not complete the cutoff."
|
||||
- id: scope-and-gates
|
||||
status: pass
|
||||
evidence:
|
||||
- "Must-ship, optional stub/dev, and deferred work are explicit, with ordered agent/human commands and separate publication/deployment gates."
|
||||
- id: range-access-discovery
|
||||
status: pass
|
||||
evidence:
|
||||
- "Prior receipts identify ProxyCommand agi@192.168.123.200 to agi@10.0.10.20 with ~/.ssh/dev01_agi and /home/agi/Sirius; this sandbox rejected the exact read-only probe with Operation not permitted."
|
||||
- id: community-independence
|
||||
status: pass
|
||||
evidence:
|
||||
- "No private implementation was written to Community; Community remains immutable digests via core.lock.yaml; no private Community fork; shared fixes stay public-first per ADR-001/002."
|
||||
verdict: accepted
|
||||
artifact_verdict: null
|
||||
loop_decision: human_gate
|
||||
residual_risk:
|
||||
- "Private Pro Compose/build-root ownership of canonical ports on the range is not yet deployed."
|
||||
- "Companion sidecar stubs (if present) must not be mistaken for cutoff completion."
|
||||
- "The range guest's live state cannot be re-read from this network-restricted sandbox."
|
||||
- "A least-privilege private GHCR pull credential for VMID 220 is not evidenced."
|
||||
- "The last range receipt shows Community was healthy, but the earlier install used mutable latest and an older checkout under /home/agi/Sirius."
|
||||
---
|
||||
|
||||
# Evaluation
|
||||
|
||||
The accelerated class-ready planning/discovery handoff is accepted. A later
|
||||
correction on the same program paths reframes class success: private
|
||||
`OpenSecurity-Infosec/sirius-pro` must become the sole mutable Compose/build root
|
||||
at `/home/agi/sirius-pro`, consuming Community only through `core.lock.yaml`
|
||||
immutable digests (`v1.1.0`), with Pro ownership of `:3000`/`:9001` and
|
||||
`/home/agi/Sirius` retired from the development path. Companion sidecars on
|
||||
`:3100`/`:9101`/`:9102` alone do **not** satisfy the cutoff. No unfinished public
|
||||
product contract blocks this cut. Stop at human gates for private implementation
|
||||
writes, image publication (if needed), credentials, backup, and range deployment.
|
||||
Reference in New Issue
Block a user