Repository navigation
Conversation
…-out (#338) check-lane-packet.mjs --council gives each dispatch lane of a valid packet set deterministic CEO, Reviewer, QA and CSO stances after Quorum: duplicate objectives reject, near duplicates and undeclared outbound actions hold. Adds the optional authority.outbound packet field and LANE-COUNCIL-01.
Codex Review Summary: ✅ CompletedThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
…review) Everyday dev wording (the delete endpoint, send a request, pay attention, 게시판) no longer holds; destroy, sent, emailed, gh pr create/merge, gh release create, land the changes and upload to prod now do. Negation covers not to, apostrophe-less contractions and is not allowed. authority.outbound refuses inherited names and repeats; councilLane throws a contract error without a lane id.
send the error report to the vendor and similar sentences hold again; pinned by a test.
…s code Round 2 review: the two-word code-noun guard let "deploy the script to staging" and "delete the helpers directory" pass. Deploy and delete/destroy now use the next-word guard only.
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #338
Problem
When a coordinator fans work out across lanes,
check-lane-packet.mjsonly checks that each packet is coherent (lane id, branch and write-scope collisions, loop and merge authority). Two lanes with the same objective under different branches both validate, and so does a lane whose objective says "deploy", "publish", "post to Slack" or "wipe the state" when nothing in the packet declares that action. The coordinator finds the duplicate when two PRs fix the same thing, and the outbound action when it has already happened.Change
check-lane-packet.mjs <set.json> --counciladds deterministic role stances to every dispatch lane of a valid packet or set, after Quorum's council (rules.tsdecide(),dedup.ts):work.objectiveAny cut rejects, then any escalate holds, otherwise pass.
pending/boundlanes are not evaluated but are peers a new lane must not repeat. Exit codes: 0 all pass, 2 any hold, 1 invalid or any reject.--jsonreturns the validator's envelope pluscouncil(rulesVersion, per-lane stances with stableruleids). Without--council, output and exit codes are unchanged.Example on a four-lane set:
Packets gain an optional
authority.outboundlist (deploy,release,publish,send,destroy,pay); merge, push and PR stay with their existing fields. A declared action records the user's answer; the council's pass is never treated as approval.lane-dispatch.mdadds LANE-COUNCIL-01 (DEFAULT): run the council before creating two or more lanes, rewrite rejected lanes, settle CEO/Reviewer holds by sharpening objectives, and ask the user once for CSO holds.Matching notes: word boundaries keep identifiers such as
mergeLanesout. An English verb followed within two words by a code-only noun names code ("the delete endpoint", "send a request", "publish the type definitions", "pay attention"), as does a Korean action noun followed by a code noun ("결제 모듈", "게시판", "전송 속도"); nouns a real action also takes as its object (report, results, list, form) are kept off that list, so "send the error report to the vendor" holds. A negation that governs the verb ("do not merge", "make sure not to deploy", "merge is not allowed", "병합은 하지 마요") suppresses that one mention, so "do not merge until CI passes, then merge" still holds. Cache clearing holds because cxc-dev lists it as Destruction (ESCALATE). The 0.8 threshold comes from measured pairs: distinct slices scored 0.63-0.72, reworded copies 0.825-0.923 (devlog/_plan/261109_quorum_lane_council/000_plan.md).Left out on purpose: Quorum's verdict memory reuse. In codexclaw an approval belongs to a person and a session, and a fuzzy match on an old verdict must not stand in for one.
Verification
node --test plugins/codexclaw/test/lane-council.test.mjsfailed withERR_MODULE_NOT_FOUNDbeforelane-council.mjsexisted; now 18 tests, 18 pass. The tests cover duplicates, near duplicates, containment, created-lane peers, every outbound category in English and Korean with and without its declaration, false-positive wording, adversarial wording from the review in both directions, negation scope,authority.outboundvalidation and the CLI exit codes and output.node plugins/codexclaw/scripts/gate.mjsOK,node plugins/codexclaw/scripts/check-prompt-architecture.mjsOK,node plugins/codexclaw/scripts/sync-readme-badges.mjsok,npm run buildexit 0.devlog/_plan/261109_quorum_lane_council/010_review_round1.md. The adversarial tests failed before each fix.npm testlocally (at 84982d3): 3890 tests, 3883 pass, 5 skipped, 2 fail. Neither failure is from this change.gui/test/router.test.tscannot resolvereactbecause GUI dependencies are not installed in this worktree.lane-packet.test.mjs"a drifted value is reported as drift" fails the same way ondevwith this change stashed, because it reads a local host artifact.Risks
RULES_VERSIONand the rule ids make later tuning visible.create_thread, and wording outside the packet fields escapes the CSO.authority.outboundis validated without--counciltoo, so a malformed list now fails. The field is new, so no existing packet carries it.Hosted CI was green on 84982d3 (all legs and
ci); the current head's run is in progress.NOT RUN: full local
npm teston the current head (focused council and lane-packet tests, gate and prompt-architecture run), Windows and macOS legs locally.