Skip to content

chore(issues): replace Issues.txt with multi-repo service improvements - #7

Merged
stranske merged 2 commits into
mainfrom
codex/issue-2
Dec 20, 2025
Merged

chore(issues): replace Issues.txt with multi-repo service improvements#7
stranske merged 2 commits into
mainfrom
codex/issue-2

Conversation

@stranske

@stranske stranske commented Dec 20, 2025

Copy link
Copy Markdown
Owner

Adds 10 issues covering identified gaps and improvements for making the Workflows repository a proper multi-repo CI service:

  1. Create floating v1 tag for stable consumer pinning
  2. Add working-directory input for monorepo support
  3. Document workflow outputs in Integration Guide
  4. Add input validation step to reusable workflows
  5. Create Node.js/TypeScript reusable CI workflow
  6. Parallelize lint steps in Python CI workflow
  7. Add conditional tool installation based on input flags
  8. Create GitHub starter workflow template
  9. Add backward compatibility policy documentation
  10. Create integration test consumer repository

Issues formatted for Agents 63 Issue Intake workflow.

Automated Status Summary

Scope

  • 10 Python test files in tests/workflows/ are excluded from CI and local runs because they import modules from Trend_Model_Project that don't exist in this repository (e.g., scripts.mypy_return_autofix, scripts.fix_cosmetic_aggregate, scripts.update_autofix_expectations). This represents ~50% of the Python test suite being skipped.

Tasks

  • Identify the exact imports needed by examining the excluded test files.
  • Create minimal stub modules that provide the expected interfaces (functions that return sensible defaults or raise NotImplementedError).
  • Remove the corresponding entries from [tool.ruff] exclude in pyproject.toml.
  • Remove the --ignore flags from selftest-ci.yml Python test step.
  • Run the full test suite and fix any remaining import or interface issues.

Acceptance criteria

  • - All 10 previously excluded test files are now included in CI runs.
  • - python -m pytest tests/workflows/ -v runs without collection errors.
  • - Test count increases from ~196 to include the previously skipped tests.
  • - CI workflow passes with expanded test coverage.

Head SHA: 976b4e8
Latest Runs: ✅ success — Gate
Required: gate: ✅ success

Workflow / Job Result Logs
Agents PR meta manager ❔ in progress View run
CI Autofix Loop ✅ success View run
Gate ✅ success View run
Health 40 Sweep ✅ success View run
Health 44 Gate Branch Protection ✅ success View run
Health 45 Agents Guard ✅ success View run
Health 50 Security Scan ✅ success View run
Maint 52 Validate Workflows ✅ success View run
PR 11 - Minimal invariant CI ✅ success View run
Selftest CI ✅ success View run

Adds 10 issues covering identified gaps and improvements for making
the Workflows repository a proper multi-repo CI service:

1. Create floating v1 tag for stable consumer pinning
2. Add working-directory input for monorepo support
3. Document workflow outputs in Integration Guide
4. Add input validation step to reusable workflows
5. Create Node.js/TypeScript reusable CI workflow
6. Parallelize lint steps in Python CI workflow
7. Add conditional tool installation based on input flags
8. Create GitHub starter workflow template
9. Add backward compatibility policy documentation
10. Create integration test consumer repository

Issues formatted for Agents 63 Issue Intake workflow.
Copilot AI review requested due to automatic review settings December 20, 2025 09:44
@github-actions

Copy link
Copy Markdown
Contributor

Gate fast-pass: docs-only change detected; heavy checks skipped.

@github-actions

github-actions Bot commented Dec 20, 2025

Copy link
Copy Markdown
Contributor

Automated Status Summary

Head SHA: 9d47bcf
Latest Runs: ⏳ pending — Gate
Required contexts: Gate / gate, Health 45 Agents Guard / Enforce agents workflow protections
Required: core tests (3.11): ⏳ pending, core tests (3.12): ⏳ pending, docker smoke: ⏳ pending, gate: ⏳ pending

Workflow / Job Result Logs
(no jobs reported) ⏳ pending

Updated automatically; will refresh on subsequent CI/Docker completions.


Keepalive checklist

Scope

  • 10 Python test files in tests/workflows/ are excluded from CI and local runs because they import modules from Trend_Model_Project that don't exist in this repository (e.g., scripts.mypy_return_autofix, scripts.fix_cosmetic_aggregate, scripts.update_autofix_expectations). This represents ~50% of the Python test suite being skipped.

Tasks

  • Identify the exact imports needed by examining the excluded test files.
  • Create minimal stub modules that provide the expected interfaces (functions that return sensible defaults or raise NotImplementedError).
  • Remove the corresponding entries from [tool.ruff] exclude in pyproject.toml.
  • Remove the --ignore flags from selftest-ci.yml Python test step.
  • Run the full test suite and fix any remaining import or interface issues.

Acceptance criteria

  • - All 10 previously excluded test files are now included in CI runs.
  • - python -m pytest tests/workflows/ -v runs without collection errors.
  • - Test count increases from ~196 to include the previously skipped tests.
  • - CI workflow passes with expanded test coverage.

@stranske
stranske merged commit 6275846 into main Dec 20, 2025
149 checks passed

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR replaces the old Issues.txt file containing 2 project-specific cleanup tasks with 10 new issues focused on transforming the Workflows repository into a comprehensive multi-repo CI service. The new issues cover versioning, monorepo support, documentation, validation, feature expansion, performance optimization, and testing improvements.

Key changes:

  • Completely replaces previous issues with 10 new strategic improvements
  • Shifts focus from project-specific cleanup to multi-repo service enhancements
  • Maintains consistent formatting for the Agents 63 Issue Intake workflow

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

stranske added a commit that referenced this pull request Jan 1, 2026
- Fix tomlkit isinstance checks - use hasattr for duck typing (#3)
- Add type validation for python_version before str() conversion (#6)
- Fix redundant ternary operators in agents-guard.yml (3 instances) (#1)
- Fix authorIsCodeowner indentation in agents-guard.js (#4)
- Fix inconsistent array indentation in agents-guard.js (#5)
- Remove redundant instructions=[] reassignment in agents-guard.js (#7)
- Fix typo in keepalive_loop.js numbered list comment (#9)

All fixes applied to both main files and templates/consumer-repo.
See docs/CODE_QUALITY_ISSUES.md for issue tracking.
stranske added a commit that referenced this pull request Jan 1, 2026
* fix: address code quality issues from Copilot reviews

- Fix tomlkit isinstance checks - use hasattr for duck typing (#3)
- Add type validation for python_version before str() conversion (#6)
- Fix redundant ternary operators in agents-guard.yml (3 instances) (#1)
- Fix authorIsCodeowner indentation in agents-guard.js (#4)
- Fix inconsistent array indentation in agents-guard.js (#5)
- Remove redundant instructions=[] reassignment in agents-guard.js (#7)
- Fix typo in keepalive_loop.js numbered list comment (#9)

All fixes applied to both main files and templates/consumer-repo.
See docs/CODE_QUALITY_ISSUES.md for issue tracking.

* chore: archive resolved CODE_QUALITY_ISSUES.md
stranske added a commit that referenced this pull request Jan 1, 2026
- Fix tomlkit isinstance checks - use hasattr for duck typing (#3)
- Add type validation for python_version before str() conversion (#6)
- Fix redundant ternary operators in agents-guard.yml (3 instances) (#1)
- Fix authorIsCodeowner indentation in agents-guard.js (#4)
- Fix inconsistent array indentation in agents-guard.js (#5)
- Remove redundant instructions=[] reassignment in agents-guard.js (#7)
- Fix typo in keepalive_loop.js numbered list comment (#9)

All fixes applied to both main files and templates/consumer-repo.
See docs/CODE_QUALITY_ISSUES.md for issue tracking.
stranske added a commit that referenced this pull request Jan 1, 2026
* fix: address code quality issues from Copilot reviews

- Fix tomlkit isinstance checks - use hasattr for duck typing (#3)
- Add type validation for python_version before str() conversion (#6)
- Fix redundant ternary operators in agents-guard.yml (3 instances) (#1)
- Fix authorIsCodeowner indentation in agents-guard.js (#4)
- Fix inconsistent array indentation in agents-guard.js (#5)
- Remove redundant instructions=[] reassignment in agents-guard.js (#7)
- Fix typo in keepalive_loop.js numbered list comment (#9)

All fixes applied to both main files and templates/consumer-repo.
See docs/CODE_QUALITY_ISSUES.md for issue tracking.

* chore: archive resolved CODE_QUALITY_ISSUES.md

* fix: prevent useless follow-up issues when source lacks criteria

Add isMissingInfoGap() to detect verifier gaps that are about missing
source info rather than actual verification failures. These gaps (like
'Provide explicit acceptance criteria in the PR description') indicate
the source issue/PR lacked structured criteria, not that verification
found actual problems.

Updated hasSubstantiveContent check to filter out these 'missing info'
gaps, preventing creation of follow-up issues when there's nothing
actionable to fix.

Fixes issue #415 scenario where follow-up issues were created despite
having only placeholder content because the verifier gaps were about
missing source info.

Added 7 new tests:
- isMissingInfoGap() unit tests
- Integration tests for hasSubstantiveContent with missing info gaps

* fix: resolve mypy union-attr errors in resolve_mypy_pin.py

Use dict() to normalize tomlkit Table objects with type: ignore[call-overload]
comments to satisfy mypy type checking while preserving duck-typing
compatibility with tomlkit's custom container types.

Fixes mypy errors:
  tools/resolve_mypy_pin.py:36: error: Item "None" has no attribute "get" [union-attr]
  tools/resolve_mypy_pin.py:39: error: Item "None" has no attribute "get" [union-attr]

* fix: broaden type ignore to cover both arg-type and call-overload

Different mypy versions report different error codes for the same issue.
Use a combined ignore comment to handle both.

* fix: address bot review comments from PR #417

1. Remove redundant /i regex flags in isMissingInfoGap() since text
   is already lowercased via .toLowerCase()

2. Improve numbered list comment in keepalive_loop.js to clarify
   both 1., 2., 3. and 1), 2), 3) formats are matched

3. Fix ALL remaining redundant ternary operators for Number() conversion:
   - agents-guard.yml (3 instances - lines 314, 442 fixed)
   - health-44-gate-branch-protection.yml (1 instance)
   - agents_pr_meta_update_body.js (1 instance)
   - templates/consumer-repo agents-guard.yml (2 instances)

4. Add missing tests for formatSimpleFollowUpIssue hasSubstantiveContent
   with missing info gaps (2 new test cases)
@github-actions github-actions Bot mentioned this pull request Apr 27, 2026
22 tasks
stranske added a commit that referenced this pull request May 6, 2026
…t on compressible inputs (#2035)

Wave 2 Fix #7 (PR #2026) merged with `tests/scripts/test_issue_formatter.py::test_format_issue_body_caps_oversized_input` failing — a 60K-char body of repeating x's was passing through unchanged, leaving the formatter's preamble and "[truncated: …]" suffix to push the wrapped output to 64K (greater than the input).

Root cause: `estimate_tokens()` returns tiktoken's BPE token count when tiktoken is available, but BPE aggressively compresses repeated patterns. 60K identical x's encodes to a handful of tokens, well under the 4000 default budget — so `_cap_block` decides "fits in budget" and returns the body unchanged. Wrappers then push total length above the input.

Fix: floor the estimate at chars/4 (the existing fallback when tiktoken is missing), so compressible inputs are still capped against the budget. tiktoken's accurate count still wins for normal prose; only highly-repetitive inputs hit the floor.

The consumer-template path `templates/consumer-repo/scripts/langchain/` is gitignored — sync-manifest pulls from this canonical path, so no template lockstep needed.

32 issue_pr_context/issue_formatter tests now pass on Python 3.12. Issue #862 regression test (60K x body → must shrink) now passes.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
stranske added a commit that referenced this pull request May 10, 2026
…mans

The 2026-05-10 feedback: surfacing every unaddressed enhancement issue
for human triage is heavier than necessary. The system should label the
clear-cut cases itself and only ask for human input when the issue shape
is ambiguous.

Two-tier classification in `repo_review_backlog_scan.py`:

**auto-labelable** — leaf enhancement issues. Heuristic priority:
- has `milestone:*` label → `priority:normal` (declared planned work)
- created >90 days ago without milestone → `priority:low` (likely stale)
- otherwise → `priority:normal` (default)

With `--apply` (the cron default), the scanner calls `gh issue edit
--add-label priority:X` for each leaf. The opener picks them up on its
next pass.

**needs-human** — surfaced for decision, not auto-labeled:
- title contains epic/tracker/umbrella/roadmap/rollup/parent issue
- has `epic`/`umbrella`/`tracker`/`meta`/`parent`/`needs-triage`/`discussion`
- has any `blocked*` label
- body has ≥2 task-checkbox lines mentioning #NNN (umbrella tracking children)
- body has a "Children: #..." or "Child issues: #..." declaration

Validated against the user's worked example: #25/#26/#27 → leaf
(auto-label `priority:normal`); #10 → umbrella detected via 4 child
checkboxes (surface for human); #7 → umbrella detected via "epic" in
title. Matches the user's stated preference exactly.

The desktop reminder now renders two backlog subsections:
- **Auto-labeled this week (N items) — FYI, no action required**: brief
  one-line summary per item with applied priority.
- **Backlog needing your decision (M items)**: full three-command resolution
  block per item (promote / deprioritize / close).

macOS notification text now distinguishes the cases: clean weeks with
auto-labels only show "no action required"; weeks with needs-human items
show "decisions needed".

Coordinator now passes `--apply` to the scanner so the cron actually
mutates labels (dry-run is still the default when running the scanner
standalone for testing).

Co-Authored-By: Claude Opus 4.7 (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