Skip to content

chore(maintenance): reproducible workflow/script consumer inventory - #422

Merged
masarray merged 1 commit into
mainfrom
maintenance/script-consumer-inventory-20260927
Sep 26, 2026
Merged

masarray merged 1 commit into
mainfrom
maintenance/script-consumer-inventory-20260927

Conversation

@masarray

Copy link
Copy Markdown
Owner

Verified audit finding M05 → executable inventory

The 27 Sep baseline audit records 28 workflows / 55 scripts and explicitly does not claim script orphans without a full consumer inventory. This PR implements the first reviewable inventory step, rather than rewriting working Discovery or revisiting the already accepted stable release.

  • New read-only Python 3.11 Git-tracked consumer map: deterministic JSON with source SHA, workflow trigger names, literal script references from workflows versus other tracked text, and an explicit manual review list (not a deletion list).
  • Two offline synthetic Git-repo tests: workflow and documented manual references, misleading partial names, Windows path syntax, inline YAML triggers, and deterministic repeat output.
  • Canonical Windows Build ARSAS runs these tests and uploads ARSAS-maintenance-dependency-inventory from the exact triggering revision. It does not fail merely because a script has no literal in-tree caller.
  • One runbook explains the script retirement gate, including manual/dynamic/external consumers, workflow_dispatch, side effects, bot writes, immutable release evidence and rollback.

Boundary and acceptance

Base cd6efb89a592821e3461f189bed900e1b1873d0c, head 20dfacb7de28e6946b08f733ca39616be81d6ecd; exact four-file scope: two new audit scripts, .github/workflows/build.yml, and a dated follow-up runbook. No WPF/application/protocol/engine/RCB/GI/SCL/reporting code, release publisher, version, lock or physical evidence changed. Full exact-head Windows CI, test step, artifact generation and post-merge main verification required. Tracks #380. No DCO sign-off requested under current contribution policy.

@masarray
masarray marked this pull request as ready for review September 26, 2026 23:26
@masarray
masarray merged commit 71e8d7e into main Sep 26, 2026
8 checks passed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 20dfacb7de

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +32 to +35
if re.match(r"^on:\s*(?:#.*)?$", line):
in_on = True
continue
inline = re.match(r"^on:\s*\[([^]]+)\]", line)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Parse all valid workflow trigger forms

When a workflow uses valid scalar, quoted, flow-map, or non-two-space-indented YAML such as on: push, "on":, or a four-space-indented trigger, these regexes return an empty event list. The resulting inventory therefore silently omits real triggers while claiming to list top-level trigger types; handle the valid YAML forms or reject unsupported syntax rather than recording incomplete data.

AGENTS.md reference: AGENTS.md:L58-L66

Useful? React with 👍 / 👎.

Comment on lines +63 to +65
if not full.is_file():
raise FileNotFoundError("Tracked text file missing: " + path)
content = full.read_text(encoding="utf-8-sig", errors="replace")

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Bind scanned content to the reported source commit

When the documented command is run from a checkout containing staged or unstaged tracked edits, this reads the worktree files while sourceCommit is still populated from HEAD. The JSON is then attributed to a commit whose blobs do not match the report, making cross-candidate comparisons and provenance unreliable; either read files from the advertised Git tree or reject a dirty index/worktree.

AGENTS.md reference: AGENTS.md:L27-L33

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant