feat: add DSH board and harden Genie state and delivery - #2895
Conversation
…bump workflow_run workflows execute main's copy of version.yml, so dev's fix (#2812/#2816) never ran: every dev bump left orca-plugin.json one version behind and scripts/release-payload-version.ts --verify-source failed the tarball build. Promote only the workflow change so dev bumps are whole again. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013gGxGgKskzyzr1HRUB6cV3
…lugin-sync ci(version): sync plugins/genie/orca-plugin.json in the auto-version bump
chore: rolling promotion dev -> main
chore: rolling promotion dev -> main
chore: rolling promotion dev -> main
chore: rolling promotion dev -> main
chore: rolling promotion dev -> main
chore: rolling promotion dev -> main
Co-authored-by: Felipe Rosa <felipe@namastex.ai>
Co-authored-by: Felipe Rosa <felipe@namastex.ai>
Co-authored-by: Felipe Rosa <felipe@namastex.ai>
Co-authored-by: Felipe Rosa <felipe@namastex.ai>
Bound release reconciliation while allowing measured integration runtimes. Prevent PID zero cleanup and restore Bun exit status explicitly. Co-authored-by: Felipe Rosa <felipe@namastex.ai>
Co-authored-by: Felipe Rosa <felipe@namastex.ai>
Expose complete board snapshots and confirmed task actions through DSH Web. Co-authored-by: Felipe Rosa <felipe@namastex.ai>
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Team Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
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 |
Allow a bounded 20 seconds for 13 real CLI invocations under the full suite. Keep every sync, conflict and recovery assertion unchanged. Co-authored-by: Felipe Rosa <felipe@namastex.ai>
Bind staged metadata and compiled compatibility checks to one candidate version. Require complete four-platform payloads and authenticated delivery provenance before either publication path can reconcile release assets. Co-authored-by: Felipe Rosa <felipe@namastex.ai>
Recover the preserved key-order fix with deterministic lexical ordering. Keep real content and array order changes detectable and preserve pending edits when legacy markers require explicit resolution. Co-authored-by: Felipe Rosa <felipe@namastex.ai>
Re-author the budget guidance proposed in Liraz Siri's PR #2738. Keep the default of two and all repair safeguards across surviving guides. Preserve separate quality, CI and model-escalation limits. Co-authored-by: Felipe Rosa <felipe@namastex.ai>
Capture the roster row in the upsert with RETURNING, preserving defaults and original hired_at while eliminating the post-write read race. Exercise two processes hiring and removing the same row against one real SQLite database. Reauthored from the hireAgent race identified in Liraz Siri's PR #2737 review. Validated with the full gate (2031 pass, 1 skip, 0 fail) and isolated API plus built CLI backup/import dogfood. Co-authored-by: Felipe Rosa <felipe@namastex.ai>
Port the surviving fixture creation modes from Liraz Siri's PR #2737, commit 9711b15. Keep retired agent-sync and obsolete plugin payload hunks absent. Process umask still applies. Independent review SHIP; surviving suites pass under default and 027 umasks with 12 tests and 73 assertions each. B2 selection determinism is already fixed on main by 01598ec. Co-authored-by: Felipe Rosa <felipe@namastex.ai>
Preserve PR #2893 and its original scaffold commit. Create ordinary notes at the vault root and initialize template dates from native placeholders. Keep project identity and original index dates; normalize JSON final newlines. Validated all JSON and template metadata, references and project IDs with isolated static rendering, plus the repository formatting gate. This adds a project scaffold and does not establish live Brain runtime integration. Co-authored-by: Felipe Rosa <felipe@namastex.ai>
Integrate the current main history before promotion. Preserve its published stable and dev artifact pointers; product source is already equivalent at the shared baseline apart from these two channel manifests. Co-authored-by: Felipe Rosa <felipe@namastex.ai>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 535b4fbccb
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| for (const member of members) nonempty(join(root, 'plugins/dsh-genie-board', member)); | ||
| verifyReleasePayloadVersion(root, version); |
There was a problem hiding this comment.
Verify the embedded Host compatibility floor
When dist/index.js is stale or built with the wrong candidate, this verifier accepts it as long as it is nonempty: the test fixture even uses the literal string fixture as the Host bundle. verifyReleasePayloadVersion checks only the adjacent package metadata, while the runtime actually enforces the independently embedded __GENIE_BUILD_VERSION__; signatures then merely authenticate those mismatched bytes. An immutable release can therefore pass both publication checks yet reject the matching Genie binary or advertise the wrong floor, so import the extracted Host bundle and assert its exported minimumGenieVersion equals version for every tarball.
AGENTS.md reference: AGENTS.md:L55-L57
Useful? React with 👍 / 👎.
| const text = z.string(); | ||
| const nullable = text.nullable(); | ||
| const time = z.number().finite().nonnegative(); | ||
| const id = text.regex(/^t_[a-z0-9]+$/); |
There was a problem hiding this comment.
Accept opaque persisted IDs in the board schema
When a board was restored from a valid roadmap/state snapshot containing non-generated IDs, this regex rejects the complete aggregate and the DSH board cannot load at all. The state importer only validates the table arrays and inserts t.id/board IDs verbatim, and the new aggregate-reader tests themselves exercise IDs such as task-0, so board --json can legitimately produce values that this consumer refuses. Treat persisted IDs as bounded opaque strings (and preserve argv safety with argument boundaries) rather than requiring the current t_.../b_... generator format.
Useful? React with 👍 / 👎.
Genie board reads now return complete, consistent snapshots. DSH Web users can view task details and perform authenticated board actions through a plugin with bounded subprocess work, strict inputs and complete refreshes after writes.
This integration also prevents false roadmap changes caused by JSON object key ordering, returns internal hire rows atomically under concurrent removal, and makes delivery fixtures reliable under subprocess load and restrictive permissions. Shared skills resolve a per-group fix budget with explicit overrides while preserving scope, diagnosis and independent review. The existing project Brain scaffold from #2893 is included with corrected note routing and template dates.
Release packaging includes the DSH plugin on all four platforms. Staged metadata and the compiled Host compatibility floor share one immutable candidate version. Both publication paths require complete payloads and authenticated artifact/source bindings before reconciliation. Current published channel manifests from main are preserved.
Validation on source
535b4fbccbb1c2865868f0df429c953f1446a055:5.260907.100tarballs built; unsigned verifier, all required members, extracted Host floors and metadata verified. This is local packaging proof, not a signed or published release; other platform binaries were not executed natively.Existing roadmap markers with pending edits may conservatively require explicit import/export resolution once; both sides remain preserved. Stable publication and published cryptographic verification remain behind the human main/release gate. The approved production policy now prevents self-review, with existing reviewers and main deployment restriction preserved.
Tracks Genie Daily01, NMSTX-686. Liraz Siri's #2737/#2738 contributions are credited in the scoped commits; retired runtimes and the rejected database-to-database sync proposal remain excluded.