first-tree-staging 0.5.4-staging.293.1 → 0.5.4-staging.294.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "first-tree-staging",
3
- "version": "0.5.4-staging.293.1",
3
+ "version": "0.5.4-staging.294.1",
4
4
  "type": "module",
5
5
  "description": "First Tree — unified CLI for Context Tree onboarding, agent management, and team messaging. (Source-tree dev build; CI rewrites `name` and `bin` for prod / staging publishes — see docs/local-dev-isolation.md.)",
6
6
  "keywords": [
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: first-tree-context
3
- version: 0.8.1
3
+ version: 0.8.2
4
4
  cliCompat:
5
5
  first-tree: ">=0.5.0 <0.6.0"
6
6
  description: Context Tree operating guide. Covers what a Context Tree is, the source-system boundary, how to read the tree before acting, and how to write tree updates from a specific source (PR / doc / note). Load before any task that reads or writes context — including when the user pastes a PR / doc / note and says "reflect this in the tree", "update the tree from this", or "write this decision to the tree".
@@ -183,21 +183,52 @@ goes in frontmatter:
183
183
  - **What** — the decision, design choice, or constraint, **as it
184
184
  stands today**. High-level: the durable claim, not the
185
185
  implementation; current state, not a timeline of prior states.
186
- When the decision changes, rewrite *What* in place to reflect the
187
- new state; do not preserve the old state alongside it (`git log`,
188
- and any raw-archive domain your tree may have, are where prior
189
- states live). The Source-System Boundary table above is the
190
- canonical guide for which "whats" belong.
191
- - **Why** — the rationale: alternatives considered, why they lost, the
192
- thinking that produced the decision. **A node without a Why is a
193
- fact, not a decision record.** Why-content is the most commonly lost
194
- axis — protect it deliberately during the rush to land a PR or close
195
- a meeting.
196
- - Common sources of Why: meeting discussions, PR review threads,
197
- human↔agent design conversations.
186
+ When the design ends up somewhere the first draft did not — a
187
+ different architectural choice, an extra constraint, a
188
+ course-correct on the initial proposal — **the new direction
189
+ is the What.** Write it as the durable claim of the design,
190
+ not as "what we changed to" or "what the reviewer asked for".
191
+ When the decision later changes again, rewrite *What* in place
192
+ to reflect the new state; do not preserve the old state
193
+ alongside it (`git log`, and any raw-archive domain your tree
194
+ may have, are where prior states live). The Source-System
195
+ Boundary table above is the canonical guide for which "whats"
196
+ belong.
197
+ - **Why** — the path the design took to its final state: the
198
+ concerns weighed, the alternatives considered, the
199
+ course-corrections made and what triggered each one. The final
200
+ decision is the *What*; the path to it is the *Why*. **A node
201
+ without a Why is a fact, not a decision record.** Why-content is
202
+ the most commonly lost axis — protect it deliberately during the
203
+ rush to land a PR or close a meeting.
204
+ - **Why lives in the design phase, not the final state.** The
205
+ concerns, course-corrections, and dropped alternatives are
206
+ generated *during* design — the moment somebody flags "won't
207
+ this break X?", the moment a first proposal is corrected, the
208
+ moment an option is dropped because it conflicts with another
209
+ domain. By the time the PR lands the design is settled, but
210
+ the reasoning that settled it lives only in chat / review
211
+ threads / meeting notes and decays fast.
212
+ - **Course-corrections are the canonical Why.** Each correction
213
+ encodes two things at once: an alternative that was *actually
214
+ pursued* (not abstractly considered), and the constraint or
215
+ insight that ruled it out. Both are exactly the content that
216
+ keeps the next agent from re-litigating the same path. In a
217
+ copilot team most corrections come from human↔agent
218
+ back-and-forth — capture them while you still have them.
219
+ - **Translate corrections into present-tense rationale, not
220
+ narration.** "The agent first proposed a global cache; the
221
+ human said no" is a timeline (Hard Rule 8 forbids it). "Cache
222
+ is per-tenant because multi-tenancy isolation is a hard
223
+ constraint" is the surviving Why. Keep the *constraint* the
224
+ correction introduced; drop the *story* of how it happened.
225
+ - Other rich sources: meeting discussions where a decision was
226
+ reached; PR review threads that changed the design.
198
227
  - Self-check: "Six months from now, if a reader reads only the
199
- *What*, will they be tempted to re-litigate this decision?" If
200
- yes, the Why is under-documented.
228
+ *What*, will they be tempted to re-litigate this decision?"
229
+ If yes, the Why is under-documented — the most common gap is
230
+ a concern or course-correction from the design phase that
231
+ lived only in chat and never made it into the node.
201
232
  - **Who** — ownership, carried by `owners` frontmatter and
202
233
  `members/<id>/NODE.md` nodes. **Do not put ownership in the body.**
203
234
  Changes here go through humans (Hard Rule 6).
@@ -333,6 +364,50 @@ Belongs: constraints that came out of it ("session tokens must be
333
364
  HMAC-signed before storage"); the accountable owner.
334
365
  Does not belong: the specific vulnerabilities or how they were patched.
335
366
 
367
+ **Trigger: course-correction during design — partway through, a
368
+ reviewer says "no, the cache should be per-tenant, not global;
369
+ multi-tenancy was the whole point of last quarter's work."**
370
+ Belongs (What): "cache is keyed per-tenant".
371
+ Belongs (Why): the multi-tenancy constraint that ruled global caching
372
+ out, written as a *current* constraint ("multi-tenancy isolation is a
373
+ hard constraint; a shared cache violates it"). The correction is the
374
+ canonical Why — without it, the next agent reading the cache code
375
+ alone has no way to re-derive the constraint.
376
+ Does not belong: "we originally proposed a global cache, then switched
377
+ after review" — that is timeline narration (Hard Rule 8). State the
378
+ surviving constraint, not the path to it.
379
+
380
+ **Trigger: a constraint surfaces during design — partway through,
381
+ somebody points out "this also has to work offline-first for the
382
+ mobile client; we cannot assume connectivity."**
383
+ Belongs (What): "writes are offline-first; the client buffers and
384
+ reconciles on reconnect".
385
+ Belongs (Why): "the mobile client operates without connectivity for
386
+ hours at a time; designs requiring server round-trips do not satisfy
387
+ this constraint." This is the canonical Why a future reader will need
388
+ — no amount of reading the source repo alone would surface the
389
+ offline-first requirement, because it lives only in somebody's head
390
+ until the design phase forces it out and the node records it.
391
+ Does not belong: "the first cut of the design didn't consider
392
+ offline, then we added it after a teammate flagged the mobile case"
393
+ — that is timeline narration (Hard Rule 8). Record the surviving
394
+ constraint, not the path that surfaced it.
395
+
396
+ **Trigger: design-phase direction picked between options — the
397
+ candidates were A and B; the chosen direction is "B, because A would
398
+ block the auth-rewrite landing next quarter."**
399
+ Belongs (What): the decision to go with B, stated as the durable
400
+ claim of the design.
401
+ Belongs (Why): the cross-domain interaction with the upcoming
402
+ auth-rewrite, named as a present-tense constraint ("the auth-rewrite
403
+ in `/auth/NODE.md` constrains this domain to B-shaped designs"). This
404
+ is the kind of constraint that only surfaces when somebody carrying
405
+ the broader org context weighs in during design — and exactly the Why
406
+ nobody will reconstruct from the code six months from now.
407
+ Does not belong: "option A was considered and rejected because…" as
408
+ historical narration. Phrase the surviving constraint, not the
409
+ past-tense rejection.
410
+
336
411
  **Trigger: PR that flips a policy default — e.g. "approvals required"
337
412
  goes from 1 to 0.**
338
413
  Belongs: the *current* rule stated as fact ("approvals required = 0");
@@ -1 +1 @@
1
- 0.8.1
1
+ 0.8.2