Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
130 commits
Select commit Hold shift + click to select a range
87715a9
governance: shared agent rules v2 with checkable rules and versioned …
BotshareAI Sep 28, 2026
8081c6e
governance: decisions.yaml of record and check_decisions.py
BotshareAI Sep 28, 2026
90de0fc
governance: public-extract check with reviewed allowlist
BotshareAI Sep 28, 2026
9b5015e
governance: PR template and check_pr_evidence.py
BotshareAI Sep 28, 2026
544ec0f
rollout: reference verify.sh with zero-test and skip rules
BotshareAI Sep 28, 2026
dbd46ae
ci: run decisions, public-extract and drift checks in the reusable wo…
BotshareAI Sep 28, 2026
77255cd
templates: issue forms, agent prompts and STATE.md example
BotshareAI Sep 28, 2026
639ea99
tools: sync_audit_issues.py for the weekly alignment audit
BotshareAI Sep 28, 2026
0386e31
rollout: PR assistant, weekly audit, docs sync and monthly retro work…
BotshareAI Sep 28, 2026
495c232
docs: one-page CONTRIBUTING, rollout plan and agent run log
BotshareAI Sep 28, 2026
83d286d
docs: do not restate a superseded compute value in the rollout plan
BotshareAI Sep 28, 2026
bfa9d6c
decisions: register with verification methods and non-numeric decisions
BotshareAI Sep 28, 2026
58a4e6d
pr-evidence: report safety paths as requiring approvals, not as approved
BotshareAI Sep 28, 2026
2942157
public-extract: narrow allowlist for published contact and licence no…
BotshareAI Sep 28, 2026
72437b4
rollout: audit never closes issues; label designs and examples
BotshareAI Sep 28, 2026
935c2b9
ci: make the harness steps opt-in in the reusable workflow
BotshareAI Sep 28, 2026
71688db
governance: honest enforcement labels and the decision-change process
BotshareAI Sep 28, 2026
a78d53c
pr-evidence: do not count fixture manifests as dependency changes
BotshareAI Sep 28, 2026
4fb87dc
governance: apply platform-lead decisions on BOM, pricing and handles
BotshareAI Sep 28, 2026
2b4fd9c
maintainers: record the release-owner handle
BotshareAI Sep 28, 2026
5f46415
ci: fix shellcheck SC2209 in verify.sh and install shellcheck in qual…
BotshareAI Sep 29, 2026
0b4f332
verify.sh: apply the zero-tests rule before the test command's exit s…
BotshareAI Sep 29, 2026
ac95067
pr-assistant: evidence rules see deleted and renamed files
BotshareAI Sep 29, 2026
a49c513
pr-evidence: fail closed when the decisions checker errors
BotshareAI Sep 29, 2026
04e3a06
rollout: consistent adoption order, warn-only mode and an interfaces …
BotshareAI Sep 29, 2026
1b409bb
verify: write summary.json around delegated runs; release evidence re…
BotshareAI Sep 29, 2026
12f5210
rollout: release-owner CODEOWNERS routing and how GitHub applies it
BotshareAI Sep 29, 2026
dff523d
verify: fail the run when summary.json cannot be written
BotshareAI Sep 30, 2026
beff76e
codeowners: add the leads team next to BotshareAI
BotshareAI Sep 30, 2026
f3d9518
docs: name KARTHIKEYAN124 and wikki26 instead of release-ci team
BotshareAI Oct 1, 2026
5d1b5f7
Merge branch 'main' into claude/brave-hypatia-lv9zbv
KARTHIKEYAN124 Oct 2, 2026
e86f68c
decisions: RPLIDAR S3 navigation LiDAR, release milestones; restore m…
BotshareAI Oct 3, 2026
0fa9b64
docs: rev18.4 in force; maintainers header and rollout handles match …
BotshareAI Oct 3, 2026
066f580
decisions: base controller is the STM32H723ZG (P-03 rev18.5 item 14)
BotshareAI Oct 5, 2026
cc02725
decisions: rev18.5 in force; register test for BASE-CONTROLLER-IO
BotshareAI Oct 5, 2026
fcf3d8a
decisions: rev18.6 in force; release versions in RELEASE-MILESTONES
BotshareAI Oct 6, 2026
4a88e50
decisions: rev18.7 in force; LIFT replaces LIFT-REMOVED (item 8)
BotshareAI Oct 7, 2026
59c0162
decisions: mast entries superseded by LIFT (item 8); superseded status
BotshareAI Oct 7, 2026
f22ac15
decisions: DATUM-HEIGHT-STACK (P-03 rev18.7 item 15)
BotshareAI Oct 7, 2026
9440797
decisions: FRAMES-REP105 (P-03 rev18.7 item 15)
BotshareAI Oct 7, 2026
0a119aa
decisions: BOM-ISSUE-IN-FORCE is Issue 7.3 (P-03 rev18.7)
BotshareAI Oct 7, 2026
4f6d844
decisions: BATTERY-PLACEMENT near the rear edge (P-03 rev18.7 item 9)
BotshareAI Oct 7, 2026
cd6d72d
decisions: BASE-CONTROLLER-IO per P-03 rev18.7 item 14
BotshareAI Oct 7, 2026
fc30389
decisions: head camera recorded as ZED Mini; base camera tilt (item 15)
BotshareAI Oct 7, 2026
2f97618
decisions: RELEASE-MILESTONES flags v0.2 and a 13 November cycle end
BotshareAI Oct 7, 2026
fd399a7
profile: lift approved in principle; footer address with floor
BotshareAI Oct 7, 2026
9d7d4a3
contributing: example exclusion is "no RS485 in 2.0"
BotshareAI Oct 7, 2026
7c7f108
quality standard: cycle and release wording follow RELEASE-MILESTONES
BotshareAI Oct 7, 2026
0674d16
ci: .gitattributes keeps LF for shell scripts
BotshareAI Oct 7, 2026
1aa7773
verify: rosdep sources list and cache available in the clean HOME
BotshareAI Oct 7, 2026
d775ff0
verify: rosdep check scans only the ROS source packages
BotshareAI Oct 7, 2026
05bbe78
reusable workflow: full history only when harness checks run
BotshareAI Oct 7, 2026
91d4b4e
tests: jq wiring test skips with its tracking issue when jq is missing
BotshareAI Oct 7, 2026
09038a6
docs policy: DOCUMENTATION_STANDARD.md is canonical; allowlist is detail
BotshareAI Oct 7, 2026
dbaa647
docs-fix prompt: verified facts versus planned or experimental content
BotshareAI Oct 7, 2026
458ea3b
decisions: LIFT check tightened after the cross-repository dry run
BotshareAI Oct 7, 2026
d54f45f
ci: add immutable live workflow policy checker
BotshareAI Oct 7, 2026
24d4a32
test: cover live workflow pinning and placeholders
BotshareAI Oct 7, 2026
aed4ed8
ci: pin reusable actions and enforce workflow and AGENTS policies
BotshareAI Oct 7, 2026
c58fa78
ci: pin actions and add real ROS Jazzy verifier smoke job
BotshareAI Oct 7, 2026
e717b77
pr: require tool and scope in AI disclosure
BotshareAI Oct 7, 2026
286f970
pr: pass commit messages to evidence checker
BotshareAI Oct 7, 2026
e6f7250
fix: use word-boundary AI disclosure matching
BotshareAI Oct 7, 2026
c73b066
test: enforce meaningful AI disclosure
BotshareAI Oct 7, 2026
6abd4ed
test: cover workflow policy and AGENTS exception gate
BotshareAI Oct 7, 2026
9dfd000
governance: validate decision provenance review windows
BotshareAI Oct 7, 2026
09bf7de
fix: accept ISO dates in decision schema
BotshareAI Oct 7, 2026
2f7a638
governance: record decision source and review windows
BotshareAI Oct 7, 2026
6d8768f
test: cover decision source and review metadata
BotshareAI Oct 7, 2026
31c9b31
audit: report overdue decision reviews as warnings
BotshareAI Oct 7, 2026
8e909d5
test: cover overdue decision warnings in audit sync
BotshareAI Oct 7, 2026
1eb65e8
governance: define platform-lead author approval rule
BotshareAI Oct 7, 2026
e921b64
governance: encode author approval policy
BotshareAI Oct 7, 2026
98baef8
docs: add public-use and naming gate to PR template
BotshareAI Oct 7, 2026
5743f0a
docs: explain scoped owner approval routing
BotshareAI Oct 7, 2026
61ecc7b
docs: document activation and owner exception gates
BotshareAI Oct 7, 2026
e1e43ac
audit: require decision review warnings in reports
BotshareAI Oct 7, 2026
fbc3ea6
audit: validate register and pass review warnings to issue sync
BotshareAI Oct 7, 2026
e239074
pr: enforce public-use contribution checkbox
BotshareAI Oct 7, 2026
36b20d0
test: enforce public-use contribution checkbox
BotshareAI Oct 7, 2026
20f96c3
test: update decision fixture metadata
BotshareAI Oct 7, 2026
5d903e1
ci: recognize standard step action syntax
BotshareAI Oct 7, 2026
fd5527c
pr: require substantive AI assistance scope
BotshareAI Oct 7, 2026
a54e334
ci: make AGENTS exception summary safe outside GitHub
BotshareAI Oct 7, 2026
a5049d7
test: point fixture in-force metadata at its source
BotshareAI Oct 7, 2026
20d7b1c
ci: mark mounted ROS fixture as safe for git
BotshareAI Oct 7, 2026
d8b1105
ci: run interfaces own verified test command in ROS smoke
BotshareAI Oct 7, 2026
b01a2ac
ci: quote ROS verifier test override safely
BotshareAI Oct 7, 2026
6fc51d4
fix verifier ROS workspace copy recursion
BotshareAI Oct 7, 2026
e511b69
install schema dependency in ROS verifier smoke
BotshareAI Oct 7, 2026
994dec5
test ROS verifier excludes its own workspace
BotshareAI Oct 7, 2026
d9d2f73
fix ROS smoke shell quoting
BotshareAI Oct 7, 2026
ba3d5b3
install ROS Cyclone DDS for smoke matrix
BotshareAI Oct 7, 2026
30dd375
least-privilege AI workflow authentication in weekly-alignment-audit.yml
BotshareAI Oct 7, 2026
d74e6ca
least-privilege AI workflow authentication in docs-sync.yml
BotshareAI Oct 7, 2026
f44a4ff
least-privilege AI workflow authentication in monthly-retro.yml
BotshareAI Oct 7, 2026
9783ae1
least-privilege AI workflow authentication in SETUP.md
BotshareAI Oct 7, 2026
95dcfaf
document Claude authentication permissions accurately in weekly-align…
BotshareAI Oct 7, 2026
072eb98
document Claude authentication permissions accurately in docs-sync.yml
BotshareAI Oct 7, 2026
27bea76
document Claude authentication permissions accurately in monthly-retr…
BotshareAI Oct 7, 2026
774f2ad
document Claude authentication permissions accurately in SETUP.md
BotshareAI Oct 7, 2026
3110898
Watchdog: explain every finding with decision, why, fix and links
BotshareAI Oct 7, 2026
bcbc07a
Accept clearly labelled history in two unless patterns
BotshareAI Oct 7, 2026
cf77d4c
Add tools/watchdog.py: all repository checks in one command
BotshareAI Oct 7, 2026
87e9561
Add the weekly Watchdog organization scan
BotshareAI Oct 7, 2026
b406a5a
Add WATCHDOG.md, the contributor guide to the checks
BotshareAI Oct 7, 2026
e75c3b5
Keep the test suite out of the CI run's annotations and job summary
BotshareAI Oct 7, 2026
48519d5
Watchdog: print each decision's guidance once, then its findings
BotshareAI Oct 7, 2026
172f9c6
Public extract: approved public contacts
BotshareAI Oct 7, 2026
4ea9bd4
WATCHDOG.md: approved public contacts and the compact finding format
BotshareAI Oct 7, 2026
e87f75a
watchdog: synchronize deterministic findings into GitHub issues
BotshareAI Oct 7, 2026
07a0105
test: enforce GitHub-native watchdog publication contract
BotshareAI Oct 7, 2026
f6b9063
docs: document the GitHub-native Watchdog operating loop
BotshareAI Oct 7, 2026
c6635e0
test: keep watchdog dashboard updates idempotent
BotshareAI Oct 7, 2026
73561fe
watchdog: bootstrap its controlled issue labels
BotshareAI Oct 7, 2026
5386b3d
templates: add a safe decision-register review form
BotshareAI Oct 7, 2026
12a64bc
test: assert the current Watchdog summary contract
BotshareAI Oct 7, 2026
2dd01e1
docs: remove duplicate rollout heading
BotshareAI Oct 7, 2026
cdbdb22
watchdog: recover from reappearing findings
BotshareAI Oct 7, 2026
0449955
watchdog: show repository enrollment in the dashboard
BotshareAI Oct 7, 2026
f3c2fb8
docs: explain Watchdog enrollment status
BotshareAI Oct 7, 2026
07e3f50
watchdog: apply decision-review label to due entries
BotshareAI Oct 7, 2026
5039b53
test: cover Watchdog issue re-opening API behavior
BotshareAI Oct 7, 2026
43f2804
watchdog: dashboard-only issue mode by default
BotshareAI Oct 7, 2026
f7c6d96
watchdog: schedule organization scan at 14:00 Berlin time
BotshareAI Oct 7, 2026
5a8b313
test: update watchdog schedule contract to Berlin time
BotshareAI Oct 7, 2026
18d8a2b
watchdog: document the 14:00 Berlin schedule
BotshareAI Oct 7, 2026
8ecda44
watchdog: describe dashboard publication in the scan summary
BotshareAI Oct 7, 2026
37896d3
watchdog: fail closed on incomplete organization scans
BotshareAI Oct 8, 2026
2151010
test: an empty repository list is INCOMPLETE, never a zero-repository…
BotshareAI Oct 8, 2026
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
5 changes: 5 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Shell scripts run under Linux bash, so they keep LF line endings even when a
# contributor's Git uses core.autocrlf=true (CI owner review, 6 October 2026).
# A shell script without one of these extensions gets its own line below.
*.sh text eol=lf
*.bash text eol=lf
52 changes: 35 additions & 17 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -1,40 +1,58 @@
name: Bug report
description: Report a reproducible software or firmware defect
description: Report a reproducible software or firmware defect with the evidence a fix needs
title: "[Bug]: "
labels: ["bug", "triage"]
body:
- type: markdown
attributes:
value: "Do not include credentials, confidential information, export-controlled data, or third-party material you cannot disclose."
- type: textarea
id: summary
value: |
Issues are public. Do not include credentials, personal data, internal document links or prices.
The fix PR links this issue in its Work package section and adds a test that fails on the defect.
- type: input
id: repository
attributes:
label: Repository and path
placeholder: "openAMRobot/<repository>, path/to/file"
validations:
required: true
- type: input
id: commit
attributes:
label: Summary
description: What happened, and what did you expect?
label: Commit SHA
description: Full or short SHA of the checkout where the defect reproduces.
placeholder: "d1ac6b64db83"
validations:
required: true
- type: textarea
id: reproduce
attributes:
label: Reproduction steps
label: Exact commands
description: Commands that reproduce the defect, one per line, from a clean checkout.
render: shell
validations:
required: true
- type: input
id: version
- type: textarea
id: expected
attributes:
label: Repository version, tag, or commit
label: Expected and actual result
description: Paste the relevant output; state the decision ID from decisions.yaml if a decided value is wrong.
validations:
required: true
- type: textarea
id: environment
- type: dropdown
id: safety
attributes:
label: Environment
description: OS, ROS version, hardware, browser, and relevant dependencies.
label: Safety impact
description: E-stop, brake, contactor, watchdog, motor-enable and charge-inhibit defects are reported, never fixed by an agent.
options:
- None
- Motion, power, battery, actuator or safety I/O (platform lead reviews)
validations:
required: true
- type: textarea
id: logs
id: not_verified
attributes:
label: Logs and supporting evidence
description: Remove personal, confidential, and security-sensitive information.
label: Not verified
description: What you could not check, for example real hardware or another ROS distribution.
- type: checkboxes
id: provenance
attributes:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,20 @@
name: Interface change request
description: Propose a controlled change to a ROS, API, message, schema, or other shared interface.
title: "[INTERFACE] "
name: Contract change request
description: Propose a change to a message, service, action, schema, topic name, launch argument name or configuration ID.
title: "[CONTRACT] "
labels: ["contract-change", "triage"]
body:
- type: markdown
attributes:
value: |
Use this form before changing an interface consumed by another repository, node, service, tool, or operator surface.
Use this form before changing a contract consumed by another repository, node, service, tool, or operator surface:
messages, services, actions, schemas, topic names, launch argument names and configuration IDs (for example mast_1350).
The change lands in one PR that updates the contract package and every consumer together; that PR links this issue
in its Work package section.

To change an approved technical decision (a value, limit, exclusion or distinction in the decisions register,
openAMRobot/.github decisions.yaml), follow "Changing a decision" in AGENTS.md: this issue names the entry, the owner
updates the source document, and one reviewed PR updates the register entry, its supersedes history, its check
patterns with a test, and every affected consumer together. No tool rewrites the register or a source document.

Keep generic interfaces generic. Do not add application-specific manipulation behavior or authoritative safety behavior to a telemetry or navigation contract without an explicit owning design decision.

Expand All @@ -22,11 +31,20 @@ body:
id: contract
attributes:
label: Contract or interface
description: Name the message, service, action, API, schema, topic, or file being changed.
description: Name the message, service, action, schema, topic name, launch argument name, configuration ID or file being changed.
placeholder: "repository, package, path, and interface name"
validations:
required: true

- type: input
id: decision_entry
attributes:
label: Decisions register entry
description: The decisions.yaml ID this request changes, or "none" for a contract that is not a recorded decision.
placeholder: "MAST-INSTALL-HEIGHT / none"
validations:
required: true

- type: dropdown
id: change_class
attributes:
Expand All @@ -35,9 +53,9 @@ body:
options:
- Documentation-only or implementation clarification
- Add an enum, reason code, or constant without changing field layout
- Add, remove, rename, reorder, or retype a field — version bump and consumer rebuild required
- Change the meaning, units, defaults, or validity of an existing value — version bump and consumer review required
- Other — explain below
- Add, remove, rename, reorder, or retype a field; version bump and consumer rebuild required
- Change the meaning, units, defaults, or validity of an existing value; version bump and consumer review required
- Other, explain below
validations:
required: true

Expand Down Expand Up @@ -107,3 +125,5 @@ body:
required: true
- label: I have not treated telemetry as authoritative safety evidence.
required: true
- label: The implementing PR will update the contract package and its consumers together, or list each consumer PR.
required: true
63 changes: 63 additions & 0 deletions .github/ISSUE_TEMPLATE/decision_review.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
name: Decision register review
description: Confirm or change one approved decision after the Watchdog review reminder.
title: "[decision-review] "
labels:
- decision-review
- watchdog-review
body:
- type: markdown
attributes:
value: |
Use this form for one `decisions.yaml` entry. Do not paste private Drive links, prices,
credentials or customer information into a public issue. The Watchdog never changes the
register automatically; the final update is a reviewed pull request.
- type: input
id: decision_id
attributes:
label: Decision ID
description: The exact entry ID, for example COMPUTE or NAV-LIDAR.
placeholder: COMPUTE
validations:
required: true
- type: dropdown
id: outcome
attributes:
label: Review outcome
options:
- Confirm current decision
- Propose a decision change
- Insufficient evidence
validations:
required: true
- type: input
id: source_key
attributes:
label: Controlling source key and item
description: Use a traceable key and item/date, not a private URL.
placeholder: P-03-rev18.7 item 14, 6 October 2026
validations:
required: true
- type: textarea
id: evidence
attributes:
label: Evidence summary
description: Summarize what was checked and include public repository paths or commit SHAs where useful.
placeholder: The controlling source still says ...; implementation checked at ...
validations:
required: true
- type: textarea
id: requested_action
attributes:
label: Requested action
description: State whether the owner should extend review_by, open a source change, or update consumers.
validations:
required: true
- type: checkboxes
id: ground_truth
attributes:
label: Ground-truth confirmation
options:
- label: I am responsible for, or have obtained, the controlling-source confirmation.
required: true
- label: I have not included private links, credentials, customer information or unverified values.
required: true
63 changes: 63 additions & 0 deletions .github/ISSUE_TEMPLATE/good_first_issue.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
name: Good first issue
description: A small, self-contained task for a first-time contributor (maintainers open these)
title: "[Good first issue]: "
labels: ["good first issue", "triage"]
body:
- type: markdown
attributes:
value: |
A good first issue can be done in one PR, needs no hardware and no access beyond a fork, and
touches no safety path or shared contract. Maintainers add the area label from CONTRIBUTING.md.
- type: dropdown
id: area
attributes:
label: Area
options:
- documentation (openamrobot-docs)
- navigation and bring-up (openamr-platform-sw)
- interfaces (openamrobot-interfaces)
- manipulation (openamrobot-manipulation)
- operator UI (openamrobot-ui)
- manifest and release (openamrobot-manifest, openamrobot-release)
- CI and harness (.github)
validations:
required: true
- type: input
id: repository
attributes:
label: Repository and files
placeholder: "openAMRobot/<repository>: path/to/file"
validations:
required: true
- type: textarea
id: task
attributes:
label: Task
description: What needs to become true, in two or three sentences.
validations:
required: true
- type: textarea
id: done
attributes:
label: Done when
description: Observable pass/fail conditions, including the test that must fail before and pass after.
value: |
- [ ]
validations:
required: true
- type: textarea
id: verify
attributes:
label: How to verify
description: The exact command a contributor runs, and the result it prints.
render: shell
validations:
required: true
- type: input
id: mentor
attributes:
label: Reviewer role
description: Role from maintainers.yaml that reviews the PR.
placeholder: "docs-owner"
validations:
required: true
61 changes: 61 additions & 0 deletions .github/ISSUE_TEMPLATE/harness_mistake.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
name: Harness mistake
description: Record an agent or process mistake so the monthly retro can turn it into a rule, check or template change
title: "[Harness]: "
labels: ["harness"]
body:
- type: markdown
attributes:
value: |
One mistake per issue. The monthly retro reads every open issue with the label harness and
proposes one PR against AGENTS.md, the checkers or the templates in openAMRobot/.github.
Describe the mistake, not the person. No names, internal links or credentials.
- type: input
id: where
attributes:
label: Where it happened
description: Repository and PR or issue link.
placeholder: "openAMRobot/<repository>#<number>"
validations:
required: true
- type: dropdown
id: actor
attributes:
label: Who made the mistake
options:
- Agent (AI-assisted or automated)
- Contributor process
- Review process
- Automation or workflow
validations:
required: true
- type: input
id: template
attributes:
label: Prompt template and version
description: For agent runs, the agent-prompts/ file and the harness commit SHA it came from.
placeholder: "agent-prompts/docs-fix.md @ <sha>"
- type: textarea
id: mistake
attributes:
label: What went wrong
description: The observable result and the evidence (diff line, log line, comment link).
validations:
required: true
- type: dropdown
id: caught
attributes:
label: What caught it
options:
- A gate (check or CI)
- Human review
- Found after merge
- Not caught yet
validations:
required: true
- type: textarea
id: proposal
attributes:
label: Proposed harness change
description: A rule, a check, or a template change that would make this class of mistake unmergeable. Name who decides if it cannot be checked.
validations:
required: true
Loading