You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs/admin/github-integration.mdx now drifts from the live, deliberately-designed app configuration (both hephaestus-aet and hephaestus-staging-aet were rebuilt 2026-09-01 to a tiered model and are byte-identical). The guide is also the operator's template for self-hosted installs, so it must teach the model, not just list checkboxes. Fold in the following session knowledge:
1. Tiered permission model (replaces the flat tables):
Core contract (required to function): Metadata R, Contents R, Pull requests RW, Issues RW, Discussions R, Members R, Organization projects R — with the "why" per row as today.
2. Event list update: the full current set incl. the provisioned families (check_run, check_suite, status, workflow_run, workflow_job, deployment, deployment_status, deployment_review, merge_group, merge_queue_entry, release, commit_comment, create, delete, dependabot_alert, secret_scanning_alert, code_scanning_alert, issue_dependencies) with one-line rationale each, and an explicit "deliberately not subscribed" list (deploy_key, team_add, deployment_protection_rule, exemption_request_push_ruleset — approval-gate/plumbing events; the app observes, it never gates).
Permission increases take effect per-installation only after each installed org approves the pending request (org → Settings → GitHub Apps); reductions and event changes apply immediately. Batch increases to minimize approval rounds.
Brand vs instance URLs: homepage = product domain (hephaestus.build); webhook URL + OAuth callbacks = the instance hostname — webhook deliveries do NOT follow redirects, so a brand-domain webhook URL silently loses every event.
Failed-delivery triage and Redeliver live on the App's Advanced tab.
App ownership transfer (e.g. to an org) preserves app ID, client credentials, private keys, and all installations; after transfer check "Where can this app be installed" → Any account.
Consent-screen texts: description mirrors the literal grants (reads vs writes, "never modifies your code"), per-environment apps required (single webhook URL per app), staging apps carry a name suffix.
Done when the guide teaches the tiered model with per-row rationale, the operational-mechanics section exists, the manifest/OAuth templates match, and a note instructs future permission changes to update this page in the same PR (no app/docs drift).
docs/admin/github-integration.mdxnow drifts from the live, deliberately-designed app configuration (bothhephaestus-aetandhephaestus-staging-aetwere rebuilt 2026-09-01 to a tiered model and are byte-identical). The guide is also the operator's template for self-hosted installs, so it must teach the model, not just list checkboxes. Fold in the following session knowledge:1. Tiered permission model (replaces the flat tables):
2. Event list update: the full current set incl. the provisioned families (
check_run,check_suite,status,workflow_run,workflow_job,deployment,deployment_status,deployment_review,merge_group,merge_queue_entry,release,commit_comment,create,delete,dependabot_alert,secret_scanning_alert,code_scanning_alert,issue_dependencies) with one-line rationale each, and an explicit "deliberately not subscribed" list (deploy_key,team_add,deployment_protection_rule,exemption_request_push_ruleset— approval-gate/plumbing events; the app observes, it never gates).3. Operational mechanics section (currently undocumented):
hephaestus.build); webhook URL + OAuth callbacks = the instance hostname — webhook deliveries do NOT follow redirects, so a brand-domain webhook URL silently loses every event.Done when the guide teaches the tiered model with per-row rationale, the operational-mechanics section exists, the manifest/OAuth templates match, and a note instructs future permission changes to update this page in the same PR (no app/docs drift).