os-sdlc / os-aidd-lint should own per-plugin lint setup for plugins that contain sdlc or aidd files #227
Labels
No labels
P0
P1
P2
P3
bug
create
delete
enhancement
filed-by/agent
filed-by/user
frozen
lint-rule
needs-info
needs-triage
next
plugin/cc-architect
plugin/os
plugin/os-adr
plugin/os-aidd-lint
plugin/os-backlog
plugin/os-context
plugin/os-doc-hygiene
plugin/os-sdlc
plugin/os-vault
project/cc-os
ready-for-agent
ready-for-human
recurring
review
update
waiting
wayfinder:grilling
wayfinder:map
wayfinder:map
wayfinder:research
wayfinder:task
wayfinder:task
wontfix
worklist/deviations
worklist/lint-rule
worklist/new-implement-build
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
jared/cc-os#227
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
Plugins that live outside cc-os (example: the api-wrapper plugin in cc-plugins) generate code that needs project-specific, deterministic lint rules to catch AI deviation from skill instructions. The global rules that os-sdlc and os-aidd-lint already ship won't cover requirements that are specific to one plugin's generated output. Today nobody owns setting that up.
This isn't theoretical: the api-wrapper skill generated a gem that drifted from its own instructions in two ways nothing caught:
vcrdev dependency, noVCR.configurein test_helper), even though the skill's own templates wire VCR deliberately.Both are cases where the instruction was correct and the AI just didn't follow it — exactly the kind of thing a deterministic lint check should catch.
Ask
os-sdlc and os-aidd-lint should be responsible for:
cc-os owns the "how" (mechanism, tooling, config format). This ticket only defines the "what" — it does not prescribe implementation.
Hint:
os-status:fixshould trigger the configuration setup for a plugin that qualifies but doesn't have it yet.Baseline use cases
Two cc-plugins issues have been reframed as the first concrete rules to build and test the pipeline against:
vcras a dev dependency and hasVCR.configureintest/test_helper.rb(or an explicit recorded waiver).lib/**/resources/*.rbin a generated gem has a matchingtest/**/resources/*_test.rb.Context
cc-plugins#15 proposed
os-sdlc lint-initas the mechanism and is being closed in favor of this ticket. Alint-init-style mechanism may or may not already exist in cc-os — the implementer decides the actual mechanism.Discoverer: cc-plugins, session id unavailable, 2026-08-01. Filed while triaging cc-plugins issues #15, #18, #22 during api-wrapper gem lint-drift investigation.
Adding a third baseline use case, following the same reframing as cc-plugins#18 and #22.
The api-wrapper skill's template overhaul (cc-plugins#16/#27) was decided as Option B: Tier 1 infrastructure files (Scope, RequestDispatch, pagination strategies, KeyTransform, FakeAdapter, test_helper, .rubocop.yml, gemspec/Gemfile) become real, runnable Ruby templates with a single module-name substitution token, rather than a full render engine. That decision includes a companion deterministic lint rule for this pipeline:
Frozen in the 2026-08-16 backlog reset — see #419 for the expiry procedure. Do not work unless a live run rediscovers this issue.