2026-08-01-sec-kn-p6-rotate-ec2-code-divergence.md markdown
37 lines 1.7 KB
Raw
sha256:700fafdd1afa490919f9515d660ca6e75456bcd5bb67513abcd8757a634c01f6 docs: record AIP-b SD-21 land (KN #308) Human 10 days ago

title: SEC-KN-P6-ROTATE — EC2 MCP host code divergence (top freeze input) date: 2026-08-01 step: SEC-KN-P6-ROTATE-a model: Thinking authority: knowtation posture: Thinking session probes only — no secret rotation, no env/posture flip, no deploy frozen_input_for: docs/SEC-KN-P6-ROTATE-FREEZE.md

EC2 MCP host runs pre-current-main code (source SEC-KN-3 is on main)

Board correction

SEC-KN-3 tip 5954c433… is an ancestor of Muse main. GitHub origin/main contains the SEC-KN-3 resolveHostedActorRole markers (first mirrored at git 69a7673, 2026-07-27). The ROADMAP wording "SEC-KN-3 … not merged to main" was stale.

Live probe (same agent_access JWT on both hosts)

Call Gateway (api.knowtation.store) MCP (mcp.knowtation.store)
GET health 200 Netlify 200 nginx/1.24.0
GET session introspection 200 200 (shared secret still holds)
POST discard nonexistent prop-p6-rotate-probe-nonexistent-0000 401 UNAUTHORIZED 200 (empty body)
GET same nonexistent id 404 NOT_FOUND 404 NOT_FOUND

Token scopes were exactly propose + vault:read (no write/admin). On current main, Phase C agentScopesPermitMethod refuses discard create-path → getUserId null → 401 (hub/lib/agent-credential-core.mjs:366-388; hub/gateway/server.mjs:1628-1634). MCP returning 200 means that refuse path is absent on EC2 → runtime ≠ current main.

Frozen consequence

Deploy current main to EC2 before any SESSION_SECRET rotation (docs/SEC-KN-P6-ROTATE-FREEZE.md D2). The 200 is not treated as a completed admin-elevation proof (real approve not run); it is enough to gate deploy-first.

File History 1 commit
sha256:700fafdd1afa490919f9515d660ca6e75456bcd5bb67513abcd8757a634c01f6 docs: record AIP-b SD-21 land (KN #308) Human 10 days ago