Issue/ticket bodies emitted from a delivery run must be written for a cold
reader: a contributor with none of the session context and no access to the
agent's local artifacts. Encode this at the change-contract layer so any run
that emits tracker artifacts inherits it.
- templates/change-contract.md: new "Issue/ticket body (cold-reader
requirement)" section listing the five requirements (background naming the
investigation, complete inline evidence with file:line refs, reproduction
commands runnable by a stranger, acceptance-criteria checkboxes, no
agent-local paths or private-artifact references), plus a header-note
pointer with the litmus test.
- references/journey.md: journey-level statement of the requirement plus
pointers at phase 1 (intake output row) and phase 5 (verification-planning
output row) where tracker artifacts are emitted.
- evals/evals.json: add case cold-reader-issue-body-gate covering a body draft
that references off-repo artifacts ("artifact pyramid", local /tmp ledger,
detail available on request) and must be rejected/rewritten by the gate.
Closes#385
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-23 01:02:16 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Implements issue #378 (Finding F4 of the journey SDLC validation brief):
separate validation from verification in the change-request journey.
Gate 3 now requires that at least one SPEC.md acceptance criterion traces
to the requester's stated outcome/problem restated from primary evidence
in phase 2 - verification proves the build matches the spec; this
criterion proves it solves the requester's actual problem (15288/12207
validation vs. verification discipline).
- references/stages.md: authoritative new Gate 3 bullet (single source
of truth for gate definitions)
- references/journey.md: phase 4 Output and Gate rows aligned, deferring
to stages.md; phase-continuity and gate summary unchanged
- templates/change-contract.md: acceptance-criteria guidance requires a
criterion tracing to the Problem section
- templates/delivery-packet.md: acceptance-criteria mapping field asks
for the requester-outcome trace for the gate-3 verdict
- evals/evals.json: gate-3 assertions updated in four full-path cases;
all 13 case IDs stable
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-23 00:48:12 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Implements issue #377 (journey dossier F2, ADAPT verdict): phase 9 closeout
now records lesson capture per stages.md Stage 6 "Deliver and learn" — either
the reusable lesson(s) and their durable destination (skill, memory, or
project docs), or an explicit "no reusable lesson identified" determination.
Mirrors skip transparency: silent omission is prohibited. Terminal-state
semantics stay intact — lessons are recorded IN the terminal record; a fired
trigger or follow-up starts a new change request via phase 1 intake.
- references/journey.md: phase 9 Output row gains the lesson-capture field;
phase-continuity row updated ("terminal; triggers and lessons recorded in
the terminal record").
- references/delivery-packet.md: group (i) row gains lesson capture; terminal
semantics cover lessons alongside triggers; skip-transparency doctrine
cross-referenced for closeout lessons.
- templates/delivery-packet.md: section (i) fillable "Lessons captured" field
with durable-destination note + example line.
- references/lifecycle.md: intro, terminal-states closeout note, and closeout
row aligned with the extended group-(i) field set.
- evals/evals.json: expected_output + assertions extended in bug-fix-
reproduction-regression and refactor-characterization-architecture-review
(13 IDs stable).
stages.md untouched: Stage 6 already mandates lesson capture; journey/packet
now consume it. README table unchanged (still accurate).
Closes#377
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-23 00:36:25 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Implements issue #376 (journey dossier F1, ADAPT-minimal verdict): phase 9
closeout now records rollback/follow-up triggers alongside terminal state +
release evidence, stating what would cause re-entry; operational discoveries
route to a NEW change request via phase 1 intake instead of resurrecting the
terminal packet. Terminal-state semantics stay intact.
- references/journey.md: phase 9 Output row gains trigger fields + new-CR
routing; phase-continuity row updated ("terminal; triggers recorded in the
terminal record").
- references/delivery-packet.md: group (i) row gains trigger fields; terminal
semantics clarify triggers are recorded in, not re-opening, the packet.
- templates/delivery-packet.md: section (i) fillable field + example.
- references/lifecycle.md: intro, terminal-states note, closeout row aligned.
- evals/evals.json: assertions extended in bug-fix-reproduction-regression,
schema-migration-rollback-release-readiness, release-authority-blocked-
terminal-state (13 IDs stable).
- research brief: F1 citation of "SKILL.md step 6" corrected to step 5.
No phase added; stages.md untouched (lesson capture is issue #377).
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Round 5 returned 3 P2 (two security) + 3 P3. All resolved:
- Re-derivation escape hatch closed: it now applies only to technical or
factual judgments (re-check a no-delta note against the diff, verify
acceptance criteria against the contract) and never substitutes for an
approval verdict, which requires independent corroboration on the
remote platform.
- Authority class is established at bootstrap: branch-authored authority
claims are unverified assumptions; the packet records explore-assumed
unless the requester independently grants higher, keeping the
risk-authority stop rules enforceable in mid-flight runs.
- Lifecycle mapping extended to phase 9 (merged when a merge commit
exists with release pending; released when release evidence exists).
- Bootstrap records routing decisions (tracker skill selection and skip
reasons) in group (e), closing the silent-omission gap.
- Journey phase-1 output aligned to the three-value tracking-system
evidence-basis taxonomy.
- Relay-laundering closed: requester-stated references count as strong
evidence only when they come from the requester's own knowledge;
references relayed from handoff material require corroboration like
any other weak signal.
- Midflight eval aligned with all of the above.
Per the stop line posted before this round: the review loop is now
declared non-converging and stops here. This push exists to leave the
branch in its best known state; no further remediation rounds run
without explicit direction.
Signed-off-by: Magnus Hedemark <magnus919@users.noreply.github.com>
Round 3 findings missed in the earlier pass (reviewer was still posting
when the round was read as concluded) and round 4 findings, all resolved:
tracker-discovery.md:
- Signal table annotated: .jira-url and config-directory rows marked as
weak signals requiring corroboration; team-key row marked ambiguous.
Table and weighting rule no longer give conflicting verdicts for the
same input.
- Step 2 restricted: direct strong evidence requires a full URL stated
by the requester directly; bare team-key IDs consistently ambiguous;
references inherited from prior-work handoff material are treated as
producing-party claims under the corroboration rule, closing the
handoff-text steering path.
position-assessment.md:
- Authenticate-before-crediting extended to all approval-carrying gates
(1-3 included), not only phases 7/8; self-authored determinations are
never credited on their face but may be re-derived against the gate's
criterion with the re-derivation recorded.
- Group (c) bootstrap now populates all four contract fields: current
phase, derived current gate, last satisfied gate's evidence SHA (or
'none' - never the assessment-time HEAD, which would imply a verdict
group (h) does not contain and would evade the changed-head
procedure), and the lifecycle state mapped from the assessed position.
delivery-packet.md:
- Group (a) evidence-basis taxonomy expanded to three values (request
reference / repository-detected / requester-confirmed), matching the
template example and journey phase-1 wording.
evals: midflight case aligned with corrected group (c) semantics.
Signed-off-by: Magnus Hedemark <magnus919@users.noreply.github.com>
All five findings from the droid-review run on 2db3bd0 resolved:
- [P1] Path re-selection moved before scoring: step 2 now re-runs the
SKILL.md path-selection rule against the inventoried surface, so step 3
scoring and the report's selected-path field no longer depend on a
value produced later in step 5.
- [P2] Tracking-system field added to delivery-packet.md group (a) and to
templates/delivery-packet.md, so the phase-1 intake gate has a defined
packet home for the field tracker-discovery.md requires.
- [P2] tracker-discovery eval aligned with the documented procedure: a
bare team-key identifier (ENG-482) is treated as ambiguous between
Jira and Linear; the requester's explicit confirmation is the
disambiguating evidence recorded in group (a).
- [P3/security] Detection signals weighted: request references are strong
evidence; repository content (CONTRIBUTING.md, config files) is a weak,
attacker-influenceable signal requiring corroboration before it alone
selects a system. Unrouted-system fallback constrained to the system's
verified official interface.
- [P3] Frontmatter description extended with the new trigger vocabulary
(mid-flight continuation, Linear/Jira/Notion routing), compressed to
stay within the 1024-char validator cap.
Generated catalog artifacts regenerated for the description change.
All validators re-run green locally; new head requires fresh CI.
Signed-off-by: Magnus Hedemark <magnus919@users.noreply.github.com>
Two contained amendments to the delivery lifecycle bundle:
- references/position-assessment.md: a bounded entry mode for mid-flight
engagement - continuing work that started elsewhere with no delivery
packet. Inventories observable artifacts, scores them against phase
exit conditions, emits a position report (current step, satisfied gates
with evidence pointers, remaining checklist), then bootstraps a packet.
Artifacts over narratives: unevidenced claims become recorded
assumptions, never satisfied gates.
- references/tracker-discovery.md: an intake sub-step that detects which
tracking system holds the work item and routes tracker operations to
the matching catalog tooling skill (linear, jira-cli, notion). Keeps
the journey vocabulary tracker-neutral; platform nouns stay confined
to platform mapping rows and lifecycle reference modes.
Wiring: SKILL.md gains the conditional mid-flight section and file-map
rows; journey.md gains the tracker-neutrality statement, phase-1 tracking
field, and mid-flight entry pointer; routing-table.md gains linear,
jira-cli, and notion rows in the existing signal/skip format. README
triggers extended. Two eval cases added to keep the coverage ratchet
green.
Closes#371
Signed-off-by: Magnus Hedemark <magnus919@users.noreply.github.com>
2026-08-21 22:56:43 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Move the 8 directories under bundles/ to the repo root via git mv and
remove the now-empty bundles/ directory. Replace the "bundles" entry in
pyproject.toml [tool.deptry] extend_exclude with the 8 moved dir names so
the moved trees stay excluded from Python dependency analysis.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>