Skip to content

Authoring-assist: promote to first-class tool with non-blocking PR advisory - #121

Draft
dayland wants to merge 2 commits into
mainfrom
dayland/authoring-assist-advisory
Draft

Authoring-assist: promote to first-class tool with non-blocking PR advisory#121
dayland wants to merge 2 commits into
mainfrom
dayland/authoring-assist-advisory

Conversation

@dayland

@dayland dayland commented Jul 24, 2026

Copy link
Copy Markdown
Collaborator

Summary

Promotes the authoring-assist prototype to a first-class BCQuality feature: it reviews knowledge-article front-matter and proposes missing routing signals: (raise triggers + effect: suppress suppressors), then posts a non-blocking, feedback-instrumented advisory comment on PRs that touch **/knowledge/**/*.md.

The advisory is ADVISORY ONLY — it never fails a build. Authors apply suggestions via a normal PR under existing R29 + CI + CODEOWNERS review.

What's included

Area File(s)
Suggestion engine (JSON contract, deterministic suggestionId, -ChangedFiles scoping, optional seed) tools/Suggest-ArticleSignals.ps1
Advisory comment renderer (upsert anchor + aa:meta/aa:article markers + reaction footer) tools/New-AuthoringAssistComment.ps1
CI: unprivileged intake + trusted runner (review/publish split) + in-repo self-test .github/workflows/authoring-assist{,-runner,-selftest}.yml
23-check smoke test tools/Test-SuggestArticleSignals.ps1
Docs tools/authoring-assist.md
Dormant schema support: R29 validates the optional signals block shape .github/scripts/validate_frontmatter.py

Dormant schema — safe by design

The signals/effect keys are present but dormant. No production pipeline consumes them:

  • The PR Reviewer only reads effect: suppress behind its BCQ_INDEX_V2 flag (off in prod) and falls back safely when absent.
  • The reviewer never invokes validate_frontmatter.py.
  • Existing rules (incl. R24 skill-id uniqueness, R27, R28) are unchanged; R29 is purely additive.

Explicitly out of scope

  • The routing-index tuning thread (generator/seed/index schema) — separate work. The tool runs self-contained without it and auto-enriches if a seed later lands.
  • Harvest + aggregation of acceptance/reactions — a separate BC-ALAgentsInternal PR (PR 2).

Validation

  • Front-matter validator: 0 errors (R29 active)
  • Smoke test: 23/23 (seed-free graceful degradation covered)
  • All workflows YAML-valid

Rollout note for reviewers

Draft pending: confirm workflow permissions posture (unprivileged pull_request intake + trusted workflow_run publish) and whether to pin actions to SHAs (repo currently uses @vN tags).

dayland added 2 commits July 24, 2026 10:03
…visory

Promotes the authoring-assist prototype to a first-class BCQuality feature that
reviews knowledge-article front-matter and proposes missing routing `signals:`
(raise triggers and `effect: suppress` suppressors). The suggestion is ADVISORY
ONLY: it never fails a build; authors apply it via a normal PR under existing
R29 + CI + CODEOWNERS review.

Feature:
- tools/Suggest-ArticleSignals.ps1: suggestion engine hardened with a stable JSON
  contract (schemaVersion/toolVersion) and a deterministic, effect-sensitive
  per-proposal suggestionId, plus -ChangedFiles scoping for PR-diff runs. Runs
  self-contained: the routing seed is now OPTIONAL (built-in domain map), so this
  does not depend on the separate routing-index tuning thread.
- tools/New-AuthoringAssistComment.ps1: renders one upsertable, feedback-instrumented
  advisory comment (stable anchor + aa:meta/aa:article markers carrying suggestionIds
  + reaction footer) for the downstream acceptance-measurement work.
- .github/workflows/authoring-assist*.yml: unprivileged pull_request intake +
  trusted workflow_run runner (review/publish split) + in-repo self-test.
- tools/Test-SuggestArticleSignals.ps1: 23-check smoke test (contract, determinism,
  scoping, suppressor/prohibition, renderer markers, seed-free graceful degradation).

Dormant schema support:
- .github/scripts/validate_frontmatter.py: adds R29, validating the optional
  `signals` block shape (bare token or mapping with token + optional
  pattern/domain/effect in {raise,suppress}). Reserved & dormant — no production
  pipeline consumes it; the existing PR Reviewer only reads `effect: suppress`
  behind its BCQ_INDEX_V2 flag and falls back safely when absent. Existing rules
  (incl. R24 skill-id uniqueness, R27, R28) are unchanged.

Excludes the routing-index tuning thread entirely (separate work).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 75d852d6-18a6-4c58-986f-ed5ab16618fa
The review and publish jobs run in the same workflow_run; the artifact is intra-run. Downloading with run-id set to the intake run (github.event.workflow_run.id) looked in the wrong run and failed with 'Artifact not found'. Drop run-id/github-token so download-artifact resolves the artifact uploaded earlier in this run.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 75d852d6-18a6-4c58-986f-ed5ab16618fa
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