Skip to content

v1.91.274.0 feat(design-html,design-review): run gstack-design-lint; copy tier at its lines; waivers replace craft_exceptions (hallmark phase 2) - #3507

Merged
capy-ai[bot] merged 9 commits into
mainfrom
garrytan/gsta92-hallmark-p2
Oct 27, 2026
Merged

capy-ai[bot] merged 9 commits into
mainfrom
garrytan/gsta92-hallmark-p2

Conversation

@garrytan

@garrytan garrytan commented Oct 27, 2026 •

Copy link
Copy Markdown
Owner
{
  "schema_version": 1,
  "pr": 3507,
  "head": "d63573a75751bbc4bc3658edff5ededaaf87093b",
  "version": "1.91.270.0",
  "base": "main",
  "gate": {
    "free-tier-remote": {
      "pass": 18929,
      "fail": 0
    },
    "paid-focused": {
      "pass": 4,
      "fail": 0,
      "skip": 1
    }
  },
  "ci": {
    "pull_request": {
      "pass": 45,
      "fail": 0,
      "skip": 11
    }
  },
  "session_kind": "unattended",
  "pregate": "requires-remote cleared @c1b9792ebf9f (1 checks, current for d63573a75751)",
  "requires_remote": [
    "free-tests.yml/macos-named-regressions: https://github.com/garrytan/gstack/actions/runs/40473121745",
    "windows-free-tests.yml/windows-free-shard: https://github.com/garrytan/gstack/actions/runs/40473121049",
    "pregate.json/remote_gate: remote-gate tree=c1b9792ebf9f tests=18929"
  ],
  "issues": {
    "fixes": [],
    "refs": [
      3422
    ],
    "flakes": []
  },
  "review_loop": {
    "passes": 2,
    "blocking_found": 1,
    "deferred": 0,
    "noted": 4,
    "fixed": 8,
    "scope": "frozen"
  },
  "carry": {
    "from": "ef6a16324d35005273ec51375940447f91669766",
    "reason": "base merge + test-only change + release metadata",
    "product_patch_id": "324941b2b7115f12c8e8dff097a75092c52a98ef",
    "changed_paths": [
      "product:AGENTS.md",
      "metadata:CHANGELOG.md",
      "product:ETHOS.md",
      "product:NOTICE.md",
      "product:README.md",
      "metadata:VERSION",
      "metadata:agents-digest/gstack-AGENTS.md",
      "product:autoplan/DRIVER.md",
      "product:autoplan/DRIVER.md.tmpl",
      "product:autoplan/sections/eng-phase.md",
      "product:autoplan/sections/eng-phase.md.tmpl",
      "product:bin/gstack-approvals",
      "product:bin/gstack-autoplan",
      "product:bin/gstack-coauthor-trailers",
      "product:bin/gstack-config",
      "product:bin/gstack-decision-trail",
      "product:bin/gstack-doctor-components.sh",
      "product:bin/gstack-pr-wait",
      "product:bin/gstack-review-scope",
      "product:bin/gstack-ship-receipt",
      "product:bin/gstack-worktree-audit",
      "product:capy/skill/gstack/captain.md",
      "product:docs/CONTRIBUTOR_REFERENCE.md",
      "product:docs/TESTING_INTERNALS.md",
      "product:docs/capy-install.md",
      "product:docs/proactive.md",
      "product:docs/recommended-harness.md",
      "product:docs/review-policy.md",
      "product:docs/ship-policy.md",
      "product:docs/standalone-binaries.md",
      "product:docs/troubleshooting.md",
      "product:docs/unattended.md",
      "product:eval-plan/SKILL.md",
      "product:eval-plan/SKILL.md.tmpl",
      "product:land-and-deploy/SKILL.md",
      "product:land-and-deploy/SKILL.md.tmpl",
      "product:landing-report/SKILL.md",
      "product:landing-report/SKILL.md.tmpl",
      "product:lib/approval-record.ts",
      "product:lib/autoplan-gate-cost.ts",
      "product:lib/captain-brief.ts",
      "product:lib/owner-brief.ts",
      "product:lib/pr-wait-github.ts",
      "product:lib/pr-wait.ts",
      "product:lib/result-codes-release.ts",
      "product:lib/review-scope.ts",
      "product:lib/ship-policy.ts",
      "product:lib/ship-receipt-docs.ts",
      "product:lib/ship-receipt-prose.ts",
      "product:lib/ship-receipt.ts"
    ],
    "merge_commits": 1,
    "range_diff": "1:  018eedb13 = 1:  018eedb13 feat(design-lint): copy tier reports each tell at its line; empty-mount-node; content-realism ids at ask\n2:  17635b6a7 = 2:  17635b6a7 feat(design-html,design-review): run gstack-design-lint; waivers replace craft_exceptions; remove gstack-design-craft\n3:  8c021d124 = 3:  8c021d124 test(design-lint): the content-realism tells keep one checker, credited in NOTICE.md\n4:  b5c44b972 = 4:  b5c44b972 fix: pre-landing review fixes\n5:  b9be5b4d7 = 5:  b9be5b4d7 docs(changelog): the saved-page craft audit files copy-tier lines only\n6:  ef6a16324 = 6:  ef6a16324 docs(design-lint): forward references say a later phase, not Phase 2\n-:  --------- > 7:  d63573a75 test(carve-guards): re-pin design-review and design-html parity to the merged tree's measured sizes",
    "covers": [
      "pre-landing review",
      "adversarial review",
      "gate integrity",
      "documentation audit"
    ],
    "reruns": [
      "CI at head (gstack-ship-queue ready requires it); test and helper code changed since the reviewed head runs there unreviewed"
    ]
  }
}

What changed

/design-html Step 4: craft check vs design lint

Before: /design-html ran gstack-design-craft, which counted tells without positions and kept accepted exceptions in finalized.json via --accepted. After: it runs gstack-design-lint --render and reads the exit code; a waiver comment in the page answers a tell the user confirmed.

The same slopped page: old checker vs the lint's copy tier

The same fixture (test/fixtures/design-lint/slopped.html). Before: marketing-buzzword 5, no line. After: each tell at its line with what matched; the five content-realism ids read ask.

  • /design-html Step 4 calls gstack-design-lint <page> --render after the Slop Gate: exit 2 fixes every blocks line, 1 fixes or waives each ask, 0 lists polish as notes. A missing LINT_SUMMARY, a render line or render=skipped is said plainly and the static lines stand.
  • Waivers live in the page (<!-- gstack-lint-disable <rule-id>: <reason about this page, 24+ chars> -->), written only for what the user supplied or confirmed. --accepted and finalized.json's craft_exceptions are gone; this supersedes v1.91.230.0 feat(design-shotgun,design-html): archetype handoff and persisted craft exceptions (GSTA-92 phase 2) #3422's persisted craft exceptions.
  • Tiers: placeholder-name, placeholder-brand, lorem, round-number, needs-proof move from blocks to ask so a waiver can answer them. /design-review still files a waived needs-proof or lorem.
  • /design-review's craft audit runs the lint on each saved page; empty-mount-node sends it to the saved DOM.
  • Copy tier folded into the lint (lib/design-lint/rules/copy.ts): its own patterns, each tell at its line. bin/gstack-design-craft, lib/design-craft.ts and test/design-craft.test.ts are removed; their cases live in test/design-lint.test.ts, the archetype handoff tests in test/design-craft-resolvers.test.ts.
  • New rule empty-mount-node (ask, page only): a text-less body (a <noscript> notice aside) that loads a script.

From the craft-exception follow-up (GSTA-92)

Carried into the fold: real shell detection with the "empty mount node" wording; the four checker limits #3433 listed (script payloads counted as code, single-quoted handlers missed, presence rules matching script text, commented-out markup scanned) are fixed by reading parsed tags, script bodies and visible text; the provenance item survives as "waive only what the user supplied or confirmed".
Dropped by design: content-matched exceptions and exception provenance fields in finalized.json (there is no exception record any more; the waiver sits beside the content it answers), and the transition-all legacy id mapping (no record to read).

Why

Phase 1 (#3459) shipped the lint with the craft ids, but the skills still called the old checker, so a /design-html run got counts without lines and a second exception format. Garry chose option (a) for the one contract gap: content-realism ids at ask, answered in the page.

Approvals

Date Asked Exact words Outcome Covers Still pending
2026-10-26 Hallmark four-part plan (via GStack Minder) “Do it” (Garry (via GStack Minder)) approved hallmark phase 2: lint in /design-html and /design-review, copy-tier fold none
2026-10-26 Copy-tier contract gap (via GStack Minder) “Do it” (Garry (via GStack Minder)) approved option (a): five copy ids to ask; in-page waiver replaces craft_exceptions; drop --accepted; delete the checker, its lib and test none
2026-10-27 Rule-19 grant to merge main f27a760 into #3507 n/a (captain decision) granted, spent by ea65d8e one merge of origin/main f27a760 (v1.91.270.0); CHANGELOG by mergeChangelogs none

Source: gstack-approvals record for garrytan/gsta92-hallmark-p2 (display only; not an approval citation).

Summary

  • Copy tier inside the lint: lib/design-lint/rules/copy.ts reports each content and ship-floor tell at its line; empty-mount-node is new; the five content-realism ids read ask.
  • Skills call the lint: /design-html Step 4 and /design-review's craft audit run gstack-design-lint; in-page waivers replace craft_exceptions and --accepted; bin/gstack-design-craft, lib/design-craft.ts and test/design-craft.test.ts are removed.
  • Review fixes: a saved live page files only copy-tier (craft) lines, since its linked CSS is gone; missing-aria-current counts in one pass; the inline-handler line points at the value; a page with no <body> is read from after </head>.
  • Docs: CHANGELOG [Unreleased] entry; docs/design-lint.md forward references say "a later phase".
  • Main merged once (ea65d8e, rule-19 grant): origin/main f27a760 (v1.91.270.0); CHANGELOG by mergeChangelogs (the PR's [Unreleased] entry above main's sections, nothing hand-resolved), NOTICE.md auto-merged. d63573a re-pins the design-review parity guard to the merged tree's measurement (skeleton 137,735 bytes, ratio 144,802 / 105,842 = 1.3681); the design-html caps are unchanged, with updated comments.

Test Coverage

New paths have tests: test/design-lint.test.ts carries the moved checker cases plus each copy tell at its line, the five ids at ask and a waived copy tell; test/design-lint-eighth-cycle.test.ts adds the aria-current perf case; test/design-craft-resolvers.test.ts names the removed files and the NOTICE.md credit. Regression proof for the review fixes: the new tests failed in a scratch worktree before the fix and pass after it.
Tests ran: remote free tier 18929 (632 files, 0 failed) at d63573a, tree c1b9792ebf9f
Tests ran: Free Tests (pull_request) run 40473121745 success at d63573a
Tests ran: Windows Free Tests (pull_request) run 40473121049 success at d63573a

Pre-Landing Review

Pass 1 (at 8c021d1): 16 findings, 1 blocking: a saved live page has lost its linked CSS, so the craft audit would file false missing-focus-visible blocks. It and 7 others were fixed in b5c44b9. Pass 2 (8c021d1..b5c44b9): testing and maintainability clean; one informational adversarial note (below).
REVIEW_LOOP: passes=2 blocking_found=1 deferred=0 noted=4 fixed=8 scope=frozen
Re-READY at d63573a: /ship Step 1's carry check carried the receipt from ef6a163 (product patch-id unchanged; base merge + test-only change + release metadata), so no new review pass ran. A delta read of git diff ef6a16324 d63573a75 restricted to this PR's files (CHANGELOG.md, NOTICE.md, test/helpers/carve-guards.ts, test/helpers/touchfiles-data.ts) found main's own entries plus the re-pin and nothing at the blocking floor.
Outside review: GPT pass (openai/gpt-6.1-sol) on 8c021d1 found one P3 (inline-handler line), fixed. A resumed pass ran on Claude, not a second model family; Codex is not installed, so cross-family coverage is the GPT pass only.

Review notes

Below the blocking floor (advisory, informational, test-gap or wording items); recorded here and not fixed in this PR.

  • INFORMATIONAL lib/design-lint/waivers.ts:140 A page waiver is keyed by rule id, so one waiver for a supplied Nexus or 50% also waives every later invented brand or round number on the page; the count-bounded craft_exceptions it replaced flagged new hits.
  • INFORMATIONAL lib/design-lint/rules/ids.ts:158 lorem and needs-proof are waivable in /design-html after the move to ask.
  • INFORMATIONAL design-html/sections/craft.md.tmpl:66 A render blocks line for a page that did not render is told to be treated as not measured, beside 'fix every blocks line'.
  • INFORMATIONAL lib/design-lint/rules/copy.ts:60 An unclosed <script>'s body is read as visible text.
  • INFORMATIONAL test/design-lint.test.ts:275 100vh followed by a 100dvh fallback now blocks under vh-height in /design-html (the deleted checker accepted it); no test pins either semantics.
  • INFORMATIONAL bin/gstack-design-lint:53 An empty .html exits 1 with only overflow-x-unclipped instead of 'nothing checked'; /design-review would file a finding on a zero-byte saved DOM.
  • INFORMATIONAL test/design-lint-eighth-cycle.test.ts:4 Header still names the craft check's lazy scans.
  • INFORMATIONAL lib/aside-render.ts:474 On Linux without gstack browse built, --render can pick /usr/bin/browse (xdg-open).
  • INFORMATIONAL lib/design-lint/rules/copy.ts:147 With no <body> and no </head>, the head closes at </html>, so a page with visible text is flagged empty-mount-node (ask).

Exploratory QA

4 functional probes of bin/gstack-design-lint at 8c021d1, all pass: copy tells at their lines (ask), a waiver comment answers its tell, a script shell reports empty-mount-node. --render (browser measurement) was not exercised; skill prose behaviour is covered by the paid cases.

Design Review

No frontend files changed — design review skipped.

Eval Results

  • design-html-slop-gate (behavior, 3 trials) at b5c44b9: PASS 3/3, $0.33 + $0.35 + $0.35. An earlier panel at 17635b6 (PASS 3/3, $1.21) was superseded by the lint and prose changes.
  • design-review-detector-shim PASS 1/1 $0.13; design-review-detector-shim-dom PASS 1/1 $0.21; design-review-plugin-handoff PASS 1/1 $0.14.
  • design-review-fix: not run (infra). Its describe block skips without Aside on this Linux machine; missing coverage, not a pass.
    Commits after b5c44b9 touch only CHANGELOG.md and docs/design-lint.md, the main merge and the carve-guards re-pin. These are reused evidence at d63573a: bun run eval:select --base ef6a16324 --profile full selects none of the five design cases (the merge changed no design-html or design-review template, lint, catalog or design resolver; its only resolver change is scripts/resolvers/review-army.ts, outside their touchfiles). No paid case ran for this re-READY ($0 new spend).
  • PR screen (gstack-ship-queue ready --pr 3507 --screen, policy narrow, on GitHub's refs/pull/3507/merge cdeb0a3): run 40475952044 GREEN. Rule 112/112, behavior 1/1, judge 24/24, nothing quarantined, skipped or INFRA; $32.89 known, plus 32 of 139 trials with unknown cost. Screens are pre-approved spend (CREW.md rule 5). NOTICE.md, an unknown paid-case dependency, restored the full PR selection.

Greptile Review

No Greptile comments.

Issues

Refs #3422

TODOS

No TODO items completed in this PR.

Documentation

Status: current (carried). The Step 14.5 audit doc3507b ran at b9be5b4 and corrected docs/design-lint.md (ef6a163). Since then this PR's doc files are unchanged; the main merge brought main's own NOTICE.md entries (decision-trail, worktree-audit, pr-wait ports) and its own docs, which main's release audited. gstack-ship-receipt docs-caps --base main: none declared.

The audit record as written at b9be5b4:

Scope. Audit doc3507b (edit mode) on garrytan/gsta92-hallmark-p2 at b9be5b4d7 against base c2e01e4ba: 22 committed files across 5 commits, with nothing staged, unstaged or untracked, as the candidate records. I swept the repository for references to the deleted surfaces (gstack-design-craft, lib/design-craft.ts, craft_exceptions, --accepted, CRAFT_*) and to the new ones (gstack-design-lint, empty-mount-node, waivers). I read docs/design-lint.md and NOTICE.md in full. I read the changed template hunks, the related sections of docs/skills.md and docs/PROJECT_STRUCTURE.md, and the new CHANGELOG entry. I checked the doc's copy-tier claims against lib/design-lint/rules/copy.ts. The banned-terms check found no list.

Documentation health:
docs/design-lint.md Updated (three "Phase 2" forward references now say "a later phase". This PR deleted the intro sentence that defined Phase 2, and the CHANGELOG labels this release "hallmark phase 2", yet the release ships none of the three items: DESIGN.md token roles, catalog detect: lint reconciliation and --before/--kept. Grep confirmed none exist in lib/ or bin/. test/design-lint.test.ts: 58 tests pass, none fail after the edit.)
NOTICE.md Current (the Elaya entry names lib/design-lint/rules/copy.ts; no stale craft paths remain)
design-html/SKILL.md.tmpl Current (the Step 4 line names gstack-design-lint --render; craft_exceptions is gone from finalized.json)
design-html/sections/craft.md.tmpl Current (lint output, exit codes and the waiver form match docs/design-lint.md)
design-review/sections/craft-audit.md.tmpl Current (the blocks/ask/waived handling, empty-mount-node and the saved-page CSS limit match the doc and the code)
docs/skills.md Current (no stale craft-check text)
docs/PROJECT_STRUCTURE.md Current (no gstack-design-craft entry; gstack-design-lint is listed)
README.md Current (no design-lint or craft-check surface)
ARCHITECTURE.md Current (its resolver rows name scripts/resolvers/design-craft.ts, which still exists)
CHANGELOG.md Not edited (ship-owned; Step 5 skipped)
TODOS.md Not edited (ship-owned; Step 7 skipped)

Documentation coverage:
[entity] [reference] [how-to] [tutorial] [explanation]
/design-html Step 4 design lint ✅ docs/design-lint.md ✅ design-html craft section ❌ ✅ CHANGELOG
empty-mount-node ✅ docs/design-lint.md ✅ design-review craft audit ❌ ✅ docs/design-lint.md
in-page waivers (replace craft_exceptions/--accepted) ✅ docs/design-lint.md ✅ design-html craft section ❌ ✅ CHANGELOG
copy tier at its line ✅ docs/design-lint.md ❌ ❌ ✅ docs/design-lint.md

Debt (reported, not filled):

  • The docs/skills.md /design-html section describes the impeccable Slop gate but not the always-on design lint pass. That is a common gap; /document-generate or the author could add it.
  • docs/design-lint.md is reachable only through CLAUDE.md → docs/PROJECT_STRUCTURE.md. README and docs/skills.md do not link it. This predates the PR.

Diagram drift: none. No ASCII or Mermaid diagram names the deleted checker.

Test plan

  • gstack-pregate --stage tests --remote --spend-cap 2 --timeout 2700 --allow-repo-commands at d63573a (tree c1b9792ebf9f): 632 files, 18929 tests, 0 failed, $0.06; requires-remote lanes cleared with the pull_request runs below; gstack-pregate verify ok
  • pull_request CI at d63573a (conflict-free with main): 45 success, 0 failed, 11 skipped, including Free Tests run 40473121745, Windows Free Tests run 40473121049, typecheck and check-freshness
  • Rule-25 trial merge with v1.91.273.0 feat(ship): PR bodies open with the problem and a Blast radius line, and gstack-prose-lint catches autopilot phrasing before /ship publishes a CHANGELOG entry or PR body #3501's pin 2876f37 (scratch worktree): NOTICE.md and test/helpers/carve-guards.ts auto-merge (different entries); CHANGELOG.md conflicts because both pins carry [Unreleased], which the train's per-slot stamp resolves in either order with no lines lost; parity, carve and design-craft resolver suites: 63 tests pass on the trial tree
  • Earlier at ef6a163: typecheck clean, gen:skill-docs --host all --dry-run all FRESH, design-lint suites 88 tests pass, guard suites 211 tests pass

Open in Capy

garrytan and others added 2 commits October 27, 2026 03:19
…nt-node; content-realism ids at ask

The copy tier holds its own patterns (from lib/design-craft.ts) and reads
visible text, script bodies, inline handlers and parsed tags, so payloads,
commented markup and script text no longer count. A text-less body that
loads a script reports empty-mount-node. placeholder-name, placeholder-brand,
lorem, round-number and needs-proof move to ask so a page-specific waiver
answers them (Garry 2026-10-26, option a).

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
…ace craft_exceptions; remove gstack-design-craft

/design-html Step 4 and /design-review's craft audit call the lint and read
its exit code. A waiver comment in the page replaces --accepted and
finalized.json craft_exceptions (supersedes #3422's persisted exceptions).
bin/gstack-design-craft, lib/design-craft.ts and its test are removed; the
handoff tests move to test/design-craft-resolvers.test.ts. The slop-gate paid
case and its touchfiles follow the lint.

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
@trunk-io

trunk-io Bot commented Oct 27, 2026 •

Copy link
Copy Markdown

😎 This pull request was merged.

garrytan and others added 4 commits October 27, 2026 03:29
…ed in NOTICE.md

Names the removed lib/design-craft.ts and test/design-craft.test.ts so pregate
selects a lane for the deletions (PREGATE_NO_LANE at 17635b6).

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
- /design-review files only craft-gate lint lines on a saved page, whose
  linked CSS the lint cannot load (false missing-focus-visible blocks)
- missing-aria-current counts route links in one pass (unclosed navs were
  superlinear); inline-handler tells report at the value's line; a shell
  with no <body> tag is an empty mount node
- /design-html says the copy tier reads HTML only, and that a supplied
  figure may also need an invented-proof waiver
- tests pin the five content-realism ids at ask and a waived copy tell

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
garrytan and others added 2 commits October 27, 2026 08:22
…ANGELOG via mergeChangelogs)

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
…e merged tree's measured sizes

design-review skeleton 137735, union 144802, ratio 1.3681 (all lower);
design-html skeleton 55834, union 78626 (caps unchanged, comments updated).

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
@github-actions

Copy link
Copy Markdown
Contributor

E2E Evals: ✅ PASS

[test:paid] VERDICT GREEN — lane gate/pr, attempt 1
  rule 112/112 · behavior 1/1 · judge 24/24 · quarantined 0 (0 failing the lane)
  SKIPPED 0 · INFRA 0 · INCOMPLETE 0 · unattributed 0 · ACTION REQUIRED 0
  wall 6m20s · cost $32.89 known + 32 of 139 trial(s) cost unknown

125 executed, 0 reused rule/judge records | 0 manual accepted (unscored; no score-cache credit) | $32.24 rule/judge cost | reconcile exit: 0

Profile: pr / mode full-fallback; selected behaviors: 113, judges: 24. Deferred to scheduled/release coverage: 140 behaviors and 4 changed prompt files. Deferred checks did not run and receive no PR-pass credit.

Full gate restored by:

  • NOTICE.md (real unknown dependency): register NOTICE.md under the cases that consume it in test/helpers/touchfiles-data.ts, add it to FREE_ONLY_PR_FILES in scripts/test-pr-profile.ts if no paid case reads it, or add its directory to DERIVABLE_PREFIXES so scripts/pr-dependencies.ts derives its consumers
Rule and judge shards
Shard Automated result Manual/unscored Executed Reused Status Cost
e2e-hermetic/skill-e2e-hermetic-canary 2/2 0 2 0 ✅ $0.02
e2e-ship-docsync/skill-e2e-ship-docsync--ship-docsync-completion 1/1 0 1 0 ✅ $1.09
e2e-skillify/skill-e2e-skillify 3/3 0 3 0 ✅ $0.77
e2e-ship-docsync/skill-e2e-ship-docsync--ship-docsync-failure 1/1 0 1 0 ✅ $0.8
e2e/skill-e2e-shared-libs-paths--shared-libs-review-path-eligibility 1/1 0 1 0 ✅ $1.47
e2e-qa-callers/skill-e2e-qa-callers--ship-exploratory-unavailable 1/1 0 1 0 ✅ $0.75
e2e/skill-e2e-plan--plan-review-report 1/1 0 1 0 ✅ $0.8
e2e-retro/skill-e2e-retro 1/1 0 1 0 ✅ $0.36
e2e-qa-functional-fix/skill-e2e-qa-functional-fix 2/2 0 2 0 ✅ $0.98
e2e-review-army/skill-e2e-review-army--review-army-quality-score 1/1 0 1 0 ✅ $0.1
e2e-browse/skill-e2e-bws 6/6 0 6 0 ✅ $0.3
e2e-ship-docsync/skill-e2e-ship-docsync--ship-docsync-missing-asset 1/1 0 1 0 ✅ $0.39
e2e-design/skill-e2e-design--design-review-plugin-handoff 1/1 0 1 0 ✅ $0.14
e2e-design/skill-e2e-design--design-review-detector-shim-dom 1/1 0 1 0 ✅ $0.24
e2e-safety-ship-evidence/skill-e2e-safety-ship-evidence 1/1 0 1 0 ✅ $0.11
e2e-ship-docsync/skill-e2e-ship-docsync--ship-docsync-missing-marker 1/1 0 1 0 ✅ $0.16
e2e/skill-e2e-shared-libs--shared-libs-unsupported-git 1/1 0 1 0 ✅ $0.18
e2e/skill-e2e-ship-skip 1/1 0 1 0 ✅ $0.26
e2e-qa-workflow/skill-e2e-qa-workflow--qa-quick 1/1 0 1 0 ✅ $0.48
e2e-ship-docsync/skill-e2e-ship-docsync--ship-docsync-stale-before 1/1 0 1 0 ✅ $0.4
e2e-review-attribution/skill-e2e-review-attribution 3/3 0 3 0 ✅ $0.28
e2e/skill-e2e-shared-libs-paths--shared-libs-review-prior-coverage 1/1 0 1 0 ✅ $1.02
e2e/skill-e2e-shared-libs--shared-libs-review-lifecycle 1/1 0 1 0 ✅ $0.88
e2e-ship-docsync/skill-e2e-ship-docsync--ship-docsync-late-result 1/1 0 1 0 ✅ $0.33
e2e-deploy/skill-e2e-deploy--benchmark-workflow 1/1 0 1 0 ✅ $0.24
e2e/skill-e2e-investigate-owned-completion 1/1 0 1 0 ✅ $0.07
e2e/skill-e2e-shared-libs-paths--shared-libs-review-index-flags 1/1 0 1 0 ✅ $0.97
e2e-qa-callers/skill-e2e-qa-callers--ship-exploratory-small-cli 1/1 0 1 0 ✅ $0.79
e2e-review-army/skill-e2e-review-army--review-army-perf-n-plus-one 1/1 0 1 0 ✅ $0.2
e2e-qa-functional/skill-e2e-qa-functional 2/2 0 2 0 ✅ $0.78
e2e-cso/skill-e2e-cso 1/1 0 1 0 ✅ $0.41
e2e-qa-callers/skill-e2e-qa-callers--ship-exploratory-late-input 1/1 0 1 0 ✅ $0.89
e2e-qa-callers/skill-e2e-qa-callers--ship-exploratory-plan-checks 1/1 0 1 0 ✅ $0.74
e2e/skill-e2e-test-value 3/3 0 3 0 ✅ $0.68
e2e-qa-callers/skill-e2e-qa-callers--review-exploratory-small-cli 1/1 0 1 0 ✅ $0.71
e2e-qa-workflow/skill-e2e-qa-workflow--qa-only-no-fix 1/1 0 1 0 ✅ $0.51
e2e-deploy/skill-e2e-deploy--setup-deploy-workflow 1/1 0 1 0 ✅ $0.11
e2e/skill-e2e-coverage-audit 2/2 0 2 0 ✅ $0.24
llm-judge/skill-llm-eval 24/24 0 24 0 ✅ $1.44
e2e-ship-docsync/skill-e2e-ship-docsync--ship-docsync-current 1/1 0 1 0 ✅ $0.93
e2e-learnings/skill-e2e-learnings 1/1 0 1 0 ✅ $0.08
e2e-triage/skill-e2e-triage 1/1 0 1 0 ✅ $0.11
e2e-qa-workflow/skill-e2e-qa-workflow--qa-bootstrap 1/1 0 1 0 ✅ $0.08
e2e-third-party-actions/skill-e2e-third-party-actions 5/5 0 5 0 ✅ $0.43
e2e-design/skill-e2e-design--plan-design-review-no-ui-scope 1/1 0 1 0 ✅ $0.09
e2e-deploy/skill-e2e-deploy--canary-workflow 1/1 0 1 0 ✅ $0.11
e2e/skill-e2e-investigate-owned-termination 2/2 0 2 0 ✅ $0.18
e2e/skill-e2e-ship-hook-consent 2/2 0 2 0 ✅ $0.24
e2e-review-army/skill-e2e-review-army--review-army-delivery-audit 1/1 0 1 0 ✅ $0.12
e2e-ship-docsync/skill-e2e-ship-docsync--ship-docsync-timeout-unsettled 1/1 0 1 0 ✅ $0.18
e2e-session-intelligence/skill-e2e-session-intelligence 4/4 0 4 0 ✅ $0.28
e2e-design/skill-e2e-design--design-review-detector-shim 1/1 0 1 0 ✅ $0.13
e2e-plan-tune/skill-e2e-plan-tune 1/1 0 1 0 ✅ $0.12
e2e-safety-pair-agent/skill-e2e-safety-pair-agent 1/1 0 1 0 ✅ $0.1
e2e-ship-docsync/skill-e2e-ship-docsync--ship-docsync-launch-failure 1/1 0 1 0 ✅ $0.16
e2e/skill-e2e-ship-hook-refresh 1/1 0 1 0 ✅ $0.1
e2e/skill-e2e-shared-libs--shared-libs-read-only 1/1 0 1 0 ✅ $0.26
e2e-docsync-spawned/skill-e2e-docsync-spawned 1/1 0 1 0 ✅ $0.41
e2e-deploy/skill-e2e-deploy--land-and-deploy-first-run 1/1 0 1 0 ✅ $0.22
e2e-deploy/skill-e2e-deploy--land-and-deploy-review-gate 1/1 0 1 0 ✅ $0.25
e2e-review-army/skill-e2e-review-army--review-army-migration-safety 1/1 0 1 0 ✅ $0.33
e2e-ship-docsync/skill-e2e-ship-docsync--ship-docsync-stale-after 1/1 0 1 0 ✅ $0.44
e2e-ship-docsync/skill-e2e-ship-docsync--ship-docsync-store 1/1 0 1 0 ✅ $1.04
e2e-review-army/skill-e2e-review-army--review-army-json-findings 1/1 0 1 0 ✅ $0.07
e2e-safety-codex-consult/skill-e2e-safety-codex-consult 1/1 0 1 0 ✅ $0.26
e2e-deploy/skill-e2e-deploy--land-and-deploy-workflow 1/1 0 1 0 ✅ $0.41
e2e/skill-e2e-workflow 4/4 0 4 0 ✅ $1.01
e2e-failure-routing/skill-e2e-failure-routing 4/4 0 4 0 ✅ $0.4
e2e-ship-docsync/skill-e2e-ship-docsync--ship-docsync-recovery 1/1 0 1 0 ✅ $0.39
e2e-review/skill-e2e-review 2/2 0 2 0 ✅ $0.35
e2e/skill-e2e-shared-libs--shared-libs-review-revalidation 1/1 0 1 0 ✅ $1.87
Fail-closed reconciliation
sign-review-detector-shim-dom
  slice 15  passed             53s  test/skill-e2e-shared-libs.test.ts#shared-libs-unsupported-git
  slice 15  passed             41s  test/skill-e2e-office-hours-auto-mode.test.ts
  slice 15  passed             34s  test/skill-e2e-design.test.ts#design-review-plugin-handoff
  slice 15  passed             47s  test/skill-e2e-bws.test.ts
  slice 15  passed             25s  test/skill-e2e-ship-docsync.test.ts#ship-docsync-missing-marker
  slice 15  passed             22s  test/skill-e2e-review-army.test.ts#review-army-quality-score
  slice 16  passed             50s  test/skill-e2e-third-party-actions.test.ts
  slice 16  passed             21s  test/skill-e2e-plan-tune.test.ts
  slice 16  passed             25s  test/skill-e2e-triage.test.ts
  slice 16  passed             39s  test/skill-e2e-ship-docsync.test.ts#ship-docsync-timeout-unsettled
  slice 16  passed             34s  test/skill-e2e-ask-user-question-format-compliance.test.ts
  slice 16  passed             23s  test/skill-e2e-ship-docsync.test.ts#ship-docsync-launch-failure
  slice 16  passed             27s  test/skill-e2e-session-intelligence.test.ts
  slice 16  passed             39s  test/skill-e2e-ship-hook-consent.test.ts
  slice 16  passed             25s  test/skill-e2e-investigate-owned-termination.test.ts
  slice 16  passed             25s  test/skill-e2e-design.test.ts#design-review-detector-shim
  slice 16  passed             22s  test/skill-e2e-deploy.test.ts#canary-workflow
  slice 16  passed             30s  test/skill-e2e-ship-hook-refresh.test.ts
  slice 16  passed             14s  test/skill-e2e-design.test.ts#plan-design-review-no-ui-scope
  slice 16  passed             23s  test/skill-e2e-review-army.test.ts#review-army-delivery-audit
  slice 16  passed             24s  test/skill-e2e-safety-pair-agent.test.ts
  slice 16  passed             22s  test/skill-e2e-qa-workflow.test.ts#qa-bootstrap
  slice 17  passed             14s  test/skill-e2e-learnings.test.ts
  slice 17  passed             18s  test/skill-e2e-diagram.test.ts
[test:paid] collector final outcomes: 125 executed, 0 reused; 125 passed, 0 failed, 0 manual accepted (unscored; no score-cache credit) (125 attempt records from 71 collectors; every record counts)
[test:paid] deselected testcases, zero credit (316):
[test:paid]    302  sibling case of a case shard (its own shard runs it)
[test:paid]      8  periodic-tier case (this lane runs gate)
[test:paid]      6  Bun hook placeholder of a skipped describe block (not a test)
[test:paid] VERDICT GREEN — lane gate/pr, attempt 1
  rule 112/112 · behavior 1/1 · judge 24/24 · quarantined 0 (0 failing the lane)
  SKIPPED 0 · INFRA 0 · INCOMPLETE 0 · unattributed 0 · ACTION REQUIRED 0
  wall 6m20s · cost $32.89 known + 32 of 139 trial(s) cost unknown
[test:paid] exercised-path map (shadow, non-blocking): 6 MAP_GAP line(s) over 106 executed case(s) with recorded commands
  MAP_GAP document-release bin/gstack-banned-terms: non-blocking for this PR; the next census refresh widens the map (docs/TESTING_INTERNALS.md#exercised-path-map)
  MAP_GAP plan-review-report bin/gstack-plan-reality: non-blocking for this PR; the next census refresh widens the map (docs/TESTING_INTERNALS.md#exercised-path-map)
  MAP_GAP plan-review-report browse/dist/browse: non-blocking for this PR; the next census refresh widens the map (docs/TESTING_INTERNALS.md#exercised-path-map)
  MAP_GAP plan-review-report design/dist/design: non-blocking for this PR; the next census refresh widens the map (docs/TESTING_INTERNALS.md#exercised-path-map)
  MAP_GAP review-army-migration-safety bin/gstack-approval-classes: non-blocking for this PR; the next census refresh widens the map (docs/TESTING_INTERNALS.md#exercised-path-map)
  MAP_GAP test-audit-report-only design/dist/design: non-blocking for this PR; the next census refresh widens the map (docs/TESTING_INTERNALS.md#exercised-path-map)
[test:paid] report: every planned shard accounted and passed

Sliced lane: planner → duration-packed executors → fail-closed report. Behavior cases run a pre-registered 3-trial panel (PASS at 2/3 with no contract violation); a PASS 2/3 is shown with its failed trial, never as a clean pass. Reused results retain their original provenance and expiry.

Dispatched narrow screen (gstack-ship-queue ready --screen) of merge commit cdeb0a350b1e25cfe6a48141f1d34e64477d7db1.

…ain-fae701fcd1c7-a1934a1498ec-7d5f35 slot 1)

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
@github-actions github-actions Bot changed the title feat(design-html,design-review): run gstack-design-lint; copy tier at its lines; waivers replace craft_exceptions (hallmark phase 2) v1.91.274.0 feat(design-html,design-review): run gstack-design-lint; copy tier at its lines; waivers replace craft_exceptions (hallmark phase 2) Oct 27, 2026
@capy-ai
capy-ai Bot merged commit d87eec9 into main Oct 27, 2026
62 checks passed
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