Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
158 commits
Select commit Hold shift + click to select a range
2a23cb5
feat: Add Phase B.2 tasks and governance documentation
cemililik Oct 11, 2026
c794077
docs: update task files for Phase B.2 closure and readiness
cemililik Oct 11, 2026
613e698
Refactor code structure for improved readability and maintainability
cemililik Oct 11, 2026
49c7cb4
docs: update Phase B.2 documentation for clarity and accuracy
cemililik Oct 11, 2026
7786582
docs: clarify documentation requirements for CI script checks and dec…
cemililik Oct 11, 2026
fac9047
docs(roadmap): reconcile Track B.2-1 implementation contracts
cemililik Oct 11, 2026
5f809bf
docs(ci): include release smoke in Track B.2-1 plan
cemililik Oct 11, 2026
8d6fab5
docs(ci): resolve final Track B.2-1 preflight findings
cemililik Oct 11, 2026
41679c1
docs(roadmap): reconcile phase targets before ADR acceptance
cemililik Oct 11, 2026
8d2c013
docs(adr): resolve approval findings before acceptance
cemililik Oct 11, 2026
960bdef
docs(adr): accept ADR-0040 and Track B.2-1 policy
cemililik Oct 11, 2026
f2d577f
fix(userspace): restrict syscall shims to bare metal
cemililik Oct 11, 2026
69a4109
docs(userspace): reconcile T-037 review records
cemililik Oct 11, 2026
3a7c264
docs(userspace): record second T-037 review round
cemililik Oct 11, 2026
54e8f77
feat(tooling): validate QEMU core count and timeout arguments
cemililik Oct 11, 2026
d5c13a0
docs(tooling): record T-033 implementation gates
cemililik Oct 11, 2026
eede01c
docs(tooling): record first T-033 review round
cemililik Oct 11, 2026
05f1736
docs(tooling): correct completion state after T-033 review
cemililik Oct 11, 2026
82d1c42
ci: lint userland and tooling scripts
cemililik Oct 11, 2026
1cb3526
docs(standards): enforce userland and shell lint gates
cemililik Oct 11, 2026
0acf0cd
fix(ci): support hosted ShellCheck trap analysis
cemililik Oct 11, 2026
e79e10a
docs(standards): reconcile first T-031 review findings
cemililik Oct 11, 2026
8437158
docs(analysis): complete second T-031 review round
cemililik Oct 11, 2026
b8ad56f
ci: enforce release and perf build contracts
cemililik Oct 11, 2026
c716ae3
docs(standards): enforce release and perf verification gates
cemililik Oct 11, 2026
364b746
docs(analysis): record hosted T-030 gate evidence
cemililik Oct 11, 2026
5cd9ee8
docs(analysis): record first T-030 review round
cemililik Oct 11, 2026
8591ceb
docs(analysis): complete second T-030 review round
cemililik Oct 11, 2026
c3f32c8
fix(bsp-qemu-virt): enforce panic-family lint boundaries
cemililik Oct 11, 2026
b6572cc
docs(analysis): reconcile T-032 audit and evidence state
cemililik Oct 11, 2026
4f2c38c
docs(analysis): record hosted T-032 gate evidence
cemililik Oct 11, 2026
6e191e2
docs(analysis): record first T-032 review round
cemililik Oct 11, 2026
07449f1
docs(analysis): record second T-032 review round
cemililik Oct 11, 2026
6450005
ci: gate debug and release EL0 smoke under QEMU
cemililik Oct 11, 2026
41d9682
docs(analysis): record hosted T-034 guest proof
cemililik Oct 11, 2026
97a6c83
fix(ci): preserve QEMU smoke failures through logging
cemililik Oct 11, 2026
9092581
docs(analysis): verify hosted T-034 pipeline correction
cemililik Oct 11, 2026
0c86c3d
docs(analysis): record second T-034 review round
cemililik Oct 11, 2026
9c5191c
docs(ci): record required QEMU check registration
cemililik Oct 11, 2026
bf20ec9
ci: require native ARM64 workspace checks and Miri
cemililik Oct 11, 2026
5c95cd3
docs(analysis): record first T-036 review and ARM evidence
cemililik Oct 11, 2026
2d4d21e
docs(analysis): record second T-036 review round
cemililik Oct 11, 2026
69ac515
docs(ci): record required native ARM check registration
cemililik Oct 11, 2026
e873995
ci: add weekly performance reports and versioned merge policy
cemililik Oct 12, 2026
7deb16e
fix(ci): accept both proven ARM cfg rejection diagnostics
cemililik Oct 12, 2026
cfc8872
chore(ci): reconcile merged kickoff ancestry
cemililik Oct 12, 2026
67f8c9b
docs(analysis): record final Track B.2-1 review round
cemililik Oct 12, 2026
bd27fe5
docs(roadmap): reconcile Track B.2-1 implementation status
cemililik Oct 12, 2026
acd0013
docs(roadmap): reconcile final Track B.2-1 documentation
cemililik Oct 12, 2026
1e281ac
docs(roadmap): record green Track B.2-1 PR evidence
cemililik Oct 12, 2026
50ab72b
fix(ci): strengthen PR review probes and report metadata
cemililik Oct 12, 2026
683965b
docs(analysis): record PR48 tooling review and correction
cemililik Oct 12, 2026
a1eb406
docs(analysis): record fresh PR48 tooling round two
cemililik Oct 12, 2026
5816c93
docs(ci): reconcile PR48 review claims and current guidance
cemililik Oct 12, 2026
646ba33
docs(analysis): correct PR48 review wording and record round one
cemililik Oct 12, 2026
f2758e3
docs(analysis): publish PR48 follow-up completion and hosted evidence
cemililik Oct 12, 2026
0613f9b
chore(ci): align development with merged Track B.2-1
cemililik Oct 12, 2026
09e35bc
docs(roadmap): business-review phase-b2-track1-completion
cemililik Oct 12, 2026
7d48f50
docs(ci): clarify completed post-merge acceptance evidence
cemililik Oct 12, 2026
ce4f999
docs(adr): propose ADR-0041 and ADR-0042 test naming policies
cemililik Oct 12, 2026
289f461
docs(adr): propose ADR-0043 documentation consistency policy
cemililik Oct 12, 2026
2f963e2
docs(adr): align ADR-0043 dependency execution order
cemililik Oct 12, 2026
519501f
docs(roadmap): record maintainer copyright identity
cemililik Oct 12, 2026
fb23823
docs(analysis): code-review phase-b2-track2-preflight
cemililik Oct 12, 2026
aff9ff4
docs(adr): reconcile ADR-0041-0043 review findings
cemililik Oct 12, 2026
7ccdde4
docs(roadmap): require Acceptance-time rider consistently
cemililik Oct 12, 2026
114be85
docs(analysis): record ADR proposal follow-up reviews
cemililik Oct 12, 2026
862bfb6
docs(adr): accept ADR-0041 historical prefix recovery
cemililik Oct 12, 2026
714c74b
docs(adr): supersede ADR-0041 with ADR-0042
cemililik Oct 12, 2026
a72bea8
docs(adr): accept ADR-0043 and clarify ADR-0040
cemililik Oct 12, 2026
667dca8
docs(roadmap): apply approved Track B.2-2 task contracts
cemililik Oct 12, 2026
528893f
docs(roadmap): resolve Step 0 contract review findings
cemililik Oct 12, 2026
50f21ca
docs(review): record Track B.2-2 Step 0 review rounds
cemililik Oct 12, 2026
4ffda15
docs(docs): describe current contribution and EL0 boundary
cemililik Oct 12, 2026
d6cb853
docs(review): record T-051 code and security rounds
cemililik Oct 12, 2026
4ad0b3d
docs(roadmap): start T-045 architecture refresh
cemililik Oct 12, 2026
6df0640
docs(arch): refresh overview and running task loader
cemililik Oct 12, 2026
596b935
docs(arch): narrow caller and transfer verification claims
cemililik Oct 12, 2026
dd5891c
docs(analysis): record T-045 code and security review rounds
cemililik Oct 12, 2026
85f02f2
docs(roadmap): start T-046 subsystem architecture refresh
cemililik Oct 12, 2026
4d4791f
docs(arch): reconcile seven subsystem chapters with live EL0
cemililik Oct 12, 2026
661abf9
docs(arch): correct frame, mapping and idle boundary claims
cemililik Oct 12, 2026
f96e9f3
docs(analysis): record T-046 code and security review rounds
cemililik Oct 12, 2026
dd16eb7
docs(roadmap): start T-048 Phase B task corpus reconciliation
cemililik Oct 12, 2026
fe2a813
docs(tasks): reconcile merged Phase B records and task navigation
cemililik Oct 12, 2026
7345bcd
docs(analysis): clarify T-048 implementation verification provenance
cemililik Oct 12, 2026
5f9cf58
docs(analysis): record both T-048 review rounds
cemililik Oct 12, 2026
9ca92fe
docs(tasks): start T-049 review corpus reconciliation
cemililik Oct 12, 2026
3423173
docs(analysis): reconcile T-049 review discovery and historical evidence
cemililik Oct 12, 2026
0d7cbff
docs(analysis): preserve T-049 quoted proposal evidence
cemililik Oct 13, 2026
7b99e25
docs(analysis): code-review T-049 corpus reconciliation
cemililik Oct 13, 2026
2e0a7e5
docs(roadmap): start T-050 entry-document refresh
cemililik Oct 13, 2026
7fa4e1b
docs(guides): refresh T-050 entry documents
cemililik Oct 13, 2026
8301076
docs(guides): clarify capability-table pointer binding
cemililik Oct 13, 2026
e17636a
docs(glossary): clarify bridge implementation gate
cemililik Oct 13, 2026
0ad18a9
docs(analysis): code-review T-050 entry-document refresh
cemililik Oct 13, 2026
6497779
docs(roadmap): start T-055 scoped ADR corrections
cemililik Oct 13, 2026
6bfc586
docs(adr): reconcile T-055 corrections and index metadata
cemililik Oct 13, 2026
f74e05f
docs(adr): resolve T-055 first-round clarifications
cemililik Oct 13, 2026
dba1819
docs(analysis): code-review T-055 ADR corrections
cemililik Oct 13, 2026
c9ee6e5
docs(standards): start T-052 and T-053 reconciliation
cemililik Oct 13, 2026
bd3d354
docs(standards): reconcile T-052 naming and runtime claims
cemililik Oct 13, 2026
a7ae1b6
docs(standards): align T-053 tooling and configuration facts
cemililik Oct 13, 2026
a0e201f
docs(analysis): code-review T-052 and T-053 standards
cemililik Oct 13, 2026
6bcb14a
docs(roadmap): start T-054 planned ADR identity migration
cemililik Oct 13, 2026
41bea63
docs(roadmap): give planned ADRs stable purpose identities
cemililik Oct 13, 2026
076aa83
docs(roadmap): correct Phase I planning note
cemililik Oct 13, 2026
94c44d2
docs(analysis): code-review T-054 planned ADR identities
cemililik Oct 13, 2026
c0811a9
docs(roadmap): start T-047 live-state reconciliation
cemililik Oct 13, 2026
eedeec8
docs(roadmap): separate live state from historical snapshots
cemililik Oct 13, 2026
978396d
docs(analysis): code-review T-047 roadmap state reconciliation
cemililik Oct 13, 2026
0832a36
docs(roadmap): start T-056 consistency parser
cemililik Oct 13, 2026
6ffb78f
docs(analysis): clarify quoted historical reference syntax
cemililik Oct 13, 2026
a47736e
feat(tooling): add offline documentation navigation checks
cemililik Oct 13, 2026
69053f0
fix(tooling): enforce documentation parser input and syntax boundaries
cemililik Oct 13, 2026
9890f3f
fix(tooling): preserve source-specific entity decoding
cemililik Oct 13, 2026
b660b28
fix(tooling): preserve numeric reference scalars across Python versions
cemililik Oct 13, 2026
25feeb3
fix(tooling): preserve URL identity and physical source lines
cemililik Oct 13, 2026
11cc382
fix(tooling): isolate multiline HTML attribute metadata
cemililik Oct 13, 2026
3bc202d
fix(tooling): isolate GFM table cell navigation
cemililik Oct 13, 2026
c995e5f
fix(tooling): respect physical and comment block boundaries
cemililik Oct 13, 2026
6f8d2eb
fix(tooling): share paragraph layout and preserve raw HTML tails
cemililik Oct 13, 2026
e5f2434
fix(tooling): bound setext headings to actual paragraphs
cemililik Oct 13, 2026
e08a86a
fix(tooling): preserve container columns and visible heading text
cemililik Oct 13, 2026
9b42b9e
fix(tooling): retain source context in heading anchors
cemililik Oct 15, 2026
8eea75e
fix(tooling): preserve original inline token boundaries
cemililik Oct 15, 2026
5723a8a
fix(tooling): bound failed emphasis searches and URI controls
cemililik Oct 15, 2026
b332ad7
docs(analysis): code-review t056-parser
cemililik Oct 15, 2026
d9ca0d8
feat(tooling): share guarded corpus reads for consistency checks
cemililik Oct 15, 2026
be1a8e1
feat(tooling): reconcile task and ADR index metadata
cemililik Oct 15, 2026
7e0dc0e
feat(tooling): reconcile review index membership
cemililik Oct 15, 2026
9740642
feat(tooling): validate planned ADR identities and standard fences
cemililik Oct 15, 2026
4a9ab22
feat(tooling): reconcile unsafe audit references across workspace
cemililik Oct 15, 2026
7575b93
feat(tooling): validate delimited live roadmap state
cemililik Oct 15, 2026
6dfaac6
feat(tooling): enforce offline documentation consistency
cemililik Oct 15, 2026
6131464
fix(tooling): close documentation integration review gaps
cemililik Oct 15, 2026
45ef6d0
fix(tooling): finish source and live-context boundary repairs
cemililik Oct 15, 2026
cf00acd
fix(tooling): require complete custom HTML block tags
cemililik Oct 15, 2026
54de2e6
docs(analysis): retain t056 integration round-one review
cemililik Oct 15, 2026
83ac9af
fix(tooling): preserve metadata source context
cemililik Oct 15, 2026
8f522c2
docs(analysis): code-review t056 integration
cemililik Oct 15, 2026
2adf97c
docs(roadmap): reconcile track b2-2 delivery readiness
cemililik Oct 15, 2026
58ce8d7
docs(analysis): correct root readme evidence links
cemililik Oct 15, 2026
54581e1
docs(analysis): code-review phase b2-2 integration
cemililik Oct 15, 2026
26ce16b
docs(adr): propose ADR-0044 — review evidence retention
cemililik Oct 15, 2026
b9f8f12
docs(adr): keep retention decision inside the index table
cemililik Oct 15, 2026
5275ede
docs(adr): clarify evidence hosting before retention acceptance
cemililik Oct 15, 2026
cf253e3
docs(analysis): code-review pr49 evidence governance
cemililik Oct 15, 2026
7f2eba3
docs(adr): accept ADR-0044 evidence retention policy
cemililik Oct 15, 2026
32bdc16
docs(roadmap): start approved pr49 archival maintenance
cemililik Oct 15, 2026
86484e6
docs(analysis): archive pr49 evidence and reconcile citations
cemililik Oct 15, 2026
3a17c3d
docs(roadmap): record the completed local evidence migration
cemililik Oct 15, 2026
433d42d
docs(analysis): code-review pr49 archive and citation migration
cemililik Oct 15, 2026
803ff08
docs(tooling): scope the approved footprint enforcement
cemililik Oct 15, 2026
2d83602
ci(tooling): enforce review evidence storage bounds
cemililik Oct 15, 2026
fb9e4b9
fix(tooling): classify unresolved footprint roots
cemililik Oct 15, 2026
588edbf
fix(tooling): read original ancestry for footprint checks
cemililik Oct 15, 2026
daeda78
docs(analysis): code-review pr49 footprint prevention
cemililik Oct 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 20 additions & 11 deletions .agents/skills/add-bsp/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,12 +80,15 @@ Execute each item before moving to the next. Do **not** assume any item is alrea

### 4. Write `boot.s`

Minimum content (aarch64 EL1 example):
Minimum stack/FP/BSS skeleton for a target already confirmed to enter at aarch64 EL1. Mask DAIF before unsafe setup; install vectors and finish the target boot checklist before unmasking. This is not a complete reference-BSP boot implementation:

```asm
.section .text.boot, "ax"
.global _start
_start:
/* 0. Mask debug, SError, IRQ and FIQ before stack/FP/BSS setup */
msr daifset, #0xf

/* 1. Set stack pointer */
adrp x0, __stack_top
add x0, x0, :lo12:__stack_top
Expand All @@ -111,7 +114,7 @@ _start:
b 2b
```

Adjust for EL2→EL1 transition if the target enters at EL2 (add `msr hcr_el2, …` / `eret` sequence before step 1).
For EL2 entry, follow the target’s Accepted boot-flow ADR and complete the EL2→EL1 policy before using this EL1 skeleton. A bare HCR/ERET insertion is not sufficient: interrupt masks, stack selection, timer access, trap controls and transition context depend on the verified target. The reference [ADR-0024](../../../docs/decisions/0024-el-drop-policy.md) and [boot.s](../../../bsp-qemu-virt/src/boot.s) show the existing QEMU policy; do not assume another board has the same entry state.

### 5. Implement `cpu.rs`

Expand All @@ -130,7 +133,7 @@ Implement `tyrne_hal::Console` for the target UART. Follow the existing `Pl011Ua

`kernel_entry` must:
1. Initialise the console and print the greeting (`tyrne: hello from kernel_main`).
2. Call `tyrne_kernel::sched` to register tasks and start the scheduler.
2. Initialize the target-specific prerequisites and use `tyrne_kernel::sched` to register/start the selected smoke workload. That workload must emit its completion marker after doing its declared work.
3. Never return (`-> !`).

Provide a `#[panic_handler]` that writes to the console and loops.
Expand All @@ -147,27 +150,33 @@ Model on [`bsp-qemu-virt/linker.ld`](../../../bsp-qemu-virt/linker.ld). At minim

Create `tools/run-<target>.sh`. For QEMU targets, model on [`tools/run-qemu.sh`](../../../tools/run-qemu.sh):

- Include the `--int-log` flag (`-d int -D /tmp/qemu_int.log`) for silent-hang debugging.
- Include an exception-log option for silent-hang debugging. The reference `--int-log` uses `-d int -D <logfile>`, with `${TMPDIR:-/tmp}/qemu_int.<pid>.log` printed at startup; use the printed path. Smoke `--int` instead uses `-d int,unimp`.
- Document the QEMU machine flags in the script header.

For real hardware, document the flashing command (e.g. `openocd`, `rpiboot`, `cargo flash`).

### 10. Verify the smoke test

Boot the kernel and confirm:
Boot the selected workload and confirm this minimal serial-success shape; `...` elides workload-specific lines:

```text
tyrne: hello from kernel_main
tyrne: starting cooperative scheduler
tyrne: task A — iteration 0
tyrne: task B — iteration 0
...
tyrne: task A done; spinning
tyrne: all tasks complete
```

Exact intervening/trailing lines depend on the kernel version and target workload; see the [README Quick start](../../../README.md#quick-start) for the verified reference trace. This minimal porting check does not establish full reference EL0/IPC parity: the reference [smoke.sh](../../../tools/smoke.sh) separately gates debug/release console, userspace exit/completion and fault classes. Retain evidence for whichever workload the target ADR declares.

If the kernel hangs silently, run with `--int-log` (QEMU) or attach a JTAG debugger (real hardware). After quitting QEMU, inspect its printed path:

```sh
grep "Taking exception" '<path-printed-by-run-script>'
```

If the kernel hangs silently, run with `--int-log` (QEMU) or attach a JTAG debugger (real hardware) and check for the following before anything else:
Check the following before anything else:

1. Exception log: `grep "Taking exception" /tmp/qemu_int.log`
1. Exception log at the printed PID-scoped path — which exception fired?
2. CPACR_EL1 — is FPEN set? (ESR EC=0x07 = FP/SIMD trap)
3. SP misalignment — AAPCS64 stack-alignment fault?
4. BSS not zeroed — statics have garbage values?
Expand Down Expand Up @@ -200,7 +209,7 @@ Trailer: `Refs: ADR-NNNN` (the boot-flow ADR from step 1).
## Anti-patterns

- **Skipping the boot-flow ADR.** Every BSP has target-specific boot decisions; writing code before documenting them produces undocumented assumptions.
- **Copying `boot.s` without checking the EL.** QEMU `virt` enters EL1; RPi4 enters EL2. The CPACR_EL1 sequence is only needed if the kernel runs at EL1; at EL2 you need CPTR_EL2.
- **Copying `boot.s` without checking the EL.** Confirm the actual target entry state. The EL1 skeleton configures CPACR_EL1 after EL1 entry; EL2 setup and the transition require the target’s Accepted boot policy, not a single substitute register write.
- **Using `#[inline(never)]` instead of `#[unsafe(naked)]` for the context switch.** The compiler will still emit a prologue. See `docs/standards/unsafe-policy.md §5a`.
- **Omitting d8–d15 from `Aarch64TaskContext`.** NEON is enabled at boot; the compiler may allocate d8–d15 in any function. Omitting them silently corrupts task state at higher optimisation levels.
- **Not zeroing BSS.** Rust guarantees `.bss` is zero; if the hardware or QEMU does not zero it, every static initialised to zero will have garbage values.
Expand Down
8 changes: 8 additions & 0 deletions .agents/skills/conduct-review/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,14 @@ when-to-use: When a trigger for any of the four review types fires — milestone
- Body: one-paragraph summary of the verdict / adjustments.
- Trailer: `Refs: ADR-0013` and any ADRs the review cites.

## Evidence retention

Follow [ADR-0044](../../../docs/decisions/0044-review-evidence-retention.md) and [documentation storage policy](../../../docs/standards/documentation-style.md#evidence-storage). Keep complete canonical Markdown reports, original verdicts/findings/read limits, actual source identities and compact archive metadata in Git. Put bulk execution streams, intermediate JSON, source exports and encoded scratch archives outside Git in a digest-verified durable archive with independently tested recovery; expiring Actions artifacts alone are insufficient.

Before producing a source export, exclude previously retained raw archive/snapshot trees so evidence does not recursively retain itself. Preserve original evidence in its authoritative archive rather than embedding retained archives or entire source exports in new Git JSON. Never remove original verdicts or invent a historical run to obtain a smaller diff. Hash checks establish integrity, not a complete semantic read; retain each reviewer’s actual scope and limitations. The [recovery guide](../../../docs/guides/review-evidence.md) explains original SHA/source recovery.

Stage intended artifacts and run the separate footprint command/fixtures in addition to corpus checks. The approved limits cover the index and complete HEAD history; later deletion does not erase an oversized historical blob. Future exceptions require exact-path reasons and reviewed fixtures, never broad review-directory exclusions. This storage discipline adds no substitute for any master-plan role or required independent review round.

## Acceptance criteria

- [ ] Correct review type chosen for the trigger.
Expand Down
6 changes: 3 additions & 3 deletions .agents/skills/propose-standard-change/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,11 @@ when-to-use: Whenever a rule in `docs/standards/` needs to change. Covers additi
- If no ADR explicitly motivated the rule, the current standard is effectively an implicit decision that never had its ADR. The first step is to write the ADR that captures it — then supersede it — rather than silently changing the standard.

3. **Decide ADR path.**
- **Amendment of existing ADR.** The old ADR is still largely right; it just needs to be updated or clarified. Use the *amendment* pattern — edit the ADR in place with a Proposed-amendment note, get it accepted, then update the standard.
- **Factual clarification of an existing Accepted ADR.** Preserve the original body and append a dated rider stating the correction and its evidence, following [ADR-0025 Rule 2](../../../docs/decisions/0025-adr-governance-amendments.md#rule-2--riders-are-not-failures-their-frequency-is-a-signal). Review the rider before updating the standard. A rider must not silently introduce a substantive rule change under the old ADR's Accepted status. Proposed drafts remain editable.
- **Supersession.** The old decision is being reversed or significantly changed. Use [supersede-adr](../supersede-adr/SKILL.md): write a new ADR that supersedes the old one.
- **New ADR, no supersession.** The change is additive — a new principle, a new constraint — that the old ADRs did not address. Use [write-adr](../write-adr/SKILL.md) to record the new decision.

4. **Author the ADR first.** Standards follow decisions. Do not change the standard file until the ADR is `Accepted`. Drafting both in parallel is fine; committing the standard change before the ADR is not.
4. **Author the ADR first.** Standards follow decisions. For a substantive new or changed decision, obtain the maintainer's explicit approval and make the motivating ADR `Accepted` before changing the standard file. For a factual clarification of an already Accepted decision, review and record the append-only rider first. Drafting in parallel is fine; committing the standard change before its decision or correction record is not.

5. **Update the standard file.** Once the ADR is Accepted:
- Edit `docs/standards/<file>.md`.
Expand All @@ -53,7 +53,7 @@ when-to-use: Whenever a rule in `docs/standards/` needs to change. Covers additi
## Acceptance criteria

- [ ] Motivating ADR written (or identified if pre-existing).
- [ ] ADR is `Accepted` before the standard file is modified.
- [ ] Motivating decision is `Accepted` before the standard file is modified; a substantive new or changed decision has explicit maintainer approval, and any factual clarification rider is reviewed and recorded first.
- [ ] Standard file change minimal; unchanged adjacent rules untouched.
- [ ] References at the bottom of the standard point to the new ADR.
- [ ] Downstream effects searched; affected docs updated or tracked.
Expand Down
12 changes: 6 additions & 6 deletions .agents/skills/start-task/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ when-to-use: When the next task in the active milestone becomes ready to pick up

## Inputs

- The **phase and milestone** the task belongs to (e.g. `A`, `A2`).
- The **phase and milestone/bridge Track** the task belongs to (e.g. `A` / `A2`, or `B.2` / `B.2-2`). Path IDs are lowercase without dots: C → `phase-c` / `phase-c.md`; B.2 → `phase-b2` / `phase-b2.md`. Bridge Tracks B.2-1…B.2-6 are distinct from Phase B milestones B0–B6.
- A **short imperative title** (e.g. "Capability table foundation").
- Enough context to write a useful user story: who wants this, what they want, why.
- The **dependencies** — prior tasks (T-NNN) that must be `Done` before this one starts, if any.
Expand All @@ -18,7 +18,7 @@ when-to-use: When the next task in the active milestone becomes ready to pick up

1. **Read the current roadmap state.**
- Check [`docs/roadmap/current.md`](../../../docs/roadmap/current.md).
- Confirm the phase and milestone exist in [`docs/roadmap/phases/phase-<letter>.md`](../../../docs/roadmap/phases/).
- Confirm the phase and milestone exist in [`docs/roadmap/phases/phase-<id>.md`](../../../docs/roadmap/phases/).
- If the milestone is not on the roadmap, stop and ask the maintainer — a missing milestone is a structural change and needs an ADR per [ADR-0013](../../../docs/decisions/0013-roadmap-and-planning.md).

2. **Assign the next T-NNN.**
Expand All @@ -27,7 +27,7 @@ when-to-use: When the next task in the active milestone becomes ready to pick up
- IDs are sequential across the whole project, not restarted per phase.
- **Single-writer assumption.** Two concurrent task-creation flows can both observe the same "highest existing T-NNN" and allocate the same ID. v1 relies on a *single active writer* per branch: run this skill on a branch rebased onto `development`, and if at merge time another `T-NNN-*.md` with your chosen id has landed, re-run the numbering step (list again, pick a fresh highest+1, `git mv` the file, update every internal reference). A ledger-based reservation mechanism may arrive later; for now, the single-writer convention is the contract.

3. **Create the task file** at `docs/analysis/tasks/phase-<letter>/T-NNN-<kebab-slug>.md`.
3. **Create the task file** at `docs/analysis/tasks/phase-<id>/T-NNN-<kebab-slug>.md`.
- Copy from [`docs/analysis/tasks/TEMPLATE.md`](../../../docs/analysis/tasks/TEMPLATE.md).
- Fill the frontmatter fields: `Phase`, `Milestone`, `Status`, `Created`, `Author`, `Dependencies`, `Informs`, `ADRs required`. No placeholder values left from the template.

Expand All @@ -38,9 +38,9 @@ when-to-use: When the next task in the active milestone becomes ready to pick up
- If the task is being picked up for immediate work, move to `In Progress`.
- Do not jump straight to `In Review` or `Done`.

6. **Update the phase's task index** at `docs/analysis/tasks/phase-<letter>/README.md`. Add the new task to its table.
6. **Update the phase's task index** at `docs/analysis/tasks/phase-<id>/README.md`. Add the new task to its table.

7. **Update the phase plan** at `docs/roadmap/phases/phase-<letter>.md` if the task is mentioned by id in the milestone's `Tasks under <Mx>` list.
7. **Update the phase plan** at `docs/roadmap/phases/phase-<id>.md` if the task is mentioned by id in the milestone's `Tasks under <Mx>` list.

8. **Update [`docs/roadmap/current.md`](../../../docs/roadmap/current.md)** if the status is `In Progress`.
- The `Active task` line points at the new file.
Expand All @@ -58,7 +58,7 @@ when-to-use: When the next task in the active milestone becomes ready to pick up

## Acceptance criteria

- [ ] New file at `docs/analysis/tasks/phase-<letter>/T-NNN-<slug>.md`.
- [ ] New file at `docs/analysis/tasks/phase-<id>/T-NNN-<slug>.md`.
- [ ] Frontmatter fields are filled — no placeholders from the template.
- [ ] User story section answers *who / what / why* in one sentence.
- [ ] Acceptance criteria are concrete and testable (3–8 items; at most 10).
Expand Down
23 changes: 15 additions & 8 deletions .agents/skills/supersede-adr/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
name: supersede-adr
description: Override a prior Accepted ADR with a new one, updating both files so the forward and backward pointers are consistent.
when-to-use: When a decision recorded in a prior ADR is being reversed or significantly changed. Not for minor clarifications (edit the original with a Proposed-amendment note instead).
when-to-use: When a decision recorded in a prior ADR is being reversed or significantly changed. Not for minor clarifications (append a dated correction rider under ADR-0025 instead).
---

# Supersede ADR
Expand All @@ -20,19 +20,26 @@ Before starting, the agent must have:
1. **Read the old ADR in full.** Understand what it claimed, what alternatives it considered, and what consequences it accepted. Do not supersede what you have not read.

2. **Decide: supersession or amendment?**
- **Amendment** (not this skill): small clarifications, typo fixes, reference updates. Edit the original ADR in place.
- **Amendment** (not this skill): small clarifications, typo fixes, reference updates. For an Accepted ADR, append a dated correction/pointer rider under [ADR-0025 Rule 2](../../../docs/decisions/0025-adr-governance-amendments.md#rule-2--riders-are-not-failures-their-frequency-is-a-signal), preserving the original body. Proposed drafts remain editable.
- **Supersession** (this skill): the decision outcome changes, the considered options change meaningfully, or the consequences shift enough that a reader should understand a new decision has been made.

3. **Write the new ADR** using the [write-adr](../write-adr/SKILL.md) skill.
- In the **Context** section of the new ADR, explicitly say:
> This ADR supersedes [ADR-NNNN: Title](NNNN-slug.md). The earlier decision…
Then explain what was decided originally and what has changed to warrant the new decision.
- In the **Context** section of the new ADR, explicitly say (template; substitute the actual sibling filename):

```markdown
This ADR supersedes [ADR-NNNN: Title](NNNN-slug.md). The earlier decision…
```

Then explain what was decided originally and what has changed to warrant the new decision.
- In the **References** section, link the superseded ADR.

4. **Update the old ADR's header.**
- Change `Status:` from `Accepted` to `Superseded by MMMM` (where MMMM is the new ADR's number).
- Add a `> **Superseded.**` callout at the very top of the body, before the Context section:
> **Superseded by [ADR-MMMM: New Title](MMMM-new-slug.md) (YYYY-MM-DD).** The original decision below is preserved for the historical record.
- Add a callout at the very top of the body, before Context (template; substitute the actual sibling filename and date):

```markdown
> **Superseded by [ADR-MMMM: New Title](MMMM-new-slug.md) (YYYY-MM-DD).** The original decision below is preserved for the historical record.
```
- **Do not edit the original body.** The original reasoning is the historical record and must stay intact.

5. **Update the ADR index** at [`docs/decisions/README.md`](../../../docs/decisions/README.md):
Expand Down Expand Up @@ -65,7 +72,7 @@ Before starting, the agent must have:
- **Superseding without new information.** If nothing has changed, the old decision is still right and supersession is not needed.
- **Silent overrides.** Making a contradicting decision in a new ADR without flipping the old one's status leaves the repo with two contradictory "Accepted" ADRs.
- **Forgetting the back-pointer.** The old ADR must link forward to the new one; otherwise a reader following references misses the supersession.
- **Using supersession for a minor fix.** That is an amendment, not a supersession. Edit in place.
- **Using supersession for a minor fix.** That is an amendment, not a supersession. Append a dated correction/pointer to an Accepted record; preserve its body.

## References

Expand Down
Loading
Loading