feat(config): promote gateway policy example → live (Phase E §1.5)#208
Merged
Conversation
Lands `config/gateway-policy-boj.yaml` — the live Verb Governance Spec that the HCG tier-2 gateway loads via `POLICY_PATH` in staging (§2.1) and production (§3.1) per the rollout runbook. Content-identical to `gateway-policy-boj-example.yaml` at promotion time; the example remains as the Phase A A3 worked-example artefact. From here, BoJ surface evolution lands in the live file; the example is updated only when its pedagogical role requires it. Runbook §1.5 — flips the trailing "still to be promoted from this example before §3.1" note to a discrete [x] item recording the live file's existence. Runbook §2.1 step 2 — switches staging `POLICY_PATH` to the live file so staging exercises the same artefact production will. Header version bump 0.2 → 0.3 with status line acknowledging the promotion. No code paths change. The HCG deploy spec (`container/gateway-deploy.k9.ncl`, http-capability-gateway#38) reads `POLICY_PATH` at deploy time from the env, so the live-file cut-over is a runbook + config artefact change, not a deploy-spec change. Refs hyperpolymath/standards#91 Refs hyperpolymath/standards#100 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
🔍 Hypatia Security ScanFindings: 270 issues detected
View findings[
{
"reason": "Stale AI session file -- delete",
"type": "stale",
"file": "GEMINI.md",
"action": "delete",
"rule_module": "root_hygiene",
"severity": "medium"
},
{
"reason": "Action if: always()\n uses: actions/upload-artifact@ea165f8 needs attention",
"type": "unpinned_action",
"file": "e2e.yml",
"action": "pin_sha",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Action perpolymath/standards/.github/workflows/governance-reusable.yml@main\n needs attention",
"type": "unpinned_action",
"file": "governance.yml",
"action": "pin_sha",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in abi-drift.yml",
"type": "missing_timeout_minutes",
"file": "abi-drift.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in codeql.yml",
"type": "missing_timeout_minutes",
"file": "codeql.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in container-publish.yml",
"type": "missing_timeout_minutes",
"file": "container-publish.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in dogfood-gate.yml",
"type": "missing_timeout_minutes",
"file": "dogfood-gate.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in dogfood-gate.yml",
"type": "missing_timeout_minutes",
"file": "dogfood-gate.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in dogfood-gate.yml",
"type": "missing_timeout_minutes",
"file": "dogfood-gate.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in dogfood-gate.yml",
"type": "missing_timeout_minutes",
"file": "dogfood-gate.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
}
]Powered by Hypatia Neurosymbolic CI/CD Intelligence |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Lands
config/gateway-policy-boj.yaml— the live Verb Governance Specthe HCG tier-2 gateway loads via
POLICY_PATHin staging (§2.1) andproduction (§3.1) per the rollout runbook. The Phase A worked example
(
config/gateway-policy-boj-example.yaml) is retained as the documentationartefact; the live file is now the operational one. Closes the example→live
promotion item on the Phase E §1.5 checklist.
Single-lane HCG tier-2 channel (
standards#91). Phase A (#96), B (#97),C (#98), D (#99) are joint-closed; Phase E (
standards#100) is the activephase, with multiple artefacts gating closure (§6.4 Trustfile flip is the
last). This PR lands one tractable artefact; staging soak (§2), production
traffic split (§3) and the §6.4 flip remain owner-driven.
What this PR lands
config/gateway-policy-boj.yaml— live policy file. Content-identicalto
gateway-policy-boj-example.yamlat promotion time. Header rewrittento reflect its live-file role (operational artefact, not pedagogical),
with
DEFAULT-DENY INVARIANTreframed from "Phase A check" to "permanentinvariant — must hold for every future gateway release". DSL v1 conformance
preserved; all 28 routes (
global_verbs: [GET, POST]; per-routeverbs,exposure,name,narrative;stealth_profileon internal routes;top-level
stealth: { enabled: true, status_code: 404 }) carried forwardunchanged.
example before §3.1" note (on the existing
[x]example-in-place line)to a discrete
[x]item recording the live file's existence and thedivergence policy ("future BoJ-surface evolution lands in the live file;
the example remains as the worked-example artefact").
POLICY_PATHfrom the exampleto the live file so staging exercises the same artefact that production
will. Production §3.1 (which inherits §2.1's environment with the
traffic-shift mechanism overlaid) needs no change.
the live-policy promotion.
What this PR deliberately does NOT do
standards#100. Per runbook §6.5 the joint-close happens afterthe §6.4 Trustfile flip (
tier_2_gateway.status: PENDING → DEPLOYED),which itself follows the §3.3 100% production-soak window. Using
Refsnot
Closesto match the established Phase E pattern (PRs chore(deps): bump nixpkgs from01fbdeeto6368eda#38, andPhase D PRs fix: offline inspection mode for Glama tool detection #14, Update dependabot.yml #22, Add Green Web Foundation badge #26, Claude/resume repos migration 9 o2 u1 #30 — all
Refs'd their phase issue and theowner joint-closed the issue once the final artefact landed). This
deliberately diverges from the dispatch brief's literal "Closes
hyperpolymath/standards#" line in favour of the
canonical runbook §6.5 close-out discipline that the brief itself points
to as the source of truth ("using the canonical sources"). The owner
remains the sole closer of
standards#100.container/gateway-deploy.k9.nclinhyperpolymath/http-capability-gateway(PR chore(deps): bump nixpkgs from01fbdeeto6368eda#38) readsPOLICY_PATHatdeploy time from the env, so the live-file cut-over is a runbook + config
artefact change on the BoJ side, not a deploy-spec change on the gateway
side. No companion PR on the gateway repo.
are content-identical. Future divergence is intentional and the live file
is authoritative; the example may be intentionally simpler.
flip happens at merge time. This is a static artefact landing.
POLICY_PATHdefault. The deploy speccarries env-var declarations; the live-file path is operator-supplied at
deploy time.
Verification
dsl_version: "1";governance.global_verbsis[GET, POST]; every route has a non-emptyverbs;exposure ∈ {public, authenticated, internal};stealth.enabledboolean,stealth.status_code: 404in 100..599.count,
names, paths, verbs, exposures, narratives).MPL-2.0matches repo convention (config/, docs/).gateway-policy-boj.yamland
gateway-policy-boj-example.yamlresolve.mix gateway.validate config/gateway-policy-boj.yaml(gateway-side; can be run by the operator before §2.1 stand-up —
see runbook §1.5 last open item, smoke-test).
Channel position
Refs hyperpolymath/standards#91
Refs hyperpolymath/standards#100
🤖 Generated with Claude Code
Generated by Claude Code