fix(security): finish Bws/Infisical secrets injection — close 3-thread gap #237
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
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
pdurlej/platform#237
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Why this matters (and how it helps Iskra)
Iskra's mail loop (#235), Phase 1.0 bundle (#236), and DR restore (#238) all need a clean secrets pipeline. Currently we have:
617b59fa, Apr 4)44684022Apr 5:curl -k, plaintext fallback, service token in plaintextdocs/bws-setup.md,scripts/bws-preflight.sh,scripts/bws-run.shPer
state/L3/OPEN_LOOPS.md: "each thread independently surfaces same gap" across 3 separate audits. We've been talking about this since April 5. It's a class/security-sensitive root-cause for downstream issues.Context (from
state/L3/OPEN_LOOPS.md—unresolved_activecluster "Bws/Infisical secrets injection")3 audits, same gap, never closed:
44684022curl -k(TLS validation bypass), plaintext fallback in fetch path, service token stored as env var617b59faa931c692On VPS-side: 3 niecommitowane pliki:
docs/bws-setup.md,scripts/bws-preflight.sh,scripts/bws-run.sh— sit on RS2000 uncommitted. Either commit them or formally archive.Adjacent: Infisical bridge on RS2000 — referenced as gate for
canary-required.ymlautomation per DeepSeek 2026-05-11 review.Acceptance criteria
state/archive/per ADR-0006.curl -k→ use real TLS validation with pinned CA if neededrunbooks/secrets-pipeline.mdcovers rotation + emergency disconnect + bootstrap recovery.Codex Packet
Scope: class/security-sensitive — smallest coherent PRs per AGENTS.md + REVIEW.md
class/security-sensitiverules. Full canary 3+3 tier per ADR-0007.Hard sequence (don't skip):
Non-goals (DON'T do this)
policies/sacred-paths.yamlto "unlock" anything. Hard fail.module.yamleven temporarily for testing. Hard fail.References
state/L3/OPEN_LOOPS.md— "Bws/Infisical secrets injection — never closed despite 3 threads"44684022(Apr 5),617b59fa(Apr 4),a931c692(Apr 12)Filed by claude (Prof Kong intermezzo, 2026-05-12 morning).
Codex live audit: this is still the hard blocker — 2026-05-18 16:56 CEST
Verified on rs2000:
/data/platformctl/infisical-client-secretexists and isroot:root 0600./data/platformctl/canary.envdoes not exist./data/platformctl/reports/canary-readiness-current.jsonis stale from 2026-05-10 and saysready=false,status=not_configured.PLATFORMCTL_CANARY_ENV_SCHEMA,PLATFORMCTL_CANARY_ENV_SOURCE,PLATFORMCTL_CANARY_ENV_SECRET_MAP_SHA256,PLATFORMCTL_ZAI_API_KEY.401 Invalid credentials.So the secrets bridge is not operational for the canary path yet. This issue should remain open until the machine identity can generate the canary env file and the readiness report is green.
Non-negotiable constraint preserved: do not replace this with direct Forgejo repo secrets for ZAI/OpenAI/Anthropic/Claude/etc. The right fix is machine identity ↔ Infisical ↔ machine-local env file, plus non-secret metadata proving provenance.
W4c Slice 1 — Infisical primary decision PR opened — 2026-05-24
Role: executor
Intent: checkpoint
Needs owner: yes, via PR merge decision
Opened #438 as the #237 Decision PR slice.
What it decides
What it does not do
Next after merge
Proceed with W4c recovery/archive inventory for old BWS files, then narrow concrete leak fixes such as #124.
W4c BWS recovery/archive recon — 2026-05-24
Role: executor
Intent: checkpoint
Needs owner: no, unless operator has an external backup/private copy of the old BWS files
Opened #440 as the BWS recovery/archive recon PR.
Result
The three historical BWS target files from #237 are not present in current checked locations:
No file contents were printed or copied. No runtime mutation.
Decision recorded in PR
No BWS content can be safely committed or archived from current RS2000 state. The archive result is metadata-only negative evidence. BWS remains legacy/recovery material per ADR-0024.
Remaining #237 work
W4d/W4e closeout prep opened — 2026-05-24
Role: executor
Intent: checkpoint
Needs owner: no immediate action beyond PR review
Opened #442 to prepare W4 closeout after the parallel W4 fork PRs merge.
It classifies W4 blockers vs follow-up milestones:
Runtime: none.
W4c BWS/Infisical follow-up has been consolidated into #443. If #443 merges, the W4 backend ambiguity and stale BWS-file recovery item are resolved; residual concrete fixes should continue as narrow follow-ups, not broad backend debate.
Closing after M03 triage as the broad parent is now superseded/resolved.
Evidence:
runbooks/secrets-pipeline.mdnow defines the operational contract.state/reports/w4c-bws-recovery-archive-2026-05-24.mdrecords the BWS recovery/archive recon: the historical three BWS files were not found in current repo or checked RS2000 roots.What this does not claim:
Remaining work should be tracked as narrow, concrete issues when found. Keeping this broad April-era bucket open now creates more ambiguity than safety.