SCCG tool-integration conformance — implementation plan
- Status: Planned.
- Date: 2026-08-19
- Authority: Reference until adopted; the ADRs it cites remain canonical on conflict.
- Governing decision: ADR 0013
- Depends on: Provider-neutral AI reviews and projectless MCP, phases A1, A5 and C1.
- Upstream contract: the SCCG Tool integration page, published from the
external/safety-case-core-guidelinessubmodule astool-integration.mdand the generated files underdist/.
1. Why this page exists, and what it is not
The sibling plan aligns the two review paths: it extracts the review
layer, defines ReviewPlan, fixes staleness to a scope hash, and gives MCP
prepare_sccg_review / submit_sccg_review_result so that built-in and
external review differ only in who performs inference (§18.3 there).
That is the plumbing, and it is already designed. This page is about what flows through it. An audit against the SCCG tool-integration guideline found that the review method is missing one of the five workflow stages entirely, cannot express most of the repairs SCCG prescribes, and gives an external client a materially weaker contract than the built-in path. None of that is addressed by the sibling plan — it contains no mention of pre-checks, of which data packages are built, or of proposing new elements.
Where the two disagree, the sibling plan and the ADRs win. This page adds; it does not override.
2. Already decided — do not re-litigate
Recorded here so this plan is not mistaken for a competing design.
| Question | Settled by |
|---|---|
| Should built-in and MCP review share one method, contract and validator? | Yes — ADR 0013 |
May agent depend on review? |
Yes — ADR 0013; the layer gate already permits it (check_layer_gates.cmake:68) |
May mcp depend on review directly? |
No — through agent only |
| How does MCP obtain a review? | prepare_sccg_review → external inference → submit_sccg_review_result, sibling plan §18 |
| When is a result stale? | Context generation or scope hash changed — never the global working revision, sibling plan §13.5 |
| Who may accept a suggestion? | A human. No path accepts its own — ADR 0010, ADR 0013 |
| Should concurrent AI review and MCP staging be mutually excluded? | No. The user is a third writer to the same draft (DraftSource::Human), so a lock cannot close the window, and MCP groups stay Building unboundedly. Promotion stays exclusive via DraftWorkspaceState::Promoting. |
| May an agent review an element it authored itself? | Yes, and the record must say so — §5.6, decided 2026-08-19 |
Where does EVIDENCE_BASIS come from? |
The evidence register, once it links real evidence. Exposure is then a per-item consent decision — §S4, decided 2026-08-19 |
3. Correction: Phase A1 is marked complete but is not
Sibling plan §22 marks Phase A1 complete (merged in #391). One of its tasks did not land:
- [ ] Move suggestion mapping.
Suggestion mapping is still ProposalActions::CreateAiGenerated in
src/app/actions/proposal_actions.cpp. Because it lives in app, agent
cannot reach it, so Phase C1 cannot meet its exit criterion "built-in and MCP
review use the same result validator" without doing this first.
af_agent also still links only af_common, and the MCP executable's link
line carries no af_review, so the ADR 0013 dependency was never wired even
though the gate allows it.
Action: reopen A1's remaining task as phase S1 below, and correct the status line in the sibling plan from "complete" to "complete except suggestion mapping (see SCCG conformance plan, S1)".
4. The gaps
Evidence for each is in the audit that produced this page; file references are
current as of 2026-08-19, against main.
Work in flight that changes G3 and G5
Branch feat/mcp-authoring-guidance (phases 1–3 of
#406, design page
docs/features/mcp-authoring-quality-plan.md) is not merged and has no open
PR as of 2026-08-19, but substantially overlaps two gaps below. It:
- widens
CheckStagedArgumentfrom four guideline IDs to eleven — AR.1, AR.2, CL.2, CL.5, CL.6, EV.1, EV.7, EV.8, LF.3, RD.1, RD.4; - adds
StagedFinding::check_id, bound to the catalog, and serializes it to MCP so findings deduplicate across staging calls; - delivers authoring doctrine through the always-land MCP channels and widens the prompt-quoted guideline sets;
- adds a
check_operationspre-flight tool and refusessubmit_change_groupwhile Problem findings stand.
It does not touch src/review, proposal_actions.cpp or
ai_review_controller.cpp, so G1, G2 and G4 — and phases S1, S2, S4, S5 — are
unaffected by it.
This plan assumes that branch lands. S3 and S6 are scoped to what remains after it does. If it is abandoned, S3 and S6 grow back to their pre-#406 size.
One defect it introduces, which S3 must fix. The AR.2 check now carries the
check ID check-explicit-strategy, but still tests a strategy that develops
into nothing. SCCG's check-explicit-strategy is the opposite question — "a
claim is decomposed without an explicit reasoning step", firing on a Goal
with children and no strategy, with expected_data SEL, CHILDREN, STRATEGY.
Wearing the registry's ID while answering a different question is worse than
carrying no ID: a tool that reports check-explicit-strategy as clean will be
read as having run SCCG's check, and it has not.
G1 — The result contract cannot express a structural repair
BuildExpectedAiReviewResponseSchemaText() offers exactly two fix-carrying
fields, suggested_element_text and its legacy alias
suggested_claim_wording. Both mean replace the reviewed element's text.
suggested_fix is prose that only becomes a review-comment message.
SCCG's prescribed repair is frequently to add an element:
| Guideline | Repair SCCG describes |
|---|---|
| AR.2 | Insert an explicit Strategy between a goal and its children |
| EV.1 | Add a Solution, or mark the claim undeveloped |
| CL.3, AR.6, AR.7, RD.1, RD.3 | Externalize scope, definitions or dependencies into Context / Assumption / Justification |
| SU.2 | Convert an assumption into a Claim and re-parent it |
| SU.11 | Raise a challenge as a Counter Claim element |
| CL.5 | Define the bounding term once (CreateTerm) |
(Rows updated for SCCG 0.8.0, which retired AR.3 — now AR.7 and AR.6 — SU.9 —
now SU.2 — and RD.6 — now RD.3 and SU.2. Since that release the request no longer
carries a list like this one at all: each guideline's own tool.repair, which
SCCG publishes for all 45, is sent with it, and the response contract translates
SCCG's repair vocabulary into operations once.)
This is not a draft-model limitation. core::reviews::PatchOperationType
already defines twenty operations including every Create* above, and MCP
stages multi-operation groups through them today.
G2 — Suggestion mapping stages one operation on one element
CreateAiGenerated resolves the anchor as the reviewed element and stages a
single UpdateElementText. Everything around it — revision guarding,
DraftSource::SccgAiReview provenance, guideline linkage, group lifecycle —
is already correct and would carry a structural group unchanged.
G3 — Workflow stage 4, deterministic pre-checks, never runs
SCCG publishes five pre-checks in dist/prechecks.json. Both parsers read them
into GuidelinesDocument::prechecks; nothing reads that vector. The only
reference outside the two parsers is the field declaration.
A partial, divergent implementation exists in core::sccg::CheckStagedArgument,
wired only into draft staging, never into review, and not keyed by pre-check ID:
| SCCG pre-check | Guideline | Implemented |
|---|---|---|
check-evidence-trace |
EV.1 | Yes, as the claim-without-support advisory |
check-explicit-strategy |
AR.2 | No — the AR.2 check present is the inverse (strategy with no children) |
check-evidence-citation-precision |
EV.4 | No |
check-evidence-control-attributes |
EV.7 | No |
check-evidence-state-fixed |
EV.8 | No |
check-explicit-strategy matters most for MCP authoring: sub-goals added under
a goal with no reasoning step is the characteristic LLM output, and it is the
one that is absent.
There is a second-order defect behind it. Attaching a child allocates a new
relationship element (ids.Next("R")), and CollectChangedFields compares
element fields, so the parent goal is never marked Modified and is filtered
out of changed_element_ids before any check sees it. Implementing
check-explicit-strategy without widening that scope input would produce a
check that never fires.
G4 — Data-package coverage
Built: the profile's selected-element package, PARENT, CHILDREN,
STRATEGY, DIRECT_CONTEXT, INHERITED_CONTEXT, EVIDENCE_PATH,
EVIDENCE_ITEM. (This read SEL when the page was written; SCCG 0.7.0
replaced that one generic package with one per element role — see §10.)
Not built: EVIDENCE_BASIS, PROJECT_GLOSSARY, STANDARD_LINKS,
CHANGE_HISTORY, USER_REVIEW_INTENT.
Unavailability is reported honestly to the model with a required flag, which
is the right behaviour. Two cases still need closing:
EVIDENCE_BASISis required byevidence_review. Every evidence review therefore runs with a required package declared missing, degrading the profile SCCG designed for sufficiency judgement (EV.5, EV.6, LF.5, LF.7, SU.3, SU.6–SU.8) to citation hygiene. The underlying artifacts do not exist in the tool yet — see S4 for the decided route.PROJECT_GLOSSARYandCHANGE_HISTORYdescribe data the tool already holds — terms vialist_terms(AF-AI-022), and review items, draft groups and the audit log. CL.4 and AR.6 are currently judged without definitions the project has already written down.
USER_REVIEW_INTENT has no surface at all: a user cannot say what they are
worried about.
G5 — MCP gets a materially weaker SCCG contract
- The four prompts each quote a hand-picked guideline ID list written in
code — eight IDs for
draft_argument_from_standard, then six, five and one — against 48 in the catalog and 34 inclaim_review. The guidance an agent gets when it writes a claim is a different, hand-maintained set from the criteria applied when the same claim is reviewed. It will drift as SCCG revises the profiles, and nothing detects that. - No tool exposes review profiles, data packages or pre-checks.
StagedFinding::statement— the guideline's own wording — is populated and then dropped by both serializers, so an agent receives the tool's paraphrase without the rule, and nosccg://guideline/<id>pointer to fetch it.- Findings carry no
review_profile_idand no statement of what was not checked, so an empty array reads as "compliant" when it means "four of forty-eight rules found nothing".
5. Design decisions this plan adds
5.1 A finding carries proposed operations
Extend the result contract with proposed_operations[] per finding, drawn from
the existing PatchOperationType vocabulary. Rejected alternative: deriving
operations from prose suggested_fix. The model knows which repair it means;
re-deriving it is guesswork, and a wrong guess writes into a safety argument.
suggested_element_text stays as the single-operation shorthand it is today,
normalized into one UpdateElementText so existing behaviour and tests are
preserved.
This is consistent with the sibling plan, whose validator already lists "valid suggestion types" and "no unexpected patch operation" (§13.4) and whose committer already creates "SCCG draft groups for supported suggestions" (§13.6). Neither says which operations are permitted; this does.
5.2 The review profile's data packages define the blast radius
A review may propose operations that touch elements it was shown, plus new elements attached to those. It may not touch a branch it never saw.
The rule is derived from SCCG rather than invented: claim_review is given
SEL, PARENT, CHILDREN, STRATEGY, DIRECT_CONTEXT, INHERITED_CONTEXT and
EVIDENCE_PATH, and those packages already enumerate their element IDs. Scope is
the set of IDs the plan included.
It is also the same set the scope hash covers, so one definition of "what this review touched" serves both staleness and authorization.
Layered checks, in order, all of which already exist:
core::CanAddChildElement— legal attachment for the target's rolecore::sccg::CheckStagedArgument— SCCG structural rules on the previewcore::CheckGsnWellFormedness— GSN validity on the preview
A proposal that fails is refused in the call that made it, the way MCP staging already refuses a malformed batch.
5.3 Pre-checks become a real stage, keyed by SCCG ID
Add review::sccg::RunPrechecks(model, tree, element, profile) returning
candidate signals carrying the SCCG pre-check ID and its interpretation
string. Feed the results into:
- the built-in prompt, as candidate signals;
- the
prepare_sccg_reviewpayload, identically; - the staging feedback path.
SCCG is explicit that these are boolean_candidate / missing_fields
signals — "candidate finding only; reviewer or AI judgment is still required".
The contract must carry that wording through rather than presenting a
pre-check hit as a finding.
5.4 One implementation of each mechanical check
CheckStagedArgument and the pre-check registry currently answer overlapping
questions differently. Consolidate on one implementation per check, in
review, keyed by pre-check ID, with two callers and two scopes:
| Caller | Scope | Trigger |
|---|---|---|
| Review method, stage 4 | The reviewed element and its packages | A review runs |
| Draft staging guardrail | Elements the change set touched | Every staging call |
Keep the checks that have no SCCG pre-check ID (strategy developing into nothing, solution with children, support cycles) as structural guardrails, but stop labelling them with a pre-check's guideline ID where they answer a different question.
Widen the staging scope input so a parent whose child set changed is included, per the relationship-element defect in G3.
5.5 Authoring guidance derives from the profile registry
Replace the hand-picked ID lists in src/mcp/guidance.cpp with a lookup
against the profiles an operation's output would be reviewed under, so writing
guidance and review criteria cannot drift. Add a test that fails if a prompt
cites a guideline ID absent from every profile it claims to serve.
5.6 Self-review is recorded, not prevented — decided 2026-08-19
An MCP-connected LLM both authors and reviews. ADR 0013's "neither path can accept its own suggestions" governs acceptance, not review. An agent that writes a claim, reviews it and finds nothing has produced a record that looks like independent scrutiny and is not.
Decided: allow it, and mark it. An agent checking its own work before submitting is useful and should not be blocked. What must not happen is that the resulting record is indistinguishable from an independent review.
- Record the executor in review provenance:
internal_providerorexternal_client:<session_id>. TheReviewRunRecordin sibling plan §14 is the right home. - Flag findings — and, importantly, clean results — whose reviewed elements were authored by the same session. A self-review that reports nothing is the case the mark exists for.
- Surface the mark wherever a human decides on the draft: the review panel and the promotion surface, not only the stored record.
Rejected: refusing a self-review. It would push agents toward submitting unchecked work, and the tool cannot tell an agent re-reviewing its own draft from one reviewing a colleague's without the provenance this adds anyway.
6. Phases
Each depends on the sibling plan's phases as noted. Tasks are deliberately sized so a phase is reviewable on its own.
S1 — Finish Phase A1: move suggestion mapping into review
Status: done — review::MapSuggestionsToDraftGroups, with af_review
linked into af_agent and the MCP executable.
Depends on: nothing. Blocks: S2, S5.
- [x] Move mapping out of
ProposalActions::CreateAiGeneratedintoreview::MapFindingsToDraftGroups, taking the plan and validated result and returning group requests plus operations. - [x] Leave
appowning only workspace calls and status messages. - [x] Link
af_reviewintoaf_agent; addaf_reviewto the MCP executable's link line. - [x] Correct the Phase A1 status line in the sibling plan.
Exit: behaviour unchanged; existing review tests pass untouched; a caller
with no app and no provider can map a validated result to group requests.
One deliberate behaviour change. Moving the mapping put it beside the
request builder and exposed that the two disagreed about which field carries an
element's text. The request showed the model whichever of content /
description was populated, falling back to name; the mapper chose by element
type. So a suggestion against a Term or Expression -- whose value is content
-- was staged into description, adding text nobody reviewed and leaving the
text they objected to standing. The two now share one preference order, and an
element read by its name is repaired with UpdateElementName rather than an
empty-field text write.
S2 — Scope hash, narrow form
Status: done — core::reviews::ComputeScopeSemanticHash over
review::ReviewedElementIds.
Depends on: S1. Blocks: S5.
Implements sibling plan §13.5 at the smallest useful width.
- [x] Record the reviewed element IDs on the plan (the union of the data packages' IDs).
- [x] Hash those elements rather than the whole model, replacing the
ComputeModelSemanticHash(working)comparison. - [x] Refuse only on scope-hash change (context generation is the MCP path's, and lands with S6).
Exit: an edit to an unrelated branch — by the user or by MCP — no longer discards a completed review; an edit to a reviewed element still does. Both directions tested.
S3 — Pre-checks (workflow stage 4)
Status: done — review::sccg::RunPrechecks, driven by the published
prechecks registry, with EV.4 the last check implemented.
Depends on: feat/mcp-authoring-guidance landing. Parallel with S1/S2.
Scoped to what remains after #406 phases 1–3. Two of the five pre-checks are substantively covered by that branch's EV.7 and EV.8 checks; this phase closes the rest and fixes the mislabelling.
- [x] Fix the
check-explicit-strategymislabelling. Either implement the Goal-with-children-and-no-strategy check the ID names, or move the strategy-develops-into-nothing check to an ID that describes it. Do not ship the current pairing. - [x] Implement
check-evidence-citation-precision(EV.4), the remaining unimplemented pre-check. - [x] Widen the staging scope input for the relationship-element defect — without it, a Goal-side check can never fire.
- [x]
review::sccg::RunPrechecks, so stage 4 exists on the review path, not only at staging time. Reuse the branch's check implementations rather than writing a second set (5.4). - [x] Distinguish the two registries in the code: the catalog's per-guideline
suggested_checksand the publishedprechecks.jsonare different things, and acheck_idfrom one must not be presented as the other. - [x] Surface pre-check results in the review prompt, carrying SCCG's own
interpretationwording.
Exit: all five SCCG pre-checks run, are individually tested, and are named
by their registry ID; check-explicit-strategy fires on a goal given children
with no strategy, including when the change that caused it only created a
relationship element; a review (not just a staging call) runs stage 4.
S4 — Data packages
Status: mostly done — PROJECT_GLOSSARY and CHANGE_HISTORY supplied,
and the remaining packages name why they are absent. USER_REVIEW_INTENT is
plumbed but has no surface to supply it; see its task below.
Depends on: nothing. Parallel.
- [x]
PROJECT_GLOSSARYfrom the terminology package. - [x]
CHANGE_HISTORYfrom review items. Draft groups and the audit log are not included: a review is being asked about the argument, and unaccepted proposals are not yet part of it. - [ ]
USER_REVIEW_INTENT— plumbed through the request contract, but no surface supplies it: the review action has no field for the user to state a concern, so it is reported empty in every real run. The remaining work is the UI field, not the package. - [x]
STANDARD_LINKS— deferred; no source exists. Record as a known limitation. - [x]
EVIDENCE_BASIS— decided: stays declared-unavailable for now. See below; this task only records the reason so the gap is visible rather than silent.
EVIDENCE_BASIS and the evidence register. The artifacts an evidence basis
would describe — coverage, thresholds, scenarios, configurations, limitations —
are not in the tool. The route is the evidence register: when it carries a link
to the actual evidence, that link becomes the source.
Two consequences that shape the work now:
- Exposure to AI is a per-item decision, not automatic. Once evidence is
linked, whether a given item is available to a review is decided from the
register, item by item. This follows the project's standing constraint that
no data leaves without explicit user consent, and it means
EVIDENCE_BASISwill be partially available in the normal case — some items shared, some withheld. The package builder must therefore distinguish three states, not two: available, unavailable-because-absent, and withheld-by-choice. A review told an item was withheld can say its judgement is bounded; a review told nothing will assume the item does not exist. - The register already holds part of
EVIDENCE_ITEM.evidence_owner,type,recency,maturityandcontrolled_environmentinui::EvidenceRegisterRoware close to the control attributes EV.7 and EV.8 ask about, and are what the unimplemented pre-checkscheck-evidence-control-attributesandcheck-evidence-state-fixedneed. S3 should read them rather than waiting for the link work.
Exit: no package is silently absent; EVIDENCE_BASIS carries a recorded
reason; the three-state distinction exists in the contract so adding evidence
links later is not a schema break.
S5 — Structural proposals
Status: done — proposed_operations[] on a finding, bounded by the
profile's own data packages.
Depends on: S1, S2. This is the phase that closes G1 and G2.
- [x] Add
proposed_operations[]to the result contract and schema text. - [x] Validate against the vocabulary, the 5.2 scope rule, and the three layered checks.
- [x] Normalize
suggested_element_textinto oneUpdateElementText. - [x] Stage multi-operation groups, atomically per 13.6.
- [x] Prompt guidance describing when each
Create*is the SCCG repair.
Exit: an AR.2 finding on a goal with children and no strategy produces a
draft group containing CreateStrategy plus the re-parenting operations, the
canvas draws it, and a human accepts it through the ordinary audited path.
S6 — MCP parity
Status: partly done. The three items that do not need a review-over-MCP
tool have landed. Executor provenance and self-review flagging (5.6) wait for
phase C1 of the sibling plan, because until prepare_sccg_review /
submit_sccg_review_result exist there is no MCP review to attribute.
Depends on: S5 and sibling plan C1.
Scoped to what remains after #406 phases 1–3, which already add check_id to
the MCP payload and widen the prompt-quoted guideline sets.
- [x] Serialize
StagedFinding::statementand ansccg://guideline/<id>pointer.check_idalone still gives an agent the tool's paraphrase without the rule. - [x] Carry an explicit "checked / not checked" statement. (No
review_profile_id: staging is not a review, so what the result can honestly name is the checks that ran, not a profile that did not.) statement on findings, so an empty array cannot be read as conformance. - [x] Derive prompt guideline sets from the profile registry (5.5), with the drift test. #406 widens the hand-picked lists; it does not remove the hand-picking, so the divergence returns on the next SCCG revision.
- [ ] Executor provenance and self-review flagging (5.6).
Exit: a finding returned to an MCP client and one shown in the app carry the same fields; an agent can distinguish "no findings" from "not checked".
7. Test obligations
- Pre-checks: one test per SCCG pre-check ID, named for it, including a negative that fails before the fix. Per the repository's verification practice, break the fix and watch the test fail before trusting it.
- Scope hash: unrelated edit does not invalidate; in-scope edit does; a
DraftSource::Humanedit is treated identically to an MCP one. - Structural proposals: each
Create*operation reachable from a finding; out-of-scope operation refused; illegal attachment refused; batch atomicity. - Contract parity: one test asserting the built-in and MCP paths produce identical validated results from identical model output.
- Guidance drift: a prompt citing a guideline outside its profiles fails.
DraftWorkspacetests run serially — the suite shares.af/draftsstate.
8. Capability matrix changes
- AF-AI-006 — currently claims "suggested corrections become independently reviewable SCCG draft groups". True but narrower than it reads: corrections are text replacements on the reviewed element only. Add that limitation now, before S5 changes it.
- AF-AI-010 — the "four mechanical checks" note stays accurate through S3 but its count changes; update with the pre-check IDs.
- New row for SCCG review through MCP once S6 lands, cited to its tests.
- Regenerate
feature-matrix.jsonand runpython tools/features/check_feature_matrix.pyin the same change.
9. Risks
| Risk | Mitigation |
|---|---|
| Structural proposals write a malformed argument | Three layered checks on the preview before staging; refusal in the call that made it |
| A review proposes changes far from what the user selected | 5.2 scope rule, mechanically enforced from the profile's own packages |
| Pre-check false positives train users to ignore findings | SCCG's own interpretation wording carried through; candidates presented as candidates |
| Divergence returns between the two check implementations | S3 consolidates to one; the parity test in §7 fails if they drift |
| This plan and the sibling plan disagree | Sibling plan and ADRs win; this page adds only |
10. What SCCG 0.7.0 settled upstream
Recorded 2026-08-30, on adopting the
AI/MCP tool contract
published as SCCG 0.7.0 (schema_version 2.0.0). Several gaps this page
records as work to do here turned out to be gaps in the contract, and were
closed there instead. Where an item below contradicts a phase above, this
section is the later word.
| This page said | SCCG 0.7.0 |
|---|---|
G4: the tool builds SEL |
SEL is gone. One selected-element package per element role, each carrying role: selected_element and its element_role; every profile requires exactly one. The tool looks the package up from the profile instead of naming it. |
G4 / S4: EVIDENCE_BASIS absence is an improvised degradation |
evidence_review publishes when_absent: what the review should say instead, and the eight guidelines (EV.5, EV.6, SU.3, SU.6–8, LF.5, LF.7) that cannot be assessed without it. The statement travels with the absence into the request. |
| S4: the contract needs three absence states of its own | data_packages.json publishes four availability_states — available, not_implemented, empty, withheld. DataPackageAbsence names the three that are absences, and a test holds them against the catalog. |
S3 / G3: check-explicit-strategy needed a local reading to fix its mislabelling |
Every pre-check now publishes fires_when, stating the condition precisely enough that two tools implement the same check, and expected_data names exactly one selected-element package. The reading S3 settled locally is now the published condition. |
| 5.5: authoring guidance derives from the profile registry | authoring_guidance.json publishes the writing-time subset directly: eighteen core_rules with a short_rule and a recorded reason, and element_rules naming the profile each element role is judged under. |
| §4's "word lists derived by hand from statements and examples" | tool.markers publishes the terms for 27 guidelines with three effects (candidate, suppress, expected), and tool.thresholds the numbers for CL.3 and LF.6. The checks read the catalog; this repository holds no word list. |
| AF-AI-024's deferral of CL.4 "for want of a lexical list" | CL.4 has one. It is implemented, as is CL.3 against the published claim_word_count. |
SccgAppliesToNamesForElement maps a SACM element to GSN/CAE names |
element_role is the published key for a tool whose model is neither, and is the same vocabulary the selected-element packages and tool.repair use. The name mapping is gone. |
Not adopted yet, and why:
tool.repair— published for all 48 guidelines in six notation-neutral actions. S5'sproposed_operationsstill comes from the model's own answer rather than from the catalog. Seeding suggestions fromrepairis a behavioural change to what a review proposes, and belongs with the suggestion-mapping work, not with the version bump.- LF.6's
significant_digitsthreshold — parsed and unused. The check needs a definition of "a figure" in claim text that the threshold alone does not give, and getting it wrong reports precision findings against correctly stated numbers. Still deferred; the reason has changed from "no threshold" to "no agreed way to find the number". - CL.6's broader firing condition — SCCG's check fires on "two or more lifecycle step verbs within one claim". This tool still requires them joined by a conjunction. That is a narrowing calibration, which SCCG permits, and it is what lets the finding quote the chain it objected to. Recorded here so it is a decision rather than an oversight.
11. Tracking
- Tracking issue: #414, under parent epic #388, with S1–S6 as a task checklist.
- S1 additionally corrects the Phase A1 status line in the sibling plan.
- 5.6 is decided (2026-08-19) and lands with S6, since it depends on the executor provenance that phase adds.
- The per-item AI exposure decision for linked evidence (S4) is a consent question, not a review question. When evidence links land it should be designed against ADR 0005's consent rules, not bolted onto the review method.