Skip to content

feat: split SRS into product requirements vs technical specs (srs-improved.md)#1

Open
paologaleotti wants to merge 5 commits into
buildo:mainfrom
paologaleotti:feat/redattore-srs-improved
Open

feat: split SRS into product requirements vs technical specs (srs-improved.md)#1
paologaleotti wants to merge 5 commits into
buildo:mainfrom
paologaleotti:feat/redattore-srs-improved

Conversation

@paologaleotti

@paologaleotti paologaleotti commented Jun 15, 2026

Copy link
Copy Markdown

What

Adds a sixth role — the redattore — that runs in parallel with the final report and produces a derivative deliverable, srs-improved.md: every [Work Item N] section is restructured into two subsections:

  • Requisiti di prodotto — the what/why, caller-visible behavior, business rules, error semantics, backward-compat promises
  • Specifiche tecniche — endpoints, table/column/event/schema identifiers, module names, implementation/merge-ordering notes

Why

The SRS mixes product intent and implementation detail in the same paragraphs. Splitting them lets a PO validate the product part without parsing DDL, and gives a cleaner ground truth. Output is markdown for manual import into a new Confluence page (Insert > Markup > Markdown) — the original page is never touched.

Design

  • Variant-agnostic & analysis-independent: reads only the original SRS (no findings/reviews/code/gh), so it is identical across the prescriptive/goals arms and never alters requirement meaning. Output path is variant-aware via base.
  • Content-conservative: each original sentence is redistributed into exactly one subsection — no duplication, no dropping, no invented facts; code identifiers/SQL kept verbatim; non-WI sections passed through; empty subsections suppressed for title-only WIs.
  • Budget-gated skip-with-flag like the other optional roles; surfaced in RR-5.

Driver-hygiene note (documented in meta.whenToUse)

On a re-run of an existing slug, the driver must delete derived artifacts first (keeping repo-map/): Write-tool roles without Bash (the redattore) are refused by the tool on a pre-existing un-Read file and would silently keep the stale version; leftover prior-run files also pollute the findings/*.md glob. The redattore prompt additionally Read-before-overwrites and reads the file back to confirm.

Adds a sixth role, the redattore, that runs in parallel with the final
report and restructures the original SRS into a derivative markdown
deliverable: every "[Work Item N]" section is split into two subsections
— "Requisiti di prodotto" (the what/why, caller-visible behavior) and
"Specifiche tecniche" (endpoints, schema/event identifiers, impl notes).

Properties:
- variant-agnostic and analysis-independent: reads only the original SRS
  (no findings/reviews/code/gh), so it is identical across the
  prescriptive/goals arms and never alters requirement meaning.
- content-conservative: each original sentence is redistributed into
  exactly one subsection (no duplication, no dropping, no invented facts);
  code identifiers/SQL kept verbatim; non-WI sections passed through.
- output is markdown for manual import into a NEW Confluence page
  (Insert > Markup > Markdown); the original page is never touched.
- budget-gated skip-with-flag like the other optional roles; surfaced in RR-5.

Also documents a driver-hygiene precondition in meta.whenToUse: on a
re-run of an existing slug the driver must delete derived artifacts first
(keeping repo-map/), because Write-tool roles without Bash (the redattore)
are refused on a pre-existing un-Read file and would silently keep the
stale version, and leftover prior-run files pollute the findings/*.md glob.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@paologaleotti paologaleotti changed the title feat: redattore step — split SRS into product requirements vs technical specs (srs-improved.md) feat: split SRS into product requirements vs technical specs (srs-improved.md) Jun 15, 2026
paologaleotti and others added 2 commits June 15, 2026 15:50
- restore the self-check rule: REDATTORE_SCHEMA.summary asks the agent to
  state a conservation check was done, but the prompt-simplification had
  dropped that rule — re-add it (rule 6) so schema and prompt agree and the
  content-conservation safety-net is back.
- trim the meta.whenToUse driver-hygiene note: the redattore now
  Read-before-overwrites and reads back to confirm, so it does NOT silently
  keep a stale file; the genuine remaining reason for the pre-clean is
  findings/*.md glob pollution from differently-named prior-run files
  (read by report/ricognitore). Reworded accordingly.
- document the redattore in the role-traceability doc comment (added role,
  no agents/*.md counterpart, variant-agnostic).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The redattore reads only the original SRS and now Read-before-overwrites
its own output, so it needs no driver pre-clean. The findings/*.md glob
pollution the note described concerns report/ricognitore — pre-existing
upstream roles unrelated to this feature — so it does not belong in this
PR. Restore upstream's original whenToUse verbatim.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@paologaleotti paologaleotti marked this pull request as ready for review June 15, 2026 15:04
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