Skip to content

Implement attributable RL environments and run lifecycles - #1

Merged
unbraind merged 2 commits into
mainfrom
implement-environment-run-lifecycle
Aug 1, 2026
Merged

Implement attributable RL environments and run lifecycles#1
unbraind merged 2 commits into
mainfrom
implement-environment-run-lifecycle

Conversation

@unbraind

@unbraind unbraind commented Aug 1, 2026

Copy link
Copy Markdown
Owner

Outcome

Implements pm-rl’s first production slice on pm CLI/SDK 2026.8.1: content-addressed environments, exact run provenance, atomic NDJSON metric ingestion, ordered metric reads, and evidence-rich completion that refuses empty runs.

Evidence

  • 20 host-level tests, including a real two-branch Git merge whose independent metric appends survive as a union
  • exact 100% line / branch / function coverage for all executable source
  • 28/28 declarations documented through the fleet pm-ops gate
  • fresh-project installed-package lifecycle, isolated deep doctor, and tracker validation all pass with zero warnings
  • clean npm ci, zero production vulnerabilities, deterministic pack/changelog checks, and Bun install/lock verification
  • full current and historical privacy scan found no credentials, private host paths, LAN addresses, or personal author email
  • daily release remains gated by the PM_RELEASE_APPROVED repository variable; this PR does not publish the new npm package

PM records

Upstream SDK findings

pm-rl-et5b intentionally remains in progress for #854; commands already detect an out-of-band environment mutation before use and snapshot exact environment content into every Run.

Summary by Sourcery

Introduce the first production slice of pm-rl with content-addressed RL environments and attributable run lifecycles that ingest and expose merge-safe metric streams via pm notes.

New Features:

  • Add pm-rl extension schema with Environment and Run item types and commands for environment registration/listing/showing and run start/log/show/finish.
  • Implement NDJSON-based metric ingestion into append-only pm notes, ordered metric reads, and refusal to finish runs without metrics.
  • Provide example environment, configuration, and metrics files to demonstrate the workflow end-to-end.

Enhancements:

  • Clarify README and manifest to describe content-addressed environments, merge-safe notes, and the limited initial command surface.
  • Add a docstring coverage gate script and integrate it into CI and release checks, enforcing full documentation of exported declarations.
  • Update merge-driver preparation script to TypeScript, ensure persistent schema registration for item types, and improve handling of SDK injection fallback.
  • Tighten package metadata, catalog summary, and pm minimum version, and include new examples in the published files list.

Build:

  • Add docstring-gate npm script and include it in the release:check pipeline.
  • Update devDependencies and peerDependencies to newer pm-cli and pm-changelog versions and add pm-ops for docstring analysis.
  • Include examples and lockfiles in the package files to support deterministic installs and usage.

CI:

  • Gate the automated release workflow on an explicit PM_RELEASE_APPROVED repository variable so merges do not auto-publish new packages.
  • Extend CI to run the docstring coverage gate alongside build and coverage checks.

Documentation:

  • Refresh README to describe the initial production feature slice, the available commands, and the roadmap while making non-implemented commands explicit.
  • Add an initial CHANGELOG documenting the run lifecycle feature, metric-history decision, and coverage/docstring guarantees.

Tests:

  • Add comprehensive host-level tests for environment identity, run lifecycle, NDJSON metric ingestion and ordering, Git-branch merge behavior, and failure/refusal cases.
  • Maintain 100% coverage by including new tests for the extension contract, schema, and command handling paths.

Summary by cubic

Add content-addressed RL environments and an attributable run lifecycle with NDJSON metric ingestion into merge-safe notes. Adds fail-fast TTY protection for run log, normalizes environment file errors, strengthens the real Git merge proof, and documents current retention bounds and write-enforcement limits.

  • New Features

    • Environment registration derives IDs from canonical JSON; env list/show added; referenced versions are immutable and verified before each run; file errors are normalized.
    • pm rl run start/log/finish/verify: start snapshots algorithm, hyperparameters, checkpoint, and environment ID; log validates NDJSON, refuses TTY stdin, and appends as notes; finish records terminal metrics and refuses empty runs.
    • Ordered metric reads and exact run receipts; metric events are append-only notes proven to union cleanly across real Git merges; proof assertions strengthened.
    • Examples added: examples/grid-world.json, examples/ppo.json, examples/metrics.ndjson.
  • Dependencies

    • Requires @unbrained/pm-cli >= 2026.8.1 and Node >= 22.18.0.
    • CI runs the pm-ops docstring gate and enforces 100/100/100 coverage; includes pm-changelog.
    • Release publishes only if PM_RELEASE_APPROVED is true and the branch is main.
    • Adds bun.lock and package-lock.json; release remains gated by PM_RELEASE_APPROVED.

Written for commit 934dff0. Summary will update on new commits.

Review in cubic

Add content-addressed environment registration and immutable-use validation, run provenance snapshots, atomic NDJSON metric logging, ordered series reads, and evidence-rich terminal closure.

Enforce 100/100/100 executable coverage, complete declaration docstrings, real Git branch-merge acceptance, npm and Bun lockfiles, fresh-host examples, PM evidence, and maintainer-gated daily publishing.
@gemini-code-assist

Copy link
Copy Markdown

Caution

The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased.

@coderabbitai

coderabbitai Bot commented Aug 1, 2026

Copy link
Copy Markdown

Review Change Stack

Summary by CodeRabbit

  • New Features
    • Added reinforcement-learning workflows for registering environments, creating runs, recording NDJSON metrics, inspecting runs, and completing runs with validation.
    • Added immutable environment identity and append-only metric history support.
    • Added Grid World, PPO, and metrics examples.
  • Documentation
    • Updated usage guidance, available commands, constraints, and development instructions.
    • Added release notes for the new run lifecycle.
  • Bug Fixes
    • Improved validation, provenance checks, Git merging, and SDK fallback behavior.
  • Chores
    • Added documentation coverage checks and approval-gated releases.

Walkthrough

The PR adds the pm-rl extension for content-addressed environments, attributable runs, and append-only metric histories. It adds host tests, package examples, documentation, CI gates, release approval, merge drivers, and project-management completion records.

Changes

RL extension delivery

Layer / File(s) Summary
Environment contracts and registration
index.ts
Defines environment contracts, validates specifications, computes hashes, registers environments, and supports environment listing and inspection.
Run lifecycle and extension wiring
index.ts
Creates immutable run snapshots, logs and reads NDJSON metrics, finishes runs, registers item types, and activates six commands.
Host execution and lifecycle validation
test/index.test.ts
Tests hashing, activation, registration, run lifecycle behavior, Git branch merges, validation failures, and SDK execution paths.
Package, documentation, and release gates
manifest.json, package.json, scripts/*, .github/workflows/*, README.md, CHANGELOG.md, examples/*, .gitattributes
Updates package metadata, examples, documentation, docstring checks, CI, release approval, and PM merge-driver rules.
Project-management lifecycle records
.agents/pm/*
Adds estimates, implementation references, validation evidence, release metadata, completion results, and closed statuses.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Caller as CLI caller
  participant Extension as pm-rl extension
  participant Tracker as pm-cli tracker
  Caller->>Extension: register Environment
  Extension->>Tracker: validate and persist content-addressed specification
  Tracker-->>Extension: return Environment identity
  Caller->>Extension: start Run
  Extension->>Tracker: persist environment and configuration snapshot
  Caller->>Extension: log NDJSON metrics
  Extension->>Tracker: append encoded metric events
  Caller->>Extension: finish Run
  Extension->>Tracker: validate metrics and close Run
Loading
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title clearly summarizes the main change: implementing attributable reinforcement-learning environments and run lifecycles.
Description check ✅ Passed The description directly covers the implementation, validation evidence, documentation, CI, release, and packaging changes in the pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch implement-environment-run-lifecycle

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@unbraind
unbraind marked this pull request as ready for review August 1, 2026 12:13
@gemini-code-assist

Copy link
Copy Markdown

Caution

The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased.

@unbraind

unbraind commented Aug 1, 2026

Copy link
Copy Markdown
Owner Author

Review requested after the complete local release gate and fresh installed-host acceptance passed.

@greptileai please review the implementation, refusal paths, SDK integration, concurrency proof, and PM evidence.

/gemini review

@coderabbitai full review

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry @unbraind, you have reached your weekly rate limit of 500000 diff characters.

Please try again later or upgrade to continue using Sourcery

@gemini-code-assist

Copy link
Copy Markdown

Caution

The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased.

@coderabbitai

coderabbitai Bot commented Aug 1, 2026

Copy link
Copy Markdown

@unbraind: I will perform a full review of pull request #1. I will examine the implementation, refusal paths, SDK integration, metric concurrency behavior, tests, and PM evidence.

✅ Action performed

Full review finished.


Your included review limit is currently reached under our Fair Usage Limits Policy. This review may still proceed through usage-based billing if eligible. Your next included review will be available in 59 minutes.

@sourcery-ai

sourcery-ai Bot commented Aug 1, 2026

Copy link
Copy Markdown

Reviewer's Guide

Implements pm-rl’s first production slice: content-addressed environment specs, attributable run lifecycles with NDJSON metric ingestion into merge-safe notes, strict refusal paths, and full documentation/coverage gates wired into CI and release tooling.

Sequence diagram for the new attributable run lifecycle with NDJSON metrics

sequenceDiagram
  actor User
  participant pm_cli
  participant pm_rl_extension
  participant PmClient
  participant NotesStore

  %% Start run
  User->>pm_cli: pm rl run start <id> --environment <env> --algorithm <algo> [--config-file]
  pm_cli->>pm_rl_extension: startRun(context)
  pm_rl_extension->>PmClient: get(environmentId)
  PmClient-->>pm_rl_extension: Environment item
  pm_rl_extension->>pm_rl_extension: parseEnvironmentSpec() / hashJson()
  pm_rl_extension->>PmClient: create({ type: "Run", dep: [environmentId], affectedVersion: specHash, fixedVersion: configHash, component: algorithm })
  PmClient-->>pm_rl_extension: Run item
  pm_rl_extension-->>pm_cli: RlCommandResult(action="rl-run-start", id)

  %% Log metrics
  User->>pm_cli: pm rl run log <id> [--file]
  pm_cli->>pm_rl_extension: logRun(context)
  pm_rl_extension->>pm_rl_extension: parseNdjsonStream(input)
  alt [events.length == 0]
    pm_rl_extension->>pm_rl_extension: fail("empty_metric_stream")
  else [events.length > 0]
    pm_rl_extension->>PmClient: get(id)
    PmClient-->>pm_rl_extension: Run item
    pm_rl_extension->>PmClient: update(id, { note: events.map(encodeEvent) })
    PmClient-->>pm_rl_extension: ok
    pm_rl_extension-->>pm_cli: RlCommandResult(action="rl-run-log", appended=events.length)
  end

  %% Finish run
  User->>pm_cli: pm rl run finish <id> --reason <text>
  pm_cli->>pm_rl_extension: finishRun(context)
  pm_rl_extension->>PmClient: notes(id)
  PmClient-->>pm_rl_extension: note texts
  pm_rl_extension->>pm_rl_extension: readSeries(note.text[])
  alt [series.events.length == 0]
    pm_rl_extension->>pm_rl_extension: fail("run_has_no_metrics")
  else [series.events.length > 0]
    pm_rl_extension->>PmClient: close(id, reason, metadata)
    PmClient-->>pm_rl_extension: closed Run
    pm_rl_extension-->>pm_cli: RlCommandResult(action="rl-run-finish", metric_events=series.events.length)
  end
Loading

File-Level Changes

Change Details Files
Introduce pm-rl extension module that defines content-addressed Environment and Run item types plus the rl env/run command surface, including NDJSON metric ingestion and refusal paths.
  • Define JsonValue/EnvironmentSpec/RlCommandResult types and RL_ITEM_TYPES for Environment and Run with required fields.
  • Implement canonicalJson, parseEnvironmentSpec, hashJson, idSegment, and helper functions for option/argument handling and client resolution.
  • Add ensurePersistentTypes compatibility helper to persist schema types via PmClient.schemaAddType.
  • Implement rl env register/list/show commands with content-addressed environment identity and idempotent registration by spec hash.
  • Implement rl run start/log/show/finish commands that snapshot environment JSON, hash configuration, append encoded metric notes, order events by step, and refuse runs without metrics on finish.
  • Wire commands and item-types into the extension activate function and default export with consistent version metadata.
index.ts
Add host-level test suite that exercises environment identity, run lifecycle, merge behavior across Git branches, and error/refusal cases using the pm-cli extension test harness.
  • Create temporary initialized trackers and real PmClient instances, ensuring schema types exist for tests.
  • Verify canonical JSON identity behavior, environment parsing validation, and id segment generation.
  • Test env register/list/show including identity collisions via manual affectedVersion mutation.
  • Test full run lifecycle: start with environment+config snapshot, log NDJSON metrics, show ordered events, finish with metrics, and refusal to log to closed runs.
  • Test two-branch Git workflow where independent metric appends on separate branches merge to a union and are readable via rl run show.
  • Test empty/malformed config and metric inputs, unattributable/malformed/mutated environments, and missing arguments/options/wrong item types, including behavior with and without injected SDK in CommandHandlerContext.
test/index.test.ts
Add docstring coverage gate and integrate it plus coverage into CI and release workflows to enforce 100% documented declarations.
  • Implement scripts/docstring-gate.ts using pm-ops/docstrings to analyze project-wide docstring coverage and fail on any violation.
  • Add npm script docstring and include it in release:check and CI workflow steps.
  • Update .github/workflows/ci.yml to run docstring gate before coverage tests.
scripts/docstring-gate.ts
.github/workflows/ci.yml
package.json
Update merge driver preparation script to TypeScript, tightening typing for PATH/pm discovery logic.
  • Convert scripts/prepare-merge-driver.mjs to scripts/prepare-merge-driver.ts.
  • Add TypeScript annotations to isExecutableFile and pmOnPath helpers for PATH scanning/executable detection.
  • Keep behavior that finds pm on PATH and avoids non-executable files and mis-resolved entries.
scripts/prepare-merge-driver.ts
Refresh README and manifest/package metadata to describe the first production slice, narrow the command surface to env/run, and set new minimum/peer pm-cli versions.
  • Rewrite README introduction, metric logging section, and commands table to focus on content-addressed environments, NDJSON metric ingestion, merge-safe notes, and current commands only.
  • Clarify that roadmap commands aren’t registered until acceptance criteria and refusal paths are implemented.
  • Update requirements to pm-cli ≥ 2026.8.1 and add docstring gate to contributor instructions.
  • Align package.json description, pm catalog summary, manifest.json description and pm_min_version with new functionality.
  • Add CHANGELOG.md entry describing run lifecycle and metric history decisions for version 2026.7.31.
README.md
manifest.json
package.json
CHANGELOG.md
Adjust release automation to require explicit repository-variable approval and update dependency pins and project artifacts for the new slice.
  • Guard the release workflow with if: vars.PM_RELEASE_APPROVED == 'true' so merges don’t auto-publish a new npm package.
  • Bump devDependencies and peerDependencies for @unbrained/pm-cli and pm-changelog, and add pm-ops devDependency.
  • Add examples folder to npm files and pm manifest examples, with JSON fixtures for environments, PPO config, and metrics NDJSON.
  • Commit bun.lock and package-lock.json to stabilize installs across npm and Bun.
  • Update .gitattributes and pm agents (.agents/pm/*.toon, history JSONL, tasks/decisions/epics) to reflect the new feature slice and gates.
.github/workflows/release.yml
package.json
bun.lock
package-lock.json
examples/grid-world.json
examples/ppo.json
examples/metrics.ndjson
.gitattributes
.agents/pm/decisions/pm-rl-mpd9.toon
.agents/pm/decisions/pm-rl-p401.toon
.agents/pm/epics/pm-rl-e20d.toon
.agents/pm/features/pm-rl-06n6.toon
.agents/pm/features/pm-rl-dpug.toon
.agents/pm/features/pm-rl-dyho.toon
.agents/pm/features/pm-rl-et5b.toon
.agents/pm/features/pm-rl-keet.toon
.agents/pm/features/pm-rl-mqdb.toon
.agents/pm/features/pm-rl-nzxt.toon
.agents/pm/features/pm-rl-taj8.toon
.agents/pm/features/pm-rl-tl1x.toon
.agents/pm/history/pm-rl-06n6.jsonl
.agents/pm/history/pm-rl-dpug.jsonl
.agents/pm/history/pm-rl-dyho.jsonl
.agents/pm/history/pm-rl-e20d.jsonl
.agents/pm/history/pm-rl-et5b.jsonl
.agents/pm/history/pm-rl-fpon.jsonl
.agents/pm/history/pm-rl-keet.jsonl
.agents/pm/history/pm-rl-mpd9.jsonl
.agents/pm/history/pm-rl-mqdb.jsonl
.agents/pm/history/pm-rl-nzxt.jsonl
.agents/pm/history/pm-rl-p401.jsonl
.agents/pm/history/pm-rl-taj8.jsonl
.agents/pm/history/pm-rl-tl1x.jsonl
.agents/pm/tasks/pm-rl-fpon.toon

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@unbraind

unbraind commented Aug 1, 2026

Copy link
Copy Markdown
Owner Author

Bot response audit (each response read and reacted to):

  • Gemini sunset notices: first, second, and third were down-voted because no review service remains; there are no findings to address.
  • CodeRabbit progress and full-review acknowledgement were up-voted; I am waiting for the actual findings before merge.
  • Sourcery’s review guide was up-voted as an accurate architectural summary. Its separate review outcome reports a weekly character quota, so it produced no code finding to resolve.

CI is green on Node 22 and 26. No reviewer-unavailability response is being represented as approval.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 8

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.agents/pm/features/pm-rl-dyho.toon:
- Around line 15-17: The closure records lack evidence that sustained ingestion
keeps history growth bounded. In .agents/pm/features/pm-rl-dyho.toon lines
15-17, add a sustained-rate ingestion test result with the measured history
bound to actual_result and the acceptance note, or remove/defer the closure
claim; in .agents/pm/history/pm-rl-dyho.jsonl lines 7-8, record matching
bounded-ingestion evidence before the close event. Use the existing
ingestion/history behavior around index.ts batch updates and related tests as
the basis, rather than citing only the 256-event batch.

In @.agents/pm/features/pm-rl-et5b.toon:
- Around line 16-17: Update the feature description to clarify that validation
occurs for extension commands and before environment use, while arbitrary direct
core mutations are not currently rejected at write time. State that host-level
write interception remains pending the required SDK capability, and keep the
existing SDK limitation and tracking context consistent.

In @.github/workflows/release.yml:
- Around line 18-21: Update the release job condition around PM_RELEASE_APPROVED
so it only runs when github.ref equals refs/heads/main, or move the existing
release-ref validation before the Update release version and Commit release
files steps. Ensure feature-branch manual dispatches cannot mutate or commit
release files before being rejected.

In `@index.ts`:
- Around line 213-217: Align the environment ID contract between
registerEnvironment and the registration test so the generated value uses the
expected rl-env- prefix. Replace the direct readFileSync call in
registerEnvironment with the existing readJsonFile helper, preserving the
Environment file context and expected pm CLI error behavior for missing or
unreadable paths.
- Around line 287-297: Update logRun to detect when --file is omitted and stdin
is a TTY before calling readFileSync(path ?? 0, "utf8"). Fail with usage
guidance in that case, while preserving file reads and piped-stdin behavior.

In `@README.md`:
- Around line 62-70: Update the README’s “The two refusals” section to match the
commands currently registered in the Available commands table: document the
implemented empty-run and environment-mutation refusals, or explicitly label
incompatible-version and contaminated-benchmark ranking refusals as planned
behavior. Keep the roadmap and registered-command descriptions consistent.

In `@test/index.test.ts`:
- Around line 175-176: Add a concise comment immediately above the assertion
using logged that documents first_step and last_step reflect event arrival order
from the parsed stream, not numeric step order; leave the assertion and logRun
behavior unchanged.
- Around line 213-222: Update the merge test’s two rl run log invocations for
Agent A and Agent B to use resultOf, retain each command result, and assert that
each operation reports the expected appended count before continuing to the
merge assertions.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: b2de43a8-1116-4d9e-9fc4-6761f2bb4386

📥 Commits

Reviewing files that changed from the base of the PR and between 5b065d0 and f5eaa99.

⛔ Files ignored due to path filters (2)
  • bun.lock is excluded by !**/*.lock
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (40)
  • .agents/pm/decisions/pm-rl-mpd9.toon
  • .agents/pm/decisions/pm-rl-p401.toon
  • .agents/pm/epics/pm-rl-e20d.toon
  • .agents/pm/features/pm-rl-06n6.toon
  • .agents/pm/features/pm-rl-dpug.toon
  • .agents/pm/features/pm-rl-dyho.toon
  • .agents/pm/features/pm-rl-et5b.toon
  • .agents/pm/features/pm-rl-keet.toon
  • .agents/pm/features/pm-rl-mqdb.toon
  • .agents/pm/features/pm-rl-nzxt.toon
  • .agents/pm/features/pm-rl-taj8.toon
  • .agents/pm/features/pm-rl-tl1x.toon
  • .agents/pm/history/pm-rl-06n6.jsonl
  • .agents/pm/history/pm-rl-dpug.jsonl
  • .agents/pm/history/pm-rl-dyho.jsonl
  • .agents/pm/history/pm-rl-e20d.jsonl
  • .agents/pm/history/pm-rl-et5b.jsonl
  • .agents/pm/history/pm-rl-fpon.jsonl
  • .agents/pm/history/pm-rl-keet.jsonl
  • .agents/pm/history/pm-rl-mpd9.jsonl
  • .agents/pm/history/pm-rl-mqdb.jsonl
  • .agents/pm/history/pm-rl-nzxt.jsonl
  • .agents/pm/history/pm-rl-p401.jsonl
  • .agents/pm/history/pm-rl-taj8.jsonl
  • .agents/pm/history/pm-rl-tl1x.jsonl
  • .agents/pm/tasks/pm-rl-fpon.toon
  • .gitattributes
  • .github/workflows/ci.yml
  • .github/workflows/release.yml
  • CHANGELOG.md
  • README.md
  • examples/grid-world.json
  • examples/metrics.ndjson
  • examples/ppo.json
  • index.ts
  • manifest.json
  • package.json
  • scripts/docstring-gate.ts
  • scripts/prepare-merge-driver.ts
  • test/index.test.ts

Comment thread .agents/pm/features/pm-rl-dyho.toon Outdated
Comment thread .agents/pm/features/pm-rl-et5b.toon
Comment thread .github/workflows/release.yml Outdated
Comment thread index.ts
Comment thread index.ts
Comment thread README.md
Comment thread test/index.test.ts
Comment thread test/index.test.ts
@unbraind

unbraind commented Aug 1, 2026

Copy link
Copy Markdown
Owner Author

CodeRabbit’s status was edited from “processing” to a final review limit reached result, so I removed my earlier up-votes and down-voted both CodeRabbit status replies. No CodeRabbit code review ran and there are no findings to resolve. Sourcery likewise reported its weekly quota, Gemini reported service sunset, and Greptile has produced no response. Node 22/26 CI and every local release/installed-host gate remain green; reviewer unavailability is recorded as a limitation, not approval.

Fail fast for TTY metric input, normalize environment file errors, harden feature-branch release refusal, align current refusal docs, and strengthen merge assertions.

Reopen bounded-ingestion PM work because the existing 256-event proof does not establish long-run retention bounds; clarify the environment write-enforcement boundary.
@unbraind

unbraind commented Aug 1, 2026

Copy link
Copy Markdown
Owner Author

Review round 1 complete: all eight CodeRabbit comments were read, up-voted for actionable value, and answered in their threads. Seven were implemented directly; the environment-id prefix sub-finding was rejected with host-prefix evidence while its valid raw-file-error half was fixed. The unsupported bounded-retention closure was corrected by reopening pm-rl-dyho rather than manufacturing evidence.

After commit 934dff0: npm run release:check passes, coverage is 100/100/100, docstrings are 29/29, package PM validation has zero warnings, and production audit reports zero vulnerabilities.

@greptileai please review the new commit and the resolved threads.

@coderabbitai full review

@coderabbitai

coderabbitai Bot commented Aug 1, 2026

Copy link
Copy Markdown

@unbraind: I will perform a full review of pull request #1. I will review the updated implementation, refusal paths, SDK integration, concurrency behavior, PM evidence, and the resolved-thread changes.

✅ Action performed

Full review finished.


Your included review limit is currently reached under our Fair Usage Limits Policy. This review may still proceed through usage-based billing if eligible. Your next included review will be available in 43 minutes.

@unbraind

unbraind commented Aug 1, 2026

Copy link
Copy Markdown
Owner Author

Final thread audit used the thread-aware GraphQL workflow: 8/8 review threads are resolved, with no unresolved or outdated actionable thread. I also read and up-voted every CodeRabbit confirmation reply; the bot explicitly accepted the tracker-prefix explanation and added it as a learning. The edited summary and completed first-review acknowledgement are now up-voted; the separate follow-up-review quota response is down-voted because no second full scan ran. The follow-up commit nevertheless has fresh green Node 22/26 CI and a complete local release gate.

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