okstra 0.34.1 → 0.36.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.kr.md +27 -19
- package/README.md +27 -19
- package/docs/kr/architecture.md +59 -45
- package/docs/kr/cli.md +61 -18
- package/docs/pr-template-usage.md +65 -0
- package/docs/project-structure-overview.md +353 -354
- package/docs/superpowers/plans/2026-05-12-ticket-id-in-reports.md +1 -1
- package/docs/superpowers/plans/2026-05-14-convergence-queue-pruning.md +1 -1
- package/docs/superpowers/plans/2026-05-17-dual-format-final-report.md +1 -1
- package/docs/superpowers/plans/2026-05-20-final-report-language.md +1501 -0
- package/docs/superpowers/plans/2026-05-20-implementation-planning-multi-stage.md +1267 -0
- package/docs/superpowers/plans/2026-05-20-okstra-run-prompt-sot-b1.md +1007 -0
- package/docs/superpowers/plans/2026-05-20-wizard-messages-json-sot.md +720 -0
- package/docs/superpowers/plans/2026-05-20-wizard-prompt-json-sot-a1.md +681 -0
- package/docs/superpowers/plans/2026-05-21-improvement-discovery-task-type.md +1691 -0
- package/docs/superpowers/plans/2026-05-24-implementation-lead-context-slimming.md +1700 -0
- package/docs/superpowers/specs/2026-05-20-final-report-language-design.md +383 -0
- package/docs/superpowers/specs/2026-05-20-implementation-planning-multi-stage-design.md +320 -0
- package/docs/superpowers/specs/2026-05-20-okstra-run-prompt-sot-design.md +299 -0
- package/docs/superpowers/specs/2026-05-21-improvement-discovery-task-type-design.md +335 -0
- package/docs/task-process/README.md +74 -0
- package/docs/task-process/common-flow.md +166 -0
- package/docs/task-process/error-analysis.md +101 -0
- package/docs/task-process/final-verification.md +167 -0
- package/docs/task-process/implementation-planning.md +128 -0
- package/docs/task-process/implementation.md +149 -0
- package/docs/task-process/release-handoff.md +206 -0
- package/docs/task-process/requirements-discovery.md +115 -0
- package/package.json +1 -1
- package/runtime/BUILD.json +2 -2
- package/runtime/agents/SKILL.md +30 -7
- package/runtime/agents/workers/claude-worker.md +31 -6
- package/runtime/agents/workers/codex-worker.md +37 -10
- package/runtime/agents/workers/gemini-worker.md +34 -7
- package/runtime/agents/workers/report-writer-worker.md +19 -10
- package/runtime/bin/okstra-central.sh +6 -6
- package/runtime/bin/okstra-codex-exec.sh +49 -28
- package/runtime/bin/okstra-gemini-exec.sh +39 -21
- package/runtime/bin/okstra-render-final-report.py +13 -2
- package/runtime/bin/okstra-wrapper-status.py +155 -0
- package/runtime/bin/okstra.sh +2 -2
- package/runtime/prompts/launch.template.md +1 -0
- package/runtime/prompts/profiles/_common-contract.md +11 -6
- package/runtime/prompts/profiles/_implementation-deliverable.md +53 -0
- package/runtime/prompts/profiles/_implementation-executor.md +60 -0
- package/runtime/prompts/profiles/_implementation-verifier.md +76 -0
- package/runtime/prompts/profiles/error-analysis.md +3 -7
- package/runtime/prompts/profiles/implementation-planning.md +22 -21
- package/runtime/prompts/profiles/implementation.md +28 -118
- package/runtime/prompts/profiles/improvement-discovery.md +42 -0
- package/runtime/prompts/profiles/release-handoff.md +1 -1
- package/runtime/prompts/profiles/requirements-discovery.md +8 -12
- package/runtime/prompts/wizard/prompts.ko.json +230 -0
- package/runtime/python/lib/okstra/cli.sh +2 -49
- package/runtime/python/lib/okstra/globals.sh +21 -21
- package/runtime/python/lib/okstra/interactive.sh +7 -7
- package/runtime/python/okstra_ctl/clarification_items.py +3 -9
- package/runtime/python/okstra_ctl/consumers.py +53 -0
- package/runtime/python/okstra_ctl/final_report_schema.py +0 -7
- package/runtime/python/okstra_ctl/i18n.py +73 -0
- package/runtime/python/okstra_ctl/improvement_lenses.py +44 -0
- package/runtime/python/okstra_ctl/index.py +1 -1
- package/runtime/python/okstra_ctl/paths.py +26 -20
- package/runtime/python/okstra_ctl/render.py +166 -207
- package/runtime/python/okstra_ctl/render_final_report.py +53 -10
- package/runtime/python/okstra_ctl/run.py +299 -108
- package/runtime/python/okstra_ctl/run_context.py +22 -0
- package/runtime/python/okstra_ctl/seeding.py +186 -0
- package/runtime/python/okstra_ctl/session.py +65 -7
- package/runtime/python/okstra_ctl/wizard.py +348 -127
- package/runtime/python/okstra_ctl/workflow.py +21 -2
- package/runtime/python/okstra_ctl/worktree.py +54 -1
- package/runtime/python/okstra_project/resolver.py +4 -3
- package/runtime/python/okstra_token_usage/report.py +2 -2
- package/runtime/schemas/final-report-v1.0.schema.json +22 -16
- package/runtime/skills/okstra-brief/SKILL.md +102 -218
- package/runtime/skills/okstra-convergence/SKILL.md +2 -3
- package/runtime/skills/okstra-inspect/SKILL.md +581 -0
- package/runtime/skills/okstra-report-writer/SKILL.md +35 -15
- package/runtime/skills/okstra-run/SKILL.md +8 -7
- package/runtime/skills/okstra-schedule/SKILL.md +14 -157
- package/runtime/skills/okstra-setup/SKILL.md +28 -1
- package/runtime/skills/okstra-team-contract/SKILL.md +16 -107
- package/runtime/templates/okstra.CLAUDE.md +104 -0
- package/runtime/templates/reports/brief.template.md +204 -0
- package/runtime/templates/reports/final-report.template.md +93 -98
- package/runtime/templates/reports/i18n/en.json +135 -0
- package/runtime/templates/reports/i18n/ko.json +135 -0
- package/runtime/templates/reports/implementation-planning-input.template.md +18 -0
- package/runtime/templates/reports/improvement-discovery-input.template.md +78 -0
- package/runtime/templates/reports/schedule.template.md +12 -3
- package/runtime/templates/reports/task-brief.template.md +2 -2
- package/runtime/templates/worker-prompt-preamble.md +108 -0
- package/runtime/validators/lib/fixtures.sh +30 -0
- package/runtime/validators/lib/runners.sh +1 -1
- package/runtime/validators/validate-implementation-plan-stages.py +211 -0
- package/runtime/validators/validate-run.py +121 -26
- package/runtime/validators/validate-workflow.sh +2 -2
- package/runtime/validators/validate_improvement_report.py +275 -0
- package/src/config.mjs +18 -0
- package/src/install.mjs +41 -14
- package/src/setup.mjs +133 -1
- package/src/uninstall.mjs +27 -3
- package/runtime/skills/okstra-history/SKILL.md +0 -165
- package/runtime/skills/okstra-logs/SKILL.md +0 -173
- package/runtime/skills/okstra-report-finder/SKILL.md +0 -111
- package/runtime/skills/okstra-status/SKILL.md +0 -246
- package/runtime/skills/okstra-time-summary/SKILL.md +0 -172
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# okstra — agent guidance (managed)
|
|
2
|
+
|
|
3
|
+
This file is shipped by `okstra install` and surfaced into the active project
|
|
4
|
+
through two channels by `okstra setup`:
|
|
5
|
+
|
|
6
|
+
- **Claude Code**: `<PROJECT>/CLAUDE.md` gets an `@.project-docs/okstra/CLAUDE.md`
|
|
7
|
+
import block (per-project symlink to this template). Existing user content
|
|
8
|
+
in `CLAUDE.md` is preserved — the block lives between
|
|
9
|
+
`<!-- okstra:claude-md:begin ... -->` markers.
|
|
10
|
+
- **Codex / Aider / other AGENTS.md-aware agents**: `<PROJECT>/AGENTS.md` is
|
|
11
|
+
created as a direct symlink to this template — but **only if AGENTS.md does
|
|
12
|
+
not already exist**. okstra never overwrites a hand-written AGENTS.md.
|
|
13
|
+
|
|
14
|
+
It is **owned by the okstra package**: every `okstra install` overwrites
|
|
15
|
+
`~/.okstra/templates/okstra.CLAUDE.md` from the version currently on disk in
|
|
16
|
+
the npm package. Edits made directly to this file (or to the per-project
|
|
17
|
+
`<PROJECT>/.project-docs/okstra/CLAUDE.md` / `<PROJECT>/AGENTS.md` symlinks)
|
|
18
|
+
will be lost on the next install. Put project-specific overrides outside the
|
|
19
|
+
managed block in `<PROJECT>/CLAUDE.md` instead (or replace `AGENTS.md` with
|
|
20
|
+
your own file — okstra will respect it).
|
|
21
|
+
|
|
22
|
+
## What okstra is
|
|
23
|
+
|
|
24
|
+
okstra is a multi-agent cross-verification orchestrator. A Claude lead drives
|
|
25
|
+
the run; codex / gemini / claude workers produce independent analyses; a
|
|
26
|
+
report writer worker synthesises the final report. Day-to-day usage happens
|
|
27
|
+
through slash commands inside a Claude Code session.
|
|
28
|
+
|
|
29
|
+
## Slash commands
|
|
30
|
+
|
|
31
|
+
| Command | When to use |
|
|
32
|
+
| --- | --- |
|
|
33
|
+
| `/okstra-setup` | First-time bootstrap in a new project — writes `.project-docs/okstra/project.json`, provisions `.claude/settings.local.json` and `.project-docs/okstra/CLAUDE.md`. |
|
|
34
|
+
| `/okstra-brief` | Turn a requirements doc / ticket / link / conversation into the markdown task brief consumed by `okstra-run`. |
|
|
35
|
+
| `/okstra-run` | Start a cross-verification task in the current session. Drives the interactive wizard. |
|
|
36
|
+
| `/okstra-status` | Inspect overall okstra task status, current phase, blockers, next recommended phase. Also flips a task's workStatus (todo / in-progress / blocked / done). |
|
|
37
|
+
| `/okstra-history` | List past runs, review previous results, queue a re-run. |
|
|
38
|
+
| `/okstra-schedule` | Generate a consolidated work plan across multiple tasks in a task-group. |
|
|
39
|
+
| `/okstra-convergence` | Iterative cross-verification between workers in Phase 5.5; classify findings by consensus level. |
|
|
40
|
+
| `/okstra-report-finder` | Locate the final-report path for a given task key, or read a past report to continue work. |
|
|
41
|
+
| `/okstra-report-writer` | Author / persist the final synthesis report (Phase 6–7). |
|
|
42
|
+
| `/okstra-time-summary` | Per-task / per-worker elapsed time breakdown for a task-id. |
|
|
43
|
+
| `/okstra-logs` | List, size, and clean up `*.log` sidecars from past worker dispatches. |
|
|
44
|
+
|
|
45
|
+
Type the slash command — do not paraphrase the trigger words into prose.
|
|
46
|
+
|
|
47
|
+
## Workflow boundaries
|
|
48
|
+
|
|
49
|
+
- The Claude lead **does not** produce independent worker findings. It
|
|
50
|
+
dispatches workers, monitors them, and drives convergence. Analysis is the
|
|
51
|
+
workers' job.
|
|
52
|
+
- Worker wrappers (`okstra-codex-exec.sh`, `okstra-gemini-exec.sh`) run from
|
|
53
|
+
`~/.okstra/bin/` and are pre-authorised via `<PROJECT>/.claude/settings.local.json`
|
|
54
|
+
(a symlink to `~/.okstra/templates/settings.local.json`). Do **not**
|
|
55
|
+
duplicate those permissions in the user's global `~/.claude/settings.json`.
|
|
56
|
+
- Each okstra run provisions a task-scoped git worktree under
|
|
57
|
+
`~/.okstra/worktrees/`. Files synced from the main checkout are governed by
|
|
58
|
+
`worktreeSyncDirs` in `.project-docs/okstra/project.json` (default:
|
|
59
|
+
`.project-docs`, `.scratch`, `graphify-out`, `.claude`).
|
|
60
|
+
- QA gating is configured via `qaCommands` in the same `project.json`.
|
|
61
|
+
Verifiers reject mutation-style commands (`--fix`, `--write`, `cargo update`,
|
|
62
|
+
`npm install`, etc.); declare check-only variants only.
|
|
63
|
+
|
|
64
|
+
## Coding Principles (BLOCKING — agent self-checks before declaring work complete)
|
|
65
|
+
|
|
66
|
+
These apply to every worker writing or editing project code (executor and verifiers alike). Enforcement is self-check: the agent runs each rule's check immediately before reporting "done"; skipping a check is itself a contract violation.
|
|
67
|
+
|
|
68
|
+
1. **DRY — single reference point** — One implementation per capability. A second caller signals "extract shared logic", not "duplicate path".
|
|
69
|
+
2. **KISS — simplest sufficient design** — Add abstraction layers (helper modules, strategy/factory, configuration flags, indirection) only when an existing concrete call site requires them. *Self-check: name the second caller now; if you cannot, inline.* *Example violation: extracting `formatUserName()` helper used by exactly one call site, "in case we need it elsewhere".*
|
|
70
|
+
3. **YAGNI — build only for current requirements** — No speculative parameters, optional configs, "future-proof" hooks, or pre-1.0 backwards-compat shims. *Self-check: every newly introduced identifier has ≥1 current internal caller, or was explicitly user-requested.* *Example violation: adding `options?: { retries?, timeout? }` parameter when the current call passes nothing.*
|
|
71
|
+
4. **Clean Code — names carry WHAT, comments explain WHY** — Identifiers must make intent obvious; if a comment would describe WHAT the code does, rename instead. Reserve comments for non-obvious WHY (hidden constraint, workaround, surprising invariant). Delete dead/commented-out code immediately — git history is the archive. *Example — WHAT (rename instead): `// increment counter` above `i++`. WHY (keep): `// retry up to 3x: upstream returns 502 during deploys`.*
|
|
72
|
+
5. **Function length cap — 50 lines** — A single function/method body must stay within 50 lines, counting only effective code (exclude blank lines, comments, and pure data declarations such as large enums, lookup tables, or constant maps). Crossing the cap is an extraction signal, not a style nit. *Self-check: for any function newly added or substantially edited, count effective body lines; if over 50, split before declaring complete, or surface the violation and confirm with the user.*
|
|
73
|
+
|
|
74
|
+
## Phase model (high level)
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
Phase 1 context-loader → load brief + project context
|
|
78
|
+
Phase 2 team-contract → confirm lead + worker roster
|
|
79
|
+
Phase 3 worker dispatch → workers run independently in parallel
|
|
80
|
+
Phase 4 result collection → gather worker outputs
|
|
81
|
+
Phase 5 cross-review → workers critique each other's findings
|
|
82
|
+
Phase 5.5 convergence → classify findings, iterate until stable
|
|
83
|
+
Phase 6 report-writer dispatch → synthesise final report
|
|
84
|
+
Phase 7 artifact persistence → manifests, central index update
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
The lead skill (`okstra-run`) advances phases automatically. Use
|
|
88
|
+
`/okstra-status` to inspect the current phase and `next-recommended-phase`
|
|
89
|
+
hint when resuming.
|
|
90
|
+
|
|
91
|
+
## Troubleshooting hints
|
|
92
|
+
|
|
93
|
+
- "okstra runtime missing" / `InstallationError` — run
|
|
94
|
+
`npx okstra@latest install` (or `okstra ensure-installed`).
|
|
95
|
+
- Worker dispatch refused by Claude Code permissions — verify
|
|
96
|
+
`<PROJECT>/.claude/settings.local.json` is a symlink to
|
|
97
|
+
`~/.okstra/templates/settings.local.json`; re-run `/okstra-setup` to
|
|
98
|
+
re-provision.
|
|
99
|
+
- `qa-command not configured: <category>` warnings — add the missing
|
|
100
|
+
`lint` / `format` / `typecheck` / `test` entries to `qaCommands` in
|
|
101
|
+
`project.json`.
|
|
102
|
+
|
|
103
|
+
For deeper documentation see the package README and `docs/` in the okstra
|
|
104
|
+
source tree.
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: brief
|
|
3
|
+
brief-id: <ticket-id>-<file-title> # equals the filename stem
|
|
4
|
+
parent-id: self # always `self` at root; child briefs use parent's brief-id
|
|
5
|
+
ticket-id: <LIN-1234 | PROJ-42 | gh-repo-123 | notion-abcdef12 | "">
|
|
6
|
+
source-type: <file | linear | jira | github | notion | url | user-input>
|
|
7
|
+
task-group: <task-group>
|
|
8
|
+
depth: 0 # 0=parent/single, 1=child, 2=grandchild, ...
|
|
9
|
+
created: <YYYY-MM-DD>
|
|
10
|
+
generator: okstra-brief
|
|
11
|
+
reporter-confirmations: <complete | partial | pending | skipped> # set by Step 6.5
|
|
12
|
+
# codebase-scan variant frontmatter (omit for reporter-input briefs):
|
|
13
|
+
scope: <reporter-input | codebase> # 'codebase' for codebase-scan variant; omit for reporter-input variant
|
|
14
|
+
priority-lenses: [] # codebase-scan only: lens enum subset, size 1..4
|
|
15
|
+
scan-scope: [] # codebase-scan only: 1+ paths
|
|
16
|
+
out-of-scope: [] # codebase-scan only: optional
|
|
17
|
+
candidate-cap: 8 # codebase-scan only: 1..12, default 8
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# Task Brief: <task_group>/<filename-without-ext>
|
|
21
|
+
|
|
22
|
+
> Generated: okstra-brief · <YYYY-MM-DD>
|
|
23
|
+
> Source type: <file | linear | jira | github | notion | url | user-input>
|
|
24
|
+
> Tracker key (if any): <LIN-1234 | PROJ-42 | gh-repo-123 | notion-abcdef12>
|
|
25
|
+
> Parent brief (child briefs only): <relative path>
|
|
26
|
+
> Recommended next phase: <requirements-discovery | error-analysis> ← from Step 6
|
|
27
|
+
> Handoff contract: see `prompts/profiles/_common-contract.md` § "Brief handoff contract"
|
|
28
|
+
|
|
29
|
+
## Source Material
|
|
30
|
+
|
|
31
|
+
<!-- author guidance — strip out at fill-in time:
|
|
32
|
+
Paste each source separately and as-is. No paraphrasing, summarizing, or
|
|
33
|
+
restructuring. Format conversion (e.g. Jira ADF → Markdown) is allowed and
|
|
34
|
+
must be annotated in the header meta. Heading was originally
|
|
35
|
+
"Source Material (verbatim — do not modify)" — the parenthetical is a
|
|
36
|
+
reviewer note, not body text.
|
|
37
|
+
-->
|
|
38
|
+
|
|
39
|
+
### Source 1 — <type: file | linear | jira | github | notion | url | user-input>
|
|
40
|
+
|
|
41
|
+
- ref: <abs file path | LIN-1234 | https://... | "conversation synthesis">
|
|
42
|
+
- fetched-via: <Read | mcp__linear__getIssue | mcp__notion__... | gh issue view | WebFetch | user-paste>
|
|
43
|
+
- fetched-at: <YYYY-MM-DD HH:MM>
|
|
44
|
+
- format: <as-is | "Jira ADF → Markdown (semantics preserved)" | "tool-truncated — missing body requested from reporter">
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
<Paste the raw source here without changing a single character.>
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
<!-- Repeat `### Source N — …` blocks as needed. -->
|
|
51
|
+
|
|
52
|
+
## Context
|
|
53
|
+
|
|
54
|
+
<Background / scope / why now. If self-evident from Source Material, quote
|
|
55
|
+
it briefly and stop. Use the blockquote below when augmentation is needed.>
|
|
56
|
+
|
|
57
|
+
> augmented: <label> — <Interpretation added by the skill or user.>
|
|
58
|
+
|
|
59
|
+
<!-- label MUST be one of: `evidence-link` / `format-conversion` /
|
|
60
|
+
`terminology-mapping` / `intent-inference`. Do NOT add any extra
|
|
61
|
+
interpretation outside the `> augmented:` blockquote. -->
|
|
62
|
+
|
|
63
|
+
## Problem / Symptom
|
|
64
|
+
|
|
65
|
+
<Current state. For bugs: repro / observed / expected. For greenfield: gap
|
|
66
|
+
between current and desired.>
|
|
67
|
+
|
|
68
|
+
<!-- Same source-quote + `> augmented:` rule as the Context section. -->
|
|
69
|
+
|
|
70
|
+
## Desired Outcome
|
|
71
|
+
|
|
72
|
+
<Shape of success.>
|
|
73
|
+
|
|
74
|
+
<!-- Do NOT prescribe a solution — that belongs to implementation-planning. -->
|
|
75
|
+
|
|
76
|
+
## Constraints
|
|
77
|
+
|
|
78
|
+
<Deadlines, compatibility, technical/operational limits. Use _(none)_ if
|
|
79
|
+
none.>
|
|
80
|
+
|
|
81
|
+
## Scan Scope
|
|
82
|
+
|
|
83
|
+
<!-- codebase-scan variant only — omit this section for reporter-input briefs. -->
|
|
84
|
+
<!-- Author guidance: one bullet per `scan-scope` path with a short description of what lives there. -->
|
|
85
|
+
|
|
86
|
+
- <path>: <one-line description of contents / responsibility>
|
|
87
|
+
|
|
88
|
+
## Priority Lenses
|
|
89
|
+
|
|
90
|
+
<!-- codebase-scan variant only — omit this section for reporter-input briefs. -->
|
|
91
|
+
<!-- Author guidance: one bullet per priority lens explaining why it is a priority for THIS scope. -->
|
|
92
|
+
|
|
93
|
+
- <lens>: <short rationale tying this lens to the scope's risk surface>
|
|
94
|
+
|
|
95
|
+
## Related Artifacts
|
|
96
|
+
|
|
97
|
+
- <file path / URL / issue / prior task-key>
|
|
98
|
+
|
|
99
|
+
## Open Questions
|
|
100
|
+
|
|
101
|
+
<!-- author guidance — strip out at fill-in time:
|
|
102
|
+
Prefix every row with one of these signals so the next phase knows how to
|
|
103
|
+
handle it. Free-form rows are allowed only as `general:`.
|
|
104
|
+
|
|
105
|
+
Allowed signals:
|
|
106
|
+
- `general: <unresolved question the user flagged>`
|
|
107
|
+
- `terminology: <reporter word> — needs canonical resolution against
|
|
108
|
+
<PROJECT_ROOT>/.project-docs/okstra/glossary.md`
|
|
109
|
+
- `intent-check: <restated inference> — confirm with reporter`
|
|
110
|
+
(auto-paired with every `intent-inference` augmentation)
|
|
111
|
+
- `conversion-block: <reporter statement> — could not be mapped to project
|
|
112
|
+
vocabulary; reporter query required`
|
|
113
|
+
- `adr-candidate: <topic>` — signal only; `implementation-planning`
|
|
114
|
+
evaluates and, if accepted, drafts a decision file at
|
|
115
|
+
`<PROJECT_ROOT>/.project-docs/okstra/decisions/<NNNN>-<slug>.md`.
|
|
116
|
+
|
|
117
|
+
Use `_(none)_` only if every signal is empty. `intent-check:` and
|
|
118
|
+
`conversion-block:` rows that are answered in Step 6.5 are NOT removed
|
|
119
|
+
from this list — they receive a `[CONFIRMED <YYYY-MM-DD> → RC-N]`
|
|
120
|
+
marker that links to the corresponding entry under
|
|
121
|
+
`## Reporter Confirmations`.
|
|
122
|
+
-->
|
|
123
|
+
|
|
124
|
+
- <fill in one row per signal, or replace with `_(none)_`>
|
|
125
|
+
|
|
126
|
+
## Reporter Confirmations
|
|
127
|
+
|
|
128
|
+
<!-- Populated by Step 6.5. Each subsection records one reporter answer
|
|
129
|
+
verbatim, with a link back to the originating `Open Questions` row. -->
|
|
130
|
+
|
|
131
|
+
_(none — pending or skipped)_
|
|
132
|
+
|
|
133
|
+
<!-- when populated, the shape is:
|
|
134
|
+
### RC-1 — <intent-check: or conversion-block: row id / topic>
|
|
135
|
+
- asked: <YYYY-MM-DD HH:MM>
|
|
136
|
+
- linked-row: `<exact Open Questions row text>`
|
|
137
|
+
- answer (verbatim):
|
|
138
|
+
|
|
139
|
+
> <reporter's answer, byte-for-byte>
|
|
140
|
+
-->
|
|
141
|
+
|
|
142
|
+
## Augmentation
|
|
143
|
+
|
|
144
|
+
<!-- author guidance — strip out at fill-in time:
|
|
145
|
+
Cross-references / interpretation / context added by the user or skill that
|
|
146
|
+
is not in the original source. May be empty. Keep this section visually
|
|
147
|
+
separated from Source Material — never inline it inside Source Material.
|
|
148
|
+
|
|
149
|
+
Every entry below must start with one of the four labels:
|
|
150
|
+
`evidence-link` / `format-conversion` / `terminology-mapping` /
|
|
151
|
+
`intent-inference`. Unlabelled entries are forbidden.
|
|
152
|
+
-->
|
|
153
|
+
|
|
154
|
+
### Domain alignment
|
|
155
|
+
|
|
156
|
+
<!-- author guidance — strip out at fill-in time:
|
|
157
|
+
Observations from Step 3b and the outcome of Step 4.5 (glossary applied
|
|
158
|
+
vs. skipped). The actual glossary edits live in
|
|
159
|
+
`<PROJECT_ROOT>/.project-docs/okstra/glossary.md` when applied; this
|
|
160
|
+
section records what happened. Decision candidates are NOT recorded here —
|
|
161
|
+
they flow through `Open Questions` as `adr-candidate:` rows for
|
|
162
|
+
`implementation-planning` to evaluate (and, if accepted, draft into
|
|
163
|
+
`<PROJECT_ROOT>/.project-docs/okstra/decisions/`).
|
|
164
|
+
|
|
165
|
+
Allowed entry shapes:
|
|
166
|
+
- `terminology-mapping: <reporter word> → <okstra glossary canonical>` —
|
|
167
|
+
routine glossary alignment, paired with `terminology:` in Open Questions
|
|
168
|
+
when unresolved.
|
|
169
|
+
- `terminology-mapping: applied glossary: <term> → <PROJECT_ROOT>/.project-docs/okstra/glossary.md`
|
|
170
|
+
- `terminology-mapping: skipped glossary: <term> = <definition>` —
|
|
171
|
+
Step 4.5 outcomes.
|
|
172
|
+
Use `_(none)_` if every alignment entry is empty.
|
|
173
|
+
-->
|
|
174
|
+
|
|
175
|
+
- <fill in one entry per alignment, or replace with `_(none)_`>
|
|
176
|
+
|
|
177
|
+
### Evidence links (file / symbol resolution)
|
|
178
|
+
|
|
179
|
+
<!-- Allowed entry shapes:
|
|
180
|
+
`evidence-link: <reporter phrase> → <relative path>:<line>` or
|
|
181
|
+
`evidence-link: <reporter phrase> → <symbol> in <relative path>`.
|
|
182
|
+
Use `_(none)_` if none. -->
|
|
183
|
+
|
|
184
|
+
- <fill in one entry per link, or replace with `_(none)_`>
|
|
185
|
+
|
|
186
|
+
### Intent inferences
|
|
187
|
+
|
|
188
|
+
<!-- Every entry here is an unverified hypothesis. Each one MUST have a
|
|
189
|
+
paired `intent-check:` row under Open Questions.
|
|
190
|
+
|
|
191
|
+
Allowed entry shape:
|
|
192
|
+
`intent-inference: <reporter phrase> → <qualitative restatement>`
|
|
193
|
+
(qualitative only — never invent numeric thresholds).
|
|
194
|
+
Use `_(none)_` if none. -->
|
|
195
|
+
|
|
196
|
+
- <fill in one entry per inference, or replace with `_(none)_`>
|
|
197
|
+
|
|
198
|
+
### Format conversions
|
|
199
|
+
|
|
200
|
+
<!-- Allowed entry shape:
|
|
201
|
+
`format-conversion: <ref> — <e.g. Jira ADF → Markdown, semantics preserved>`.
|
|
202
|
+
Use `_(none)_` if none. -->
|
|
203
|
+
|
|
204
|
+
- <fill in one entry per conversion, or replace with `_(none)_`>
|