Skip to content

docs: explain required proposer field on Proposal (ADR-002 followup)#14

Merged
renasami merged 1 commit intomainfrom
docs/readme-proposer-explanation
Apr 19, 2026
Merged

docs: explain required proposer field on Proposal (ADR-002 followup)#14
renasami merged 1 commit intomainfrom
docs/readme-proposer-explanation

Conversation

@renasami
Copy link
Copy Markdown
Owner

@renasami renasami commented Apr 19, 2026

Summary

  • Explains what proposer is and why it's required, right after the Quick Start example
  • Links to ADR-002 so readers can find the full rationale (unattributed actions break the audit trail)

Context

PR #11 already added proposer to the README code examples so they compile against the required Proposal.proposer: string field introduced in ADR-002. What was still missing: a short prose explanation of what the field represents and why readers must supply a value. This PR adds that explanation near Quick Start — the spot a copy-paste user hits first — without touching the ADRs (immutable by convention).

Test plan

  • pnpm run typecheck — green
  • Pasted both README code blocks into a throwaway .ts file and ran tsc --noEmit — no errors
  • grep proposer README.md confirms proposer: appears in every propose({...}) literal and the new prose paragraph sits adjacent to Quick Start
  • ADR-002 file untouched (immutable)

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Documentation
    • Clarified that proposer attribution is a required field for all proposals. Explained that anonymous proposals are rejected to maintain audit-trail accountability for each proposal entry.

Code examples already include proposer (PR #11), but the README didn't
explain what it represents or why it's required. Add a short paragraph
after Quick Start that defines proposer, notes it must be non-anonymous,
and links to ADR-002 for the audit-trail attribution rationale.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 19, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 068cccb4-fc6b-4a62-a2c8-f0b2fda93886

📥 Commits

Reviewing files that changed from the base of the PR and between 38b0c60 and 25edc9f.

📒 Files selected for processing (1)
  • README.md

📝 Walkthrough

Walkthrough

Updated README.md documentation to clarify that the proposer field in tegata.propose(...) is a required attribution string. Explains that anonymous proposals are rejected to ensure audit-trail attribution and references ADR-002 for rationale.

Changes

Cohort / File(s) Summary
Documentation
README.md
Clarified that the proposer field is a required attribution string for proposals; documented rejection of anonymous proposals and referenced ADR-002.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~2 minutes

Poem

A proposal must bear a name, you see,
So every audit knows who penned the decree,
No shadows lurking, no anonymous calls—
Each change has credit where the paper falls! 🐰📋

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main change: adding documentation that explains the required proposer field in the Proposal type, with reference to ADR-002. It is concise, specific, and directly reflects the changeset.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/readme-proposer-explanation

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

Copy link
Copy Markdown

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request updates the README.md to document the proposer field as a mandatory requirement for attribution in audit trails. Feedback was provided to clarify the security validation differences between registered and unregistered identifiers, along with minor grammatical and consistency improvements.

Comment thread README.md
// → Escalated to supervisor agent or human reviewer
```

`proposer` is a required string identifying who is requesting the action — typically an agent id (`"deploy-bot"`), but any identifier works (`"human"`, `"ci-runner"`). Tegata rejects anonymous proposals because every audit-trail entry must carry attribution; unattributed actions defeat the point of a governance SDK. See [ADR-002](docs/adr/002-require-proposer-in-proposal.md) for the rationale.
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

While any string is technically accepted as a proposer, it's important to clarify that only identifiers registered via registerAgent() undergo capability and risk-score validation. Using an unregistered string (like "human") bypasses these automated security checks. Additionally, 'ID' should be capitalized for consistency, and 'audit trail' is typically written without a hyphen when used as a noun.

Suggested change
`proposer` is a required string identifying who is requesting the action — typically an agent id (`"deploy-bot"`), but any identifier works (`"human"`, `"ci-runner"`). Tegata rejects anonymous proposals because every audit-trail entry must carry attribution; unattributed actions defeat the point of a governance SDK. See [ADR-002](docs/adr/002-require-proposer-in-proposal.md) for the rationale.
`proposer` is a required string identifying who is requesting the action — typically an agent ID (`"deploy-bot"`), but any identifier works (`"human"`, `"ci-runner"`). Note that identifiers registered via `registerAgent()` enable additional capability and risk-score validation. Tegata rejects empty proposer strings because every audit trail entry must carry attribution; unattributed actions defeat the point of a governance SDK. See [ADR-002](docs/adr/002-require-proposer-in-proposal.md) for the rationale.

@renasami renasami merged commit d664bd3 into main Apr 19, 2026
2 checks passed
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