# Record Finding Decision

> Record a maintainer decision (wontfix, ...) on a finding of a stored observation report into the committed ledger at .odd/decisions.md - the write that lets /odd-status stop rendering a declined finding as open. Use when the user declines a finding, marks it wontfix, or reverses such a decision. Never edits a report.

- **Type:** Skill
- **Install:** `agentstack add skill-using-system-oddyssey-record-finding-decision`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [using-system](https://agentstack.voostack.com/s/using-system)
- **Installs:** 0
- **Category:** [Agent Skills](https://agentstack.voostack.com/c/agent-skills)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [using-system](https://github.com/using-system)
- **Source:** https://github.com/using-system/oddyssey/tree/main/marketplace/oddyssey/skills/record-finding-decision
- **Website:** https://github.com/using-system/oddyssey#readme

## Install

```sh
agentstack add skill-using-system-oddyssey-record-finding-decision
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# Record a Finding Decision

A finding no verification ever ruled on stays open forever — the status
has no other verdict for it, however deliberately the maintainer decided
to live with it. The decision is real, it is just homeless: it was taken
between runs, and the only artifacts that could carry it are past
evidence that must never be rewritten. This skill gives it a committed
home of its own, next to the reports and never inside them.

## The ledger

Path: `/.odd/decisions.md`, committed. Created on first
decision with this exact skeleton:

```markdown
# ODD finding decisions

Decisions the maintainer took on findings recorded in
`.odd/observe-run-reports/` — the committed memory that lets
`/odd-status` stop rendering a declined finding as open. Rows are
appended, never rewritten; a later row for the same finding supersedes
the earlier one. Reports themselves are never edited — this ledger is
the only place a decision lives.

| Date | Finding | Verdict | Rationale |
|---|---|---|---|
```

One row per decision:

```markdown
| 2026-08-28 | 2026-08-26-1003-config-set-env-preservation.md / F4 | wontfix | Port-move is rare; ~14.5 s accepted |
```

- `Date` — the decision's UTC date, `YYYY-MM-DD`.
- `Finding` — ` / `. The exact filename disambiguates
  finding IDs, which are report-local (two reports can both have an
  "F4").
- `Verdict` — `wontfix` today; the column is free-form so later verdicts
  (e.g. `accepted-by-design`) need no format change.
- `Rationale` — one sentence, required. No secrets.

## Recording a decision

1. **Resolve the finding** to `report filename + finding ID` — the row's
   `Finding` value is only as good as this step. When the caller names
   the report, open it and confirm its ranked-findings table carries
   that ID; when it does not, **say so and stop** — a row pointing at a
   finding that does not exist is worse than no row. When the caller
   gives only an ID ("wontfix F4"), list
   `.odd/observe-run-reports/` and find which reports' ranked-findings
   tables carry it, reading **bodies only for candidates whose
   frontmatter matches** any service, stack, or environment the caller
   named — the frontmatter is what keeps this from becoming a
   full-corpus read. More than one match is a question, never a guess:
   list the matching filenames with the finding's title from each and
   **ask** which one.
2. **Require a rationale.** A decision without one is not recordable:
   the ledger's whole value is that a future reader learns *why* a
   finding stopped counting as open, and "wontfix" alone teaches
   nothing. Ask for the sentence; do not invent one from the report's
   own prose.
3. **Append the row.** Create the file with the skeleton above when it
   is absent (create `.odd/` too if needed), then append one row —
   today's UTC date, the resolved ` / `, the verdict, the
   rationale on one line. Never reflow or re-sort the existing rows.
4. **A reversal is a new row**, with the verdict `open` — the one
   verdict the status recognizes as reopening — and its own rationale;
   never delete or rewrite the superseded row. The latest row for a
   finding wins, and the history of the decision stays readable,
   exactly like the reports this ledger complements.

## Rules

- **Never modify or delete a report.** `.odd/` reports are append-only
  evidence; this skill writes `decisions.md` and nothing else. A
  decision that "should be in the report" is still a ledger row.
- **Never write secrets into a rationale** — no tokens, credentials,
  cookies, or connection strings. The file is made to be committed and
  shared; refer to access material by variable or secret name only.
- **After writing, commit the ledger file on its own**:
  `git add .odd/decisions.md` then
  `git commit -m "docs(odd): finding decision  "` —
  never stage anything else; a dirty working tree stays untouched
  otherwise. If committing is impossible (not a git repository, or the
  caller said not to), state the path and leave the commit to the
  caller.
- Either way, state the ledger path and the appended row in the reply.

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [using-system](https://github.com/using-system)
- **Source:** [using-system/oddyssey](https://github.com/using-system/oddyssey)
- **License:** MIT
- **Homepage:** https://github.com/using-system/oddyssey#readme

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-using-system-oddyssey-record-finding-decision
- Seller: https://agentstack.voostack.com/s/using-system
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
