Ticket-047’s adapter works and is fully tested, but it cannot reach protected
main. Three independent obstacles were confirmed by running the CI-equivalent
governance check locally rather than the working-tree check that make
governance performs:
GOV-INTENT-003),DONE before publication, so it no longer
authorizes its own implementation paths (GOV-TICKET-001),.env.example follow-up touches a path no workstream owns, and the
manifest that would have to grant that ownership is hash-locked to the pinned
upstream standard.The third obstacle has a cause inside the adapter: two process.env fallbacks
that verify:env propagates into an .env.example requirement. Removing them
is both the governance fix and the better boundary — a bounded acquisition step
should take its input explicitly, not inherit ambient process state.
.env.example
never appears in the diff.intent.json alone, before any implementation.--event-path and --repository required and no
process.env read; carry the tests, fixture and documentation across.make verify,
make docker-smoke and npm run verify:env.scripts/github-event-log.mjs: both process.env reads removed. The event
path resolves only from --event-path, and the repository only from
--repository or the payload’s own repository.full_name. The missing
repository error now names the flag.test/workflow-validation.test.ts: added a case that sets
GITHUB_EVENT_PATH and GITHUB_REPOSITORY in the child environment and
asserts the adapter still fails closed on both, writes no output file, and
never echoes the ambient repository value.docs/EVENT_LOG_DSL.md: documents the required flags, states that the
adapter reads no environment variable, and records why an environment-reading
acquisition boundary cannot be published in this repository at all.test/fixtures/event-log/v1/github-event-payloads.json: carried across
unchanged from ticket-047.TODO.md, project/TICKETS.md, project/ticket-047/**: record carried and
registered.GOV-APPROVAL on PR #66: product checks and structural governance pass;
merge waits for a trusted Validator App (or trusted human) review on the exact
current head. See ticket-049 plan (branch ticket/049-validator-autonomy-plan).
An earlier note here blamed a missing scan-direct job in validator-agent
main. That is not the cause, and both halves of it were re-checked:
DIRECT_PR_SCAN_CONFIG and DIRECT_PR_SCAN_ENABLED=true are set on
subactor/validator-agent, and the config carries a semcod/todo2code
entry with the required checks and main as an allowed base.scan-direct is present in .github/workflows/validator.yml on
validator-agent origin/main.The actual cause is a GitHub-wide Actions major_outage, confirmed
against status.github.com while this was written. In the failing scheduled
run, the gate job test recorded zero steps and was cancelled after 23
minutes, so validate and scan-direct were skipped — the job never
obtained a runner. The backlog spans all six workflows in that repository
(ci, contribution-policy, intent-conformance, koru-code-review,
Sync Tickets project, validator-agent), with runs queued for over 90
minutes.
An earlier revision of this note attributed the stall to an Actions capacity
or spending limit in the subactor organization, reasoning that
semcod/todo2code kept draining. That inference was wrong: during a
major_outage repositories stall unevenly, so one that keeps draining is not
a control group.
The autonomy configuration is therefore correct and the executor is stalled. No change in this repository can clear it. Analysis lives in ticket-049 §2.2.1.