Skip to content

Promote the seam rung to a seventh required context #334

Open

Description

@dev-pmallapp

Follow-up to #323. Related to #293, but deliberately NOT a sub-issue of it: this cannot be done while S2.6 is in flight — it is unblocked only after the job has merged to main and reported there — so #293's exit must not depend on it.

#323 added the seam job to .github/workflows/ci.yml (build target 7 of docs/design/stories/293.md). It runs bun run skill-harness — deterministic, offline, secret-free — carries no if:, no matrix and no paths: filter, and can meaningfully fail: bun run skill-harness --inject exits 1 over the five-scenario injection roster.

It is deliberately not yet a required context. Required contexts stand at six, and both scripts/verify-required-checks.sh and scripts/verify-workflow-hygiene.sh PASS at six.

Why the promotion was not done in #323

Two independently sufficient reasons, both measured:

  1. A required context that has never reported sits pending forever and blocks every PR permanently — the decision recorded on S1.6.4 — Build the claim-lint guard #204, restated in ci.yml's own comment. claim-lint went through exactly this sequence; its promotion commit is 15e5a36.
  2. story/47-s2-3-execution-skills and its six open task issues carry no seam job on their heads. Promoting now would permanently block PR S2.3 — Execution skills #313 and every S2.3 task PR (S2.3.1 — task-create #48, S2.3.2 — task-do #49, S2.3.3 — task-verify #50, S2.3.5 — withTasksChecklist merger, and the checklist on both capability paths #315, S2.3.6 — The hard-failure block emitter #316, S2.3.7 — Reconcile the two references, CONTRIBUTING.md and M2.md #317), because those heads can never report a context whose job they do not contain.

Unblocked when

  • The seam job has merged to main and reported on at least one real PR there.
  • story/47 has merged main in, so its head carries the job.

Done when

The four in-tree sites land in ONE commit — the tests in test/ci-workflow.test.ts assert they agree as ordered arrays, so a partial edit goes red:

  • scripts/verify-required-checks.sh — the REQUIRED_CONTEXTS array
  • scripts/verify-required-checks.sh — the inline required_status_checks.contexts[]= list in the branch-protection help text
  • scripts/verify-workflow-hygiene.sh — the REQUIRED_JOBS array
  • scripts/verify-workflow-hygiene.sh — the required = [...] Python list inside the <<'PYEOF' heredoc. This is the one that gets missed: it does not appear in a plain grep for REQUIRED_JOBS

Then, as a separate human action, the two out-of-tree settings:

  • main's branch protection required status checks
  • ruleset 21656025 (story-branch-checks, covering refs/heads/story/**)

And finally:

  • Both verifiers PASS reporting seven contexts
  • seam moves out of NOT_REQUIRED in test/ci-workflow.test.ts and into the required list, with the partition still summing to the whole
  • ci.yml's seam comment is updated to record the promotion — do not leave it asserting it is unpromoted, which is the exact staleness S2.6.6 — The seam rung and its CI job #323 had to correct in the claim-lint comment above it

Note for #324

NEVER-293.10's case 13 asserts the required-context count before and after adding the live rung. docs/design/stories/293.md's row for it still says "six contexts before and after". After this promotion the number is seven; the case's own text is count-agnostic, but the Design's prose row will need the correction.

Activity

  1. added
    type:taskOne unit of work within a Story
    domain:devSoftware development pack
    iaiCreated or managed by iAI
    on Sep 12, 2026
  2. dev-pmallapp commented on Sep 23, 2026

    @dev-pmallapp
    OwnerAuthor

    The first precondition is now met. The seam job has reported success on main at dab09ccd5e5f5f73592ca6d97110a51a775a4327 (run 35871136833), carried there by PR #312 merging S2.6.

    That closes the half this issue could not act on: a brand-new required context sits pending forever until it has reported on a real PR merged to main. It has now reported.

    THE SECOND PRECONDITION IS NOT MET, AND PROMOTING NOW WOULD BLOCK WORK IN FLIGHT.

    story/47-s2-3-execution-skills has not merged main in, so it carries no seam job — its PRs report 7 checks, not 8. Promoting seam to a seventh required context before that merge would leave PR #313 and every remaining S2.3 task PR (#48, #49, #50, #317) permanently blocked on a context that can never report.

    Order that works:

    1. story/47 merges main in, acquiring the seam job
    2. Confirm an S2.3 task PR reports 8 checks, green
    3. Then promote — and note the promotion is five in-tree sites plus one out-of-tree change: .github/workflows/ci.yml, and scripts/verify-required-checks.sh and scripts/verify-workflow-hygiene.sh which each hardcode the job list twice, plus main's branch protection and ruleset 21656025, which no commit can touch
    4. test/ci-workflow.test.ts asserts the four hardcoded lists agree as ordered arrays and that ci.yml's job set partitions into required ∪ NOT_REQUIRED — moving seam between those halves is where the change is declared

    Both verifiers currently read six, and test/ci-workflow.test.ts is green at that count.

  3. added a commit that references this issue on Sep 23, 2026
  4. dev-pmallapp commented on Sep 23, 2026

    @dev-pmallapp
    OwnerAuthor

    Both preconditions are now met. The remaining blocker is out-of-tree and needs a human.

    1. seam has reported on main — success at dab09cc (run 35871136833), carried there by PR S2.6 — Skill execution harness #312.
    2. story/47 has merged main in — at cd74902. PR S2.3 — Execution skills #313 now reports 8 checks, all green, seam included. Every remaining S2.3 task PR (S2.3.1 — task-create #48, S2.3.2 — task-do #49, S2.3.3 — task-verify #50, S2.3.7 — Reconcile the two references, CONTRIBUTING.md and M2.md #317) will inherit the job, so the permanent-block risk this issue was written to avoid is gone.

    THE ORDER MATTERS, AND THE OBVIOUS ORDER IS WRONG

    Do not land the in-tree change first. scripts/verify-required-checks.sh reads main's actual required contexts from the API and compares them against the hardcoded list. Bump the list to seven while branch protection still says six and the verifier fails — on the very PR making the change, which is then blocked by its own edit.

    Working order:

    Step Who
    1 Add seam to main's branch protection and ruleset 21656025 Human — no commit can do this
    2 Confirm verify-required-checks.sh now reads seven against the unchanged in-tree list, i.e. it FAILS in the opposite direction either
    3 Land the in-tree change: five sites — .github/workflows/ci.yml, plus scripts/verify-required-checks.sh and scripts/verify-workflow-hygiene.sh, each of which hardcodes the job list twice agent
    4 Move seam from NOT_REQUIRED to the required half in test/ci-workflow.test.ts — it asserts the four lists agree as ordered arrays and that ci.yml's jobs partition into required ∪ NOT_REQUIRED agent

    Step 2 is the one worth not skipping: it proves the verifier is actually reading the API rather than agreeing with itself, which is the failure mode that would make this whole promotion vacuous.

    A required job may carry no if: — a skipped job reports success. seam currently has none; keep it that way.

    Both verifiers read six today and test/ci-workflow.test.ts is green at that count, so nothing is broken while this waits.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    domain:devSoftware development packiaiCreated or managed by iAItype:taskOne unit of work within a Story

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions