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
Reduce GitHub Actions execution and Artifact Storage usage by avoiding expensive Web / Pages / firmware CI when a change cannot affect those surfaces.
Examples that should normally not trigger expensive product builds/deployments include documentation- and agent-process-only changes such as:
README.md / README.ja.md
ordinary docs/** changes that do not feed a generated/deployed artifact
.agent/**, .agents/**, agent/**, and other development-process-only files
The design must be dependency-aware rather than using a simplistic allow/deny list that can accidentally skip validation for a real product/release dependency.
Current motivation
Pages artifact/storage
Current .github/workflows/pages.yml runs on every push to main and uploads a GitHub Pages staging artifact with actions/upload-pages-artifact.
Current workflow already:
uses retention-days: 1;
deletes the consumed Pages artifact immediately after deployment.
Recent logs show a typical Pages staging artifact is roughly 1.6–1.8 MB and is deleted after deployment, so this is transient rather than durable occupancy. However, unnecessary Pages runs still create temporary Artifact Storage usage and perform a full production firmware + Web build.
Release artifacts
Current .github/workflows/release-authorized.yml uses two bounded Actions artifacts as cross-job handoffs:
raw firmware build handoff;
independently verified release package handoff.
Both use retention-days: 1 and the cleanup job deletes them by exact artifact ID. These handoffs are part of the hardened build/verify/attest/publish trust boundary and must not be removed merely to save storage unless an equally strong design is explicitly approved.
Scope
Review all current product CI/workflow entrypoints, at minimum:
.github/workflows/foundation.yml
Web tests/build
Windows Chrome QR smoke
firmware native/security/build/package validation
.github/workflows/pages.yml
production firmware build for Web Flasher
Web build
Pages staging artifact
Pages deployment
.github/workflows/security.yml
specialized product/test workflows such as issue117-screen-snapshot.yml
release workflows where relevant to dependency classification
Define a maintainable change-impact model so only the jobs affected by the changed paths run.
Possible designs may include:
splitting Web and firmware CI into separate workflows;
keeping one workflow but gating individual jobs;
a lightweight change-classification job followed by conditional jobs;
path-scoped Pages deployment;
another deterministic approach that preserves current required-check semantics.
Specification should select the design after evaluating the trade-offs.
Important merge-gate constraint
Do not apply workflow-level paths: filters blindly to any workflow/check that is required by repository rules.
A required check that is never created because the entire workflow was skipped can leave a PR permanently pending depending on GitHub ruleset semantics.
The final design must verify the current repository Rulesets / required check contexts and ensure that non-impacting changes still reach an unambiguous mergeable state. Prefer a stable lightweight required context or equivalent design where expensive jobs may skip while the required gate still resolves correctly.
Dependency classification requirements
The design must explicitly classify files by the product surfaces they can affect. Examples:
Web / Pages candidates
Likely includes, subject to repository inspection:
web/**
firmware/release metadata and packaging inputs copied into the deployed Web Flasher
scripts used by Pages build/package/validation
workflow itself
dependency/toolchain locks used by the Pages build
Firmware candidates
Likely includes, subject to repository inspection:
firmware/**
firmware/package/security validation scripts
firmware-native tests
build-image/toolchain pinning
workflow itself
Shared security/release inputs
Changes to security contracts, packaging, release-profile validation, CI supply-chain scripts, workflow definitions, dependency pins, or similar shared inputs must trigger every affected validation surface even if they are not under web/** or firmware/**.
Non-product/process-only candidates
README, ordinary documentation, agent contracts, work-tracking/process metadata, etc. should not trigger expensive firmware/Web builds unless the specific file is actually consumed by one of those builds or security validations.
Acceptance criteria
Current workflows, repository Rulesets, and required check contexts are inspected before design is finalized.
A documented/deterministic change-impact classification exists for Web, firmware, Pages, security/release/shared, and process/docs-only changes.
README-only and agent/process-only changes do not run expensive firmware builds.
README-only and agent/process-only changes do not build/deploy Pages or create a Pages staging artifact.
Web-only changes do not run unrelated heavy firmware validation unless a documented shared dependency requires it.
Firmware-only changes do not run unrelated Web validation unless a documented shared dependency requires it.
Changes to shared security/release/toolchain/build inputs trigger all validations that depend on them.
Required status/check semantics remain reliable: no PR is left indefinitely pending because a whole required workflow was path-filtered out.
Pages deployment remains correct for all files that can affect deployed content, including bundled firmware/manifest inputs.
Existing Pages artifact immediate-delete behavior remains in place for deployments that actually run.
Authorized Release artifact handoffs and their security/provenance boundary are preserved unless a separate security-reviewed equivalent is explicitly approved.
Existing release authorization, attestation, secret-handling, and supply-chain controls are not weakened.
Regression tests or contract tests cover representative path classes and expected job/deployment decisions.
Non-goals
Do not remove CI solely to optimize billing if doing so weakens a security or release gate.
Do not remove the release build/verify artifact handoff without an independently reviewed replacement.
Do not change Product / Protocol / Storage Schema / Vault Format behavior as part of this optimization.
Expected workflow
Specification inspects current Rulesets/check requirements and defines the CI impact-routing contract.
Specification splits implementation work if appropriate (for example Pages/Web vs firmware/shared CI).
Infra Implementation updates workflows/tests.
Review independently verifies path-routing and required-check behavior.
Integration confirms repository Rulesets/checks still operate correctly before merge.
Specification resolution — 2026-09-19
State
BLOCKED_DEPENDENCY
Human sequencing decision supersedes the earlier post-release serialization.
Current blocker for #215/#216 implementation: #214 integration, not #213 completion.
Revalidated repository state
Specification inspected current main = bc5c3b90f57952f04a80c8ddfcb55b6d384c882e.
Current active Protect main Ruleset:
target: default branch;
required check contexts: exactly one:
security:scan
GitHub Actions integration ID 15368;
Foundation Web/Firmware checks are not currently required status contexts;
Pages checks are not currently required status contexts.
Current workflows:
.github/workflows/foundation.yml
.github/workflows/security.yml
.github/workflows/pages.yml
.github/workflows/issue117-screen-snapshot.yml
hardened .github/workflows/release-authorized.yml
retired .github/workflows/release.yml tombstone.
Current Pages runs on every push to main, every v*.*.* tag push, and manual dispatch; each deployment performs a production firmware build, production Web build, Pages staging-artifact upload, deploy, and exact artifact deletion.
Current release artifact handoffs remain security-critical and are out of optimization scope.
Selected architecture
Use a fail-safe deterministic impact classifier + conditional heavy jobs, while preserving one always-created required security context.
Do not solve #215 primarily with workflow-level paths: / paths-ignore: on required/security workflows.
The job name/context must remain exactly security:scan.
Do not put a job-level if: on security:scan that could cause it not to be created.
For this optimization, retain the existing full security/release contract suite in security:scan. It is fast relative to firmware/Windows/Pages builds and is the repository's only protected-main required context.
This deliberately prioritizes merge/release certainty over shaving the final small amount of security-check runtime.
Foundation routing
Keep foundation.yml triggered on every PR and every main push, but make only a lightweight impact/classification job unconditional.
Heavy Foundation jobs become conditional:
web runs only for Web or shared-impact changes;
web QR Windows Chrome runs only for Web or shared-impact changes;
firmware runs only for Firmware or shared-impact changes.
For docs/process-only changes:
classifier runs;
Web job is skipped;
Windows Chrome job is skipped;
firmware job is skipped;
required security:scan still completes normally.
Foundation itself is not a required Ruleset context, so conditional skipped jobs do not create a protected-main pending-check problem.
Pages cadence — selected option
Adopt release-oriented Pages deployment plus explicit/manual pre-release candidate deployment.
After implementation, pages.yml must no longer deploy on ordinary main pushes.
Automatic Pages deployment trigger:
protected SemVer tag push matching v*.*.* only.
Manual trigger:
retain workflow_dispatch, but make it explicitly a pre-release/candidate deployment action rather than an implicit routine-main deploy.
manual candidate deployment must be visibly intentional in the workflow input/summary.
it deploys the selected/current authorized repository ref as a candidate and records its exact source SHA/build identity.
no new automatic main-push deployment is permitted.
Do not move Pages deployment inside release-authorized.yml and do not add Pages write/OIDC authority to the hardened publisher. The release build/verify/attest/publish privilege boundary from #127/#199 remains unchanged.
The protected release tag is considered the normal release-stage Pages publication trigger. The Authorized Release GitHub Release publication remains a separate hardened workflow.
Why manual candidate deployment remains available
Historical #75 demonstrated that actual hosted production behavior can expose defects not obvious in unit tests, including CSP/image-loading behavior.
Therefore removing routine Pages deploys is allowed only with two compensating controls:
deterministic local production-equivalent browser coverage in CI;
an explicit manual Pages candidate path when a Human Gate specifically needs the actual GitHub Pages origin/environment.
Routine Web/Firmware Human Gates should use local production-equivalent output unless an Issue explicitly requires hosted Pages.
Deterministic change-impact model
Implement one repository-owned classifier, not duplicated ad-hoc YAML glob logic across jobs.
Preferred source:
scripts/ci_change_impact.py
with deterministic tests, for example:
tests/ci_change_impact_test.py
The classifier accepts changed repository paths and emits stable booleans/categories usable through GITHUB_OUTPUT.
Categories
At minimum:
web
firmware
pages
security_release_shared
snapshot_contract
snapshot_build
process_docs_only
A changed set may belong to multiple categories.
Fail-safe rule
Unknown/unclassified paths must fail heavy, not fail open.
If a changed path is not explicitly recognized as harmless or surface-specific:
classify it as shared impact;
run both heavy Web and Firmware Foundation validation;
mark Pages/shared validation impact as applicable.
This prevents a future new build input from silently bypassing CI because the classifier's allowlist was not updated yet.
Harmless/process-doc classification
These are normally non-product and must not trigger heavy Foundation Web/Firmware or automatic Pages deployment:
These files still pass the always-required security:scan.
Specialized contract tests may still run when a doc/process file is intentionally consumed by those tests; that does not make the file a production firmware/Web input.
Web impact
At minimum:
web/**;
Web-specific build/config/tooling inputs outside web/**, if any are added later;
the classifier itself / Foundation workflow when routing semantics change.
Web impact runs:
Linux Web test/build;
Windows Chrome QR/Argon2 smoke;
local production-equivalent hosted-site smoke described below.
It does not by itself run the heavy ESP-IDF Foundation firmware build.
Firmware impact
At minimum:
firmware/**;
firmware native/runtime test sources under root tests/** when they exercise firmware contracts;
ESP-IDF build-image/toolchain pinning;
isolated firmware build/package/verification scripts used by Foundation.
Firmware impact runs:
native firmware tests/contracts;
isolated ESP-IDF build;
image verification;
package validation.
It does not by itself run unrelated Web unit/Windows browser suites.
Security / release / shared impact
Inputs whose meaning crosses Web/Firmware/release boundaries must conservatively trigger every affected product validation.
Examples include:
.github/workflows/foundation.yml
.github/workflows/security.yml
.github/workflows/pages.yml
hardened release workflow/contracts when their changes can affect build/package security
release-profile/package/validation scripts shared by Pages/Foundation/Release
classifier tests => Shared because they control CI routing.
When ownership of a new test is ambiguous, fail-safe Shared applies.
Event diff semantics
The routing decision must be based on the complete changed-path set.
For pull requests:
compare PR base SHA to PR head SHA, not only the checkout merge commit's working tree.
For push to main:
compare event before to event after.
Renames/deletions count as changes and must be classified using their changed paths.
If the base SHA is missing, all-zero, unavailable, history is insufficient, or diff computation fails:
set Shared/all-heavy impact;
do not silently skip jobs.
Use repository-owned Git/Python logic rather than a new third-party change-filter action unless a separate supply-chain review explicitly approves one.
Production-equivalent Web/Pages CI compensation
Routine main pushes will no longer deploy public Pages, so CI must exercise the static production Web shape without using Vite dev mode.
For Web/Pages/shared impact, add a local production-equivalent smoke path that:
runs a real Vite production build (npm run build or an equivalent production-mode command);
uses the production base path /m5authenticator/;
exercises the production CSP;
enables the normal Firmware Flash UI surface;
provides synthetic/non-secret same-origin firmware manifest/assets sufficient to test route/fetch/layout behavior without requiring an unrelated ESP-IDF build for a Web-only change;
serves the resulting web/dist through a local static/preview server;
opens it in Chrome;
validates Provisioner/Firmware/Help routes and same-origin firmware-manifest fetch under the production base path;
Do not use vite dev as the release-sensitive compensation.
Synthetic firmware fixtures must never be published as production firmware and must be unmistakably test-only.
A firmware-only change is validated by Firmware package/image contracts and does not have to run the unrelated Windows/Web suites merely because Pages eventually bundles the firmware.
Changes to the Web/Firmware manifest contract or other true shared deployment boundary are Shared and run both.
Issue 117 specialized workflow
The current specialized workflow is not a required Ruleset context, so path scoping is allowed, but it currently couples documentation/process contract checks to an expensive ESP-IDF diagnostics build.
Refine it into two impact levels:
Snapshot contract-only
For changes such as:
docs/testing/screen-snapshot-diagnostics.md;
AGENTS.md;
Windows helper scripts;
diagnostics host helper;
snapshot contract tests;
run the relevant lightweight Python contract tests.
Do not build diagnostics firmware merely because AGENTS.md or the procedure document changed.
Snapshot build
Run the diagnostics-ON ESP-IDF build only when inputs capable of changing that firmware/profile change, including:
A one-time manual Pages candidate deployment after integration is recommended to verify the retained manual path and artifact cleanup. It requires Human approval because it overwrites the public Pages site.
Do not close #215 until the post-merge routing evidence is durable.
Release sequencing
Human explicitly requires this CI/Pages change before the v1.0.0 release.
confirm no production v1.0.0 Release has been published;
update the implementation baseline.
#213 has been revised so ordinary-main Pages deployment is no longer a pre-tag requirement after #216 integrates. Instead, #213 requires one exact-main Human-approved manual candidate Pages deployment plus production-host validation before tag creation.
Acceptance
Current Rulesets/required contexts are rechecked immediately before implementation.
security:scan remains always-created and required.
Deterministic repository-owned change-impact classifier exists with fail-safe Shared fallback.
README/docs/agent/process-only changes skip heavy Web, Windows, Firmware, and Pages deployment.
Web-only changes run Web + Windows browser validation but skip heavy firmware build.
Firmware-only changes run Firmware validation but skip unrelated Web/Windows suites.
Shared/release/security/build-routing inputs conservatively run all affected validation.
Unknown paths fail safe to Shared/all-heavy.
Routine main pushes no longer deploy Pages or upload a Pages staging artifact.
Protected SemVer tag pushes retain automatic production Pages deployment.
Goal
Reduce GitHub Actions execution and Artifact Storage usage by avoiding expensive Web / Pages / firmware CI when a change cannot affect those surfaces.
Examples that should normally not trigger expensive product builds/deployments include documentation- and agent-process-only changes such as:
README.md/README.ja.mddocs/**changes that do not feed a generated/deployed artifact.agent/**,.agents/**,agent/**, and other development-process-only filesThe design must be dependency-aware rather than using a simplistic allow/deny list that can accidentally skip validation for a real product/release dependency.
Current motivation
Pages artifact/storage
Current
.github/workflows/pages.ymlruns on every push tomainand uploads a GitHub Pages staging artifact withactions/upload-pages-artifact.Current workflow already:
retention-days: 1;Recent logs show a typical Pages staging artifact is roughly 1.6–1.8 MB and is deleted after deployment, so this is transient rather than durable occupancy. However, unnecessary Pages runs still create temporary Artifact Storage usage and perform a full production firmware + Web build.
Release artifacts
Current
.github/workflows/release-authorized.ymluses two bounded Actions artifacts as cross-job handoffs:Both use
retention-days: 1and the cleanup job deletes them by exact artifact ID. These handoffs are part of the hardened build/verify/attest/publish trust boundary and must not be removed merely to save storage unless an equally strong design is explicitly approved.Scope
Review all current product CI/workflow entrypoints, at minimum:
.github/workflows/foundation.yml.github/workflows/pages.yml.github/workflows/security.ymlissue117-screen-snapshot.ymlDefine a maintainable change-impact model so only the jobs affected by the changed paths run.
Possible designs may include:
Specification should select the design after evaluating the trade-offs.
Important merge-gate constraint
Do not apply workflow-level
paths:filters blindly to any workflow/check that is required by repository rules.A required check that is never created because the entire workflow was skipped can leave a PR permanently pending depending on GitHub ruleset semantics.
The final design must verify the current repository Rulesets / required check contexts and ensure that non-impacting changes still reach an unambiguous mergeable state. Prefer a stable lightweight required context or equivalent design where expensive jobs may skip while the required gate still resolves correctly.
Dependency classification requirements
The design must explicitly classify files by the product surfaces they can affect. Examples:
Web / Pages candidates
Likely includes, subject to repository inspection:
web/**Firmware candidates
Likely includes, subject to repository inspection:
firmware/**Shared security/release inputs
Changes to security contracts, packaging, release-profile validation, CI supply-chain scripts, workflow definitions, dependency pins, or similar shared inputs must trigger every affected validation surface even if they are not under
web/**orfirmware/**.Non-product/process-only candidates
README, ordinary documentation, agent contracts, work-tracking/process metadata, etc. should not trigger expensive firmware/Web builds unless the specific file is actually consumed by one of those builds or security validations.
Acceptance criteria
Non-goals
Expected workflow
Specification resolution — 2026-09-19
State
BLOCKED_DEPENDENCYHuman sequencing decision supersedes the earlier post-release serialization.
Required order:
1.0.0change first.v1.0.0tag.v1.0.0creation.Current blocker for #215/#216 implementation: #214 integration, not #213 completion.
Revalidated repository state
Specification inspected current
main = bc5c3b90f57952f04a80c8ddfcb55b6d384c882e.Current active
Protect mainRuleset:security:scan15368;Current workflows:
.github/workflows/foundation.yml.github/workflows/security.yml.github/workflows/pages.yml.github/workflows/issue117-screen-snapshot.yml.github/workflows/release-authorized.yml.github/workflows/release.ymltombstone.Current Pages runs on every push to
main, everyv*.*.*tag push, and manual dispatch; each deployment performs a production firmware build, production Web build, Pages staging-artifact upload, deploy, and exact artifact deletion.Current release artifact handoffs remain security-critical and are out of optimization scope.
Selected architecture
Use a fail-safe deterministic impact classifier + conditional heavy jobs, while preserving one always-created required security context.
Do not solve #215 primarily with workflow-level
paths:/paths-ignore:on required/security workflows.Required-check invariant
.github/workflows/security.ymlremains triggered for:main.The job name/context must remain exactly
security:scan.Do not put a job-level
if:onsecurity:scanthat could cause it not to be created.For this optimization, retain the existing full security/release contract suite in
security:scan. It is fast relative to firmware/Windows/Pages builds and is the repository's only protected-main required context.This deliberately prioritizes merge/release certainty over shaving the final small amount of security-check runtime.
Foundation routing
Keep
foundation.ymltriggered on every PR and every main push, but make only a lightweight impact/classification job unconditional.Heavy Foundation jobs become conditional:
webruns only for Web or shared-impact changes;web QR Windows Chromeruns only for Web or shared-impact changes;firmwareruns only for Firmware or shared-impact changes.For docs/process-only changes:
security:scanstill completes normally.Foundation itself is not a required Ruleset context, so conditional skipped jobs do not create a protected-main pending-check problem.
Pages cadence — selected option
Adopt release-oriented Pages deployment plus explicit/manual pre-release candidate deployment.
After implementation,
pages.ymlmust no longer deploy on ordinarymainpushes.Automatic Pages deployment trigger:
v*.*.*only.Manual trigger:
workflow_dispatch, but make it explicitly a pre-release/candidate deployment action rather than an implicit routine-main deploy.Do not move Pages deployment inside
release-authorized.ymland do not add Pages write/OIDC authority to the hardened publisher. The release build/verify/attest/publish privilege boundary from #127/#199 remains unchanged.The protected release tag is considered the normal release-stage Pages publication trigger. The Authorized Release GitHub Release publication remains a separate hardened workflow.
Why manual candidate deployment remains available
Historical #75 demonstrated that actual hosted production behavior can expose defects not obvious in unit tests, including CSP/image-loading behavior.
Therefore removing routine Pages deploys is allowed only with two compensating controls:
Routine Web/Firmware Human Gates should use local production-equivalent output unless an Issue explicitly requires hosted Pages.
Deterministic change-impact model
Implement one repository-owned classifier, not duplicated ad-hoc YAML glob logic across jobs.
Preferred source:
with deterministic tests, for example:
The classifier accepts changed repository paths and emits stable booleans/categories usable through
GITHUB_OUTPUT.Categories
At minimum:
webfirmwarepagessecurity_release_sharedsnapshot_contractsnapshot_buildprocess_docs_onlyA changed set may belong to multiple categories.
Fail-safe rule
Unknown/unclassified paths must fail heavy, not fail open.
If a changed path is not explicitly recognized as harmless or surface-specific:
This prevents a future new build input from silently bypassing CI because the classifier's allowlist was not updated yet.
Harmless/process-doc classification
These are normally non-product and must not trigger heavy Foundation Web/Firmware or automatic Pages deployment:
README.mdREADME.ja.mddocs/assets/**docs/**.agent/**.agents/**agent/**AGENTS.mdfor product builds.These files still pass the always-required
security:scan.Specialized contract tests may still run when a doc/process file is intentionally consumed by those tests; that does not make the file a production firmware/Web input.
Web impact
At minimum:
web/**;web/**, if any are added later;Web impact runs:
It does not by itself run the heavy ESP-IDF Foundation firmware build.
Firmware impact
At minimum:
firmware/**;tests/**when they exercise firmware contracts;Firmware impact runs:
It does not by itself run unrelated Web unit/Windows browser suites.
Security / release / shared impact
Inputs whose meaning crosses Web/Firmware/release boundaries must conservatively trigger every affected product validation.
Examples include:
.github/workflows/foundation.yml.github/workflows/security.yml.github/workflows/pages.ymlShared impact runs:
Tests
Do not classify all
tests/**as docs/process.Test changes must run the production surface they validate:
web/**=> Web;When ownership of a new test is ambiguous, fail-safe Shared applies.
Event diff semantics
The routing decision must be based on the complete changed-path set.
For pull requests:
For push to main:
beforeto eventafter.Renames/deletions count as changes and must be classified using their changed paths.
If the base SHA is missing, all-zero, unavailable, history is insufficient, or diff computation fails:
Use repository-owned Git/Python logic rather than a new third-party change-filter action unless a separate supply-chain review explicitly approves one.
Production-equivalent Web/Pages CI compensation
Routine main pushes will no longer deploy public Pages, so CI must exercise the static production Web shape without using Vite dev mode.
For Web/Pages/shared impact, add a local production-equivalent smoke path that:
npm run buildor an equivalent production-mode command);/m5authenticator/;web/distthrough a local static/preview server;Do not use
vite devas the release-sensitive compensation.Synthetic firmware fixtures must never be published as production firmware and must be unmistakably test-only.
A firmware-only change is validated by Firmware package/image contracts and does not have to run the unrelated Windows/Web suites merely because Pages eventually bundles the firmware.
Changes to the Web/Firmware manifest contract or other true shared deployment boundary are Shared and run both.
Issue 117 specialized workflow
The current specialized workflow is not a required Ruleset context, so path scoping is allowed, but it currently couples documentation/process contract checks to an expensive ESP-IDF diagnostics build.
Refine it into two impact levels:
Snapshot contract-only
For changes such as:
docs/testing/screen-snapshot-diagnostics.md;AGENTS.md;run the relevant lightweight Python contract tests.
Do not build diagnostics firmware merely because
AGENTS.mdor the procedure document changed.Snapshot build
Run the diagnostics-ON ESP-IDF build only when inputs capable of changing that firmware/profile change, including:
The classifier/contracts must pin this distinction.
Pages deployment contract
Automatic release-stage deployment
For a
vX.Y.Ztag event:retention-days: 1as defense in depth;Manual candidate deployment
Manual candidate deployment:
Do not make a PR automatically overwrite public Pages.
No routine main deployment
A normal merge/push to main:
build-pages;deploy-pages;The public site therefore represents the most recently deployed release/candidate, not necessarily current main.
Documentation/build identity must not imply otherwise.
Release workflow artifacts
No changes to the Authorized Release build/verify artifact handoff design are allowed under #215.
Preserve:
retention-days: 1;These are trust-boundary artifacts, not disposable CI convenience artifacts.
Required contract tests
Add deterministic tests that cover at least these changed-path matrices:
README.mdonlyREADME.ja.md+docs/assets/**.agent/**/agent/**onlydocs/**onlyweb/src/**onlyfirmware/**onlyAlso test:
security:scanworkflow has no workflow-level path filter and no skip condition;Documentation
Document the impact model in a durable repository location close to CI/release operations.
Preferred:
or an equivalent existing CI/development document if one already owns this subject.
Document:
Do not duplicate internal Agent process contracts into product docs.
Integration / rollout gates
Because #215 changes workflow routing, Integration must verify on the exact implementation head and post-merge main:
Protect mainstill requires only the intended stablesecurity:scancontext unless a separately approved Ruleset change is made;security:scan;security:scanand the expected Foundation routing;A one-time manual Pages candidate deployment after integration is recommended to verify the retained manual path and artifact cleanup. It requires Human approval because it overwrites the public Pages site.
Do not close #215 until the post-merge routing evidence is durable.
Release sequencing
Human explicitly requires this CI/Pages change before the v1.0.0 release.
Dependency:
1.0.0.Before claiming #216:
refs/tags/v1.0.0is still absent;#213 has been revised so ordinary-main Pages deployment is no longer a pre-tag requirement after #216 integrates. Instead, #213 requires one exact-main Human-approved manual candidate Pages deployment plus production-host validation before tag creation.
Acceptance
security:scanremains always-created and required.