docs(specs): secrets-pipeline-foundation-v0 prebuild (#237) #349
No reviewers
Labels
No labels
W6d-automerge-calibration
agent/claude-code
agent/codex
agent/hermes
agent/iskra
agent/ollama
agent/patchwarden
automerge-candidate
class/security-sensitive
cutover-gate
dependency/blocked
dependency/blocks-others
dependency/cross-repo
dependency/needs-confirmation
domain:agents
domain:ci
domain:docs
domain:forgejo
domain:infra
domain:memory
domain:runtime
domain:signal
domain:ux
flow/architecture
flow/blocked
flow/deployed
flow/done
flow/implementation
flow/intake
flow/maintained
flow/observed
flow/ready
flow/refining
flow/retired
flow/review
iterating
judge/codex-candidate
judge/hermes-candidate
judge/low-confidence
judge/needs-refinement
judge/operator-needed
judge/p0
judge/p1
judge/p2
judge/p3
judge/park
judge/patchwarden-candidate
judge/stale-priority
kind/adr
kind/bug
kind/chore
kind/feature
kind/infra
kind/ops
kind/refactor
kind/research
large-impact
merge/auto
merge/manual
merge/manual-dependency-conflict
merge/manual-failing-tests
merge/manual-merge-conflict
merge/manual-missing-review
merge/manual-operator-preference
merge/manual-red-zone
merge/manual-security-sensitive
merge/manual-unclear-scope
merge/manual-unknown
meta
mode:operator-only
mode:patchwarden-iskra-approved
mode:safe-auto
needs-operator-decision
needs-triage
not-ready
observed/erroring
observed/needs-followup
observed/pending
observed/retire-candidate
observed/unused
observed/used
operator-emotional
owner-attention
phase/02
phase/03
priority:p0
priority:p1
priority:p2
priority:p3
proposed
ready-for-agent
ready-for-operator
recovery
review:claude-reviewed
review:codex-reviewed
review:dziadek-reviewed
review:needs-human
risk/exposure
risk/process
risk/product
risk/runtime
safety:external-write
safety:no-prod-mutation
safety:prod-impact
safety:secret-touch
size/large
size/medium
size/small
size/tiny
size/unknown
source/adr
source/agent-generated
source/manual
source/operator-chat
source/voice-note
status:blocked
status:codex-ready
status:merged:pending-evidence
status:needs-evidence
status:operator-needed
status:parked
tier/full
tier/lite
tier/stacked
tier:0-platform-substrate
tier:1-iskra-value-layer
tier:2-tools-products-modules
type:bug
type:chore
type:docs
type:feat
type:policy
type:research
No milestone
No project
No assignees
3 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
pdurlej/platform!349
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "claude/c-batch/security-sensitive-label-enforcement-prebuild"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Bug prebuild (codex's preferred shape: reproduction + evidence + expected/actual + path-pattern list + minimal fix surface + acceptance + tests) for issue #86.
Problem
Security-sensitive lane policy exists (ADR-0005, ADR-0007) but mechanical enforcement is absent. Cousins rely on memory to apply
class/security-sensitive. Forgotten labels → wrong canary tier → fewer reviewer eyes on sensitive surface.Per ADR-0018: convention-only enforcement decays under agent-context-loss.
Solution shape (3 new files, no existing-policy edits)
policies/security-sensitive-paths.yaml— canonical glob list + allowlist semantics + schema version.forgejo/workflows/security-label-check.yml— PR-event workflow trigger.forgejo/scripts/security-label-check.py— matcher + idempotent comment posterHard guarantees
Path-pattern list highlights (spec § 03)
.envfiles (with.env.example/.env.templateallowlist)secrets/,credentials/,.infisical/,vault/,.bws/.forgejo/workflows/(workflow yaml gates merge)scripts/forgejo/(runner-side scripts run with host privileges)ops/rs2000/(host-agent wrappers)control-plane/platformctl/apply.py+safety.py+identity/+transport/+secrets/policies/**(self-referential — meta-rule self-applies)Files
docs/specs/security-sensitive-label-enforcement/README.md— boundary + scopedocs/specs/security-sensitive-label-enforcement/01-reproduction.md— when it matters, controlled reprodocs/specs/security-sensitive-label-enforcement/02-expected-vs-actual.md— 3-outcome severity modeldocs/specs/security-sensitive-label-enforcement/03-path-pattern-list.md— canonical YAML schema + initial v0 listdocs/specs/security-sensitive-label-enforcement/04-minimal-fix-surface.md— files allowed/forbidden + size budgetdocs/specs/security-sensitive-label-enforcement/05-acceptance-and-tests.md— 8 regression test cases + live smoke procedureprompts/codex-security-sensitive-label-enforcement.md— codex execution: 3 slices (policy/tests → workflow/script → smoke/docs)Tier
Trivial per ADR-0007 (docs-only prebuild). Downstream slices each Lite.
Part of batch C (process/governance) prebuild shift
This is 3/6 prebuilds. Others: #243 branch protection (PR #327), #85 canary PR body (PR #330), #49 ADR-0002 CI enforcement, DeepSeek #11 ADR-0018 mechanical guard, #75 governance globalne.
Refs #86 #82 ADR-0005 ADR-0007 ADR-0018
Pre-implementation Spec Kit for closing the 6-week-old "Bws/Infisical secrets injection" Open Loop (3 audit cycles, no progress). This PR adds: - docs/specs/secrets-pipeline-foundation-v0/ (6 files): * 00-constitution.md — 8 non-negotiable principles (single backend, no plaintext fallback, no env tokens, no `curl -k`, audit log per fetch, rotation runbook coverage, smallest coherent PRs, ADR-0018 conformance) * 01-specify.md — problem, goal, out-of-scope, per-slice acceptance * 02-plan.md — 5-slice strict sequence with tiers * 03-tasks.md — slice-by-slice task lists ready for codex pickup * 04-implement-notes.md — gotchas, edge cases, sibling dependencies * README.md — overview - prompts/codex-secrets-pipeline-foundation.md — execution prompt with Safety/production boundary, hard gates, stop conditions Slice sequence (each = own PR, strict order): 1. Decision PR (Full): pick bws/Infisical/hybrid backend, ADR 2. Recon (Lite): 3 uncommitted RS2000 files commit-or-archive 3. 3-fixes PR (Full, canary 3+3): TLS / fallback / env-token 4. Wire-up (Full, canary 3+3): mail-infra dispatch token end-to-end 5. Runbook (Lite): rotation, disconnect, bootstrap, contract Sibling prebuilds in BATCH G: - vault-to-infisical-migration-v0 (#64) — mass-migration; depends on Slice 1 decision here - vault-tier-3-architecture-v0 (#178 + #180) — Tier 2 IronKey hardware - pseudo-anonymization-readlayer-v0 (#177) — read-layer for vault notes Tier: Trivial per ADR-0007 (Spec Kit + prompt, docs-only, no runtime or schema mutation). Refs #237 #235 #236 #238 #142 #64 #178 #180 #177docs(specs): bug prebuild for #86 security-sensitive label routing enforcementto docs(specs): secrets-pipeline-foundation-v0 prebuild (#237)Title corrected (fork-anchor szpachla 2026-05-17)
Original title said "bug prebuild for #86 security-sensitive label routing enforcement" but the 30 committed files are entirely #237 secrets-pipeline-foundation-v0 Spec Kit. Fork-anchor cross-branch collision.
Retitled to reflect actual content. The #86 security-sensitive label routing prebuild was genuinely lost. Retry #86 in fresh worktree session.
This PR addresses #237.
Codex live audit note for this secrets-pipeline prebuild — 2026-05-18 16:56 CEST
This PR is directly relevant to the current blocker in #237. Live evidence from rs2000 today:
/data/platformctl/canary.envis still missing.canary_readinessremainsready=false/not_configured.401 Invalid credentials.canary-required.ymlis still scaffold/readiness-only and green checks do not prove full 3+3 review.Please make the acceptance criteria explicit around runtime proof, not just docs/spec shape:
write_canary_env.pygenerates/data/platformctl/canary.envwith non-secret provenance metadata;canary_readiness.pyreportsready=true;canary-requiredswitches trusted review tocanary-hostonly after readiness is green;decision_packet.jsonfrom realplatformctl.tools.run_review.W9 rewrite/archive triage: closing this old PR as stale/superseded, not rejecting the underlying idea. Reason: Security-sensitive label enforcement prebuild is superseded by later W6/Patchwarden work; any residual #237 work should be narrow and current.
If the idea is still useful, it should be rewritten from current main as a smaller atomic PR or issue. No old branch should merge only because it is green.
Pull request closed