Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions .agents/pm/chores/pm-github-suxt.toon
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
id: pm-github-suxt
title: Enable governance duplicate-detection advisory mode and adopt pm-cli 2026.7.25
description: "Enable governance.duplicate_detection_mode=advisory so agents filing items get a near-duplicate warning at create time. Bump @unbrained/pm-cli devDependency to ^2026.7.25 (peerDependencies left at >=2026.7.20 as intentionally wider). Advisory mode is non-blocking: appends likely_duplicates warning, never fails a create."
type: Chore
status: closed
priority: 2
tags: []
created_at: "2026-07-25T11:56:35.437Z"
updated_at: "2026-07-25T12:24:45.503Z"
closed_at: "2026-07-25T11:56:43.037Z"
author: pi-agent
resolution: Enabled advisory duplicate detection and bumped pm-cli dependency; advisory is non-blocking by design
expected_result: "Second identical create in a throwaway probe workspace returns warnings array containing likely_duplicates:<first-id>; all repo gates pass"
actual_result: "Observed warning: likely_duplicates:pm-github-x9et. Gates: typecheck=pass, test=168/168 pass, changelog:full=ok, changelog:check=ok"
notes[2]{created_at,author,text}:
"2026-07-25T11:56:42.728Z",pi-agent,"likely_duplicates:pm-github-x9et"
"2026-07-25T12:24:45.503Z",claude-code,"Follow-up fix by orchestrator: the pm config set that enabled advisory mode also silently re-derived validation.parent_reference from the governance preset, discarding the stored warn and tightening it to strict_error. Caught by Greptile on pm-presets#29; reproduced under minimal, default and strict presets; filed upstream pm-cli#710. Restored via pm config set parent_reference_policy warn, which pins governance as custom so the value is authoritative and no future CLI default change can flip it. Verified the promotion materializes this repo's own preset values, so parent_reference is the only behavioural key that changed."
close_reason: Enabled advisory duplicate detection and bumped pm-cli dependency; advisory is non-blocking by design
body: ""
2 changes: 2 additions & 0 deletions .agents/pm/history/_workspace.jsonl
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
{"ts":"2026-07-25T11:54:53.304Z","author":"codex","author_source":"asserted","op":"config:set:governance.duplicate_detection_mode","patch":[{"op":"add","path":"/metadata/id","value":"_workspace"},{"op":"add","path":"/metadata/title","value":"Workspace state"},{"op":"add","path":"/metadata/description","value":"Audited singleton workspace document state."},{"op":"add","path":"/metadata/type","value":"Chore"},{"op":"add","path":"/metadata/status","value":"open"},{"op":"add","path":"/metadata/priority","value":2},{"op":"add","path":"/metadata/tags","value":["workspace-history"]},{"op":"add","path":"/metadata/created_at","value":"2026-07-25T11:54:53.304Z"},{"op":"add","path":"/metadata/updated_at","value":"2026-07-25T11:54:53.304Z"},{"op":"add","path":"/metadata/documents","value":{"settings.json":{"version":1,"id_prefix":"pm-github-","ids":{"token_length":4},"author_default":"codex","mutation_guard":{"require_attributed_author":false,"secret_guard":"advise","stale_in_progress_hours":72},"item_format":"toon","locks":{"ttl_seconds":1800,"wait_ms":3000},"checkpoints":{"retention_days":14},"output":{"default_format":"toon"},"history":{"missing_stream":"auto_create","compact_policy":{"enabled":false,"max_entries":500,"trigger":"health_warn"}},"validation":{"sprint_release_format":"warn","parent_reference":"strict_error","metadata_profile":"core","metadata_required_fields":[],"lifecycle_stale_blocker_reason_patterns":["no active blocker","ready for planned execution sequencing","work completed","work is closed"],"lifecycle_closure_like_blocked_reason_patterns":["no active blocker because work is closed","work is closed"],"lifecycle_closure_like_resolution_patterns":["closed with implementation evidence","closed with verification evidence","work completed and recorded","work is closed"],"lifecycle_closure_like_actual_result_patterns":["closed and recorded","work completed","work completed and recorded"],"estimate_defaults_by_type":{}},"governance":{"preset":"default","duplicate_detection_mode":"advisory","duplicate_detection_threshold":0.8,"duplicate_detection_limit":3},"workflow":{"definition_of_done":[]},"testing":{"record_results_to_items":false},"telemetry":{"enabled":true,"first_run_prompt_completed":false,"capture_level":"redacted","endpoint":"https://pm-cli.unbrained.dev/v1/events","installation_id":"","retention_days":365},"agent_guidance":{"prompt_completed":true,"declined":true,"declined_at":"2026-05-26T11:08:03.813Z","template_version":1,"last_checked_files":["AGENTS.md","CLAUDE.md"]},"item_types":{"definitions":[]},"schema":{"version":1,"files":{"types":"schema/types.json","statuses":"schema/statuses.json","fields":"schema/fields.json","workflows":"schema/workflows.json"},"statuses":[{"id":"draft","roles":["draft"],"order":0},{"id":"open","roles":["active","default_open"],"order":1},{"id":"in_progress","roles":["active"],"order":2},{"id":"blocked","roles":["blocked"],"order":3},{"id":"closed","roles":["default_close","terminal","terminal_done"],"order":4},{"id":"canceled","aliases":["cancelled"],"roles":["default_cancel","terminal","terminal_canceled"],"order":5}],"fields":[],"workflow":{"draft_status":"draft","open_status":"open","in_progress_status":"in_progress","blocked_status":"blocked","close_status":"closed","canceled_status":"canceled"},"unknown_field_policy":"allow"},"context":{"default_depth":"brief","activity_limit":10,"stale_threshold_days":7,"sections":{"hierarchy":true,"activity":true,"progress":true,"blockers":true,"files":true,"workload":true,"staleness":true,"tests":true,"recently_created":true,"unparented":true}},"extensions":{"enabled":[],"disabled":[],"policy":{"mode":"off","trust_mode":"off","require_provenance":false,"trusted_extensions":[],"default_sandbox_profile":"none","allowed_extensions":[],"blocked_extensions":[],"allowed_capabilities":[],"blocked_capabilities":[],"allowed_surfaces":[],"blocked_surfaces":[],"allowed_commands":[],"blocked_commands":[],"allowed_actions":[],"blocked_actions":[],"allowed_services":[],"blocked_services":[],"extension_overrides":[]}},"search":{"score_threshold":0,"hybrid_semantic_weight":0.7,"max_results":50,"embedding_model":"","embedding_batch_size":32,"embedding_timeout_ms":30000,"scanner_max_batch_retries":3,"provider":"","mutation_refresh_policy":"semantic_configured","query_expansion":{"enabled":false,"provider":""},"rerank":{"enabled":false,"model":"","top_k":20}},"providers":{"openai":{"base_url":"","api_key":"","model":""},"ollama":{"base_url":"","model":""}},"vector_store":{"adapter":"","collection_name":"pm_items","qdrant":{"url":"","api_key":""},"lancedb":{"path":""}}}}}],"before_hash":"3cc22dff72be7b14824654a7a64ea62b04799939b2fee54c1b5f52ca60bf6df0","after_hash":"752c88ceff1fab61945e3f52886422189d3b21f5c84fe68672d9bcee1cf7bba3"}
{"ts":"2026-07-25T12:23:35.978Z","author":"codex","author_source":"asserted","op":"config:set:parent_reference_policy","patch":[{"op":"replace","path":"/metadata/documents/settings.json/governance/preset","value":"custom"},{"op":"add","path":"/metadata/documents/settings.json/governance/ownership_enforcement","value":"warn"},{"op":"add","path":"/metadata/documents/settings.json/governance/create_mode_default","value":"progressive"},{"op":"add","path":"/metadata/documents/settings.json/governance/close_validation_default","value":"warn"},{"op":"add","path":"/metadata/documents/settings.json/governance/parent_reference","value":"warn"},{"op":"add","path":"/metadata/documents/settings.json/governance/metadata_profile","value":"core"},{"op":"add","path":"/metadata/documents/settings.json/governance/force_required_for_stale_lock","value":true},{"op":"replace","path":"/metadata/documents/settings.json/validation/parent_reference","value":"warn"}],"before_hash":"752c88ceff1fab61945e3f52886422189d3b21f5c84fe68672d9bcee1cf7bba3","after_hash":"a7cc6ab34801aa50ac5bad2a580ad6f4f728f490ba6eab8dd55052c9cbe7dd86"}
5 changes: 5 additions & 0 deletions .agents/pm/history/pm-github-suxt.jsonl
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{"ts":"2026-07-25T11:56:35.437Z","author":"pi-agent","author_source":"asserted","op":"create","patch":[{"op":"add","path":"/metadata/id","value":"pm-github-suxt"},{"op":"add","path":"/metadata/title","value":"Enable governance duplicate-detection advisory mode and adopt pm-cli 2026.7.25"},{"op":"add","path":"/metadata/description","value":"Enable governance.duplicate_detection_mode=advisory so agents filing items get a near-duplicate warning at create time. Bump @unbrained/pm-cli devDependency to ^2026.7.25 (peerDependencies left at >=2026.7.20 as intentionally wider). Advisory mode is non-blocking: appends likely_duplicates warning, never fails a create."},{"op":"add","path":"/metadata/type","value":"Chore"},{"op":"add","path":"/metadata/status","value":"open"},{"op":"add","path":"/metadata/priority","value":2},{"op":"add","path":"/metadata/tags","value":[]},{"op":"add","path":"/metadata/created_at","value":"2026-07-25T11:56:35.437Z"},{"op":"add","path":"/metadata/updated_at","value":"2026-07-25T11:56:35.437Z"},{"op":"add","path":"/metadata/author","value":"pi-agent"}],"before_hash":"3cc22dff72be7b14824654a7a64ea62b04799939b2fee54c1b5f52ca60bf6df0","after_hash":"e77234c0c954474b962c75fbe42b6a2c962a2891766cd1798ec5f7f88b8af052","message":""}
{"ts":"2026-07-25T11:56:42.408Z","author":"pi-agent","author_source":"asserted","op":"update","patch":[{"op":"replace","path":"/metadata/updated_at","value":"2026-07-25T11:56:42.408Z"},{"op":"replace","path":"/metadata/status","value":"in_progress"}],"before_hash":"e77234c0c954474b962c75fbe42b6a2c962a2891766cd1798ec5f7f88b8af052","after_hash":"5f3d316bfcb45dc7be1a33fceb2e6cccf4936e48821e71f251564fd9d2f41f43"}
{"ts":"2026-07-25T11:56:42.728Z","author":"pi-agent","author_source":"asserted","op":"note_add","patch":[{"op":"replace","path":"/metadata/updated_at","value":"2026-07-25T11:56:42.728Z"},{"op":"add","path":"/metadata/notes","value":[{"created_at":"2026-07-25T11:56:42.728Z","author":"pi-agent","text":"likely_duplicates:pm-github-x9et"}]}],"before_hash":"5f3d316bfcb45dc7be1a33fceb2e6cccf4936e48821e71f251564fd9d2f41f43","after_hash":"38898b3793d200ff4077a30ea82e04d255b0bf62a2e726d71dd860679d1711d2"}
{"ts":"2026-07-25T11:56:43.038Z","author":"pi-agent","author_source":"asserted","op":"close","patch":[{"op":"replace","path":"/metadata/updated_at","value":"2026-07-25T11:56:43.038Z"},{"op":"replace","path":"/metadata/status","value":"closed"},{"op":"add","path":"/metadata/closed_at","value":"2026-07-25T11:56:43.037Z"},{"op":"add","path":"/metadata/resolution","value":"Enabled advisory duplicate detection and bumped pm-cli dependency; advisory is non-blocking by design"},{"op":"add","path":"/metadata/expected_result","value":"Second identical create in a throwaway probe workspace returns warnings array containing likely_duplicates:<first-id>; all repo gates pass"},{"op":"add","path":"/metadata/actual_result","value":"Observed warning: likely_duplicates:pm-github-x9et. Gates: typecheck=pass, test=168/168 pass, changelog:full=ok, changelog:check=ok"},{"op":"add","path":"/metadata/close_reason","value":"Enabled advisory duplicate detection and bumped pm-cli dependency; advisory is non-blocking by design"}],"before_hash":"38898b3793d200ff4077a30ea82e04d255b0bf62a2e726d71dd860679d1711d2","after_hash":"5d90cf267951663c5b507190812a2b5fd9eaf547c1c7608df7fbfec4a2b27e72"}
{"ts":"2026-07-25T12:24:45.503Z","author":"claude-code","author_source":"asserted","op":"note_add","patch":[{"op":"add","path":"/metadata/notes/1","value":{"created_at":"2026-07-25T12:24:45.503Z","author":"claude-code","text":"Follow-up fix by orchestrator: the pm config set that enabled advisory mode also silently re-derived validation.parent_reference from the governance preset, discarding the stored warn and tightening it to strict_error. Caught by Greptile on pm-presets#29; reproduced under minimal, default and strict presets; filed upstream pm-cli#710. Restored via pm config set parent_reference_policy warn, which pins governance as custom so the value is authoritative and no future CLI default change can flip it. Verified the promotion materializes this repo's own preset values, so parent_reference is the only behavioural key that changed."}},{"op":"replace","path":"/metadata/updated_at","value":"2026-07-25T12:24:45.503Z"}],"before_hash":"5d90cf267951663c5b507190812a2b5fd9eaf547c1c7608df7fbfec4a2b27e72","after_hash":"53f29cbd54a6dac65aa440abb9645efb4cf86fc27c8a9fb5015ca4ed146c0972"}
52 changes: 46 additions & 6 deletions .agents/pm/settings.json
Original file line number Diff line number Diff line change
@@ -1,16 +1,33 @@
{
"version": 1,
"id_prefix": "pm-github-",
"ids": {
"token_length": 4
},
"author_default": "codex",
"mutation_guard": {
"require_attributed_author": false,
"secret_guard": "advise",
"stale_in_progress_hours": 72
},
"item_format": "toon",
"locks": {
"ttl_seconds": 1800
"ttl_seconds": 1800,
"wait_ms": 3000
},
"checkpoints": {
"retention_days": 14
},
"output": {
"default_format": "toon"
},
"history": {
"missing_stream": "auto_create"
"missing_stream": "auto_create",
"compact_policy": {
"enabled": false,
"max_entries": 500,
"trigger": "health_warn"
}
},
"validation": {
"sprint_release_format": "warn",
Expand All @@ -37,10 +54,20 @@
"closed and recorded",
"work completed",
"work completed and recorded"
]
],
"estimate_defaults_by_type": {}
},
"governance": {
"preset": "default"
"preset": "custom",
"ownership_enforcement": "warn",
"create_mode_default": "progressive",
"close_validation_default": "warn",
"parent_reference": "warn",
"metadata_profile": "core",
"force_required_for_stale_lock": true,
"duplicate_detection_mode": "advisory",
"duplicate_detection_threshold": 0.8,
"duplicate_detection_limit": 3
},
"workflow": {
"definition_of_done": []
Expand Down Expand Up @@ -152,7 +179,9 @@
"files": true,
"workload": true,
"staleness": true,
"tests": true
"tests": true,
"recently_created": true,
"unparented": true
}
},
"extensions": {
Expand Down Expand Up @@ -187,7 +216,17 @@
"embedding_batch_size": 32,
"embedding_timeout_ms": 30000,
"scanner_max_batch_retries": 3,
"provider": ""
"provider": "",
"mutation_refresh_policy": "semantic_configured",
"query_expansion": {
"enabled": false,
"provider": ""
},
"rerank": {
"enabled": false,
"model": "",
"top_k": 20
}
},
"providers": {
"openai": {
Expand All @@ -202,6 +241,7 @@
},
"vector_store": {
"adapter": "",
"collection_name": "pm_items",
"qdrant": {
"url": "",
"api_key": ""
Expand Down
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# Changelog

## Unreleased

### Other

- Enable governance duplicate-detection advisory mode and adopt pm-cli 2026.7.25 ([pm-github-suxt](https://github.com/unbraind/pm-github/blob/main/.agents/pm/chores/pm-github-suxt.toon))

## 2026.7.25 - 2026-07-25

### Added
Expand Down
Loading