Skip to content

ci: add CI pipeline with build, typecheck, and test jobs#10

Merged
jrusso1020 merged 1 commit into03-23-fix_resolve_build_and_typecheck_failures_across_packagesfrom
03-23-ci_add_ci_pipeline_with_build_typecheck_and_test_jobs
Mar 23, 2026
Merged

ci: add CI pipeline with build, typecheck, and test jobs#10
jrusso1020 merged 1 commit into03-23-fix_resolve_build_and_typecheck_failures_across_packagesfrom
03-23-ci_add_ci_pipeline_with_build_typecheck_and_test_jobs

Conversation

@jrusso1020
Copy link
Copy Markdown
Collaborator

What

Add GitHub Actions CI workflow that runs on every PR and push to main.

Why

OSS contributors need automated guardrails. This is item 1 from VA-855.

How

6 parallel jobs in .github/workflows/ci.yml:

  1. Buildpnpm build (all packages)
  2. Typecheckpnpm -r typecheck (all packages)
  3. Test: core — vitest with coverage thresholds (75% statements, 70% branches, 80% functions)
  4. Test: engine — vitest
  5. Test: runtime contract — runtime contract, behavior, seek, duration guards, parity, security
  6. Semantic PR title — enforces conventional commit prefixes on PR titles via amannn/action-semantic-pull-request

Other details:

  • Concurrency group cancels stale runs on same ref
  • 10-minute timeout per job
  • pnpm cache enabled

Not included (deferred):

  • Lint/format jobs (waiting on VA-851 tooling choice)
  • Producer regression tests (test files need cleanup first)

Test plan

  • YAML validated
  • All jobs verified locally: build, typecheck, core tests (330), engine tests (18), runtime contract tests
  • Verify CI runs on this PR

Stack: depends on #9

@jrusso1020 jrusso1020 merged commit 944c1a4 into 03-23-fix_resolve_build_and_typecheck_failures_across_packages Mar 23, 2026
7 checks passed
miguel-heygen added a commit that referenced this pull request Apr 7, 2026
## Summary

Adds critical rendering constraints to the `hyperframes` skill discovered from eval analysis of 27 agent-generated compositions. These guardrails prevent agents from producing compositions that technically work but render poorly.

## What it fixes

| Rule Added | Eval Prompts Affected | Issue |
| --- | --- | --- |
| Ban `repeat: -1` | #20 loading-spinner (2.0/5) | Infinite timeline broke capture engine |
| Ban async timeline construction | #16 particle-logo (2.6/5) | Timeline empty at capture time |
| Min font size 16px (labels), 20px (body) | #7, #8, #13, #14, #15, #19 | Illegible text after encoding |
| Ban full-screen dark linear gradients | #3, #5, #10, #14 | H.264 color banding |
| `<link>` fonts over CSS `@import` | #7, #24 | Font loading race conditions |

## Changes

- **Rules section**: Added `repeat: -1` ban, async timeline ban, items 8-9 to "Never do" list
- **Typography section**: Expanded font size guidance with specific minimums per text role (headlines, body, labels)
- **New "Backgrounds and Color" section**: Guidance on avoiding gradient banding
- **Output Checklist**: 5 new items covering all new constraints

## Test plan

- [ ] Run eval with updated skill and compare avg quality scores
- [x] Skill renders correctly in `/hyperframes` invocation
vanceingalls added a commit that referenced this pull request Apr 16, 2026
Blockers:
- #2: late_init_set false positive on fractional opacity (0.5 matched as 0)
  Fixed: /opacity\s*:\s*0(?![.\d])/ negative lookahead
- #3: scene-1 prefix skip matches scene 10+ (s1- matches s10-)
  Fixed: extract full number and compare exactly

High severity:
- #4: autoAlpha not covered by late_init_set
  Fixed: checks both opacity and autoAlpha
- #5: al() crashes on non-hex colors (#fff shorthand, rgb(), null)
  Fixed: guard + shorthand expansion + NaN fallback
- #6: "Full palette" with null bg crashes isDark
  Fixed: null guard defaults to dark
- #7: template literals missed by tl_from_in_multiscene
  Fixed: regex includes backtick quotes

Medium:
- #9: no retry limit on eval failures → infinite loop
  Fixed: max 2 retries, then escalate to user
- #10: vague ID convention
  Fixed: explicit s{N}- prefix rule in multi-scene.md
- #11: visual-style.md backward compat
  Fixed: Step 0b checks both filenames
- #13: preview_html script injection
  Fixed: documented prohibition in design-picker.md

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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.

2 participants