fix(automation): enforce hourly DDD development contract - #1545
fix(automation): enforce hourly DDD development contract#1545seonghobae wants to merge 24 commits into
Conversation
|
Warning Review limit reachedNext included review available in 33 minutes. View limit detailsLimit details: You’ve used the included review currently available. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Review configuration: ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Team Run ID: 📒 Files selected for processing (17)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
@opencode-agent @cwl-noema-review Please review exact head |
|
@opencode-agent Please repair the current DDD-contract review findings on this existing owner branch and then synchronize current protected main non-destructively (no rebase/force).
Preserve the single existing hourly coordinator (no additional cron), its bounded dispatch budgets, exact default-branch/head revalidation, dedicated-writer lease behavior, and no |
|
@opencode-agent review The unsafe temporary source-fix workflow/helper have been removed at exact head |
|
The temporary write-capable source-fix workflow/helper were reintroduced by the subsequent |
|
@opencode-agent Please implement the current-head review remediation on exact head |
|
Current exact head |
|
@opencode-agent review exact head |
|
@opencode-agent current-main convergence pass. All visible Devin threads are resolved on |
|
The protected-main production failure in Organization Commercial Readiness Loop run |
Outcome
Reuses the existing organization commercial-readiness schedule at minute 7 of every hour and makes its product-development lane require a versioned, executable Domain-Driven Design architecture contract. No second cron or competing organization writer is introduced.
Current exact branch
76b290ca358f1b9d0e0af6df73e3429aae41b895mainincluded as second parent:44a3c740f7c46c06e7500174d4127413f3f581ebHourly execution boundary
Executable DDD contract
The repository owns its human-readable product-agent prompt, which may use any language. Eligibility no longer depends on copied English terminology appearing anywhere in raw YAML.
A valid entrypoint must define exactly one root workflow environment with:
The same non-comment product-agent command under
# cwl-ddd-prompt-binding: v1must consume both:Version one uses an exact closed capability set. Missing, extra, duplicated, misspelled, or unversioned capabilities fail closed. Comments, unrelated or unused YAML, nested or duplicate environment scopes, shell built-ins, malformed quoting, dangling continuations, and flags split across commands do not satisfy the contract.
The capabilities cover core/supporting/generic subdomain classification, Bounded Context, Context Map, Ubiquitous Language, Aggregate, Entity, Value Object, Domain Service, Repository, Domain Event, Invariant, Anti-Corruption Layer, minimal Shared Kernel, directory ownership, and
docs/product-technical-gap-baseline.mdtraceability.Directory and responsibility repair
Each hourly product increment must identify the owning product responsibility before selecting a repository, then compare the live directory tree, package/module names, API, database objects, tests, and documentation with that responsibility.
Misleading directory ownership, domain behavior hidden in generic
utilsorcommonpaths, infrastructure imports inside the domain model, cross-context database access, obsolete product names, and customer-visible implementation boundaries are architecture defects. A bounded repair moves implementation together with imports, callers, package manifests, migrations, tests, ADRs, diagrams, and compatibility adapters. A larger coherent migration must be recorded with owner, callers, target context, sequence, and acceptance evidence indocs/product-technical-gap-baseline.mdrather than silently deferred.This does not impose one universal directory template; moves are justified by domain ownership and dependency direction.
Implementation boundary
The previously verified coordinator implementation is preserved byte-for-byte in
scripts/ci/organization_commercial_readiness_core.py. The original public/script path remains a compatibility facade that loads the core and injects the new dedicated DDD contract validator. This keeps existing imports and the scheduled command stable while isolating architecture-contract parsing from fleet coordination.Coordinator credential availability
The scheduled coordinator still prefers
PR_REVIEW_MERGE_TOKEN. When absent, the protected default-branch job may exchange its job-bound GitHub OIDC identity for the existing short-lived OpenCode App installation token.Security properties:
id-token: writeonly;GITHUB_TOKEN, reviewer credential, model-provider key, orCOPILOT_GITHUB_TOKENfallback;Executable transport-level branch tests for the exchange helper are tracked separately in #1549 so pull-request code never receives a real job-bound OIDC identity.
Verification evidence
Predecessor bounded bootstrap evidence before the review remediation:
33468148830, job99732190882;compileall, andgit diff --checkpassed.Review remediation adds focused coverage for multilingual prompt freedom, exact version/capability enforcement, comments-only and unused-YAML rejection, environment scope, same-command binding, shell splitting, malformed commands, compatibility imports, and direct script mode. The permanent PR quality workflow now measures the compatibility facade, coordinator core, and DDD validator together.
All temporary source-fix workflows and scripts were removed from the final branch tree. Current-head GitHub checks and independent reviews are authoritative; predecessor evidence is supporting only.
Supersession
This current-main successor supersedes #1161 and #1233. It does not convert unavailable cross-repository credentials into a successful no-op: the loop either obtains bounded maintainer authority and performs the pass, or fails visibly.
Merge boundary
The PR remains
not-merge-ready. Merge only after the unchanged exact head has all required repository/security/coverage/review contexts successful, every actionable review thread resolved, and any policy-required independent approval. Queued, stale, predecessor-head, synthetic-merge-only, skipped-required, or failed evidence is non-passing.