Skip to content

Self-acceptance wave-1: post-deploy live probe of the published site, auto-file defect issue on failure #11

@loning

Description

@loning

Parent: self-drive master umbrella (fkst-packages#139), pillar C wave-1. Site umbrella: #2.

Motivation (production evidence)

After waves 1 and 2 of the official site merged, a human verified the deployment by curl-probing the live pages (/, /zh/, /architecture.html, /doctrine.html). Self-acceptance means the system probes its own deployed artifact and converts a broken deploy into a defect issue — CI greenness does not prove the published site renders.

Scope (tight)

  1. New flat package packages/site-probe/ (or a department inside site-board if conformance favors it — implementer's choice, justify in PR):
    • cron raiser (e.g. every 30m) → probe_scan department.
    • Reads the canonical page list from one place: site/probe-manifest (a tracked plain-text file, one URL path per line, seeded with /, /zh/, /architecture.html, /doctrine.html, /zh/architecture.html, /zh/doctrine.html).
    • For each path: curl -sL -o /dev/null -w '%{http_code}' against https://chronoaiproject.github.io/fkst-website — non-200 = failure (curl via exec_sync, mocked in tests; unmocked external commands fail closed).
  2. On any failure: raise github-proxy.github_issue_create_request with a defect issue (title includes the failing paths; body includes status codes and probe time), deduped via an idempotent marker/cache key per (path set, day) so a persistent outage files ONE issue, not one per tick.
  3. On success: structured greppable log line only (PROBE ok paths=N).
  4. Dry-run posture: issue creation only when FKST_GITHUB_WRITE=1 (existing proxy behavior); probe itself is read-only.

Must keep (DELETE NOTHING ELSE)

  • No changes to site/ pages themselves or pages.yml.
  • Payload constitution: the issue body carries status codes and paths (small control data), no page content.
  • Fail-closed: curl/network errors count as probe failure of that path, but a fully-failed probe sweep (all paths erroring, e.g. local network down) files NOTHING and logs a skip — do not convert babysitter-side network flakiness into site defect issues (lesson: a transient empty git ls-remote once caused a false kill).

Acceptance

  • Tests: all-200 → no issue request + ok log; one 404 → exactly one issue request with path and code, idempotent across repeated ticks; all-paths-network-error → no issue request + skip log.
  • scripts/run.sh test + scripts/run.sh check green.

⟦AI:FKST⟧

Metadata

Metadata

Assignees

No one assigned

    Labels

    fkst-dev:enabledintake-approved-for-autonomous-developmentfkst-dev:mergedimplementation-merged

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions