Public SharePlane architecture microsite. Derived mechanically from accepted PR #221 head ef64a658cb302262afc21f3cbaaf74c787633e2a.

Packages and receipts

01 · The absurdity

The Governed Static Publishing Lane

A qualifying static site should inherit an approved publishing system rather than implement its own delivery pipeline.

The deliverable is a directory of HTML, CSS, JavaScript, images, and approved downloads. The process often arrives dressed as a transactional application: container images, bespoke pipelines, manual credentials, security tickets, infrastructure handoffs, and evidence rebuilt from scratch.

Security checks are legitimate. Rebuilding the same mechanics, controls, credentials, and proof in every repository is not. A bad process written in YAML remains a bad process, merely with better indentation.

02 · The actual problem

Six decisions were welded into one opaque process.

01

Hosting

Where immutable files are served.

02

CI orchestration

What invokes the reusable contract.

03

Security controls

Which checks apply to this risk tier.

04

Release approval

Who authorizes an environment transition.

05

Evidence

What proves the artifact and checks.

06

Ownership

Who supports, reviews, and retires it.

The governing principle: encode the applicable controls once, publish them as a versioned product, and let repositories declare intent through a thin adapter.

03 · Choose your view

View this recommendation as

Each view changes the nearby summary, proof signals, objections, and actions. Your explicit choice persists on this device.

Engineering view selected

Provide a deterministic artifact root, not a new platform.

Commit the source, declare the output directory, keep secrets and server behavior out, run the same checks locally, and receive an immutable preview plus receipt.

Provide
HTML, CSS, JS, images, approved downloads
Frameworks
Plain files or deterministic React, Astro, Vue, and equivalents
Failure
Fail closed with a named check and local reproduction
Rollback
Redeploy a previously receipted checksum
Recommended actions
  1. Declare outputPath and runtime.
  2. Run the qualification command locally.
  3. Keep environment-specific content out of built bytes.

Objection answered: “Every site is unique” does not mean every site needs unique delivery mechanics.

04 · Classify the workload

A deterministic educational decision aid

This guide identifies a likely lane. It is not an authoritative corporate approval engine and cannot replace local architecture, security, privacy, legal, or records review.

Runtime and state
Browser and environment
S0

Current deterministic result

Static content lane

Recommended hosting

Purpose-built static hosting; evaluate authentication and network posture separately.

Minimum controls

  • Secrets and content checks
  • HTML, links, accessibility, and headers
  • Ownership, checksum, and receipt

Disqualifying conditions

Any server runtime, state mutation, user-submitted data, or runtime secret moves the workload to S2.

Unresolved local review

Confirm content classification, audience, identity, network, records, and release requirements.

Read the classifier rules without JavaScript
  1. If server code, state mutation, user-submitted data, background work, sensitive processing, or runtime secrets exist, classify S2 and exit this lane.
  2. Otherwise, if client-side logic or approved API calls exist, classify S1 and add dependency, SBOM, CSP, endpoint, and browser-security controls.
  3. Otherwise classify S0 and apply the baseline static-content controls.
  4. Controlled content and private-network requirements do not change S0/S1/S2 by themselves; they add unresolved local authorization, hosting, and network decisions.

05 · Current versus target

Move the system boundary

Current state selected

Every repository rebuilds the delivery system.

Control intent may be legitimate, but implementations, credentials, evidence, approvals, and failures fragment across repositories.

Current: repeated application-scale delivery

  1. Repository ABespoke Jenkinsfile
  2. Repository BDifferent YAML and credentials
  3. Repository CContainer added for static files
  4. Security reviewEvidence reassembled repeatedly
  5. Manual releasePortal action and unclear rollback

Failure signature: the organization standardizes tools while preserving implementation variance.

06 · The pipeline contract

The repository declares intent. The platform supplies mechanics.

Illustrative site-manifest.yaml

schemaVersion: 1
site:
  name: example-architecture-guide
  owner: platform-engineering
  classification: internal
runtime:
  type: static
  outputPath: dist
authentication:
  mode: enterprise-identity
network:
  exposure: private

Illustrative thin Jenkins adapter

governedStaticSite {
    outputPath = "dist"
    classification = "internal"
    runtime = "none"
    authentication = "entra"
    targetEnvironment = "development"
}

Reference patterns only. Map fields, identity, controls, credentials, and approvals to local policy and tooling. These are not drop-in corporate configurations.

Repository supplies
  • Artifact root
  • Classification
  • Owner
  • Runtime declaration
  • Approved exceptions
Platform inherits
  • Qualification
  • Security controls
  • Build and package
  • Immutable promotion
  • Credentials
  • Evidence and rollback metadata
Failure returns
  • Named failed control
  • Template version
  • Local reproduction
  • Artifact identity
  • Exception route

07 · Security without repetition

Risk-tiered controls, inherited centrally

Control areaS0 · static contentS1 · static applicationS2 · dynamic application
QualificationStatic files; no client application logicClient-side logic or approved API consumptionServer, state, secrets, writes, input, or sensitive processing
BaselineSecrets, file types, malware, HTML, links, classification, headers, accessibility, ownership, checksum, receiptAll S0 controlsExit the Static Publishing Lane
Software supply chainGenerated-file provenance where applicableLocked dependencies, SCA, SBOM, license policy, client static analysisOrganization application-delivery policy
Browser securityHeader policy and no unexpected originsCSP validation, endpoint allowlist, browser security testsApplication threat model and runtime testing
Content riskClassification, accuracy, privacy, legal, records, export, harm, and audience review remain independent of runtime tier.
ExceptionsNamed owner, justification, scope, compensating control, approval, and expiryHandled by the receiving application lane

Mandatory inheritance

A repository cannot silently omit a required control.

Central versioning

Control changes are pinned, tested, receipted, and deliberately adopted.

Fail closed

Unknown runtime, missing owner, invalid classification, and unmatched bytes stop the lane.

Traceable exceptions

Exceptions are records with expiry, not comments that outlive their context.

08 · Why not Docker?

Portability is valuable. Unnecessary runtime is not.

Containers are justified when the workload needs a server process, runtime-specific behavior, controlled native dependencies, a consistent application execution environment, or an accepted platform boundary. They are weak justification when the only job is serving immutable files.

QuestionStatic hostContainer runtime
Server process required?NoYes, or a documented platform constraint requires it
Operational additionsArtifact, host, headers, access, receiptRegistry, image scanning, base-image patching, runtime health, orchestration, capacity
Rollback unitImmutable file artifactImage plus runtime configuration
Good reasonSimple static deliveryReal server/runtime requirement or approved uniform platform contract
Bad reason“Everything goes in Docker” without measuring the additional control and operational surface.

Balanced decision: do not prohibit containers. Require the requirement that earns them.

09 · Azure worked example

A practical hierarchy, not a product advertisement

Capabilities, plan availability, regions, tenant configuration, network design, and enterprise policy can change. Verify the linked Microsoft documentation and local standards during implementation.

  1. Primary

    Azure Static Web Apps Standard

    Use when purpose-built static hosting, route/header configuration, supported authentication, and the required network posture fit. Microsoft documents preconfigured GitHub and Microsoft Entra ID authentication, route authorization in staticwebapp.config.json, and Standard-plan private endpoints.

  2. Fallback

    Azure App Service Linux without a container

    Use when Static Web Apps cannot satisfy a requirement but a container still adds no value. App Service documents built-in authentication, private endpoints, access restrictions, diagnostic logs, and deployment slots on supported tiers.

  3. Limited

    Azure Storage static website

    Use only for deliberately public, anonymous, low-complexity content when limitations are acceptable. Microsoft states that the static website feature does not provide AuthN/AuthZ and cannot configure headers without another service such as CDN.

  4. Exit

    Application platform

    Use Container Apps, App Service runtime, Kubernetes, or another application platform when server execution, state, secrets, transactions, background work, or sensitive processing makes the workload S2.

External CI

Static Web Apps supports custom source providers through a build job and deployment job using a deployment token. Store the token in the approved secret system, scope access, rotate on exposure or lifecycle policy, and update the calling pipeline after reset.

Identity and network

Authentication identifies a user; route rules authorize access. A private endpoint restricts network reachability and does not replace user authorization. DNS is part of the private-endpoint design.

Central enforcement

Azure DevOps required-template checks can fail a pipeline that does not extend the required template. Approvals and checks live on protected resources rather than in pipeline YAML and can stop a stage before execution.

Promotion

Preserve one artifact checksum across environments. Keep environment routing, identity, and policy outside the artifact where possible; if bytes change, call it a new artifact rather than “the same build.”

Official Microsoft source notes

Documentation reviewed for this candidate on 2026-07-30. The bibliography download records page titles, URLs, and bounded claims used.

10 · Other platforms

Keep the architecture platform-neutral

Purpose-built static host

Managed static-site products, object storage plus an edge layer, or a governed internal static-hosting service.

Replaceable adapter

Jenkins, Azure DevOps, GitHub Actions, GitLab CI, Buildkite, or another approved orchestrator.

Policy and evidence

Central templates, reusable actions, policy engines, signed attestations, and immutable artifact registries.

Decision criteria

Identity, private reachability, headers, custom domains, observability, immutable promotion, cost, support, and exit portability.

11 · Metrics and proof

One successful page is not the success condition.

Baseline the current path before the pilot. Compare the same workload and report the result without manufacturing a victory.

MeasureCurrent baseline90-day target evidence
Commit to DevelopmentElapsed and queue timeSame start/stop definition; lower median and tail
Human workManual actions and handoffsFewer, with approvals preserved where required
Repository burdenPipeline lines and credential countThin adapter and centrally held environment credentials
ReliabilityFailed deployment rate and diagnosis timeNamed failure domains and faster reproduction
EvidenceAssembly time and missing artifactsAutomatic human and machine receipts
RecoveryRollback steps and elapsed timeRedeploy exact known-good checksum
ScaleSecond-repository onboarding effortMaterially lower than the first without weaker controls
GovernanceExceptions and inherited controlsExceptions visible; inherited percentage rising

12 · Serious objections

Challenge the assumption without caricaturing the team

“Security requires the current pipeline.”

List the required controls and prove which mechanism enforces each one. Preserve the controls; replace repository-specific mechanics only when the new lane provides equal or stronger evidence.

“Containers make everything portable.”

They make a runtime portable. A static artifact is already portable across conforming HTTP hosts. Add a container only when its runtime contract earns the cost.

“Static means low risk.”

Static narrows runtime risk. It says nothing about confidentiality, accuracy, malicious content, regulated material, intellectual property, or inappropriate public release.

“Azure DevOps would solve this.”

A new orchestrator can host the same fragmented model. The solution is the reusable contract, qualification, controls, artifact identity, and evidence—not the logo on the YAML runner.

“Build once cannot handle environment configuration.”

Move host, identity, DNS, headers, and environment policy into the deployment plane where possible. When environment-specific bytes are unavoidable, produce a new checksum and stop calling it the same artifact.

“A central platform will become another bottleneck.”

It will if it requires bespoke tickets. Operate it as a self-service product with versioned contracts, clear service levels, observable failures, bounded exceptions, and contribution paths.

13 · Adoption roadmap

Prove the lane in Development before asking for Production

30

Baseline and contract

  • Measure one current workflow.
  • Provision a Development landing zone.
  • Define S0/S1/S2 and content classification.
  • Lock the artifact, receipt, ownership, and rollback contracts.

Exit: agreed baseline and approved Development experiment.

60

Template and negative proof

  • Implement the central publishing template.
  • Create the first thin CI adapter.
  • Prove secret, classification, missing-owner, S2, integrity, access, and rollback failures.
  • Generate human and machine receipts.

Exit: exact artifact reaches Development without portal deployment.

90

Second repository and decision

  • Onboard a materially different second repository.
  • Compare lead time, handoffs, failures, evidence, and credentials.
  • Exercise template upgrade and rollback.
  • Seek local governance approval before any Production use.

Exit: evidence-backed go, revise, or stop decision.

14 · Download the implementation kit

Reusable contracts, examples, receipts, runbooks, and checklists

Sanitized reference material. No credentials, employer-specific policy, production endpoint, or claim of enterprise validation is included.

  • Architecture Decision Record
  • Reference architecture diagram
  • Workload qualification tree
  • S0/S1/S2 control matrix
  • site-manifest.yaml
  • Thin Jenkins adapter
  • Azure DevOps consumer
  • Generic CI adapter contract
  • Artifact manifest schema
  • Human and machine receipts
  • Adoption backlog
  • Operator and rollback runbooks
  • Developer onboarding checklist
  • Production-readiness checklist
  • Source bibliography
  • Static-directory publishing contract
  • Deterministic inventories and hashes
  • Reference-only limitations

15 · Recommendation

Standardize the publishing system, not the shape of every site.

Give teams a narrow contract, inherited controls, immutable artifacts, observable failures, usable receipts, and a real rollback path. Keep content authority, security judgment, and Production approval intact.

This Development candidate demonstrates the static mechanics. It does not prove adoption results, validate a real enterprise environment, authorize a cloud design, or justify public publication. Those decisions require local evidence and separate authority.

16 · Exact source and portability

The protected evidence stays immutable. The public shell is the adapter.

The accepted Development HTML, CSS, JavaScript, implementation kit, static-directory archive, and standalone HTML remain hash-bound to PR #221. This public derivative removes only Development chrome and the route-local theme controller, then composes the canonical SharePlane shell and global theme state around the approved interaction model.