Skip to content

factory: bounded explicit fingerprint timeout - #4

Open
olety wants to merge 1 commit into
base/one1820-native-timeout-b9043d748from
fix/one1820-fingerprint-timeout
Open

factory: bounded explicit fingerprint timeout#4
olety wants to merge 1 commit into
base/one1820-native-timeout-b9043d748from
fix/one1820-fingerprint-timeout

Conversation

@olety

@olety olety commented Sep 7, 2026

Copy link
Copy Markdown
Member

CEO-authorized isolated prerequisite for ONE-1820. Adds fingerprint-only --timeout-ms bounded1..120000, default20000 unchanged. Launch/inspect defaults and native hash runner unchanged. Focused51 tests PASS; coding-agent tsgo build PASS. No daemon restart/hotpatch. Actual Qodo review required before focused CLI use.

@cursor

cursor Bot commented Sep 7, 2026

Copy link
Copy Markdown

PR Summary

High Risk
Release-scale changes affect the global installer, LLM provider/auth/compaction behavior, and a large coding-agent/daemon/factory surface area in one merge.

Overview
Bumps the monorepo to 0.9.1 and ships a wide set of behavioral, provider, installer, and contributor-process updates—not only the factory fingerprint work named in the PR title.

Factory / Oneiron (including ONE-1820): Adds a fingerprint-only --timeout-ms flag (1–120000 ms, default 20000) for native Git source verification, plus extensive factory continuation/command-runner documentation and many durable-coordinator, evidence, and judgment-related change notes bundled in this release.

Stable install under npm 12: install.sh routes global installs through prime_agent_npm_install, which passes npm 12’s required --allow-remote / --allow-scripts flags for the verified tarball; CI adds an npm 12 smoke test in build-binaries.yml, and check:installer points at scripts/check-installer.mjs.

@earendil-works/pi-ai: Refreshes the generated model catalog (Claude Fable 5.1, Gemini 3.8 Flash, Copilot catalog trims, pricing updates); bumps impersonated Claude Code to 2.1.257 for Fable/OAuth; records transport-derived responseModel / responseModelSource on Anthropic and terminal OpenAI Responses streams; fixes OpenAI Responses compaction so caller x-client-request-id wins over session/model headers; treats response.incomplete as length stop with terminal model identity; GitHub Copilot integration tests move to claude-sonnet-4.6 / gpt-5.3-codex.

Process / templates: Bug report forms collect install method, OS version, CPU arch, and shell/terminal; Linear checks expect RES- tickets (with No-Ticket: opt-out); PR template documents Research / Long-Horizon ticketing.

@earendil-works/pi-coding-agent: Large 0.9.0 changelog consolidation (REPL bash(), daemon roster/direct transport, agents view, traces outbox, semantic-edges producer notes, performance fixes) and a 0.9.1 fix for agents-view inactive rows until search.

Reviewed by Cursor Bugbot for commit 8c794d8. Bugbot is set up for automated code reviews on this repo. Configure here.

@cursor

cursor Bot commented Sep 7, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_e76fcf4f-3b66-4ff8-8526-2a82af912455)

@olety

olety commented Sep 7, 2026

Copy link
Copy Markdown
Member Author

/agentic_review
Exact candidate 8c794d8. Review bounded fingerprint-only timeout interface. Focused51 tests and package build PASS; native hashing unchanged.

@coderabbitai

coderabbitai Bot commented Sep 7, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 322 files, which is 172 over the limit of 150.

To get a review, reduce the PR to 150 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to Team to raise the limit.

Usage-priced reviews support at most 300 files.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Essentials

Run ID: 10d86c0c-1cef-48fb-94e6-19bed0148636

📥 Commits

Reviewing files that changed from the base of the PR and between 7e8fead and 8c794d8.

⛔ Files ignored due to path filters (5)
  • package-lock.json is excluded by !**/package-lock.json
  • packages/ai/src/models.generated.ts is excluded by !**/*.generated.*
  • packages/coding-agent/examples/extensions/custom-provider-anthropic/package-lock.json is excluded by !**/package-lock.json
  • packages/coding-agent/examples/extensions/sandbox/package-lock.json is excluded by !**/package-lock.json
  • packages/coding-agent/examples/extensions/with-deps/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (322)
  • .github/DISCUSSION_TEMPLATE/bug-reports.yml
  • .github/ISSUE_TEMPLATE/bug-report.yml
  • .github/PULL_REQUEST_TEMPLATE.md
  • .github/workflows/build-binaries.yml
  • .github/workflows/linear-ticket.yml
  • install.sh
  • package.json
  • packages/agent/package.json
  • packages/ai/.changes/fix-anthropic-tool-cache.md
  • packages/ai/.changes/oneiron-compact-request-identity.md
  • packages/ai/.changes/provider-response-model-provenance.md
  • packages/ai/.changes/refresh-model-catalog.md
  • packages/ai/.changes/remove-overflow-pattern.md
  • packages/ai/.changes/res-1257-fable-claude-code-version.md
  • packages/ai/.changes/res-1269-refresh-model-catalog.md
  • packages/ai/CHANGELOG.md
  • packages/ai/package.json
  • packages/ai/src/providers/anthropic.ts
  • packages/ai/src/providers/openai-responses-compact.ts
  • packages/ai/src/providers/openai-responses-shared.ts
  • packages/ai/src/types.ts
  • packages/ai/test/context-overflow.test.ts
  • packages/ai/test/cross-provider-handoff.test.ts
  • packages/ai/test/empty.test.ts
  • packages/ai/test/github-copilot-anthropic.test.ts
  • packages/ai/test/image-tool-result.test.ts
  • packages/ai/test/openai-responses-compact.test.ts
  • packages/ai/test/provider-response-model.test.ts
  • packages/ai/test/responseid.test.ts
  • packages/ai/test/stream.test.ts
  • packages/ai/test/tokens.test.ts
  • packages/ai/test/tool-call-id-normalization.test.ts
  • packages/ai/test/tool-call-without-result.test.ts
  • packages/ai/test/total-tokens.test.ts
  • packages/ai/test/unicode-surrogate.test.ts
  • packages/coding-agent/.changes/acp-mcp-native-tools.md
  • packages/coding-agent/.changes/acp-semantic-edges-delivery.md
  • packages/coding-agent/.changes/acp-semantic-edges-producer.md
  • packages/coding-agent/.changes/await-daemon-bash-end.md
  • packages/coding-agent/.changes/bash-output-sentinel.md
  • packages/coding-agent/.changes/bash-skill-preview.md
  • packages/coding-agent/.changes/daemon-agent-message-admission.md
  • packages/coding-agent/.changes/daemon-recovery-hardening.md
  • packages/coding-agent/.changes/derive-connection-models.md
  • packages/coding-agent/.changes/derive-scoped-heartbeats.md
  • packages/coding-agent/.changes/emfile-worker-spawn.md
  • packages/coding-agent/.changes/empty-session-idle-status.md
  • packages/coding-agent/.changes/eng-5533-worker-recovery.md
  • packages/coding-agent/.changes/eng-5794-agent-roster-ledger.md
  • packages/coding-agent/.changes/eng-5794-agent-roster-push.md
  • packages/coding-agent/.changes/eng-5794-agent-status-classifier.md
  • packages/coding-agent/.changes/eng-5811-reconnect-park.md
  • packages/coding-agent/.changes/eng-5817-direct-session-transport.md
  • packages/coding-agent/.changes/eng-5831-direct-detach-eviction.md
  • packages/coding-agent/.changes/eng-5838-traces-outbox.md
  • packages/coding-agent/.changes/eng-5847-heartbeat-idle-status.md
  • packages/coding-agent/.changes/event-log-substrate.md
  • packages/coding-agent/.changes/evict-empty-session-on-detach.md
  • packages/coding-agent/.changes/execute-bash-abort-controller.md
  • packages/coding-agent/.changes/factory-automatic-judgment.md
  • packages/coding-agent/.changes/factory-command-environment.md
  • packages/coding-agent/.changes/factory-evidence-structure.md
  • packages/coding-agent/.changes/factory-json-events.md
  • packages/coding-agent/.changes/factory-judgment-recovery.md
  • packages/coding-agent/.changes/factory-oneiron-adapter.md
  • packages/coding-agent/.changes/factory-triage-diagnostics.md
  • packages/coding-agent/.changes/factory-triage-reviewed-head.md
  • packages/coding-agent/.changes/factory-writer-policy.md
  • packages/coding-agent/.changes/fix-agents-catalog-responsiveness.md
  • packages/coding-agent/.changes/fix-startup-catalog-loading.md
  • packages/coding-agent/.changes/host-reply-envelope.md
  • packages/coding-agent/.changes/inline-mermaid-diagrams.md
  • packages/coding-agent/.changes/kernel-snapshot-dispose-timeout.md
  • packages/coding-agent/.changes/kernel-snapshot-single-dump.md
  • packages/coding-agent/.changes/kernel-stderr-log.md
  • packages/coding-agent/.changes/legacy-rlm-parser.md
  • packages/coding-agent/.changes/memoized-scoped-passive-topology.md
  • packages/coding-agent/.changes/npm-12-stable-installer.md
  • packages/coding-agent/.changes/on-demand-agent-peers.md
  • packages/coding-agent/.changes/one-1820-fingerprint-timeout.md
  • packages/coding-agent/.changes/oneiron-attach-cancellation-client.md
  • packages/coding-agent/.changes/oneiron-factory-command-runner.md
  • packages/coding-agent/.changes/oneiron-factory-continuation.md
  • packages/coding-agent/.changes/oneiron-factory-management.md
  • packages/coding-agent/.changes/oneiron-startup-scheduled-wake.md
  • packages/coding-agent/.changes/pending-open-ownership.md
  • packages/coding-agent/.changes/perf-bounded-python-lifecycle.md
  • packages/coding-agent/.changes/perf-child-summary-refresh.md
  • packages/coding-agent/.changes/pinned-first-saved-catalog.md
  • packages/coding-agent/.changes/post-compaction-idle.md
  • packages/coding-agent/.changes/pr-858-profile-rehydrate.md
  • packages/coding-agent/.changes/prefer-bash-skill.md
  • packages/coding-agent/.changes/protocol-frame-repair.md
  • packages/coding-agent/.changes/relay-hygiene.md
  • packages/coding-agent/.changes/remote-message-single-send.md
  • packages/coding-agent/.changes/remove-config-cache-reset.md
  • packages/coding-agent/.changes/remove-daemon-lookup-fake.md
  • packages/coding-agent/.changes/remove-empty-selector-timers.md
  • packages/coding-agent/.changes/remove-test-telemetry-branch.md
  • packages/coding-agent/.changes/remove-unused-kernel-seams.md
  • packages/coding-agent/.changes/repl-01-bash-tool.md
  • packages/coding-agent/.changes/repl-03-host-swap.md
  • packages/coding-agent/.changes/repl-04-cutover.md
  • packages/coding-agent/.changes/res-1252-roster-activity-republish.md
  • packages/coding-agent/.changes/res-1253-busy-descendant-indicator.md
  • packages/coding-agent/.changes/res-1258-agents-view-costs.md
  • packages/coding-agent/.changes/res-1261-semantic-edges-producer-fixes.md
  • packages/coding-agent/.changes/res-1265-rlm-cancel-subtree-iterator.md
  • packages/coding-agent/.changes/res-1272-coalesced-bookkeeping-appends.md
  • packages/coding-agent/.changes/rlm-activity-change-waiter.md
  • packages/coding-agent/.changes/rlm-child-snapshot.md
  • packages/coding-agent/.changes/rlm-scaling.md
  • packages/coding-agent/.changes/session-path-predicate.md
  • packages/coding-agent/.changes/single-kernel-shutdown.md
  • packages/coding-agent/.changes/snimu-tui-queue-single-source.md
  • packages/coding-agent/.changes/supervised-rename-authority.md
  • packages/coding-agent/.changes/test-only-parser-hints.md
  • packages/coding-agent/.changes/timezone-stable-process-identity.md
  • packages/coding-agent/.changes/use-message-count.md
  • packages/coding-agent/.changes/vouch-sirouk.md
  • packages/coding-agent/CHANGELOG.md
  • packages/coding-agent/docs/factory-command-runner.md
  • packages/coding-agent/docs/factory-continuation.md
  • packages/coding-agent/docs/factory-oneiron-writer.md
  • packages/coding-agent/docs/factory-oneiron.md
  • packages/coding-agent/docs/factory.md
  • packages/coding-agent/docs/json.md
  • packages/coding-agent/examples/extensions/custom-provider-anthropic/package.json
  • packages/coding-agent/examples/extensions/custom-provider-gitlab-duo/package.json
  • packages/coding-agent/examples/extensions/sandbox/package.json
  • packages/coding-agent/examples/extensions/with-deps/package.json
  • packages/coding-agent/package.json
  • packages/coding-agent/scripts/bundle.mjs
  • packages/coding-agent/src/cli.ts
  • packages/coding-agent/src/cli/args.ts
  • packages/coding-agent/src/cli/command-registry.ts
  • packages/coding-agent/src/cli/factory-launch.ts
  • packages/coding-agent/src/core/agent-session-runtime.ts
  • packages/coding-agent/src/core/agent-session-services.ts
  • packages/coding-agent/src/core/agent-session.ts
  • packages/coding-agent/src/core/agent-traces.ts
  • packages/coding-agent/src/core/compaction/branch-summarization.ts
  • packages/coding-agent/src/core/compaction/compaction.ts
  • packages/coding-agent/src/core/compaction/deep-compaction.ts
  • packages/coding-agent/src/core/compaction/index.ts
  • packages/coding-agent/src/core/context-tree.ts
  • packages/coding-agent/src/core/event-log.ts
  • packages/coding-agent/src/core/kernel/bootstrap.ts
  • packages/coding-agent/src/core/kernel/repl-manager.ts
  • packages/coding-agent/src/core/kernel/shared.ts
  • packages/coding-agent/src/core/mcp/mcp-manager.ts
  • packages/coding-agent/src/core/rlm-runtime.ts
  • packages/coding-agent/src/core/sdk.ts
  • packages/coding-agent/src/core/semantic-edges.ts
  • packages/coding-agent/src/core/session-action-store.ts
  • packages/coding-agent/src/core/session-lease.ts
  • packages/coding-agent/src/core/session-list-priority.ts
  • packages/coding-agent/src/core/session-manager.ts
  • packages/coding-agent/src/core/side-question.ts
  • packages/coding-agent/src/core/tools/acp-mcp.ts
  • packages/coding-agent/src/core/tools/index.ts
  • packages/coding-agent/src/core/tools/ipython.ts
  • packages/coding-agent/src/core/usage.ts
  • packages/coding-agent/src/factory/adapters/command-runner-source.ts
  • packages/coding-agent/src/factory/adapters/command.ts
  • packages/coding-agent/src/factory/adapters/oneiron-capture.ts
  • packages/coding-agent/src/factory/adapters/oneiron-continuation-entry.ts
  • packages/coding-agent/src/factory/adapters/oneiron-continuation.ts
  • packages/coding-agent/src/factory/adapters/oneiron-corpus-foreground.py
  • packages/coding-agent/src/factory/adapters/oneiron-docs-gate.ts
  • packages/coding-agent/src/factory/adapters/oneiron-entry.ts
  • packages/coding-agent/src/factory/adapters/oneiron-interlock.ts
  • packages/coding-agent/src/factory/adapters/oneiron-publication.ts
  • packages/coding-agent/src/factory/adapters/oneiron-push-guard.py
  • packages/coding-agent/src/factory/adapters/oneiron-review.ts
  • packages/coding-agent/src/factory/adapters/oneiron-transport.ts
  • packages/coding-agent/src/factory/adapters/oneiron-writer.ts
  • packages/coding-agent/src/factory/adapters/oneiron.ts
  • packages/coding-agent/src/factory/adapters/prime-management.ts
  • packages/coding-agent/src/factory/cli-entry.ts
  • packages/coding-agent/src/factory/cli.ts
  • packages/coding-agent/src/factory/config.ts
  • packages/coding-agent/src/factory/engine.ts
  • packages/coding-agent/src/factory/evidence.ts
  • packages/coding-agent/src/factory/help.ts
  • packages/coding-agent/src/factory/manage-entry.ts
  • packages/coding-agent/src/factory/management-dispatch.ts
  • packages/coding-agent/src/factory/management-recovery.ts
  • packages/coding-agent/src/factory/management.ts
  • packages/coding-agent/src/factory/parent.ts
  • packages/coding-agent/src/factory/runtime.ts
  • packages/coding-agent/src/factory/store.ts
  • packages/coding-agent/src/factory/types.ts
  • packages/coding-agent/src/main.ts
  • packages/coding-agent/src/modes/agent-connection/daemon-agent-connection.ts
  • packages/coding-agent/src/modes/agent-connection/in-process-agent-connection.ts
  • packages/coding-agent/src/modes/agent-connection/types.ts
  • packages/coding-agent/src/modes/agents-view/agents-view-mode.ts
  • packages/coding-agent/src/modes/agents-view/agents-view-state.ts
  • packages/coding-agent/src/modes/agents-view/session-view-search.ts
  • packages/coding-agent/src/modes/agents-view/shared-saved-catalog.ts
  • packages/coding-agent/src/modes/daemon/agent-roster.ts
  • packages/coding-agent/src/modes/daemon/attach-wait.ts
  • packages/coding-agent/src/modes/daemon/daemon-catalog-process.ts
  • packages/coding-agent/src/modes/daemon/daemon-client.ts
  • packages/coding-agent/src/modes/daemon/daemon-mode.ts
  • packages/coding-agent/src/modes/daemon/daemon-protocol.ts
  • packages/coding-agent/src/modes/daemon/daemon-session-list.ts
  • packages/coding-agent/src/modes/daemon/daemon-session-summarizer.ts
  • packages/coding-agent/src/modes/daemon/daemon-supervisor.ts
  • packages/coding-agent/src/modes/daemon/daemon-worker-client.ts
  • packages/coding-agent/src/modes/daemon/heartbeat-catalog.ts
  • packages/coding-agent/src/modes/daemon/rlm-ledger.ts
  • packages/coding-agent/src/modes/daemon/saved-session-info.ts
  • packages/coding-agent/src/modes/daemon/snapshot-transcript-cache.ts
  • packages/coding-agent/src/modes/index.ts
  • packages/coding-agent/src/modes/interactive/components/ipython-cell.ts
  • packages/coding-agent/src/modes/interactive/components/subagent-summary-line.ts
  • packages/coding-agent/src/modes/interactive/interactive-mode.ts
  • packages/coding-agent/src/modes/print-mode.ts
  • packages/coding-agent/test/agent-roster.test.ts
  • packages/coding-agent/test/agent-session-concurrent.test.ts
  • packages/coding-agent/test/agent-session-lazy-kernel-restore.test.ts
  • packages/coding-agent/test/agent-session-recursion.test.ts
  • packages/coding-agent/test/agent-session-semantic-edges.test.ts
  • packages/coding-agent/test/agent-session-services.test.ts
  • packages/coding-agent/test/agent-traces.test.ts
  • packages/coding-agent/test/agents-view-catalog-navigation.test.ts
  • packages/coding-agent/test/agents-view-catalog-refresh.test.ts
  • packages/coding-agent/test/agents-view-inactive-reply.test.ts
  • packages/coding-agent/test/agents-view-mode.test.ts
  • packages/coding-agent/test/agents-view-prepared-search.test.ts
  • packages/coding-agent/test/agents-view-progressive-batch.test.ts
  • packages/coding-agent/test/agents-view-search-freeze-repro.test.ts
  • packages/coding-agent/test/agents-view-state.test.ts
  • packages/coding-agent/test/compaction-deep.test.ts
  • packages/coding-agent/test/compaction-wire-accounting.test.ts
  • packages/coding-agent/test/daemon-agent-roster.test.ts
  • packages/coding-agent/test/daemon-attach-cancellation.test.ts
  • packages/coding-agent/test/daemon-client.test.ts
  • packages/coding-agent/test/daemon-mode.test.ts
  • packages/coding-agent/test/daemon-passive-topology.test.ts
  • packages/coding-agent/test/daemon-peer-transport.test.ts
  • packages/coding-agent/test/daemon-protocol.test.ts
  • packages/coding-agent/test/daemon-session-list.test.ts
  • packages/coding-agent/test/daemon-session-summarizer-lifecycle.test.ts
  • packages/coding-agent/test/daemon-session-summarizer.test.ts
  • packages/coding-agent/test/daemon-supervisor-attach-cancellation.test.ts
  • packages/coding-agent/test/daemon-supervisor-eviction.test.ts
  • packages/coding-agent/test/daemon-supervisor-scheduled-wake-singleflight.test.ts
  • packages/coding-agent/test/daemon-worker-attach-cancellation.test.ts
  • packages/coding-agent/test/daemon-worker-client-attach-cancellation.test.ts
  • packages/coding-agent/test/event-log.test.ts
  • packages/coding-agent/test/factory-cli.test.ts
  • packages/coding-agent/test/factory-command-adapter.test.ts
  • packages/coding-agent/test/factory-command-environment.test.ts
  • packages/coding-agent/test/factory-core.test.ts
  • packages/coding-agent/test/factory-json-event-profile.test.ts
  • packages/coding-agent/test/factory-json-events-cli.test.ts
  • packages/coding-agent/test/factory-management-dispatch.test.ts
  • packages/coding-agent/test/factory-management-recovery.test.ts
  • packages/coding-agent/test/factory-management.test.ts
  • packages/coding-agent/test/factory-oneiron-capture.test.ts
  • packages/coding-agent/test/factory-oneiron-continuation.test.ts
  • packages/coding-agent/test/factory-oneiron-corpus.test.ts
  • packages/coding-agent/test/factory-oneiron-docs-gate.test.ts
  • packages/coding-agent/test/factory-oneiron-evidence.test.ts
  • packages/coding-agent/test/factory-oneiron-interlock.test.ts
  • packages/coding-agent/test/factory-oneiron-native-docs.test.ts
  • packages/coding-agent/test/factory-oneiron-publication.test.ts
  • packages/coding-agent/test/factory-oneiron-review.test.ts
  • packages/coding-agent/test/factory-oneiron-reviewed-head.test.ts
  • packages/coding-agent/test/factory-oneiron-seam.test.ts
  • packages/coding-agent/test/factory-oneiron-transport.test.ts
  • packages/coding-agent/test/factory-oneiron-writer-runner.test.ts
  • packages/coding-agent/test/factory-oneiron-writer.test.ts
  • packages/coding-agent/test/factory-oneiron.test.ts
  • packages/coding-agent/test/factory-owned-runtime.test.ts
  • packages/coding-agent/test/factory-package-assets.test.ts
  • packages/coding-agent/test/factory-prime-management.test.ts
  • packages/coding-agent/test/factory-provider-provenance-seam.test.ts
  • packages/coding-agent/test/fixtures/factory-json-events-cli-fixture.ts
  • packages/coding-agent/test/fixtures/factory-oneiron/pr855-review-extract.json
  • packages/coding-agent/test/helpers/passive-topology-fixture.ts
  • packages/coding-agent/test/interactive-heartbeat-management.test.ts
  • packages/coding-agent/test/interactive-mode-child-refresh.test.ts
  • packages/coding-agent/test/interactive-mode-children-scaling.test.ts
  • packages/coding-agent/test/interactive-mode-heartbeat-startup.test.ts
  • packages/coding-agent/test/interactive-mode-status.test.ts
  • packages/coding-agent/test/interactive-update-relaunch.test.ts
  • packages/coding-agent/test/ipython-provisioner.test.ts
  • packages/coding-agent/test/kernel-bootstrap-deadlines.test.ts
  • packages/coding-agent/test/main-interactive-routing.test.ts
  • packages/coding-agent/test/mcp-manager.test.ts
  • packages/coding-agent/test/repl-kernel-deadlines.test.ts
  • packages/coding-agent/test/repl-kernel-shutdown.test.ts
  • packages/coding-agent/test/repl-kernel-startup.test.ts
  • packages/coding-agent/test/rlm-ledger.test.ts
  • packages/coding-agent/test/rlm-scaling-bench.ts
  • packages/coding-agent/test/semantic-edges.test.ts
  • packages/coding-agent/test/session-action-store.test.ts
  • packages/coding-agent/test/session-info-cache-identity.test.ts
  • packages/coding-agent/test/session-manager-flush.test.ts
  • packages/coding-agent/test/session-manager/file-operations.test.ts
  • packages/coding-agent/test/session-manager/pinned-loading.test.ts
  • packages/coding-agent/test/shared-saved-catalog.test.ts
  • packages/coding-agent/test/subagent-summary-line.test.ts
  • packages/coding-agent/test/suite/agent-session-compaction.test.ts
  • packages/coding-agent/test/suite/agent-session-runtime.test.ts
  • packages/coding-agent/test/suite/regressions/1820-factory-fingerprint-timeout.test.ts
  • packages/coding-agent/test/suite/regressions/2002-acp-mcp-native-tools.test.ts
  • packages/coding-agent/test/suite/regressions/4531-agent-message-ui.test.ts
  • packages/coding-agent/test/suite/regressions/4602-snapshot-transfer-idempotency.test.ts
  • packages/coding-agent/test/suite/regressions/4677-snapshot-catchup-replacement.test.ts
  • packages/coding-agent/test/suite/regressions/502-unified-session-view.test.ts
  • packages/coding-agent/test/suite/regressions/858-daemon-profile-rehydrate.test.ts
  • packages/coding-agent/test/suite/regressions/858-sdk-profile-rehydrate.test.ts
  • packages/coding-agent/test/suite/regressions/879-timezone-stable-process-identity.test.ts
  • packages/tui/.changes/markdown-transform-hook.md
  • packages/tui/CHANGELOG.md
  • packages/tui/package.json
  • scripts/check-installer.mjs

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


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

@qodo-code-review

Copy link
Copy Markdown

PR Summary by Qodo

Bound factory fingerprint timeout via CLI

🐞 Bug fix ✨ Enhancement 🧪 Tests 📝 Documentation 🕐 20-40 Minutes

Grey Divider

AI Description

• Adds a fingerprint-only timeout override bounded from 1 to 120000 milliseconds.
• Preserves the existing 20-second default and launch/inspect transport deadlines.
• Covers validation, timeout behavior, SSH transport, and native Git fingerprint integrity.
Diagram

graph TD
  CLI["Factory CLI"] --> Validate["Timeout Validation"] --> Fingerprint["Fingerprint Command"] --> Transport["Host Transport"] --> Local["Local Runner"]
  Transport --> SSH["SSH Runner"]
Loading
High-Level Assessment

The narrow fingerprint-specific override is preferable to generalizing the public host transport timeout. It preserves the intentionally fixed launch/inspect deadline and uncertainty semantics while solving slow repository fingerprinting with explicit bounds and no native runner changes.

Files changed (5) +778 / -0

Enhancement (1) +239 / -0
cli.tsParse fingerprint-only timeout option +239/-0

Parse fingerprint-only timeout option

• Accepts '--timeout-ms', rejects missing or repeated values, and forwards it to fingerprint execution. Use with every non-fingerprint factory command is rejected before factory state is accessed.

packages/coding-agent/src/factory/cli.ts

Bug fix (1) +201 / -0
command.tsApply validated deadlines to fingerprint transport +201/-0

Apply validated deadlines to fingerprint transport

• Extends 'fingerprintCommand' with a 20-second default timeout and validates explicit values as safe integers from 1 through 120000. The deadline is passed only to fingerprint transport, leaving launch and inspect behavior unchanged.

packages/coding-agent/src/factory/adapters/command.ts

Tests (1) +293 / -0
1820-factory-fingerprint-timeout.test.tsCover bounded fingerprint timeout regression +293/-0

Cover bounded fingerprint timeout regression

• Adds focused coverage for default and explicit deadlines, invalid CLI and adapter values, timeout failures, and non-fingerprint rejection. It also verifies SSH propagation and byte-equivalent native Git fingerprints for conflicted, binary, untracked, and symlinked worktrees.

packages/coding-agent/test/suite/regressions/1820-factory-fingerprint-timeout.test.ts

Documentation (2) +45 / -0
one-1820-fingerprint-timeout.mdDocument bounded fingerprint timeout support +1/-0

Document bounded fingerprint timeout support

• Adds the release-note entry for the fingerprint-only timeout option, its bounds, unchanged default, and retained native Git verification.

packages/coding-agent/.changes/one-1820-fingerprint-timeout.md

help.tsDescribe fingerprint timeout bounds and defaults +44/-0

Describe fingerprint timeout bounds and defaults

• Updates factory usage and guidance with the optional timeout syntax, valid range, 20-second default, and unchanged launch/inspect deadlines.

packages/coding-agent/src/factory/help.ts

@qodo-code-review

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (13) 📜 Skill insights (0)

Grey Divider


Remediation recommended

1. Public compaction loses type safety 📘 Rule violation ⚙ Maintainability
Description
summaryRequestByteLimit is newly exported with its model parameter still declared as Model<any>
and no documented escape hatch. Callers can now reach this internal helper through an unchecked
generic boundary, allowing incompatible model payload types to escape compiler validation.
Code

packages/coding-agent/src/core/compaction/compaction.ts[651]

+export function summaryRequestByteLimit(model: Model<any>, reserveTokens: number, maxTokens: number): number {
Evidence
Rule 2918941 prohibits ordinary any annotations without an immediately preceding, justified escape
marker. The changed exported declaration uses Model<any>, while its preceding comment only
documents API visibility.

Rule 2918941: Avoid any type in TypeScript except in explicitly documented escape hatches
packages/coding-agent/src/core/compaction/compaction.ts[650-651]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The newly exported compaction helper uses `Model<any>` without a documented escape hatch.

## Issue Context
Use a concrete model payload type, `unknown`, or a constrained generic so callers retain type checking.

## Fix Focus Areas
- packages/coding-agent/src/core/compaction/compaction.ts[650-651]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


2. Resumed compaction loses type safety 📘 Rule violation ⚙ Maintainability
Description
DeepRunIdentity.model is declared as Model<any> without an escape marker or justification. Every
cached or resumed deep-compaction identity passes through this property, so incompatible model
payload types are not checked at that boundary.
Code

packages/coding-agent/src/core/compaction/deep-compaction.ts[99]

+	model: Model<any>;
Evidence
Rule 2918941 requires a narrowly scoped and immediately documented exception for every use of any.
The added identity property uses Model<any> with no such documentation.

Rule 2918941: Avoid any type in TypeScript except in explicitly documented escape hatches
packages/coding-agent/src/core/compaction/deep-compaction.ts[93-103]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The deep-compaction run identity uses an undocumented `any` generic.

## Issue Context
Replace it with a concrete type, `unknown`, or a constrained generic shared with the surrounding compaction APIs.

## Fix Focus Areas
- packages/coding-agent/src/core/compaction/deep-compaction.ts[93-103]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


3. Session tests bypass type safety 📘 Rule violation ⚙ Maintainability
Description
The semantic-edge tests type extension callbacks and their event payloads as any at two separate
setup sites without escape comments. These callbacks exercise provider-request and compaction hooks,
leaving changes to both hook contracts unchecked by the compiler.
Code

packages/coding-agent/test/agent-session-semantic-edges.test.ts[R279-280]

+				(pi: any) => {
+					pi.on("before_provider_request", async (payload: any) => payload);
Evidence
Rule 2918941 applies to changed TypeScript test files as well as application files. Both added
callback sites annotate parameters with any and neither is preceded by the required justified
marker.

Rule 2918941: Avoid any type in TypeScript except in explicitly documented escape hatches
packages/coding-agent/test/agent-session-semantic-edges.test.ts[279-280]
packages/coding-agent/test/agent-session-semantic-edges.test.ts[569-570]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Two semantic-edge test callbacks use undocumented `any` parameters.

## Issue Context
Use the extension registration and hook payload types already exposed by the application, or infer them through a typed callback.

## Fix Focus Areas
- packages/coding-agent/test/agent-session-semantic-edges.test.ts[279-280]
- packages/coding-agent/test/agent-session-semantic-edges.test.ts[569-570]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


View medium (10)
4. Test artifacts contain forbidden emoji 📘 Rule violation ⚙ Maintainability
Description
factory-oneiron-evidence.test.ts adds the literal 😀 to two generated test payloads. Both UTF-8
boundary tests therefore place an emoji directly in a modified source artifact, even though a
non-emoji multibyte character could exercise the same byte accounting.
Code

packages/coding-agent/test/factory-oneiron-evidence.test.ts[75]

+		const unicode = "😀".repeat(Math.floor(allowance / 4));
Evidence
Rule 2918938 disallows emoji anywhere in modified code or review artifacts. The two added test lines
each contain the literal grinning-face emoji.

Rule 2918938: Disallow emoji characters in code and review artifacts
packages/coding-agent/test/factory-oneiron-evidence.test.ts[75-75]
packages/coding-agent/test/factory-oneiron-evidence.test.ts[174-174]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Two test payloads contain a literal emoji prohibited by the review checklist.

## Issue Context
Preserve the four-byte UTF-8 boundary coverage using escaped code points or non-emoji multibyte test data consistent with the rule.

## Fix Focus Areas
- packages/coding-agent/test/factory-oneiron-evidence.test.ts[75-75]
- packages/coding-agent/test/factory-oneiron-evidence.test.ts[174-174]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


5. AI release history bypasses fragments 📘 Rule violation § Compliance
Description
packages/ai/CHANGELOG.md directly adds the dated 0.9.0 section and its entries instead of
leaving release history unchanged. Because the heading denotes an already released version, the same
edit also changes content inside a protected released section.
Code

packages/ai/CHANGELOG.md[R3-5]

+## [0.9.0] - 2026-09-01
+
+- Refreshed the model catalog from live provider catalogs (pricing updates, new and removed models); fixed OpenCode Go Qwen routes mislabeled as Anthropic and excluded private dev/ Prime Inference routes.
Evidence
Rule 2918943 forbids direct edits to package changelogs, and rule 2918946 protects content under
numeric released-version headings. Lines 3-7 add a dated numeric section and three bullets directly
to the AI changelog.

Rule 2918943: Changelog modifications must be made via fragment files, not direct CHANGELOG edits
Rule 2918946: Do not change already-released version sections in CHANGELOG.md
packages/ai/CHANGELOG.md[3-7]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The AI package changelog is edited directly under a dated released version.

## Issue Context
Restore the changelog and consolidate the relevant unreleased notes into one package fragment; release automation should consume it later.

## Fix Focus Areas
- packages/ai/CHANGELOG.md[3-7]
- packages/ai/.changes/oneiron-compact-request-identity.md[1-1]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


6. Agent release history bypasses fragments 📘 Rule violation § Compliance
Description
packages/coding-agent/CHANGELOG.md replaces Unreleased with the dated 0.9.1 heading and
directly adds entries beneath 0.9.1 and 0.9.0. This converts pending history into a released
section and extends another released section across dozens of added lines.
Code

packages/coding-agent/CHANGELOG.md[R3-5]

+## [0.9.1] - 2026-09-01
+
+- Fixed a v0.9.0 regression: the agents view's Inactive section was empty on a fresh view until a search was typed. The saved-session catalog now loads (progressively) when the view opens; it was previously deferred to search because the roster's boot seed carried the saved corpus, which the seed scoping removed.
Evidence
Rule 2918943 requires package changelog changes to flow through fragments, while rule 2918946 bars
edits under numeric released headings. The diff replaces Unreleased with dated 0.9.1, adds a
bullet there, and appends many bullets under 0.9.0.

Rule 2918943: Changelog modifications must be made via fragment files, not direct CHANGELOG edits
Rule 2918946: Do not change already-released version sections in CHANGELOG.md
packages/coding-agent/CHANGELOG.md[3-7]
packages/coding-agent/CHANGELOG.md[38-97]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The coding-agent changelog is directly converted and extended under released version headings.

## Issue Context
Restore the unreleased heading and released sections, then retain the applicable notes in one consolidated package fragment.

## Fix Focus Areas
- packages/coding-agent/CHANGELOG.md[3-7]
- packages/coding-agent/CHANGELOG.md[38-97]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


7. Interface release history skips fragments 📘 Rule violation § Compliance
Description
packages/tui/CHANGELOG.md directly adds a dated 0.9.0 section and change entry. The edit writes
into a numeric released section while deleting the package fragment that previously held the entry.
Code

packages/tui/CHANGELOG.md[R3-5]

+## [0.9.0] - 2026-09-01
+
+- Add an optional `transform` hook to `Markdown` so callers can rewrite markdown with the exact content width before rendering.
Evidence
Rules 2918943 and 2918946 prohibit this direct addition under a dated numeric release heading. The
related fragment is deleted in the same diff rather than remaining the source of the unreleased
note.

Rule 2918943: Changelog modifications must be made via fragment files, not direct CHANGELOG edits
Rule 2918946: Do not change already-released version sections in CHANGELOG.md
packages/tui/CHANGELOG.md[3-5]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The interface package changelog is edited directly and its fragment is deleted.

## Issue Context
Restore the changelog and keep the change as a fragment until release automation processes it.

## Fix Focus Areas
- packages/tui/CHANGELOG.md[3-5]
- packages/tui/.changes/markdown-transform-hook.md[1-1]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


8. AI changes split across fragments 📘 Rule violation § Compliance
Description
The AI package changes include separate new fragments such as oneiron-compact-request-identity.md
and res-1269-refresh-model-catalog.md. When both are present in one PR, package release notes are
distributed across more than the permitted single fragment.
Code

packages/ai/.changes/oneiron-compact-request-identity.md[1]

+- Fixed unary Responses compaction to preserve caller request identifiers over session affinity regardless of header casing.
Evidence
Rule 2918945 permits at most one changed fragment per package per PR. These citations demonstrate
two distinct added fragment files for packages/ai, with additional AI fragment changes also
present in the diff.

Rule 2918945: One changelog fragment per package per PR
packages/ai/.changes/oneiron-compact-request-identity.md[1-1]
packages/ai/.changes/res-1269-refresh-model-catalog.md[1-1]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The AI package has multiple added changelog fragments in one PR.

## Issue Context
Combine all applicable AI release-note bullets into one kebab-case fragment and remove the redundant fragments.

## Fix Focus Areas
- packages/ai/.changes/oneiron-compact-request-identity.md[1-1]
- packages/ai/.changes/res-1269-refresh-model-catalog.md[1-1]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


9. Agent changes split across fragments 📘 Rule violation § Compliance
Description
The coding-agent package adds separate fragments for the fingerprint timeout, semantic-edge
producer, and many other changes. These concurrently changed files distribute one package's release
notes across far more than the permitted single fragment.
Code

packages/coding-agent/.changes/one-1820-fingerprint-timeout.md[1]

+- Added a fingerprint-only `--timeout-ms` option bounded to 1–120000 ms, retaining the 20000 ms default and native Git source verification.
Evidence
Rule 2918945 allows only one fragment per touched package. The cited files are three distinct added
fragments under the same coding-agent package, and the diff contains many more.

Rule 2918945: One changelog fragment per package per PR
packages/coding-agent/.changes/one-1820-fingerprint-timeout.md[1-1]
packages/coding-agent/.changes/acp-semantic-edges-producer.md[1-1]
packages/coding-agent/.changes/acp-semantic-edges-delivery.md[1-1]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The coding-agent package has numerous changelog fragments in the same PR.

## Issue Context
Consolidate applicable coding-agent notes into one fragment, preserving separate bullet lines within that file.

## Fix Focus Areas
- packages/coding-agent/.changes/one-1820-fingerprint-timeout.md[1-1]
- packages/coding-agent/.changes/acp-semantic-edges-producer.md[1-1]
- packages/coding-agent/.changes/acp-semantic-edges-delivery.md[1-1]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


10. A fragment breaks the required format 📘 Rule violation ⚙ Maintainability
Description
factory-triage-reviewed-head.md uses YAML front matter followed by an unbulleted prose paragraph
rather than flat dash bullets. Release-note processing of this changed fragment therefore encounters
metadata and prose outside the checklist's accepted entry structure.
Code

packages/coding-agent/.changes/factory-triage-reviewed-head.md[R1-3]

+---
+"@earendil-works/pi-coding-agent": patch
+---
Evidence
Rule 2918948 requires changed changelog entries to be flat dash bullets with approved past-tense
prefixes. This fragment starts with YAML delimiters and package metadata, then places its change
text on a plain paragraph at line 5.

Rule 2918948: Changelog entries use flat dash bullets with past-tense verb prefixes
packages/coding-agent/.changes/factory-triage-reviewed-head.md[1-5]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The fragment contains YAML metadata and an unbulleted paragraph.

## Issue Context
Remove the front matter and express each user-visible change as its own `- Added`, `- Changed`, `- Fixed`, or `- Removed` line.

## Fix Focus Areas
- packages/coding-agent/.changes/factory-triage-reviewed-head.md[1-5]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


11. AI release notes use a wrong verb 📘 Rule violation ⚙ Maintainability
Description
res-1269-refresh-model-catalog.md begins its bullet with Refreshed, which is outside the allowed
Added, Changed, Fixed, or Removed prefixes. The same line also combines catalog additions,
removals, and test-model updates into one entry rather than keeping distinct changes separate.
Code

packages/ai/.changes/res-1269-refresh-model-catalog.md[1]

+- Refreshed the generated model catalog from live provider sources: 41 models added (including claude-fable-5.1, gemini-3.8-flash, and GLM-5.3 across providers) and 17 removed; GitHub Copilot tests now use claude-sonnet-4.6 and gpt-5.3-codex for the models Copilot dropped.
Evidence
Rule 2918948 limits prefixes to four specified verbs and requires each distinct change on its own
line. The added bullet starts with Refreshed and joins model additions, removals, and test
updates.

Rule 2918948: Changelog entries use flat dash bullets with past-tense verb prefixes
packages/ai/.changes/res-1269-refresh-model-catalog.md[1-1]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The AI fragment uses an unapproved verb and combines several changes.

## Issue Context
Split distinct user-visible outcomes into separate flat bullets beginning with allowed past-tense prefixes.

## Fix Focus Areas
- packages/ai/.changes/res-1269-refresh-model-catalog.md[1-1]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


12. Agent notes expose internal mechanics 📘 Rule violation ⚙ Maintainability
Description
Several coding-agent fragments begin with unapproved verbs such as Registered and Extracted
while describing ledgers, cursors, append flags, replay, and other implementation details. These
entries surface when release notes are assembled, where they neither use the accepted prefixes nor
state a concise user-visible outcome.
Code

packages/coding-agent/.changes/acp-semantic-edges-delivery.md[1]

+- Registered the per-session semantic-edge ledger with the agent-traces outbox as its own kind-tagged entry: durable upload intent at persist, an append-only byte cursor that never re-counts unchanged ledgers, startup catch-up counting, and pruning when a ledger is deleted with its session. No delivery endpoint exists yet, so pending ledgers are counted but never sent.
Evidence
Rule 2918948 requires approved past-tense prefixes and user-visible wording. The cited entries start
with Registered and Extracted and focus on internal storage, cursor, fsync, and replay
mechanics.

Rule 2918948: Changelog entries use flat dash bullets with past-tense verb prefixes
packages/coding-agent/.changes/acp-semantic-edges-delivery.md[1-1]
packages/coding-agent/.changes/event-log-substrate.md[1-1]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Multiple coding-agent fragments use unsupported verbs and implementation-focused wording.

## Issue Context
Rewrite each applicable entry as a concise user-visible result prefixed by `Added`, `Changed`, `Fixed`, or `Removed`.

## Fix Focus Areas
- packages/coding-agent/.changes/acp-semantic-edges-delivery.md[1-1]
- packages/coding-agent/.changes/event-log-substrate.md[1-1]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


13. Interface notes use present tense 📘 Rule violation ⚙ Maintainability
Description
The new TUI changelog bullet starts with Add instead of the allowed past-tense prefix Added. It
appears under the directly added 0.9.0 section, so generated release notes retain the
nonconforming verb.
Code

packages/tui/CHANGELOG.md[5]

+- Add an optional `transform` hook to `Markdown` so callers can rewrite markdown with the exact content width before rendering.
Evidence
Rule 2918948 requires each changed bullet to begin with Added, Changed, Fixed, or Removed.
The added TUI bullet instead begins with Add.

Rule 2918948: Changelog entries use flat dash bullets with past-tense verb prefixes
packages/tui/CHANGELOG.md[5-5]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The interface changelog entry starts with present-tense `Add`.

## Issue Context
If retained in a fragment, rewrite it as a flat bullet beginning with `Added` and describe the caller-visible outcome.

## Fix Focus Areas
- packages/tui/CHANGELOG.md[5-5]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Context sources
✅ Compliance rules (platform): 9 rules
✅ REVIEW.md
Review mode: 🧠 Deep: Despite the focused timeout goal, the PR contains substantial new logic across many independent factory, CLI, daemon, runtime, and test paths, creating a high density of potentially easy-to-miss defects.

Grey Divider

Tip of the day
💡 Did you know, you can copy the agent prompt from any finding and feed it to your IDE agent

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Qodo Logo


function summaryRequestByteLimit(model: Model<any>, reserveTokens: number, maxTokens: number): number {
/** @internal Shared with deep compaction; not part of the public compaction surface. */
export function summaryRequestByteLimit(model: Model<any>, reserveTokens: number, maxTokens: number): number {

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Remediation recommended

1. Public compaction loses type safety 📘 Rule violation ⚙ Maintainability

summaryRequestByteLimit is newly exported with its model parameter still declared as Model<any>
and no documented escape hatch. Callers can now reach this internal helper through an unchecked
generic boundary, allowing incompatible model payload types to escape compiler validation.
Agent Prompt
## Issue description
The newly exported compaction helper uses `Model<any>` without a documented escape hatch.

## Issue Context
Use a concrete model payload type, `unknown`, or a constrained generic so callers retain type checking.

## Fix Focus Areas
- packages/coding-agent/src/core/compaction/compaction.ts[650-651]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

firstKeptEntryId: string;
previousSummary: string | undefined;
chunkDigests: readonly string[];
model: Model<any>;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Remediation recommended

2. Resumed compaction loses type safety 📘 Rule violation ⚙ Maintainability

DeepRunIdentity.model is declared as Model<any> without an escape marker or justification. Every
cached or resumed deep-compaction identity passes through this property, so incompatible model
payload types are not checked at that boundary.
Agent Prompt
## Issue description
The deep-compaction run identity uses an undocumented `any` generic.

## Issue Context
Replace it with a concrete type, `unknown`, or a constrained generic shared with the surrounding compaction APIs.

## Fix Focus Areas
- packages/coding-agent/src/core/compaction/deep-compaction.ts[93-103]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment on lines +279 to +280
(pi: any) => {
pi.on("before_provider_request", async (payload: any) => payload);

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Remediation recommended

3. Session tests bypass type safety 📘 Rule violation ⚙ Maintainability

The semantic-edge tests type extension callbacks and their event payloads as any at two separate
setup sites without escape comments. These callbacks exercise provider-request and compaction hooks,
leaving changes to both hook contracts unchecked by the compiler.
Agent Prompt
## Issue description
Two semantic-edge test callbacks use undocumented `any` parameters.

## Issue Context
Use the extension registration and hook payload types already exposed by the application, or infer them through a typed callback.

## Fix Focus Areas
- packages/coding-agent/test/agent-session-semantic-edges.test.ts[279-280]
- packages/coding-agent/test/agent-session-semantic-edges.test.ts[569-570]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

const f = fixture();
const receiptBytes = Buffer.byteLength(readFileSync(f.packet.receipt!.path, "utf8"));
const allowance = FACTORY_EVIDENCE_LIMITS.contentBytes - receiptBytes;
const unicode = "😀".repeat(Math.floor(allowance / 4));

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Remediation recommended

4. Test artifacts contain forbidden emoji 📘 Rule violation ⚙ Maintainability

factory-oneiron-evidence.test.ts adds the literal 😀 to two generated test payloads. Both UTF-8
boundary tests therefore place an emoji directly in a modified source artifact, even though a
non-emoji multibyte character could exercise the same byte accounting.
Agent Prompt
## Issue description
Two test payloads contain a literal emoji prohibited by the review checklist.

## Issue Context
Preserve the four-byte UTF-8 boundary coverage using escaped code points or non-emoji multibyte test data consistent with the rule.

## Fix Focus Areas
- packages/coding-agent/test/factory-oneiron-evidence.test.ts[75-75]
- packages/coding-agent/test/factory-oneiron-evidence.test.ts[174-174]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment thread packages/ai/CHANGELOG.md
Comment on lines +3 to +5
## [0.9.0] - 2026-09-01

- Refreshed the model catalog from live provider catalogs (pricing updates, new and removed models); fixed OpenCode Go Qwen routes mislabeled as Anthropic and excluded private dev/ Prime Inference routes.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Remediation recommended

5. Ai release history bypasses fragments 📘 Rule violation § Compliance

packages/ai/CHANGELOG.md directly adds the dated 0.9.0 section and its entries instead of
leaving release history unchanged. Because the heading denotes an already released version, the same
edit also changes content inside a protected released section.
Agent Prompt
## Issue description
The AI package changelog is edited directly under a dated released version.

## Issue Context
Restore the changelog and consolidate the relevant unreleased notes into one package fragment; release automation should consume it later.

## Fix Focus Areas
- packages/ai/CHANGELOG.md[3-7]
- packages/ai/.changes/oneiron-compact-request-identity.md[1-1]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

@@ -0,0 +1 @@
- Added a fingerprint-only `--timeout-ms` option bounded to 1–120000 ms, retaining the 20000 ms default and native Git source verification.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Remediation recommended

9. Agent changes split across fragments 📘 Rule violation § Compliance

The coding-agent package adds separate fragments for the fingerprint timeout, semantic-edge
producer, and many other changes. These concurrently changed files distribute one package's release
notes across far more than the permitted single fragment.
Agent Prompt
## Issue description
The coding-agent package has numerous changelog fragments in the same PR.

## Issue Context
Consolidate applicable coding-agent notes into one fragment, preserving separate bullet lines within that file.

## Fix Focus Areas
- packages/coding-agent/.changes/one-1820-fingerprint-timeout.md[1-1]
- packages/coding-agent/.changes/acp-semantic-edges-producer.md[1-1]
- packages/coding-agent/.changes/acp-semantic-edges-delivery.md[1-1]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment on lines +1 to +3
---
"@earendil-works/pi-coding-agent": patch
---

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Remediation recommended

10. A fragment breaks the required format 📘 Rule violation ⚙ Maintainability

factory-triage-reviewed-head.md uses YAML front matter followed by an unbulleted prose paragraph
rather than flat dash bullets. Release-note processing of this changed fragment therefore encounters
metadata and prose outside the checklist's accepted entry structure.
Agent Prompt
## Issue description
The fragment contains YAML metadata and an unbulleted paragraph.

## Issue Context
Remove the front matter and express each user-visible change as its own `- Added`, `- Changed`, `- Fixed`, or `- Removed` line.

## Fix Focus Areas
- packages/coding-agent/.changes/factory-triage-reviewed-head.md[1-5]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

@@ -0,0 +1 @@
- Refreshed the generated model catalog from live provider sources: 41 models added (including claude-fable-5.1, gemini-3.8-flash, and GLM-5.3 across providers) and 17 removed; GitHub Copilot tests now use claude-sonnet-4.6 and gpt-5.3-codex for the models Copilot dropped.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Remediation recommended

11. Ai release notes use a wrong verb 📘 Rule violation ⚙ Maintainability

res-1269-refresh-model-catalog.md begins its bullet with Refreshed, which is outside the allowed
Added, Changed, Fixed, or Removed prefixes. The same line also combines catalog additions,
removals, and test-model updates into one entry rather than keeping distinct changes separate.
Agent Prompt
## Issue description
The AI fragment uses an unapproved verb and combines several changes.

## Issue Context
Split distinct user-visible outcomes into separate flat bullets beginning with allowed past-tense prefixes.

## Fix Focus Areas
- packages/ai/.changes/res-1269-refresh-model-catalog.md[1-1]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

@@ -0,0 +1 @@
- Registered the per-session semantic-edge ledger with the agent-traces outbox as its own kind-tagged entry: durable upload intent at persist, an append-only byte cursor that never re-counts unchanged ledgers, startup catch-up counting, and pruning when a ledger is deleted with its session. No delivery endpoint exists yet, so pending ledgers are counted but never sent.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Remediation recommended

12. Agent notes expose internal mechanics 📘 Rule violation ⚙ Maintainability

Several coding-agent fragments begin with unapproved verbs such as Registered and Extracted
while describing ledgers, cursors, append flags, replay, and other implementation details. These
entries surface when release notes are assembled, where they neither use the accepted prefixes nor
state a concise user-visible outcome.
Agent Prompt
## Issue description
Multiple coding-agent fragments use unsupported verbs and implementation-focused wording.

## Issue Context
Rewrite each applicable entry as a concise user-visible result prefixed by `Added`, `Changed`, `Fixed`, or `Removed`.

## Fix Focus Areas
- packages/coding-agent/.changes/acp-semantic-edges-delivery.md[1-1]
- packages/coding-agent/.changes/event-log-substrate.md[1-1]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment thread packages/tui/CHANGELOG.md
@@ -1,5 +1,9 @@
# Changelog

## [0.9.0] - 2026-09-01

- Add an optional `transform` hook to `Markdown` so callers can rewrite markdown with the exact content width before rendering.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Remediation recommended

13. Interface notes use present tense 📘 Rule violation ⚙ Maintainability

The new TUI changelog bullet starts with Add instead of the allowed past-tense prefix Added. It
appears under the directly added 0.9.0 section, so generated release notes retain the
nonconforming verb.
Agent Prompt
## Issue description
The interface changelog entry starts with present-tense `Add`.

## Issue Context
If retained in a fragment, rewrite it as a flat bullet beginning with `Added` and describe the caller-visible outcome.

## Fix Focus Areas
- packages/tui/CHANGELOG.md[5-5]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

@olety
olety changed the base branch from main to base/one1820-native-timeout-b9043d748 September 7, 2026 16:06
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