23:34
docs(orders): (C)29 — the Accounting move (a) is built and statically proven in a worktree; landing it needs artisan down, refused to me without a new owner window; the five sections done (e3603f2c)
919d123e
23:25
feat(map): the five sections the owner approved are modules — Agents, Workspace, Partners, Tickets, It (owner 28 Oct 19:40, ex-(C)28; decision 029 amended)
e3603f2c
23:21
fix(orders): the register back under 8,000 characters (7,975) — 9a3bf2b7 went in at 8,010 without its size test (red, then green; L-412)
fbe4e702
23:21
docs(orders): (A)2 the HR move done — four sub-steps live, full22 green (4,372), pushed; the five owner-approved sections next
9a3bf2b7
22:24
fix(tests): the row-leak guard no longer reads Request::create() as a database write — it builds an HTTP request; TheModuleLayoutStandsOnItsSourcesTest writes no row (full21 red, then green)
754fbb43
22:24
fix(tests): the deleted-record guard reads every queued notification, a module's own included — it read app/Notifications only, so the HR move took five out of its sight (full21 red, then green with them checked)
58d35bed
22:24
fix(team): the agents' Sources blocks name the HR classes where they now live — 46 names after the HR move (full21 red EveryAgentNamesItsSourcesTest, then green)
ec395d27
21:24
refactor(hr): decision 029, the HR move (c) — HR's 90 routes into app/Domain/Hr/routes/{web,public,api}.php, each required from routes/*.php where its routes stood; landed live under the owner's 20:00 approval (down 21:19:16 → up 21:19:24)
b2eb3259
21:18
refactor(hr): decision 029, the HR move (d) — 149 HR tests under tests/Feature/Hr and tests/Unit/Hr (their sub-folders kept), and one module guide app/Domain/Hr/CLAUDE.md (≤60 lines) in place of the two section guides
f91ea7ae
21:18
fix(attachments): the stored type is read by the model — Attachment::attachableClass() resolves it through the morph map, and the controller calls it in place, back to its 425 lines (81f1cb9c grew it by 3 with the ratchet red; L-411)
15b86328
21:16
fix(attachments): a moved model's paper opens again — the controller reads the stored type through the morph map; since the HR move (a) an employee got 403 on her own leave paper (live 20:07 → now; L-410)
81f1cb9c
20:42
refactor(hr): decision 029, the HR move (b) — the 41 HR views into resources/views/hr/…; only view contexts rewritten, never a route name; landed live under the owner's 20:00 approval (down 20:19:56 → up 20:21:09)
24e096fe
20:19
docs(orders): (C)29 closed — the owner's 20:00 window; the HR move (a) landed (dc174ca4), (b)–(d) next
b0d97826
20:19
refactor(hr): decision 029, the HR move (a) — 144 HR classes into app/Domain/Hr/{Attendance,Leave,Payroll,Employees}; landed live in the owner's 20:00 window (down 20:03:50 → up 20:07:57) with every check equal
dc174ca4
19:54
fix(orders): the register back under 8,000 characters (7,996) — 33f2d764 went in at 8,009 with its size test red, then green; L-407
833d246c
19:54
docs(orders): (C)29 — the HR move's sub-step (a) is built and statically proven in a worktree; landing it needs artisan down on live, which is refused to me — the owner allows the window or runs the steps (PROGRESS, top)
33f2d764
19:42
docs(decisions): 029 — how a class moves without changing a stored row: the morph map keyed by the old name, databaseType() for notifications, #[UseFactory], policy discovery, Rector + the script's own namespace line, Support/ for services, the four sub-steps; each read in the framework source v13.34.0 and measured on live with mbf:stored-classes (before the first move, owner 17:30)
e98b6152
19:40
build(dev): rector/rector 2.6.4 as a dev tool — RenameClassRector renames every reference of a moved class (use, names, types, new, instanceof) for decision 029's mechanical moves; never shipped (bin/deploy installs --no-dev)
150a501e
19:39
docs(orders): (C)28 closed — the owner's 19:40 yes: Agents, Workspace, Partners, Tickets and IT are sections, each its module; the 029 amendment comes right after the HR move
424eb8fa
19:37
feat(platform): mbf:stored-classes — read only, every App\ class name the database holds, by table, column and value: the list a move's morph map must cover and the proof after it (decision 029, the HR move)
952c637d
19:33
feat(map): no file is placed by a word in its name — the 510 keyword placements read one by one: 51 corrected in ModuleRules (IncomeTax was Marketing by "incoMETAx"; vendor/ mail and pagination; the person's own account; the client portal's invoice and billing; the IT desk's sites and hosting; the studio, the partners' portal, the tickets' clock), the 459 confirmed written in reviewed-placements.php (owner 28 Oct 19:00 checklist §1)
18756206
19:29
feat(map): a closure route is placed by its written URI — the six closures (home, go, up, the gateway refusal, payroll's and the notes' old addresses) each have their section; an unwritten one stays unplaced (owner 28 Oct 19:00 checklist §1)
49a6de82
19:26
docs(orders): (A)2 the module map done (c5d5c715, 94547a20); (C)28 asks the owner for the five sections decision 029 does not list (148 files wait on the Modules tab)
4c7227bf
19:24
feat(map): every file has a written reason — ModuleRules places the 301 files no rule held, each read from its own purpose; the sections decision 029 does not list wait for the owner with their proposed module, never counted placed (owner 28 Oct 19:00 checklist §1)
94547a20
19:14
feat(map): the file-to-module map — every PHP file, Blade view and route of one commit placed in decision 029's modules, the unplaced listed by name, the crossings A→B counted; the Modules tab on /system/map and its JSON census (owner 28 Oct 16:00 step 1, 17:30, 19:00 checklist §1)
c5d5c715
18:45
docs(orders): (A)2 decision 029 done (e2536bb0); the file-to-module map is next (owner 28 Oct 17:30: one step at a time)
50546ca0
18:45
docs(decisions): 029 the module layout — one folder per section, joined only through Queries, Events and Platform contracts; each rule cited (Laravel 13 docs, PSR-4/Composer, Grzybek, Shopify, Fowler, Spatie) and the routing/config rules read in the framework source v13.34.0: module routes are required from routes/web.php in place (providers boot before web routes load; the first match answers) (owner 28 Oct 16:00, 16:10, 17:25, 17:30)
e2536bb0
17:41
fix(agents): /agents carries the one name the sidebar gives it — "Company agents" — and the section-names guard reads lang keys and each action's own view (full19 red on 4b2e3e89 SectionNamesAreOneNameTest, EnglishCoversWhatItPromisesTest; then green; baseline shrinks; L-406)
e01b6a33
17:38
fix(map): the system agents screen's first act reads at a glance — under 40 characters, in both languages (full19 red on 4b2e3e89 EveryScreenSaysWhatItAnswersTest, then green)
ddfbb156
17:37
fix(ops): the errors door's nginx comment no longer reads as a committed secret — the secret scan matched "secret: no" (full19 red on 4b2e3e89, then green)
79f78885
17:37
fix(errors): the errors door's token route is held to 10 writes a minute, its own bucket — a public write may not inherit a read's limit (full19 red on 4b2e3e89 NoPublicDoorStandsWithoutALimitTest, then green)
528252dc
17:36
test(security): the isolation fuzz names the three new doors it cannot fuzz — an agent card key and the errors door's token are not models (full19 red on 4b2e3e89, then green)
a2fece61
16:37
docs(orders): the foundation project enters (A)2 after the map merge — decision 029 with cited sources first (owner 28 Oct 16:00 APPROVED, 16:10); done lines moved word for word to docs/archive/ORDERS-done-2026-10-28.md; (C)1 asks the loan's counter-account
7e00a20d
16:36
feat(map): the system agents' pages, kept apart from the company agents — teams, profile, work, runs, live; the errors door through PHP-FPM; the watches exit on their health (owner 28 Oct 14:05, 14:10; L-405)
4b2e3e89
15:23
docs(method): the full run stays serial — parallel errors here even on recreated databases (Mac 28 Oct 15:25; L-370, L-404)
5b6bb4ca
14:41
fix(map): the two reds of the full run on 41de2fc3 — the map's one-line @php block, and the Agents tab's free text registered; full runs go --parallel (Mac 28 Oct 14:36)
5add7ba8
13:41
feat(team): the agent team and its live map — the department managers, the Sentinel and the errors agent, TEAM.md, the frozen foundation, the hook log and the Agents tab with notes; proved by a real agent run on the tab (owner 28 Oct 10:00–13:05; L-403)
41de2fc3
13:12
feat(security): money is read by the money readers alone — the owner, the Accounting department's manager and its active members, derived at request time; never a role, a super-admin included (owner 28 Oct 11:50, refined 13:00; L-402)
8645c5ec
12:44
feat(platform): the UTC run's proof and runbook — mbf:time-census counts every timestamp column per local hour before and after, and ops/utc/run-utc.sh runs it on a test copy, then on live (owner 28 Oct, ex-(C)16)
58fe973d
12:40
fix(test): the map's privacy check matches a leaked figure as a token — "615" inside a commit hash is not a leak (L-401)
5017eeb9