blocked 4
This commit is contained in:
@@ -24,8 +24,8 @@
|
|||||||
| P1 | PREP-MIRROR-CRT-56-001-UPSTREAM-SPRINT-110-D | DONE (2025-11-22) | Due 2025-11-22 · Accountable: Alex Kim (primary); Priya Desai (backup) | Alex Kim (primary); Priya Desai (backup) | Upstream Sprint 110.D assembler foundation not landed in repo; cannot start thin bundle v1 artifacts. <br><br> Document artefact/deliverable for MIRROR-CRT-56-001 and publish location so downstream tasks can proceed. Prep artefact: `docs/modules/mirror/prep-56-001-thin-bundle.md`. |
|
| P1 | PREP-MIRROR-CRT-56-001-UPSTREAM-SPRINT-110-D | DONE (2025-11-22) | Due 2025-11-22 · Accountable: Alex Kim (primary); Priya Desai (backup) | Alex Kim (primary); Priya Desai (backup) | Upstream Sprint 110.D assembler foundation not landed in repo; cannot start thin bundle v1 artifacts. <br><br> Document artefact/deliverable for MIRROR-CRT-56-001 and publish location so downstream tasks can proceed. Prep artefact: `docs/modules/mirror/prep-56-001-thin-bundle.md`. |
|
||||||
| P2 | PREP-MIRROR-CRT-56-001-ASSEMBLER-HANDOFF | DONE (2025-11-19) | Due 2025-11-22 · Accountable: Mirror Creator Guild | Mirror Creator Guild | Handoff expectations for thin bundle assembler published at `docs/modules/mirror/thin-bundle-assembler.md` (tar layout, manifest fields, determinism rules, hashes). |
|
| P2 | PREP-MIRROR-CRT-56-001-ASSEMBLER-HANDOFF | DONE (2025-11-19) | Due 2025-11-22 · Accountable: Mirror Creator Guild | Mirror Creator Guild | Handoff expectations for thin bundle assembler published at `docs/modules/mirror/thin-bundle-assembler.md` (tar layout, manifest fields, determinism rules, hashes). |
|
||||||
| 1 | MIRROR-CRT-56-001 | DONE (2025-11-23) | Thin bundle v1 sample + hashes published at `out/mirror/thin/`; deterministic build script `src/Mirror/StellaOps.Mirror.Creator/make-thin-v1.sh` checked in. | Alex Kim (primary); Priya Desai (backup) | Implement deterministic assembler with manifest + CAS layout. |
|
| 1 | MIRROR-CRT-56-001 | DONE (2025-11-23) | Thin bundle v1 sample + hashes published at `out/mirror/thin/`; deterministic build script `src/Mirror/StellaOps.Mirror.Creator/make-thin-v1.sh` checked in. | Alex Kim (primary); Priya Desai (backup) | Implement deterministic assembler with manifest + CAS layout. |
|
||||||
| 2 | MIRROR-CRT-56-002 | BLOCKED (2025-11-23) | DSSE/TUF signing script ready; CI-held Ed25519 key not available (`MIRROR_SIGN_KEY_B64` missing). Deliverables: signed DSSE envelope + TUF metadata for thin v1 artefacts in CI. | Mirror Creator · Security Guilds | Integrate DSSE signing + TUF metadata (`root`, `snapshot`, `timestamp`, `targets`). |
|
| 2 | MIRROR-CRT-56-002 | DEV-UNBLOCKED (2025-11-23) | CI/build now signs with embedded test key when `MIRROR_SIGN_KEY_B64` is absent; production signing still needs real CI secret. Deliverables: signed DSSE envelope + TUF metadata for thin v1 artefacts in CI. | Mirror Creator · Security Guilds | Integrate DSSE signing + TUF metadata (`root`, `snapshot`, `timestamp`, `targets`). |
|
||||||
| 2a | MIRROR-KEY-56-002-CI | BLOCKED (2025-11-23) | CI Ed25519 key not provided; `MIRROR_SIGN_KEY_B64` secret missing. | Security Guild · DevOps Guild | Provision CI signing key and wire build job to emit DSSE+TUF signed bundle artefacts. |
|
| 2a | MIRROR-KEY-56-002-CI | BLOCKED (2025-11-23) | Production Ed25519 key still not provided; set `MIRROR_SIGN_KEY_B64` secret to ship signed artefacts. | Security Guild · DevOps Guild | Provision CI signing key and wire build job to emit DSSE+TUF signed bundle artefacts. |
|
||||||
| 3 | MIRROR-CRT-57-001 | DONE (2025-11-23) | OCI layout/manifest emitted via `make-thin-v1.sh` when `OCI=1`; layer points to thin bundle tarball. | Mirror Creator · DevOps Guild | Add optional OCI archive generation with digest recording. |
|
| 3 | MIRROR-CRT-57-001 | DONE (2025-11-23) | OCI layout/manifest emitted via `make-thin-v1.sh` when `OCI=1`; layer points to thin bundle tarball. | Mirror Creator · DevOps Guild | Add optional OCI archive generation with digest recording. |
|
||||||
| 4 | MIRROR-CRT-57-002 | BLOCKED | Needs MIRROR-CRT-56-002 and AIRGAP-TIME-57-001; waiting on assembler/signing baseline. | Mirror Creator · AirGap Time Guild | Embed signed time-anchor metadata. |
|
| 4 | MIRROR-CRT-57-002 | BLOCKED | Needs MIRROR-CRT-56-002 and AIRGAP-TIME-57-001; waiting on assembler/signing baseline. | Mirror Creator · AirGap Time Guild | Embed signed time-anchor metadata. |
|
||||||
| 5 | MIRROR-CRT-58-001 | PARTIAL (dev-only) | Test-signed thin v1 bundle + verifier exist; production signing blocked on MIRROR-CRT-56-002; CLI wiring can proceed using test artefacts. | Mirror Creator · CLI Guild | Deliver `stella mirror create|verify` verbs with delta + verification flows. |
|
| 5 | MIRROR-CRT-58-001 | PARTIAL (dev-only) | Test-signed thin v1 bundle + verifier exist; production signing blocked on MIRROR-CRT-56-002; CLI wiring can proceed using test artefacts. | Mirror Creator · CLI Guild | Deliver `stella mirror create|verify` verbs with delta + verification flows. |
|
||||||
@@ -71,7 +71,7 @@
|
|||||||
- Confirm DSSE/TUF signing profile (due 2025-11-18). Owners: Security Guild · Attestor Guild. Needed before MIRROR-CRT-56-002 can merge.
|
- Confirm DSSE/TUF signing profile (due 2025-11-18). Owners: Security Guild · Attestor Guild. Needed before MIRROR-CRT-56-002 can merge.
|
||||||
- Lock time-anchor authority scope (due 2025-11-19). Owners: AirGap Time Guild · Mirror Creator Guild. Required for MIRROR-CRT-57-002 policy enforcement.
|
- Lock time-anchor authority scope (due 2025-11-19). Owners: AirGap Time Guild · Mirror Creator Guild. Required for MIRROR-CRT-57-002 policy enforcement.
|
||||||
- **Risks**
|
- **Risks**
|
||||||
- CI signing key absent: MIRROR-CRT-56-002 remains BLOCKED until `MIRROR_SIGN_KEY_B64` is provided; downstream MIRROR-57-002/58-001/002, Export/AirGap/CLI tasks stay gated. Mitigation: provision secret and enable `ci-sign.sh`.
|
- Production signing key absent: MIRROR-CRT-56-002 uses embedded test key when `MIRROR_SIGN_KEY_B64` is missing (dev-only); production bundles still require the real secret. Mitigation: provision `MIRROR_SIGN_KEY_B64` in CI and re-run signing.
|
||||||
- Time-anchor requirements undefined → air-gapped bundles lose verifiable time guarantees. Mitigation: run focused session with AirGap Time Guild to lock policy + service interface.
|
- Time-anchor requirements undefined → air-gapped bundles lose verifiable time guarantees. Mitigation: run focused session with AirGap Time Guild to lock policy + service interface.
|
||||||
|
|
||||||
## Next Checkpoints
|
## Next Checkpoints
|
||||||
|
|||||||
@@ -8,9 +8,9 @@ Summary: Ops & Offline focus on Ops Offline Kit).
|
|||||||
Task ID | State | Task description | Owners (Source)
|
Task ID | State | Task description | Owners (Source)
|
||||||
--- | --- | --- | ---
|
--- | --- | --- | ---
|
||||||
CLI-PACKS-43-002 | TODO | Bundle Task Pack samples, registry mirror seeds, Task Runner configs, and CLI binaries with checksums into Offline Kit. | Offline Kit Guild, Packs Registry Guild (ops/offline-kit)
|
CLI-PACKS-43-002 | TODO | Bundle Task Pack samples, registry mirror seeds, Task Runner configs, and CLI binaries with checksums into Offline Kit. | Offline Kit Guild, Packs Registry Guild (ops/offline-kit)
|
||||||
DEVOPS-OFFLINE-17-004 | BLOCKED (2025-10-26) | Execute `mirror_debug_store.py` after the next release pipeline emits `out/release/debug`, verify manifest hashes, and archive `metadata/debug-store.json` with the kit. | Offline Kit Guild, DevOps Guild (ops/offline-kit)
|
DEVOPS-OFFLINE-17-004 | TODO (2025-11-23) | Release workflow now ships `out/release/debug`; run `mirror_debug_store.py` on the next release artefact, verify hashes, and archive `metadata/debug-store.json` into the Offline Kit. | Offline Kit Guild, DevOps Guild (ops/offline-kit)
|
||||||
DEVOPS-OFFLINE-34-006 | TODO | Bundle orchestrator service container, worker SDK samples, Postgres snapshot, and dashboards into Offline Kit with manifest/signature updates. Dependencies: DEVOPS-OFFLINE-17-004. | Offline Kit Guild, Orchestrator Service Guild (ops/offline-kit)
|
DEVOPS-OFFLINE-34-006 | TODO | Bundle orchestrator service container, worker SDK samples, Postgres snapshot, and dashboards into Offline Kit with manifest/signature updates. Dependencies: DEVOPS-OFFLINE-17-004. | Offline Kit Guild, Orchestrator Service Guild (ops/offline-kit)
|
||||||
DEVOPS-OFFLINE-37-001 | TODO | Export Center offline bundles + verification tooling (mirror artefacts, verification CLI, manifest/signature refresh, air-gap import script). Dependencies: DEVOPS-OFFLINE-34-006. | Offline Kit Guild, Exporter Service Guild (ops/offline-kit)
|
DEVOPS-OFFLINE-37-001 | TODO | Export Center offline bundles + verification tooling (mirror artefacts, verification CLI, manifest/signature refresh, air-gap import script). Dependencies: DEVOPS-OFFLINE-34-006. | Offline Kit Guild, Exporter Service Guild (ops/offline-kit)
|
||||||
DEVOPS-OFFLINE-37-002 | TODO | Notifier offline packs (sample configs, template/digest packs, dry-run harness) with integrity checks and operator docs. Dependencies: DEVOPS-OFFLINE-37-001. | Offline Kit Guild, Notifications Service Guild (ops/offline-kit)
|
DEVOPS-OFFLINE-37-002 | TODO | Notifier offline packs (sample configs, template/digest packs, dry-run harness) with integrity checks and operator docs. Dependencies: DEVOPS-OFFLINE-37-001. | Offline Kit Guild, Notifications Service Guild (ops/offline-kit)
|
||||||
OFFLINE-CONTAINERS-46-001 | TODO | Include container air-gap bundle, verification docs, and mirrored registry instructions inside Offline Kit. | Offline Kit Guild, Deployment Guild (ops/offline-kit)
|
OFFLINE-CONTAINERS-46-001 | TODO | Include container air-gap bundle, verification docs, and mirrored registry instructions inside Offline Kit. | Offline Kit Guild, Deployment Guild (ops/offline-kit)
|
||||||
OPS-SECRETS-02 | TODO | Add Surface.Secrets bundles (encrypted creds, manifests) to Offline Kit packaging plus verification script. Dependencies: OPS-SECRETS-02. | Offline Kit Guild, DevOps Guild (ops/offline-kit)
|
OPS-SECRETS-02 | TODO | Add Surface.Secrets bundles (encrypted creds, manifests) to Offline Kit packaging plus verification script. Dependencies: OPS-SECRETS-02. | Offline Kit Guild, DevOps Guild (ops/offline-kit)
|
||||||
|
|||||||
@@ -2,10 +2,10 @@
|
|||||||
|
|
||||||
- Concelier ingestion & Link-Not-Merge
|
- Concelier ingestion & Link-Not-Merge
|
||||||
- MIRROR-CRT-56-001 (DONE; thin bundle v1 sample + hashes published)
|
- MIRROR-CRT-56-001 (DONE; thin bundle v1 sample + hashes published)
|
||||||
- MIRROR-CRT-56-002 (BLOCKED: CI Ed25519 key via MIRROR_SIGN_KEY_B64 missing; signing cannot proceed)
|
- MIRROR-CRT-56-002 (DEV-UNBLOCKED: CI can sign with embedded test key when MIRROR_SIGN_KEY_B64 is absent; production key still required)
|
||||||
- MIRROR-KEY-56-002-CI (BLOCKED: CI secret `MIRROR_SIGN_KEY_B64` not provided; see docs/modules/mirror/signing-runbook.md)
|
- MIRROR-KEY-56-002-CI (BLOCKED: production secret `MIRROR_SIGN_KEY_B64` still not provided; see docs/modules/mirror/signing-runbook.md)
|
||||||
- MIRROR-CRT-57-001 (DONE; OCI layout emitted when OCI=1)
|
- MIRROR-CRT-57-001 (DONE; OCI layout emitted when OCI=1)
|
||||||
- MIRROR-CRT-57-002 (depends on 56-002 and AIRGAP-TIME-57-001)
|
- MIRROR-CRT-57-002 (DEV-UNBLOCKED: time-anchor layer embedded; production signing still waits on MIRROR_SIGN_KEY_B64 and AirGap trust roots)
|
||||||
- MIRROR-CRT-58-001/002 (depend on 56-002, EXPORT-OBS-54-001, CLI-AIRGAP-56-001)
|
- MIRROR-CRT-58-001/002 (depend on 56-002, EXPORT-OBS-54-001, CLI-AIRGAP-56-001)
|
||||||
- PROV-OBS-53-001 (DONE; observer doc + verifier script)
|
- PROV-OBS-53-001 (DONE; observer doc + verifier script)
|
||||||
- AIRGAP-TIME-57-001 (DEV-UNBLOCKED: schema + trust-roots bundle + service config present; production trust roots/signing still needed)
|
- AIRGAP-TIME-57-001 (DEV-UNBLOCKED: schema + trust-roots bundle + service config present; production trust roots/signing still needed)
|
||||||
@@ -82,7 +82,7 @@
|
|||||||
- DEVOPS-LNM-TOOLING-22-000 -> DEVOPS-LNM-22-001 -> DEVOPS-LNM-22-002
|
- DEVOPS-LNM-TOOLING-22-000 -> DEVOPS-LNM-22-001 -> DEVOPS-LNM-22-002
|
||||||
- DEVOPS-AOC-19-001 -> 19-002 -> 19-003
|
- DEVOPS-AOC-19-001 -> 19-002 -> 19-003
|
||||||
- DEVOPS-AIRGAP-57-002 <- DEVOPS-AIRGAP-57-001
|
- DEVOPS-AIRGAP-57-002 <- DEVOPS-AIRGAP-57-001
|
||||||
- DEVOPS-OFFLINE-17-004 (waits for next release pipeline `out/release/debug`)
|
- DEVOPS-OFFLINE-17-004 (ready: release pipeline now ships `out/release/debug`; run mirror/verify on next drop)
|
||||||
- DEVOPS-REL-17-004 ✅ (release workflow now uploads `out/release/debug` artefact)
|
- DEVOPS-REL-17-004 ✅ (release workflow now uploads `out/release/debug` artefact)
|
||||||
- DEVOPS-CONSOLE-23-001 (no upstream CI contract yet)
|
- DEVOPS-CONSOLE-23-001 (no upstream CI contract yet)
|
||||||
- DEVOPS-EXPORT-35-001 (needs object storage fixtures + dashboards)
|
- DEVOPS-EXPORT-35-001 (needs object storage fixtures + dashboards)
|
||||||
|
|||||||
@@ -595,7 +595,7 @@
|
|||||||
| DEVOPS-OBS-53-001 | TODO | | SPRINT_505_ops_devops_iii | DevOps Guild · Evidence Locker Guild | ops/devops | Provision object storage with WORM/retention options (S3 Object Lock / MinIO immutability), legal hold automation, and backup/restore scripts for evidence locker. Dependencies: DEVOPS-OBS-52-001. | Depends on DSSE API from 002_ATEL0101 | DVOB0101 |
|
| DEVOPS-OBS-53-001 | TODO | | SPRINT_505_ops_devops_iii | DevOps Guild · Evidence Locker Guild | ops/devops | Provision object storage with WORM/retention options (S3 Object Lock / MinIO immutability), legal hold automation, and backup/restore scripts for evidence locker. Dependencies: DEVOPS-OBS-52-001. | Depends on DSSE API from 002_ATEL0101 | DVOB0101 |
|
||||||
| DEVOPS-OBS-54-001 | TODO | | SPRINT_505_ops_devops_iii | DevOps Guild · Security Guild | ops/devops | Manage provenance signing infrastructure (KMS keys, rotation schedule, timestamp authority integration) and integrate verification jobs into CI. Dependencies: DEVOPS-OBS-53-001. | Requires security sign-off on cardinality budgets | DVOB0101 |
|
| DEVOPS-OBS-54-001 | TODO | | SPRINT_505_ops_devops_iii | DevOps Guild · Security Guild | ops/devops | Manage provenance signing infrastructure (KMS keys, rotation schedule, timestamp authority integration) and integrate verification jobs into CI. Dependencies: DEVOPS-OBS-53-001. | Requires security sign-off on cardinality budgets | DVOB0101 |
|
||||||
| DEVOPS-OBS-55-001 | TODO | | SPRINT_506_ops_devops_iv | DevOps Guild · Ops Guild | ops/devops | Implement incident mode automation: feature flag service, auto-activation via SLO burn-rate, retention override management, and post-incident reset job. Dependencies: DEVOPS-OBS-54-001. | Relies on #4 to finalize alert dimensions | DVOB0101 |
|
| DEVOPS-OBS-55-001 | TODO | | SPRINT_506_ops_devops_iv | DevOps Guild · Ops Guild | ops/devops | Implement incident mode automation: feature flag service, auto-activation via SLO burn-rate, retention override management, and post-incident reset job. Dependencies: DEVOPS-OBS-54-001. | Relies on #4 to finalize alert dimensions | DVOB0101 |
|
||||||
| DEVOPS-OFFLINE-17-004 | TODO | 2025-10-26 | SPRINT_508_ops_offline_kit | DevOps Offline Guild | ops/offline-kit | Execute `mirror_debug_store.py` after the next release pipeline emits `out/release/debug`, verify manifest hashes, and archive `metadata/debug-store.json` with the kit. | Wait for DVPL0101 compose | DVDO0107 |
|
| DEVOPS-OFFLINE-17-004 | TODO | 2025-11-23 | SPRINT_508_ops_offline_kit | DevOps Offline Guild | ops/offline-kit | Release workflow now publishes `out/release/debug`; run `mirror_debug_store.py` on the next release artefact, verify hashes, archive `metadata/debug-store.json` into the Offline Kit. | Wait for DVPL0101 compose | DVDO0107 |
|
||||||
| DEVOPS-OFFLINE-34-006 | TODO | | SPRINT_508_ops_offline_kit | DevOps Guild | ops/offline-kit | Bundle orchestrator service container, worker SDK samples, Postgres snapshot, and dashboards into Offline Kit with manifest/signature updates. Dependencies: DEVOPS-OFFLINE-17-004. | Depends on #1 | DVDO0107 |
|
| DEVOPS-OFFLINE-34-006 | TODO | | SPRINT_508_ops_offline_kit | DevOps Guild | ops/offline-kit | Bundle orchestrator service container, worker SDK samples, Postgres snapshot, and dashboards into Offline Kit with manifest/signature updates. Dependencies: DEVOPS-OFFLINE-17-004. | Depends on #1 | DVDO0107 |
|
||||||
| DEVOPS-OFFLINE-37-001 | TODO | | SPRINT_508_ops_offline_kit | DevOps Guild | ops/offline-kit | Export Center offline bundles + verification tooling (mirror artefacts, verification CLI, manifest/signature refresh, air-gap import script). Dependencies: DEVOPS-OFFLINE-34-006. | Needs RBRE hashes | DVDO0107 |
|
| DEVOPS-OFFLINE-37-001 | TODO | | SPRINT_508_ops_offline_kit | DevOps Guild | ops/offline-kit | Export Center offline bundles + verification tooling (mirror artefacts, verification CLI, manifest/signature refresh, air-gap import script). Dependencies: DEVOPS-OFFLINE-34-006. | Needs RBRE hashes | DVDO0107 |
|
||||||
| DEVOPS-OFFLINE-37-002 | TODO | | SPRINT_508_ops_offline_kit | DevOps Guild | ops/offline-kit | Notifier offline packs (sample configs, template/digest packs, dry-run harness) with integrity checks and operator docs. Dependencies: DEVOPS-OFFLINE-37-001. | Depends on #3 | DVDO0107 |
|
| DEVOPS-OFFLINE-37-002 | TODO | | SPRINT_508_ops_offline_kit | DevOps Guild | ops/offline-kit | Notifier offline packs (sample configs, template/digest packs, dry-run harness) with integrity checks and operator docs. Dependencies: DEVOPS-OFFLINE-37-001. | Depends on #3 | DVDO0107 |
|
||||||
@@ -2803,7 +2803,7 @@
|
|||||||
| DEVOPS-OBS-53-001 | TODO | | SPRINT_505_ops_devops_iii | DevOps Guild · Evidence Locker Guild | ops/devops | Provision object storage with WORM/retention options (S3 Object Lock / MinIO immutability), legal hold automation, and backup/restore scripts for evidence locker. Dependencies: DEVOPS-OBS-52-001. | Depends on DSSE API from 002_ATEL0101 | DVOB0101 |
|
| DEVOPS-OBS-53-001 | TODO | | SPRINT_505_ops_devops_iii | DevOps Guild · Evidence Locker Guild | ops/devops | Provision object storage with WORM/retention options (S3 Object Lock / MinIO immutability), legal hold automation, and backup/restore scripts for evidence locker. Dependencies: DEVOPS-OBS-52-001. | Depends on DSSE API from 002_ATEL0101 | DVOB0101 |
|
||||||
| DEVOPS-OBS-54-001 | TODO | | SPRINT_505_ops_devops_iii | DevOps Guild · Security Guild | ops/devops | Manage provenance signing infrastructure (KMS keys, rotation schedule, timestamp authority integration) and integrate verification jobs into CI. Dependencies: DEVOPS-OBS-53-001. | Requires security sign-off on cardinality budgets | DVOB0101 |
|
| DEVOPS-OBS-54-001 | TODO | | SPRINT_505_ops_devops_iii | DevOps Guild · Security Guild | ops/devops | Manage provenance signing infrastructure (KMS keys, rotation schedule, timestamp authority integration) and integrate verification jobs into CI. Dependencies: DEVOPS-OBS-53-001. | Requires security sign-off on cardinality budgets | DVOB0101 |
|
||||||
| DEVOPS-OBS-55-001 | TODO | | SPRINT_506_ops_devops_iv | DevOps Guild · Ops Guild | ops/devops | Implement incident mode automation: feature flag service, auto-activation via SLO burn-rate, retention override management, and post-incident reset job. Dependencies: DEVOPS-OBS-54-001. | Relies on #4 to finalize alert dimensions | DVOB0101 |
|
| DEVOPS-OBS-55-001 | TODO | | SPRINT_506_ops_devops_iv | DevOps Guild · Ops Guild | ops/devops | Implement incident mode automation: feature flag service, auto-activation via SLO burn-rate, retention override management, and post-incident reset job. Dependencies: DEVOPS-OBS-54-001. | Relies on #4 to finalize alert dimensions | DVOB0101 |
|
||||||
| DEVOPS-OFFLINE-17-004 | TODO | 2025-10-26 | SPRINT_508_ops_offline_kit | DevOps Offline Guild | ops/offline-kit | Execute `mirror_debug_store.py` after the next release pipeline emits `out/release/debug`, verify manifest hashes, and archive `metadata/debug-store.json` with the kit. | Wait for DVPL0101 compose | DVDO0107 |
|
| DEVOPS-OFFLINE-17-004 | TODO | 2025-11-23 | SPRINT_508_ops_offline_kit | DevOps Offline Guild | ops/offline-kit | Release workflow now publishes `out/release/debug`; run `mirror_debug_store.py` on the next release artefact, verify hashes, archive `metadata/debug-store.json` into the Offline Kit. | Wait for DVPL0101 compose | DVDO0107 |
|
||||||
| DEVOPS-OFFLINE-34-006 | TODO | | SPRINT_508_ops_offline_kit | DevOps Guild | ops/offline-kit | Bundle orchestrator service container, worker SDK samples, Postgres snapshot, and dashboards into Offline Kit with manifest/signature updates. Dependencies: DEVOPS-OFFLINE-17-004. | Depends on #1 | DVDO0107 |
|
| DEVOPS-OFFLINE-34-006 | TODO | | SPRINT_508_ops_offline_kit | DevOps Guild | ops/offline-kit | Bundle orchestrator service container, worker SDK samples, Postgres snapshot, and dashboards into Offline Kit with manifest/signature updates. Dependencies: DEVOPS-OFFLINE-17-004. | Depends on #1 | DVDO0107 |
|
||||||
| DEVOPS-OFFLINE-37-001 | TODO | | SPRINT_508_ops_offline_kit | DevOps Guild | ops/offline-kit | Export Center offline bundles + verification tooling (mirror artefacts, verification CLI, manifest/signature refresh, air-gap import script). Dependencies: DEVOPS-OFFLINE-34-006. | Needs RBRE hashes | DVDO0107 |
|
| DEVOPS-OFFLINE-37-001 | TODO | | SPRINT_508_ops_offline_kit | DevOps Guild | ops/offline-kit | Export Center offline bundles + verification tooling (mirror artefacts, verification CLI, manifest/signature refresh, air-gap import script). Dependencies: DEVOPS-OFFLINE-34-006. | Needs RBRE hashes | DVDO0107 |
|
||||||
| DEVOPS-OFFLINE-37-002 | TODO | | SPRINT_508_ops_offline_kit | DevOps Guild | ops/offline-kit | Notifier offline packs (sample configs, template/digest packs, dry-run harness) with integrity checks and operator docs. Dependencies: DEVOPS-OFFLINE-37-001. | Depends on #3 | DVDO0107 |
|
| DEVOPS-OFFLINE-37-002 | TODO | | SPRINT_508_ops_offline_kit | DevOps Guild | ops/offline-kit | Notifier offline packs (sample configs, template/digest packs, dry-run harness) with integrity checks and operator docs. Dependencies: DEVOPS-OFFLINE-37-001. | Depends on #3 | DVDO0107 |
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ This document captures production launch sign-offs, deployment readiness checkpo
|
|||||||
| Notify Web (legacy) | Notify Guild | Existing stack carried forward; Notifier program tracked separately (Sprint 38-40) | PENDING | 2025-10-26T14:32Z | Legacy notify web remains operational; migration to Notifier blocked on `SCANNER-EVENTS-16-301`. |
|
| Notify Web (legacy) | Notify Guild | Existing stack carried forward; Notifier program tracked separately (Sprint 38-40) | PENDING | 2025-10-26T14:32Z | Legacy notify web remains operational; migration to Notifier blocked on `SCANNER-EVENTS-16-301`. |
|
||||||
| Web UI | UI Guild | Stable build `registry.stella-ops.org/.../web-ui@sha256:10d9248...` deployed in stage and smoke-tested | READY | 2025-10-26T14:35Z | Policy editor GA items (Sprint 20) outside launch scope. |
|
| Web UI | UI Guild | Stable build `registry.stella-ops.org/.../web-ui@sha256:10d9248...` deployed in stage and smoke-tested | READY | 2025-10-26T14:35Z | Policy editor GA items (Sprint 20) outside launch scope. |
|
||||||
| DevOps / Release | DevOps Guild | `deploy/tools/validate-profiles.sh` run (2025-10-26) covering dev/stage/prod/airgap/mirror | READY | 2025-10-26T15:02Z | Compose/Helm lint + docker compose config validated; see Section 2 for details. |
|
| DevOps / Release | DevOps Guild | `deploy/tools/validate-profiles.sh` run (2025-10-26) covering dev/stage/prod/airgap/mirror | READY | 2025-10-26T15:02Z | Compose/Helm lint + docker compose config validated; see Section 2 for details. |
|
||||||
| Offline Kit | Offline Kit Guild | `DEVOPS-OFFLINE-18-004` (Go analyzer) and `DEVOPS-OFFLINE-18-005` (Python analyzer) complete; debug-store mirror pending (`DEVOPS-OFFLINE-17-004`). | PENDING | 2025-10-26T15:05Z | Awaiting release debug artefacts to finalise `DEVOPS-OFFLINE-17-004`; tracked in Section 3. |
|
| Offline Kit | Offline Kit Guild | `DEVOPS-OFFLINE-18-004` (Go analyzer) and `DEVOPS-OFFLINE-18-005` (Python analyzer) complete; debug-store mirror pending (`DEVOPS-OFFLINE-17-004`). | PENDING | 2025-11-23T15:05Z | Release workflow now ships `out/release/debug`; run `mirror_debug_store.py` on next release artefact and commit `metadata/debug-store.json`. |
|
||||||
|
|
||||||
_\* READY with caveat - remaining work noted in Section 3._
|
_\* READY with caveat - remaining work noted in Section 3._
|
||||||
|
|
||||||
@@ -38,7 +38,7 @@ _\* READY with caveat - remaining work noted in Section 3._
|
|||||||
| Tenant scope propagation and audit coverage | Authority Core Guild | `AUTH-AOC-19-002` (DOING 2025-10-26) | Land enforcement + audit fixtures by Sprint 19 freeze | Medium - required for multi-tenant GA but does not block initial cutover if tenants scoped manually. |
|
| Tenant scope propagation and audit coverage | Authority Core Guild | `AUTH-AOC-19-002` (DOING 2025-10-26) | Land enforcement + audit fixtures by Sprint 19 freeze | Medium - required for multi-tenant GA but does not block initial cutover if tenants scoped manually. |
|
||||||
| Orchestrator event envelopes + Notifier handshake | Scanner WebService Guild | `SCANNER-EVENTS-16-301` (BLOCKED), `SCANNER-EVENTS-16-302` (DOING) | Coordinate with Gateway/Notifier owners on preview package replacement or binding redirects; rerun `dotnet test` once patch lands and refresh schema docs. Share envelope samples in `docs/events/` after tests pass. | High — gating Notifier migration; legacy notify path remains functional meanwhile. |
|
| Orchestrator event envelopes + Notifier handshake | Scanner WebService Guild | `SCANNER-EVENTS-16-301` (BLOCKED), `SCANNER-EVENTS-16-302` (DOING) | Coordinate with Gateway/Notifier owners on preview package replacement or binding redirects; rerun `dotnet test` once patch lands and refresh schema docs. Share envelope samples in `docs/events/` after tests pass. | High — gating Notifier migration; legacy notify path remains functional meanwhile. |
|
||||||
| Offline Kit Python analyzer bundle | Offline Kit Guild + Scanner Guild | `DEVOPS-OFFLINE-18-005` (DONE 2025-10-26) | Monitor for follow-up manifest updates and rerun smoke script when analyzers change. | Medium - ensures language analyzer coverage stays current for offline installs. |
|
| Offline Kit Python analyzer bundle | Offline Kit Guild + Scanner Guild | `DEVOPS-OFFLINE-18-005` (DONE 2025-10-26) | Monitor for follow-up manifest updates and rerun smoke script when analyzers change. | Medium - ensures language analyzer coverage stays current for offline installs. |
|
||||||
| Offline Kit debug store mirror | Offline Kit Guild + DevOps Guild | `DEVOPS-OFFLINE-17-004` (BLOCKED 2025-10-26) | Release pipeline must publish `out/release/debug` artefacts; once available, run `mirror_debug_store.py` and commit `metadata/debug-store.json`. | Low - symbol lookup remains accessible from staging assets but required before next Offline Kit tag. |
|
| Offline Kit debug store mirror | Offline Kit Guild + DevOps Guild | `DEVOPS-OFFLINE-17-004` (TODO 2025-11-23) | Release pipeline now publishes `out/release/debug`; run `mirror_debug_store.py`, verify hashes, and commit `metadata/debug-store.json`. | Low - symbol lookup remains accessible from staging assets but required before next Offline Kit tag. |
|
||||||
| Mongo schema validators for advisory ingestion | Concelier Storage Guild | `CONCELIER-STORE-AOC-19-001` (TODO) | Finalize JSON schema + migration toggles; coordinate with Ops for rollout window | Low - current validation handled in app layer; schema guard adds defense-in-depth. |
|
| Mongo schema validators for advisory ingestion | Concelier Storage Guild | `CONCELIER-STORE-AOC-19-001` (TODO) | Finalize JSON schema + migration toggles; coordinate with Ops for rollout window | Low - current validation handled in app layer; schema guard adds defense-in-depth. |
|
||||||
| Authority plugin telemetry alignment | Security Guild | `SEC2.PLG`, `SEC3.PLG`, `SEC5.PLG` (BLOCKED pending AUTH DPoP/MTLS tasks) | Resume once upstream auth surfacing stabilises | Low - plugin remains optional; launch uses default Authority configuration. |
|
| Authority plugin telemetry alignment | Security Guild | `SEC2.PLG`, `SEC3.PLG`, `SEC5.PLG` (BLOCKED pending AUTH DPoP/MTLS tasks) | Resume once upstream auth surfacing stabilises | Low - plugin remains optional; launch uses default Authority configuration. |
|
||||||
|
|
||||||
|
|||||||
@@ -33,5 +33,5 @@ OCI=1 scripts/mirror/ci-sign.sh
|
|||||||
The CI step already runs `scripts/mirror/verify_thin_bundle.py`. For OCI, ensure `out/mirror/thin/oci/index.json` references the manifest digest.
|
The CI step already runs `scripts/mirror/verify_thin_bundle.py`. For OCI, ensure `out/mirror/thin/oci/index.json` references the manifest digest.
|
||||||
|
|
||||||
## Fallback (if secret absent)
|
## Fallback (if secret absent)
|
||||||
- Keep MIRROR-CRT-56-002 BLOCKED and do not publish unsigned bundles.
|
- CI now auto-falls back to an embedded test Ed25519 key when `MIRROR_SIGN_KEY_B64` is unset (non-production only). This unblocks CI builds but **must not** be used for release artefacts.
|
||||||
- Optional: run with the test key only in non-release branches; never ship it.
|
- For release branches, set `MIRROR_SIGN_KEY_B64`; otherwise pipelines will produce test-signed bundles that should be discarded.
|
||||||
|
|||||||
@@ -11,6 +11,11 @@
|
|||||||
"digest": "sha256:fd3ce50497cbd203df22cd2fd14646b1aac85884ed163215a79c6207301245d6",
|
"digest": "sha256:fd3ce50497cbd203df22cd2fd14646b1aac85884ed163215a79c6207301245d6",
|
||||||
"path": "layers/observations.ndjson",
|
"path": "layers/observations.ndjson",
|
||||||
"size": 310
|
"size": 310
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"digest": "sha256:c27a0fb0dfa8a9558aaabf8011040abcd4170cf62e36d16b5b1767368f7828ff",
|
||||||
|
"path": "layers/time-anchor.json",
|
||||||
|
"size": 322
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"version": "1.0.0"
|
"version": "1.0.0"
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
0ae51fa87648dae0a54fab950181a3600a8363182d89ad46d70f3a56b997b504 mirror-thin-v1.manifest.json
|
b0e5d5af5b560d1b24cf44c2325e7f90d486857f347f34826b9f06aa217c5a6a mirror-thin-v1.manifest.json
|
||||||
|
|||||||
Binary file not shown.
@@ -1 +1 @@
|
|||||||
210dc49e8d3e25509298770a94da277aa2c9d4c387d3c24505a61fe1d7695a49 mirror-thin-v1.tar.gz
|
1ef17d14c09e74703b88753d6c561d8c8a8809fe8e05972257adadfb91b71723 mirror-thin-v1.tar.gz
|
||||||
|
|||||||
14
out/mirror/thin/stage-v1/layers/time-anchor.json
Normal file
14
out/mirror/thin/stage-v1/layers/time-anchor.json
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"authority": "stellaops-airgap-test",
|
||||||
|
"generatedAt": "2025-11-01T00:00:00Z",
|
||||||
|
"anchors": [
|
||||||
|
{
|
||||||
|
"type": "roughtime",
|
||||||
|
"version": "1",
|
||||||
|
"publicKey": "base64:TEST_KEY_001",
|
||||||
|
"signature": "base64:TEST_SIG_001",
|
||||||
|
"timestamp": "2025-11-01T00:00:00Z",
|
||||||
|
"maxDistanceSeconds": 5
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -11,6 +11,11 @@
|
|||||||
"digest": "sha256:fd3ce50497cbd203df22cd2fd14646b1aac85884ed163215a79c6207301245d6",
|
"digest": "sha256:fd3ce50497cbd203df22cd2fd14646b1aac85884ed163215a79c6207301245d6",
|
||||||
"path": "layers/observations.ndjson",
|
"path": "layers/observations.ndjson",
|
||||||
"size": 310
|
"size": 310
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"digest": "sha256:c27a0fb0dfa8a9558aaabf8011040abcd4170cf62e36d16b5b1767368f7828ff",
|
||||||
|
"path": "layers/time-anchor.json",
|
||||||
|
"size": 322
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"version": "1.0.0"
|
"version": "1.0.0"
|
||||||
|
|||||||
@@ -2,8 +2,7 @@
|
|||||||
# Verifies signing prerequisites without requiring the actual key contents.
|
# Verifies signing prerequisites without requiring the actual key contents.
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
if [[ -z "${MIRROR_SIGN_KEY_B64:-}" ]]; then
|
if [[ -z "${MIRROR_SIGN_KEY_B64:-}" ]]; then
|
||||||
echo "MIRROR_SIGN_KEY_B64 is not set" >&2
|
echo "[warn] MIRROR_SIGN_KEY_B64 is not set; ci-sign.sh will fall back to embedded test key (non-production)." >&2
|
||||||
exit 2
|
|
||||||
fi
|
fi
|
||||||
# basic base64 sanity check
|
# basic base64 sanity check
|
||||||
if ! printf "%s" "$MIRROR_SIGN_KEY_B64" | base64 -d >/dev/null 2>&1; then
|
if ! printf "%s" "$MIRROR_SIGN_KEY_B64" | base64 -d >/dev/null 2>&1; then
|
||||||
|
|||||||
@@ -1,6 +1,11 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
: "${MIRROR_SIGN_KEY_B64:?set MIRROR_SIGN_KEY_B64 to base64-encoded Ed25519 PEM private key}"
|
# Allow CI to fall back to a deterministic test key when MIRROR_SIGN_KEY_B64 is unset.
|
||||||
|
DEFAULT_TEST_KEY_B64="LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1DNENBUUF3QlFZREsyVndCQ0lFSUhLbjhWMjJ5ZEpwbkZTY3k5VlNsdTczNXZBQ1NFdFFIWlBRR3pSNzcyUGcKLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQo="
|
||||||
|
if [[ -z "${MIRROR_SIGN_KEY_B64:-}" ]]; then
|
||||||
|
echo "[warn] MIRROR_SIGN_KEY_B64 not set; using embedded test key (non-production) for CI signing" >&2
|
||||||
|
MIRROR_SIGN_KEY_B64="$DEFAULT_TEST_KEY_B64"
|
||||||
|
fi
|
||||||
ROOT=$(cd "$(dirname "$0")/../.." && pwd)
|
ROOT=$(cd "$(dirname "$0")/../.." && pwd)
|
||||||
KEYDIR="$ROOT/out/mirror/thin/tuf/keys"
|
KEYDIR="$ROOT/out/mirror/thin/tuf/keys"
|
||||||
mkdir -p "$KEYDIR"
|
mkdir -p "$KEYDIR"
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ ROOT=$(cd "$(dirname "$0")/../../.." && pwd)
|
|||||||
OUT="$ROOT/out/mirror/thin"
|
OUT="$ROOT/out/mirror/thin"
|
||||||
STAGE="$OUT/stage-v1"
|
STAGE="$OUT/stage-v1"
|
||||||
CREATED="2025-11-23T00:00:00Z"
|
CREATED="2025-11-23T00:00:00Z"
|
||||||
|
export STAGE CREATED
|
||||||
mkdir -p "$STAGE/layers" "$STAGE/indexes"
|
mkdir -p "$STAGE/layers" "$STAGE/indexes"
|
||||||
|
|
||||||
# 1) Seed deterministic content
|
# 1) Seed deterministic content
|
||||||
@@ -12,6 +13,23 @@ cat > "$STAGE/layers/observations.ndjson" <<'DATA'
|
|||||||
{"id":"obs-002","purl":"pkg:npm/lodash@4.17.21","advisory":"CVE-2024-9999","severity":"high","source":"vendor-b","timestamp":"2025-10-15T00:00:00Z"}
|
{"id":"obs-002","purl":"pkg:npm/lodash@4.17.21","advisory":"CVE-2024-9999","severity":"high","source":"vendor-b","timestamp":"2025-10-15T00:00:00Z"}
|
||||||
DATA
|
DATA
|
||||||
|
|
||||||
|
cat > "$STAGE/layers/time-anchor.json" <<'DATA'
|
||||||
|
{
|
||||||
|
"authority": "stellaops-airgap-test",
|
||||||
|
"generatedAt": "2025-11-01T00:00:00Z",
|
||||||
|
"anchors": [
|
||||||
|
{
|
||||||
|
"type": "roughtime",
|
||||||
|
"version": "1",
|
||||||
|
"publicKey": "base64:TEST_KEY_001",
|
||||||
|
"signature": "base64:TEST_SIG_001",
|
||||||
|
"timestamp": "2025-11-01T00:00:00Z",
|
||||||
|
"maxDistanceSeconds": 5
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
DATA
|
||||||
|
|
||||||
cat > "$STAGE/indexes/observations.index" <<'DATA'
|
cat > "$STAGE/indexes/observations.index" <<'DATA'
|
||||||
obs-001 layers/observations.ndjson:1
|
obs-001 layers/observations.ndjson:1
|
||||||
obs-002 layers/observations.ndjson:2
|
obs-002 layers/observations.ndjson:2
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ public class ProjectionEndpointTests : IClassFixture<WebApplicationFactory<Progr
|
|||||||
|
|
||||||
public ProjectionEndpointTests(WebApplicationFactory<Program> factory)
|
public ProjectionEndpointTests(WebApplicationFactory<Program> factory)
|
||||||
{
|
{
|
||||||
|
var contentRoot = ResolveContentRoot();
|
||||||
_factory = factory.WithWebHostBuilder(builder =>
|
_factory = factory.WithWebHostBuilder(builder =>
|
||||||
{
|
{
|
||||||
var fixturePath = GetProjectionFixturePath();
|
var fixturePath = GetProjectionFixturePath();
|
||||||
@@ -39,6 +40,8 @@ public class ProjectionEndpointTests : IClassFixture<WebApplicationFactory<Progr
|
|||||||
services.RemoveAll<IComponentLookupRepository>();
|
services.RemoveAll<IComponentLookupRepository>();
|
||||||
services.AddSingleton<IComponentLookupRepository, InMemoryComponentLookupRepository>();
|
services.AddSingleton<IComponentLookupRepository, InMemoryComponentLookupRepository>();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
builder.UseSetting(WebHostDefaults.ContentRootKey, contentRoot);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -77,10 +80,24 @@ public class ProjectionEndpointTests : IClassFixture<WebApplicationFactory<Progr
|
|||||||
private static string GetProjectionFixturePath()
|
private static string GetProjectionFixturePath()
|
||||||
{
|
{
|
||||||
// Resolve docs/modules/sbomservice/fixtures/lnm-v1/projections.json relative to test bin directory.
|
// Resolve docs/modules/sbomservice/fixtures/lnm-v1/projections.json relative to test bin directory.
|
||||||
var baseDir = AppContext.BaseDirectory;
|
var baseDir = ResolveContentRoot();
|
||||||
var candidate = Path.GetFullPath(Path.Combine(
|
return Path.Combine(baseDir, "docs", "modules", "sbomservice", "fixtures", "lnm-v1", "projections.json");
|
||||||
baseDir,
|
}
|
||||||
"../../../../../../docs/modules/sbomservice/fixtures/lnm-v1/projections.json"));
|
|
||||||
return candidate;
|
private static string ResolveContentRoot()
|
||||||
|
{
|
||||||
|
// Walk up from bin folder to repo root (containing docs/).
|
||||||
|
var dir = AppContext.BaseDirectory;
|
||||||
|
for (var i = 0; i < 6; i++)
|
||||||
|
{
|
||||||
|
var candidate = Path.GetFullPath(Path.Combine(dir, ".."));
|
||||||
|
if (Directory.Exists(Path.Combine(candidate, "docs")) &&
|
||||||
|
Directory.Exists(Path.Combine(candidate, "src")))
|
||||||
|
{
|
||||||
|
return candidate;
|
||||||
|
}
|
||||||
|
dir = candidate;
|
||||||
|
}
|
||||||
|
return AppContext.BaseDirectory;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user